mirror of
https://codeberg.org/aryak/mozhi
synced 2025-06-04 00:41:07 +05:30
update deps, make engine code into a lib
This commit is contained in:
@@ -1,19 +0,0 @@
|
||||
package utils
|
||||
|
||||
import "os"
|
||||
|
||||
func AutoDetectWatson(query string) (string, error) {
|
||||
json := []byte(`{"text":"` + query + `"}`)
|
||||
watsonOut := PostRequest("https://www.ibm.com/demos/live/watson-language-translator/api/translate/detect", json)
|
||||
gjsonArr := watsonOut.Get("payload.languages.0.language.language").Array()
|
||||
answer := gjsonArr[0].String()
|
||||
return answer, nil
|
||||
}
|
||||
|
||||
func AutoDetectLibreTranslate(query string) (string, error) {
|
||||
json := []byte(`{"q":"` + query + `"}`)
|
||||
libreTranslateOut := PostRequest(os.Getenv("MOZHI_LIBRETRANSLATE_URL")+"/detect", json)
|
||||
gjsonArr := libreTranslateOut.Get("0.language").Array()
|
||||
answer := gjsonArr[0].String()
|
||||
return answer, nil
|
||||
}
|
383
utils/engines.go
383
utils/engines.go
@@ -1,383 +0,0 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/OwO-Network/gdeeplx"
|
||||
"github.com/gocolly/colly"
|
||||
"github.com/google/go-querystring/query"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
var ddgVqd string
|
||||
|
||||
func TranslateGoogle(to string, from string, text string) (LangOut, error) {
|
||||
ToOrig := to
|
||||
FromOrig := from
|
||||
// For some reason google uses no for norwegian instead of nb like the rest of the translators. This is for the All function primarily
|
||||
if to == "nb" {
|
||||
to = "no"
|
||||
} else if from == "nb" {
|
||||
to = "no"
|
||||
}
|
||||
var ToValid bool
|
||||
var FromValid bool
|
||||
for _, v := range LangListGoogle("sl") {
|
||||
if v.Id == to {
|
||||
ToValid = true
|
||||
}
|
||||
if v.Id == from {
|
||||
FromValid = true
|
||||
}
|
||||
if FromValid == true && ToValid == true {
|
||||
break
|
||||
}
|
||||
}
|
||||
if ToValid != true {
|
||||
return LangOut{}, errors.New("Target Language Code invalid")
|
||||
}
|
||||
if FromValid != true {
|
||||
return LangOut{}, errors.New("Source language code invalid")
|
||||
}
|
||||
|
||||
UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT")
|
||||
if !ok {
|
||||
UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
|
||||
}
|
||||
sc := colly.NewCollector(colly.AllowedDomains("translate.google.com"), colly.UserAgent(UserAgent))
|
||||
var answer string
|
||||
sc.OnHTML("div.result-container", func(e *colly.HTMLElement) {
|
||||
answer = e.Text
|
||||
})
|
||||
type Options struct {
|
||||
To string `url:"tl"`
|
||||
UI string `url:"hl"`
|
||||
From string `url:"sl"`
|
||||
Text string `url:"q"`
|
||||
}
|
||||
opt := Options{to, to, from, text}
|
||||
v, _ := query.Values(opt)
|
||||
url := "https://translate.google.com/m?" + v.Encode()
|
||||
sc.Visit(url)
|
||||
var langout LangOut
|
||||
langout.OutputText = answer
|
||||
langout.Engine = "google"
|
||||
langout.SourceLang = FromOrig
|
||||
langout.TargetLang = ToOrig
|
||||
return langout, nil
|
||||
}
|
||||
|
||||
func TranslateReverso(to string, from string, query string) (LangOut, error) {
|
||||
ToOrig := to
|
||||
FromOrig := from
|
||||
var ToValid bool
|
||||
var FromValid bool
|
||||
for _, v := range LangListReverso("sl") {
|
||||
if v.Id == to {
|
||||
ToValid = true
|
||||
}
|
||||
if v.Id == from {
|
||||
FromValid = true
|
||||
}
|
||||
if FromValid == true && ToValid == true {
|
||||
break
|
||||
}
|
||||
}
|
||||
if ToValid != true {
|
||||
return LangOut{}, errors.New("Target language code invalid")
|
||||
}
|
||||
if FromValid != true {
|
||||
return LangOut{}, errors.New("Source language code invalid")
|
||||
}
|
||||
json := []byte(`{ "format": "text", "from": "` + from + `", "to": "` + to + `", "input":"` + query + `", "options": {"sentenceSplitter": false, "origin":"translation.web", contextResults: false, languageDetection: true} }`)
|
||||
reversoOut := PostRequest("https://api.reverso.net/translate/v1/translation", json)
|
||||
gjsonArr := reversoOut.Get("translation").Array()
|
||||
var langout LangOut
|
||||
langout.OutputText = gjsonArr[0].String()
|
||||
langout.Engine = "reverso"
|
||||
langout.SourceLang = FromOrig
|
||||
langout.TargetLang = ToOrig
|
||||
return langout, nil
|
||||
}
|
||||
|
||||
func TranslateLibreTranslate(to string, from string, query string) (LangOut, error) {
|
||||
ToOrig := to
|
||||
FromOrig := from
|
||||
var ToValid bool
|
||||
var FromValid bool
|
||||
for _, v := range LangListLibreTranslate("sl") {
|
||||
if v.Id == to {
|
||||
ToValid = true
|
||||
}
|
||||
if v.Id == from {
|
||||
FromValid = true
|
||||
}
|
||||
if FromValid == true && ToValid == true {
|
||||
break
|
||||
}
|
||||
}
|
||||
if ToValid != true {
|
||||
return LangOut{}, errors.New("Target language code invalid")
|
||||
}
|
||||
if FromValid != true {
|
||||
return LangOut{}, errors.New("Source language code invalid")
|
||||
}
|
||||
json := []byte(`{"q":"` + query + `","source":"` + from + `","target":"` + to + `"}`)
|
||||
// TODO: Make it configurable
|
||||
libreTranslateOut := PostRequest(os.Getenv("MOZHI_LIBRETRANSLATE_URL")+"/translate", json)
|
||||
gjsonArr := libreTranslateOut.Get("translatedText").Array()
|
||||
var langout LangOut
|
||||
langout.OutputText = gjsonArr[0].String()
|
||||
langout.Engine = "libretranslate"
|
||||
langout.SourceLang = FromOrig
|
||||
langout.TargetLang = ToOrig
|
||||
if from == "auto" {
|
||||
langout.AutoDetect, _ = AutoDetectLibreTranslate(query)
|
||||
}
|
||||
return langout, nil
|
||||
}
|
||||
|
||||
func TranslateWatson(to string, from string, query string) (LangOut, error) {
|
||||
FromOrig := from
|
||||
ToOrig := to
|
||||
var ToValid bool
|
||||
var FromValid bool
|
||||
for _, v := range LangListWatson("sl") {
|
||||
if v.Id == to {
|
||||
ToValid = true
|
||||
}
|
||||
if v.Id == from {
|
||||
FromValid = true
|
||||
}
|
||||
if FromValid == true && ToValid == true {
|
||||
break
|
||||
}
|
||||
}
|
||||
if ToValid != true {
|
||||
return LangOut{}, errors.New("Target language code invalid")
|
||||
}
|
||||
if FromValid != true {
|
||||
return LangOut{}, errors.New("Source language code invalid")
|
||||
}
|
||||
var langout LangOut
|
||||
if from == "auto" {
|
||||
langout.AutoDetect, _ = AutoDetectWatson(query)
|
||||
from = langout.AutoDetect
|
||||
}
|
||||
json := []byte(`{"text":"` + query + `","source":"` + from + `","target":"` + to + `"}`)
|
||||
watsonOut := PostRequest("https://www.ibm.com/demos/live/watson-language-translator/api/translate/text", json)
|
||||
gjsonArr := watsonOut.Get("payload.translations.0.translation").Array()
|
||||
langout.OutputText = gjsonArr[0].String()
|
||||
langout.Engine = "watson"
|
||||
langout.SourceLang = FromOrig
|
||||
langout.TargetLang = ToOrig
|
||||
return langout, nil
|
||||
}
|
||||
|
||||
func TranslateMyMemory(to string, from string, text string) (LangOut, error) {
|
||||
FromOrig := from
|
||||
ToOrig := to
|
||||
var ToValid bool
|
||||
var FromValid bool
|
||||
for _, v := range LangListMyMemory("sl") {
|
||||
if v.Id == to {
|
||||
ToValid = true
|
||||
}
|
||||
if v.Id == from {
|
||||
FromValid = true
|
||||
}
|
||||
if FromValid == true && ToValid == true {
|
||||
break
|
||||
}
|
||||
}
|
||||
if ToValid != true {
|
||||
return LangOut{}, errors.New("Target language code invalid")
|
||||
}
|
||||
if FromValid != true {
|
||||
return LangOut{}, errors.New("Source language code invalid")
|
||||
}
|
||||
type Options struct {
|
||||
Translate string `url:"langpair"`
|
||||
Text string `url:"q"`
|
||||
}
|
||||
opt := Options{from + "|" + to, text}
|
||||
v, _ := query.Values(opt)
|
||||
myMemoryOut := GetRequest("https://api.mymemory.translated.net/get?" + v.Encode())
|
||||
gjsonArr := myMemoryOut.Get("responseData.translatedText").Array()
|
||||
var langout LangOut
|
||||
langout.OutputText = gjsonArr[0].String()
|
||||
langout.Engine = "mymemory"
|
||||
langout.SourceLang = FromOrig
|
||||
langout.TargetLang = ToOrig
|
||||
return langout, nil
|
||||
}
|
||||
|
||||
func TranslateYandex(to string, from string, text string) (LangOut, error) {
|
||||
FromOrig := from
|
||||
ToOrig := to
|
||||
var ToValid bool
|
||||
var FromValid bool
|
||||
for _, v := range LangListYandex("sl") {
|
||||
if v.Id == to {
|
||||
ToValid = true
|
||||
}
|
||||
if v.Id == from {
|
||||
FromValid = true
|
||||
}
|
||||
if FromValid == true && ToValid == true {
|
||||
break
|
||||
}
|
||||
}
|
||||
if ToValid != true {
|
||||
return LangOut{}, errors.New("Target language code invalid")
|
||||
}
|
||||
if FromValid != true {
|
||||
return LangOut{}, errors.New("Source language code invalid")
|
||||
}
|
||||
type Options struct {
|
||||
Translate string `url:"lang"`
|
||||
Text string `url:"text"`
|
||||
Srv string `url:"srv"`
|
||||
Id string `url:"sid"`
|
||||
}
|
||||
uuidWithHyphen := uuid.New()
|
||||
uuid := strings.Replace(uuidWithHyphen.String(), "-", "", -1)
|
||||
opt := Options{from + "-" + to, text, "android", uuid + "-0-0"}
|
||||
v, _ := query.Values(opt)
|
||||
|
||||
yandexOut := PostRequest("https://translate.yandex.net/api/v1/tr.json/translate?"+v.Encode(), []byte(""))
|
||||
gjsonArr := yandexOut.Get("text.0").Array()
|
||||
var langout LangOut
|
||||
langout.OutputText = gjsonArr[0].String()
|
||||
langout.Engine = "yandex"
|
||||
langout.SourceLang = FromOrig
|
||||
langout.TargetLang = ToOrig
|
||||
return langout, nil
|
||||
}
|
||||
|
||||
func TranslateDeepl(to string, from string, text string) (LangOut, error) {
|
||||
FromOrig := from
|
||||
ToOrig := to
|
||||
var ToValid bool
|
||||
var FromValid bool
|
||||
for _, v := range LangListDeepl("sl") {
|
||||
if v.Id == to {
|
||||
ToValid = true
|
||||
}
|
||||
if v.Id == from {
|
||||
FromValid = true
|
||||
}
|
||||
if FromValid == true && ToValid == true {
|
||||
break
|
||||
}
|
||||
}
|
||||
if ToValid != true {
|
||||
return LangOut{}, errors.New("Target language code invalid")
|
||||
}
|
||||
if FromValid != true {
|
||||
return LangOut{}, errors.New("Source language code invalid")
|
||||
}
|
||||
answer, err := gdeeplx.Translate(text, from, to, 0)
|
||||
if err != nil {
|
||||
return LangOut{}, errors.New("failed")
|
||||
}
|
||||
answer1 := answer.(map[string]interface{})
|
||||
ans := answer1["data"].(string)
|
||||
var langout LangOut
|
||||
langout.OutputText = ans
|
||||
langout.Engine = "deepl"
|
||||
if from == "auto" {
|
||||
langout.AutoDetect = strings.ToLower(answer1["detected_lang"].(string))
|
||||
}
|
||||
langout.SourceLang = FromOrig
|
||||
langout.TargetLang = ToOrig
|
||||
return langout, nil
|
||||
}
|
||||
|
||||
func ddgVqdUpdate() {
|
||||
r, err := http.NewRequest("GET", "https://duckduckgo.com/?q=translate", nil)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT")
|
||||
if !ok {
|
||||
UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
|
||||
}
|
||||
r.Header.Set("User-Agent", UserAgent)
|
||||
|
||||
client := &http.Client{}
|
||||
res, err := client.Do(r)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
defer res.Body.Close()
|
||||
|
||||
body, err := io.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
re := regexp.MustCompile(`vqd="([^"]*)"`)
|
||||
match := re.FindStringSubmatch(string(body))
|
||||
ddgVqd = match[1]
|
||||
}
|
||||
|
||||
func TranslateDuckDuckGo(to string, from string, query string) (LangOut, error) {
|
||||
FromOrig := from
|
||||
ToOrig := to
|
||||
var ToValid bool
|
||||
var FromValid bool
|
||||
for _, v := range LangListDuckDuckGo("sl") {
|
||||
if v.Id == to {
|
||||
ToValid = true
|
||||
}
|
||||
if v.Id == from {
|
||||
FromValid = true
|
||||
}
|
||||
if FromValid == true && ToValid == true {
|
||||
break
|
||||
}
|
||||
}
|
||||
if ToValid != true {
|
||||
return LangOut{}, errors.New("Target language code invalid")
|
||||
}
|
||||
if FromValid != true {
|
||||
return LangOut{}, errors.New("Source language code invalid")
|
||||
}
|
||||
var url string
|
||||
var langout LangOut
|
||||
ddgVqdUpdate()
|
||||
if from == "auto" {
|
||||
url = "https://duckduckgo.com/translation.js?vqd=" + ddgVqd + "&query=translate&to=" + to
|
||||
} else {
|
||||
url = "https://duckduckgo.com/translation.js?vqd=" + ddgVqd + "&query=translate&to=" + to + "&from=" + from
|
||||
}
|
||||
duckDuckGoOut := PostRequest(url, []byte(query))
|
||||
gjsonArr := duckDuckGoOut.Get("translated").Array()
|
||||
langout.OutputText = gjsonArr[0].String()
|
||||
langout.Engine = "duckduckgo"
|
||||
langout.SourceLang = FromOrig
|
||||
langout.TargetLang = ToOrig
|
||||
if from == "auto" {
|
||||
langout.AutoDetect = duckDuckGoOut.Get("detected_language").String()
|
||||
}
|
||||
return langout, nil
|
||||
}
|
||||
|
||||
func TranslateAll(to string, from string, query string) []LangOut {
|
||||
engines := []string{"reverso", "google", "libre", "watson", "mymemory", "yandex", "deepl", "duckduckgo"}
|
||||
langout := []LangOut{}
|
||||
for i := 0; i < len(engines); i++ {
|
||||
data, err := Translate(engines[i], to, from, query)
|
||||
if err == nil {
|
||||
langout = append(langout, data)
|
||||
}
|
||||
}
|
||||
return langout
|
||||
}
|
@@ -1,135 +0,0 @@
|
||||
package utils
|
||||
|
||||
func LangListDeepl(listType string) []List {
|
||||
// IDs got from deepl.com/translator
|
||||
// Every time you change language, the # will get updated with the lang code.
|
||||
ListData := []List{
|
||||
{
|
||||
Id: "bg",
|
||||
Name: "Bulgarian",
|
||||
},
|
||||
{
|
||||
Id: "zh",
|
||||
Name: "Chinese (Simplified)",
|
||||
},
|
||||
{
|
||||
Id: "cs",
|
||||
Name: "Czech",
|
||||
},
|
||||
{
|
||||
Id: "da",
|
||||
Name: "Danish",
|
||||
},
|
||||
{
|
||||
Id: "nl",
|
||||
Name: "Dutch",
|
||||
},
|
||||
{
|
||||
Id: "en",
|
||||
Name: "English",
|
||||
},
|
||||
{
|
||||
Id: "et",
|
||||
Name: "Estonian",
|
||||
},
|
||||
{
|
||||
Id: "fi",
|
||||
Name: "Finnish",
|
||||
},
|
||||
{
|
||||
Id: "fr",
|
||||
Name: "French",
|
||||
},
|
||||
{
|
||||
Id: "de",
|
||||
Name: "Germany",
|
||||
},
|
||||
{
|
||||
Id: "el",
|
||||
Name: "Greek",
|
||||
},
|
||||
{
|
||||
Id: "hu",
|
||||
Name: "Hungarian",
|
||||
},
|
||||
{
|
||||
Id: "id",
|
||||
Name: "Indonesian",
|
||||
},
|
||||
{
|
||||
Id: "it",
|
||||
Name: "Italian",
|
||||
},
|
||||
{
|
||||
Id: "ja",
|
||||
Name: "Japanese",
|
||||
},
|
||||
{
|
||||
Id: "ko",
|
||||
Name: "Korean",
|
||||
},
|
||||
{
|
||||
Id: "lv",
|
||||
Name: "Latvian",
|
||||
},
|
||||
{
|
||||
Id: "lt",
|
||||
Name: "Lithuanian",
|
||||
},
|
||||
{
|
||||
Id: "nb",
|
||||
Name: "Norwegian",
|
||||
},
|
||||
{
|
||||
Id: "pl",
|
||||
Name: "Polish",
|
||||
},
|
||||
{
|
||||
Id: "pt",
|
||||
Name: "Portugese",
|
||||
},
|
||||
{
|
||||
Id: "ro",
|
||||
Name: "Romanian",
|
||||
},
|
||||
{
|
||||
Id: "ru",
|
||||
Name: "Russian",
|
||||
},
|
||||
{
|
||||
Id: "sk",
|
||||
Name: "Slovak",
|
||||
},
|
||||
{
|
||||
Id: "sl",
|
||||
Name: "Slovenian",
|
||||
},
|
||||
{
|
||||
Id: "es",
|
||||
Name: "Spanish",
|
||||
},
|
||||
{
|
||||
Id: "sv",
|
||||
Name: "Swedish",
|
||||
},
|
||||
{
|
||||
Id: "tr",
|
||||
Name: "Turkish",
|
||||
},
|
||||
{
|
||||
Id: "uk",
|
||||
Name: "Ukrainian",
|
||||
},
|
||||
}
|
||||
var ListD []List
|
||||
if listType == "sl" {
|
||||
auto := []List{{
|
||||
Id: "auto",
|
||||
Name: "Detect Language",
|
||||
}}
|
||||
ListD = append(append([]List{}, auto...), ListData...)
|
||||
} else {
|
||||
ListD = ListData
|
||||
}
|
||||
return ListD
|
||||
}
|
@@ -1,531 +0,0 @@
|
||||
package utils
|
||||
|
||||
func LangListDuckDuckGo(listType string) []List {
|
||||
// DuckDuckGo is just Bing translate but easier to scrape :)
|
||||
// Converted json of https://github.com/plainheart/bing-translate-api/blob/master/src/lang.json to this format
|
||||
ListData := []List{
|
||||
{
|
||||
Id: "af",
|
||||
Name: "Afrikaans",
|
||||
},
|
||||
{
|
||||
Id: "sq",
|
||||
Name: "Albanian",
|
||||
},
|
||||
{
|
||||
Id: "am",
|
||||
Name: "Amharic",
|
||||
},
|
||||
{
|
||||
Id: "ar",
|
||||
Name: "Arabic",
|
||||
},
|
||||
{
|
||||
Id: "hy",
|
||||
Name: "Armenian",
|
||||
},
|
||||
{
|
||||
Id: "as",
|
||||
Name: "Assamese",
|
||||
},
|
||||
{
|
||||
Id: "az",
|
||||
Name: "Azerbaijani",
|
||||
},
|
||||
{
|
||||
Id: "bn",
|
||||
Name: "Bangla",
|
||||
},
|
||||
{
|
||||
Id: "ba",
|
||||
Name: "Bashkir",
|
||||
},
|
||||
{
|
||||
Id: "eu",
|
||||
Name: "Basque",
|
||||
},
|
||||
{
|
||||
Id: "bs",
|
||||
Name: "Bosnian",
|
||||
},
|
||||
{
|
||||
Id: "bg",
|
||||
Name: "Bulgarian",
|
||||
},
|
||||
{
|
||||
Id: "yue",
|
||||
Name: "Cantonese (Traditional)",
|
||||
},
|
||||
{
|
||||
Id: "ca",
|
||||
Name: "Catalan",
|
||||
},
|
||||
{
|
||||
Id: "lzh",
|
||||
Name: "Chinese (Literary)",
|
||||
},
|
||||
{
|
||||
Id: "zh-Hans",
|
||||
Name: "Chinese Simplified",
|
||||
},
|
||||
{
|
||||
Id: "zh-Hant",
|
||||
Name: "Chinese Traditional",
|
||||
},
|
||||
{
|
||||
Id: "hr",
|
||||
Name: "Croatian",
|
||||
},
|
||||
{
|
||||
Id: "cs",
|
||||
Name: "Czech",
|
||||
},
|
||||
{
|
||||
Id: "da",
|
||||
Name: "Danish",
|
||||
},
|
||||
{
|
||||
Id: "prs",
|
||||
Name: "Dari",
|
||||
},
|
||||
{
|
||||
Id: "dv",
|
||||
Name: "Divehi",
|
||||
},
|
||||
{
|
||||
Id: "nl",
|
||||
Name: "Dutch",
|
||||
},
|
||||
{
|
||||
Id: "en",
|
||||
Name: "English",
|
||||
},
|
||||
{
|
||||
Id: "et",
|
||||
Name: "Estonian",
|
||||
},
|
||||
{
|
||||
Id: "fo",
|
||||
Name: "Faroese",
|
||||
},
|
||||
{
|
||||
Id: "fj",
|
||||
Name: "Fijian",
|
||||
},
|
||||
{
|
||||
Id: "fil",
|
||||
Name: "Filipino",
|
||||
},
|
||||
{
|
||||
Id: "fi",
|
||||
Name: "Finnish",
|
||||
},
|
||||
{
|
||||
Id: "fr",
|
||||
Name: "French",
|
||||
},
|
||||
{
|
||||
Id: "fr-CA",
|
||||
Name: "French (Canada)",
|
||||
},
|
||||
{
|
||||
Id: "gl",
|
||||
Name: "Galician",
|
||||
},
|
||||
{
|
||||
Id: "lug",
|
||||
Name: "Ganda",
|
||||
},
|
||||
{
|
||||
Id: "ka",
|
||||
Name: "Georgian",
|
||||
},
|
||||
{
|
||||
Id: "de",
|
||||
Name: "German",
|
||||
},
|
||||
{
|
||||
Id: "el",
|
||||
Name: "Greek",
|
||||
},
|
||||
{
|
||||
Id: "gu",
|
||||
Name: "Gujarati",
|
||||
},
|
||||
{
|
||||
Id: "ht",
|
||||
Name: "Haitian Creole",
|
||||
},
|
||||
{
|
||||
Id: "ha",
|
||||
Name: "Hausa",
|
||||
},
|
||||
{
|
||||
Id: "he",
|
||||
Name: "Hebrew",
|
||||
},
|
||||
{
|
||||
Id: "hi",
|
||||
Name: "Hindi",
|
||||
},
|
||||
{
|
||||
Id: "mww",
|
||||
Name: "Hmong Daw",
|
||||
},
|
||||
{
|
||||
Id: "hu",
|
||||
Name: "Hungarian",
|
||||
},
|
||||
{
|
||||
Id: "is",
|
||||
Name: "Icelandic",
|
||||
},
|
||||
{
|
||||
Id: "ig",
|
||||
Name: "Igbo",
|
||||
},
|
||||
{
|
||||
Id: "id",
|
||||
Name: "Indonesian",
|
||||
},
|
||||
{
|
||||
Id: "ikt",
|
||||
Name: "Inuinnaqtun",
|
||||
},
|
||||
{
|
||||
Id: "iu",
|
||||
Name: "Inuktitut",
|
||||
},
|
||||
{
|
||||
Id: "iu-Latn",
|
||||
Name: "Inuktitut (Latin)",
|
||||
},
|
||||
{
|
||||
Id: "ga",
|
||||
Name: "Irish",
|
||||
},
|
||||
{
|
||||
Id: "it",
|
||||
Name: "Italian",
|
||||
},
|
||||
{
|
||||
Id: "ja",
|
||||
Name: "Japanese",
|
||||
},
|
||||
{
|
||||
Id: "kn",
|
||||
Name: "Kannada",
|
||||
},
|
||||
{
|
||||
Id: "kk",
|
||||
Name: "Kazakh",
|
||||
},
|
||||
{
|
||||
Id: "km",
|
||||
Name: "Khmer",
|
||||
},
|
||||
{
|
||||
Id: "rw",
|
||||
Name: "Kinyarwanda",
|
||||
},
|
||||
{
|
||||
Id: "tlh-Latn",
|
||||
Name: "Klingon (Latin)",
|
||||
},
|
||||
{
|
||||
Id: "gom",
|
||||
Name: "Konkani",
|
||||
},
|
||||
{
|
||||
Id: "ko",
|
||||
Name: "Korean",
|
||||
},
|
||||
{
|
||||
Id: "ku",
|
||||
Name: "Kurdish (Central)",
|
||||
},
|
||||
{
|
||||
Id: "kmr",
|
||||
Name: "Kurdish (Northern)",
|
||||
},
|
||||
{
|
||||
Id: "ky",
|
||||
Name: "Kyrgyz",
|
||||
},
|
||||
{
|
||||
Id: "lo",
|
||||
Name: "Lao",
|
||||
},
|
||||
{
|
||||
Id: "lv",
|
||||
Name: "Latvian",
|
||||
},
|
||||
{
|
||||
Id: "ln",
|
||||
Name: "Lingala",
|
||||
},
|
||||
{
|
||||
Id: "lt",
|
||||
Name: "Lithuanian",
|
||||
},
|
||||
{
|
||||
Id: "dsb",
|
||||
Name: "Lower Sorbian",
|
||||
},
|
||||
{
|
||||
Id: "mk",
|
||||
Name: "Macedonian",
|
||||
},
|
||||
{
|
||||
Id: "mai",
|
||||
Name: "Maithili",
|
||||
},
|
||||
{
|
||||
Id: "mg",
|
||||
Name: "Malagasy",
|
||||
},
|
||||
{
|
||||
Id: "ms",
|
||||
Name: "Malay",
|
||||
},
|
||||
{
|
||||
Id: "ml",
|
||||
Name: "Malayalam",
|
||||
},
|
||||
{
|
||||
Id: "mt",
|
||||
Name: "Maltese",
|
||||
},
|
||||
{
|
||||
Id: "mr",
|
||||
Name: "Marathi",
|
||||
},
|
||||
{
|
||||
Id: "mn-Cyrl",
|
||||
Name: "Mongolian (Cyrillic)",
|
||||
},
|
||||
{
|
||||
Id: "mn-Mong",
|
||||
Name: "Mongolian (Traditional)",
|
||||
},
|
||||
{
|
||||
Id: "my",
|
||||
Name: "Myanmar (Burmese)",
|
||||
},
|
||||
{
|
||||
Id: "mi",
|
||||
Name: "Māori",
|
||||
},
|
||||
{
|
||||
Id: "ne",
|
||||
Name: "Nepali",
|
||||
},
|
||||
{
|
||||
Id: "nb",
|
||||
Name: "Norwegian",
|
||||
},
|
||||
{
|
||||
Id: "nya",
|
||||
Name: "Nyanja",
|
||||
},
|
||||
{
|
||||
Id: "or",
|
||||
Name: "Odia",
|
||||
},
|
||||
{
|
||||
Id: "ps",
|
||||
Name: "Pashto",
|
||||
},
|
||||
{
|
||||
Id: "fa",
|
||||
Name: "Persian",
|
||||
},
|
||||
{
|
||||
Id: "pl",
|
||||
Name: "Polish",
|
||||
},
|
||||
{
|
||||
Id: "pt",
|
||||
Name: "Portuguese (Brazil)",
|
||||
},
|
||||
{
|
||||
Id: "pt-PT",
|
||||
Name: "Portuguese (Portugal)",
|
||||
},
|
||||
{
|
||||
Id: "pa",
|
||||
Name: "Punjabi",
|
||||
},
|
||||
{
|
||||
Id: "otq",
|
||||
Name: "Querétaro Otomi",
|
||||
},
|
||||
{
|
||||
Id: "ro",
|
||||
Name: "Romanian",
|
||||
},
|
||||
{
|
||||
Id: "run",
|
||||
Name: "Rundi",
|
||||
},
|
||||
{
|
||||
Id: "ru",
|
||||
Name: "Russian",
|
||||
},
|
||||
{
|
||||
Id: "sm",
|
||||
Name: "Samoan",
|
||||
},
|
||||
{
|
||||
Id: "sr-Cyrl",
|
||||
Name: "Serbian (Cyrillic)",
|
||||
},
|
||||
{
|
||||
Id: "sr-Latn",
|
||||
Name: "Serbian (Latin)",
|
||||
},
|
||||
{
|
||||
Id: "st",
|
||||
Name: "Sesotho",
|
||||
},
|
||||
{
|
||||
Id: "nso",
|
||||
Name: "Sesotho sa Leboa",
|
||||
},
|
||||
{
|
||||
Id: "tn",
|
||||
Name: "Setswana",
|
||||
},
|
||||
{
|
||||
Id: "sn",
|
||||
Name: "Shona",
|
||||
},
|
||||
{
|
||||
Id: "sd",
|
||||
Name: "Sindhi",
|
||||
},
|
||||
{
|
||||
Id: "si",
|
||||
Name: "Sinhala",
|
||||
},
|
||||
{
|
||||
Id: "sk",
|
||||
Name: "Slovak",
|
||||
},
|
||||
{
|
||||
Id: "sl",
|
||||
Name: "Slovenian",
|
||||
},
|
||||
{
|
||||
Id: "so",
|
||||
Name: "Somali",
|
||||
},
|
||||
{
|
||||
Id: "es",
|
||||
Name: "Spanish",
|
||||
},
|
||||
{
|
||||
Id: "sw",
|
||||
Name: "Swahili",
|
||||
},
|
||||
{
|
||||
Id: "sv",
|
||||
Name: "Swedish",
|
||||
},
|
||||
{
|
||||
Id: "ty",
|
||||
Name: "Tahitian",
|
||||
},
|
||||
{
|
||||
Id: "ta",
|
||||
Name: "Tamil",
|
||||
},
|
||||
{
|
||||
Id: "tt",
|
||||
Name: "Tatar",
|
||||
},
|
||||
{
|
||||
Id: "te",
|
||||
Name: "Telugu",
|
||||
},
|
||||
{
|
||||
Id: "th",
|
||||
Name: "Thai",
|
||||
},
|
||||
{
|
||||
Id: "bo",
|
||||
Name: "Tibetan",
|
||||
},
|
||||
{
|
||||
Id: "ti",
|
||||
Name: "Tigrinya",
|
||||
},
|
||||
{
|
||||
Id: "to",
|
||||
Name: "Tongan",
|
||||
},
|
||||
{
|
||||
Id: "tr",
|
||||
Name: "Turkish",
|
||||
},
|
||||
{
|
||||
Id: "tk",
|
||||
Name: "Turkmen",
|
||||
},
|
||||
{
|
||||
Id: "uk",
|
||||
Name: "Ukrainian",
|
||||
},
|
||||
{
|
||||
Id: "hsb",
|
||||
Name: "Upper Sorbian",
|
||||
},
|
||||
{
|
||||
Id: "ur",
|
||||
Name: "Urdu",
|
||||
},
|
||||
{
|
||||
Id: "ug",
|
||||
Name: "Uyghur",
|
||||
},
|
||||
{
|
||||
Id: "uz",
|
||||
Name: "Uzbek (Latin)",
|
||||
},
|
||||
{
|
||||
Id: "vi",
|
||||
Name: "Vietnamese",
|
||||
},
|
||||
{
|
||||
Id: "cy",
|
||||
Name: "Welsh",
|
||||
},
|
||||
{
|
||||
Id: "xh",
|
||||
Name: "Xhosa",
|
||||
},
|
||||
{
|
||||
Id: "yo",
|
||||
Name: "Yoruba",
|
||||
},
|
||||
{
|
||||
Id: "yua",
|
||||
Name: "Yucatec Maya",
|
||||
},
|
||||
{
|
||||
Id: "zu",
|
||||
Name: "Zulu",
|
||||
},
|
||||
}
|
||||
var ListD []List
|
||||
if listType == "sl" {
|
||||
auto := []List{{
|
||||
Id: "auto",
|
||||
Name: "Detect Language",
|
||||
}}
|
||||
ListD = append(append([]List{}, auto...), ListData...)
|
||||
} else {
|
||||
ListD = ListData
|
||||
}
|
||||
return ListD
|
||||
}
|
@@ -1,550 +0,0 @@
|
||||
package utils
|
||||
|
||||
func LangListGoogle(listType string) []List {
|
||||
// IDs got from original simplytranslate-web and trial and error. Usually first three letters of language.
|
||||
ListData := []List{
|
||||
{
|
||||
Id: "af",
|
||||
Name: "Afrikaans",
|
||||
},
|
||||
{
|
||||
Id: "sq",
|
||||
Name: "Albanian",
|
||||
},
|
||||
{
|
||||
Id: "am",
|
||||
Name: "Amharic",
|
||||
},
|
||||
{
|
||||
Id: "ar",
|
||||
Name: "Arabic",
|
||||
},
|
||||
{
|
||||
Id: "hy",
|
||||
Name: "Armenian",
|
||||
},
|
||||
{
|
||||
Id: "as",
|
||||
Name: "Assamese",
|
||||
},
|
||||
{
|
||||
Id: "ay",
|
||||
Name: "Aymara",
|
||||
},
|
||||
{
|
||||
Id: "az",
|
||||
Name: "Azerbaijani",
|
||||
},
|
||||
{
|
||||
Id: "bm",
|
||||
Name: "Bambara",
|
||||
},
|
||||
{
|
||||
Id: "eu",
|
||||
Name: "Basque",
|
||||
},
|
||||
{
|
||||
Id: "be",
|
||||
Name: "Belarusian",
|
||||
},
|
||||
{
|
||||
Id: "bn",
|
||||
Name: "Bengali",
|
||||
},
|
||||
{
|
||||
Id: "bho",
|
||||
Name: "Bhojpuri",
|
||||
},
|
||||
{
|
||||
Id: "bs",
|
||||
Name: "Bosnian",
|
||||
},
|
||||
{
|
||||
Id: "bg",
|
||||
Name: "Bulgarian",
|
||||
},
|
||||
{
|
||||
Id: "ca",
|
||||
Name: "Catalan",
|
||||
},
|
||||
{
|
||||
Id: "ceb",
|
||||
Name: "Cebuano",
|
||||
},
|
||||
{
|
||||
Id: "ny",
|
||||
Name: "Chichewa",
|
||||
},
|
||||
{
|
||||
Id: "zh",
|
||||
Name: "Chinese (Simplified)",
|
||||
},
|
||||
{
|
||||
Id: "zh-TW",
|
||||
Name: "Chinese (Traditional)",
|
||||
},
|
||||
{
|
||||
Id: "co",
|
||||
Name: "Corsican",
|
||||
},
|
||||
{
|
||||
Id: "hr",
|
||||
Name: "Croatian",
|
||||
},
|
||||
{
|
||||
Id: "cs",
|
||||
Name: "Czech",
|
||||
},
|
||||
{
|
||||
Id: "da",
|
||||
Name: "Danish",
|
||||
},
|
||||
{
|
||||
Id: "dv",
|
||||
Name: "Dhivehi",
|
||||
},
|
||||
{
|
||||
Id: "doi",
|
||||
Name: "Dogri",
|
||||
},
|
||||
{
|
||||
Id: "nl",
|
||||
Name: "Dutch",
|
||||
},
|
||||
{
|
||||
Id: "en",
|
||||
Name: "English",
|
||||
},
|
||||
{
|
||||
Id: "eo",
|
||||
Name: "Esperanto",
|
||||
},
|
||||
{
|
||||
Id: "et",
|
||||
Name: "Estonian",
|
||||
},
|
||||
{
|
||||
Id: "ee",
|
||||
Name: "Ewe",
|
||||
},
|
||||
{
|
||||
Id: "tl",
|
||||
Name: "Filipino",
|
||||
},
|
||||
{
|
||||
Id: "fi",
|
||||
Name: "Finnish",
|
||||
},
|
||||
{
|
||||
Id: "fr",
|
||||
Name: "French",
|
||||
},
|
||||
{
|
||||
Id: "fy",
|
||||
Name: "Frisian",
|
||||
},
|
||||
{
|
||||
Id: "gl",
|
||||
Name: "Galician",
|
||||
},
|
||||
{
|
||||
Id: "ka",
|
||||
Name: "Georgian",
|
||||
},
|
||||
{
|
||||
Id: "de",
|
||||
Name: "German",
|
||||
},
|
||||
{
|
||||
Id: "el",
|
||||
Name: "Greek",
|
||||
},
|
||||
{
|
||||
Id: "gn",
|
||||
Name: "Guarani",
|
||||
},
|
||||
{
|
||||
Id: "gu",
|
||||
Name: "Gujarati",
|
||||
},
|
||||
{
|
||||
Id: "ht",
|
||||
Name: "Haitian Creole",
|
||||
},
|
||||
{
|
||||
Id: "ha",
|
||||
Name: "Hausa",
|
||||
},
|
||||
{
|
||||
Id: "haw",
|
||||
Name: "Hawaiian",
|
||||
},
|
||||
{
|
||||
Id: "iw",
|
||||
Name: "Hebrew",
|
||||
},
|
||||
{
|
||||
Id: "hi",
|
||||
Name: "Hindi",
|
||||
},
|
||||
{
|
||||
Id: "hmn",
|
||||
Name: "Hmong",
|
||||
},
|
||||
{
|
||||
Id: "hu",
|
||||
Name: "Hungarian",
|
||||
},
|
||||
{
|
||||
Id: "is",
|
||||
Name: "Icelandic",
|
||||
},
|
||||
{
|
||||
Id: "ig",
|
||||
Name: "Igbo",
|
||||
},
|
||||
{
|
||||
Id: "ilo",
|
||||
Name: "Ilocano",
|
||||
},
|
||||
{
|
||||
Id: "id",
|
||||
Name: "Indonesian",
|
||||
},
|
||||
{
|
||||
Id: "ga",
|
||||
Name: "Irish",
|
||||
},
|
||||
{
|
||||
Id: "it",
|
||||
Name: "Italian",
|
||||
},
|
||||
{
|
||||
Id: "ja",
|
||||
Name: "Japanese",
|
||||
},
|
||||
{
|
||||
Id: "jw",
|
||||
Name: "Javanese",
|
||||
},
|
||||
{
|
||||
Id: "kn",
|
||||
Name: "Kannada",
|
||||
},
|
||||
{
|
||||
Id: "kk",
|
||||
Name: "Kazakh",
|
||||
},
|
||||
{
|
||||
Id: "km",
|
||||
Name: "Khmer",
|
||||
},
|
||||
{
|
||||
Id: "rw",
|
||||
Name: "Kinyarwanda",
|
||||
},
|
||||
{
|
||||
Id: "gom",
|
||||
Name: "Konkani",
|
||||
},
|
||||
{
|
||||
Id: "ko",
|
||||
Name: "Korean",
|
||||
},
|
||||
{
|
||||
Id: "kri",
|
||||
Name: "Krio",
|
||||
},
|
||||
{
|
||||
Id: "ku",
|
||||
Name: "Kurdish (Kurmanji)",
|
||||
},
|
||||
{
|
||||
Id: "ckb",
|
||||
Name: "Kurdish (Sorani)",
|
||||
},
|
||||
{
|
||||
Id: "ky",
|
||||
Name: "Kyrgyz",
|
||||
},
|
||||
{
|
||||
Id: "lo",
|
||||
Name: "Lao",
|
||||
},
|
||||
{
|
||||
Id: "la",
|
||||
Name: "Latin",
|
||||
},
|
||||
{
|
||||
Id: "lv",
|
||||
Name: "Latvian",
|
||||
},
|
||||
{
|
||||
Id: "ln",
|
||||
Name: "Lingala",
|
||||
},
|
||||
{
|
||||
Id: "lt",
|
||||
Name: "Lithuanian",
|
||||
},
|
||||
{
|
||||
Id: "lg",
|
||||
Name: "Luganda",
|
||||
},
|
||||
{
|
||||
Id: "lb",
|
||||
Name: "Luxembourgish",
|
||||
},
|
||||
{
|
||||
Id: "mk",
|
||||
Name: "Macedonian",
|
||||
},
|
||||
{
|
||||
Id: "mai",
|
||||
Name: "Maithili",
|
||||
},
|
||||
{
|
||||
Id: "mg",
|
||||
Name: "Malagasy",
|
||||
},
|
||||
{
|
||||
Id: "ms",
|
||||
Name: "Malay",
|
||||
},
|
||||
{
|
||||
Id: "ml",
|
||||
Name: "Malayalam",
|
||||
},
|
||||
{
|
||||
Id: "mt",
|
||||
Name: "Maltese",
|
||||
},
|
||||
{
|
||||
Id: "mi",
|
||||
Name: "Maori",
|
||||
},
|
||||
{
|
||||
Id: "mr",
|
||||
Name: "Marathi",
|
||||
},
|
||||
{
|
||||
Id: "mni-Mtei",
|
||||
Name: "Meiteilon (Manipuri)",
|
||||
},
|
||||
{
|
||||
Id: "lus",
|
||||
Name: "Mizo",
|
||||
},
|
||||
{
|
||||
Id: "mn",
|
||||
Name: "Mongolian",
|
||||
},
|
||||
{
|
||||
Id: "my",
|
||||
Name: "Myanmar (Burmese)",
|
||||
},
|
||||
{
|
||||
Id: "ne",
|
||||
Name: "Nepali",
|
||||
},
|
||||
{
|
||||
Id: "no",
|
||||
Name: "Norwegian",
|
||||
},
|
||||
{
|
||||
Id: "or",
|
||||
Name: "Odia (Oriya)",
|
||||
},
|
||||
{
|
||||
Id: "om",
|
||||
Name: "Oromo",
|
||||
},
|
||||
{
|
||||
Id: "ps",
|
||||
Name: "Pashto",
|
||||
},
|
||||
{
|
||||
Id: "fa",
|
||||
Name: "Persian",
|
||||
},
|
||||
{
|
||||
Id: "pl",
|
||||
Name: "Polish",
|
||||
},
|
||||
{
|
||||
Id: "pt",
|
||||
Name: "Portuguese",
|
||||
},
|
||||
{
|
||||
Id: "pa",
|
||||
Name: "Punjabi",
|
||||
},
|
||||
{
|
||||
Id: "qu",
|
||||
Name: "Quechua",
|
||||
},
|
||||
{
|
||||
Id: "ro",
|
||||
Name: "Romanian",
|
||||
},
|
||||
{
|
||||
Id: "ru",
|
||||
Name: "Russian",
|
||||
},
|
||||
{
|
||||
Id: "sm",
|
||||
Name: "Samoan",
|
||||
},
|
||||
{
|
||||
Id: "sa",
|
||||
Name: "Sanskrit",
|
||||
},
|
||||
{
|
||||
Id: "gd",
|
||||
Name: "Scots Gaelic",
|
||||
},
|
||||
{
|
||||
Id: "nso",
|
||||
Name: "Sepedi",
|
||||
},
|
||||
{
|
||||
Id: "sr",
|
||||
Name: "Serbian",
|
||||
},
|
||||
{
|
||||
Id: "st",
|
||||
Name: "Sesotho",
|
||||
},
|
||||
{
|
||||
Id: "sn",
|
||||
Name: "Shona",
|
||||
},
|
||||
{
|
||||
Id: "sd",
|
||||
Name: "Sindhi",
|
||||
},
|
||||
{
|
||||
Id: "si",
|
||||
Name: "Sinhala",
|
||||
},
|
||||
{
|
||||
Id: "sk",
|
||||
Name: "Slovak",
|
||||
},
|
||||
{
|
||||
Id: "sl",
|
||||
Name: "Slovenian",
|
||||
},
|
||||
{
|
||||
Id: "so",
|
||||
Name: "Somali",
|
||||
},
|
||||
{
|
||||
Id: "es",
|
||||
Name: "Spanish",
|
||||
},
|
||||
{
|
||||
Id: "su",
|
||||
Name: "Sundanese",
|
||||
},
|
||||
{
|
||||
Id: "sw",
|
||||
Name: "Swahili",
|
||||
},
|
||||
{
|
||||
Id: "sv",
|
||||
Name: "Swedish",
|
||||
},
|
||||
{
|
||||
Id: "tg",
|
||||
Name: "Tajik",
|
||||
},
|
||||
{
|
||||
Id: "ta",
|
||||
Name: "Tamil",
|
||||
},
|
||||
{
|
||||
Id: "tt",
|
||||
Name: "Tatar",
|
||||
},
|
||||
{
|
||||
Id: "te",
|
||||
Name: "Telugu",
|
||||
},
|
||||
{
|
||||
Id: "th",
|
||||
Name: "Thai",
|
||||
},
|
||||
{
|
||||
Id: "ti",
|
||||
Name: "Tigrinya",
|
||||
},
|
||||
{
|
||||
Id: "ts",
|
||||
Name: "Tsonga",
|
||||
},
|
||||
{
|
||||
Id: "tr",
|
||||
Name: "Turkish",
|
||||
},
|
||||
{
|
||||
Id: "tk",
|
||||
Name: "Turkmen",
|
||||
},
|
||||
{
|
||||
Id: "ak",
|
||||
Name: "Twi",
|
||||
},
|
||||
{
|
||||
Id: "uk",
|
||||
Name: "Ukrainian",
|
||||
},
|
||||
{
|
||||
Id: "ur",
|
||||
Name: "Urdu",
|
||||
},
|
||||
{
|
||||
Id: "ug",
|
||||
Name: "Uyghur",
|
||||
},
|
||||
{
|
||||
Id: "uz",
|
||||
Name: "Uzbek",
|
||||
},
|
||||
{
|
||||
Id: "vi",
|
||||
Name: "Vietnamese",
|
||||
},
|
||||
{
|
||||
Id: "cy",
|
||||
Name: "Welsh",
|
||||
},
|
||||
{
|
||||
Id: "xh",
|
||||
Name: "Xhosa",
|
||||
},
|
||||
{
|
||||
Id: "yi",
|
||||
Name: "Yiddish",
|
||||
},
|
||||
{
|
||||
Id: "yo",
|
||||
Name: "Yoruba",
|
||||
},
|
||||
{
|
||||
Id: "zu",
|
||||
Name: "Zulu",
|
||||
},
|
||||
}
|
||||
var ListD []List
|
||||
if listType == "sl" {
|
||||
auto := []List{{
|
||||
Id: "auto",
|
||||
Name: "Detect Language",
|
||||
}}
|
||||
ListD = append(append([]List{}, auto...), ListData...)
|
||||
} else {
|
||||
ListD = ListData
|
||||
}
|
||||
return ListD
|
||||
}
|
@@ -1,85 +0,0 @@
|
||||
package utils
|
||||
|
||||
func LangListLibreTranslate(listType string) []List {
|
||||
ListData := []List{
|
||||
{
|
||||
Id: "en",
|
||||
Name: "English",
|
||||
},
|
||||
{
|
||||
Id: "ar",
|
||||
Name: "Arabic",
|
||||
},
|
||||
{
|
||||
Id: "zh",
|
||||
Name: "Chinese",
|
||||
},
|
||||
{
|
||||
Id: "fr",
|
||||
Name: "French",
|
||||
},
|
||||
{
|
||||
Id: "de",
|
||||
Name: "German",
|
||||
},
|
||||
{
|
||||
Id: "hi",
|
||||
Name: "Hindi",
|
||||
},
|
||||
{
|
||||
Id: "id",
|
||||
Name: "Indonesian",
|
||||
},
|
||||
{
|
||||
Id: "ga",
|
||||
Name: "Irish",
|
||||
},
|
||||
{
|
||||
Id: "it",
|
||||
Name: "Italian",
|
||||
},
|
||||
{
|
||||
Id: "ja",
|
||||
Name: "Japanese",
|
||||
},
|
||||
{
|
||||
Id: "ko",
|
||||
Name: "Korean",
|
||||
},
|
||||
{
|
||||
Id: "pl",
|
||||
Name: "Polish",
|
||||
},
|
||||
{
|
||||
Id: "pt",
|
||||
Name: "Portuguese",
|
||||
},
|
||||
{
|
||||
Id: "ru",
|
||||
Name: "Russian",
|
||||
},
|
||||
{
|
||||
Id: "es",
|
||||
Name: "Spanish",
|
||||
},
|
||||
{
|
||||
Id: "tr",
|
||||
Name: "Turkish",
|
||||
},
|
||||
{
|
||||
Id: "vi",
|
||||
Name: "Vietnamese",
|
||||
},
|
||||
}
|
||||
var ListD []List
|
||||
if listType == "sl" {
|
||||
auto := []List{{
|
||||
Id: "auto",
|
||||
Name: "Detect Language",
|
||||
}}
|
||||
ListD = append(append([]List{}, auto...), ListData...)
|
||||
} else {
|
||||
ListD = ListData
|
||||
}
|
||||
return ListD
|
||||
}
|
@@ -1,563 +0,0 @@
|
||||
package utils
|
||||
|
||||
func LangListMyMemory(listType string) []List {
|
||||
ListData := []List{
|
||||
{
|
||||
Id: "af",
|
||||
Name: "Afrikaans",
|
||||
},
|
||||
{
|
||||
Id: "sq",
|
||||
Name: "Albanian",
|
||||
},
|
||||
{
|
||||
Id: "am",
|
||||
Name: "Amharic",
|
||||
},
|
||||
{
|
||||
Id: "ar",
|
||||
Name: "Arabic",
|
||||
},
|
||||
{
|
||||
Id: "hy",
|
||||
Name: "Armenian",
|
||||
},
|
||||
{
|
||||
Id: "az",
|
||||
Name: "Azerbaijani",
|
||||
},
|
||||
{
|
||||
Id: "bjs",
|
||||
Name: "Bajan",
|
||||
},
|
||||
{
|
||||
Id: "rm",
|
||||
Name: "Balkan Gipsy",
|
||||
},
|
||||
{
|
||||
Id: "eu",
|
||||
Name: "Basque",
|
||||
},
|
||||
{
|
||||
Id: "bem",
|
||||
Name: "Bemba",
|
||||
},
|
||||
{
|
||||
Id: "bn",
|
||||
Name: "Bengali",
|
||||
},
|
||||
{
|
||||
Id: "be",
|
||||
Name: "Bielarus",
|
||||
},
|
||||
{
|
||||
Id: "bi",
|
||||
Name: "Bislama",
|
||||
},
|
||||
{
|
||||
Id: "bs",
|
||||
Name: "Bosnian",
|
||||
},
|
||||
{
|
||||
Id: "br",
|
||||
Name: "Breton",
|
||||
},
|
||||
{
|
||||
Id: "bg",
|
||||
Name: "Bulgarian",
|
||||
},
|
||||
{
|
||||
Id: "my",
|
||||
Name: "Burmese",
|
||||
},
|
||||
{
|
||||
Id: "ca",
|
||||
Name: "Catalan",
|
||||
},
|
||||
{
|
||||
Id: "ceb",
|
||||
Name: "Cebuano",
|
||||
},
|
||||
{
|
||||
Id: "ch",
|
||||
Name: "Chamorro",
|
||||
},
|
||||
{
|
||||
Id: "zh",
|
||||
Name: "Chinese (Simplified)",
|
||||
},
|
||||
{
|
||||
Id: "zh-TW",
|
||||
Name: "Chinese (Traditional)",
|
||||
},
|
||||
{
|
||||
Id: "zdj",
|
||||
Name: "Comorian",
|
||||
},
|
||||
{
|
||||
Id: "cop",
|
||||
Name: "Coptic",
|
||||
},
|
||||
{
|
||||
Id: "hr",
|
||||
Name: "Croatian",
|
||||
},
|
||||
{
|
||||
Id: "cs",
|
||||
Name: "Czech",
|
||||
},
|
||||
{
|
||||
Id: "da",
|
||||
Name: "Danish",
|
||||
},
|
||||
{
|
||||
Id: "nl",
|
||||
Name: "Dutch",
|
||||
},
|
||||
{
|
||||
Id: "dz",
|
||||
Name: "Dzongkha",
|
||||
},
|
||||
{
|
||||
Id: "en",
|
||||
Name: "English",
|
||||
},
|
||||
{
|
||||
Id: "eo",
|
||||
Name: "Esperanto",
|
||||
},
|
||||
{
|
||||
Id: "et",
|
||||
Name: "Estonian",
|
||||
},
|
||||
{
|
||||
Id: "fnG",
|
||||
Name: "Fanagalo",
|
||||
},
|
||||
{
|
||||
Id: "fo",
|
||||
Name: "Faroese",
|
||||
},
|
||||
{
|
||||
Id: "fi",
|
||||
Name: "Finnish",
|
||||
},
|
||||
{
|
||||
Id: "fr",
|
||||
Name: "French",
|
||||
},
|
||||
{
|
||||
Id: "gl",
|
||||
Name: "Galician",
|
||||
},
|
||||
{
|
||||
Id: "ka",
|
||||
Name: "Georgian",
|
||||
},
|
||||
{
|
||||
Id: "de",
|
||||
Name: "German",
|
||||
},
|
||||
{
|
||||
Id: "el",
|
||||
Name: "Greek",
|
||||
},
|
||||
{
|
||||
Id: "grc",
|
||||
Name: "Greek (Classical)",
|
||||
},
|
||||
{
|
||||
Id: "gu",
|
||||
Name: "Gujarati",
|
||||
},
|
||||
{
|
||||
Id: "ha",
|
||||
Name: "Hausa",
|
||||
},
|
||||
{
|
||||
Id: "haw",
|
||||
Name: "Hawaiian",
|
||||
},
|
||||
{
|
||||
Id: "he",
|
||||
Name: "Hebrew",
|
||||
},
|
||||
{
|
||||
Id: "hi",
|
||||
Name: "Hindi",
|
||||
},
|
||||
{
|
||||
Id: "hu",
|
||||
Name: "Hungarian",
|
||||
},
|
||||
{
|
||||
Id: "is",
|
||||
Name: "Icelandic",
|
||||
},
|
||||
{
|
||||
Id: "id",
|
||||
Name: "Indonesian",
|
||||
},
|
||||
{
|
||||
Id: "kl",
|
||||
Name: "Inuktitut (Greenland)",
|
||||
},
|
||||
{
|
||||
Id: "ga",
|
||||
Name: "Irish Gaelic",
|
||||
},
|
||||
{
|
||||
Id: "it",
|
||||
Name: "Italian",
|
||||
},
|
||||
{
|
||||
Id: "ja",
|
||||
Name: "Japanese",
|
||||
},
|
||||
{
|
||||
Id: "jv",
|
||||
Name: "Javanese",
|
||||
},
|
||||
{
|
||||
Id: "kea",
|
||||
Name: "Kabuverdianu",
|
||||
},
|
||||
{
|
||||
Id: "kab",
|
||||
Name: "Kabylian",
|
||||
},
|
||||
{
|
||||
Id: "kn",
|
||||
Name: "Kannada",
|
||||
},
|
||||
{
|
||||
Id: "kk",
|
||||
Name: "Kazakh",
|
||||
},
|
||||
{
|
||||
Id: "km",
|
||||
Name: "Khmer",
|
||||
},
|
||||
{
|
||||
Id: "rw",
|
||||
Name: "Kinyarwanda",
|
||||
},
|
||||
{
|
||||
Id: "rn",
|
||||
Name: "Kirundi",
|
||||
},
|
||||
{
|
||||
Id: "ko",
|
||||
Name: "Korean",
|
||||
},
|
||||
{
|
||||
Id: "ku",
|
||||
Name: "Kurdish",
|
||||
},
|
||||
{
|
||||
Id: "ckb",
|
||||
Name: "Kurdish Sorani",
|
||||
},
|
||||
{
|
||||
Id: "ky",
|
||||
Name: "Kyrgyz",
|
||||
},
|
||||
{
|
||||
Id: "lo",
|
||||
Name: "Lao",
|
||||
},
|
||||
{
|
||||
Id: "la",
|
||||
Name: "Latin",
|
||||
},
|
||||
{
|
||||
Id: "lv",
|
||||
Name: "Latvian",
|
||||
},
|
||||
{
|
||||
Id: "lt",
|
||||
Name: "Lithuanian",
|
||||
},
|
||||
{
|
||||
Id: "lb",
|
||||
Name: "Luxembourgish",
|
||||
},
|
||||
{
|
||||
Id: "mk",
|
||||
Name: "Macedonian",
|
||||
},
|
||||
{
|
||||
Id: "mg",
|
||||
Name: "Malagasy",
|
||||
},
|
||||
{
|
||||
Id: "ms",
|
||||
Name: "Malay",
|
||||
},
|
||||
{
|
||||
Id: "dv",
|
||||
Name: "Maldivian",
|
||||
},
|
||||
{
|
||||
Id: "mt",
|
||||
Name: "Maltese",
|
||||
},
|
||||
{
|
||||
Id: "gv",
|
||||
Name: "Manx Gaelic",
|
||||
},
|
||||
{
|
||||
Id: "mi",
|
||||
Name: "Maori",
|
||||
},
|
||||
{
|
||||
Id: "mh",
|
||||
Name: "Marshallese",
|
||||
},
|
||||
{
|
||||
Id: "men",
|
||||
Name: "Mende",
|
||||
},
|
||||
{
|
||||
Id: "mn",
|
||||
Name: "Mongolian",
|
||||
},
|
||||
{
|
||||
Id: "mfe",
|
||||
Name: "Morisyen",
|
||||
},
|
||||
{
|
||||
Id: "ne",
|
||||
Name: "Nepali",
|
||||
},
|
||||
{
|
||||
Id: "niu",
|
||||
Name: "Niuean",
|
||||
},
|
||||
{
|
||||
Id: "no",
|
||||
Name: "Norwegian",
|
||||
},
|
||||
{
|
||||
Id: "ny",
|
||||
Name: "Nyanja",
|
||||
},
|
||||
{
|
||||
Id: "ur",
|
||||
Name: "Pakistani",
|
||||
},
|
||||
{
|
||||
Id: "pau",
|
||||
Name: "Palauan",
|
||||
},
|
||||
{
|
||||
Id: "pa",
|
||||
Name: "Panjabi",
|
||||
},
|
||||
{
|
||||
Id: "pap",
|
||||
Name: "Papiamentu",
|
||||
},
|
||||
{
|
||||
Id: "ps",
|
||||
Name: "Pashto",
|
||||
},
|
||||
{
|
||||
Id: "fa",
|
||||
Name: "Persian",
|
||||
},
|
||||
{
|
||||
Id: "pis",
|
||||
Name: "Pijin",
|
||||
},
|
||||
{
|
||||
Id: "pl",
|
||||
Name: "Polish",
|
||||
},
|
||||
{
|
||||
Id: "pt",
|
||||
Name: "Portuguese",
|
||||
},
|
||||
{
|
||||
Id: "pot",
|
||||
Name: "Potawatomi",
|
||||
},
|
||||
{
|
||||
Id: "qu",
|
||||
Name: "Quechua",
|
||||
},
|
||||
{
|
||||
Id: "ro",
|
||||
Name: "Romanian",
|
||||
},
|
||||
{
|
||||
Id: "ru",
|
||||
Name: "Russian",
|
||||
},
|
||||
{
|
||||
Id: "sm",
|
||||
Name: "Samoan",
|
||||
},
|
||||
{
|
||||
Id: "sg",
|
||||
Name: "Sango",
|
||||
},
|
||||
{
|
||||
Id: "gd",
|
||||
Name: "Scots Gaelic",
|
||||
},
|
||||
{
|
||||
Id: "sr",
|
||||
Name: "Serbian",
|
||||
},
|
||||
{
|
||||
Id: "sn",
|
||||
Name: "Shona",
|
||||
},
|
||||
{
|
||||
Id: "si",
|
||||
Name: "Sinhala",
|
||||
},
|
||||
{
|
||||
Id: "sk",
|
||||
Name: "Slovak",
|
||||
},
|
||||
{
|
||||
Id: "sl",
|
||||
Name: "Slovenian",
|
||||
},
|
||||
{
|
||||
Id: "so",
|
||||
Name: "Somali",
|
||||
},
|
||||
{
|
||||
Id: "st",
|
||||
Name: "Sotho Southern",
|
||||
},
|
||||
{
|
||||
Id: "es",
|
||||
Name: "Spanish",
|
||||
},
|
||||
{
|
||||
Id: "srn",
|
||||
Name: "Sranan Tongo",
|
||||
},
|
||||
{
|
||||
Id: "sw",
|
||||
Name: "Swahili",
|
||||
},
|
||||
{
|
||||
Id: "sv",
|
||||
Name: "Swedish",
|
||||
},
|
||||
{
|
||||
Id: "syc",
|
||||
Name: "Syriac (Aramic)",
|
||||
},
|
||||
{
|
||||
Id: "tl",
|
||||
Name: "Tagalog",
|
||||
},
|
||||
{
|
||||
Id: "tg",
|
||||
Name: "Tajik",
|
||||
},
|
||||
{
|
||||
Id: "tmh",
|
||||
Name: "Tamashek (Tuareg)",
|
||||
},
|
||||
{
|
||||
Id: "ta",
|
||||
Name: "Tamil",
|
||||
},
|
||||
{
|
||||
Id: "te",
|
||||
Name: "Telugu",
|
||||
},
|
||||
{
|
||||
Id: "tet",
|
||||
Name: "Tetum",
|
||||
},
|
||||
{
|
||||
Id: "th",
|
||||
Name: "Thai",
|
||||
},
|
||||
{
|
||||
Id: "bo",
|
||||
Name: "Tibetan",
|
||||
},
|
||||
{
|
||||
Id: "ti",
|
||||
Name: "Tigrinya",
|
||||
},
|
||||
{
|
||||
Id: "tpi",
|
||||
Name: "Tok Pisin",
|
||||
},
|
||||
{
|
||||
Id: "tkl",
|
||||
Name: "Tokelauan",
|
||||
},
|
||||
{
|
||||
Id: "to",
|
||||
Name: "Tongan",
|
||||
},
|
||||
{
|
||||
Id: "tn",
|
||||
Name: "Tswana",
|
||||
},
|
||||
{
|
||||
Id: "tr",
|
||||
Name: "Turkish",
|
||||
},
|
||||
{
|
||||
Id: "tk",
|
||||
Name: "Turkmen",
|
||||
},
|
||||
{
|
||||
Id: "tvl",
|
||||
Name: "Tuvaluan",
|
||||
},
|
||||
{
|
||||
Id: "uk",
|
||||
Name: "Ukrainian",
|
||||
},
|
||||
{
|
||||
Id: "ppk",
|
||||
Name: "Uma",
|
||||
},
|
||||
{
|
||||
Id: "uz",
|
||||
Name: "Uzbek",
|
||||
},
|
||||
{
|
||||
Id: "vi",
|
||||
Name: "Vietnamese",
|
||||
},
|
||||
{
|
||||
Id: "wls",
|
||||
Name: "Wallisian",
|
||||
},
|
||||
{
|
||||
Id: "cy",
|
||||
Name: "Welsh",
|
||||
},
|
||||
{
|
||||
Id: "wo",
|
||||
Name: "Wolof",
|
||||
},
|
||||
{
|
||||
Id: "xh",
|
||||
Name: "Xhosa",
|
||||
},
|
||||
{
|
||||
Id: "yi",
|
||||
Name: "Yiddish",
|
||||
},
|
||||
{
|
||||
Id: "zu",
|
||||
Name: "Zulu",
|
||||
},
|
||||
}
|
||||
return ListData
|
||||
}
|
@@ -1,112 +0,0 @@
|
||||
package utils
|
||||
|
||||
func LangListReverso(listType string) []List {
|
||||
// IDs got from original simplytranslate-web and trial and error. Usually first three letters of language.
|
||||
ListData := []List{
|
||||
{
|
||||
Id: "ar",
|
||||
Name: "Arabic",
|
||||
},
|
||||
{
|
||||
Id: "zh",
|
||||
Name: "Chinese (Simplified)",
|
||||
},
|
||||
{
|
||||
Id: "cs",
|
||||
Name: "Czech",
|
||||
},
|
||||
{
|
||||
Id: "da",
|
||||
Name: "Danish",
|
||||
},
|
||||
{
|
||||
Id: "nl",
|
||||
Name: "Dutch",
|
||||
},
|
||||
{
|
||||
Id: "en",
|
||||
Name: "English",
|
||||
},
|
||||
{
|
||||
Id: "fr",
|
||||
Name: "French",
|
||||
},
|
||||
{
|
||||
Id: "de",
|
||||
Name: "German",
|
||||
},
|
||||
{
|
||||
Id: "el",
|
||||
Name: "Greek",
|
||||
},
|
||||
{
|
||||
Id: "he",
|
||||
Name: "Hebrew",
|
||||
},
|
||||
{
|
||||
Id: "hi",
|
||||
Name: "Hindi",
|
||||
},
|
||||
{
|
||||
Id: "hu",
|
||||
Name: "Hungarian",
|
||||
},
|
||||
{
|
||||
Id: "it",
|
||||
Name: "Italian",
|
||||
},
|
||||
{
|
||||
Id: "ja",
|
||||
Name: "Japanese",
|
||||
},
|
||||
{
|
||||
Id: "ko",
|
||||
Name: "Korean",
|
||||
},
|
||||
{
|
||||
Id: "per",
|
||||
Name: "Persian",
|
||||
},
|
||||
{
|
||||
Id: "pl",
|
||||
Name: "Polish",
|
||||
},
|
||||
{
|
||||
Id: "pt",
|
||||
Name: "Portugese",
|
||||
},
|
||||
{
|
||||
Id: "ro",
|
||||
Name: "Romanian",
|
||||
},
|
||||
{
|
||||
Id: "ru",
|
||||
Name: "Russian",
|
||||
},
|
||||
{
|
||||
Id: "sk",
|
||||
Name: "Slovak",
|
||||
},
|
||||
{
|
||||
Id: "es",
|
||||
Name: "Spanish",
|
||||
},
|
||||
{
|
||||
Id: "sv",
|
||||
Name: "Swedish",
|
||||
},
|
||||
{
|
||||
Id: "th",
|
||||
Name: "Thai",
|
||||
},
|
||||
{
|
||||
Id: "tr",
|
||||
Name: "Turkish",
|
||||
},
|
||||
{
|
||||
Id: "uk",
|
||||
Name: "Ukrainian",
|
||||
},
|
||||
}
|
||||
return ListData
|
||||
}
|
@@ -1,246 +0,0 @@
|
||||
package utils
|
||||
|
||||
func LangListWatson(listType string) []List {
|
||||
// IDs got from https://www.loc.gov/standards/iso639-2/php/code_list.php and tested to make sure they work. Exceptions fr-CA zh-CN/TW
|
||||
ListData := []List{
|
||||
{
|
||||
Id: "ar",
|
||||
Name: "Arabic",
|
||||
},
|
||||
{
|
||||
Id: "ba",
|
||||
Name: "Basque",
|
||||
},
|
||||
{
|
||||
Id: "bn",
|
||||
Name: "Bengali",
|
||||
},
|
||||
{
|
||||
Id: "bs",
|
||||
Name: "Bosnian",
|
||||
},
|
||||
{
|
||||
Id: "bg",
|
||||
Name: "Bulgarian",
|
||||
},
|
||||
{
|
||||
Id: "ca",
|
||||
Name: "Catalan",
|
||||
},
|
||||
{
|
||||
Id: "zh",
|
||||
Name: "Chinese (Simplified)",
|
||||
},
|
||||
{
|
||||
Id: "zh-TW",
|
||||
Name: "Chinese (Traditional)",
|
||||
},
|
||||
{
|
||||
Id: "hr",
|
||||
Name: "Croatian",
|
||||
},
|
||||
{
|
||||
Id: "cs",
|
||||
Name: "Czech",
|
||||
},
|
||||
{
|
||||
Id: "da",
|
||||
Name: "Danish",
|
||||
},
|
||||
{
|
||||
Id: "nl",
|
||||
Name: "Dutch",
|
||||
},
|
||||
{
|
||||
Id: "en",
|
||||
Name: "English",
|
||||
},
|
||||
{
|
||||
Id: "et",
|
||||
Name: "Estonian",
|
||||
},
|
||||
{
|
||||
Id: "fi",
|
||||
Name: "Finnish",
|
||||
},
|
||||
{
|
||||
Id: "fr",
|
||||
Name: "French",
|
||||
},
|
||||
{
|
||||
Id: "fr-CA",
|
||||
Name: "Canadian French",
|
||||
},
|
||||
{
|
||||
Id: "de",
|
||||
Name: "German",
|
||||
},
|
||||
{
|
||||
Id: "el",
|
||||
Name: "Greek",
|
||||
},
|
||||
{
|
||||
Id: "gu",
|
||||
Name: "Gujarati",
|
||||
},
|
||||
{
|
||||
Id: "he",
|
||||
Name: "Hebrew",
|
||||
},
|
||||
{
|
||||
Id: "hi",
|
||||
Name: "Hindi",
|
||||
},
|
||||
{
|
||||
Id: "hu",
|
||||
Name: "Hungarian",
|
||||
},
|
||||
{
|
||||
Id: "id",
|
||||
Name: "Indonesian",
|
||||
},
|
||||
{
|
||||
Id: "ga",
|
||||
Name: "Irish",
|
||||
},
|
||||
{
|
||||
Id: "it",
|
||||
Name: "Italian",
|
||||
},
|
||||
{
|
||||
Id: "ja",
|
||||
Name: "Japanese",
|
||||
},
|
||||
{
|
||||
Id: "kn",
|
||||
Name: "Kannada",
|
||||
},
|
||||
{
|
||||
Id: "ko",
|
||||
Name: "Korean",
|
||||
},
|
||||
{
|
||||
Id: "lv",
|
||||
Name: "Latvian",
|
||||
},
|
||||
{
|
||||
Id: "lt",
|
||||
Name: "Lithuanian",
|
||||
},
|
||||
{
|
||||
Id: "ms",
|
||||
Name: "Malay",
|
||||
},
|
||||
{
|
||||
Id: "ml",
|
||||
Name: "Malayalam",
|
||||
},
|
||||
{
|
||||
Id: "mt",
|
||||
Name: "Maltese",
|
||||
},
|
||||
{
|
||||
Id: "mr",
|
||||
Name: "Marathi",
|
||||
},
|
||||
{
|
||||
Id: "cnr",
|
||||
Name: "Montenegrin",
|
||||
},
|
||||
{
|
||||
Id: "ne",
|
||||
Name: "Nepali",
|
||||
},
|
||||
{
|
||||
Id: "nb",
|
||||
Name: "Norwegian",
|
||||
},
|
||||
{
|
||||
Id: "pl",
|
||||
Name: "Polish",
|
||||
},
|
||||
{
|
||||
Id: "pt",
|
||||
Name: "Portugese",
|
||||
},
|
||||
{
|
||||
Id: "pa",
|
||||
Name: "Punjabi",
|
||||
},
|
||||
{
|
||||
Id: "ro",
|
||||
Name: "Romanian",
|
||||
},
|
||||
{
|
||||
Id: "ru",
|
||||
Name: "Russian",
|
||||
},
|
||||
{
|
||||
Id: "sr",
|
||||
Name: "Serbian",
|
||||
},
|
||||
{
|
||||
Id: "si",
|
||||
Name: "Sinhalese",
|
||||
},
|
||||
{
|
||||
Id: "sk",
|
||||
Name: "Slovak",
|
||||
},
|
||||
{
|
||||
Id: "sl",
|
||||
Name: "Slovenian",
|
||||
},
|
||||
{
|
||||
Id: "es",
|
||||
Name: "Spanish",
|
||||
},
|
||||
{
|
||||
Id: "sv",
|
||||
Name: "Swedish",
|
||||
},
|
||||
{
|
||||
Id: "ta",
|
||||
Name: "Tamil",
|
||||
},
|
||||
{
|
||||
Id: "te",
|
||||
Name: "Telugu",
|
||||
},
|
||||
{
|
||||
Id: "th",
|
||||
Name: "Thai",
|
||||
},
|
||||
{
|
||||
Id: "tr",
|
||||
Name: "Turkish",
|
||||
},
|
||||
{
|
||||
Id: "uk",
|
||||
Name: "Ukrainian",
|
||||
},
|
||||
{
|
||||
Id: "ur",
|
||||
Name: "Urdu",
|
||||
},
|
||||
{
|
||||
Id: "vi",
|
||||
Name: "Vietnamese",
|
||||
},
|
||||
{
|
||||
Id: "cy",
|
||||
Name: "Welsh",
|
||||
},
|
||||
}
|
||||
var ListD []List
|
||||
if listType == "sl" {
|
||||
auto := []List{{
|
||||
Id: "auto",
|
||||
Name: "Detect Language",
|
||||
}}
|
||||
ListD = append(append([]List{}, auto...), ListData...)
|
||||
} else {
|
||||
ListD = ListData
|
||||
}
|
||||
return ListD
|
||||
}
|
@@ -1,415 +0,0 @@
|
||||
package utils
|
||||
|
||||
func LangListYandex(listType string) []List {
|
||||
ListData := []List{
|
||||
{
|
||||
Id: "af",
|
||||
Name: "Afrikaans",
|
||||
},
|
||||
{
|
||||
Id: "sq",
|
||||
Name: "Albanian",
|
||||
},
|
||||
{
|
||||
Id: "am",
|
||||
Name: "Amharic",
|
||||
},
|
||||
{
|
||||
Id: "ar",
|
||||
Name: "Arabic",
|
||||
},
|
||||
{
|
||||
Id: "hy",
|
||||
Name: "Armenian",
|
||||
},
|
||||
{
|
||||
Id: "az",
|
||||
Name: "Azerbaijani",
|
||||
},
|
||||
{
|
||||
Id: "ba",
|
||||
Name: "Bashkir",
|
||||
},
|
||||
{
|
||||
Id: "eu",
|
||||
Name: "Basque",
|
||||
},
|
||||
{
|
||||
Id: "be",
|
||||
Name: "Belarusian",
|
||||
},
|
||||
{
|
||||
Id: "bn",
|
||||
Name: "Bengali",
|
||||
},
|
||||
{
|
||||
Id: "bs",
|
||||
Name: "Bosnian",
|
||||
},
|
||||
{
|
||||
Id: "bg",
|
||||
Name: "Bulgarian",
|
||||
},
|
||||
{
|
||||
Id: "my",
|
||||
Name: "Burmese",
|
||||
},
|
||||
{
|
||||
Id: "ca",
|
||||
Name: "Catalan",
|
||||
},
|
||||
{
|
||||
Id: "ceb",
|
||||
Name: "Cebuano",
|
||||
},
|
||||
{
|
||||
Id: "zh",
|
||||
Name: "Chinese",
|
||||
},
|
||||
{
|
||||
Id: "cv",
|
||||
Name: "Chuvash",
|
||||
},
|
||||
{
|
||||
Id: "hr",
|
||||
Name: "Croatian",
|
||||
},
|
||||
{
|
||||
Id: "cs",
|
||||
Name: "Czech",
|
||||
},
|
||||
{
|
||||
Id: "da",
|
||||
Name: "Danish",
|
||||
},
|
||||
{
|
||||
Id: "nl",
|
||||
Name: "Dutch",
|
||||
},
|
||||
{
|
||||
Id: "sjn",
|
||||
Name: "Elvish (Sindarin)",
|
||||
},
|
||||
{
|
||||
Id: "emj",
|
||||
Name: "Emoji",
|
||||
},
|
||||
{
|
||||
Id: "en",
|
||||
Name: "English",
|
||||
},
|
||||
{
|
||||
Id: "eo",
|
||||
Name: "Esperanto",
|
||||
},
|
||||
{
|
||||
Id: "et",
|
||||
Name: "Estonian",
|
||||
},
|
||||
{
|
||||
Id: "fi",
|
||||
Name: "Finnish",
|
||||
},
|
||||
{
|
||||
Id: "fr",
|
||||
Name: "French",
|
||||
},
|
||||
{
|
||||
Id: "gl",
|
||||
Name: "Galician",
|
||||
},
|
||||
{
|
||||
Id: "ka",
|
||||
Name: "Georgian",
|
||||
},
|
||||
{
|
||||
Id: "de",
|
||||
Name: "German",
|
||||
},
|
||||
{
|
||||
Id: "el",
|
||||
Name: "Greek",
|
||||
},
|
||||
{
|
||||
Id: "gu",
|
||||
Name: "Gujarati",
|
||||
},
|
||||
{
|
||||
Id: "ht",
|
||||
Name: "Haitian",
|
||||
},
|
||||
{
|
||||
Id: "he",
|
||||
Name: "Hebrew",
|
||||
},
|
||||
{
|
||||
Id: "mrj",
|
||||
Name: "Hill Mari",
|
||||
},
|
||||
{
|
||||
Id: "hi",
|
||||
Name: "Hindi",
|
||||
},
|
||||
{
|
||||
Id: "hu",
|
||||
Name: "Hungarian",
|
||||
},
|
||||
{
|
||||
Id: "is",
|
||||
Name: "Icelandic",
|
||||
},
|
||||
{
|
||||
Id: "id",
|
||||
Name: "Indonesian",
|
||||
},
|
||||
{
|
||||
Id: "ga",
|
||||
Name: "Irish",
|
||||
},
|
||||
{
|
||||
Id: "it",
|
||||
Name: "Italian",
|
||||
},
|
||||
{
|
||||
Id: "ja",
|
||||
Name: "Japanese",
|
||||
},
|
||||
{
|
||||
Id: "jv",
|
||||
Name: "Javanese",
|
||||
},
|
||||
{
|
||||
Id: "kn",
|
||||
Name: "Kannada",
|
||||
},
|
||||
{
|
||||
Id: "kazlat",
|
||||
Name: "Kazakh (Latin)",
|
||||
},
|
||||
{
|
||||
Id: "kk",
|
||||
Name: "Kazakh",
|
||||
},
|
||||
{
|
||||
Id: "km",
|
||||
Name: "Khmer",
|
||||
},
|
||||
{
|
||||
Id: "ko",
|
||||
Name: "Korean",
|
||||
},
|
||||
{
|
||||
Id: "ky",
|
||||
Name: "Kyrgyz",
|
||||
},
|
||||
{
|
||||
Id: "lo",
|
||||
Name: "Lao",
|
||||
},
|
||||
{
|
||||
Id: "la",
|
||||
Name: "Latin",
|
||||
},
|
||||
{
|
||||
Id: "lv",
|
||||
Name: "Latvian",
|
||||
},
|
||||
{
|
||||
Id: "lt",
|
||||
Name: "Lithuanian",
|
||||
},
|
||||
{
|
||||
Id: "lb",
|
||||
Name: "Luxembourgish",
|
||||
},
|
||||
{
|
||||
Id: "mk",
|
||||
Name: "Macedonian",
|
||||
},
|
||||
{
|
||||
Id: "mg",
|
||||
Name: "Malagasy",
|
||||
},
|
||||
{
|
||||
Id: "ms",
|
||||
Name: "Malay",
|
||||
},
|
||||
{
|
||||
Id: "ml",
|
||||
Name: "Malayalam",
|
||||
},
|
||||
{
|
||||
Id: "mt",
|
||||
Name: "Maltese",
|
||||
},
|
||||
{
|
||||
Id: "mi",
|
||||
Name: "Maori",
|
||||
},
|
||||
{
|
||||
Id: "mr",
|
||||
Name: "Marathi",
|
||||
},
|
||||
{
|
||||
Id: "mhr",
|
||||
Name: "Mari",
|
||||
},
|
||||
{
|
||||
Id: "mn",
|
||||
Name: "Mongolian",
|
||||
},
|
||||
{
|
||||
Id: "ne",
|
||||
Name: "Nepali",
|
||||
},
|
||||
{
|
||||
Id: "no",
|
||||
Name: "Norwegian",
|
||||
},
|
||||
{
|
||||
Id: "pap",
|
||||
Name: "Papiamento",
|
||||
},
|
||||
{
|
||||
Id: "fa",
|
||||
Name: "Persian",
|
||||
},
|
||||
{
|
||||
Id: "pl",
|
||||
Name: "Polish",
|
||||
},
|
||||
{
|
||||
Id: "pt-BR",
|
||||
Name: "Portuguese (Brazilian)",
|
||||
},
|
||||
{
|
||||
Id: "pt",
|
||||
Name: "Portuguese",
|
||||
},
|
||||
{
|
||||
Id: "pa",
|
||||
Name: "Punjabi",
|
||||
},
|
||||
{
|
||||
Id: "ro",
|
||||
Name: "Romanian",
|
||||
},
|
||||
{
|
||||
Id: "ru",
|
||||
Name: "Russian",
|
||||
},
|
||||
{
|
||||
Id: "gd",
|
||||
Name: "Scottish Gaelic",
|
||||
},
|
||||
{
|
||||
Id: "sr-Latn",
|
||||
Name: "Serbian (Latin)",
|
||||
},
|
||||
{
|
||||
Id: "sr",
|
||||
Name: "Serbian",
|
||||
},
|
||||
{
|
||||
Id: "si",
|
||||
Name: "Sinhalese",
|
||||
},
|
||||
{
|
||||
Id: "sk",
|
||||
Name: "Slovak",
|
||||
},
|
||||
{
|
||||
Id: "sl",
|
||||
Name: "Slovenian",
|
||||
},
|
||||
{
|
||||
Id: "es",
|
||||
Name: "Spanish",
|
||||
},
|
||||
{
|
||||
Id: "su",
|
||||
Name: "Sundanese",
|
||||
},
|
||||
{
|
||||
Id: "sw",
|
||||
Name: "Swahili",
|
||||
},
|
||||
{
|
||||
Id: "sv",
|
||||
Name: "Swedish",
|
||||
},
|
||||
{
|
||||
Id: "tl",
|
||||
Name: "Tagalog",
|
||||
},
|
||||
{
|
||||
Id: "tg",
|
||||
Name: "Tajik",
|
||||
},
|
||||
{
|
||||
Id: "ta",
|
||||
Name: "Tamil",
|
||||
},
|
||||
{
|
||||
Id: "tt",
|
||||
Name: "Tatar",
|
||||
},
|
||||
{
|
||||
Id: "te",
|
||||
Name: "Telugu",
|
||||
},
|
||||
{
|
||||
Id: "th",
|
||||
Name: "Thai",
|
||||
},
|
||||
{
|
||||
Id: "tr",
|
||||
Name: "Turkish",
|
||||
},
|
||||
{
|
||||
Id: "udm",
|
||||
Name: "Udmurt",
|
||||
},
|
||||
{
|
||||
Id: "uk",
|
||||
Name: "Ukrainian",
|
||||
},
|
||||
{
|
||||
Id: "ur",
|
||||
Name: "Urdu",
|
||||
},
|
||||
{
|
||||
Id: "uzbcyr",
|
||||
Name: "Uzbek (Cyrillic)",
|
||||
},
|
||||
{
|
||||
Id: "uz",
|
||||
Name: "Uzbek",
|
||||
},
|
||||
{
|
||||
Id: "vi",
|
||||
Name: "Vietnamese",
|
||||
},
|
||||
{
|
||||
Id: "cy",
|
||||
Name: "Welsh",
|
||||
},
|
||||
{
|
||||
Id: "xh",
|
||||
Name: "Xhosa",
|
||||
},
|
||||
{
|
||||
Id: "sah",
|
||||
Name: "Yakut",
|
||||
},
|
||||
{
|
||||
Id: "yi",
|
||||
Name: "Yiddish",
|
||||
},
|
||||
{
|
||||
Id: "zu",
|
||||
Name: "Zulu",
|
||||
},
|
||||
}
|
||||
return ListData
|
||||
}
|
103
utils/main.go
103
utils/main.go
@@ -1,103 +0,0 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
)
|
||||
|
||||
type List struct {
|
||||
Name string
|
||||
Id string
|
||||
}
|
||||
type LangOut struct {
|
||||
Engine string `json:"engine"`
|
||||
AutoDetect string `json:"detected"`
|
||||
OutputText string `json:"translated-text"`
|
||||
SourceLang string `json:"source_language"`
|
||||
TargetLang string `json:"target_language"`
|
||||
}
|
||||
|
||||
func EnvTrueNoExist(env string) bool {
|
||||
if _, ok := os.LookupEnv(env); ok == false || os.Getenv(env) == "true" {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func LangList(engine string, listType string) ([]List, error) {
|
||||
var data []List
|
||||
if listType != "sl" && listType != "tl" {
|
||||
return []List{}, errors.New("list type invalid: either give tl for target languages or sl for source languages.")
|
||||
}
|
||||
if engine == "google" && EnvTrueNoExist("MOZHI_GOOGLE_ENABLED") {
|
||||
data = LangListGoogle(listType)
|
||||
} else if engine == "libre" && EnvTrueNoExist("MOZHI_LIBRETRANSLATE_ENABLED") {
|
||||
if EnvTrueNoExist("MOZHI_LIBRETRANSLATE_URL") {
|
||||
return []List{}, errors.New("Please set MOZHI_LIBRETRANSLATE_URL if you want to use libretranslate. Example: MOZHI_LIBRETRANSLATE_URL=https://lt.psf.lt")
|
||||
}
|
||||
data = LangListLibreTranslate(listType)
|
||||
} else if engine == "reverso" && EnvTrueNoExist("MOZHI_REVERSO_ENABLED") {
|
||||
data = LangListReverso(listType)
|
||||
} else if engine == "deepl" && EnvTrueNoExist("MOZHI_DEEPL_ENABLED") {
|
||||
data = LangListDeepl(listType)
|
||||
} else if engine == "watson" && EnvTrueNoExist("MOZHI_WATSON_ENABLED") {
|
||||
data = LangListWatson(listType)
|
||||
} else if engine == "yandex" && EnvTrueNoExist("MOZHI_YANDEX_ENABLED") {
|
||||
data = LangListYandex(listType)
|
||||
} else if engine == "mymemory" && EnvTrueNoExist("MOZHI_MYMEMORY_ENABLED") {
|
||||
data = LangListMyMemory(listType)
|
||||
} else if engine == "duckduckgo" && EnvTrueNoExist("MOZHI_DUCKDUCKGO_ENABLED") {
|
||||
data = LangListDuckDuckGo(listType)
|
||||
} else {
|
||||
return []List{}, errors.New("Engine does not exist or has been disabled.")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// General function to translate stuff so there is no need for a huge if-block everywhere
|
||||
func Translate(engine string, to string, from string, text string) (LangOut, error) {
|
||||
var err error
|
||||
var data LangOut
|
||||
if engine == "google" && EnvTrueNoExist("MOZHI_GOOGLE_ENABLED") {
|
||||
data, err = TranslateGoogle(to, from, text)
|
||||
} else if engine == "libre" && EnvTrueNoExist("MOZHI_LIBRETRANSLATE_ENABLED") {
|
||||
if os.Getenv("MOZHI_LIBRETRANSLATE_URL") == "" {
|
||||
return LangOut{}, errors.New("Please set MOZHI_LIBRETRANSLATE_URL if you want to use libretranslate. Example: MOZHI_LIBRETRANSLATE_URL=https://lt.psf.lt")
|
||||
}
|
||||
data, err = TranslateLibreTranslate(to, from, text)
|
||||
} else if engine == "reverso" && EnvTrueNoExist("MOZHI_REVERSO_ENABLED") {
|
||||
data, err = TranslateReverso(to, from, text)
|
||||
} else if engine == "deepl" && EnvTrueNoExist("MOZHI_DEEPL_ENABLED") {
|
||||
data, err = TranslateDeepl(to, from, text)
|
||||
} else if engine == "watson" && EnvTrueNoExist("MOZHI_WATSON_ENABLED") {
|
||||
data, err = TranslateWatson(to, from, text)
|
||||
} else if engine == "yandex" && EnvTrueNoExist("MOZHI_YANDEX_ENABLED") {
|
||||
data, err = TranslateYandex(to, from, text)
|
||||
} else if engine == "mymemory" && EnvTrueNoExist("MOZHI_MYMEMORY_ENABLED") {
|
||||
data, err = TranslateMyMemory(to, from, text)
|
||||
} else if engine == "duckduckgo" && EnvTrueNoExist("MOZHI_DUCKDUCKGO_ENABLED") {
|
||||
data, err = TranslateDuckDuckGo(to, from, text)
|
||||
} else {
|
||||
return LangOut{}, errors.New("Engine does not exist or has been disabled.")
|
||||
}
|
||||
if err != nil {
|
||||
return LangOut{}, err
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func TTS(engine string, lang string, text string) ([]byte, error) {
|
||||
var err error
|
||||
var data []byte
|
||||
if engine == "google" && EnvTrueNoExist("MOZHI_GOOGLE_ENABLED") {
|
||||
data, err = TTSGoogle(lang, text)
|
||||
} else if engine == "reverso" && EnvTrueNoExist("MOZHI_REVERSO_ENABLED") {
|
||||
data, err = TTSReverso(lang, text)
|
||||
} else {
|
||||
return []byte(""), errors.New("Engine does not exist and/or doesn't support TTS and/or has been disabled.")
|
||||
}
|
||||
if err != nil {
|
||||
return []byte(""), err
|
||||
}
|
||||
return data, nil
|
||||
}
|
@@ -1,72 +0,0 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/tidwall/gjson"
|
||||
)
|
||||
|
||||
func PostRequest(url string, data []byte) gjson.Result {
|
||||
bodyReader := bytes.NewReader(data)
|
||||
r, err := http.NewRequest(http.MethodPost, url, bodyReader)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT")
|
||||
if !ok {
|
||||
UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
|
||||
}
|
||||
// r.Header.Set("Accept", "application/vnd.github.v3+json")
|
||||
r.Header.Set("Content-Type", "application/json")
|
||||
r.Header.Set("User-Agent", UserAgent)
|
||||
|
||||
client := &http.Client{}
|
||||
res, err := client.Do(r)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
defer res.Body.Close()
|
||||
|
||||
body, err := io.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
jsonified := gjson.Parse(string(body))
|
||||
|
||||
return jsonified
|
||||
}
|
||||
|
||||
func GetRequest(url string) gjson.Result {
|
||||
r, err := http.NewRequest("GET", url, nil)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT")
|
||||
if !ok {
|
||||
UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
|
||||
}
|
||||
// r.Header.Set("Content-Type", "application/json")
|
||||
r.Header.Set("User-Agent", UserAgent)
|
||||
|
||||
client := &http.Client{}
|
||||
res, err := client.Do(r)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
defer res.Body.Close()
|
||||
|
||||
body, err := io.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
jsonified := gjson.Parse(string(body))
|
||||
|
||||
return jsonified
|
||||
}
|
@@ -1,87 +0,0 @@
|
||||
package utils
|
||||
|
||||
//import (
|
||||
// "github.com/gocolly/colly"
|
||||
// "os"
|
||||
// "strings"
|
||||
//)
|
||||
//
|
||||
//type List struct {
|
||||
// Name string
|
||||
// Id string
|
||||
//}
|
||||
//// To get new language lists for google yandex and libertranslate.
|
||||
//func LangListGoogle(listType string) []List {
|
||||
// UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT")
|
||||
// if !ok {
|
||||
// UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
|
||||
// }
|
||||
// sc := colly.NewCollector(colly.AllowedDomains("translate.google.com"), colly.UserAgent(UserAgent))
|
||||
// var ListData []List
|
||||
// sc.OnHTML("div.root-container", func(e *colly.HTMLElement) {
|
||||
// e.ForEach("div.language-item", func(i int, el *colly.HTMLElement) {
|
||||
// var ListInfo List
|
||||
// ListInfo.Name = el.ChildText("a")
|
||||
// if listType == "tl" {
|
||||
// ListInfo.Id = strings.TrimPrefix(strings.TrimSuffix(el.ChildAttr("a", "href"), "&hl=en-US"), "./m?sl=en&tl=")
|
||||
// } else {
|
||||
// ListInfo.Id = strings.TrimPrefix(strings.TrimSuffix(el.ChildAttr("a", "href"), "&tl=en&hl=en-US"), "./m?sl=")
|
||||
// }
|
||||
// ListData = append(ListData, ListInfo)
|
||||
// })
|
||||
// })
|
||||
// url := "https://translate.google.com/m?sl=en&tl=en&hl=en-US&mui=" + listType
|
||||
// sc.Visit(url)
|
||||
// return ListData
|
||||
//}
|
||||
//func LangListLibreTranslate(listType string) []List {
|
||||
// // TODO: Make it configurable
|
||||
// libreTranslateOut := PostRequest("https://translate.argosopentech.com/languages", []byte(""))
|
||||
// gjsonArr := libreTranslateOut.Array()
|
||||
// var ListData []List
|
||||
// for _, r := range gjsonArr {
|
||||
// code := r.Get("code").String()
|
||||
// name := r.Get("name").String()
|
||||
//
|
||||
// ListData = append(ListData, List{Id: code, Name: name})
|
||||
// }
|
||||
// if listType == "sl" {
|
||||
// auto := List{
|
||||
// Id: "auto",
|
||||
// Name: "Detect Language",
|
||||
// }
|
||||
// ListData = append(ListData, auto)
|
||||
// }
|
||||
// return ListData
|
||||
//}
|
||||
//func LangListYandex(listType string) []List {
|
||||
// UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT")
|
||||
// if !ok {
|
||||
// UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
|
||||
// }
|
||||
// sc := colly.NewCollector(colly.AllowedDomains("localhost:8000"), colly.UserAgent(UserAgent))
|
||||
// var ListData []List
|
||||
// sc.OnHTML("table.langs", func(e *colly.HTMLElement) {
|
||||
// if listType == "sl" {
|
||||
// e.ForEach("select[name='from'] option", func(i int, el *colly.HTMLElement) {
|
||||
// var ListInfo List
|
||||
// ListInfo.Name = el.Text
|
||||
// ListInfo.Id = el.Attr("value")
|
||||
// ListData = append(ListData, ListInfo)
|
||||
// })
|
||||
// } else {
|
||||
// e.ForEach("select[name='to'] option", func(i int, el *colly.HTMLElement) {
|
||||
// var ListInfo List
|
||||
// ListInfo.Name = el.Text
|
||||
// ListInfo.Id = el.Attr("value")
|
||||
// ListData = append(ListData, ListInfo)
|
||||
// })
|
||||
//
|
||||
// }
|
||||
// })
|
||||
// // Static version of translate.yandex.net nojs/mobile version
|
||||
// url := "http://localhost:8000/index.html"
|
||||
// sc.Visit(url)
|
||||
// return ListData
|
||||
//}
|
||||
//
|
155
utils/tts.go
155
utils/tts.go
@@ -1,155 +0,0 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/base64"
|
||||
"os"
|
||||
|
||||
"github.com/carlmjohnson/requests"
|
||||
"github.com/google/go-querystring/query"
|
||||
)
|
||||
|
||||
type ReversoTTS struct {
|
||||
Id string
|
||||
Voice string
|
||||
}
|
||||
|
||||
func TTSGoogle(lang string, text string) ([]byte, error) {
|
||||
type Options struct {
|
||||
Lang string `url:"tl"`
|
||||
Text string `url:"q"`
|
||||
Client string `url:"client"`
|
||||
}
|
||||
opt := Options{lang, text, "tw-ob"}
|
||||
v, _ := query.Values(opt)
|
||||
|
||||
var file string
|
||||
url := "https://translate.google.com/translate_tts?" + v.Encode()
|
||||
err := requests.
|
||||
URL(url).
|
||||
ToString(&file).
|
||||
Fetch(context.Background())
|
||||
if err != nil {
|
||||
return []byte(""), err
|
||||
}
|
||||
return []byte(file), nil
|
||||
}
|
||||
|
||||
func TTSReverso(lang string, text string) ([]byte, error) {
|
||||
TTSData := []ReversoTTS{
|
||||
// http://voice.reverso.net/RestPronunciation.svc/v1/output=json/GetAvailableVoices with randomized deduplication
|
||||
{
|
||||
Id: "ar",
|
||||
Voice: "Mehdi22k",
|
||||
},
|
||||
{
|
||||
Id: "zh",
|
||||
Voice: "Lulu22k",
|
||||
},
|
||||
{
|
||||
Id: "cz",
|
||||
Voice: "Eliska22k",
|
||||
},
|
||||
{
|
||||
Id: "dk",
|
||||
Voice: "Mette22k",
|
||||
},
|
||||
{
|
||||
Id: "nl",
|
||||
Voice: "Daan22k",
|
||||
},
|
||||
{
|
||||
Id: "en",
|
||||
Voice: "Will22k",
|
||||
},
|
||||
{
|
||||
Id: "fr",
|
||||
Voice: "Margaux22k",
|
||||
},
|
||||
{
|
||||
Id: "de",
|
||||
Voice: "Andreas22k",
|
||||
},
|
||||
{
|
||||
Id: "gr",
|
||||
Voice: "Dimitris22k",
|
||||
},
|
||||
{
|
||||
Id: "heb",
|
||||
Voice: "he-IL-Asaf",
|
||||
},
|
||||
{
|
||||
Id: "it",
|
||||
Voice: "Chiara22k",
|
||||
},
|
||||
{
|
||||
Id: "jp",
|
||||
Voice: "Sakura22k",
|
||||
},
|
||||
{
|
||||
Id: "kr",
|
||||
Voice: "Minji22k",
|
||||
},
|
||||
{
|
||||
Id: "pl",
|
||||
Voice: "Monika22k",
|
||||
},
|
||||
{
|
||||
Id: "pt",
|
||||
Voice: "Celia22k",
|
||||
},
|
||||
{
|
||||
Id: "ro",
|
||||
Voice: "ro-RO-Andrei",
|
||||
},
|
||||
{
|
||||
Id: "ru",
|
||||
Voice: "Alyona22k",
|
||||
},
|
||||
{
|
||||
Id: "es",
|
||||
Voice: "Antonio22k",
|
||||
},
|
||||
{
|
||||
Id: "se",
|
||||
Voice: "Erik22k",
|
||||
},
|
||||
{
|
||||
Id: "tr",
|
||||
Voice: "Ipek22k",
|
||||
},
|
||||
}
|
||||
// https://voice.reverso.net/RestPronunciation.svc/v1/output=json/GetVoiceStream/voiceName=Lulu22k?voiceSpeed=80&inputText=6K%20V6aqM Base64 input text
|
||||
text2 := base64.StdEncoding.EncodeToString([]byte(text))
|
||||
var voice string
|
||||
for _, s := range TTSData {
|
||||
if s.Id == lang {
|
||||
voice = s.Voice
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
type Options struct {
|
||||
VoiceSpeed int `url:"voiceSpeed"`
|
||||
Text string `url:"inputText"`
|
||||
}
|
||||
opt := Options{80, text2}
|
||||
v, _ := query.Values(opt)
|
||||
|
||||
var file string
|
||||
url := "https://voice.reverso.net/RestPronunciation.svc/v1/output=json/GetVoiceStream/voiceName=" + voice + "?" + v.Encode()
|
||||
|
||||
UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT")
|
||||
if !ok {
|
||||
UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
|
||||
}
|
||||
err := requests.
|
||||
URL(url).
|
||||
ToString(&file).
|
||||
UserAgent(UserAgent).
|
||||
Fetch(context.Background())
|
||||
if err != nil {
|
||||
return []byte(""), err
|
||||
}
|
||||
return []byte(file), nil
|
||||
}
|
@@ -1,19 +0,0 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"runtime/debug"
|
||||
)
|
||||
|
||||
var Branch = "Alpha"
|
||||
|
||||
// Version returns the git commit hash of the current build. Taken from https://git.vern.cc/pjals/bestofbot.
|
||||
func Version() string {
|
||||
if info, ok := debug.ReadBuildInfo(); ok {
|
||||
for _, setting := range info.Settings {
|
||||
if setting.Key == "vcs.revision" {
|
||||
return setting.Value[:8]
|
||||
}
|
||||
}
|
||||
}
|
||||
return "unknown, please build with Go 1.13+ or use Git"
|
||||
}
|
Reference in New Issue
Block a user