separate langlists to different files

This commit is contained in:
Arya 2023-07-22 19:50:21 +05:30
parent e1c4c4c863
commit 2179e682d4
Signed by: arya
GPG Key ID: 842D12BDA50DF120
9 changed files with 1634 additions and 526 deletions

View File

@ -49,6 +49,26 @@ var translateCmd = &cobra.Command{
} else { } else {
fmt.Println(utils.TranslateWatson(dest, source, query)) fmt.Println(utils.TranslateWatson(dest, source, query))
} }
} else if engine == "yandex" {
if langlist == "sl" {
langList := utils.LangListYandex(langlist)
for _, num := range langList {
fmt.Println("List{")
fmt.Println(`Id: "`+num.Id+`",`)
fmt.Println(`Name: "`+num.Name+`",`)
fmt.Println("},")
}
} else if langlist == "tl" {
langList := utils.LangListYandex(langlist)
for _, num := range langList {
fmt.Println("List{")
fmt.Println(`Id: "`+num.Id+`",`)
fmt.Println(`Name: "`+num.Name+`",`)
fmt.Println("},")
}
} else {
fmt.Println(utils.TranslateYandex(dest, source, query))
}
} else if engine == "all" { } else if engine == "all" {
fmt.Println(utils.TranslateAll(dest, source, query)) fmt.Println(utils.TranslateAll(dest, source, query))
} else { } else {

133
utils/langlist-deepl.go Normal file
View File

@ -0,0 +1,133 @@
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.
var ListData = []List{
List{
Id: "bg",
Name: "Bulgarian",
},
List{
Id: "zh",
Name: "Chinese (Simplified)",
},
List{
Id: "cs",
Name: "Czech",
},
List{
Id: "da",
Name: "Danish",
},
List{
Id: "nl",
Name: "Dutch",
},
List{
Id: "en",
Name: "English",
},
List{
Id: "et",
Name: "Estonian",
},
List{
Id: "fi",
Name: "Finnish",
},
List{
Id: "fr",
Name: "French",
},
List{
Id: "de",
Name: "Germany",
},
List{
Id: "el",
Name: "Greek",
},
List{
Id: "hu",
Name: "Hungarian",
},
List{
Id: "id",
Name: "Indonesian",
},
List{
Id: "it",
Name: "Italian",
},
List{
Id: "ja",
Name: "Japanese",
},
List{
Id: "ko",
Name: "Korean",
},
List{
Id: "lv",
Name: "Latvian",
},
List{
Id: "lt",
Name: "Lithuanian",
},
List{
Id: "nb",
Name: "Norwegian",
},
List{
Id: "pl",
Name: "Polish",
},
List{
Id: "pt",
Name: "Portugese",
},
List{
Id: "ro",
Name: "Romanian",
},
List{
Id: "ru",
Name: "Russian",
},
List{
Id: "sk",
Name: "Slovak",
},
List{
Id: "sl",
Name: "Slovenian",
},
List{
Id: "es",
Name: "Spanish",
},
List{
Id: "sv",
Name: "Swedish",
},
List{
Id: "tr",
Name: "Turkish",
},
List{
Id: "uk",
Name: "Ukrainian",
},
}
if listType == "sl" {
auto := List{
Id: "auto",
Name: "Detect Language",
}
ListData = append(ListData, auto)
}
return ListData
}

547
utils/langlist-google.go Normal file
View File

