From 4f30ce9df6024a8df51e9a85d6bb73774c3d0752 Mon Sep 17 00:00:00 2001 From: eeeXun Date: Sat, 29 Apr 2023 00:17:09 +0800 Subject: [PATCH] refactor: rename Translator name without `Translate` --- README.md | 20 +++++----- config.go | 37 +++++++++-------- .../language.go | 2 +- .../translator.go | 16 ++++---- .../{argostranslate => argos}/language.go | 2 +- .../{argostranslate => argos}/translator.go | 16 ++++---- .../translate/{bingtranslate => bing}/lang.go | 2 +- .../{bingtranslate => bing}/translator.go | 18 ++++----- .../{bingtranslate => bing}/utils.go | 2 +- .../{googletranslate => google}/language.go | 2 +- .../{googletranslate => google}/translator.go | 16 ++++---- .../{reversotranslate => reverso}/language.go | 2 +- .../translator.go | 16 ++++---- internal/translate/translator.go | 40 +++++++++---------- 14 files changed, 98 insertions(+), 93 deletions(-) rename internal/translate/{apertiumtranslate => apertium}/language.go (98%) rename internal/translate/{apertiumtranslate => apertium}/translator.go (76%) rename internal/translate/{argostranslate => argos}/language.go (96%) rename internal/translate/{argostranslate => argos}/translator.go (73%) rename internal/translate/{bingtranslate => bing}/lang.go (99%) rename internal/translate/{bingtranslate => bing}/translator.go (92%) rename internal/translate/{bingtranslate => bing}/utils.go (97%) rename internal/translate/{googletranslate => google}/language.go (99%) rename internal/translate/{googletranslate => google}/translator.go (89%) rename internal/translate/{reversotranslate => reverso}/language.go (98%) rename internal/translate/{reversotranslate => reverso}/translator.go (90%) diff --git a/README.md b/README.md index 752a754..3124197 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,11 @@ Google Translate TUI (Originally) Supported Translator: -[`ApertiumTranslate`](https://www.apertium.org/), -[`ArgosTranslate`](https://translate.argosopentech.com/)(default), -[`BingTranslate`](https://www.bing.com/translator), -[`GoogleTranslate`](https://translate.google.com/), -[`ReversoTranslate`](https://www.reverso.net/text-translation) +[`Apertium`](https://www.apertium.org/), +[`Argos`](https://translate.argosopentech.com/)(default), +[`Bing`](https://www.bing.com/translator), +[`Google`](https://translate.google.com/), +[`Reverso`](https://www.reverso.net/text-translation) ## ScreenShot @@ -47,11 +47,11 @@ gtt -src "English" -dst "Chinese (Traditional)" See available languages on: -- [Apertium Translate](https://www.apertium.org/) for `ApertiumTranslate` -- [argosopentech/argos-translate](https://github.com/argosopentech/argos-translate#supported-languages) for `ArgosTranslate` -- [Bing language-support](https://learn.microsoft.com/en-us/azure/cognitive-services/translator/language-support#translation) for `BingTranslate` -- [Google Language support](https://cloud.google.com/translate/docs/languages) for `GoogleTranslate` -- [Reverso Translation](https://www.reverso.net/text-translation) for `ReversoTranslate` +- [Apertium Translate](https://www.apertium.org/) for `Apertium` +- [argosopentech/argos-translate](https://github.com/argosopentech/argos-translate#supported-languages) for `Argos` +- [Bing language-support](https://learn.microsoft.com/en-us/azure/cognitive-services/translator/language-support#translation) for `Bing` +- [Google Language support](https://cloud.google.com/translate/docs/languages) for `Google` +- [Reverso Translation](https://www.reverso.net/text-translation) for `Reverso` ## Key Map diff --git a/config.go b/config.go index a081177..494c3df 100644 --- a/config.go +++ b/config.go @@ -14,22 +14,22 @@ func configInit() { var ( defaultConfigPath string defaultConfig = map[string]interface{}{ - "hide_below": false, - "transparent": false, - "theme": "gruvbox", - "source.border_color": "red", - "destination.border_color": "blue", - "source.language.apertiumtranslate": "English", - "destination.language.apertiumtranslate": "English", - "source.language.argostranslate": "English", - "destination.language.argostranslate": "English", - "source.language.bingtranslate": "English", - "destination.language.bingtranslate": "English", - "source.language.googletranslate": "English", - "destination.language.googletranslate": "English", - "source.language.reversotranslate": "English", - "destination.language.reversotranslate": "English", - "translator": "ArgosTranslate", + "hide_below": false, + "transparent": false, + "theme": "gruvbox", + "source.border_color": "red", + "destination.border_color": "blue", + "source.language.apertium": "English", + "destination.language.apertium": "English", + "source.language.argos": "English", + "destination.language.argos": "English", + "source.language.bing": "English", + "destination.language.bing": "English", + "source.language.google": "English", + "destination.language.google": "English", + "source.language.reverso": "English", + "destination.language.reverso": "English", + "translator": "Argos", } ) @@ -66,6 +66,11 @@ func configInit() { config.Set("theme", defaultConfig["theme"]) missing = true } + // Set to default translator if translator in config does not exist + if IndexOf(config.GetString("translator"), translate.AllTranslator) < 0 { + config.Set("translator", defaultConfig["translator"]) + missing = true + } if missing { config.WriteConfig() } diff --git a/internal/translate/apertiumtranslate/language.go b/internal/translate/apertium/language.go similarity index 98% rename from internal/translate/apertiumtranslate/language.go rename to internal/translate/apertium/language.go index 09c611f..b45b7fd 100644 --- a/internal/translate/apertiumtranslate/language.go +++ b/internal/translate/apertium/language.go @@ -1,4 +1,4 @@ -package apertiumtranslate +package apertium var ( lang = []string{ diff --git a/internal/translate/apertiumtranslate/translator.go b/internal/translate/apertium/translator.go similarity index 76% rename from internal/translate/apertiumtranslate/translator.go rename to internal/translate/apertium/translator.go index 8ef1243..64f5648 100644 --- a/internal/translate/apertiumtranslate/translator.go +++ b/internal/translate/apertium/translator.go @@ -1,4 +1,4 @@ -package apertiumtranslate +package apertium import ( "encoding/json" @@ -15,25 +15,25 @@ const ( textURL = "https://www.apertium.org/apy/translate?langpair=%s|%s&q=%s" ) -type ApertiumTranslate struct { +type Translator struct { *core.Language *core.TTSLock core.EngineName } -func NewApertiumTranslate() *ApertiumTranslate { - return &ApertiumTranslate{ +func NewTranslator() *Translator { + return &Translator{ Language: core.NewLanguage(), TTSLock: core.NewTTSLock(), - EngineName: core.NewEngineName("ApertiumTranslate"), + EngineName: core.NewEngineName("Apertium"), } } -func (t *ApertiumTranslate) GetAllLang() []string { +func (t *Translator) GetAllLang() []string { return lang } -func (t *ApertiumTranslate) Translate(message string) (translation *core.Translation, err error) { +func (t *Translator) Translate(message string) (translation *core.Translation, err error) { translation = new(core.Translation) var data map[string]interface{} @@ -76,7 +76,7 @@ func (t *ApertiumTranslate) Translate(message string) (translation *core.Transla return translation, nil } -func (t *ApertiumTranslate) PlayTTS(lang, message string) error { +func (t *Translator) PlayTTS(lang, message string) error { defer t.ReleaseLock() return errors.New(t.GetEngineName() + " does not support text to speech") diff --git a/internal/translate/argostranslate/language.go b/internal/translate/argos/language.go similarity index 96% rename from internal/translate/argostranslate/language.go rename to internal/translate/argos/language.go index 0e5873f..8cfdd5c 100644 --- a/internal/translate/argostranslate/language.go +++ b/internal/translate/argos/language.go @@ -1,4 +1,4 @@ -package argostranslate +package argos var ( lang = []string{ diff --git a/internal/translate/argostranslate/translator.go b/internal/translate/argos/translator.go similarity index 73% rename from internal/translate/argostranslate/translator.go rename to internal/translate/argos/translator.go index 2debc42..be3c97b 100644 --- a/internal/translate/argostranslate/translator.go +++ b/internal/translate/argos/translator.go @@ -1,4 +1,4 @@ -package argostranslate +package argos import ( "encoding/json" @@ -15,25 +15,25 @@ const ( textURL = "https://translate.argosopentech.com/translate" ) -type ArgosTranslate struct { +type Translator struct { *core.Language *core.TTSLock core.EngineName } -func NewArgosTranslate() *ArgosTranslate { - return &ArgosTranslate{ +func NewTranslator() *Translator { + return &Translator{ Language: core.NewLanguage(), TTSLock: core.NewTTSLock(), - EngineName: core.NewEngineName("ArgosTranslate"), + EngineName: core.NewEngineName("Argos"), } } -func (t *ArgosTranslate) GetAllLang() []string { +func (t *Translator) GetAllLang() []string { return lang } -func (t *ArgosTranslate) Translate(message string) (translation *core.Translation, err error) { +func (t *Translator) Translate(message string) (translation *core.Translation, err error) { translation = new(core.Translation) var data map[string]interface{} @@ -63,7 +63,7 @@ func (t *ArgosTranslate) Translate(message string) (translation *core.Translatio return translation, nil } -func (t *ArgosTranslate) PlayTTS(lang, message string) error { +func (t *Translator) PlayTTS(lang, message string) error { defer t.ReleaseLock() return errors.New(t.GetEngineName() + " does not support text to speech") diff --git a/internal/translate/bingtranslate/lang.go b/internal/translate/bing/lang.go similarity index 99% rename from internal/translate/bingtranslate/lang.go rename to internal/translate/bing/lang.go index 9ca806d..f083553 100644 --- a/internal/translate/bingtranslate/lang.go +++ b/internal/translate/bing/lang.go @@ -1,4 +1,4 @@ -package bingtranslate +package bing var ( lang = []string{ diff --git a/internal/translate/bingtranslate/translator.go b/internal/translate/bing/translator.go similarity index 92% rename from internal/translate/bingtranslate/translator.go rename to internal/translate/bing/translator.go index 07e2820..2f8ffa1 100644 --- a/internal/translate/bingtranslate/translator.go +++ b/internal/translate/bing/translator.go @@ -1,4 +1,4 @@ -package bingtranslate +package bing import ( "encoding/json" @@ -24,7 +24,7 @@ const ( ttsSSML = "%s" ) -type BingTranslate struct { +type Translator struct { *core.Language *core.TTSLock core.EngineName @@ -37,19 +37,19 @@ type setUpData struct { token string } -func NewBingTranslate() *BingTranslate { - return &BingTranslate{ +func NewTranslator() *Translator { + return &Translator{ Language: core.NewLanguage(), TTSLock: core.NewTTSLock(), - EngineName: core.NewEngineName("BingTranslate"), + EngineName: core.NewEngineName("Bing"), } } -func (t *BingTranslate) GetAllLang() []string { +func (t *Translator) GetAllLang() []string { return lang } -func (t *BingTranslate) setUp() (*setUpData, error) { +func (t *Translator) setUp() (*setUpData, error) { data := new(setUpData) res, err := http.Get(setUpURL) @@ -82,7 +82,7 @@ func (t *BingTranslate) setUp() (*setUpData, error) { return data, nil } -func (t *BingTranslate) Translate(message string) (translation *core.Translation, err error) { +func (t *Translator) Translate(message string) (translation *core.Translation, err error) { translation = new(core.Translation) var data []interface{} @@ -161,7 +161,7 @@ func (t *BingTranslate) Translate(message string) (translation *core.Translation return translation, nil } -func (t *BingTranslate) PlayTTS(lang, message string) error { +func (t *Translator) PlayTTS(lang, message string) error { defer t.ReleaseLock() name, ok := voiceName[lang] diff --git a/internal/translate/bingtranslate/utils.go b/internal/translate/bing/utils.go similarity index 97% rename from internal/translate/bingtranslate/utils.go rename to internal/translate/bing/utils.go index 44c4521..359ccd7 100644 --- a/internal/translate/bingtranslate/utils.go +++ b/internal/translate/bing/utils.go @@ -1,4 +1,4 @@ -package bingtranslate +package bing import ( "fmt" diff --git a/internal/translate/googletranslate/language.go b/internal/translate/google/language.go similarity index 99% rename from internal/translate/googletranslate/language.go rename to internal/translate/google/language.go index d119988..fdcb879 100644 --- a/internal/translate/googletranslate/language.go +++ b/internal/translate/google/language.go @@ -1,4 +1,4 @@ -package googletranslate +package google // https://cloud.google.com/translate/docs/languages var ( diff --git a/internal/translate/googletranslate/translator.go b/internal/translate/google/translator.go similarity index 89% rename from internal/translate/googletranslate/translator.go rename to internal/translate/google/translator.go index 75ec308..16d50f5 100644 --- a/internal/translate/googletranslate/translator.go +++ b/internal/translate/google/translator.go @@ -1,4 +1,4 @@ -package googletranslate +package google import ( "encoding/json" @@ -19,25 +19,25 @@ const ( ttsURL = "https://translate.google.com.vn/translate_tts?ie=UTF-8&q=%s&tl=%s&client=tw-ob" ) -type GoogleTranslate struct { +type Translator struct { *core.Language *core.TTSLock core.EngineName } -func NewGoogleTranslate() *GoogleTranslate { - return &GoogleTranslate{ +func NewTranslator() *Translator { + return &Translator{ Language: core.NewLanguage(), TTSLock: core.NewTTSLock(), - EngineName: core.NewEngineName("GoogleTranslate"), + EngineName: core.NewEngineName("Google"), } } -func (t *GoogleTranslate) GetAllLang() []string { +func (t *Translator) GetAllLang() []string { return lang } -func (t *GoogleTranslate) Translate(message string) (translation *core.Translation, err error) { +func (t *Translator) Translate(message string) (translation *core.Translation, err error) { translation = new(core.Translation) var data []interface{} @@ -118,7 +118,7 @@ func (t *GoogleTranslate) Translate(message string) (translation *core.Translati return translation, nil } -func (t *GoogleTranslate) PlayTTS(lang, message string) error { +func (t *Translator) PlayTTS(lang, message string) error { defer t.ReleaseLock() urlStr := fmt.Sprintf( diff --git a/internal/translate/reversotranslate/language.go b/internal/translate/reverso/language.go similarity index 98% rename from internal/translate/reversotranslate/language.go rename to internal/translate/reverso/language.go index 750f255..8264900 100644 --- a/internal/translate/reversotranslate/language.go +++ b/internal/translate/reverso/language.go @@ -1,4 +1,4 @@ -package reversotranslate +package reverso var ( lang = []string{ diff --git a/internal/translate/reversotranslate/translator.go b/internal/translate/reverso/translator.go similarity index 90% rename from internal/translate/reversotranslate/translator.go rename to internal/translate/reverso/translator.go index 743427c..63c382d 100644 --- a/internal/translate/reversotranslate/translator.go +++ b/internal/translate/reverso/translator.go @@ -1,4 +1,4 @@ -package reversotranslate +package reverso import ( "bytes" @@ -21,25 +21,25 @@ const ( ttsURL = "https://voice.reverso.net/RestPronunciation.svc/v1/output=json/GetVoiceStream/voiceName=%s?voiceSpeed=80&inputText=%s" ) -type ReversoTranslate struct { +type Translator struct { *core.Language *core.TTSLock core.EngineName } -func NewReversoTranslate() *ReversoTranslate { - return &ReversoTranslate{ +func NewTranslator() *Translator { + return &Translator{ Language: core.NewLanguage(), TTSLock: core.NewTTSLock(), - EngineName: core.NewEngineName("ReversoTranslate"), + EngineName: core.NewEngineName("Reverso"), } } -func (t *ReversoTranslate) GetAllLang() []string { +func (t *Translator) GetAllLang() []string { return lang } -func (t *ReversoTranslate) Translate(message string) (translation *core.Translation, err error) { +func (t *Translator) Translate(message string) (translation *core.Translation, err error) { translation = new(core.Translation) var data map[string]interface{} @@ -111,7 +111,7 @@ func (t *ReversoTranslate) Translate(message string) (translation *core.Translat return translation, nil } -func (t *ReversoTranslate) PlayTTS(lang, message string) error { +func (t *Translator) PlayTTS(lang, message string) error { defer t.ReleaseLock() name, ok := voiceName[lang] diff --git a/internal/translate/translator.go b/internal/translate/translator.go index 3aff0cc..708f2fb 100644 --- a/internal/translate/translator.go +++ b/internal/translate/translator.go @@ -1,21 +1,21 @@ package translate import ( - "github.com/eeeXun/gtt/internal/translate/apertiumtranslate" - "github.com/eeeXun/gtt/internal/translate/argostranslate" - "github.com/eeeXun/gtt/internal/translate/bingtranslate" + "github.com/eeeXun/gtt/internal/translate/apertium" + "github.com/eeeXun/gtt/internal/translate/argos" + "github.com/eeeXun/gtt/internal/translate/bing" "github.com/eeeXun/gtt/internal/translate/core" - "github.com/eeeXun/gtt/internal/translate/googletranslate" - "github.com/eeeXun/gtt/internal/translate/reversotranslate" + "github.com/eeeXun/gtt/internal/translate/google" + "github.com/eeeXun/gtt/internal/translate/reverso" ) var ( AllTranslator = []string{ - "ApertiumTranslate", - "ArgosTranslate", - "BingTranslate", - "GoogleTranslate", - "ReversoTranslate", + "Apertium", + "Argos", + "Bing", + "Google", + "Reverso", } ) @@ -61,16 +61,16 @@ func NewTranslator(name string) Translator { var translator Translator switch name { - case "ApertiumTranslate": - translator = apertiumtranslate.NewApertiumTranslate() - case "ArgosTranslate": - translator = argostranslate.NewArgosTranslate() - case "BingTranslate": - translator = bingtranslate.NewBingTranslate() - case "GoogleTranslate": - translator = googletranslate.NewGoogleTranslate() - case "ReversoTranslate": - translator = reversotranslate.NewReversoTranslate() + case "Apertium": + translator = apertium.NewTranslator() + case "Argos": + translator = argos.NewTranslator() + case "Bing": + translator = bing.NewTranslator() + case "Google": + translator = google.NewTranslator() + case "Reverso": + translator = reverso.NewTranslator() } return translator