Improved translations
Upper case and CAPLOCK words are now properly translated Began prepering code for rewrite TODO: make code reusable\ add support for: Gek Vykeen Atlas added some annotations
This commit is contained in:
72
lang.go
72
lang.go
@@ -8,51 +8,56 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// KorvaxWord - set up structure of a word iteration
|
// translate - set up structure of a word iteration
|
||||||
type korvaxWord struct {
|
type translate struct {
|
||||||
english string
|
english string // english word
|
||||||
korvax string
|
word string // no caps word
|
||||||
kwcaps string
|
capword string // Capitalized word
|
||||||
kwallcaps string
|
acpword string // ALL CAPITALIZED WORD
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Korvax2Eng - Translate a Korvax word to English
|
Korvax2Eng - Translate a Korvax word to English
|
||||||
*/
|
*/
|
||||||
func Korvax2Eng(kvwrd string) string {
|
func Korvax2Eng(kvwrd string) string {
|
||||||
|
// create temp dir
|
||||||
tempdir, err := ioutil.TempDir("", "nmslib-")
|
tempdir, err := ioutil.TempDir("", "nmslib-")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
defer os.RemoveAll(tempdir)
|
defer os.RemoveAll(tempdir) // Clean up temp files
|
||||||
|
|
||||||
|
// extract language file from resources.go
|
||||||
data, err := Asset("korvax-lang.csv")
|
data, err := Asset("korvax-lang.csv")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
// wirte extracted data to temp dir
|
||||||
err = ioutil.WriteFile(tempdir+"/korvax-lang.csv", []byte(data), 0644)
|
err = ioutil.WriteFile(tempdir+"/korvax-lang.csv", []byte(data), 0644)
|
||||||
csvFile, err := os.Open(tempdir + "/korvax-lang.csv")
|
csvFile, err := os.Open(tempdir + "/korvax-lang.csv")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
defer csvFile.Close()
|
defer csvFile.Close() // close language file when finished
|
||||||
csvlines, err := csv.NewReader(csvFile).ReadAll()
|
csvlines, err := csv.NewReader(csvFile).ReadAll()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
|
// loop through language data and assign to translate strut
|
||||||
for _, line := range csvlines {
|
for _, line := range csvlines {
|
||||||
klang := korvaxWord{
|
lang := translate{
|
||||||
english: line[0],
|
english: strings.ToLower(line[0]),
|
||||||
korvax: line[1],
|
word: strings.ToLower(line[1]),
|
||||||
kwcaps: line[2],
|
capword: strings.ToLower(line[2]),
|
||||||
kwallcaps: line[3],
|
acpword: strings.ToLower(line[3]),
|
||||||
}
|
}
|
||||||
if kvwrd == klang.korvax {
|
// check translate struct for value
|
||||||
return klang.english
|
if strings.ToLower(kvwrd) == lang.word {
|
||||||
} else if kvwrd == klang.korvax {
|
return lang.english
|
||||||
return strings.Title(strings.ToLower(klang.english))
|
} else if strings.ToLower(kvwrd) == lang.capword {
|
||||||
} else if kvwrd == klang.kwallcaps {
|
return strings.Title(strings.ToLower(lang.english))
|
||||||
return strings.ToUpper(klang.english)
|
} else if strings.ToLower(kvwrd) == lang.acpword {
|
||||||
|
return strings.ToUpper(lang.english)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "*\\Kzzzzzzt\\*" // word not found default
|
return "*\\Kzzzzzzt\\*" // word not found default
|
||||||
@@ -62,11 +67,12 @@ func Korvax2Eng(kvwrd string) string {
|
|||||||
Eng2Korvax - Convert (some) english words to Korvax
|
Eng2Korvax - Convert (some) english words to Korvax
|
||||||
*/
|
*/
|
||||||
func Eng2Korvax(enwrd string) string {
|
func Eng2Korvax(enwrd string) string {
|
||||||
|
// setup temp dir
|
||||||
tempdir, err := ioutil.TempDir("", "nmslib")
|
tempdir, err := ioutil.TempDir("", "nmslib")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
defer os.RemoveAll(tempdir)
|
defer os.RemoveAll(tempdir) // clean up temp files
|
||||||
|
|
||||||
data, err := Asset("korvax-lang.csv")
|
data, err := Asset("korvax-lang.csv")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -82,14 +88,26 @@ func Eng2Korvax(enwrd string) string {
|
|||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
for _, line := range csvlines {
|
for _, line := range csvlines {
|
||||||
klang := korvaxWord{
|
lang := translate{
|
||||||
english: line[0],
|
english: line[0],
|
||||||
korvax: line[1],
|
word: line[1],
|
||||||
kwcaps: line[2],
|
capword: line[2],
|
||||||
kwallcaps: line[3],
|
acpword: line[3],
|
||||||
}
|
}
|
||||||
if enwrd == klang.english {
|
if enwrd == lang.english {
|
||||||
return klang.korvax
|
if lang.word != "" {
|
||||||
|
return lang.word
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if enwrd == strings.Title(strings.ToLower(lang.english)) {
|
||||||
|
if lang.capword != "" {
|
||||||
|
return strings.Title(strings.ToLower(lang.capword))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if enwrd == strings.ToUpper(lang.english) {
|
||||||
|
if lang.acpword != "" {
|
||||||
|
return strings.ToUpper(lang.acpword)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
csvFile.Close()
|
csvFile.Close()
|
||||||
|
|||||||
Reference in New Issue
Block a user