@ -0,0 +1,547 @@
package utils
func LangListGoogle(listType string) []List {
// IDs got from original simplytranslate-web and trial and error. Usually first three letters of language.
var ListData = []List{
List{
Id: "af",
Name: "Afrikaans",
},
List{
Id: "sq",
Name: "Albanian",
},
List{
Id: "am",
Name: "Amharic",
},
List{
Id: "ar",
Name: "Arabic",
},
List{
Id: "hy",
Name: "Armenian",
},
List{
Id: "as",
Name: "Assamese",
},
List{
Id: "ay",
Name: "Aymara",
},
List{
Id: "az",
Name: "Azerbaijani",
},
List{
Id: "bm",
Name: "Bambara",
},
List{
Id: "eu",
Name: "Basque",
},
List{
Id: "be",
Name: "Belarusian",
},
List{
Id: "bn",
Name: "Bengali",
},
List{
Id: "bho",
Name: "Bhojpuri",
},
List{
Id: "bs",
Name: "Bosnian",
},
List{
Id: "bg",
Name: "Bulgarian",
},
List{
Id: "ca",
Name: "Catalan",
},
List{
Id: "ceb",
Name: "Cebuano",
},
List{
Id: "ny",
Name: "Chichewa",
},
List{
Id: "zh",
Name: "Chinese (Simplified)",
},
List{
Id: "zh-TW",
Name: "Chinese (Traditional)",
},
List{
Id: "co",
Name: "Corsican",
},
List{
Id: "hr",
Name: "Croatian",
},
List{
Id: "cs",
Name: "Czech",
},
List{
Id: "da",
Name: "Danish",
},
List{
Id: "dv",
Name: "Dhivehi",
},
List{
Id: "doi",
Name: "Dogri",
},
List{
Id: "nl",
Name: "Dutch",
},
List{
Id: "en",
Name: "English",
},
List{
Id: "eo",
Name: "Esperanto",
},
List{
Id: "et",
Name: "Estonian",
},
List{
Id: "ee",
Name: "Ewe",
},
List{
Id: "tl",
Name: "Filipino",
},
List{
Id: "fi",
Name: "Finnish",
},
List{
Id: "fr",
Name: "French",
},
List{
Id: "fy",
Name: "Frisian",
},
List{
Id: "gl",
Name: "Galician",
},
List{
Id: "ka",
Name: "Georgian",
},
List{
Id: "de",
Name: "German",
},
List{
Id: "el",
Name: "Greek",
},
List{
Id: "gn",
Name: "Guarani",
},
List{
Id: "gu",
Name: "Gujarati",
},
List{
Id: "ht",
Name: "Haitian Creole",
},
List{
Id: "ha",
Name: "Hausa",
},
List{
Id: "haw",
Name: "Hawaiian",
},
List{
Id: "iw",
Name: "Hebrew",
},
List{
Id: "hi",
Name: "Hindi",
},
List{
Id: "hmn",
Name: "Hmong",
},
List{
Id: "hu",
Name: "Hungarian",
},
List{
Id: "is",
Name: "Icelandic",
},
List{
Id: "ig",
Name: "Igbo",
},
List{
Id: "ilo",
Name: "Ilocano",
},
List{
Id: "id",
Name: "Indonesian",
},
List{
Id: "ga",
Name: "Irish",
},
List{
Id: "it",
Name: "Italian",
},
List{
Id: "ja",
Name: "Japanese",
},
List{
Id: "jw",
Name: "Javanese",
},
List{
Id: "kn",
Name: "Kannada",
},
List{
Id: "kk",
Name: "Kazakh",
},
List{
Id: "km",
Name: "Khmer",
},
List{
Id: "rw",
Name: "Kinyarwanda",
},
List{
Id: "gom",
Name: "Konkani",
},
List{
Id: "ko",
Name: "Korean",
},
List{
Id: "kri",
Name: "Krio",
},
List{
Id: "ku",
Name: "Kurdish (Kurmanji)",
},
List{
Id: "ckb",
Name: "Kurdish (Sorani)",
},
List{
Id: "ky",
Name: "Kyrgyz",
},
List{
Id: "lo",
Name: "Lao",
},
List{
Id: "la",
Name: "Latin",
},
List{
Id: "lv",
Name: "Latvian",
},
List{
Id: "ln",
Name: "Lingala",
},
List{
Id: "lt",
Name: "Lithuanian",
},
List{
Id: "lg",
Name: "Luganda",
},
List{
Id: "lb",
Name: "Luxembourgish",
},
List{
Id: "mk",
Name: "Macedonian",
},
List{
Id: "mai",
Name: "Maithili",
},
List{
Id: "mg",
Name: "Malagasy",
},
List{
Id: "ms",
Name: "Malay",
},
List{
Id: "ml",
Name: "Malayalam",
},
List{
Id: "mt",
Name: "Maltese",
},
List{
Id: "mi",
Name: "Maori",
},
List{
Id: "mr",
Name: "Marathi",
},
List{
Id: "mni-Mtei",
Name: "Meiteilon (Manipuri)",
},
List{
Id: "lus",
Name: "Mizo",
},
List{
Id: "mn",
Name: "Mongolian",
},
List{
Id: "my",
Name: "Myanmar (Burmese)",
},
List{
Id: "ne",
Name: "Nepali",
},
List{
Id: "no",
Name: "Norwegian",
},
List{
Id: "or",
Name: "Odia (Oriya)",
},
List{
Id: "om",
Name: "Oromo",
},
List{
Id: "ps",
Name: "Pashto",
},
List{
Id: "fa",
Name: "Persian",
},
List{
Id: "pl",
Name: "Polish",
},
List{
Id: "pt",
Name: "Portuguese",
},
List{
Id: "pa",
Name: "Punjabi",
},
List{
Id: "qu",
Name: "Quechua",
},
List{
Id: "ro",
Name: "Romanian",
},
List{
Id: "ru",
Name: "Russian",
},
List{
Id: "sm",
Name: "Samoan",
},
List{
Id: "sa",
Name: "Sanskrit",
},
List{
Id: "gd",
Name: "Scots Gaelic",
},
List{
Id: "nso",
Name: "Sepedi",
},
List{
Id: "sr",
Name: "Serbian",
},
List{
Id: "st",
Name: "Sesotho",
},
List{
Id: "sn",
Name: "Shona",
},
List{
Id: "sd",
Name: "Sindhi",
},
List{
Id: "si",
Name: "Sinhala",
},
List{
Id: "sk",
Name: "Slovak",
},
List{
Id: "sl",
Name: "Slovenian",
},
List{
Id: "so",
Name: "Somali",
},
List{
Id: "es",
Name: "Spanish",
},
List{
Id: "su",
Name: "Sundanese",
},
List{
Id: "sw",
Name: "Swahili",
},
List{
Id: "sv",
Name: "Swedish",
},
List{
Id: "tg",
Name: "Tajik",
},
List{
Id: "ta",
Name: "Tamil",
},
List{
Id: "tt",
Name: "Tatar",
},
List{
Id: "te",
Name: "Telugu",
},
List{
Id: "th",
Name: "Thai",
},
List{
Id: "ti",
Name: "Tigrinya",
},
List{
Id: "ts",
Name: "Tsonga",
},
List{
Id: "tr",
Name: "Turkish",
},
List{
Id: "tk",
Name: "Turkmen",
},
List{
Id: "ak",
Name: "Twi",
},
List{
Id: "uk",
Name: "Ukrainian",
},
List{
Id: "ur",
Name: "Urdu",
},
List{
Id: "ug",
Name: "Uyghur",
},
List{
Id: "uz",
Name: "Uzbek",
},
List{
Id: "vi",
Name: "Vietnamese",
},
List{
Id: "cy",
Name: "Welsh",
},
List{
Id: "xh",
Name: "Xhosa",
},
List{
Id: "yi",
Name: "Yiddish",
},
List{
Id: "yo",
Name: "Yoruba",
},
List{
Id: "zu",
Name: "Zulu",
},
}
if listType == "sl" {
auto := List{
Id: "auto",
Name: "Detect Language",
}
ListData = append(ListData, auto)
}
return ListData
}

