Open karlingen opened 3 years ago
@karlingen That's brilliant! Thanks so much! I'll take a look later today to see if I can integrate it.
@karlingen I've played with this a bit. I've come up with this code, but it's still rough and not perfect:
import Foundation
struct LanguageInfo: Codable {
let name: String
let symbol: String
}
let availableLocaleIDs = Locale.availableIdentifiers
let outputLocale = NSLocale(localeIdentifier: "en_US")
var allCodes: [LanguageInfo] = []
var langsByDisplayName: [String: LanguageInfo] = [:]
for localeCode in availableLocaleIDs {
let displayName = outputLocale.displayName(forKey: NSLocale.Key.identifier, value: localeCode)!
let langInfo = LanguageInfo(name: displayName, symbol: localeCode.replacingOccurrences(of: "_", with: "-"))
langsByDisplayName[displayName] = langInfo
}
for name in langsByDisplayName.keys.sorted() {
let langInfo = langsByDisplayName[name]
allCodes.append(langInfo!)
}
let encoder = JSONEncoder()
let encodedData = try! encoder.encode(allCodes)
print(String(data: encodedData, encoding: .utf8)!)
But here's the big problem: The language list doesn't match the list in Xcode 100%. For example, Xcode 12.5 lists a language called "Interlingue (ie)". That language is missing in the output of the code above. I wonder how to obtain a 100% match of the list of languages a given Xcode version lists in its UI.
@karlingen Created a PR here: https://github.com/jfahrenkrug/xcode-languages/pull/4
@jfahrenkrug Good catch! Seems like we could combine the output with the language codes given by Locale.isoLanguageCodes
like so:
import Foundation
struct LanguageInfo: Codable {
let name: String
let symbol: String
}
let availableLocaleIDs = Locale.availableIdentifiers
let outputLocale = NSLocale(localeIdentifier: "en_US")
var allCodes: [LanguageInfo] = []
var langsByDisplayName: [String: LanguageInfo] = [:]
for localeCode in availableLocaleIDs {
let displayName = outputLocale.displayName(forKey: NSLocale.Key.identifier, value: localeCode)!
let langInfo = LanguageInfo(name: displayName, symbol: localeCode.replacingOccurrences(of: "_", with: "-"))
langsByDisplayName[displayName] = langInfo
}
// Find language codes that "availableIdentifiers" failed to provide
for localeCode in Locale.isoLanguageCodes {
if !availableLocaleIDs.contains(where: { $0.lowercased() == localeCode.lowercased() }) {
if let displayName = outputLocale.displayName(forKey: NSLocale.Key.identifier, value: localeCode) {
let langInfo = LanguageInfo(name: displayName, symbol: localeCode.replacingOccurrences(of: "_", with: "-"))
langsByDisplayName[displayName] = langInfo
} else {
// The system failed to get a Display Name for the provided language code.
// Todo: Should we do something about it?
// print(localeCode)
// Currently, this outputs the following IDs: mdh, mis, mo, swc
}
}
}
for name in langsByDisplayName.keys.sorted() {
let langInfo = langsByDisplayName[name]
allCodes.append(langInfo!)
}
let encoder = JSONEncoder()
let encodedData = try! encoder.encode(allCodes)
print(String(data: encodedData, encoding: .utf8)!)
This yields the following languages:
@jfahrenkrug Below is the list of language codes that Locale.availableIdentifiers
fails to provide:
However, the problem is that sometimes the parent language code is supported by Xcode, and sometimes it isn't.
For instance, Locale.isoLanguageCodes
returns both kn
and kn-IN
, but Xcode shows kn-IN
as a child to kn
, and makes the parent kn
non-selectable.
But for the language Basaa
, we are able to select both bas
and bas-CM
Not sure how we should tackle this..
@karlingen Sorry I never replied to this. It would be worth a try to see what would happen if an kn.lproj
folder were added. Would it work?
I managed to get an updated language list by running the code below. It's without the country name for now.
I thought it might be a bit easier than going through the list in Xcode.
Formatted output:
Click to expand the list
``` Afrikaans (af) Afrikaans (af_NA) Afrikaans (af_ZA) Aghem (agq) Aghem (agq_CM) Akan (ak) Akan (ak_GH) Albanian (sq) Albanian (sq_AL) Albanian (sq_MK) Albanian (sq_XK) Amharic (am) Amharic (am_ET) Arabic (ar) Arabic (ar_001) Arabic (ar_AE) Arabic (ar_BH) Arabic (ar_DJ) Arabic (ar_DZ) Arabic (ar_EG) Arabic (ar_EH) Arabic (ar_ER) Arabic (ar_IL) Arabic (ar_IQ) Arabic (ar_JO) Arabic (ar_KM) Arabic (ar_KW) Arabic (ar_LB) Arabic (ar_LY) Arabic (ar_MA) Arabic (ar_MR) Arabic (ar_OM) Arabic (ar_PS) Arabic (ar_QA) Arabic (ar_SA) Arabic (ar_SD) Arabic (ar_SO) Arabic (ar_SS) Arabic (ar_SY) Arabic (ar_TD) Arabic (ar_TN) Arabic (ar_YE) Armenian (hy) Armenian (hy_AM) Assamese (as) Assamese (as_IN) Asturian (ast) Asturian (ast_ES) Asu (asa) Asu (asa_TZ) Azerbaijani (az) Azerbaijani (az_Cyrl) Azerbaijani (az_Cyrl_AZ) Azerbaijani (az_Latn) Azerbaijani (az_Latn_AZ) Bafia (ksf) Bafia (ksf_CM) Bambara (bm) Bambara (bm_ML) Bangla (bn) Bangla (bn_BD) Bangla (bn_IN) Basaa (bas) Basaa (bas_CM) Bashkir (ba) Bashkir (ba_RU) Basque (eu) Basque (eu_ES) Belarusian (be) Belarusian (be_BY) Bemba (bem) Bemba (bem_ZM) Bena (bez) Bena (bez_TZ) Blin (byn) Blin (byn_ER) Bodo (brx) Bodo (brx_IN) Bosnian (bs) Bosnian (bs_Cyrl) Bosnian (bs_Cyrl_BA) Bosnian (bs_Latn) Bosnian (bs_Latn_BA) Breton (br) Breton (br_FR) Bulgarian (bg) Bulgarian (bg_BG) Burmese (my) Burmese (my_MM) Cantonese (yue) Cantonese (yue_Hans) Cantonese (yue_Hans_CN) Cantonese (yue_Hant) Cantonese (yue_Hant_HK) Catalan (ca) Catalan (ca_AD) Catalan (ca_ES) Catalan (ca_FR) Catalan (ca_IT) Cebuano (ceb) Cebuano (ceb_PH) Central Atlas Tamazight (tzm) Central Atlas Tamazight (tzm_MA) Chakma (ccp) Chakma (ccp_BD) Chakma (ccp_IN) Chechen (ce) Chechen (ce_RU) Cherokee (chr) Cherokee (chr_US) Chiga (cgg) Chiga (cgg_UG) Chinese (zh) Chinese (zh_Hans) Chinese (zh_Hans_CN) Chinese (zh_Hans_HK) Chinese (zh_Hans_MO) Chinese (zh_Hans_SG) Chinese (zh_Hant) Chinese (zh_Hant_CN) Chinese (zh_Hant_HK) Chinese (zh_Hant_MO) Chinese (zh_Hant_TW) Chuvash (cv) Chuvash (cv_RU) Colognian (ksh) Colognian (ksh_DE) Cornish (kw) Cornish (kw_GB) Corsican (co) Corsican (co_FR) Croatian (hr) Croatian (hr_BA) Croatian (hr_HR) Czech (cs) Czech (cs_CZ) Danish (da) Danish (da_DK) Danish (da_GL) Dhivehi (dv) Dhivehi (dv_MV) Duala (dua) Duala (dua_CM) Dutch (nl) Dutch (nl_AW) Dutch (nl_BE) Dutch (nl_BQ) Dutch (nl_CW) Dutch (nl_NL) Dutch (nl_SR) Dutch (nl_SX) Dzongkha (dz) Dzongkha (dz_BT) Embu (ebu) Embu (ebu_KE) English (en) English (en_001) English (en_150) English (en_AE) English (en_AG) English (en_AI) English (en_AL) English (en_AR) English (en_AS) English (en_AT) English (en_AU) English (en_BB) English (en_BD) English (en_BE) English (en_BG) English (en_BI) English (en_BM) English (en_BN) English (en_BR) English (en_BS) English (en_BW) English (en_BZ) English (en_CA) English (en_CC) English (en_CH) English (en_CK) English (en_CL) English (en_CM) English (en_CN) English (en_CO) English (en_CX) English (en_CY) English (en_CZ) English (en_DE) English (en_DG) English (en_DK) English (en_DM) English (en_EE) English (en_ER) English (en_FI) English (en_FJ) English (en_FK) English (en_FM) English (en_FR) English (en_GB) English (en_GD) English (en_GG) English (en_GH) English (en_GI) English (en_GM) English (en_GR) English (en_GU) English (en_GY) English (en_HK) English (en_HU) English (en_ID) English (en_IE) English (en_IL) English (en_IM) English (en_IN) English (en_IO) English (en_JE) English (en_JM) English (en_JP) English (en_KE) English (en_KI) English (en_KN) English (en_KR) English (en_KY) English (en_LC) English (en_LR) English (en_LS) English (en_LT) English (en_LV) English (en_MG) English (en_MH) English (en_MM) English (en_MO) English (en_MP) English (en_MS) English (en_MT) English (en_MU) English (en_MV) English (en_MW) English (en_MX) English (en_MY) English (en_NA) English (en_NF) English (en_NG) English (en_NL) English (en_NO) English (en_NR) English (en_NU) English (en_NZ) English (en_PG) English (en_PH) English (en_PK) English (en_PL) English (en_PN) English (en_PR) English (en_PT) English (en_PW) English (en_RU) English (en_RW) English (en_SA) English (en_SB) English (en_SC) English (en_SD) English (en_SE) English (en_SG) English (en_SH) English (en_SI) English (en_SK) English (en_SL) English (en_SS) English (en_SX) English (en_SZ) English (en_TC) English (en_TH) English (en_TK) English (en_TO) English (en_TR) English (en_TT) English (en_TV) English (en_TW) English (en_TZ) English (en_UA) English (en_UG) English (en_UM) English (en_US) English (en_US_POSIX) English (en_VC) English (en_VG) English (en_VI) English (en_VU) English (en_WS) English (en_ZA) English (en_ZM) English (en_ZW) Erzya (myv) Erzya (myv_RU) Esperanto (eo) Esperanto (eo_001) Estonian (et) Estonian (et_EE) Ewe (ee) Ewe (ee_GH) Ewe (ee_TG) Ewondo (ewo) Ewondo (ewo_CM) Faroese (fo) Faroese (fo_DK) Faroese (fo_FO) Filipino (fil) Filipino (fil_PH) Finnish (fi) Finnish (fi_FI) French (fr) French (fr_BE) French (fr_BF) French (fr_BI) French (fr_BJ) French (fr_BL) French (fr_CA) French (fr_CD) French (fr_CF) French (fr_CG) French (fr_CH) French (fr_CI) French (fr_CM) French (fr_DJ) French (fr_DZ) French (fr_FR) French (fr_GA) French (fr_GF) French (fr_GN) French (fr_GP) French (fr_GQ) French (fr_HT) French (fr_KM) French (fr_LU) French (fr_MA) French (fr_MC) French (fr_MF) French (fr_MG) French (fr_ML) French (fr_MQ) French (fr_MR) French (fr_MU) French (fr_NC) French (fr_NE) French (fr_PF) French (fr_PM) French (fr_RE) French (fr_RW) French (fr_SC) French (fr_SN) French (fr_SY) French (fr_TD) French (fr_TG) French (fr_TN) French (fr_VU) French (fr_WF) French (fr_YT) Friulian (fur) Friulian (fur_IT) Fulah (ff) Fulah (ff_Latn) Fulah (ff_Latn_BF) Fulah (ff_Latn_CM) Fulah (ff_Latn_GH) Fulah (ff_Latn_GM) Fulah (ff_Latn_GN) Fulah (ff_Latn_GW) Fulah (ff_Latn_LR) Fulah (ff_Latn_MR) Fulah (ff_Latn_NE) Fulah (ff_Latn_NG) Fulah (ff_Latn_SL) Fulah (ff_Latn_SN) Ga (gaa) Ga (gaa_GH) Galician (gl) Galician (gl_ES) Ganda (lg) Ganda (lg_UG) Geez (gez) Geez (gez_ER) Geez (gez_ET) Georgian (ka) Georgian (ka_GE) German (de) German (de_AT) German (de_BE) German (de_CH) German (de_DE) German (de_IT) German (de_LI) German (de_LU) Greek (el) Greek (el_CY) Greek (el_GR) Guarani (gn) Guarani (gn_PY) Gujarati (gu) Gujarati (gu_IN) Gusii (guz) Gusii (guz_KE) Hausa (ha) Hausa (ha_GH) Hausa (ha_NE) Hausa (ha_NG) Hawaiian (haw) Hawaiian (haw_US) Hebrew (he) Hebrew (he_IL) Hindi (hi) Hindi (hi_IN) Hindi (hi_Latn) Hindi (hi_Latn_IN) Hungarian (hu) Hungarian (hu_HU) Icelandic (is) Icelandic (is_IS) Ido (io) Ido (io_001) Igbo (ig) Igbo (ig_NG) Inari Sami (smn) Inari Sami (smn_FI) Indonesian (id) Indonesian (id_ID) Interlingua (ia) Interlingua (ia_001) Inuktitut (iu) Inuktitut (iu_CA) Irish (ga) Irish (ga_GB) Irish (ga_IE) Italian (it) Italian (it_CH) Italian (it_IT) Italian (it_SM) Italian (it_VA) Japanese (ja) Japanese (ja_JP) Javanese (jv) Javanese (jv_ID) Jju (kaj) Jju (kaj_NG) Jola-Fonyi (dyo) Jola-Fonyi (dyo_SN) Kabuverdianu (kea) Kabuverdianu (kea_CV) Kabyle (kab) Kabyle (kab_DZ) Kako (kkj) Kako (kkj_CM) Kalaallisut (kl) Kalaallisut (kl_GL) Kalenjin (kln) Kalenjin (kln_KE) Kamba (kam) Kamba (kam_KE) Kannada (kn) Kannada (kn_IN) Kashmiri (ks) Kashmiri (ks_Arab) Kashmiri (ks_Arab_IN) Kashmiri (ks_Aran) Kashmiri (ks_Aran_IN) Kashmiri (ks_Deva) Kashmiri (ks_Deva_IN) Kazakh (kk) Kazakh (kk_KZ) Khmer (km) Khmer (km_KH) Kikuyu (ki) Kikuyu (ki_KE) Kinyarwanda (rw) Kinyarwanda (rw_RW) Konkani (kok) Konkani (kok_IN) Korean (ko) Korean (ko_KP) Korean (ko_KR) Koyra Chiini (khq) Koyra Chiini (khq_ML) Koyraboro Senni (ses) Koyraboro Senni (ses_ML) Kpelle (kpe) Kpelle (kpe_GN) Kpelle (kpe_LR) Kurdish (ckb) Kurdish (ckb_IQ) Kurdish (ckb_IR) Kurdish (ku) Kurdish (ku_TR) Kwasio (nmg) Kwasio (nmg_CM) Kyrgyz (ky) Kyrgyz (ky_KG) Lakota (lkt) Lakota (lkt_US) Langi (lag) Langi (lag_TZ) Lao (lo) Lao (lo_LA) Latvian (lv) Latvian (lv_LV) Lingala (ln) Lingala (ln_AO) Lingala (ln_CD) Lingala (ln_CF) Lingala (ln_CG) Lithuanian (lt) Lithuanian (lt_LT) Lojban (jbo) Lojban (jbo_001) Low German (nds) Low German (nds_DE) Low German (nds_NL) Lower Sorbian (dsb) Lower Sorbian (dsb_DE) Luba-Katanga (lu) Luba-Katanga (lu_CD) Luo (luo) Luo (luo_KE) Luxembourgish (lb) Luxembourgish (lb_LU) Luyia (luy) Luyia (luy_KE) Macedonian (mk) Macedonian (mk_MK) Machame (jmc) Machame (jmc_TZ) Makhuwa-Meetto (mgh) Makhuwa-Meetto (mgh_MZ) Makonde (kde) Makonde (kde_TZ) Malagasy (mg) Malagasy (mg_MG) Malay (ms) Malay (ms_Arab) Malay (ms_Arab_BN) Malay (ms_Arab_MY) Malay (ms_BN) Malay (ms_MY) Malay (ms_SG) Malayalam (ml) Malayalam (ml_IN) Maltese (mt) Maltese (mt_MT) Manipuri (mni) Manipuri (mni_Beng) Manipuri (mni_Beng_IN) Manipuri (mni_Mtei) Manipuri (mni_Mtei_IN) Manx (gv) Manx (gv_IM) Maori (mi) Maori (mi_NZ) Mapuche (arn) Mapuche (arn_CL) Marathi (mr) Marathi (mr_IN) Masai (mas) Masai (mas_KE) Masai (mas_TZ) Mazanderani (mzn) Mazanderani (mzn_IR) Meru (mer) Meru (mer_KE) Metaʼ (mgo) Metaʼ (mgo_CM) Mohawk (moh) Mohawk (moh_CA) Mongolian (mn) Mongolian (mn_MN) Morisyen (mfe) Morisyen (mfe_MU) Mundang (mua) Mundang (mua_CM) Nama (naq) Nama (naq_NA) Nepali (ne) Nepali (ne_IN) Nepali (ne_NP) Ngiemboon (nnh) Ngiemboon (nnh_CM) Ngomba (jgo) Ngomba (jgo_CM) North Ndebele (nd) North Ndebele (nd_ZW) Northern Luri (lrc) Northern Luri (lrc_IQ) Northern Luri (lrc_IR) Northern Sami (se) Northern Sami (se_FI) Northern Sami (se_NO) Northern Sami (se_SE) Northern Sotho (nso) Northern Sotho (nso_ZA) Norwegian Bokmål (nb) Norwegian Bokmål (nb_NO) Norwegian Bokmål (nb_SJ) Norwegian Nynorsk (nn) Norwegian Nynorsk (nn_NO) Nuer (nus) Nuer (nus_SS) Nyanja (ny) Nyanja (ny_MW) Nyankole (nyn) Nyankole (nyn_UG) N’Ko (nqo) N’Ko (nqo_GN) Occitan (oc) Occitan (oc_FR) Odia (or) Odia (or_IN) Oromo (om) Oromo (om_ET) Oromo (om_KE) Ossetic (os) Ossetic (os_GE) Ossetic (os_RU) Pashto (ps) Pashto (ps_AF) Pashto (ps_PK) Persian (fa) Persian (fa_AF) Persian (fa_IR) Polish (pl) Polish (pl_PL) Portuguese (pt) Portuguese (pt_AO) Portuguese (pt_BR) Portuguese (pt_CH) Portuguese (pt_CV) Portuguese (pt_FR) Portuguese (pt_GQ) Portuguese (pt_GW) Portuguese (pt_LU) Portuguese (pt_MO) Portuguese (pt_MZ) Portuguese (pt_PT) Portuguese (pt_ST) Portuguese (pt_TL) Punjabi (pa) Punjabi (pa_Arab) Punjabi (pa_Arab_PK) Punjabi (pa_Guru) Punjabi (pa_Guru_IN) Quechua (qu) Quechua (qu_BO) Quechua (qu_EC) Quechua (qu_PE) Romanian (ro) Romanian (ro_MD) Romanian (ro_RO) Romansh (rm) Romansh (rm_CH) Rombo (rof) Rombo (rof_TZ) Rundi (rn) Rundi (rn_BI) Russian (ru) Russian (ru_BY) Russian (ru_KG) Russian (ru_KZ) Russian (ru_MD) Russian (ru_RU) Russian (ru_UA) Rwa (rwk) Rwa (rwk_TZ) Sakha (sah) Sakha (sah_RU) Samburu (saq) Samburu (saq_KE) Sango (sg) Sango (sg_CF) Sangu (sbp) Sangu (sbp_TZ) Sanskrit (sa) Sanskrit (sa_IN) Santali (sat) Santali (sat_Deva) Santali (sat_Deva_IN) Santali (sat_Olck) Santali (sat_Olck_IN) Sardinian (sc) Sardinian (sc_IT) Scottish Gaelic (gd) Scottish Gaelic (gd_GB) Sena (seh) Sena (seh_MZ) Serbian (sr) Serbian (sr_Cyrl) Serbian (sr_Cyrl_BA) Serbian (sr_Cyrl_ME) Serbian (sr_Cyrl_RS) Serbian (sr_Cyrl_XK) Serbian (sr_Latn) Serbian (sr_Latn_BA) Serbian (sr_Latn_ME) Serbian (sr_Latn_RS) Serbian (sr_Latn_XK) Shambala (ksb) Shambala (ksb_TZ) Shona (sn) Shona (sn_ZW) Sichuan Yi (ii) Sichuan Yi (ii_CN) Sicilian (scn) Sicilian (scn_IT) Sindhi (sd) Sindhi (sd_Deva) Sindhi (sd_Deva_IN) Sindhi (sd_PK) Sinhala (si) Sinhala (si_LK) Slovak (sk) Slovak (sk_SK) Slovenian (sl) Slovenian (sl_SI) Soga (xog) Soga (xog_UG) Somali (so) Somali (so_DJ) Somali (so_ET) Somali (so_KE) Somali (so_SO) Sorani Sorani Sorani South Ndebele (nr) South Ndebele (nr_ZA) Southern Sotho (st) Southern Sotho (st_LS) Southern Sotho (st_ZA) Spanish (es) Spanish (es_419) Spanish (es_AG) Spanish (es_AR) Spanish (es_BB) Spanish (es_BM) Spanish (es_BO) Spanish (es_BQ) Spanish (es_BR) Spanish (es_BS) Spanish (es_BZ) Spanish (es_CA) Spanish (es_CL) Spanish (es_CO) Spanish (es_CR) Spanish (es_CU) Spanish (es_CW) Spanish (es_DM) Spanish (es_DO) Spanish (es_EA) Spanish (es_EC) Spanish (es_ES) Spanish (es_GD) Spanish (es_GQ) Spanish (es_GT) Spanish (es_GY) Spanish (es_HN) Spanish (es_HT) Spanish (es_IC) Spanish (es_KN) Spanish (es_KY) Spanish (es_LC) Spanish (es_MX) Spanish (es_NI) Spanish (es_PA) Spanish (es_PE) Spanish (es_PH) Spanish (es_PR) Spanish (es_PY) Spanish (es_SV) Spanish (es_TC) Spanish (es_TT) Spanish (es_US) Spanish (es_UY) Spanish (es_VC) Spanish (es_VE) Spanish (es_VG) Spanish (es_VI) Standard Moroccan Tamazight (zgh) Standard Moroccan Tamazight (zgh_MA) Swahili (sw) Swahili (sw_CD) Swahili (sw_KE) Swahili (sw_TZ) Swahili (sw_UG) Swati (ss) Swati (ss_SZ) Swati (ss_ZA) Swedish (sv) Swedish (sv_AX) Swedish (sv_FI) Swedish (sv_SE) Swiss German (gsw) Swiss German (gsw_CH) Swiss German (gsw_FR) Swiss German (gsw_LI) Syriac (syr) Syriac (syr_IQ) Syriac (syr_SY) Tachelhit (shi) Tachelhit (shi_Latn) Tachelhit (shi_Latn_MA) Tachelhit (shi_Tfng) Tachelhit (shi_Tfng_MA) Taita (dav) Taita (dav_KE) Tajik (tg) Tajik (tg_TJ) Tamil (ta) Tamil (ta_IN) Tamil (ta_LK) Tamil (ta_MY) Tamil (ta_SG) Taroko (trv) Taroko (trv_TW) Tasawaq (twq) Tasawaq (twq_NE) Tatar (tt) Tatar (tt_RU) Telugu (te) Telugu (te_IN) Teso (teo) Teso (teo_KE) Teso (teo_UG) Thai (th) Thai (th_TH) Tibetan (bo) Tibetan (bo_CN) Tibetan (bo_IN) Tigre (tig) Tigre (tig_ER) Tigrinya (ti) Tigrinya (ti_ER) Tigrinya (ti_ET) Tongan (to) Tongan (to_TO) Tsonga (ts) Tsonga (ts_ZA) Tswana (tn) Tswana (tn_BW) Tswana (tn_ZA) Turkish (tr) Turkish (tr_CY) Turkish (tr_TR) Turkmen (tk) Turkmen (tk_TM) Tyap (kcg) Tyap (kcg_NG) Ukrainian (uk) Ukrainian (uk_UA) Upper Sorbian (hsb) Upper Sorbian (hsb_DE) Urdu (ur) Urdu (ur_Arab) Urdu (ur_Arab_IN) Urdu (ur_Arab_PK) Urdu (ur_Aran) Uyghur (ug) Uyghur (ug_CN) Uzbek (uz) Uzbek (uz_Arab) Uzbek (uz_Arab_AF) Uzbek (uz_Cyrl) Uzbek (uz_Cyrl_UZ) Uzbek (uz_Latn) Uzbek (uz_Latn_UZ) Vai (vai) Vai (vai_Latn) Vai (vai_Latn_LR) Vai (vai_Vaii) Vai (vai_Vaii_LR) Venda (ve) Venda (ve_ZA) Vietnamese (vi) Vietnamese (vi_VN) Vunjo (vun) Vunjo (vun_TZ) Walloon (wa) Walloon (wa_BE) Walser (wae) Walser (wae_CH) Welsh (cy) Welsh (cy_GB) Western Frisian (fy) Western Frisian (fy_NL) Wolaytta (wal) Wolaytta (wal_ET) Wolof (wo) Wolof (wo_SN) Xhosa (xh) Xhosa (xh_ZA) Yangben (yav) Yangben (yav_CM) Yiddish (yi) Yiddish (yi_001) Yoruba (yo) Yoruba (yo_BJ) Yoruba (yo_NG) Zarma (dje) Zarma (dje_NE) Zulu (zu) Zulu (zu_ZA) ```