Changeset 15 in code for trunk/engines/iciba.go
- Timestamp:
- Aug 30, 2023, 11:57:46 AM (22 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/engines/iciba.go
r12 r15 17 17 func (_ *ICIBA) DisplayName() string { return "iCIBA" } 18 18 19 var icibaLanguages = []Language{19 var icibaLanguages = Language{ 20 20 // ICIBA does have an API, but they return Chinese names. 21 21 // For languages already present in Google translate, the English … … 26 26 // due to conflict between ISO-639 table and Chinese label 27 27 // one "//" means on iciba but not on google 28 {Name: "Achinese", Code: "ace"}, //29 {Name: "Achuar-Shiwiar", Code: "acu"}, //30 {Name: "Afrikaans", Code: "af"},31 {Name: "Aguaruna", Code: "agr"}, //32 {Name: "Akawaio", Code: "ake"}, //33 {Name: "Albanian", Code: "sq"},34 {Name: "Amharic", Code: "am"},35 {Name: "Arabic", Code: "ar"},36 {Name: "Armenian", Code: "hy"},37 {Name: "Azerbaijani", Code: "az"},38 {Name: "Barasana-Eduria", Code: "bsn"}, //39 {Name: "Bashkir", Code: "ba"},//40 {Name: "Basque", Code: "eu"},41 {Name: "Belarusian", Code: "be"},42 {Name: "Bemba", Code: "bem"}, //43 {Name: "Bengali", Code: "bn"},44 {Name: "Berber", Code: "ber"},//45 {Name: "Bislama", Code: "bi"}, //46 {Name: "Bosnian", Code: "bs"},47 {Name: "Breton", Code: "br"}, //48 {Name: "Bulgarian", Code: "bg"},49 {Name: "Cabécar", Code: "cjp"}, //50 {Name: "Cantonese", Code: "yue"},51 {Name: "Catalan", Code: "ca"},52 {Name: "Cebuano", Code: "ceb"},53 {Name: "Chamorro", Code: "cha"}, //54 {Name: "Cherokee", Code: "chr"}, //55 {Name: "Chichewa", Code: "ny"},56 {Name: "Chinese (Simplified)", Code: "zh"},// "zh-cn" on Google57 {Name: "Chinese (Traditional)", Code: "cht"}, // "zh-tw" on Google58 {Name: "Chuvash", Code: "cv"},59 {Name: "Coptic", Code: "cop"}, //60 {Name: "Corsican", Code: "co"},61 {Name: "Croatian", Code: "hr"},62 {Name: "Czech", Code: "cs"},63 {Name: "Danish", Code: "da"},64 {Name: "Dhivehi", Code: "dv"}, //65 {Name: "Dinka", Code: "dik"},//66 {Name: "Dutch", Code: "nl"},67 {Name: "Dzongkha", Code: "dz"}, //68 {Name: "English", Code: "en"},69 {Name: "Esperanto", Code: "eo"},70 {Name: "Estonian", Code: "et"},71 {Name: "Ewe", Code: "ee"},//72 {Name: "Faroese", Code: "fo"},//73 {Name: "Fijian", Code: "fj"},//74 {Name: "Filipino", Code: "fil"}, // "tl" on Google75 {Name: "Finnish", Code: "fi"},76 {Name: "French", Code: "fr"},77 {Name: "Frisian", Code: "fy"},78 {Name: "Galela", Code: "gbi"}, //79 {Name: "Galician", Code: "gl"},80 {Name: "Ganda", Code: "lg"}, //81 {Name: "Georgian", Code: "jy"}, // "ka" on Google82 {Name: "German", Code: "de"},83 {Name: "Greek", Code: "el"},84 {Name: "Guerrero Amuzgo", Code: "amu"}, //85 {Name: "Gujarati", Code: "gu"},86 {Name: "Haitian Creole", Code: "ht"},87 {Name: "Hausa", Code: "ha"},88 {Name: "Hawaiian", Code: "haw"},89 {Name: "Hebrew", Code: "he"}, // "iw" on Google90 {Name: "Hindi", Code: "hi"},91 {Name: "Hmong Daw", Code: "mww"}, //92 {Name: "Hmong", Code: "hmn"}, // not in iciba93 {Name: "Hungarian", Code: "hu"},94 {Name: "Icelandic", Code: "is"},95 {Name: "Igbo", Code: "ig"},96 {Name: "Indonesian", Code: "id"},97 {Name: "Irish", Code: "ga"},98 {Name: "Italian", Code: "it"},99 {Name: "Jacalteco", Code: "jac"}, //100 {Name: "Japanese", Code: "ja"},101 {Name: "Javanese", Code: "jv"}, // "jw" on Google102 {Name: "Kabyle", Code: "kab"},//103 {Name: "Kannada", Code: "kn"},104 {Name: "Kaqchikel", Code: "cak"},//105 {Name: "Kazakh", Code: "ka"}, // Google only has "kk"106 {Name: "Kazakh (Cyrillic)", Code: "kk"}, // Google has it as just "Kazakh"107 {Name: "Kekchí", Code: "kek"},//108 {Name: "Khmer", Code: "km"},109 {Name: "Kinyarwanda", Code: "rw"},110 {Name: "Kongo", Code: "kg"}, //111 {Name: "Korean", Code: "ko"},112 {Name: "Kurdish (Kurmanji)", Code: "ku"},113 {Name: "Kyrgyz", Code: "ky"},114 {Name: "Lao", Code: "lo"},115 {Name: "Latin", Code: "la"},116 {Name: "Latvian", Code: "lv"},117 {Name: "Lingala", Code: "ln"}, //118 {Name: "Lithuanian", Code: "lt"},119 {Name: "Lukpa", Code: "dop"}, //120 {Name: "Luxembourgish", Code: "lb"},121 {Name: "Macedonian", Code: "mk"},122 {Name: "Malagasy", Code: "mg"},123 {Name: "Malay", Code: "ms"},124 {Name: "Malayalam", Code: "ml"},125 {Name: "Maltese", Code: "mt"},126 {Name: "Mam", Code: "mam"},//127 {Name: "Manx", Code: "gv"}, //128 {Name: "Maori", Code: "mi"},129 {Name: "Marathi", Code: "mr"},130 {Name: "Mari (Eastern)", Code: "mhr"}, //131 {Name: "Mari (Western)", Code: "mrj"}, //132 {Name: "Mongolian", Code: "mn"},133 {Name: "Montenegrin", Code: "me"}, //134 {Name: "Myanmar (Burmese)", Code: "my"},135 {Name: "Nahuatl", Code: "nhg"}, //136 {Name: "Ndyuka", Code: "djk"}, //137 {Name: "Nepali", Code: "ne"},138 {Name: "Norwegian", Code: "no"},139 {Name: "Odia (Oriya)", Code: "or"},140 {Name: "Ojibwa", Code: "ojb"},141 {Name: "Oromo", Code: "om"},//142 {Name: "Ossetian", Code: "os"},//143 {Name: "Paite", Code: "pck"}, //144 {Name: "Papiamento", Code: "pap"}, //145 {Name: "Pashto", Code: "ps"},146 {Name: "Persian", Code: "fa"},147 {Name: "Polish", Code: "pl"},148 {Name: "Portuguese", Code: "pt"},149 {Name: "Potawatomi", Code: "pot"}, //150 {Name: "Punjabi", Code: "pa"},151 {Name: "Querétaro Otomi", Code: "otq"}, //152 {Name: "Quiché", Code: "quc"}, //153 {Name: "Quichua", Code: "quw"}, //154 {Name: "Quiotepec Chinantec", Code: "chq"}, //155 {Name: "Romani", Code: "rmn"}, //156 {Name: "Romanian", Code: "ro"},157 {Name: "Rundi", Code: "rn"}, //158 {Name: "Russian", Code: "ru"},159 {Name: "Samoan", Code: "sm"},160 {Name: "Sango", Code: "sg"}, //161 {Name: "Scots Gaelic", Code: "gd"},162 {Name: "Serbian", Code: "sr"},163 {Name: "Seselwa Creole French", Code: "crs"}, //164 {Name: "Sesotho", Code: "st"},165 {Name: "Shona", Code: "sn"},166 {Name: "Shuar", Code: "jiv"}, //167 {Name: "Sindhi", Code: "sd"},168 {Name: "Sinhala", Code: "si"},169 {Name: "Slovak", Code: "sk"},170 {Name: "Slovenian", Code: "sl"},171 {Name: "Somali", Code: "so"},172 {Name: "Spanish", Code: "es"},173 {Name: "Sundanese", Code: "su"},174 {Name: "Swahili", Code: "sw"},175 {Name: "Swedish", Code: "sv"},176 {Name: "Syriac", Code: "syc"}, // considered "extinct" but is somehow supported177 {Name: "Tachelhit", Code: "shi"}, //178 {Name: "Tahitian", Code: "ty"},//179 {Name: "Tajik", Code: "tg"},180 {Name: "Tamil", Code: "ta"},181 {Name: "Tatar", Code: "tt"},182 {Name: "Telugu", Code: "te"},183 {Name: "Tetum", Code: "tet"}, //184 {Name: "Thai", Code: "th"},185 {Name: "Tigre", Code: "ti"},//186 {Name: "Tiwi", Code: "tw"},//187 {Name: "Tok Pisin", Code: "tpi"}, //188 {Name: "Tonga", Code: "to"},//189 {Name: "Tsonga", Code: "ts"},190 {Name: "Tswana", Code: "tn"}, //191 {Name: "Turkish", Code: "tr"},192 {Name: "Turkmen", Code: "tk"},193 {Name: "Udmurt", Code: "udm"}, //194 {Name: "Ukrainian", Code: "uk"},195 {Name: "Uma", Code: "ppk"}, //196 {Name: "Urdu", Code: "ur"},197 {Name: "Uspanteco", Code: "usp"}, //198 {Name: "Uyghur", Code: "uy"},// "ug" on Google199 {Name: "Uzbek", Code: "uz"},200 {Name: "Venda", Code: "ve"}, //201 {Name: "Vietnamese", Code: "vi"},202 {Name: "Waray", Code: "war"}, //203 {Name: "Welsh", Code: "cy"},204 {Name: "Wolaitta", Code: "wal"}, //205 {Name: "Wolof", Code: "wol"},206 {Name: "Xhosa", Code: "xh"},207 {Name: "Yiddish", Code: "yi"},208 {Name: "Yoruba", Code: "yo"},209 {Name: "Yucatán Maya", Code: "yua"}, //210 {Name: "Zarma", Code: "dje"}, //211 {Name: "Zulu", Code: "zu"},28 "ace": "Achinese", // 29 "acu": "Achuar-Shiwiar", // 30 "af": "Afrikaans", 31 "agr": "Aguaruna", // 32 "ake": "Akawaio", // 33 "sq": "Albanian", 34 "am": "Amharic", 35 "ar": "Arabic", 36 "hy": "Armenian", 37 "az": "Azerbaijani", 38 "bsn": "Barasana-Eduria", // 39 "ba": "Bashkir", // 40 "eu": "Basque", 41 "be": "Belarusian", 42 "bem": "Bemba", // 43 "bn": "Bengali", 44 "ber": "Berber", // 45 "bi": "Bislama", // 46 "bs": "Bosnian", 47 "br": "Breton", // 48 "bg": "Bulgarian", 49 "cjp": "Cabécar", // 50 "yue": "Cantonese", 51 "ca": "Catalan", 52 "ceb": "Cebuano", 53 "cha": "Chamorro", // 54 "chr": "Cherokee", // 55 "ny": "Chichewa", 56 "zh": "Chinese (Simplified)", // "zh-cn" on Google 57 "cht": "Chinese (Traditional)", // "zh-tw" on Google 58 "cv": "Chuvash", 59 "cop": "Coptic", // 60 "co": "Corsican", 61 "hr": "Croatian", 62 "cs": "Czech", 63 "da": "Danish", 64 "dv": "Dhivehi", // 65 "dik": "Dinka", // 66 "nl": "Dutch", 67 "dz": "Dzongkha", // 68 "en": "English", 69 "eo": "Esperanto", 70 "et": "Estonian", 71 "ee": "Ewe", // 72 "fo": "Faroese", // 73 "fj": "Fijian", // 74 "fil": "Filipino", // "tl" on Google 75 "fi": "Finnish", 76 "fr": "French", 77 "fy": "Frisian", 78 "gbi": "Galela", // 79 "gl": "Galician", 80 "lg": "Ganda", // 81 "jy": "Georgian", // "ka" on Google 82 "de": "German", 83 "el": "Greek", 84 "amu": "Guerrero Amuzgo", // 85 "gu": "Gujarati", 86 "ht": "Haitian Creole", 87 "ha": "Hausa", 88 "haw": "Hawaiian", 89 "he": "Hebrew", // "iw" on Google 90 "hi": "Hindi", 91 "mww": "Hmong Daw", // 92 "hmn": "Hmong", // not in iciba 93 "hu": "Hungarian", 94 "is": "Icelandic", 95 "ig": "Igbo", 96 "id": "Indonesian", 97 "ga": "Irish", 98 "it": "Italian", 99 "jac": "Jacalteco", // 100 "ja": "Japanese", 101 "jv": "Javanese", // "jw" on Google 102 "kab": "Kabyle", // 103 "kn": "Kannada", 104 "cak": "Kaqchikel", // 105 "ka": "Kazakh", // Google only has "kk" 106 "kk": "Kazakh (Cyrillic)", // Google has it as just "Kazakh" 107 "kek": "Kekchí", // 108 "km": "Khmer", 109 "rw": "Kinyarwanda", 110 "kg": "Kongo", // 111 "ko": "Korean", 112 "ku": "Kurdish (Kurmanji)", 113 "ky": "Kyrgyz", 114 "lo": "Lao", 115 "la": "Latin", 116 "lv": "Latvian", 117 "ln": "Lingala", // 118 "lt": "Lithuanian", 119 "dop": "Lukpa", // 120 "lb": "Luxembourgish", 121 "mk": "Macedonian", 122 "mg": "Malagasy", 123 "ms": "Malay", 124 "ml": "Malayalam", 125 "mt": "Maltese", 126 "mam": "Mam", // 127 "gv": "Manx", // 128 "mi": "Maori", 129 "mr": "Marathi", 130 "mhr": "Mari (Eastern)", // 131 "mrj": "Mari (Western)", // 132 "mn": "Mongolian", 133 "me": "Montenegrin", // 134 "my": "Myanmar (Burmese)", 135 "nhg": "Nahuatl", // 136 "djk": "Ndyuka", // 137 "ne": "Nepali", 138 "no": "Norwegian", 139 "or": "Odia (Oriya)", 140 "ojb": "Ojibwa", 141 "om": "Oromo", // 142 "os": "Ossetian", // 143 "pck": "Paite", // 144 "pap": "Papiamento", // 145 "ps": "Pashto", 146 "fa": "Persian", 147 "pl": "Polish", 148 "pt": "Portuguese", 149 "pot": "Potawatomi", // 150 "pa": "Punjabi", 151 "otq": "Querétaro Otomi", // 152 "quc": "Quiché", // 153 "quw": "Quichua", // 154 "chq": "Quiotepec Chinantec", // 155 "rmn": "Romani", // 156 "ro": "Romanian", 157 "rn": "Rundi", // 158 "ru": "Russian", 159 "sm": "Samoan", 160 "sg": "Sango", // 161 "gd": "Scots Gaelic", 162 "sr": "Serbian", 163 "crs": "Seselwa Creole French", // 164 "st": "Sesotho", 165 "sn": "Shona", 166 "jiv": "Shuar", // 167 "sd": "Sindhi", 168 "si": "Sinhala", 169 "sk": "Slovak", 170 "sl": "Slovenian", 171 "so": "Somali", 172 "es": "Spanish", 173 "su": "Sundanese", 174 "sw": "Swahili", 175 "sv": "Swedish", 176 "syc": "Syriac", // considered "extinct" but is somehow supported 177 "shi": "Tachelhit", // 178 "ty": "Tahitian", // 179 "tg": "Tajik", 180 "ta": "Tamil", 181 "tt": "Tatar", 182 "te": "Telugu", 183 "tet": "Tetum", // 184 "th": "Thai", 185 "ti": "Tigre", // 186 "tw": "Tiwi", // 187 "tpi": "Tok Pisin", // 188 "to": "Tonga", // 189 "ts": "Tsonga", 190 "tn": "Tswana", // 191 "tr": "Turkish", 192 "tk": "Turkmen", 193 "udm": "Udmurt", // 194 "uk": "Ukrainian", 195 "ppk": "Uma", // 196 "ur": "Urdu", 197 "usp": "Uspanteco", // 198 "uy": "Uyghur", // "ug" on Google 199 "uz": "Uzbek", 200 "ve": "Venda", // 201 "vi": "Vietnamese", 202 "war": "Waray", // 203 "cy": "Welsh", 204 "wal": "Wolaitta", // 205 "wol": "Wolof", 206 "xh": "Xhosa", 207 "yi": "Yiddish", 208 "yo": "Yoruba", 209 "yua": "Yucatán Maya", // 210 "dje": "Zarma", // 211 "zu": "Zulu", 212 212 } 213 213 214 func (_ *ICIBA) SourceLanguages() ([]Language, error) { return icibaLanguages, nil } 215 216 func (_ *ICIBA) TargetLanguages() ([]Language, error) { return icibaLanguages, nil } 217 218 func (_ *ICIBA) SupportsAutodetect() bool { return true } 219 220 func (_ *ICIBA) DetectLanguage(text string) (Language, error) { return Language{}, nil } 214 func (_ *ICIBA) SourceLanguages() (Language, error) { return icibaLanguages, nil } 215 216 func (_ *ICIBA) TargetLanguages() (Language, error) { return icibaLanguages, nil } 217 218 func (_ *ICIBA) DetectLanguage(text string) (string, error) { return "", nil } 221 219 222 220 type icibaTranslateResponse struct { … … 227 225 } 228 226 229 func (_ *ICIBA) Translate(text string, from, to Language) (TranslationResult, error) {227 func (_ *ICIBA) Translate(text string, from, to string) (TranslationResult, error) { 230 228 requestURL, err := url.Parse("https://ifanyi.iciba.com/index.php") 231 229 … … 248 246 249 247 formData := url.Values{} 250 formData.Add("from", from .Code)251 formData.Add("to", to .Code)248 formData.Add("from", from) 249 formData.Add("to", to) 252 250 formData.Add("q", text) 253 251 … … 270 268 } 271 269 272 var sourceLanguage Language273 274 for _, lang:= range icibaLanguages {275 if lang.Code == responseJSON.Content.From {276 sourceLanguage = lang270 var sourceLanguage string 271 272 for code := range icibaLanguages { 273 if code == responseJSON.Content.From { 274 sourceLanguage = code 277 275 break 278 276 } 279 277 } 280 278 281 if sourceLanguage == (Language{}){282 return TranslationResult{ SourceLanguage: from,TranslatedText: responseJSON.Content.Out},279 if sourceLanguage == "" { 280 return TranslationResult{TranslatedText: responseJSON.Content.Out}, 283 281 fmt.Errorf("language code \"%s\" is not in iCIBA's language list", responseJSON.Content.From) 284 282 }
Note:
See TracChangeset
for help on using the changeset viewer.