82
utils/langlist-libre.go Normal file
View File

@ -0,0 +1,82 @@
package utils
func LangListLibreTranslate(listType string) []List {
var ListData = []List{
List{
Id: "en",
Name: "English",
},
List{
Id: "ar",
Name: "Arabic",
},
List{
Id: "zh",
Name: "Chinese",
},
List{
Id: "fr",
Name: "French",
},
List{
Id: "de",
Name: "German",
},
List{
Id: "hi",
Name: "Hindi",
},
List{
Id: "id",
Name: "Indonesian",
},
List{
Id: "ga",
Name: "Irish",
},
List{
Id: "it",
Name: "Italian",
},
List{
Id: "ja",
Name: "Japanese",
},
List{
Id: "ko",
Name: "Korean",
},
List{
Id: "pl",
Name: "Polish",
},
List{
Id: "pt",
Name: "Portuguese",
},
List{
Id: "ru",
Name: "Russian",
},
List{
Id: "es",
Name: "Spanish",
},
List{
Id: "tr",
Name: "Turkish",
},
List{
Id: "vi",
Name: "Vietnamese",
},
}
if listType == "sl" {
auto := List{
Id: "auto",
Name: "Detect Language",
}
ListData = append(ListData, auto)
}
return ListData
}

118
utils/langlist-reverso.go Normal file
View File

