summaryrefslogtreecommitdiff
path: root/core/translation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/translation.cpp')
-rw-r--r--core/translation.cpp1697
1 files changed, 834 insertions, 863 deletions
diff --git a/core/translation.cpp b/core/translation.cpp
index d9d4fe7784..013f46f54f 100644
--- a/core/translation.cpp
+++ b/core/translation.cpp
@@ -32,746 +32,745 @@
#include "io/resource_loader.h"
#include "os/os.h"
-static const char* locale_list[]={
-"aa", // Afar
-"aa_DJ", // Afar (Djibouti)
-"aa_ER", // Afar (Eritrea)
-"aa_ET", // Afar (Ethiopia)
-"af", // Afrikaans
-"af_ZA", // Afrikaans (South Africa)
-"agr_PE", // Aguaruna (Peru)
-"ak_GH", // Akan (Ghana)
-"am_ET", // Amharic (Ethiopia)
-"an_ES", // Aragonese (Spain)
-"anp_IN", // Angika (India)
-"ar", // Arabic
-"ar_AE", // Arabic (United Arab Emirates)
-"ar_BH", // Arabic (Bahrain)
-"ar_DZ", // Arabic (Algeria)
-"ar_EG", // Arabic (Egypt)
-"ar_IN", // Arabic (India)
-"ar_IQ", // Arabic (Iraq)
-"ar_JO", // Arabic (Jordan)
-"ar_KW", // Arabic (Kuwait)
-"ar_LB", // Arabic (Lebanon)
-"ar_LY", // Arabic (Libya)
-"ar_MA", // Arabic (Morocco)
-"ar_OM", // Arabic (Oman)
-"ar_QA", // Arabic (Qatar)
-"ar_SA", // Arabic (Saudi Arabia)
-"ar_SD", // Arabic (Sudan)
-"ar_SS", // Arabic (South Soudan)
-"ar_SY", // Arabic (Syria)
-"ar_TN", // Arabic (Tunisia)
-"ar_YE", // Arabic (Yemen)
-"as_IN", // Assamese (India)
-"ast_ES", // Asturian (Spain)
-"ayc_PE", // Southern Aymara (Peru)
-"ay_PE", // Aymara (Peru)
-"az_AZ", // Azerbaijani (Azerbaijan)
-"be", // Belarusian
-"be_BY", // Belarusian (Belarus)
-"bem_ZM", // Bemba (Zambia)
-"ber_DZ", // Berber languages (Algeria)
-"ber_MA", // Berber languages (Morocco)
-"bg", // Bulgarian
-"bg_BG", // Bulgarian (Bulgaria)
-"bhb_IN", // Bhili (India)
-"bho_IN", // Bhojpuri (India)
-"bi_TV", // Bislama (Tuvalu)
-"bn", // Bengali
-"bn_BD", // Bengali (Bangladesh)
-"bn_IN", // Bengali (India)
-"bo", // Tibetan
-"bo_CN", // Tibetan (China)
-"bo_IN", // Tibetan (India)
-"br_FR", // Breton (France)
-"brx_IN", // Bodo (India)
-"bs_BA", // Bosnian (Bosnia and Herzegovina)
-"byn_ER", // Bilin (Eritrea)
-"ca", // Catalan
-"ca_AD", // Catalan (Andorra)
-"ca_ES", // Catalan (Spain)
-"ca_FR", // Catalan (France)
-"ca_IT", // Catalan (Italy)
-"ce_RU", // Chechen (Russia)
-"chr_US", // Cherokee (United States)
-"cmn_TW", // Mandarin Chinese (Taiwan)
-"crh_UA", // Crimean Tatar (Ukraine)
-"csb_PL", // Kashubian (Poland)
-"cs", // Czech
-"cs_CZ", // Czech (Czech Republic)
-"cv_RU", // Chuvash (Russia)
-"cy_GB", // Welsh (United Kingdom)
-"da", // Danish
-"da_DK", // Danish (Denmark)
-"de", // German
-"de_AT", // German (Austria)
-"de_BE", // German (Belgium)
-"de_CH", // German (Switzerland)
-"de_DE", // German (Germany)
-"de_IT", // German (Italy)
-"de_LU", // German (Luxembourg)
-"doi_IN", // Dogri (India)
-"dv_MV", // Dhivehi (Maldives)
-"dz_BT", // Dzongkha (Bhutan)
-"el", // Greek
-"el_CY", // Greek (Cyprus)
-"el_GR", // Greek (Greece)
-"en", // English
-"en_AG", // English (Antigua and Barbuda)
-"en_AU", // English (Australia)
-"en_BW", // English (Botswana)
-"en_CA", // English (Canada)
-"en_DK", // English (Denmark)
-"en_GB", // English (United Kingdom)
-"en_HK", // English (Hong Kong)
-"en_IE", // English (Ireland)
-"en_IL", // English (Israel)
-"en_IN", // English (India)
-"en_NG", // English (Nigeria)
-"en_NZ", // English (New Zealand)
-"en_PH", // English (Philippines)
-"en_SG", // English (Singapore)
-"en_US", // English (United States)
-"en_ZA", // English (South Africa)
-"en_ZM", // English (Zambia)
-"en_ZW", // English (Zimbabwe)
-"eo", // Esperanto
-"es", // Spanish
-"es_AR", // Spanish (Argentina)
-"es_BO", // Spanish (Bolivia)
-"es_CL", // Spanish (Chile)
-"es_CO", // Spanish (Colombia)
-"es_CR", // Spanish (Costa Rica)
-"es_CU", // Spanish (Cuba)
-"es_DO", // Spanish (Dominican Republic)
-"es_EC", // Spanish (Ecuador)
-"es_ES", // Spanish (Spain)
-"es_GT", // Spanish (Guatemala)
-"es_HN", // Spanish (Honduras)
-"es_MX", // Spanish (Mexico)
-"es_NI", // Spanish (Nicaragua)
-"es_PA", // Spanish (Panama)
-"es_PE", // Spanish (Peru)
-"es_PR", // Spanish (Puerto Rico)
-"es_PY", // Spanish (Paraguay)
-"es_SV", // Spanish (El Salvador)
-"es_US", // Spanish (United States)
-"es_UY", // Spanish (Uruguay)
-"es_VE", // Spanish (Venezuela)
-"et", // Estonian
-"et_EE", // Estonian (Estonia)
-"eu", // Basque
-"eu_ES", // Basque (Spain)
-"fa", // Persian
-"fa_IR", // Persian (Iran)
-"ff_SN", // Fulah (Senegal)
-"fi", // Finnish
-"fi_FI", // Finnish (Finland)
-"fil_PH", // Filipino (Philippines)
-"fo_FO", // Faroese (Faroe Islands)
-"fr", // French
-"fr_BE", // French (Belgium)
-"fr_CA", // French (Canada)
-"fr_CH", // French (Switzerland)
-"fr_FR", // French (France)
-"fr_LU", // French (Luxembourg)
-"fur_IT", // Friulian (Italy)
-"fy_DE", // Western Frisian (Germany)
-"fy_NL", // Western Frisian (Netherlands)
-"ga", // Irish
-"ga_IE", // Irish (Ireland)
-"gd_GB", // Scottish Gaelic (United Kingdom)
-"gez_ER", // Geez (Eritrea)
-"gez_ET", // Geez (Ethiopia)
-"gl_ES", // Galician (Spain)
-"gu_IN", // Gujarati (India)
-"gv_GB", // Manx (United Kingdom)
-"hak_TW", // Hakka Chinese (Taiwan)
-"ha_NG", // Hausa (Nigeria)
-"he", // Hebrew
-"he_IL", // Hebrew (Israel)
-"hi", // Hindi
-"hi_IN", // Hindi (India)
-"hne_IN", // Chhattisgarhi (India)
-"hr", // Croatian
-"hr_HR", // Croatian (Croatia)
-"hsb_DE", // Upper Sorbian (Germany)
-"ht_HT", // Haitian (Haiti)
-"hu", // Hungarian
-"hu_HU", // Hungarian (Hungary)
-"hus_MX", // Huastec (Mexico)
-"hy_AM", // Armenian (Armenia)
-"ia_FR", // Interlingua (France)
-"id", // Indonesian
-"id_ID", // Indonesian (Indonesia)
-"ig_NG", // Igbo (Nigeria)
-"ik_CA", // Inupiaq (Canada)
-"is", // Icelandic
-"is_IS", // Icelandic (Iceland)
-"it", // Italian
-"it_CH", // Italian (Switzerland)
-"it_IT", // Italian (Italy)
-"iu_CA", // Inuktitut (Canada)
-"ja", // Japanese
-"ja_JP", // Japanese (Japan)
-"kab_DZ", // Kabyle (Algeria)
-"ka_GE", // Georgian (Georgia)
-"kk_KZ", // Kazakh (Kazakhstan)
-"kl_GL", // Kalaallisut (Greenland)
-"km_KH", // Central Khmer (Cambodia)
-"kn_IN", // Kannada (India)
-"kok_IN", // Konkani (India)
-"ko", // Korean
-"ko_KR", // Korean (South Korea)
-"ks_IN", // Kashmiri (India)
-"ku", // Kurdish
-"ku_TR", // Kurdish (Turkey)
-"kw_GB", // Cornish (United Kingdom)
-"ky_KG", // Kirghiz (Kyrgyzstan)
-"lb_LU", // Luxembourgish (Luxembourg)
-"lg_UG", // Ganda (Uganda)
-"li_BE", // Limburgan (Belgium)
-"li_NL", // Limburgan (Netherlands)
-"lij_IT", // Ligurian (Italy)
-"ln_CD", // Lingala (Congo)
-"lo_LA", // Lao (Laos)
-"lt", // Lithuanian
-"lt_LT", // Lithuanian (Lithuania)
-"lv", // Latvian
-"lv_LV", // Latvian (Latvia)
-"lzh_TW", // Literary Chinese (Taiwan)
-"mag_IN", // Magahi (India)
-"mai_IN", // Maithili (India)
-"mg_MG", // Malagasy (Madagascar)
-"mh_MH", // Marshallese (Marshall Islands)
-"mhr_RU", // Eastern Mari (Russia)
-"mi_NZ", // Maori (New Zealand)
-"miq_NI", // Mískito (Nicaragua)
-"mk", // Macedonian
-"mk_MK", // Macedonian (Macedonia)
-"ml_IN", // Malayalam (India)
-"mni_IN", // Manipuri (India)
-"mn_MN", // Mongolian (Mongolia)
-"mr_IN", // Marathi (India)
-"ms", // Malay
-"ms_MY", // Malay (Malaysia)
-"mt", // Maltese
-"mt_MT", // Maltese (Malta)
-"my_MM", // Burmese (Myanmar)
-"myv_RU", // Erzya (Russia)
-"nah_MX", // Nahuatl languages (Mexico)
-"nan_TW", // Min Nan Chinese (Taiwan)
-"nb", // Norwegian Bokmål
-"nb_NO", // Norwegian Bokmål (Norway)
-"nds_DE", // Low German (Germany)
-"nds_NL", // Low German (Netherlands)
-"ne_NP", // Nepali (Nepal)
-"nhn_MX", // Central Nahuatl (Mexico)
-"niu_NU", // Niuean (Niue)
-"niu_NZ", // Niuean (New Zealand)
-"nl", // Dutch
-"nl_AW", // Dutch (Aruba)
-"nl_BE", // Dutch (Belgium)
-"nl_NL", // Dutch (Netherlands)
-"nn", // Norwegian Nynorsk
-"nn_NO", // Norwegian Nynorsk (Norway)
-"nr_ZA", // South Ndebele (South Africa)
-"nso_ZA", // Pedi (South Africa)
-"oc_FR", // Occitan (France)
-"om", // Oromo
-"om_ET", // Oromo (Ethiopia)
-"om_KE", // Oromo (Kenya)
-"or_IN", // Oriya (India)
-"os_RU", // Ossetian (Russia)
-"pa_IN", // Panjabi (India)
-"pap", // Papiamento
-"pap_AN", // Papiamento (Netherlands Antilles)
-"pap_AW", // Papiamento (Aruba)
-"pap_CW", // Papiamento (Curaçao)
-"pa_PK", // Panjabi (Pakistan)
-"pl", // Polish
-"pl_PL", // Polish (Poland)
-"pr", // Pirate
-"ps_AF", // Pushto (Afghanistan)
-"pt", // Portuguese
-"pt_BR", // Portuguese (Brazil)
-"pt_PT", // Portuguese (Portugal)
-"quy_PE", // Ayacucho Quechua (Peru)
-"quz_PE", // Cusco Quechua (Peru)
-"raj_IN", // Rajasthani (India)
-"ro", // Romanian
-"ro_RO", // Romanian (Romania)
-"ru", // Russian
-"ru_RU", // Russian (Russia)
-"ru_UA", // Russian (Ukraine)
-"rw_RW", // Kinyarwanda (Rwanda)
-"sa_IN", // Sanskrit (India)
-"sat_IN", // Santali (India)
-"sc_IT", // Sardinian (Italy)
-"sco", // Scots
-"sd_IN", // Sindhi (India)
-"se_NO", // Northern Sami (Norway)
-"sgs_LT", // Samogitian (Lithuania)
-"shs_CA", // Shuswap (Canada)
-"sid_ET", // Sidamo (Ethiopia)
-"si_LK", // Sinhala (Sri Lanka)
-"sk", // Slovak
-"sk_SK", // Slovak (Slovakia)
-"sl", // Slovenian
-"sl_SI", // Slovenian (Slovenia)
-"so", // Somali
-"so_DJ", // Somali (Djibouti)
-"so_ET", // Somali (Ethiopia)
-"so_KE", // Somali (Kenya)
-"so_SO", // Somali (Somalia)
-"son_ML", // Songhai languages (Mali)
-"sq", // Albanian
-"sq_AL", // Albanian (Albania)
-"sq_KV", // Albanian (Kosovo)
-"sq_MK", // Albanian (Macedonia)
-"sr", // Serbian
-"sr_ME", // Serbian (Montenegro)
-"sr_RS", // Serbian (Serbia)
-"ss_ZA", // Swati (South Africa)
-"st_ZA", // Southern Sotho (South Africa)
-"sv", // Swedish
-"sv_FI", // Swedish (Finland)
-"sv_SE", // Swedish (Sweden)
-"sw_KE", // Swahili (Kenya)
-"sw_TZ", // Swahili (Tanzania)
-"szl_PL", // Silesian (Poland)
-"ta", // Tamil
-"ta_IN", // Tamil (India)
-"ta_LK", // Tamil (Sri Lanka)
-"tcy_IN", // Tulu (India)
-"te_IN", // Telugu (India)
-"tg_TJ", // Tajik (Tajikistan)
-"the_NP", // Chitwania Tharu (Nepal)
-"th", // Thai
-"th_TH", // Thai (Thailand)
-"ti", // Tigrinya
-"ti_ER", // Tigrinya (Eritrea)
-"ti_ET", // Tigrinya (Ethiopia)
-"tig_ER", // Tigre (Eritrea)
-"tk_TM", // Turkmen (Turkmenistan)
-"tl_PH", // Tagalog (Philippines)
-"tn_ZA", // Tswana (South Africa)
-"tr", // Turkish
-"tr_CY", // Turkish (Cyprus)
-"tr_TR", // Turkish (Turkey)
-"ts_ZA", // Tsonga (South Africa)
-"tt_RU", // Tatar (Russia)
-"ug_CN", // Uighur (China)
-"uk", // Ukrainian
-"uk_UA", // Ukrainian (Ukraine)
-"unm_US", // Unami (United States)
-"ur", // Urdu
-"ur_IN", // Urdu (India)
-"ur_PK", // Urdu (Pakistan)
-"uz", // Uzbek
-"uz_UZ", // Uzbek (Uzbekistan)
-"ve_ZA", // Venda (South Africa)
-"vi", // Vietnamese
-"vi_VN", // Vietnamese (Vietnam)
-"wa_BE", // Walloon (Belgium)
-"wae_CH", // Walser (Switzerland)
-"wal_ET", // Wolaytta (Ethiopia)
-"wo_SN", // Wolof (Senegal)
-"xh_ZA", // Xhosa (South Africa)
-"yi_US", // Yiddish (United States)
-"yo_NG", // Yoruba (Nigeria)
-"yue_HK", // Yue Chinese (Hong Kong)
-"zh", // Chinese
-"zh_CN", // Chinese (China)
-"zh_HK", // Chinese (Hong Kong)
-"zh_SG", // Chinese (Singapore)
-"zh_TW", // Chinese (Taiwan)
-"zu_ZA", // Zulu (South Africa)
-0
+static const char *locale_list[] = {
+ "aa", // Afar
+ "aa_DJ", // Afar (Djibouti)
+ "aa_ER", // Afar (Eritrea)
+ "aa_ET", // Afar (Ethiopia)
+ "af", // Afrikaans
+ "af_ZA", // Afrikaans (South Africa)
+ "agr_PE", // Aguaruna (Peru)
+ "ak_GH", // Akan (Ghana)
+ "am_ET", // Amharic (Ethiopia)
+ "an_ES", // Aragonese (Spain)
+ "anp_IN", // Angika (India)
+ "ar", // Arabic
+ "ar_AE", // Arabic (United Arab Emirates)
+ "ar_BH", // Arabic (Bahrain)
+ "ar_DZ", // Arabic (Algeria)
+ "ar_EG", // Arabic (Egypt)
+ "ar_IN", // Arabic (India)
+ "ar_IQ", // Arabic (Iraq)
+ "ar_JO", // Arabic (Jordan)
+ "ar_KW", // Arabic (Kuwait)
+ "ar_LB", // Arabic (Lebanon)
+ "ar_LY", // Arabic (Libya)
+ "ar_MA", // Arabic (Morocco)
+ "ar_OM", // Arabic (Oman)
+ "ar_QA", // Arabic (Qatar)
+ "ar_SA", // Arabic (Saudi Arabia)
+ "ar_SD", // Arabic (Sudan)
+ "ar_SS", // Arabic (South Soudan)
+ "ar_SY", // Arabic (Syria)
+ "ar_TN", // Arabic (Tunisia)
+ "ar_YE", // Arabic (Yemen)
+ "as_IN", // Assamese (India)
+ "ast_ES", // Asturian (Spain)
+ "ayc_PE", // Southern Aymara (Peru)
+ "ay_PE", // Aymara (Peru)
+ "az_AZ", // Azerbaijani (Azerbaijan)
+ "be", // Belarusian
+ "be_BY", // Belarusian (Belarus)
+ "bem_ZM", // Bemba (Zambia)
+ "ber_DZ", // Berber languages (Algeria)
+ "ber_MA", // Berber languages (Morocco)
+ "bg", // Bulgarian
+ "bg_BG", // Bulgarian (Bulgaria)
+ "bhb_IN", // Bhili (India)
+ "bho_IN", // Bhojpuri (India)
+ "bi_TV", // Bislama (Tuvalu)
+ "bn", // Bengali
+ "bn_BD", // Bengali (Bangladesh)
+ "bn_IN", // Bengali (India)
+ "bo", // Tibetan
+ "bo_CN", // Tibetan (China)
+ "bo_IN", // Tibetan (India)
+ "br_FR", // Breton (France)
+ "brx_IN", // Bodo (India)
+ "bs_BA", // Bosnian (Bosnia and Herzegovina)
+ "byn_ER", // Bilin (Eritrea)
+ "ca", // Catalan
+ "ca_AD", // Catalan (Andorra)
+ "ca_ES", // Catalan (Spain)
+ "ca_FR", // Catalan (France)
+ "ca_IT", // Catalan (Italy)
+ "ce_RU", // Chechen (Russia)
+ "chr_US", // Cherokee (United States)
+ "cmn_TW", // Mandarin Chinese (Taiwan)
+ "crh_UA", // Crimean Tatar (Ukraine)
+ "csb_PL", // Kashubian (Poland)
+ "cs", // Czech
+ "cs_CZ", // Czech (Czech Republic)
+ "cv_RU", // Chuvash (Russia)
+ "cy_GB", // Welsh (United Kingdom)
+ "da", // Danish
+ "da_DK", // Danish (Denmark)
+ "de", // German
+ "de_AT", // German (Austria)
+ "de_BE", // German (Belgium)
+ "de_CH", // German (Switzerland)
+ "de_DE", // German (Germany)
+ "de_IT", // German (Italy)
+ "de_LU", // German (Luxembourg)
+ "doi_IN", // Dogri (India)
+ "dv_MV", // Dhivehi (Maldives)
+ "dz_BT", // Dzongkha (Bhutan)
+ "el", // Greek
+ "el_CY", // Greek (Cyprus)
+ "el_GR", // Greek (Greece)
+ "en", // English
+ "en_AG", // English (Antigua and Barbuda)
+ "en_AU", // English (Australia)
+ "en_BW", // English (Botswana)
+ "en_CA", // English (Canada)
+ "en_DK", // English (Denmark)
+ "en_GB", // English (United Kingdom)
+ "en_HK", // English (Hong Kong)
+ "en_IE", // English (Ireland)
+ "en_IL", // English (Israel)
+ "en_IN", // English (India)
+ "en_NG", // English (Nigeria)
+ "en_NZ", // English (New Zealand)
+ "en_PH", // English (Philippines)
+ "en_SG", // English (Singapore)
+ "en_US", // English (United States)
+ "en_ZA", // English (South Africa)
+ "en_ZM", // English (Zambia)
+ "en_ZW", // English (Zimbabwe)
+ "eo", // Esperanto
+ "es", // Spanish
+ "es_AR", // Spanish (Argentina)
+ "es_BO", // Spanish (Bolivia)
+ "es_CL", // Spanish (Chile)
+ "es_CO", // Spanish (Colombia)
+ "es_CR", // Spanish (Costa Rica)
+ "es_CU", // Spanish (Cuba)
+ "es_DO", // Spanish (Dominican Republic)
+ "es_EC", // Spanish (Ecuador)
+ "es_ES", // Spanish (Spain)
+ "es_GT", // Spanish (Guatemala)
+ "es_HN", // Spanish (Honduras)
+ "es_MX", // Spanish (Mexico)
+ "es_NI", // Spanish (Nicaragua)
+ "es_PA", // Spanish (Panama)
+ "es_PE", // Spanish (Peru)
+ "es_PR", // Spanish (Puerto Rico)
+ "es_PY", // Spanish (Paraguay)
+ "es_SV", // Spanish (El Salvador)
+ "es_US", // Spanish (United States)
+ "es_UY", // Spanish (Uruguay)
+ "es_VE", // Spanish (Venezuela)
+ "et", // Estonian
+ "et_EE", // Estonian (Estonia)
+ "eu", // Basque
+ "eu_ES", // Basque (Spain)
+ "fa", // Persian
+ "fa_IR", // Persian (Iran)
+ "ff_SN", // Fulah (Senegal)
+ "fi", // Finnish
+ "fi_FI", // Finnish (Finland)
+ "fil_PH", // Filipino (Philippines)
+ "fo_FO", // Faroese (Faroe Islands)
+ "fr", // French
+ "fr_BE", // French (Belgium)
+ "fr_CA", // French (Canada)
+ "fr_CH", // French (Switzerland)
+ "fr_FR", // French (France)
+ "fr_LU", // French (Luxembourg)
+ "fur_IT", // Friulian (Italy)
+ "fy_DE", // Western Frisian (Germany)
+ "fy_NL", // Western Frisian (Netherlands)
+ "ga", // Irish
+ "ga_IE", // Irish (Ireland)
+ "gd_GB", // Scottish Gaelic (United Kingdom)
+ "gez_ER", // Geez (Eritrea)
+ "gez_ET", // Geez (Ethiopia)
+ "gl_ES", // Galician (Spain)
+ "gu_IN", // Gujarati (India)
+ "gv_GB", // Manx (United Kingdom)
+ "hak_TW", // Hakka Chinese (Taiwan)
+ "ha_NG", // Hausa (Nigeria)
+ "he", // Hebrew
+ "he_IL", // Hebrew (Israel)
+ "hi", // Hindi
+ "hi_IN", // Hindi (India)
+ "hne_IN", // Chhattisgarhi (India)
+ "hr", // Croatian
+ "hr_HR", // Croatian (Croatia)
+ "hsb_DE", // Upper Sorbian (Germany)
+ "ht_HT", // Haitian (Haiti)
+ "hu", // Hungarian
+ "hu_HU", // Hungarian (Hungary)
+ "hus_MX", // Huastec (Mexico)
+ "hy_AM", // Armenian (Armenia)
+ "ia_FR", // Interlingua (France)
+ "id", // Indonesian
+ "id_ID", // Indonesian (Indonesia)
+ "ig_NG", // Igbo (Nigeria)
+ "ik_CA", // Inupiaq (Canada)
+ "is", // Icelandic
+ "is_IS", // Icelandic (Iceland)
+ "it", // Italian
+ "it_CH", // Italian (Switzerland)
+ "it_IT", // Italian (Italy)
+ "iu_CA", // Inuktitut (Canada)
+ "ja", // Japanese
+ "ja_JP", // Japanese (Japan)
+ "kab_DZ", // Kabyle (Algeria)
+ "ka_GE", // Georgian (Georgia)
+ "kk_KZ", // Kazakh (Kazakhstan)
+ "kl_GL", // Kalaallisut (Greenland)
+ "km_KH", // Central Khmer (Cambodia)
+ "kn_IN", // Kannada (India)
+ "kok_IN", // Konkani (India)
+ "ko", // Korean
+ "ko_KR", // Korean (South Korea)
+ "ks_IN", // Kashmiri (India)
+ "ku", // Kurdish
+ "ku_TR", // Kurdish (Turkey)
+ "kw_GB", // Cornish (United Kingdom)
+ "ky_KG", // Kirghiz (Kyrgyzstan)
+ "lb_LU", // Luxembourgish (Luxembourg)
+ "lg_UG", // Ganda (Uganda)
+ "li_BE", // Limburgan (Belgium)
+ "li_NL", // Limburgan (Netherlands)
+ "lij_IT", // Ligurian (Italy)
+ "ln_CD", // Lingala (Congo)
+ "lo_LA", // Lao (Laos)
+ "lt", // Lithuanian
+ "lt_LT", // Lithuanian (Lithuania)
+ "lv", // Latvian
+ "lv_LV", // Latvian (Latvia)
+ "lzh_TW", // Literary Chinese (Taiwan)
+ "mag_IN", // Magahi (India)
+ "mai_IN", // Maithili (India)
+ "mg_MG", // Malagasy (Madagascar)
+ "mh_MH", // Marshallese (Marshall Islands)
+ "mhr_RU", // Eastern Mari (Russia)
+ "mi_NZ", // Maori (New Zealand)
+ "miq_NI", // Mískito (Nicaragua)
+ "mk", // Macedonian
+ "mk_MK", // Macedonian (Macedonia)
+ "ml_IN", // Malayalam (India)
+ "mni_IN", // Manipuri (India)
+ "mn_MN", // Mongolian (Mongolia)
+ "mr_IN", // Marathi (India)
+ "ms", // Malay
+ "ms_MY", // Malay (Malaysia)
+ "mt", // Maltese
+ "mt_MT", // Maltese (Malta)
+ "my_MM", // Burmese (Myanmar)
+ "myv_RU", // Erzya (Russia)
+ "nah_MX", // Nahuatl languages (Mexico)
+ "nan_TW", // Min Nan Chinese (Taiwan)
+ "nb", // Norwegian Bokmål
+ "nb_NO", // Norwegian Bokmål (Norway)
+ "nds_DE", // Low German (Germany)
+ "nds_NL", // Low German (Netherlands)
+ "ne_NP", // Nepali (Nepal)
+ "nhn_MX", // Central Nahuatl (Mexico)
+ "niu_NU", // Niuean (Niue)
+ "niu_NZ", // Niuean (New Zealand)
+ "nl", // Dutch
+ "nl_AW", // Dutch (Aruba)
+ "nl_BE", // Dutch (Belgium)
+ "nl_NL", // Dutch (Netherlands)
+ "nn", // Norwegian Nynorsk
+ "nn_NO", // Norwegian Nynorsk (Norway)
+ "nr_ZA", // South Ndebele (South Africa)
+ "nso_ZA", // Pedi (South Africa)
+ "oc_FR", // Occitan (France)
+ "om", // Oromo
+ "om_ET", // Oromo (Ethiopia)
+ "om_KE", // Oromo (Kenya)
+ "or_IN", // Oriya (India)
+ "os_RU", // Ossetian (Russia)
+ "pa_IN", // Panjabi (India)
+ "pap", // Papiamento
+ "pap_AN", // Papiamento (Netherlands Antilles)
+ "pap_AW", // Papiamento (Aruba)
+ "pap_CW", // Papiamento (Curaçao)
+ "pa_PK", // Panjabi (Pakistan)
+ "pl", // Polish
+ "pl_PL", // Polish (Poland)
+ "pr", // Pirate
+ "ps_AF", // Pushto (Afghanistan)
+ "pt", // Portuguese
+ "pt_BR", // Portuguese (Brazil)
+ "pt_PT", // Portuguese (Portugal)
+ "quy_PE", // Ayacucho Quechua (Peru)
+ "quz_PE", // Cusco Quechua (Peru)
+ "raj_IN", // Rajasthani (India)
+ "ro", // Romanian
+ "ro_RO", // Romanian (Romania)
+ "ru", // Russian
+ "ru_RU", // Russian (Russia)
+ "ru_UA", // Russian (Ukraine)
+ "rw_RW", // Kinyarwanda (Rwanda)
+ "sa_IN", // Sanskrit (India)
+ "sat_IN", // Santali (India)
+ "sc_IT", // Sardinian (Italy)
+ "sco", // Scots
+ "sd_IN", // Sindhi (India)
+ "se_NO", // Northern Sami (Norway)
+ "sgs_LT", // Samogitian (Lithuania)
+ "shs_CA", // Shuswap (Canada)
+ "sid_ET", // Sidamo (Ethiopia)
+ "si_LK", // Sinhala (Sri Lanka)
+ "sk", // Slovak
+ "sk_SK", // Slovak (Slovakia)
+ "sl", // Slovenian
+ "sl_SI", // Slovenian (Slovenia)
+ "so", // Somali
+ "so_DJ", // Somali (Djibouti)
+ "so_ET", // Somali (Ethiopia)
+ "so_KE", // Somali (Kenya)
+ "so_SO", // Somali (Somalia)
+ "son_ML", // Songhai languages (Mali)
+ "sq", // Albanian
+ "sq_AL", // Albanian (Albania)
+ "sq_KV", // Albanian (Kosovo)
+ "sq_MK", // Albanian (Macedonia)
+ "sr", // Serbian
+ "sr_ME", // Serbian (Montenegro)
+ "sr_RS", // Serbian (Serbia)
+ "ss_ZA", // Swati (South Africa)
+ "st_ZA", // Southern Sotho (South Africa)
+ "sv", // Swedish
+ "sv_FI", // Swedish (Finland)
+ "sv_SE", // Swedish (Sweden)
+ "sw_KE", // Swahili (Kenya)
+ "sw_TZ", // Swahili (Tanzania)
+ "szl_PL", // Silesian (Poland)
+ "ta", // Tamil
+ "ta_IN", // Tamil (India)
+ "ta_LK", // Tamil (Sri Lanka)
+ "tcy_IN", // Tulu (India)
+ "te_IN", // Telugu (India)
+ "tg_TJ", // Tajik (Tajikistan)
+ "the_NP", // Chitwania Tharu (Nepal)
+ "th", // Thai
+ "th_TH", // Thai (Thailand)
+ "ti", // Tigrinya
+ "ti_ER", // Tigrinya (Eritrea)
+ "ti_ET", // Tigrinya (Ethiopia)
+ "tig_ER", // Tigre (Eritrea)
+ "tk_TM", // Turkmen (Turkmenistan)
+ "tl_PH", // Tagalog (Philippines)
+ "tn_ZA", // Tswana (South Africa)
+ "tr", // Turkish
+ "tr_CY", // Turkish (Cyprus)
+ "tr_TR", // Turkish (Turkey)
+ "ts_ZA", // Tsonga (South Africa)
+ "tt_RU", // Tatar (Russia)
+ "ug_CN", // Uighur (China)
+ "uk", // Ukrainian
+ "uk_UA", // Ukrainian (Ukraine)
+ "unm_US", // Unami (United States)
+ "ur", // Urdu
+ "ur_IN", // Urdu (India)
+ "ur_PK", // Urdu (Pakistan)
+ "uz", // Uzbek
+ "uz_UZ", // Uzbek (Uzbekistan)
+ "ve_ZA", // Venda (South Africa)
+ "vi", // Vietnamese
+ "vi_VN", // Vietnamese (Vietnam)
+ "wa_BE", // Walloon (Belgium)
+ "wae_CH", // Walser (Switzerland)
+ "wal_ET", // Wolaytta (Ethiopia)
+ "wo_SN", // Wolof (Senegal)
+ "xh_ZA", // Xhosa (South Africa)
+ "yi_US", // Yiddish (United States)
+ "yo_NG", // Yoruba (Nigeria)
+ "yue_HK", // Yue Chinese (Hong Kong)
+ "zh", // Chinese
+ "zh_CN", // Chinese (China)
+ "zh_HK", // Chinese (Hong Kong)
+ "zh_SG", // Chinese (Singapore)
+ "zh_TW", // Chinese (Taiwan)
+ "zu_ZA", // Zulu (South Africa)
+ 0
};
-static const char* locale_names[]={
-"Afar",
-"Afar (Djibouti)",
-"Afar (Eritrea)",
-"Afar (Ethiopia)",
-"Afrikaans",
-"Afrikaans (South Africa)",
-"Aguaruna (Peru)",
-"Akan (Ghana)",
-"Amharic (Ethiopia)",
-"Aragonese (Spain)",
-"Angika (India)",
-"Arabic",
-"Arabic (United Arab Emirates)",
-"Arabic (Bahrain)",
-"Arabic (Algeria)",
-"Arabic (Egypt)",
-"Arabic (India)",
-"Arabic (Iraq)",
-"Arabic (Jordan)",
-"Arabic (Kuwait)",
-"Arabic (Lebanon)",
-"Arabic (Libya)",
-"Arabic (Morocco)",
-"Arabic (Oman)",
-"Arabic (Qatar)",
-"Arabic (Saudi Arabia)",
-"Arabic (Sudan)",
-"Arabic (South Soudan)",
-"Arabic (Syria)",
-"Arabic (Tunisia)",
-"Arabic (Yemen)",
-"Assamese (India)",
-"Asturian (Spain)",
-"Southern Aymara (Peru)",
-"Aymara (Peru)",
-"Azerbaijani (Azerbaijan)",
-"Belarusian",
-"Belarusian (Belarus)",
-"Bemba (Zambia)",
-"Berber languages (Algeria)",
-"Berber languages (Morocco)",
-"Bulgarian",
-"Bulgarian (Bulgaria)",
-"Bhili (India)",
-"Bhojpuri (India)",
-"Bislama (Tuvalu)",
-"Bengali",
-"Bengali (Bangladesh)",
-"Bengali (India)",
-"Tibetan",
-"Tibetan (China)",
-"Tibetan (India)",
-"Breton (France)",
-"Bodo (India)",
-"Bosnian (Bosnia and Herzegovina)",
-"Bilin (Eritrea)",
-"Catalan",
-"Catalan (Andorra)",
-"Catalan (Spain)",
-"Catalan (France)",
-"Catalan (Italy)",
-"Chechen (Russia)",
-"Cherokee (United States)",
-"Mandarin Chinese (Taiwan)",
-"Crimean Tatar (Ukraine)",
-"Kashubian (Poland)",
-"Czech",
-"Czech (Czech Republic)",
-"Chuvash (Russia)",
-"Welsh (United Kingdom)",
-"Danish",
-"Danish (Denmark)",
-"German",
-"German (Austria)",
-"German (Belgium)",
-"German (Switzerland)",
-"German (Germany)",
-"German (Italy)",
-"German (Luxembourg)",
-"Dogri (India)",
-"Dhivehi (Maldives)",
-"Dzongkha (Bhutan)",
-"Greek",
-"Greek (Cyprus)",
-"Greek (Greece)",
-"English",
-"English (Antigua and Barbuda)",
-"English (Australia)",
-"English (Botswana)",
-"English (Canada)",
-"English (Denmark)",
-"English (United Kingdom)",
-"English (Hong Kong)",
-"English (Ireland)",
-"English (Israel)",
-"English (India)",
-"English (Nigeria)",
-"English (New Zealand)",
-"English (Philippines)",
-"English (Singapore)",
-"English (United States)",
-"English (South Africa)",
-"English (Zambia)",
-"English (Zimbabwe)",
-"Esperanto",
-"Spanish",
-"Spanish (Argentina)",
-"Spanish (Bolivia)",
-"Spanish (Chile)",
-"Spanish (Colombia)",
-"Spanish (Costa Rica)",
-"Spanish (Cuba)",
-"Spanish (Dominican Republic)",
-"Spanish (Ecuador)",
-"Spanish (Spain)",
-"Spanish (Guatemala)",
-"Spanish (Honduras)",
-"Spanish (Mexico)",
-"Spanish (Nicaragua)",
-"Spanish (Panama)",
-"Spanish (Peru)",
-"Spanish (Puerto Rico)",
-"Spanish (Paraguay)",
-"Spanish (El Salvador)",
-"Spanish (United States)",
-"Spanish (Uruguay)",
-"Spanish (Venezuela)",
-"Estonian",
-"Estonian (Estonia)",
-"Basque",
-"Basque (Spain)",
-"Persian",
-"Persian (Iran)",
-"Fulah (Senegal)",
-"Finnish",
-"Finnish (Finland)",
-"Filipino (Philippines)",
-"Faroese (Faroe Islands)",
-"French",
-"French (Belgium)",
-"French (Canada)",
-"French (Switzerland)",
-"French (France)",
-"French (Luxembourg)",
-"Friulian (Italy)",
-"Western Frisian (Germany)",
-"Western Frisian (Netherlands)",
-"Irish",
-"Irish (Ireland)",
-"Scottish Gaelic (United Kingdom)",
-"Geez (Eritrea)",
-"Geez (Ethiopia)",
-"Galician (Spain)",
-"Gujarati (India)",
-"Manx (United Kingdom)",
-"Hakka Chinese (Taiwan)",
-"Hausa (Nigeria)",
-"Hebrew",
-"Hebrew (Israel)",
-"Hindi",
-"Hindi (India)",
-"Chhattisgarhi (India)",
-"Croatian",
-"Croatian (Croatia)",
-"Upper Sorbian (Germany)",
-"Haitian (Haiti)",
-"Hungarian",
-"Hungarian (Hungary)",
-"Huastec (Mexico)",
-"Armenian (Armenia)",
-"Interlingua (France)",
-"Indonesian",
-"Indonesian (Indonesia)",
-"Igbo (Nigeria)",
-"Inupiaq (Canada)",
-"Icelandic",
-"Icelandic (Iceland)",
-"Italian",
-"Italian (Switzerland)",
-"Italian (Italy)",
-"Inuktitut (Canada)",
-"Japanese",
-"Japanese (Japan)",
-"Kabyle (Algeria)",
-"Georgian (Georgia)",
-"Kazakh (Kazakhstan)",
-"Kalaallisut (Greenland)",
-"Central Khmer (Cambodia)",
-"Kannada (India)",
-"Konkani (India)",
-"Korean",
-"Korean (South Korea)",
-"Kashmiri (India)",
-"Kurdish",
-"Kurdish (Turkey)",
-"Cornish (United Kingdom)",
-"Kirghiz (Kyrgyzstan)",
-"Luxembourgish (Luxembourg)",
-"Ganda (Uganda)",
-"Limburgan (Belgium)",
-"Limburgan (Netherlands)",
-"Ligurian (Italy)",
-"Lingala (Congo)",
-"Lao (Laos)",
-"Lithuanian",
-"Lithuanian (Lithuania)",
-"Latvian",
-"Latvian (Latvia)",
-"Literary Chinese (Taiwan)",
-"Magahi (India)",
-"Maithili (India)",
-"Malagasy (Madagascar)",
-"Marshallese (Marshall Islands)",
-"Eastern Mari (Russia)",
-"Maori (New Zealand)",
-"Mískito (Nicaragua)",
-"Macedonian",
-"Macedonian (Macedonia)",
-"Malayalam (India)",
-"Manipuri (India)",
-"Mongolian (Mongolia)",
-"Marathi (India)",
-"Malay",
-"Malay (Malaysia)",
-"Maltese",
-"Maltese (Malta)",
-"Burmese (Myanmar)",
-"Erzya (Russia)",
-"Nahuatl languages (Mexico)",
-"Min Nan Chinese (Taiwan)",
-"Norwegian Bokmål",
-"Norwegian Bokmål (Norway)",
-"Low German (Germany)",
-"Low German (Netherlands)",
-"Nepali (Nepal)",
-"Central Nahuatl (Mexico)",
-"Niuean (Niue)",
-"Niuean (New Zealand)",
-"Dutch",
-"Dutch (Aruba)",
-"Dutch (Belgium)",
-"Dutch (Netherlands)",
-"Norwegian Nynorsk",
-"Norwegian Nynorsk (Norway)",
-"South Ndebele (South Africa)",
-"Pedi (South Africa)",
-"Occitan (France)",
-"Oromo",
-"Oromo (Ethiopia)",
-"Oromo (Kenya)",
-"Oriya (India)",
-"Ossetian (Russia)",
-"Panjabi (India)",
-"Papiamento",
-"Papiamento (Netherlands Antilles)",
-"Papiamento (Aruba)",
-"Papiamento (Curaçao)",
-"Panjabi (Pakistan)",
-"Polish",
-"Polish (Poland)",
-"Pirate",
-"Pushto (Afghanistan)",
-"Portuguese",
-"Portuguese (Brazil)",
-"Portuguese (Portugal)",
-"Ayacucho Quechua (Peru)",
-"Cusco Quechua (Peru)",
-"Rajasthani (India)",
-"Romanian",
-"Romanian (Romania)",
-"Russian",
-"Russian (Russia)",
-"Russian (Ukraine)",
-"Kinyarwanda (Rwanda)",
-"Sanskrit (India)",
-"Santali (India)",
-"Sardinian (Italy)",
-"Scots (Scotland)",
-"Sindhi (India)",
-"Northern Sami (Norway)",
-"Samogitian (Lithuania)",
-"Shuswap (Canada)",
-"Sidamo (Ethiopia)",
-"Sinhala (Sri Lanka)",
-"Slovak",
-"Slovak (Slovakia)",
-"Slovenian",
-"Slovenian (Slovenia)",
-"Somali",
-"Somali (Djibouti)",
-"Somali (Ethiopia)",
-"Somali (Kenya)",
-"Somali (Somalia)",
-"Songhai languages (Mali)",
-"Albanian",
-"Albanian (Albania)",
-"Albanian (Kosovo)",
-"Albanian (Macedonia)",
-"Serbian",
-"Serbian (Montenegro)",
-"Serbian (Serbia)",
-"Swati (South Africa)",
-"Southern Sotho (South Africa)",
-"Swedish",
-"Swedish (Finland)",
-"Swedish (Sweden)",
-"Swahili (Kenya)",
-"Swahili (Tanzania)",
-"Silesian (Poland)",
-"Tamil",
-"Tamil (India)",
-"Tamil (Sri Lanka)",
-"Tulu (India)",
-"Telugu (India)",
-"Tajik (Tajikistan)",
-"Chitwania Tharu (Nepal)",
-"Thai",
-"Thai (Thailand)",
-"Tigrinya",
-"Tigrinya (Eritrea)",
-"Tigrinya (Ethiopia)",
-"Tigre (Eritrea)",
-"Turkmen (Turkmenistan)",
-"Tagalog (Philippines)",
-"Tswana (South Africa)",
-"Turkish",
-"Turkish (Cyprus)",
-"Turkish (Turkey)",
-"Tsonga (South Africa)",
-"Tatar (Russia)",
-"Uighur (China)",
-"Ukrainian",
-"Ukrainian (Ukraine)",
-"Unami (United States)",
-"Urdu",
-"Urdu (India)",
-"Urdu (Pakistan)",
-"Uzbek",
-"Uzbek (Uzbekistan)",
-"Venda (South Africa)",
-"Vietnamese",
-"Vietnamese (Vietnam)",
-"Walloon (Belgium)",
-"Walser (Switzerland)",
-"Wolaytta (Ethiopia)",
-"Wolof (Senegal)",
-"Xhosa (South Africa)",
-"Yiddish (United States)",
-"Yoruba (Nigeria)",
-"Yue Chinese (Hong Kong)",
-"Chinese",
-"Chinese (China)",
-"Chinese (Hong Kong)",
-"Chinese (Singapore)",
-"Chinese (Taiwan)",
-"Zulu (South Africa)",
-0
+static const char *locale_names[] = {
+ "Afar",
+ "Afar (Djibouti)",
+ "Afar (Eritrea)",
+ "Afar (Ethiopia)",
+ "Afrikaans",
+ "Afrikaans (South Africa)",
+ "Aguaruna (Peru)",
+ "Akan (Ghana)",
+ "Amharic (Ethiopia)",
+ "Aragonese (Spain)",
+ "Angika (India)",
+ "Arabic",
+ "Arabic (United Arab Emirates)",
+ "Arabic (Bahrain)",
+ "Arabic (Algeria)",
+ "Arabic (Egypt)",
+ "Arabic (India)",
+ "Arabic (Iraq)",
+ "Arabic (Jordan)",
+ "Arabic (Kuwait)",
+ "Arabic (Lebanon)",
+ "Arabic (Libya)",
+ "Arabic (Morocco)",
+ "Arabic (Oman)",
+ "Arabic (Qatar)",
+ "Arabic (Saudi Arabia)",
+ "Arabic (Sudan)",
+ "Arabic (South Soudan)",
+ "Arabic (Syria)",
+ "Arabic (Tunisia)",
+ "Arabic (Yemen)",
+ "Assamese (India)",
+ "Asturian (Spain)",
+ "Southern Aymara (Peru)",
+ "Aymara (Peru)",
+ "Azerbaijani (Azerbaijan)",
+ "Belarusian",
+ "Belarusian (Belarus)",
+ "Bemba (Zambia)",
+ "Berber languages (Algeria)",
+ "Berber languages (Morocco)",
+ "Bulgarian",
+ "Bulgarian (Bulgaria)",
+ "Bhili (India)",
+ "Bhojpuri (India)",
+ "Bislama (Tuvalu)",
+ "Bengali",
+ "Bengali (Bangladesh)",
+ "Bengali (India)",
+ "Tibetan",
+ "Tibetan (China)",
+ "Tibetan (India)",
+ "Breton (France)",
+ "Bodo (India)",
+ "Bosnian (Bosnia and Herzegovina)",
+ "Bilin (Eritrea)",
+ "Catalan",
+ "Catalan (Andorra)",
+ "Catalan (Spain)",
+ "Catalan (France)",
+ "Catalan (Italy)",
+ "Chechen (Russia)",
+ "Cherokee (United States)",
+ "Mandarin Chinese (Taiwan)",
+ "Crimean Tatar (Ukraine)",
+ "Kashubian (Poland)",
+ "Czech",
+ "Czech (Czech Republic)",
+ "Chuvash (Russia)",
+ "Welsh (United Kingdom)",
+ "Danish",
+ "Danish (Denmark)",
+ "German",
+ "German (Austria)",
+ "German (Belgium)",
+ "German (Switzerland)",
+ "German (Germany)",
+ "German (Italy)",
+ "German (Luxembourg)",
+ "Dogri (India)",
+ "Dhivehi (Maldives)",
+ "Dzongkha (Bhutan)",
+ "Greek",
+ "Greek (Cyprus)",
+ "Greek (Greece)",
+ "English",
+ "English (Antigua and Barbuda)",
+ "English (Australia)",
+ "English (Botswana)",
+ "English (Canada)",
+ "English (Denmark)",
+ "English (United Kingdom)",
+ "English (Hong Kong)",
+ "English (Ireland)",
+ "English (Israel)",
+ "English (India)",
+ "English (Nigeria)",
+ "English (New Zealand)",
+ "English (Philippines)",
+ "English (Singapore)",
+ "English (United States)",
+ "English (South Africa)",
+ "English (Zambia)",
+ "English (Zimbabwe)",
+ "Esperanto",
+ "Spanish",
+ "Spanish (Argentina)",
+ "Spanish (Bolivia)",
+ "Spanish (Chile)",
+ "Spanish (Colombia)",
+ "Spanish (Costa Rica)",
+ "Spanish (Cuba)",
+ "Spanish (Dominican Republic)",
+ "Spanish (Ecuador)",
+ "Spanish (Spain)",
+ "Spanish (Guatemala)",
+ "Spanish (Honduras)",
+ "Spanish (Mexico)",
+ "Spanish (Nicaragua)",
+ "Spanish (Panama)",
+ "Spanish (Peru)",
+ "Spanish (Puerto Rico)",
+ "Spanish (Paraguay)",
+ "Spanish (El Salvador)",
+ "Spanish (United States)",
+ "Spanish (Uruguay)",
+ "Spanish (Venezuela)",
+ "Estonian",
+ "Estonian (Estonia)",
+ "Basque",
+ "Basque (Spain)",
+ "Persian",
+ "Persian (Iran)",
+ "Fulah (Senegal)",
+ "Finnish",
+ "Finnish (Finland)",
+ "Filipino (Philippines)",
+ "Faroese (Faroe Islands)",
+ "French",
+ "French (Belgium)",
+ "French (Canada)",
+ "French (Switzerland)",
+ "French (France)",
+ "French (Luxembourg)",
+ "Friulian (Italy)",
+ "Western Frisian (Germany)",
+ "Western Frisian (Netherlands)",
+ "Irish",
+ "Irish (Ireland)",
+ "Scottish Gaelic (United Kingdom)",
+ "Geez (Eritrea)",
+ "Geez (Ethiopia)",
+ "Galician (Spain)",
+ "Gujarati (India)",
+ "Manx (United Kingdom)",
+ "Hakka Chinese (Taiwan)",
+ "Hausa (Nigeria)",
+ "Hebrew",
+ "Hebrew (Israel)",
+ "Hindi",
+ "Hindi (India)",
+ "Chhattisgarhi (India)",
+ "Croatian",
+ "Croatian (Croatia)",
+ "Upper Sorbian (Germany)",
+ "Haitian (Haiti)",
+ "Hungarian",
+ "Hungarian (Hungary)",
+ "Huastec (Mexico)",
+ "Armenian (Armenia)",
+ "Interlingua (France)",
+ "Indonesian",
+ "Indonesian (Indonesia)",
+ "Igbo (Nigeria)",
+ "Inupiaq (Canada)",
+ "Icelandic",
+ "Icelandic (Iceland)",
+ "Italian",
+ "Italian (Switzerland)",
+ "Italian (Italy)",
+ "Inuktitut (Canada)",
+ "Japanese",
+ "Japanese (Japan)",
+ "Kabyle (Algeria)",
+ "Georgian (Georgia)",
+ "Kazakh (Kazakhstan)",
+ "Kalaallisut (Greenland)",
+ "Central Khmer (Cambodia)",
+ "Kannada (India)",
+ "Konkani (India)",
+ "Korean",
+ "Korean (South Korea)",
+ "Kashmiri (India)",
+ "Kurdish",
+ "Kurdish (Turkey)",
+ "Cornish (United Kingdom)",
+ "Kirghiz (Kyrgyzstan)",
+ "Luxembourgish (Luxembourg)",
+ "Ganda (Uganda)",
+ "Limburgan (Belgium)",
+ "Limburgan (Netherlands)",
+ "Ligurian (Italy)",
+ "Lingala (Congo)",
+ "Lao (Laos)",
+ "Lithuanian",
+ "Lithuanian (Lithuania)",
+ "Latvian",
+ "Latvian (Latvia)",
+ "Literary Chinese (Taiwan)",
+ "Magahi (India)",
+ "Maithili (India)",
+ "Malagasy (Madagascar)",
+ "Marshallese (Marshall Islands)",
+ "Eastern Mari (Russia)",
+ "Maori (New Zealand)",
+ "Mískito (Nicaragua)",
+ "Macedonian",
+ "Macedonian (Macedonia)",
+ "Malayalam (India)",
+ "Manipuri (India)",
+ "Mongolian (Mongolia)",
+ "Marathi (India)",
+ "Malay",
+ "Malay (Malaysia)",
+ "Maltese",
+ "Maltese (Malta)",
+ "Burmese (Myanmar)",
+ "Erzya (Russia)",
+ "Nahuatl languages (Mexico)",
+ "Min Nan Chinese (Taiwan)",
+ "Norwegian Bokmål",
+ "Norwegian Bokmål (Norway)",
+ "Low German (Germany)",
+ "Low German (Netherlands)",
+ "Nepali (Nepal)",
+ "Central Nahuatl (Mexico)",
+ "Niuean (Niue)",
+ "Niuean (New Zealand)",
+ "Dutch",
+ "Dutch (Aruba)",
+ "Dutch (Belgium)",
+ "Dutch (Netherlands)",
+ "Norwegian Nynorsk",
+ "Norwegian Nynorsk (Norway)",
+ "South Ndebele (South Africa)",
+ "Pedi (South Africa)",
+ "Occitan (France)",
+ "Oromo",
+ "Oromo (Ethiopia)",
+ "Oromo (Kenya)",
+ "Oriya (India)",
+ "Ossetian (Russia)",
+ "Panjabi (India)",
+ "Papiamento",
+ "Papiamento (Netherlands Antilles)",
+ "Papiamento (Aruba)",
+ "Papiamento (Curaçao)",
+ "Panjabi (Pakistan)",
+ "Polish",
+ "Polish (Poland)",
+ "Pirate",
+ "Pushto (Afghanistan)",
+ "Portuguese",
+ "Portuguese (Brazil)",
+ "Portuguese (Portugal)",
+ "Ayacucho Quechua (Peru)",
+ "Cusco Quechua (Peru)",
+ "Rajasthani (India)",
+ "Romanian",
+ "Romanian (Romania)",
+ "Russian",
+ "Russian (Russia)",
+ "Russian (Ukraine)",
+ "Kinyarwanda (Rwanda)",
+ "Sanskrit (India)",
+ "Santali (India)",
+ "Sardinian (Italy)",
+ "Scots (Scotland)",
+ "Sindhi (India)",
+ "Northern Sami (Norway)",
+ "Samogitian (Lithuania)",
+ "Shuswap (Canada)",
+ "Sidamo (Ethiopia)",
+ "Sinhala (Sri Lanka)",
+ "Slovak",
+ "Slovak (Slovakia)",
+ "Slovenian",
+ "Slovenian (Slovenia)",
+ "Somali",
+ "Somali (Djibouti)",
+ "Somali (Ethiopia)",
+ "Somali (Kenya)",
+ "Somali (Somalia)",
+ "Songhai languages (Mali)",
+ "Albanian",
+ "Albanian (Albania)",
+ "Albanian (Kosovo)",
+ "Albanian (Macedonia)",
+ "Serbian",
+ "Serbian (Montenegro)",
+ "Serbian (Serbia)",
+ "Swati (South Africa)",
+ "Southern Sotho (South Africa)",
+ "Swedish",
+ "Swedish (Finland)",
+ "Swedish (Sweden)",
+ "Swahili (Kenya)",
+ "Swahili (Tanzania)",
+ "Silesian (Poland)",
+ "Tamil",
+ "Tamil (India)",
+ "Tamil (Sri Lanka)",
+ "Tulu (India)",
+ "Telugu (India)",
+ "Tajik (Tajikistan)",
+ "Chitwania Tharu (Nepal)",
+ "Thai",
+ "Thai (Thailand)",
+ "Tigrinya",
+ "Tigrinya (Eritrea)",
+ "Tigrinya (Ethiopia)",
+ "Tigre (Eritrea)",
+ "Turkmen (Turkmenistan)",
+ "Tagalog (Philippines)",
+ "Tswana (South Africa)",
+ "Turkish",
+ "Turkish (Cyprus)",
+ "Turkish (Turkey)",
+ "Tsonga (South Africa)",
+ "Tatar (Russia)",
+ "Uighur (China)",
+ "Ukrainian",
+ "Ukrainian (Ukraine)",
+ "Unami (United States)",
+ "Urdu",
+ "Urdu (India)",
+ "Urdu (Pakistan)",
+ "Uzbek",
+ "Uzbek (Uzbekistan)",
+ "Venda (South Africa)",
+ "Vietnamese",
+ "Vietnamese (Vietnam)",
+ "Walloon (Belgium)",
+ "Walser (Switzerland)",
+ "Wolaytta (Ethiopia)",
+ "Wolof (Senegal)",
+ "Xhosa (South Africa)",
+ "Yiddish (United States)",
+ "Yoruba (Nigeria)",
+ "Yue Chinese (Hong Kong)",
+ "Chinese",
+ "Chinese (China)",
+ "Chinese (Hong Kong)",
+ "Chinese (Singapore)",
+ "Chinese (Taiwan)",
+ "Zulu (South Africa)",
+ 0
};
-bool TranslationServer::is_locale_valid(const String& p_locale) {
+bool TranslationServer::is_locale_valid(const String &p_locale) {
- const char **ptr=locale_list;
+ const char **ptr = locale_list;
while (*ptr) {
- if (*ptr==p_locale)
+ if (*ptr == p_locale)
return true;
ptr++;
}
return false;
-
}
Vector<String> TranslationServer::get_all_locales() {
Vector<String> locales;
- const char **ptr=locale_list;
+ const char **ptr = locale_list;
while (*ptr) {
locales.push_back(*ptr);
@@ -779,14 +778,13 @@ Vector<String> TranslationServer::get_all_locales() {
}
return locales;
-
}
-Vector<String> TranslationServer::get_all_locale_names(){
+Vector<String> TranslationServer::get_all_locale_names() {
Vector<String> locales;
- const char **ptr=locale_names;
+ const char **ptr = locale_names;
while (*ptr) {
locales.push_back(*ptr);
@@ -794,21 +792,19 @@ Vector<String> TranslationServer::get_all_locale_names(){
}
return locales;
-
}
+static String get_trimmed_locale(const String &p_locale) {
-static String get_trimmed_locale(const String& p_locale) {
-
- return p_locale.substr(0,2);
+ return p_locale.substr(0, 2);
}
-static bool is_valid_locale(const String& p_locale) {
+static bool is_valid_locale(const String &p_locale) {
- const char **ptr=locale_list;
+ const char **ptr = locale_list;
while (*ptr) {
- if (p_locale==*ptr)
+ if (p_locale == *ptr)
return true;
ptr++;
}
@@ -819,13 +815,13 @@ static bool is_valid_locale(const String& p_locale) {
PoolVector<String> Translation::_get_messages() const {
PoolVector<String> msgs;
- msgs.resize(translation_map.size()*2);
- int idx=0;
- for (const Map<StringName, StringName>::Element *E=translation_map.front();E;E=E->next()) {
+ msgs.resize(translation_map.size() * 2);
+ int idx = 0;
+ for (const Map<StringName, StringName>::Element *E = translation_map.front(); E; E = E->next()) {
- msgs.set(idx+0,E->key());
- msgs.set(idx+1,E->get());
- idx+=2;
+ msgs.set(idx + 0, E->key());
+ msgs.set(idx + 1, E->get());
+ idx += 2;
}
return msgs;
@@ -835,76 +831,70 @@ PoolVector<String> Translation::_get_message_list() const {
PoolVector<String> msgs;
msgs.resize(translation_map.size());
- int idx=0;
- for (const Map<StringName, StringName>::Element *E=translation_map.front();E;E=E->next()) {
+ int idx = 0;
+ for (const Map<StringName, StringName>::Element *E = translation_map.front(); E; E = E->next()) {
- msgs.set(idx,E->key());
- idx+=1;
+ msgs.set(idx, E->key());
+ idx += 1;
}
return msgs;
-
}
-void Translation::_set_messages(const PoolVector<String>& p_messages){
+void Translation::_set_messages(const PoolVector<String> &p_messages) {
- int msg_count=p_messages.size();
- ERR_FAIL_COND(msg_count%2);
+ int msg_count = p_messages.size();
+ ERR_FAIL_COND(msg_count % 2);
PoolVector<String>::Read r = p_messages.read();
- for(int i=0;i<msg_count;i+=2) {
+ for (int i = 0; i < msg_count; i += 2) {
- add_message( r[i+0], r[i+1] );
+ add_message(r[i + 0], r[i + 1]);
}
-
}
-
-void Translation::set_locale(const String& p_locale) {
+void Translation::set_locale(const String &p_locale) {
// replaces '-' with '_' for macOS Sierra-style locales
String univ_locale = p_locale.replace("-", "_");
-
- if(!is_valid_locale(univ_locale)) {
+
+ if (!is_valid_locale(univ_locale)) {
String trimmed_locale = get_trimmed_locale(univ_locale);
-
- ERR_EXPLAIN("Invalid Locale: "+trimmed_locale);
+
+ ERR_EXPLAIN("Invalid Locale: " + trimmed_locale);
ERR_FAIL_COND(!is_valid_locale(trimmed_locale));
-
- locale=trimmed_locale;
- }
- else {
- locale=univ_locale;
+
+ locale = trimmed_locale;
+ } else {
+ locale = univ_locale;
}
}
-void Translation::add_message( const StringName& p_src_text, const StringName& p_xlated_text ) {
-
- translation_map[p_src_text]=p_xlated_text;
+void Translation::add_message(const StringName &p_src_text, const StringName &p_xlated_text) {
+ translation_map[p_src_text] = p_xlated_text;
}
-StringName Translation::get_message(const StringName& p_src_text) const {
+StringName Translation::get_message(const StringName &p_src_text) const {
- const Map<StringName, StringName>::Element *E=translation_map.find(p_src_text);
+ const Map<StringName, StringName>::Element *E = translation_map.find(p_src_text);
if (!E)
return StringName();
return E->get();
}
-void Translation::erase_message(const StringName& p_src_text) {
+void Translation::erase_message(const StringName &p_src_text) {
translation_map.erase(p_src_text);
}
void Translation::get_message_list(List<StringName> *r_messages) const {
- for (const Map<StringName, StringName>::Element *E=translation_map.front();E;E=E->next()) {
+ for (const Map<StringName, StringName>::Element *E = translation_map.front(); E; E = E->next()) {
r_messages->push_back(E->key());
}
-
}
int Translation::get_message_count() const {
@@ -912,48 +902,43 @@ int Translation::get_message_count() const {
return translation_map.size();
};
-
void Translation::_bind_methods() {
- ClassDB::bind_method(D_METHOD("set_locale","locale"),&Translation::set_locale);
- ClassDB::bind_method(D_METHOD("get_locale"),&Translation::get_locale);
- ClassDB::bind_method(D_METHOD("add_message","src_message","xlated_message"),&Translation::add_message);
- ClassDB::bind_method(D_METHOD("get_message","src_message"),&Translation::get_message);
- ClassDB::bind_method(D_METHOD("erase_message","src_message"),&Translation::erase_message);
- ClassDB::bind_method(D_METHOD("get_message_list"),&Translation::_get_message_list);
- ClassDB::bind_method(D_METHOD("get_message_count"),&Translation::get_message_count);
- ClassDB::bind_method(D_METHOD("_set_messages"),&Translation::_set_messages);
- ClassDB::bind_method(D_METHOD("_get_messages"),&Translation::_get_messages);
-
- ADD_PROPERTY( PropertyInfo(Variant::POOL_STRING_ARRAY,"messages",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR), "_set_messages", "_get_messages") ;
- ADD_PROPERTY( PropertyInfo(Variant::STRING,"locale"), "set_locale", "get_locale") ;
+ ClassDB::bind_method(D_METHOD("set_locale", "locale"), &Translation::set_locale);
+ ClassDB::bind_method(D_METHOD("get_locale"), &Translation::get_locale);
+ ClassDB::bind_method(D_METHOD("add_message", "src_message", "xlated_message"), &Translation::add_message);
+ ClassDB::bind_method(D_METHOD("get_message", "src_message"), &Translation::get_message);
+ ClassDB::bind_method(D_METHOD("erase_message", "src_message"), &Translation::erase_message);
+ ClassDB::bind_method(D_METHOD("get_message_list"), &Translation::_get_message_list);
+ ClassDB::bind_method(D_METHOD("get_message_count"), &Translation::get_message_count);
+ ClassDB::bind_method(D_METHOD("_set_messages"), &Translation::_set_messages);
+ ClassDB::bind_method(D_METHOD("_get_messages"), &Translation::_get_messages);
+
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_STRING_ARRAY, "messages", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_messages", "_get_messages");
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "locale"), "set_locale", "get_locale");
}
Translation::Translation() {
- locale="en";
+ locale = "en";
}
-
-
///////////////////////////////////////////////
-
-void TranslationServer::set_locale(const String& p_locale) {
+void TranslationServer::set_locale(const String &p_locale) {
// replaces '-' with '_' for macOS Sierra-style locales
String univ_locale = p_locale.replace("-", "_");
-
- if(!is_valid_locale(univ_locale)) {
+
+ if (!is_valid_locale(univ_locale)) {
String trimmed_locale = get_trimmed_locale(univ_locale);
-
- ERR_EXPLAIN("Invalid Locale: "+trimmed_locale);
+
+ ERR_EXPLAIN("Invalid Locale: " + trimmed_locale);
ERR_FAIL_COND(!is_valid_locale(trimmed_locale));
-
- locale=trimmed_locale;
- }
- else {
- locale=univ_locale;
+
+ locale = trimmed_locale;
+ } else {
+ locale = univ_locale;
}
if (OS::get_singleton()->get_main_loop()) {
@@ -964,13 +949,11 @@ void TranslationServer::set_locale(const String& p_locale) {
String TranslationServer::get_locale() const {
return locale;
-
}
void TranslationServer::add_translation(const Ref<Translation> &p_translation) {
translations.insert(p_translation);
-
}
void TranslationServer::remove_translation(const Ref<Translation> &p_translation) {
@@ -982,7 +965,7 @@ void TranslationServer::clear() {
translations.clear();
};
-StringName TranslationServer::translate(const StringName& p_message) const {
+StringName TranslationServer::translate(const StringName &p_message) const {
//translate using locale
@@ -990,93 +973,88 @@ StringName TranslationServer::translate(const StringName& p_message) const {
return p_message;
StringName res;
- bool near_match=false;
- const CharType *lptr=&locale[0];
+ bool near_match = false;
+ const CharType *lptr = &locale[0];
+ for (const Set<Ref<Translation> >::Element *E = translations.front(); E; E = E->next()) {
- for (const Set< Ref<Translation> >::Element *E=translations.front();E;E=E->next()) {
-
- const Ref<Translation>& t = E->get();
+ const Ref<Translation> &t = E->get();
String l = t->get_locale();
- if (lptr[0]!=l[0] || lptr[1]!=l[1])
+ if (lptr[0] != l[0] || lptr[1] != l[1])
continue; // locale not match
//near match
- bool match = (l!=locale);
+ bool match = (l != locale);
if (near_match && !match)
continue; //only near-match once
- StringName r=t->get_message(p_message);
-
+ StringName r = t->get_message(p_message);
if (!r)
continue;
- res=r;
+ res = r;
if (match)
break;
else
- near_match=true;
-
+ near_match = true;
}
if (!res) {
//try again with fallback
- if (fallback.length()>=2) {
+ if (fallback.length() >= 2) {
- const CharType *fptr=&fallback[0];
- bool near_match=false;
- for (const Set< Ref<Translation> >::Element *E=translations.front();E;E=E->next()) {
+ const CharType *fptr = &fallback[0];
+ bool near_match = false;
+ for (const Set<Ref<Translation> >::Element *E = translations.front(); E; E = E->next()) {
- const Ref<Translation>& t = E->get();
+ const Ref<Translation> &t = E->get();
String l = t->get_locale();
- if (fptr[0]!=l[0] || fptr[1]!=l[1])
+ if (fptr[0] != l[0] || fptr[1] != l[1])
continue; // locale not match
//near match
- bool match = (l!=fallback);
+ bool match = (l != fallback);
if (near_match && !match)
continue; //only near-match once
- StringName r=t->get_message(p_message);
+ StringName r = t->get_message(p_message);
if (!r)
continue;
- res=r;
+ res = r;
if (match)
break;
else
- near_match=true;
-
+ near_match = true;
}
}
}
-
if (!res)
return p_message;
return res;
}
-TranslationServer *TranslationServer::singleton=NULL;
+TranslationServer *TranslationServer::singleton = NULL;
-bool TranslationServer::_load_translations(const String& p_from) {
+bool TranslationServer::_load_translations(const String &p_from) {
if (GlobalConfig::get_singleton()->has(p_from)) {
- PoolVector<String> translations=GlobalConfig::get_singleton()->get(p_from);
+ PoolVector<String> translations = GlobalConfig::get_singleton()->get(p_from);
- int tcount=translations.size();
+ int tcount = translations.size();
if (tcount) {
PoolVector<String>::Read r = translations.read();
- for(int i=0;i<tcount;i++) {
+ for (int i = 0; i < tcount; i++) {
//print_line( "Loading translation from " + r[i] );
Ref<Translation> tr = ResourceLoader::load(r[i]);
@@ -1092,36 +1070,35 @@ bool TranslationServer::_load_translations(const String& p_from) {
void TranslationServer::setup() {
- String test = GLOBAL_DEF("locale/test","");
- test=test.strip_edges();
- if (test!="")
- set_locale( test );
+ String test = GLOBAL_DEF("locale/test", "");
+ test = test.strip_edges();
+ if (test != "")
+ set_locale(test);
else
- set_locale( OS::get_singleton()->get_locale() );
- fallback = GLOBAL_DEF("locale/fallback","en");
+ set_locale(OS::get_singleton()->get_locale());
+ fallback = GLOBAL_DEF("locale/fallback", "en");
#ifdef TOOLS_ENABLED
{
- String options="";
- int idx=0;
- while(locale_list[idx]) {
- if (idx>0)
- options+=", ";
- options+=locale_list[idx];
+ String options = "";
+ int idx = 0;
+ while (locale_list[idx]) {
+ if (idx > 0)
+ options += ", ";
+ options += locale_list[idx];
idx++;
}
- GlobalConfig::get_singleton()->set_custom_property_info("locale/fallback",PropertyInfo(Variant::STRING,"locale/fallback",PROPERTY_HINT_ENUM,options));
+ GlobalConfig::get_singleton()->set_custom_property_info("locale/fallback", PropertyInfo(Variant::STRING, "locale/fallback", PROPERTY_HINT_ENUM, options));
}
#endif
//load translations
-
}
-void TranslationServer::set_tool_translation(const Ref<Translation>& p_translation) {
- tool_translation=p_translation;
+void TranslationServer::set_tool_translation(const Ref<Translation> &p_translation) {
+ tool_translation = p_translation;
}
-StringName TranslationServer::tool_translate(const StringName& p_message) const {
+StringName TranslationServer::tool_translate(const StringName &p_message) const {
if (tool_translation.is_valid()) {
StringName r = tool_translation->get_message(p_message);
@@ -1134,19 +1111,17 @@ StringName TranslationServer::tool_translate(const StringName& p_message) const
return p_message;
}
-
void TranslationServer::_bind_methods() {
- ClassDB::bind_method(D_METHOD("set_locale","locale"),&TranslationServer::set_locale);
- ClassDB::bind_method(D_METHOD("get_locale"),&TranslationServer::get_locale);
-
- ClassDB::bind_method(D_METHOD("translate","message"),&TranslationServer::translate);
+ ClassDB::bind_method(D_METHOD("set_locale", "locale"), &TranslationServer::set_locale);
+ ClassDB::bind_method(D_METHOD("get_locale"), &TranslationServer::get_locale);
- ClassDB::bind_method(D_METHOD("add_translation","translation:Translation"),&TranslationServer::add_translation);
- ClassDB::bind_method(D_METHOD("remove_translation","translation:Translation"),&TranslationServer::remove_translation);
+ ClassDB::bind_method(D_METHOD("translate", "message"), &TranslationServer::translate);
- ClassDB::bind_method(D_METHOD("clear"),&TranslationServer::clear);
+ ClassDB::bind_method(D_METHOD("add_translation", "translation:Translation"), &TranslationServer::add_translation);
+ ClassDB::bind_method(D_METHOD("remove_translation", "translation:Translation"), &TranslationServer::remove_translation);
+ ClassDB::bind_method(D_METHOD("clear"), &TranslationServer::clear);
}
void TranslationServer::load_translations() {
@@ -1154,21 +1129,17 @@ void TranslationServer::load_translations() {
String locale = get_locale();
bool found = _load_translations("locale/translations"); //all
- if (_load_translations("locale/translations_"+locale.substr(0,2)))
- found=true;
- if ( locale.substr(0,2) != locale ) {
- if (_load_translations("locale/translations_"+locale))
- found=true;
+ if (_load_translations("locale/translations_" + locale.substr(0, 2)))
+ found = true;
+ if (locale.substr(0, 2) != locale) {
+ if (_load_translations("locale/translations_" + locale))
+ found = true;
}
-
-
}
TranslationServer::TranslationServer() {
-
- singleton=this;
- locale="en";
- enabled=true;
-
+ singleton = this;
+ locale = "en";
+ enabled = true;
}