From 08ed8866d09c91351cc38afc4ee2618fdc3f6930 Mon Sep 17 00:00:00 2001 From: "bradley.richins" Date: Wed, 21 Oct 2020 11:28:26 -0600 Subject: [PATCH] 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 --- lang.go | 72 +++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 27 deletions(-) diff --git a/lang.go b/lang.go index 0bd5ee6..aa6226b 100644 --- a/lang.go +++ b/lang.go @@ -8,51 +8,56 @@ import ( "strings" ) -// KorvaxWord - set up structure of a word iteration -type korvaxWord struct { - english string - korvax string - kwcaps string - kwallcaps string +// translate - set up structure of a word iteration +type translate struct { + english string // english word + word string // no caps word + capword string // Capitalized word + acpword string // ALL CAPITALIZED WORD } /* Korvax2Eng - Translate a Korvax word to English */ func Korvax2Eng(kvwrd string) string { + // create temp dir tempdir, err := ioutil.TempDir("", "nmslib-") if err != nil { 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") if err != nil { panic(err) } + // wirte extracted data to temp dir err = ioutil.WriteFile(tempdir+"/korvax-lang.csv", []byte(data), 0644) csvFile, err := os.Open(tempdir + "/korvax-lang.csv") if err != nil { fmt.Println(err) } - defer csvFile.Close() + defer csvFile.Close() // close language file when finished csvlines, err := csv.NewReader(csvFile).ReadAll() if err != nil { fmt.Println(err) } + // loop through language data and assign to translate strut for _, line := range csvlines { - klang := korvaxWord{ - english: line[0], - korvax: line[1], - kwcaps: line[2], - kwallcaps: line[3], + lang := translate{ + english: strings.ToLower(line[0]), + word: strings.ToLower(line[1]), + capword: strings.ToLower(line[2]), + acpword: strings.ToLower(line[3]), } - if kvwrd == klang.korvax { - return klang.english - } else if kvwrd == klang.korvax { - return strings.Title(strings.ToLower(klang.english)) - } else if kvwrd == klang.kwallcaps { - return strings.ToUpper(klang.english) + // check translate struct for value + if strings.ToLower(kvwrd) == lang.word { + return lang.english + } else if strings.ToLower(kvwrd) == lang.capword { + return strings.Title(strings.ToLower(lang.english)) + } else if strings.ToLower(kvwrd) == lang.acpword { + return strings.ToUpper(lang.english) } } return "*\\Kzzzzzzt\\*" // word not found default @@ -62,11 +67,12 @@ func Korvax2Eng(kvwrd string) string { Eng2Korvax - Convert (some) english words to Korvax */ func Eng2Korvax(enwrd string) string { + // setup temp dir tempdir, err := ioutil.TempDir("", "nmslib") if err != nil { panic(err) } - defer os.RemoveAll(tempdir) + defer os.RemoveAll(tempdir) // clean up temp files data, err := Asset("korvax-lang.csv") if err != nil { @@ -82,14 +88,26 @@ func Eng2Korvax(enwrd string) string { fmt.Println(err) } for _, line := range csvlines { - klang := korvaxWord{ - english: line[0], - korvax: line[1], - kwcaps: line[2], - kwallcaps: line[3], + lang := translate{ + english: line[0], + word: line[1], + capword: line[2], + acpword: line[3], } - if enwrd == klang.english { - return klang.korvax + if enwrd == lang.english { + 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()