@ -0,0 +1,118 @@
package utils
type List struct {
Name string
Id string
}
func LangListReverso(listType string) []List {
// IDs got from original simplytranslate-web and trial and error. Usually first three letters of language.
var ListData = []List{
List{
Id: "ar",
Name: "Arabic",
},
List{
Id: "zh",
Name: "Chinese (Simplified)",
},
List{
Id: "cs",
Name: "Czech",
},
List{
Id: "da",
Name: "Danish",
},
List{
Id: "nl",
Name: "Dutch",
},
List{
Id: "en",
Name: "English",
},
List{
Id: "fr",
Name: "French",
},
List{
Id: "de",
Name: "German",
},
List{
Id: "el",
Name: "Greek",
},
List{
Id: "he",
Name: "Hebrew",
},
List{
Id: "hi",
Name: "Hindi",
},
List{
Id: "hu",
Name: "Hungarian",
},
List{
Id: "it",
Name: "Italian",
},
List{
Id: "ja",
Name: "Japanese",
},
List{
Id: "ko",
Name: "Korean",
},
List{
Id: "per",
Name: "Persian",
},
List{
Id: "pl",
Name: "Polish",
},
List{
Id: "pt",
Name: "Portugese",
},
List{
Id: "ro",
Name: "Romanian",
},
List{
Id: "ru",
Name: "Russian",
},
List{
Id: "sk",
Name: "Slovak",
},
List{
Id: "es",
Name: "Spanish",
},
List{
Id: "sv",
Name: "Swedish",
},
List{
Id: "th",
Name: "Thai",
},
List{
Id: "tr",
Name: "Turkish",
},
List{
Id: "uk",
Name: "Ukrainian",
},
}
return ListData
}

232
utils/langlist-watson.go Normal file
View File

