v/GTT
1
0
mirror of https://github.com/eeeXun/GTT.git synced 2025-05-18 00:30:40 -07:00
GTT/internal/translate/translator.go
2023-04-15 01:35:09 +08:00

77 lines
1.8 KiB
Go

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/googletranslate"
"github.com/eeeXun/gtt/internal/translate/reversotranslate"
)
var (
AllTranslator = []string{
"ApertiumTranslate",
"BingTranslate",
"ArgosTranslate",
"GoogleTranslate",
"ReversoTranslate",
}
)
type Translator interface {
// Get engine name of the translator
GetEngineName() string
// Get all languages of the translator
GetAllLang() []string
// Get source language of the translator
GetSrcLang() string
// Get destination language of the translator
GetDstLang() string
// Set source language of the translator
SetSrcLang(lang string)
// Set destination language of the translator
SetDstLang(lang string)
// Swap source and destination language of the translator
SwapLang()
// Check if lock is available
LockAvailable() bool
// Acquire the lock
AcquireLock()
// Stop text to speech
StopTTS()
// Translate from source to destination language
Translate(message string) (translation, definition, partOfSpeech string, err error)
// Play text to speech
PlayTTS(lang, message string) error
}
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()
}
return translator
}