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

refactor: rename Translator name without Translate

This commit is contained in:
eeeXun 2023-04-29 00:17:09 +08:00
parent a76807d254
commit 4f30ce9df6
14 changed files with 98 additions and 93 deletions

View File

@ -3,11 +3,11 @@
Google Translate TUI (Originally) Google Translate TUI (Originally)
Supported Translator: Supported Translator:
[`ApertiumTranslate`](https://www.apertium.org/), [`Apertium`](https://www.apertium.org/),
[`ArgosTranslate`](https://translate.argosopentech.com/)(default), [`Argos`](https://translate.argosopentech.com/)(default),
[`BingTranslate`](https://www.bing.com/translator), [`Bing`](https://www.bing.com/translator),
[`GoogleTranslate`](https://translate.google.com/), [`Google`](https://translate.google.com/),
[`ReversoTranslate`](https://www.reverso.net/text-translation) [`Reverso`](https://www.reverso.net/text-translation)
## ScreenShot ## ScreenShot
@ -47,11 +47,11 @@ gtt -src "English" -dst "Chinese (Traditional)"
See available languages on: See available languages on:
- [Apertium Translate](https://www.apertium.org/) for `ApertiumTranslate` - [Apertium Translate](https://www.apertium.org/) for `Apertium`
- [argosopentech/argos-translate](https://github.com/argosopentech/argos-translate#supported-languages) for `ArgosTranslate` - [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 `BingTranslate` - [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 `GoogleTranslate` - [Google Language support](https://cloud.google.com/translate/docs/languages) for `Google`
- [Reverso Translation](https://www.reverso.net/text-translation) for `ReversoTranslate` - [Reverso Translation](https://www.reverso.net/text-translation) for `Reverso`
## Key Map ## Key Map

View File

@ -19,17 +19,17 @@ func configInit() {
"theme": "gruvbox", "theme": "gruvbox",
"source.border_color": "red", "source.border_color": "red",
"destination.border_color": "blue", "destination.border_color": "blue",
"source.language.apertiumtranslate": "English", "source.language.apertium": "English",
"destination.language.apertiumtranslate": "English", "destination.language.apertium": "English",
"source.language.argostranslate": "English", "source.language.argos": "English",
"destination.language.argostranslate": "English", "destination.language.argos": "English",
"source.language.bingtranslate": "English", "source.language.bing": "English",
"destination.language.bingtranslate": "English", "destination.language.bing": "English",
"source.language.googletranslate": "English", "source.language.google": "English",
"destination.language.googletranslate": "English", "destination.language.google": "English",
"source.language.reversotranslate": "English", "source.language.reverso": "English",
"destination.language.reversotranslate": "English", "destination.language.reverso": "English",
"translator": "ArgosTranslate", "translator": "Argos",
} }
) )
@ -66,6 +66,11 @@ func configInit() {
config.Set("theme", defaultConfig["theme"]) config.Set("theme", defaultConfig["theme"])
missing = true 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 { if missing {
config.WriteConfig() config.WriteConfig()
} }

View File

@ -1,4 +1,4 @@
package apertiumtranslate package apertium
var ( var (
lang = []string{ lang = []string{

View File

@ -1,4 +1,4 @@
package apertiumtranslate package apertium
import ( import (
"encoding/json" "encoding/json"
@ -15,25 +15,25 @@ const (
textURL = "https://www.apertium.org/apy/translate?langpair=%s|%s&q=%s" textURL = "https://www.apertium.org/apy/translate?langpair=%s|%s&q=%s"
) )
type ApertiumTranslate struct { type Translator struct {
*core.Language *core.Language
*core.TTSLock *core.TTSLock
core.EngineName core.EngineName
} }
func NewApertiumTranslate() *ApertiumTranslate { func NewTranslator() *Translator {
return &ApertiumTranslate{ return &Translator{
Language: core.NewLanguage(), Language: core.NewLanguage(),
TTSLock: core.NewTTSLock(), TTSLock: core.NewTTSLock(),
EngineName: core.NewEngineName("ApertiumTranslate"), EngineName: core.NewEngineName("Apertium"),
} }
} }
func (t *ApertiumTranslate) GetAllLang() []string { func (t *Translator) GetAllLang() []string {
return lang 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) translation = new(core.Translation)
var data map[string]interface{} var data map[string]interface{}
@ -76,7 +76,7 @@ func (t *ApertiumTranslate) Translate(message string) (translation *core.Transla
return translation, nil return translation, nil
} }
func (t *ApertiumTranslate) PlayTTS(lang, message string) error { func (t *Translator) PlayTTS(lang, message string) error {
defer t.ReleaseLock() defer t.ReleaseLock()
return errors.New(t.GetEngineName() + " does not support text to speech") return errors.New(t.GetEngineName() + " does not support text to speech")

View File

@ -1,4 +1,4 @@
package argostranslate package argos
var ( var (
lang = []string{ lang = []string{

View File

@ -1,4 +1,4 @@
package argostranslate package argos
import ( import (
"encoding/json" "encoding/json"
@ -15,25 +15,25 @@ const (
textURL = "https://translate.argosopentech.com/translate" textURL = "https://translate.argosopentech.com/translate"
) )
type ArgosTranslate struct { type Translator struct {
*core.Language *core.Language
*core.TTSLock *core.TTSLock
core.EngineName core.EngineName
} }
func NewArgosTranslate() *ArgosTranslate { func NewTranslator() *Translator {
return &ArgosTranslate{ return &Translator{
Language: core.NewLanguage(), Language: core.NewLanguage(),
TTSLock: core.NewTTSLock(), TTSLock: core.NewTTSLock(),
EngineName: core.NewEngineName("ArgosTranslate"), EngineName: core.NewEngineName("Argos"),
} }
} }
func (t *ArgosTranslate) GetAllLang() []string { func (t *Translator) GetAllLang() []string {
return lang 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) translation = new(core.Translation)
var data map[string]interface{} var data map[string]interface{}
@ -63,7 +63,7 @@ func (t *ArgosTranslate) Translate(message string) (translation *core.Translatio
return translation, nil return translation, nil
} }
func (t *ArgosTranslate) PlayTTS(lang, message string) error { func (t *Translator) PlayTTS(lang, message string) error {
defer t.ReleaseLock() defer t.ReleaseLock()
return errors.New(t.GetEngineName() + " does not support text to speech") return errors.New(t.GetEngineName() + " does not support text to speech")

View File

@ -1,4 +1,4 @@
package bingtranslate package bing
var ( var (
lang = []string{ lang = []string{

View File

@ -1,4 +1,4 @@
package bingtranslate package bing
import ( import (
"encoding/json" "encoding/json"
@ -24,7 +24,7 @@ const (
ttsSSML = "<speak version='1.0' xml:lang='%[1]s'><voice xml:lang='%[1]s' xml:gender='Female' name='%s'><prosody rate='-20.00%%'>%s</prosody></voice></speak>" ttsSSML = "<speak version='1.0' xml:lang='%[1]s'><voice xml:lang='%[1]s' xml:gender='Female' name='%s'><prosody rate='-20.00%%'>%s</prosody></voice></speak>"
) )
type BingTranslate struct { type Translator struct {
*core.Language *core.Language
*core.TTSLock *core.TTSLock
core.EngineName core.EngineName
@ -37,19 +37,19 @@ type setUpData struct {
token string token string
} }
func NewBingTranslate() *BingTranslate { func NewTranslator() *Translator {
return &BingTranslate{ return &Translator{
Language: core.NewLanguage(), Language: core.NewLanguage(),
TTSLock: core.NewTTSLock(), TTSLock: core.NewTTSLock(),
EngineName: core.NewEngineName("BingTranslate"), EngineName: core.NewEngineName("Bing"),
} }
} }
func (t *BingTranslate) GetAllLang() []string { func (t *Translator) GetAllLang() []string {
return lang return lang
} }
func (t *BingTranslate) setUp() (*setUpData, error) { func (t *Translator) setUp() (*setUpData, error) {
data := new(setUpData) data := new(setUpData)
res, err := http.Get(setUpURL) res, err := http.Get(setUpURL)
@ -82,7 +82,7 @@ func (t *BingTranslate) setUp() (*setUpData, error) {
return data, nil 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) translation = new(core.Translation)
var data []interface{} var data []interface{}
@ -161,7 +161,7 @@ func (t *BingTranslate) Translate(message string) (translation *core.Translation
return translation, nil return translation, nil
} }
func (t *BingTranslate) PlayTTS(lang, message string) error { func (t *Translator) PlayTTS(lang, message string) error {
defer t.ReleaseLock() defer t.ReleaseLock()
name, ok := voiceName[lang] name, ok := voiceName[lang]

View File

@ -1,4 +1,4 @@
package bingtranslate package bing
import ( import (
"fmt" "fmt"

View File

@ -1,4 +1,4 @@
package googletranslate package google
// https://cloud.google.com/translate/docs/languages // https://cloud.google.com/translate/docs/languages
var ( var (

View File

@ -1,4 +1,4 @@
package googletranslate package google
import ( import (
"encoding/json" "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" 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.Language
*core.TTSLock *core.TTSLock
core.EngineName core.EngineName
} }
func NewGoogleTranslate() *GoogleTranslate { func NewTranslator() *Translator {
return &GoogleTranslate{ return &Translator{
Language: core.NewLanguage(), Language: core.NewLanguage(),
TTSLock: core.NewTTSLock(), TTSLock: core.NewTTSLock(),
EngineName: core.NewEngineName("GoogleTranslate"), EngineName: core.NewEngineName("Google"),
} }
} }
func (t *GoogleTranslate) GetAllLang() []string { func (t *Translator) GetAllLang() []string {
return lang 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) translation = new(core.Translation)
var data []interface{} var data []interface{}
@ -118,7 +118,7 @@ func (t *GoogleTranslate) Translate(message string) (translation *core.Translati
return translation, nil return translation, nil
} }
func (t *GoogleTranslate) PlayTTS(lang, message string) error { func (t *Translator) PlayTTS(lang, message string) error {
defer t.ReleaseLock() defer t.ReleaseLock()
urlStr := fmt.Sprintf( urlStr := fmt.Sprintf(

View File

@ -1,4 +1,4 @@
package reversotranslate package reverso
var ( var (
lang = []string{ lang = []string{

View File

@ -1,4 +1,4 @@
package reversotranslate package reverso
import ( import (
"bytes" "bytes"
@ -21,25 +21,25 @@ const (
ttsURL = "https://voice.reverso.net/RestPronunciation.svc/v1/output=json/GetVoiceStream/voiceName=%s?voiceSpeed=80&inputText=%s" 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.Language
*core.TTSLock *core.TTSLock
core.EngineName core.EngineName
} }
func NewReversoTranslate() *ReversoTranslate { func NewTranslator() *Translator {
return &ReversoTranslate{ return &Translator{
Language: core.NewLanguage(), Language: core.NewLanguage(),
TTSLock: core.NewTTSLock(), TTSLock: core.NewTTSLock(),
EngineName: core.NewEngineName("ReversoTranslate"), EngineName: core.NewEngineName("Reverso"),
} }
} }
func (t *ReversoTranslate) GetAllLang() []string { func (t *Translator) GetAllLang() []string {
return lang 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) translation = new(core.Translation)
var data map[string]interface{} var data map[string]interface{}
@ -111,7 +111,7 @@ func (t *ReversoTranslate) Translate(message string) (translation *core.Translat
return translation, nil return translation, nil
} }
func (t *ReversoTranslate) PlayTTS(lang, message string) error { func (t *Translator) PlayTTS(lang, message string) error {
defer t.ReleaseLock() defer t.ReleaseLock()
name, ok := voiceName[lang] name, ok := voiceName[lang]

View File

@ -1,21 +1,21 @@
package translate package translate
import ( import (
"github.com/eeeXun/gtt/internal/translate/apertiumtranslate" "github.com/eeeXun/gtt/internal/translate/apertium"
"github.com/eeeXun/gtt/internal/translate/argostranslate" "github.com/eeeXun/gtt/internal/translate/argos"
"github.com/eeeXun/gtt/internal/translate/bingtranslate" "github.com/eeeXun/gtt/internal/translate/bing"
"github.com/eeeXun/gtt/internal/translate/core" "github.com/eeeXun/gtt/internal/translate/core"
"github.com/eeeXun/gtt/internal/translate/googletranslate" "github.com/eeeXun/gtt/internal/translate/google"
"github.com/eeeXun/gtt/internal/translate/reversotranslate" "github.com/eeeXun/gtt/internal/translate/reverso"
) )
var ( var (
AllTranslator = []string{ AllTranslator = []string{
"ApertiumTranslate", "Apertium",
"ArgosTranslate", "Argos",
"BingTranslate", "Bing",
"GoogleTranslate", "Google",
"ReversoTranslate", "Reverso",
} }
) )
@ -61,16 +61,16 @@ func NewTranslator(name string) Translator {
var translator Translator var translator Translator
switch name { switch name {
case "ApertiumTranslate": case "Apertium":
translator = apertiumtranslate.NewApertiumTranslate() translator = apertium.NewTranslator()
case "ArgosTranslate": case "Argos":
translator = argostranslate.NewArgosTranslate() translator = argos.NewTranslator()
case "BingTranslate": case "Bing":
translator = bingtranslate.NewBingTranslate() translator = bing.NewTranslator()
case "GoogleTranslate": case "Google":
translator = googletranslate.NewGoogleTranslate() translator = google.NewTranslator()
case "ReversoTranslate": case "Reverso":
translator = reversotranslate.NewReversoTranslate() translator = reverso.NewTranslator()
} }
return translator return translator