@ -0,0 +1,232 @@
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
var ListData = []List{
List{
Id: "ar",
Name: "Arabic",
},
List{
Id: "ba",
Name: "Basque",
},
List{
Id: "bn",
Name: "Bengali",
},
List{
Id: "bs",
Name: "Bosnian",
},
List{
Id: "bg",
Name: "Bulgarian",
},
List{
Id: "ca",
Name: "Catalan",
},
List{
Id: "zh",
Name: "Chinese (Simplified)",
},
List{
Id: "zh-TW",
Name: "Chinese (Traditional)",
},
List{
Id: "hr",
Name: "Croatian",
},
List{
Id: "cs",
Name: "Czech",
},
List{
Id: "da",
Name: "Danish",
},
List{
Id: "nl",
Name: "Dutch",
},
List{
Id: "et",
Name: "Estonian",
},
List{
Id: "fi",
Name: "Finnish",
},
List{
Id: "fr",
Name: "French",
},
List{
Id: "fr-CA",
Name: "Canadian French",
},
List{
Id: "de",
Name: "German",
},
List{
Id: "el",
Name: "Greek",
},
List{
Id: "gu",
Name: "Gujarati",
},
List{
Id: "he",
Name: "Hebrew",
},
List{
Id: "hi",
Name: "Hindi",
},
List{
Id: "hu",
Name: "Hungarian",
},
List{
Id: "id",
Name: "Indonesian",
},
List{
Id: "ga",
Name: "Irish",
},
List{
Id: "it",
Name: "Italian",
},
List{
Id: "ja",
Name: "Japanese",
},
List{
Id: "kn",
Name: "Kannada",
},
List{
Id: "ko",
Name: "Korean",
},
List{
Id: "lv",
Name: "Latvian",
},
List{
Id: "lt",
Name: "Lithuanian",
},
List{
Id: "ms",
Name: "Malay",
},
List{
Id: "ml",
Name: "Malayalam",
},
List{
Id: "mt",
Name: "Maltese",
},
List{
Id: "mr",
Name: "Marathi",
},
List{
Id: "cnr",
Name: "Montenegrin",
},
List{
Id: "ne",
Name: "Nepali",
},
List{
Id: "nb",
Name: "Norwegian",
},
List{
Id: "pl",
Name: "Polish",
},
List{
Id: "pt",
Name: "Portugese",
},
List{
Id: "pa",
Name: "Punjabi",
},
List{
Id: "ro",
Name: "Romanian",
},
List{
Id: "ru",
Name: "Russian",
},
List{
Id: "sr",
Name: "Serbian",
},
List{
Id: "si",
Name: "Sinhalese",
},
List{
Id: "sk",
Name: "Slovak",
},
List{
Id: "sl",
Name: "Slovenian",
},
List{
Id: "es",
Name: "Spanish",
},
List{
Id: "sv",
Name: "Swedish",
},
List{
Id: "ta",
Name: "Tamil",
},
List{
Id: "te",
Name: "Telugu",
},
List{
Id: "th",
Name: "Thai",
},
List{
Id: "tr",
Name: "Turkish",
},
List{
Id: "uk",
Name: "Ukrainian",
},
List{
Id: "ur",
Name: "Urdu",
},
List{
Id: "vi",
Name: "Vietnamese",
},
List{
Id: "cy",
Name: "Welsh",
},
}
return ListData
}

415
utils/langlist-yandex.go Normal file
View File

