v/GTT
1
0
mirror of https://github.com/eeeXun/GTT.git synced 2025-05-27 21:11:11 -07:00

refactor: NewTranslator in for-loop

NewTranslator by name, so no need to create functions for each Translate
This commit is contained in:
eeeXun 2023-02-03 13:30:55 +08:00
parent f43dba6263
commit 513ad36470
3 changed files with 23 additions and 17 deletions

View File

@ -3,6 +3,7 @@ package main
import (
"fmt"
"gtt/internal/color"
"gtt/internal/translate"
"os"
config "github.com/spf13/viper"
@ -66,9 +67,12 @@ func configInit() {
}
// setup
for t_str, t := range translators {
t.SetSrcLang(config.GetString(fmt.Sprintf("source.language.%s", t_str)))
t.SetDstLang(config.GetString(fmt.Sprintf("destination.language.%s", t_str)))
for _, name := range translate.AllTranslator {
translators[name] = translate.NewTranslator(name)
translators[name].SetSrcLang(
config.GetString(fmt.Sprintf("source.language.%s", name)))
translators[name].SetDstLang(
config.GetString(fmt.Sprintf("destination.language.%s", name)))
}
translator = translators[config.GetString("translator")]
hideBelow = config.GetBool("hide_below")

View File

@ -32,16 +32,21 @@ type Translator interface {
PlayTTS(lang string, message string) error
}
func NewArgosTranslate() *argostranslate.ArgosTranslate {
return &argostranslate.ArgosTranslate{
EngineName: "ArgosTranslate",
SoundLock: lock.NewLock(),
}
}
func NewTranslator(name string) Translator {
var translator Translator
func NewGoogleTranslate() *googletranslate.GoogleTranslate {
return &googletranslate.GoogleTranslate{
EngineName: "GoogleTranslate",
SoundLock: lock.NewLock(),
switch name {
case "ArgosTranslate":
translator = &argostranslate.ArgosTranslate{
EngineName: "ArgosTranslate",
SoundLock: lock.NewLock(),
}
case "GoogleTranslate":
translator = &googletranslate.GoogleTranslate{
EngineName: "GoogleTranslate",
SoundLock: lock.NewLock(),
}
}
return translator
}

View File

@ -16,10 +16,7 @@ var (
dstLangArg *string = flag.String("dst", "", "Set destination language")
// Translate
translator translate.Translator
translators = map[string]translate.Translator{
"ArgosTranslate": translate.NewArgosTranslate(),
"GoogleTranslate": translate.NewGoogleTranslate(),
}
translators = make(map[string]translate.Translator, len(translate.AllTranslator))
// UI
app = tview.NewApplication()
srcInput = tview.NewTextArea()