63 lines
1.2 KiB
Go
63 lines
1.2 KiB
Go
package nmslib
|
|
|
|
import (
|
|
"encoding/csv"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
type Translate struct {
|
|
Lang string
|
|
}
|
|
|
|
func (t Translate) ToEng(word string) (translation string) {
|
|
return translate2english(word, langFile(t.Lang))
|
|
}
|
|
|
|
func langFile(lang string) [][]string {
|
|
filepath := NmsTemp + "/assets/lang/" + lang + "-lang.csv"
|
|
csvFile, err := os.Open(filepath)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer csvFile.Close()
|
|
|
|
lines, err := csv.NewReader(csvFile).ReadAll()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return lines
|
|
}
|
|
|
|
func translate2english(w string, knowledgeStone [][]string) string {
|
|
var rt string
|
|
for _, line := range knowledgeStone {
|
|
engl := line[0]
|
|
alien := line[1]
|
|
acap := line[2]
|
|
alcap := line[3]
|
|
if strings.EqualFold(w, alien) {
|
|
rt = strings.ToLower(engl)
|
|
} else if strings.EqualFold(w, acap) {
|
|
rt = strings.Title(engl)
|
|
} else if strings.EqualFold(w, alcap) {
|
|
rt = strings.ToUpper(engl)
|
|
} else {
|
|
rt = "*\\Kzzzzzzt\\*"
|
|
}
|
|
}
|
|
return rt
|
|
}
|
|
|
|
func translate2game(source string, target string) string {
|
|
var sourceCsv [][]string
|
|
var targetCsv [][]string
|
|
if source == "english" {
|
|
sourceCsv = langFile(target)
|
|
targetCsv = sourceCsv
|
|
} else {
|
|
sourceCsv = langFile(source)
|
|
targetCsv = langFile(target)
|
|
}
|
|
}
|