@ -0,0 +1,415 @@
package utils
func LangListYandex(listType string) []List {
var ListData = []List{
List{
Id: "af",
Name: "Afrikaans",
},
List{
Id: "sq",
Name: "Albanian",
},
List{
Id: "am",
Name: "Amharic",
},
List{
Id: "ar",
Name: "Arabic",
},
List{
Id: "hy",
Name: "Armenian",
},
List{
Id: "az",
Name: "Azerbaijani",
},
List{
Id: "ba",
Name: "Bashkir",
},
List{
Id: "eu",
Name: "Basque",
},
List{
Id: "be",
Name: "Belarusian",
},
List{
Id: "bn",
Name: "Bengali",
},
List{
Id: "bs",
Name: "Bosnian",
},
List{
Id: "bg",
Name: "Bulgarian",
},
List{
Id: "my",
Name: "Burmese",
},
List{
Id: "ca",
Name: "Catalan",
},
List{
Id: "ceb",
Name: "Cebuano",
},
List{
Id: "zh",
Name: "Chinese",
},
List{
Id: "cv",
Name: "Chuvash",
},
List{
Id: "hr",
Name: "Croatian",
},
List{
Id: "cs",
Name: "Czech",
},
List{
Id: "da",
Name: "Danish",
},
List{
Id: "nl",
Name: "Dutch",
},
List{
Id: "sjn",
Name: "Elvish (Sindarin)",
},
List{
Id: "emj",
Name: "Emoji",
},
List{
Id: "en",
Name: "English",
},
List{
Id: "eo",
Name: "Esperanto",
},
List{
Id: "et",
Name: "Estonian",
},
List{
Id: "fi",
Name: "Finnish",
},
List{
Id: "fr",
Name: "French",
},
List{
Id: "gl",
Name: "Galician",
},
List{
Id: "ka",
Name: "Georgian",
},
List{
Id: "de",
Name: "German",
},
List{
Id: "el",
Name: "Greek",
},
List{
Id: "gu",
Name: "Gujarati",
},
List{
Id: "ht",
Name: "Haitian",
},
List{
Id: "he",
Name: "Hebrew",
},
List{
Id: "mrj",
Name: "Hill Mari",
},
List{
Id: "hi",
Name: "Hindi",
},
List{
Id: "hu",
Name: "Hungarian",
},
List{
Id: "is",
Name: "Icelandic",
},
List{
Id: "id",
Name: "Indonesian",
},
List{
Id: "ga",
Name: "Irish",
},
List{
Id: "it",
Name: "Italian",
},
List{
Id: "ja",
Name: "Japanese",
},
List{
Id: "jv",
Name: "Javanese",
},
List{
Id: "kn",
Name: "Kannada",
},
List{
Id: "kazlat",
Name: "Kazakh (Latin)",
},
List{
Id: "kk",
Name: "Kazakh",
},
List{
Id: "km",
Name: "Khmer",
},
List{
Id: "ko",
Name: "Korean",
},
List{
Id: "ky",
Name: "Kyrgyz",
},
List{
Id: "lo",
Name: "Lao",
},
List{
Id: "la",
Name: "Latin",
},
List{
Id: "lv",
Name: "Latvian",
},
List{
Id: "lt",
Name: "Lithuanian",
},
List{
Id: "lb",
Name: "Luxembourgish",
},
List{
Id: "mk",
Name: "Macedonian",
},
List{
Id: "mg",
Name: "Malagasy",
},
List{
Id: "ms",
Name: "Malay",
},
List{
Id: "ml",
Name: "Malayalam",
},
List{
Id: "mt",
Name: "Maltese",
},
List{
Id: "mi",
Name: "Maori",
},
List{
Id: "mr",
Name: "Marathi",
},
List{
Id: "mhr",
Name: "Mari",
},
List{
Id: "mn",
Name: "Mongolian",
},
List{
Id: "ne",
Name: "Nepali",
},
List{
Id: "no",
Name: "Norwegian",
},
List{
Id: "pap",
Name: "Papiamento",
},
List{
Id: "fa",
Name: "Persian",
},
List{
Id: "pl",
Name: "Polish",
},
List{
Id: "pt-BR",
Name: "Portuguese (Brazilian)",
},
List{
Id: "pt",
Name: "Portuguese",
},
List{
Id: "pa",
Name: "Punjabi",
},
List{
Id: "ro",
Name: "Romanian",
},
List{
Id: "ru",
Name: "Russian",
},
List{
Id: "gd",
Name: "Scottish Gaelic",
},
List{
Id: "sr-Latn",
Name: "Serbian (Latin)",
},
List{
Id: "sr",
Name: "Serbian",
},
List{
Id: "si",
Name: "Sinhalese",
},
List{
Id: "sk",
Name: "Slovak",
},
List{
Id: "sl",
Name: "Slovenian",
},
List{
Id: "es",
Name: "Spanish",
},
List{
Id: "su",
Name: "Sundanese",
},
List{
Id: "sw",
Name: "Swahili",
},
List{
Id: "sv",
Name: "Swedish",
},
List{
Id: "tl",
Name: "Tagalog",
},
List{
Id: "tg",
Name: "Tajik",
},
List{
Id: "ta",
Name: "Tamil",
},
List{
Id: "tt",
Name: "Tatar",
},
List{
Id: "te",
Name: "Telugu",
},
List{
Id: "th",
Name: "Thai",
},
List{
Id: "tr",
Name: "Turkish",
},
List{
Id: "udm",
Name: "Udmurt",
},
List{
Id: "uk",
Name: "Ukrainian",
},
List{
Id: "ur",
Name: "Urdu",
},
List{
Id: "uzbcyr",
Name: "Uzbek (Cyrillic)",
},
List{
Id: "uz",
Name: "Uzbek",
},
List{
Id: "vi",
Name: "Vietnamese",
},
List{
Id: "cy",
Name: "Welsh",
},
List{
Id: "xh",
Name: "Xhosa",
},
List{
Id: "sah",
Name: "Yakut",
},
List{
Id: "yi",
Name: "Yiddish",
},
List{
Id: "zu",
Name: "Zulu",
},
}
return ListData
}

