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:
parent
a76807d254
commit
4f30ce9df6
20
README.md
20
README.md
@ -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
|
||||||
|
|
||||||
|
37
config.go
37
config.go
@ -14,22 +14,22 @@ func configInit() {
|
|||||||
var (
|
var (
|
||||||
defaultConfigPath string
|
defaultConfigPath string
|
||||||
defaultConfig = map[string]interface{}{
|
defaultConfig = map[string]interface{}{
|
||||||
"hide_below": false,
|
"hide_below": false,
|
||||||
"transparent": false,
|
"transparent": false,
|
||||||
"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()
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package apertiumtranslate
|
package apertium
|
||||||
|
|
||||||
var (
|
var (
|
||||||
lang = []string{
|
lang = []string{
|
@ -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")
|
@ -1,4 +1,4 @@
|
|||||||
package argostranslate
|
package argos
|
||||||
|
|
||||||
var (
|
var (
|
||||||
lang = []string{
|
lang = []string{
|
@ -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")
|
@ -1,4 +1,4 @@
|
|||||||
package bingtranslate
|
package bing
|
||||||
|
|
||||||
var (
|
var (
|
||||||
lang = []string{
|
lang = []string{
|
@ -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]
|
@ -1,4 +1,4 @@
|
|||||||
package bingtranslate
|
package bing
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
@ -1,4 +1,4 @@
|
|||||||
package googletranslate
|
package google
|
||||||
|
|
||||||
// https://cloud.google.com/translate/docs/languages
|
// https://cloud.google.com/translate/docs/languages
|
||||||
var (
|
var (
|
@ -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(
|
@ -1,4 +1,4 @@
|
|||||||
package reversotranslate
|
package reverso
|
||||||
|
|
||||||
var (
|
var (
|
||||||
lang = []string{
|
lang = []string{
|
@ -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]
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user