package nmslib import ( "encoding/csv" "fmt" "io/ioutil" "os" "strings" ) // 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) // 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() // 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 { lang := translate{ english: strings.ToLower(line[0]), word: strings.ToLower(line[1]), capword: strings.ToLower(line[2]), acpword: strings.ToLower(line[3]), } // 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 } /* 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) // clean up temp files data, err := Asset("korvax-lang.csv") if err != nil { panic(err) } err = ioutil.WriteFile(tempdir+"/korvax-lang.csv", []byte(data), 0644) csvFile, err := os.Open(tempdir + "/korvax-lang.csv") if err != nil { fmt.Println(err) } csvlines, err := csv.NewReader(csvFile).ReadAll() if err != nil { fmt.Println(err) } for _, line := range csvlines { lang := translate{ english: line[0], word: line[1], capword: line[2], acpword: line[3], } 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() return "*\\Kzzzzzzt\\*" // word not found default }