mirror of
https://github.com/eeeXun/GTT.git
synced 2025-06-01 07:20:53 -07:00
refactor: NewTranslator in for-loop
NewTranslator by name, so no need to create functions for each Translate
This commit is contained in:
parent
f43dba6263
commit
513ad36470
10
config.go
10
config.go
@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"gtt/internal/color"
|
"gtt/internal/color"
|
||||||
|
"gtt/internal/translate"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
config "github.com/spf13/viper"
|
config "github.com/spf13/viper"
|
||||||
@ -66,9 +67,12 @@ func configInit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// setup
|
// setup
|
||||||
for t_str, t := range translators {
|
for _, name := range translate.AllTranslator {
|
||||||
t.SetSrcLang(config.GetString(fmt.Sprintf("source.language.%s", t_str)))
|
translators[name] = translate.NewTranslator(name)
|
||||||
t.SetDstLang(config.GetString(fmt.Sprintf("destination.language.%s", t_str)))
|
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")]
|
translator = translators[config.GetString("translator")]
|
||||||
hideBelow = config.GetBool("hide_below")
|
hideBelow = config.GetBool("hide_below")
|
||||||
|
@ -32,16 +32,21 @@ type Translator interface {
|
|||||||
PlayTTS(lang string, message string) error
|
PlayTTS(lang string, message string) error
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewArgosTranslate() *argostranslate.ArgosTranslate {
|
func NewTranslator(name string) Translator {
|
||||||
return &argostranslate.ArgosTranslate{
|
var translator Translator
|
||||||
EngineName: "ArgosTranslate",
|
|
||||||
SoundLock: lock.NewLock(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewGoogleTranslate() *googletranslate.GoogleTranslate {
|
switch name {
|
||||||
return &googletranslate.GoogleTranslate{
|
case "ArgosTranslate":
|
||||||
EngineName: "GoogleTranslate",
|
translator = &argostranslate.ArgosTranslate{
|
||||||
SoundLock: lock.NewLock(),
|
EngineName: "ArgosTranslate",
|
||||||
|
SoundLock: lock.NewLock(),
|
||||||
|
}
|
||||||
|
case "GoogleTranslate":
|
||||||
|
translator = &googletranslate.GoogleTranslate{
|
||||||
|
EngineName: "GoogleTranslate",
|
||||||
|
SoundLock: lock.NewLock(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return translator
|
||||||
}
|
}
|
||||||
|
5
main.go
5
main.go
@ -16,10 +16,7 @@ var (
|
|||||||
dstLangArg *string = flag.String("dst", "", "Set destination language")
|
dstLangArg *string = flag.String("dst", "", "Set destination language")
|
||||||
// Translate
|
// Translate
|
||||||
translator translate.Translator
|
translator translate.Translator
|
||||||
translators = map[string]translate.Translator{
|
translators = make(map[string]translate.Translator, len(translate.AllTranslator))
|
||||||
"ArgosTranslate": translate.NewArgosTranslate(),
|
|
||||||
"GoogleTranslate": translate.NewGoogleTranslate(),
|
|
||||||
}
|
|
||||||
// UI
|
// UI
|
||||||
app = tview.NewApplication()
|
app = tview.NewApplication()
|
||||||
srcInput = tview.NewTextArea()
|
srcInput = tview.NewTextArea()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user