Revert "WIP - rebuilding translator"

This reverts commit ab420a0a44.
This commit is contained in:
Raum0x2A
2021-05-20 19:05:29 -06:00
parent ab420a0a44
commit 6d3a57d31c
3 changed files with 177 additions and 50 deletions

View File

@@ -54,7 +54,7 @@ func init() {
if err != nil {
panic(errors.New("can not load: " + fileloc[x]))
}
err = ioutil.WriteFile(NmsTemp+"/assets/lang/"+fileloc[x], []byte(data), 0644)
err = ioutil.WriteFile(NmsTemp+"/"+fileloc[x], []byte(data), 0644)
if err != nil {
panic(errors.New("can not write " + fileloc[x] + " to temp dir"))
}

195
lang.go
View File

@@ -2,61 +2,176 @@ package nmslib
import (
"encoding/csv"
"fmt"
"os"
"strings"
)
func readCSV(lagcsv string) [][]string {
fileloc := NmsTemp + "/" + lagcsv
csvFile, err := os.Open(fileloc)
if err != nil {
fmt.Println(err)
}
defer csvFile.Close() // close language file when finished
// read csv file from memory
csvlines, err := csv.NewReader(csvFile).ReadAll()
if err != nil {
fmt.Println(err)
}
return csvlines
}
/*
Create struct of Word string
*/
type Translate struct {
Lang string
Word string
}
func (t Translate) ToEng(word string) (translation string) {
return translate2english(word, langFile(t.Lang))
// trans - set up structure of a word iteration
type trans0 struct {
english string // english word
word string // no caps word
capword string // Capitalized word
acpword string // ALL CAPITALIZED WORD
}
func langFile(lang string) [][]string {
filepath := NmsTemp + "/assets/lang/" + lang + "-lang.csv"
csvFile, err := os.Open(filepath)
if err != nil {
panic(err)
/*
Kor2Eng translate korvax word to english word
*/
func (t Translate) Kor2Eng() (returnstring string) {
csvlines := readCSV("korvax-lang.csv")
for range csvlines {
returnstring = (toEng(t, csvlines))
}
defer csvFile.Close()
lines, err := csv.NewReader(csvFile).ReadAll()
if err != nil {
panic(err)
}
return lines
return
}
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\\*"
/*
Eng2Kor translate english word to korvax word
*/
func (t Translate) Eng2Kor() (returnstring string) {
csvlines := readCSV("korvax-lang.csv")
for range csvlines {
returnstring = (toNMS(t, csvlines))
}
return
}
/*
Gek2Eng translate Gek word to english word
*/
func (t Translate) Gek2Eng() (returnstring string) {
csvlines := readCSV("gek-lang.csv")
for range csvlines {
returnstring = (toEng(t, csvlines))
}
return
}
/*
Eng2Gek translate english word to Gek word
*/
func (t Translate) Eng2Gek() (returnstring string) {
csvlines := readCSV("gek-lang.csv")
for range csvlines {
returnstring = (toNMS(t, csvlines))
}
return
}
/*
Vyk2Eng translate Vy'keen word to english word
*/
func (t Translate) Vyk2Eng() (returnstring string) {
csvlines := readCSV("vykeen-lang.csv")
for range csvlines {
returnstring = (toEng(t, csvlines))
}
return
}
/*
Eng2Vyk translate english word to vykeen word
*/
func (t Translate) Eng2Vyk() (returnstring string) {
csvlines := readCSV("vykeen-lang.csv")
for range csvlines {
returnstring = (toNMS(t, csvlines))
}
return
}
/*
Atl2Eng translate Atlas word to english word
*/
func (t Translate) Atl2Eng() (returnstring string) {
csvlines := readCSV("atlas-lang.csv")
for range csvlines {
returnstring = (toEng(t, csvlines))
}
return
}
/*
Eng2Atl translate english word to Atlas word
*/
func (t Translate) Eng2Atl() (returnstring string) {
csvlines := readCSV("atlas-lang.csv")
for range csvlines {
returnstring = (toNMS(t, csvlines))
}
return
}
func toEng(t Translate, csvlines [][]string) string {
returnstring := "*\\Kzzzzzzt\\*" // word not found default
for _, line := range csvlines {
lang := trans0{
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(t.Word) == lang.word {
returnstring = lang.english
} else if strings.ToLower(t.Word) == lang.capword {
returnstring = strings.Title(strings.ToLower(lang.english))
} else if strings.ToLower(t.Word) == lang.acpword {
returnstring = strings.ToUpper(lang.english)
}
}
return rt
return returnstring
}
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)
func toNMS(t Translate, csvlines [][]string) string {
returnstring := "*\\Kzzzzzzt\\*" // word not found default
for _, line := range csvlines {
lang := trans0{
english: line[0],
word: line[1],
capword: line[2],
acpword: line[3],
}
if t.Word == lang.english {
if lang.word != "" {
returnstring = lang.word
}
}
if t.Word == strings.Title(strings.ToLower(lang.english)) {
if lang.capword != "" {
returnstring = strings.Title(strings.ToLower(lang.capword))
}
}
if t.Word == strings.ToUpper(lang.english) {
if lang.acpword != "" {
returnstring = strings.ToUpper(lang.acpword)
}
}
}
return returnstring
}

View File

@@ -6,20 +6,32 @@ import (
)
func TestTranslate(t *testing.T) {
kor2eng := Translate{Lang: "korvax"}
if kor2eng.ToEng("Alinichel") != "Emergency" {
t.Errorf("\nTesting Translate{Lang: \"korvax\"}.ToEng(\"Alinichel\"): got %q, want: %q.\n", kor2eng.ToEng("Alinichel"), "Emergency")
want := Translate{"Paka"}
if want.Atl2Eng() != "Awake" {
t.Errorf("\nTesting Translate{\"Paka\"}.Atl2Eng(): got %q, want: %q.\n", want.Atl2Eng(), "Awake")
} else {
fmt.Printf("\nTesting Translate{Lang: \"korvax\"}.ToEng(\"Alinichel\"): got %q, want: %q.\n", kor2eng.ToEng("Alinichel"), "Emergency")
fmt.Printf("\nTesting Translate{\"Paka\"}.Atl2Eng(): got %q, want: %q.\n", want.Atl2Eng(), "Awake")
}
want = Translate{"hofsos"}
if want.Gek2Eng() != "answer" {
t.Errorf("Testing Translate{\"hofsos\"}.Gek2Eng(): got %q, want: %q.\n", want.Gek2Eng(), "answer")
} else {
fmt.Printf("Testing Translate{\"hofsos\"}.Gek2Eng(): got %q, want: %q.\n", want.Gek2Eng(), "answer")
}
vyk2eng := Translate{"vykeen"}
if vyk2eng.ToEng("Aqo") != "Foes" {
t.Errorf("Testing Translate{Lang: \"vykeen\"}.ToEng(\"Aqo\"): got %q, want: %q.\n", vyk2eng.ToEng("Aqo"), "Foes")
want = Translate{"Aqo"}
if want.Vyk2Eng() != "Foes" {
t.Errorf("Testing Translate{\"Aqo\"}.Vyk2Eng(): got %q, want: %q.\n", want.Vyk2Eng(), "Foes")
} else {
fmt.Printf("Testing Translate{Lang: \"vykeen\"}.ToEng(\"Aqo\"): got %q, want: %q.\n", vyk2eng.ToEng("Aqo"), "Foes")
fmt.Printf("Testing Translate{\"Aqo\"}.Vyk2Eng(): got %q, want: %q.\n", want.Vyk2Eng(), "Foes")
}
want = Translate{"Alinichel"}
if want.Kor2Eng() != "Emergency" {
t.Errorf("Testing Translate{\"Alinichel\"}.Kor2Eng(): got %q, want: %q.\n", want.Kor2Eng(), "Emergency")
} else {
fmt.Printf("Testing Translate{\"Alinichel\"}.Kor2Eng(): got %q, want: %q.\n", want.Kor2Eng(), "Emergency")
}
fmt.Printf("\nTesting complete.\nStatus: ")
CleanUp()
fmt.Printf("\nTesting complete.\nStatus: ")
}