Files
2026-02-21 16:45:37 +08:00

1438 lines
20 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
namespace I2.Loc
{
public static class GoogleLanguages
{
public struct LanguageCodeDef
{
public string Code;
public string GoogleCode;
}
public static Dictionary<string, LanguageCodeDef> mLanguageDef = new Dictionary<string, LanguageCodeDef>
{
{
"Afrikaans",
new LanguageCodeDef
{
Code = "af"
}
},
{
"Albanian",
new LanguageCodeDef
{
Code = "sq"
}
},
{
"Arabic",
new LanguageCodeDef
{
Code = "ar"
}
},
{
"Arabic/Algeria",
new LanguageCodeDef
{
Code = "ar-DZ",
GoogleCode = "ar"
}
},
{
"Arabic/Bahrain",
new LanguageCodeDef
{
Code = "ar-BH",
GoogleCode = "ar"
}
},
{
"Arabic/Egypt",
new LanguageCodeDef
{
Code = "ar-EG",
GoogleCode = "ar"
}
},
{
"Arabic/Iraq",
new LanguageCodeDef
{
Code = "ar-IQ",
GoogleCode = "ar"
}
},
{
"Arabic/Jordan",
new LanguageCodeDef
{
Code = "ar-JO",
GoogleCode = "ar"
}
},
{
"Arabic/Kuwait",
new LanguageCodeDef
{
Code = "ar-KW",
GoogleCode = "ar"
}
},
{
"Arabic/Lebanon",
new LanguageCodeDef
{
Code = "ar-LB",
GoogleCode = "ar"
}
},
{
"Arabic/Libya",
new LanguageCodeDef
{
Code = "ar-LY",
GoogleCode = "ar"
}
},
{
"Arabic/Morocco",
new LanguageCodeDef
{
Code = "ar-MA",
GoogleCode = "ar"
}
},
{
"Arabic/Oman",
new LanguageCodeDef
{
Code = "ar-OM",
GoogleCode = "ar"
}
},
{
"Arabic/Qatar",
new LanguageCodeDef
{
Code = "ar-QA",
GoogleCode = "ar"
}
},
{
"Arabic/Saudi Arabia",
new LanguageCodeDef
{
Code = "ar-SA",
GoogleCode = "ar"
}
},
{
"Arabic/Syria",
new LanguageCodeDef
{
Code = "ar-SY",
GoogleCode = "ar"
}
},
{
"Arabic/Tunisia",
new LanguageCodeDef
{
Code = "ar-TN",
GoogleCode = "ar"
}
},
{
"Arabic/U.A.E.",
new LanguageCodeDef
{
Code = "ar-AE",
GoogleCode = "ar"
}
},
{
"Arabic/Yemen",
new LanguageCodeDef
{
Code = "ar-YE",
GoogleCode = "ar"
}
},
{
"Armenian",
new LanguageCodeDef
{
Code = "hy"
}
},
{
"Azerbaijani",
new LanguageCodeDef
{
Code = "az"
}
},
{
"Basque",
new LanguageCodeDef
{
Code = "eu"
}
},
{
"Basque/Spain",
new LanguageCodeDef
{
Code = "eu-ES",
GoogleCode = "eu"
}
},
{
"Belarusian",
new LanguageCodeDef
{
Code = "be"
}
},
{
"Bosnian",
new LanguageCodeDef
{
Code = "bs"
}
},
{
"Bulgariaa",
new LanguageCodeDef
{
Code = "bg"
}
},
{
"Catalan",
new LanguageCodeDef
{
Code = "ca"
}
},
{
"Chinese",
new LanguageCodeDef
{
Code = "zh",
GoogleCode = "zh-CN"
}
},
{
"Chinese/Hong Kong",
new LanguageCodeDef
{
Code = "zh-HK",
GoogleCode = "zh-TW"
}
},
{
"Chinese/Macau",
new LanguageCodeDef
{
Code = "zh-MO",
GoogleCode = "zh-CN"
}
},
{
"Chinese/PRC",
new LanguageCodeDef
{
Code = "zh-CN",
GoogleCode = "zh-CN"
}
},
{
"Chinese/Simplified",
new LanguageCodeDef
{
Code = "zh-CN",
GoogleCode = "zh-CN"
}
},
{
"Chinese/Singapore",
new LanguageCodeDef
{
Code = "zh-SG",
GoogleCode = "zh-CN"
}
},
{
"Chinese/Taiwan",
new LanguageCodeDef
{
Code = "zh-TW",
GoogleCode = "zh-TW"
}
},
{
"Chinese/Traditional",
new LanguageCodeDef
{
Code = "zh-TW",
GoogleCode = "zh-TW"
}
},
{
"Croatian",
new LanguageCodeDef
{
Code = "hr"
}
},
{
"Croatian/Bosnia and Herzegovina",
new LanguageCodeDef
{
Code = "hr-BA",
GoogleCode = "hr"
}
},
{
"Czech",
new LanguageCodeDef
{
Code = "cs"
}
},
{
"Danish",
new LanguageCodeDef
{
Code = "da"
}
},
{
"Dutch",
new LanguageCodeDef
{
Code = "nl"
}
},
{
"Dutch/Belgium",
new LanguageCodeDef
{
Code = "nl-BE",
GoogleCode = "nl"
}
},
{
"Dutch/Netherlands",
new LanguageCodeDef
{
Code = "nl-NL",
GoogleCode = "nl"
}
},
{
"English",
new LanguageCodeDef
{
Code = "en"
}
},
{
"English/Australia",
new LanguageCodeDef
{
Code = "en-AU",
GoogleCode = "en"
}
},
{
"English/Belize",
new LanguageCodeDef
{
Code = "en-BZ",
GoogleCode = "en"
}
},
{
"English/Canada",
new LanguageCodeDef
{
Code = "en-CA",
GoogleCode = "en"
}
},
{
"English/Caribbean",
new LanguageCodeDef
{
Code = "en-CB",
GoogleCode = "en"
}
},
{
"English/Ireland",
new LanguageCodeDef
{
Code = "en-IE",
GoogleCode = "en"
}
},
{
"English/Jamaica",
new LanguageCodeDef
{
Code = "en-JM",
GoogleCode = "en"
}
},
{
"English/New Zealand",
new LanguageCodeDef
{
Code = "en-NZ",
GoogleCode = "en"
}
},
{
"English/Republic of the Philippines",
new LanguageCodeDef
{
Code = "en-PH",
GoogleCode = "en"
}
},
{
"English/South Africa",
new LanguageCodeDef
{
Code = "en-ZA",
GoogleCode = "en"
}
},
{
"English/Trinidad",
new LanguageCodeDef
{
Code = "en-TT",
GoogleCode = "en"
}
},
{
"English/United Kingdom",
new LanguageCodeDef
{
Code = "en-GB",
GoogleCode = "en"
}
},
{
"English/United States",
new LanguageCodeDef
{
Code = "en-US",
GoogleCode = "en"
}
},
{
"English/Zimbabwe",
new LanguageCodeDef
{
Code = "en-ZW",
GoogleCode = "en"
}
},
{
"Esperanto",
new LanguageCodeDef
{
Code = "eo"
}
},
{
"Estonian",
new LanguageCodeDef
{
Code = "et"
}
},
{
"Faeroese",
new LanguageCodeDef
{
Code = "fo"
}
},
{
"Filipino",
new LanguageCodeDef
{
Code = "tl"
}
},
{
"Finnish",
new LanguageCodeDef
{
Code = "fi"
}
},
{
"French",
new LanguageCodeDef
{
Code = "fr"
}
},
{
"French/Belgium",
new LanguageCodeDef
{
Code = "fr-BE",
GoogleCode = "fr"
}
},
{
"French/Canada",
new LanguageCodeDef
{
Code = "fr-CA",
GoogleCode = "fr"
}
},
{
"French/France",
new LanguageCodeDef
{
Code = "fr-FR",
GoogleCode = "fr"
}
},
{
"French/Luxembourg",
new LanguageCodeDef
{
Code = "fr-LU",
GoogleCode = "fr"
}
},
{
"French/Principality of Monaco",
new LanguageCodeDef
{
Code = "fr-MC",
GoogleCode = "fr"
}
},
{
"French/Switzerland",
new LanguageCodeDef
{
Code = "fr-CH",
GoogleCode = "fr"
}
},
{
"Galician",
new LanguageCodeDef
{
Code = "gl"
}
},
{
"Galician/Spain",
new LanguageCodeDef
{
Code = "gl-ES",
GoogleCode = "gl"
}
},
{
"Georgian",
new LanguageCodeDef
{
Code = "ka"
}
},
{
"German",
new LanguageCodeDef
{
Code = "de"
}
},
{
"German/Austria",
new LanguageCodeDef
{
Code = "de-AT",
GoogleCode = "de"
}
},
{
"German/Germany",
new LanguageCodeDef
{
Code = "de-DE",
GoogleCode = "de"
}
},
{
"German/Liechtenstein",
new LanguageCodeDef
{
Code = "de-LI",
GoogleCode = "de"
}
},
{
"German/Luxembourg",
new LanguageCodeDef
{
Code = "de-LU",
GoogleCode = "de"
}
},
{
"German/Switzerland",
new LanguageCodeDef
{
Code = "de-CH",
GoogleCode = "de"
}
},
{
"Greek",
new LanguageCodeDef
{
Code = "el"
}
},
{
"Gujarati",
new LanguageCodeDef
{
Code = "gu"
}
},
{
"Hebrew",
new LanguageCodeDef
{
Code = "he",
GoogleCode = "iw"
}
},
{
"Hindi",
new LanguageCodeDef
{
Code = "hi"
}
},
{
"Hungarian",
new LanguageCodeDef
{
Code = "hu"
}
},
{
"Icelandic",
new LanguageCodeDef
{
Code = "is"
}
},
{
"Indonesian",
new LanguageCodeDef
{
Code = "id"
}
},
{
"Irish",
new LanguageCodeDef
{
Code = "ga"
}
},
{
"Italian",
new LanguageCodeDef
{
Code = "it"
}
},
{
"Italian/Italy",
new LanguageCodeDef
{
Code = "it-IT",
GoogleCode = "it"
}
},
{
"Italian/Switzerland",
new LanguageCodeDef
{
Code = "it-CH",
GoogleCode = "it"
}
},
{
"Japanese",
new LanguageCodeDef
{
Code = "ja"
}
},
{
"Kannada",
new LanguageCodeDef
{
Code = "kn"
}
},
{
"Kazakh",
new LanguageCodeDef
{
Code = "kk"
}
},
{
"Korean",
new LanguageCodeDef
{
Code = "ko"
}
},
{
"Kurdish",
new LanguageCodeDef
{
Code = "ku"
}
},
{
"Kyrgyz",
new LanguageCodeDef
{
Code = "ky"
}
},
{
"Latin",
new LanguageCodeDef
{
Code = "la"
}
},
{
"Latvian",
new LanguageCodeDef
{
Code = "lv"
}
},
{
"Lithuanian",
new LanguageCodeDef
{
Code = "lt"
}
},
{
"Macedonian",
new LanguageCodeDef
{
Code = "mk"
}
},
{
"Malay",
new LanguageCodeDef
{
Code = "ms"
}
},
{
"Malay/Brunei Darussalam",
new LanguageCodeDef
{
Code = "ms-BN",
GoogleCode = "ms"
}
},
{
"Malay/Malaysia",
new LanguageCodeDef
{
Code = "ms-MY",
GoogleCode = "ms"
}
},
{
"Malayalam",
new LanguageCodeDef
{
Code = "ml"
}
},
{
"Maltese",
new LanguageCodeDef
{
Code = "mt"
}
},
{
"Maori",
new LanguageCodeDef
{
Code = "mi"
}
},
{
"Marathi",
new LanguageCodeDef
{
Code = "mr"
}
},
{
"Mongolian",
new LanguageCodeDef
{
Code = "mn"
}
},
{
"Northern Sotho",
new LanguageCodeDef
{
Code = "ns",
GoogleCode = "nso"
}
},
{
"Norwegian",
new LanguageCodeDef
{
Code = "nb",
GoogleCode = "no"
}
},
{
"Norwegian/Nynorsk",
new LanguageCodeDef
{
Code = "nn",
GoogleCode = "no"
}
},
{
"Pashto",
new LanguageCodeDef
{
Code = "ps"
}
},
{
"Persian",
new LanguageCodeDef
{
Code = "fa"
}
},
{
"Polish",
new LanguageCodeDef
{
Code = "pl"
}
},
{
"Portuguese",
new LanguageCodeDef
{
Code = "pt"
}
},
{
"Portuguese/Brazil",
new LanguageCodeDef
{
Code = "pt-BR",
GoogleCode = "pt"
}
},
{
"Portuguese/Portugal",
new LanguageCodeDef
{
Code = "pt-PT",
GoogleCode = "pt"
}
},
{
"Punjabi",
new LanguageCodeDef
{
Code = "pa"
}
},
{
"Quechua",
new LanguageCodeDef
{
Code = "qu"
}
},
{
"Quechua/Bolivia",
new LanguageCodeDef
{
Code = "qu-BO",
GoogleCode = "qu"
}
},
{
"Quechua/Ecuador",
new LanguageCodeDef
{
Code = "qu-EC",
GoogleCode = "qu"
}
},
{
"Quechua/Peru",
new LanguageCodeDef
{
Code = "qu-PE",
GoogleCode = "qu"
}
},
{
"Rhaeto-Romanic",
new LanguageCodeDef
{
Code = "rm",
GoogleCode = "ro"
}
},
{
"Romanian",
new LanguageCodeDef
{
Code = "ro"
}
},
{
"Russian",
new LanguageCodeDef
{
Code = "ru"
}
},
{
"Russian/Republic of Moldova",
new LanguageCodeDef
{
Code = "ru-MO",
GoogleCode = "ru"
}
},
{
"Serbian",
new LanguageCodeDef
{
Code = "sr"
}
},
{
"Serbian/Bosnia and Herzegovina",
new LanguageCodeDef
{
Code = "sr-BA",
GoogleCode = "sr"
}
},
{
"Serbian/Serbia and Montenegro",
new LanguageCodeDef
{
Code = "sr-SP",
GoogleCode = "sr"
}
},
{
"Slovak",
new LanguageCodeDef
{
Code = "sk"
}
},
{
"Slovenian",
new LanguageCodeDef
{
Code = "sl"
}
},
{
"Spanish",
new LanguageCodeDef
{
Code = "es"
}
},
{
"Spanish/Argentina",
new LanguageCodeDef
{
Code = "es-AR",
GoogleCode = "es"
}
},
{
"Spanish/Bolivia",
new LanguageCodeDef
{
Code = "es-BO",
GoogleCode = "es"
}
},
{
"Spanish/Castilian",
new LanguageCodeDef
{
Code = "es-ES",
GoogleCode = "es"
}
},
{
"Spanish/Chile",
new LanguageCodeDef
{
Code = "es-CL",
GoogleCode = "es"
}
},
{
"Spanish/Colombia",
new LanguageCodeDef
{
Code = "es-CO",
GoogleCode = "es"
}
},
{
"Spanish/Costa Rica",
new LanguageCodeDef
{
Code = "es-CR",
GoogleCode = "es"
}
},
{
"Spanish/Dominican Republic",
new LanguageCodeDef
{
Code = "es-DO",
GoogleCode = "es"
}
},
{
"Spanish/Ecuador",
new LanguageCodeDef
{
Code = "es-EC",
GoogleCode = "es"
}
},
{
"Spanish/El Salvador",
new LanguageCodeDef
{
Code = "es-SV",
GoogleCode = "es"
}
},
{
"Spanish/Guatemala",
new LanguageCodeDef
{
Code = "es-GT",
GoogleCode = "es"
}
},
{
"Spanish/Honduras",
new LanguageCodeDef
{
Code = "es-HN",
GoogleCode = "es"
}
},
{
"Spanish/Mexico",
new LanguageCodeDef
{
Code = "es-MX",
GoogleCode = "es"
}
},
{
"Spanish/Nicaragua",
new LanguageCodeDef
{
Code = "es-NI",
GoogleCode = "es"
}
},
{
"Spanish/Panama",
new LanguageCodeDef
{
Code = "es-PA",
GoogleCode = "es"
}
},
{
"Spanish/Paraguay",
new LanguageCodeDef
{
Code = "es-PY",
GoogleCode = "es"
}
},
{
"Spanish/Peru",
new LanguageCodeDef
{
Code = "es-PE",
GoogleCode = "es"
}
},
{
"Spanish/Puerto Rico",
new LanguageCodeDef
{
Code = "es-PR",
GoogleCode = "es"
}
},
{
"Spanish/Spain",
new LanguageCodeDef
{
Code = "es"
}
},
{
"Spanish/Uruguay",
new LanguageCodeDef
{
Code = "es-UY",
GoogleCode = "es"
}
},
{
"Spanish/Venezuela",
new LanguageCodeDef
{
Code = "es-VE",
GoogleCode = "es"
}
},
{
"Swahili",
new LanguageCodeDef
{
Code = "sw"
}
},
{
"Swedish",
new LanguageCodeDef
{
Code = "sv"
}
},
{
"Swedish/Finland",
new LanguageCodeDef
{
Code = "sv-FI",
GoogleCode = "sv"
}
},
{
"Swedish/Sweden",
new LanguageCodeDef
{
Code = "sv-SE",
GoogleCode = "sv"
}
},
{
"Tamil",
new LanguageCodeDef
{
Code = "ta"
}
},
{
"Tatar",
new LanguageCodeDef
{
Code = "tt"
}
},
{
"Telugu",
new LanguageCodeDef
{
Code = "te"
}
},
{
"Thai",
new LanguageCodeDef
{
Code = "th"
}
},
{
"Turkish",
new LanguageCodeDef
{
Code = "tr"
}
},
{
"Ukrainian",
new LanguageCodeDef
{
Code = "uk"
}
},
{
"Urdu",
new LanguageCodeDef
{
Code = "ur"
}
},
{
"Uzbek",
new LanguageCodeDef
{
Code = "uz"
}
},
{
"Vietnamese",
new LanguageCodeDef
{
Code = "vi"
}
},
{
"Welsh",
new LanguageCodeDef
{
Code = "cy"
}
},
{
"Xhosa",
new LanguageCodeDef
{
Code = "xh"
}
},
{
"Yiddish",
new LanguageCodeDef
{
Code = "yi"
}
},
{
"Zulu",
new LanguageCodeDef
{
Code = "zu"
}
}
};
public static string GetLanguageCode(string Filter, bool ShowWarnings = false)
{
if (string.IsNullOrEmpty(Filter))
{
return string.Empty;
}
string[] filters = Filter.ToLowerInvariant().Split(" /(),".ToCharArray());
foreach (KeyValuePair<string, LanguageCodeDef> item in mLanguageDef)
{
if (LanguageMatchesFilter(item.Key, filters))
{
return item.Value.Code;
}
}
if (ShowWarnings)
{
Debug.Log(string.Format("Language '{0}' not recognized. Please, add the language code to GoogleTranslation.cs", Filter));
}
return string.Empty;
}
public static List<string> GetLanguagesForDropdown(string Filter, string CodesToExclude)
{
string[] filters = Filter.ToLowerInvariant().Split(" /(),".ToCharArray());
List<string> list = new List<string>();
foreach (KeyValuePair<string, LanguageCodeDef> item in mLanguageDef)
{
if (string.IsNullOrEmpty(Filter) || LanguageMatchesFilter(item.Key, filters))
{
string text = string.Concat("[" + item.Value.Code + "]");
if (!CodesToExclude.Contains(text))
{
list.Add(item.Key + " " + text);
}
}
}
for (int num = list.Count - 2; num >= 0; num--)
{
string text2 = list[num].Substring(0, list[num].IndexOf(" ["));
if (list[num + 1].StartsWith(text2))
{
list[num] = text2 + "/" + list[num];
list.Insert(num + 1, text2 + "/");
}
}
return list;
}
public static string GetClosestLanguage(string Filter)
{
if (string.IsNullOrEmpty(Filter))
{
return string.Empty;
}
string[] filters = Filter.ToLowerInvariant().Split(" /(),".ToCharArray());
foreach (KeyValuePair<string, LanguageCodeDef> item in mLanguageDef)
{
if (LanguageMatchesFilter(item.Key, filters))
{
return item.Key;
}
}
return string.Empty;
}
private static bool LanguageMatchesFilter(string Language, string[] Filters)
{
Language = Language.ToLowerInvariant();
int i = 0;
for (int num = Filters.Length; i < num; i++)
{
if (Filters[i] != string.Empty)
{
if (!Language.Contains(Filters[i].ToLower()))
{
return false;
}
Language = Language.Remove(Language.IndexOf(Filters[i]), Filters[i].Length);
}
}
return true;
}
public static string GetFormatedLanguageName(string Language)
{
string empty = string.Empty;
int num = Language.IndexOf(" [");
if (num > 0)
{
Language = Language.Substring(0, num);
}
num = Language.IndexOf('/');
if (num > 0)
{
empty = Language.Substring(0, num);
if (Language == empty + "/" + empty)
{
return empty;
}
Language = Language.Replace("/", " (") + ")";
}
return Language;
}
public static string GetCodedLanguage(string Language, string code)
{
string languageCode = GetLanguageCode(Language);
if (string.Compare(code, languageCode, StringComparison.OrdinalIgnoreCase) == 0)
{
return Language;
}
return Language + " [" + code + "]";
}
public static void UnPackCodeFromLanguageName(string CodedLanguage, out string Language, out string code)
{
if (string.IsNullOrEmpty(CodedLanguage))
{
Language = string.Empty;
code = string.Empty;
return;
}
int num = CodedLanguage.IndexOf("[");
if (num < 0)
{
Language = CodedLanguage;
code = GetLanguageCode(Language);
}
else
{
Language = CodedLanguage.Substring(0, num).Trim();
code = CodedLanguage.Substring(num + 1, CodedLanguage.IndexOf("]", num) - num - 1);
}
}
public static string GetGoogleLanguageCode(string InternationalCode)
{
foreach (KeyValuePair<string, LanguageCodeDef> item in mLanguageDef)
{
if (InternationalCode == item.Value.Code)
{
return string.IsNullOrEmpty(item.Value.GoogleCode) ? InternationalCode : item.Value.GoogleCode;
}
}
return InternationalCode;
}
public static List<string> GetAllInternationalCodes()
{
HashSet<string> hashSet = new HashSet<string>();
foreach (KeyValuePair<string, LanguageCodeDef> item in mLanguageDef)
{
hashSet.Add(item.Value.Code);
}
return new List<string>(hashSet);
}
}
}