View File

@ -1,526 +0,0 @@
package utils
import (
"github.com/gocolly/colly"
"os"
"strings"
)
type List struct {
Name string
Id string
}
func LangListGoogle(listType string) []List {
UserAgent, ok := os.LookupEnv("SIMPLYTRANSLATE_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 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
var ListData = []List{
List{
Id: "ar",
Name: "Arabic",
},
List{
Id: "ba",
Name: "Basque",
},
List{
Id: "bn",
Name: "Bengali",
},
List{
Id: "bs",
Name: "Bosnian",
},
List{
Id: "bg",
Name: "Bulgarian",
},
List{
Id: "ca",
Name: "Catalan",
},
List{
Id: "zh",
Name: "Chinese (Simplified)",
},
List{
Id: "zh-TW",
Name: "Chinese (Traditional)",
},
List{
Id: "hr",
Name: "Croatian",
},
List{
Id: "cs",
Name: "Czech",
},
List{
Id: "da",
Name: "Danish",
},
List{
Id: "nl",
Name: "Dutch",
},
List{
Id: "et",
Name: "Estonian",
},
List{
Id: "fi",
Name: "Finnish",
},
List{
Id: "fr",
Name: "French",
},
List{
Id: "fr-CA",
Name: "Canadian French",
},
List{
Id: "de",
Name: "German",
},
List{
Id: "el",
Name: "Greek",
},
List{
Id: "gu",
Name: "Gujarati",
},
List{
Id: "he",
Name: "Hebrew",
},
List{
Id: "hi",
Name: "Hindi",
},
List{
Id: "hu",
Name: "Hungarian",
},
List{
Id: "id",
Name: "Indonesian",
},
List{
Id: "ga",
Name: "Irish",
},
List{
Id: "it",
Name: "Italian",
},
List{
Id: "ja",
Name: "Japanese",
},
List{
Id: "kn",
Name: "Kannada",
},
List{
Id: "ko",
Name: "Korean",
},
List{
Id: "lv",
Name: "Latvian",
},
List{
Id: "lt",
Name: "Lithuanian",
},
List{
Id: "ms",
Name: "Malay",
},
List{
Id: "ml",
Name: "Malayalam",
},
List{
Id: "mt",
Name: "Maltese",
},
List{
Id: "mr",
Name: "Marathi",
},
List{
Id: "cnr",
Name: "Montenegrin",
},
List{
Id: "ne",
Name: "Nepali",
},
List{
Id: "nb",
Name: "Norwegian",
},
List{
Id: "pl",
Name: "Polish",
},
List{
Id: "pt",
Name: "Portugese",
},
List{
Id: "pa",
Name: "Punjabi",
},
List{
Id: "ro",
Name: "Romanian",
},
List{
Id: "ru",
Name: "Russian",
},
List{
Id: "sr",
Name: "Serbian",
},
List{
Id: "si",
Name: "Sinhalese",
},
List{
Id: "sk",
Name: "Slovak",
},
List{
Id: "sl",
Name: "Slovenian",
},
List{
Id: "es",
Name: "Spanish",
},
List{
Id: "sv",
Name: "Swedish",
},
List{
Id: "ta",
Name: "Tamil",
},
List{
Id: "te",
Name: "Telugu",
},
List{
Id: "th",
Name: "Thai",
},
List{
Id: "tr",
Name: "Turkish",
},
List{
Id: "uk",
Name: "Ukrainian",
},
List{
Id: "ur",
Name: "Urdu",
},
List{
Id: "vi",
Name: "Vietnamese",
},
List{
Id: "cy",
Name: "Welsh",
},
}
return ListData
}
func LangListReverso(listType string) []List {
// IDs got from original simplytranslate-web and trial and error. Usually first three letters of language.
var ListData = []List{
List{
Id: "ar",
Name: "Arabic",
},
List{
Id: "zh",
Name: "Chinese (Simplified)",
},
List{
Id: "cs",
Name: "Czech",
},
List{
Id: "da",
Name: "Danish",
},
List{
Id: "nl",
Name: "Dutch",
},
List{
Id: "en",
Name: "English",
},
List{
Id: "fr",
Name: "French",
},
List{
Id: "de",
Name: "German",
},
List{
Id: "el",
Name: "Greek",
},
List{
Id: "he",
Name: "Hebrew",
},
List{
Id: "hi",
Name: "Hindi",
},
List{
Id: "hu",
Name: "Hungarian",
},
List{
Id: "it",
Name: "Italian",
},
List{
Id: "ja",
Name: "Japanese",
},
List{
Id: "ko",
Name: "Korean",
},
List{
Id: "per",
Name: "Persian",
},
List{
Id: "pl",
Name: "Polish",
},
List{
Id: "pt",
Name: "Portugese",
},
List{
Id: "ro",
Name: "Romanian",
},
List{
Id: "ru",
Name: "Russian",
},
List{
Id: "sk",
Name: "Slovak",
},
List{
Id: "es",
Name: "Spanish",
},
List{
Id: "sv",
Name: "Swedish",
},
List{
Id: "th",
Name: "Thai",
},
List{
Id: "tr",
Name: "Turkish",
},
List{
Id: "uk",
Name: "Ukrainian",
},
}
return ListData
}
func LangListDeepl(listType string) []List {
// IDs got from deepl.com/translator
// Every time you change language, the # will get updated with the lang code.
var ListData = []List{
List{
Id: "bg",
Name: "Bulgarian",
},
List{
Id: "zh",
Name: "Chinese",
},
List{
Id: "cs",
Name: "Czech",
},
List{
Id: "da",
Name: "Danish",
},
List{
Id: "nl",
Name: "Dutch",
},
List{
Id: "en",
Name: "English",
},
List{
Id: "et",
Name: "Estonian",
},
List{
Id: "fi",
Name: "Finnish",
},
List{
Id: "fr",
Name: "French",
},
List{
Id: "de",
Name: "Germany",
},
List{
Id: "el",
Name: "Greek",
},
List{
Id: "hu",
Name: "Hungarian",
},
List{
Id: "id",
Name: "Indonesian",
},
List{
Id: "it",
Name: "Italian",
},
List{
Id: "ja",
Name: "Japanese",
},
List{
Id: "ko",
Name: "Korean",
},
List{
Id: "lv",
Name: "Latvian",
},
List{
Id: "lt",
Name: "Lithuanian",
},
List{
Id: "nb",
Name: "Norwegian",
},
List{
Id: "pl",
Name: "Polish",
},
List{
Id: "pt",
Name: "Portugese",
},
List{
Id: "ro",
Name: "Romanian",
},
List{
Id: "ru",
Name: "Russian",
},
List{
Id: "sk",
Name: "Slovak",
},
List{
Id: "sl",
Name: "Slovenian",
},
List{
Id: "es",
Name: "Spanish",
},
List{
Id: "sv",
Name: "Swedish",
},
List{
Id: "tr",
Name: "Turkish",
},
List{
Id: "uk",
Name: "Ukrainian",
},
}
if listType == "sl" {
auto := List{
Id: "auto",
Name: "Detect Language",
}
ListData = append(ListData, auto)
}
return ListData
}

87
utils/retrieve.go Normal file
View File

@ -0,0 +1,87 @@
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("SIMPLYTRANSLATE_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("SIMPLYTRANSLATE_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
//}
//