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)
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

View File

@ -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()
}

View File

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

View File

@ -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")

View File

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

View File

@ -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")

View File

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

View File

@ -1,4 +1,4 @@
package bingtranslate
package bing
import (
"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>"
)
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]

View File

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

View File

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

View File

@ -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(

View File

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

View File

@ -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]

View File

@ -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