Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated language list from XCode 12.5 #3

Open
karlingen opened this issue Sep 16, 2021 · 6 comments
Open

Updated language list from XCode 12.5 #3

karlingen opened this issue Sep 16, 2021 · 6 comments
Assignees

Comments

@karlingen
Copy link
Collaborator

karlingen commented Sep 16, 2021

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.

let availableLocaleIDs = Locale.availableIdentifiers
var allCodes: [String: Any] = [:]
for langCode in availableLocaleIDs {
    let language = Locale.autoupdatingCurrent.localizedString(forLanguageCode: langCode)
    allCodes[langCode] = language
}

print(allCodes)

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)
@jfahrenkrug
Copy link
Owner

@karlingen That's brilliant! Thanks so much! I'll take a look later today to see if I can integrate it.

@jfahrenkrug jfahrenkrug self-assigned this Sep 16, 2021
@jfahrenkrug
Copy link
Owner

@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.

Screen Shot 2021-09-16 at 12 02 19 PM

@jfahrenkrug
Copy link
Owner

@karlingen Created a PR here: #4

@karlingen
Copy link
Collaborator Author

karlingen commented Sep 17, 2021

@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:

Click to expand the list
Abkhazian (ab)
Achinese (ace)
Acoli (ach)
Adangme (ada)
Adyghe (ady)
Afar (aa)
Afrihili (afh)
Afrikaans (af)
Afrikaans (Namibia) (af-NA)
Afrikaans (South Africa) (af-ZA)
Aghem (agq)
Aghem (Cameroon) (agq-CM)
Ainu (ain)
Akan (ak)
Akan (Ghana) (ak-GH)
Akkadian (akk)
Akoose (bss)
Alabama (akz)
Albanian (sq)
Albanian (Albania) (sq-AL)
Albanian (Kosovo) (sq-XK)
Albanian (North Macedonia) (sq-MK)
Aleut (ale)
Algerian Arabic (arq)
American Sign Language (ase)
Amharic (am)
Amharic (Ethiopia) (am-ET)
Ancient Egyptian (egy)
Ancient Greek (grc)
Angika (anp)
Ao Naga (njo)
Arabic (ar)
Arabic (Algeria) (ar-DZ)
Arabic (Bahrain) (ar-BH)
Arabic (Chad) (ar-TD)
Arabic (Comoros) (ar-KM)
Arabic (Djibouti) (ar-DJ)
Arabic (Egypt) (ar-EG)
Arabic (Eritrea) (ar-ER)
Arabic (Iraq) (ar-IQ)
Arabic (Israel) (ar-IL)
Arabic (Jordan) (ar-JO)
Arabic (Kuwait) (ar-KW)
Arabic (Lebanon) (ar-LB)
Arabic (Libya) (ar-LY)
Arabic (Mauritania) (ar-MR)
Arabic (Morocco) (ar-MA)
Arabic (Oman) (ar-OM)
Arabic (Palestinian Territories) (ar-PS)
Arabic (Qatar) (ar-QA)
Arabic (Saudi Arabia) (ar-SA)
Arabic (Somalia) (ar-SO)
Arabic (South Sudan) (ar-SS)
Arabic (Sudan) (ar-SD)
Arabic (Syria) (ar-SY)
Arabic (Tunisia) (ar-TN)
Arabic (United Arab Emirates) (ar-AE)
Arabic (Western Sahara) (ar-EH)
Arabic (World) (ar-001)
Arabic (Yemen) (ar-YE)
Arabic, Najdi (ars)
Aragonese (an)
Aramaic (arc)
Araona (aro)
Arapaho (arp)
Arawak (arw)
Armenian (hy)
Armenian (Armenia) (hy-AM)
Aromanian (rup)
Arpitan (frp)
Assamese (as)
Assamese (India) (as-IN)
Asturian (ast)
Asturian (Spain) (ast-ES)
Asu (asa)
Asu (Tanzania) (asa-TZ)
Atsam (cch)
Avaric (av)
Avestan (ae)
Awadhi (awa)
Aymara (ay)
Azerbaijani (az)
Azerbaijani (Cyrillic) (az-Cyrl)
Azerbaijani (Cyrillic, Azerbaijan) (az-Cyrl-AZ)
Azerbaijani (Latin) (az-Latn)
Azerbaijani (Latin, Azerbaijan) (az-Latn-AZ)
Badaga (bfq)
Bafia (ksf)
Bafia (Cameroon) (ksf-CM)
Bafut (bfd)
Bakhtiari (bqi)
Balinese (ban)
Baluchi (bal)
Bambara (bm)
Bambara (Mali) (bm-ML)
Bamun (bax)
Bangla (bn)
Bangla (Bangladesh) (bn-BD)
Bangla (India) (bn-IN)
Banjar (bjn)
Basaa (bas)
Basaa (Cameroon) (bas-CM)
Bashkir (ba)
Bashkir (Russia) (ba-RU)
Basque (eu)
Basque (Spain) (eu-ES)
Batak Toba (bbc)
Bavarian (bar)
Beja (bej)
Belarusian (be)
Belarusian (Belarus) (be-BY)
Bemba (bem)
Bemba (Zambia) (bem-ZM)
Bena (bez)
Bena (Tanzania) (bez-TZ)
Betawi (bew)
Bhojpuri (bho)
Bikol (bik)
Bini (bin)
Bishnupriya (bpy)
Bislama (bi)
Blin (byn)
Blin (Eritrea) (byn-ER)
Blissymbols (zbl)
Bodo (brx)
Bodo (India) (brx-IN)
Bosnian (bs)
Bosnian (Cyrillic) (bs-Cyrl)
Bosnian (Cyrillic, Bosnia & Herzegovina) (bs-Cyrl-BA)
Bosnian (Latin) (bs-Latn)
Bosnian (Latin, Bosnia & Herzegovina) (bs-Latn-BA)
Brahui (brh)
Braj (bra)
Breton (br)
Breton (France) (br-FR)
Buginese (bug)
Bulgarian (bg)
Bulgarian (Bulgaria) (bg-BG)
Bulu (bum)
Buriat (bua)
Burmese (my)
Burmese (Myanmar [Burma]) (my-MM)
Caddo (cad)
Cajun French (frc)
Cantonese (yue)
Cantonese, Simplified (yue-Hans)
Cantonese, Simplified (China mainland) (yue-Hans-CN)
Cantonese, Traditional (yue-Hant)
Cantonese, Traditional (Hong Kong) (yue-Hant-HK)
Capiznon (cps)
Carib (car)
Catalan (ca)
Catalan (Andorra) (ca-AD)
Catalan (France) (ca-FR)
Catalan (Italy) (ca-IT)
Catalan (Spain) (ca-ES)
Cayuga (cay)
Cebuano (ceb)
Cebuano (Philippines) (ceb-PH)
Central Atlas Tamazight (tzm)
Central Atlas Tamazight (Morocco) (tzm-MA)
Central Dusun (dtp)
Central Yupik (esu)
Chadian Arabic (shu)
Chagatai (chg)
Chakma (ccp)
Chakma (Bangladesh) (ccp-BD)
Chakma (India) (ccp-IN)
Chamorro (ch)
Chechen (ce)
Chechen (Russia) (ce-RU)
Cherokee (chr)
Cherokee (United States) (chr-US)
Cheyenne (chy)
Chibcha (chb)
Chiga (cgg)
Chiga (Uganda) (cgg-UG)
Chimborazo Highland Quichua (qug)
Chinese (zh)
Chinese, Simplified (zh-Hans)
Chinese, Simplified (China mainland) (zh-Hans-CN)
Chinese, Simplified (Hong Kong) (zh-Hans-HK)
Chinese, Simplified (Macao) (zh-Hans-MO)
Chinese, Simplified (Singapore) (zh-Hans-SG)
Chinese, Traditional (zh-Hant)
Chinese, Traditional (China mainland) (zh-Hant-CN)
Chinese, Traditional (Hong Kong) (zh-Hant-HK)
Chinese, Traditional (Macao) (zh-Hant-MO)
Chinese, Traditional (Taiwan) (zh-Hant-TW)
Chinook Jargon (chn)
Chipewyan (chp)
Choctaw (cho)
Church Slavic (cu)
Chuukese (chk)
Chuvash (cv)
Chuvash (Russia) (cv-RU)
Classical Newari (nwc)
Classical Syriac (syc)
Colognian (ksh)
Colognian (Germany) (ksh-DE)
Comorian (swb)
Coptic (cop)
Cornish (kw)
Cornish (United Kingdom) (kw-GB)
Corsican (co)
Corsican (France) (co-FR)
Cree (cr)
Crimean Turkish (crh)
Croatian (hr)
Croatian (Bosnia & Herzegovina) (hr-BA)
Croatian (Croatia) (hr-HR)
Czech (cs)
Czech (Czechia) (cs-CZ)
Dakota (dak)
Danish (da)
Danish (Denmark) (da-DK)
Danish (Greenland) (da-GL)
Dargwa (dar)
Dazaga (dzg)
Delaware (del)
Dhivehi (dv)
Dhivehi (Maldives) (dv-MV)
Dinka (din)
Dogri (doi)
Dogrib (dgr)
Duala (dua)
Duala (Cameroon) (dua-CM)
Dutch (nl)
Dutch (Aruba) (nl-AW)
Dutch (Belgium) (nl-BE)
Dutch (Caribbean Netherlands) (nl-BQ)
Dutch (Curaçao) (nl-CW)
Dutch (Netherlands) (nl-NL)
Dutch (Sint Maarten) (nl-SX)
Dutch (Suriname) (nl-SR)
Dyula (dyu)
Dzongkha (dz)
Dzongkha (Bhutan) (dz-BT)
Eastern Frisian (frs)
Efik (efi)
Egyptian Arabic (arz)
Ekajuk (eka)
Elamite (elx)
Embu (ebu)
Embu (Kenya) (ebu-KE)
Emilian (egl)
English (en)
English (Albania) (en-AL)
English (American Samoa) (en-AS)
English (Anguilla) (en-AI)
English (Antigua & Barbuda) (en-AG)
English (Argentina) (en-AR)
English (Australia) (en-AU)
English (Austria) (en-AT)
English (Bahamas) (en-BS)
English (Bangladesh) (en-BD)
English (Barbados) (en-BB)
English (Belgium) (en-BE)
English (Belize) (en-BZ)
English (Bermuda) (en-BM)
English (Botswana) (en-BW)
English (Brazil) (en-BR)
English (British Virgin Islands) (en-VG)
English (Brunei) (en-BN)
English (Bulgaria) (en-BG)
English (Burundi) (en-BI)
English (Cameroon) (en-CM)
English (Canada) (en-CA)
English (Cayman Islands) (en-KY)
English (Chagos Archipelago) (en-IO)
English (Chile) (en-CL)
English (China mainland) (en-CN)
English (Christmas Island) (en-CX)
English (Cocos [Keeling] Islands) (en-CC)
English (Colombia) (en-CO)
English (Cook Islands) (en-CK)
English (Cyprus) (en-CY)
English (Czechia) (en-CZ)
English (Denmark) (en-DK)
English (Diego Garcia) (en-DG)
English (Dominica) (en-DM)
English (Eritrea) (en-ER)
English (Estonia) (en-EE)
English (Eswatini) (en-SZ)
English (Europe) (en-150)
English (Falkland Islands) (en-FK)
English (Fiji) (en-FJ)
English (Finland) (en-FI)
English (France) (en-FR)
English (Gambia) (en-GM)
English (Germany) (en-DE)
English (Ghana) (en-GH)
English (Gibraltar) (en-GI)
English (Greece) (en-GR)
English (Grenada) (en-GD)
English (Guam) (en-GU)
English (Guernsey) (en-GG)
English (Guyana) (en-GY)
English (Hong Kong) (en-HK)
English (Hungary) (en-HU)
English (India) (en-IN)
English (Indonesia) (en-ID)
English (Ireland) (en-IE)
English (Isle of Man) (en-IM)
English (Israel) (en-IL)
English (Jamaica) (en-JM)
English (Japan) (en-JP)
English (Jersey) (en-JE)
English (Kenya) (en-KE)
English (Kiribati) (en-KI)
English (Latvia) (en-LV)
English (Lesotho) (en-LS)
English (Liberia) (en-LR)
English (Lithuania) (en-LT)
English (Macao) (en-MO)
English (Madagascar) (en-MG)
English (Malawi) (en-MW)
English (Malaysia) (en-MY)
English (Maldives) (en-MV)
English (Malta) (en-MT)
English (Marshall Islands) (en-MH)
English (Mauritius) (en-MU)
English (Mexico) (en-MX)
English (Micronesia) (en-FM)
English (Montserrat) (en-MS)
English (Myanmar [Burma]) (en-MM)
English (Namibia) (en-NA)
English (Nauru) (en-NR)
English (Netherlands) (en-NL)
English (New Zealand) (en-NZ)
English (Nigeria) (en-NG)
English (Niue) (en-NU)
English (Norfolk Island) (en-NF)
English (Northern Mariana Islands) (en-MP)
English (Norway) (en-NO)
English (Pakistan) (en-PK)
English (Palau) (en-PW)
English (Papua New Guinea) (en-PG)
English (Philippines) (en-PH)
English (Pitcairn Islands) (en-PN)
English (Poland) (en-PL)
English (Portugal) (en-PT)
English (Puerto Rico) (en-PR)
English (Russia) (en-RU)
English (Rwanda) (en-RW)
English (Samoa) (en-WS)
English (Saudi Arabia) (en-SA)
English (Seychelles) (en-SC)
English (Sierra Leone) (en-SL)
English (Singapore) (en-SG)
English (Sint Maarten) (en-SX)
English (Slovakia) (en-SK)
English (Slovenia) (en-SI)
English (Solomon Islands) (en-SB)
English (South Africa) (en-ZA)
English (South Korea) (en-KR)
English (South Sudan) (en-SS)
English (St. Helena) (en-SH)
English (St. Kitts & Nevis) (en-KN)
English (St. Lucia) (en-LC)
English (St. Vincent & Grenadines) (en-VC)
English (Sudan) (en-SD)
English (Sweden) (en-SE)
English (Switzerland) (en-CH)
English (Taiwan) (en-TW)
English (Tanzania) (en-TZ)
English (Thailand) (en-TH)
English (Tokelau) (en-TK)
English (Tonga) (en-TO)
English (Trinidad & Tobago) (en-TT)
English (Turkey) (en-TR)
English (Turks & Caicos Islands) (en-TC)
English (Tuvalu) (en-TV)
English (U.S. Outlying Islands) (en-UM)
English (U.S. Virgin Islands) (en-VI)
English (Uganda) (en-UG)
English (Ukraine) (en-UA)
English (United Arab Emirates) (en-AE)
English (United Kingdom) (en-GB)
English (United States) (en-US)
English (United States, Computer) (en-US-POSIX)
English (Vanuatu) (en-VU)
English (World) (en-001)
English (Zambia) (en-ZM)
English (Zimbabwe) (en-ZW)
Erzya (myv)
Erzya (Russia) (myv-RU)
Esperanto (eo)
Esperanto (World) (eo-001)
Estonian (et)
Estonian (Estonia) (et-EE)
Ewe (ee)
Ewe (Ghana) (ee-GH)
Ewe (Togo) (ee-TG)
Ewondo (ewo)
Ewondo (Cameroon) (ewo-CM)
Extremaduran (ext)
Fang (fan)
Fanti (fat)
Faroese (fo)
Faroese (Denmark) (fo-DK)
Faroese (Faroe Islands) (fo-FO)
Fiji Hindi (hif)
Fijian (fj)
Filipino (fil)
Filipino (Philippines) (fil-PH)
Finnish (fi)
Finnish (Finland) (fi-FI)
Fon (fon)
Frafra (gur)
French (fr)
French (Algeria) (fr-DZ)
French (Belgium) (fr-BE)
French (Benin) (fr-BJ)
French (Burkina Faso) (fr-BF)
French (Burundi) (fr-BI)
French (Cameroon) (fr-CM)
French (Canada) (fr-CA)
French (Central African Republic) (fr-CF)
French (Chad) (fr-TD)
French (Comoros) (fr-KM)
French (Congo - Brazzaville) (fr-CG)
French (Congo - Kinshasa) (fr-CD)
French (Côte d’Ivoire) (fr-CI)
French (Djibouti) (fr-DJ)
French (Equatorial Guinea) (fr-GQ)
French (France) (fr-FR)
French (French Guiana) (fr-GF)
French (French Polynesia) (fr-PF)
French (Gabon) (fr-GA)
French (Guadeloupe) (fr-GP)
French (Guinea) (fr-GN)
French (Haiti) (fr-HT)
French (Luxembourg) (fr-LU)
French (Madagascar) (fr-MG)
French (Mali) (fr-ML)
French (Martinique) (fr-MQ)
French (Mauritania) (fr-MR)
French (Mauritius) (fr-MU)
French (Mayotte) (fr-YT)
French (Monaco) (fr-MC)
French (Morocco) (fr-MA)
French (New Caledonia) (fr-NC)
French (Niger) (fr-NE)
French (Rwanda) (fr-RW)
French (Réunion) (fr-RE)
French (Senegal) (fr-SN)
French (Seychelles) (fr-SC)
French (St. Barthélemy) (fr-BL)
French (St. Martin) (fr-MF)
French (St. Pierre & Miquelon) (fr-PM)
French (Switzerland) (fr-CH)
French (Syria) (fr-SY)
French (Togo) (fr-TG)
French (Tunisia) (fr-TN)
French (Vanuatu) (fr-VU)
French (Wallis & Futuna) (fr-WF)
Friulian (fur)
Friulian (Italy) (fur-IT)
Fulah (ff)
Fulah (Latin) (ff-Latn)
Fulah (Latin, Burkina Faso) (ff-Latn-BF)
Fulah (Latin, Cameroon) (ff-Latn-CM)
Fulah (Latin, Gambia) (ff-Latn-GM)
Fulah (Latin, Ghana) (ff-Latn-GH)
Fulah (Latin, Guinea) (ff-Latn-GN)
Fulah (Latin, Guinea-Bissau) (ff-Latn-GW)
Fulah (Latin, Liberia) (ff-Latn-LR)
Fulah (Latin, Mauritania) (ff-Latn-MR)
Fulah (Latin, Niger) (ff-Latn-NE)
Fulah (Latin, Nigeria) (ff-Latn-NG)
Fulah (Latin, Senegal) (ff-Latn-SN)
Fulah (Latin, Sierra Leone) (ff-Latn-SL)
Ga (gaa)
Ga (Ghana) (gaa-GH)
Gagauz (gag)
Galician (gl)
Galician (Spain) (gl-ES)
Gan Chinese (gan)
Ganda (lg)
Ganda (Uganda) (lg-UG)
Gayo (gay)
Gbaya (gba)
Geez (gez)
Geez (Eritrea) (gez-ER)
Geez (Ethiopia) (gez-ET)
Georgian (ka)
Georgian (Georgia) (ka-GE)
German (de)
German (Austria) (de-AT)
German (Belgium) (de-BE)
German (Germany) (de-DE)
German (Italy) (de-IT)
German (Liechtenstein) (de-LI)
German (Luxembourg) (de-LU)
German (Switzerland) (de-CH)
Gheg Albanian (aln)
Ghomala (bbj)
Gilaki (glk)
Gilbertese (gil)
Goan Konkani (gom)
Gondi (gon)
Gorontalo (gor)
Gothic (got)
Grebo (grb)
Greek (el)
Greek (Cyprus) (el-CY)
Greek (Greece) (el-GR)
Guarani (gn)
Guarani (Paraguay) (gn-PY)
Gujarati (gu)
Gujarati (India) (gu-IN)
Gusii (guz)
Gusii (Kenya) (guz-KE)
Gwichʼin (gwi)
Haida (hai)
Haitian Creole (ht)
Hakka Chinese (hak)
Hausa (ha)
Hausa (Ghana) (ha-GH)
Hausa (Niger) (ha-NE)
Hausa (Nigeria) (ha-NG)
Hawaiian (haw)
Hawaiian (United States) (haw-US)
Hebrew (he)
Hebrew (Israel) (he-IL)
Herero (hz)
Hiligaynon (hil)
Hindi (hi)
Hindi (India) (hi-IN)
Hindi (Latin) (hi-Latn)
Hindi (Latin, India) (hi-Latn-IN)
Hiri Motu (ho)
Hittite (hit)
Hmong (hmn)
Hungarian (hu)
Hungarian (Hungary) (hu-HU)
Hupa (hup)
Iban (iba)
Ibibio (ibb)
Icelandic (is)
Icelandic (Iceland) (is-IS)
Ido (io)
Ido (World) (io-001)
Igbo (ig)
Igbo (Nigeria) (ig-NG)
Iloko (ilo)
Inari Sami (smn)
Inari Sami (Finland) (smn-FI)
Indonesian (id)
Indonesian (Indonesia) (id-ID)
Ingrian (izh)
Ingush (inh)
Interlingua (ia)
Interlingua (World) (ia-001)
Interlingue (ie)
Inuktitut (iu)
Inuktitut (Canada) (iu-CA)
Inupiaq (ik)
Irish (ga)
Irish (Ireland) (ga-IE)
Irish (United Kingdom) (ga-GB)
Italian (it)
Italian (Italy) (it-IT)
Italian (San Marino) (it-SM)
Italian (Switzerland) (it-CH)
Italian (Vatican City) (it-VA)
Jamaican Creole English (jam)
Japanese (ja)
Japanese (Japan) (ja-JP)
Javanese (jv)
Javanese (Indonesia) (jv-ID)
Jju (kaj)
Jju (Nigeria) (kaj-NG)
Jola-Fonyi (dyo)
Jola-Fonyi (Senegal) (dyo-SN)
Judeo-Arabic (jrb)
Judeo-Persian (jpr)
Jutish (jut)
Kabardian (kbd)
Kabuverdianu (kea)
Kabuverdianu (Cape Verde) (kea-CV)
Kabyle (kab)
Kabyle (Algeria) (kab-DZ)
Kachin (kac)
Kaingang (kgp)
Kako (kkj)
Kako (Cameroon) (kkj-CM)
Kalaallisut (kl)
Kalaallisut (Greenland) (kl-GL)
Kalenjin (kln)
Kalenjin (Kenya) (kln-KE)
Kalmyk (xal)
Kamba (kam)
Kamba (Kenya) (kam-KE)
Kanembu (kbl)
Kannada (kn)
Kannada (India) (kn-IN)
Kanuri (kr)
Kara-Kalpak (kaa)
Karachay-Balkar (krc)
Karelian (krl)
Kashmiri (ks)
Kashmiri (Devanagari) (ks-Deva)
Kashmiri (Devanagari, India) (ks-Deva-IN)
Kashmiri (Naskh) (ks-Arab)
Kashmiri (Naskh, India) (ks-Arab-IN)
Kashmiri (Nastaliq) (ks-Aran)
Kashmiri (Nastaliq, India) (ks-Aran-IN)
Kashubian (csb)
Kawi (kaw)
Kazakh (kk)
Kazakh (Kazakhstan) (kk-KZ)
Kenyang (ken)
Khasi (kha)
Khmer (km)
Khmer (Cambodia) (km-KH)
Khotanese (kho)
Khowar (khw)
Kikuyu (ki)
Kikuyu (Kenya) (ki-KE)
Kimbundu (kmb)
Kinaray-a (krj)
Kinyarwanda (rw)
Kinyarwanda (Rwanda) (rw-RW)
Kirmanjki (kiu)
Klingon (tlh)
Kom (bkm)
Komi (kv)
Komi-Permyak (koi)
Kongo (kg)
Konkani (kok)
Konkani (India) (kok-IN)
Korean (ko)
Korean (North Korea) (ko-KP)
Korean (South Korea) (ko-KR)
Koro (kfo)
Kosraean (kos)
Kotava (avk)
Koyra Chiini (khq)
Koyra Chiini (Mali) (khq-ML)
Koyraboro Senni (ses)
Koyraboro Senni (Mali) (ses-ML)
Kpelle (kpe)
Kpelle (Guinea) (kpe-GN)
Kpelle (Liberia) (kpe-LR)
Krio (kri)
Kuanyama (kj)
Kumyk (kum)
Kurdish (ku)
Kurdish (Turkey) (ku-TR)
Kurdish, Sorani (ckb)
Kurdish, Sorani (Iran) (ckb-IR)
Kurdish, Sorani (Iraq) (ckb-IQ)
Kurukh (kru)
Kutenai (kut)
Kwasio (nmg)
Kwasio (Cameroon) (nmg-CM)
Kyrgyz (ky)
Kyrgyz (Kyrgyzstan) (ky-KG)
Kʼicheʼ (quc)
Ladino (lad)
Lahnda (lah)
Lakota (lkt)
Lakota (United States) (lkt-US)
Lamba (lam)
Langi (lag)
Langi (Tanzania) (lag-TZ)
Lao (lo)
Lao (Laos) (lo-LA)
Latgalian (ltg)
Latin (la)
Latvian (lv)
Latvian (Latvia) (lv-LV)
Laz (lzz)
Lezghian (lez)
Ligurian (lij)
Limburgish (li)
Lingala (ln)
Lingala (Angola) (ln-AO)
Lingala (Central African Republic) (ln-CF)
Lingala (Congo - Brazzaville) (ln-CG)
Lingala (Congo - Kinshasa) (ln-CD)
Lingua Franca Nova (lfn)
Literary Chinese (lzh)
Lithuanian (lt)
Lithuanian (Lithuania) (lt-LT)
Livonian (liv)
Lojban (jbo)
Lojban (World) (jbo-001)
Lombard (lmo)
Low German (nds)
Low German (Germany) (nds-DE)
Low German (Netherlands) (nds-NL)
Lower Silesian (sli)
Lower Sorbian (dsb)
Lower Sorbian (Germany) (dsb-DE)
Lozi (loz)
Luba-Katanga (lu)
Luba-Katanga (Congo - Kinshasa) (lu-CD)
Luba-Lulua (lua)
Luiseno (lui)
Lule Sami (smj)
Lunda (lun)
Luo (luo)
Luo (Kenya) (luo-KE)
Luxembourgish (lb)
Luxembourgish (Luxembourg) (lb-LU)
Luyia (luy)
Luyia (Kenya) (luy-KE)
Maba (mde)
Macedonian (mk)
Macedonian (North Macedonia) (mk-MK)
Machame (jmc)
Machame (Tanzania) (jmc-TZ)
Madurese (mad)
Mafa (maf)
Magahi (mag)
Main-Franconian (vmf)
Maithili (mai)
Makasar (mak)
Makhuwa-Meetto (mgh)
Makhuwa-Meetto (Mozambique) (mgh-MZ)
Makonde (kde)
Makonde (Tanzania) (kde-TZ)
Malagasy (mg)
Malagasy (Madagascar) (mg-MG)
Malay (ms)
Malay (Arabic) (ms-Arab)
Malay (Arabic, Brunei) (ms-Arab-BN)
Malay (Arabic, Malaysia) (ms-Arab-MY)
Malay (Brunei) (ms-BN)
Malay (Malaysia) (ms-MY)
Malay (Singapore) (ms-SG)
Malayalam (ml)
Malayalam (India) (ml-IN)
Maltese (mt)
Maltese (Malta) (mt-MT)
Manchu (mnc)
Mandar (mdr)
Mandingo (man)
Manipuri (mni)
Manipuri (Bangla) (mni-Beng)
Manipuri (Bangla, India) (mni-Beng-IN)
Manipuri (Meitei Mayek) (mni-Mtei)
Manipuri (Meitei Mayek, India) (mni-Mtei-IN)
Manx (gv)
Manx (Isle of Man) (gv-IM)
Maori (mi)
Maori (New Zealand) (mi-NZ)
Mapuche (arn)
Mapuche (Chile) (arn-CL)
Marathi (mr)
Marathi (India) (mr-IN)
Mari (chm)
Marshallese (mh)
Marwari (mwr)
Masai (mas)
Masai (Kenya) (mas-KE)
Masai (Tanzania) (mas-TZ)
Mazanderani (mzn)
Mazanderani (Iran) (mzn-IR)
Medumba (byv)
Mende (men)
Mentawai (mwv)
Meru (mer)
Meru (Kenya) (mer-KE)
Metaʼ (mgo)
Metaʼ (Cameroon) (mgo-CM)
Mi'kmaq (mic)
Middle Dutch (dum)
Middle English (enm)
Middle French (frm)
Middle High German (gmh)
Middle Irish (mga)
Min Nan Chinese (nan)
Minangkabau (min)
Mingrelian (xmf)
Mirandese (mwl)
Mizo (lus)
Mohawk (moh)
Mohawk (Canada) (moh-CA)
Moksha (mdf)
Mongo (lol)
Mongolian (mn)
Mongolian (Mongolia) (mn-MN)
Morisyen (mfe)
Morisyen (Mauritius) (mfe-MU)
Moroccan Arabic (ary)
Mossi (mos)
Multiple languages (mul)
Mundang (mua)
Mundang (Cameroon) (mua-CM)
Muscogee (mus)
Muslim Tat (ttt)
Myene (mye)
Nama (naq)
Nama (Namibia) (naq-NA)
Nauru (na)
Navajo (nv)
Ndonga (ng)
Neapolitan (nap)
Nepali (ne)
Nepali (India) (ne-IN)
Nepali (Nepal) (ne-NP)
Newari (new)
Ngambay (sba)
Ngiemboon (nnh)
Ngiemboon (Cameroon) (nnh-CM)
Ngomba (jgo)
Ngomba (Cameroon) (jgo-CM)
Nheengatu (yrl)
Nias (nia)
Niuean (niu)
No linguistic content (zxx)
Nogai (nog)
North Ndebele (nd)
North Ndebele (Zimbabwe) (nd-ZW)
Northern Frisian (frr)
Northern Luri (lrc)
Northern Luri (Iran) (lrc-IR)
Northern Luri (Iraq) (lrc-IQ)
Northern Sami (se)
Northern Sami (Finland) (se-FI)
Northern Sami (Norway) (se-NO)
Northern Sami (Sweden) (se-SE)
Northern Sotho (nso)
Northern Sotho (South Africa) (nso-ZA)
Norwegian (no)
Norwegian Bokmål (nb)
Norwegian Bokmål (Norway) (nb-NO)
Norwegian Bokmål (Svalbard & Jan Mayen) (nb-SJ)
Norwegian Nynorsk (nn)
Norwegian Nynorsk (Norway) (nn-NO)
Novial (nov)
Nuer (nus)
Nuer (South Sudan) (nus-SS)
Nyamwezi (nym)
Nyanja (ny)
Nyanja (Malawi) (ny-MW)
Nyankole (nyn)
Nyankole (Uganda) (nyn-UG)
Nyasa Tonga (tog)
Nyoro (nyo)
Nzima (nzi)
N’Ko (nqo)
N’Ko (Guinea) (nqo-GN)
Occitan (oc)
Occitan (France) (oc-FR)
Odia (or)
Odia (India) (or-IN)
Ojibwa (oj)
Old English (ang)
Old French (fro)
Old High German (goh)
Old Irish (sga)
Old Norse (non)
Old Persian (peo)
Old Provençal (pro)
Oromo (om)
Oromo (Ethiopia) (om-ET)
Oromo (Kenya) (om-KE)
Osage (osa)
Ossetic (os)
Ossetic (Georgia) (os-GE)
Ossetic (Russia) (os-RU)
Ottoman Turkish (ota)
Pahlavi (pal)
Palatine German (pfl)
Palauan (pau)
Pali (pi)
Pampanga (pam)
Pangasinan (pag)
Papiamento (pap)
Pashto (ps)
Pashto (Afghanistan) (ps-AF)
Pashto (Pakistan) (ps-PK)
Pennsylvania German (pdc)
Persian (fa)
Persian (Afghanistan) (fa-AF)
Persian (Iran) (fa-IR)
Phoenician (phn)
Picard (pcd)
Piedmontese (pms)
Plautdietsch (pdt)
Pohnpeian (pon)
Polish (pl)
Polish (Poland) (pl-PL)
Pontic (pnt)
Portuguese (pt)
Portuguese (Angola) (pt-AO)
Portuguese (Brazil) (pt-BR)
Portuguese (Cape Verde) (pt-CV)
Portuguese (Equatorial Guinea) (pt-GQ)
Portuguese (France) (pt-FR)
Portuguese (Guinea-Bissau) (pt-GW)
Portuguese (Luxembourg) (pt-LU)
Portuguese (Macao) (pt-MO)
Portuguese (Mozambique) (pt-MZ)
Portuguese (Portugal) (pt-PT)
Portuguese (Switzerland) (pt-CH)
Portuguese (São Tomé & Príncipe) (pt-ST)
Portuguese (Timor-Leste) (pt-TL)
Prussian (prg)
Punjabi (pa)
Punjabi (Gurmukhi) (pa-Guru)
Punjabi (Gurmukhi, India) (pa-Guru-IN)
Punjabi (Naskh) (pa-Arab)
Punjabi (Naskh, Pakistan) (pa-Arab-PK)
Quechua (qu)
Quechua (Bolivia) (qu-BO)
Quechua (Ecuador) (qu-EC)
Quechua (Peru) (qu-PE)
Rajasthani (raj)
Rapanui (rap)
Rarotongan (rar)
Riffian (rif)
Romagnol (rgn)
Romanian (ro)
Romanian (Moldova) (ro-MD)
Romanian (Romania) (ro-RO)
Romansh (rm)
Romansh (Switzerland) (rm-CH)
Romany (rom)
Rombo (rof)
Rombo (Tanzania) (rof-TZ)
Rotuman (rtm)
Roviana (rug)
Rundi (rn)
Rundi (Burundi) (rn-BI)
Russian (ru)
Russian (Belarus) (ru-BY)
Russian (Kazakhstan) (ru-KZ)
Russian (Kyrgyzstan) (ru-KG)
Russian (Moldova) (ru-MD)
Russian (Russia) (ru-RU)
Russian (Ukraine) (ru-UA)
Rusyn (rue)
Rwa (rwk)
Rwa (Tanzania) (rwk-TZ)
Saho (ssy)
Sakha (sah)
Sakha (Russia) (sah-RU)
Samaritan Aramaic (sam)
Samburu (saq)
Samburu (Kenya) (saq-KE)
Samoan (sm)
Samogitian (sgs)
Sandawe (sad)
Sango (sg)
Sango (Central African Republic) (sg-CF)
Sangu (sbp)
Sangu (Tanzania) (sbp-TZ)
Sanskrit (sa)
Sanskrit (India) (sa-IN)
Santali (sat)
Santali (Devanagari) (sat-Deva)
Santali (Devanagari, India) (sat-Deva-IN)
Santali (Ol Chiki) (sat-Olck)
Santali (Ol Chiki, India) (sat-Olck-IN)
Sardinian (sc)
Sardinian (Italy) (sc-IT)
Sasak (sas)
Sassarese Sardinian (sdc)
Saterland Frisian (stq)
Saurashtra (saz)
Scots (sco)
Scottish Gaelic (gd)
Scottish Gaelic (United Kingdom) (gd-GB)
Selayar (sly)
Selkup (sel)
Sena (seh)
Sena (Mozambique) (seh-MZ)
Seneca (see)
Serbian (sr)
Serbian (Cyrillic) (sr-Cyrl)
Serbian (Cyrillic, Bosnia & Herzegovina) (sr-Cyrl-BA)
Serbian (Cyrillic, Kosovo) (sr-Cyrl-XK)
Serbian (Cyrillic, Montenegro) (sr-Cyrl-ME)
Serbian (Cyrillic, Serbia) (sr-Cyrl-RS)
Serbian (Latin) (sr-Latn)
Serbian (Latin, Bosnia & Herzegovina) (sr-Latn-BA)
Serbian (Latin, Kosovo) (sr-Latn-XK)
Serbian (Latin, Montenegro) (sr-Latn-ME)
Serbian (Latin, Serbia) (sr-Latn-RS)
Serer (srr)
Seri (sei)
Shambala (ksb)
Shambala (Tanzania) (ksb-TZ)
Shan (shn)
Shanghainese (wuu)
Shona (sn)
Shona (Zimbabwe) (sn-ZW)
Sichuan Yi (ii)
Sichuan Yi (China mainland) (ii-CN)
Sicilian (scn)
Sicilian (Italy) (scn-IT)
Sidamo (sid)
Siksika (bla)
Silesian (szl)
Sindhi (sd)
Sindhi (Devanagari) (sd-Deva)
Sindhi (Devanagari, India) (sd-Deva-IN)
Sindhi (Pakistan) (sd-PK)
Sinhala (si)
Sinhala (Sri Lanka) (si-LK)
Skolt Sami (sms)
Slave (den)
Slovak (sk)
Slovak (Slovakia) (sk-SK)
Slovenian (sl)
Slovenian (Slovenia) (sl-SI)
Soga (xog)
Soga (Uganda) (xog-UG)
Sogdien (sog)
Somali (so)
Somali (Djibouti) (so-DJ)
Somali (Ethiopia) (so-ET)
Somali (Kenya) (so-KE)
Somali (Somalia) (so-SO)
Soninke (snk)
South Ndebele (nr)
South Ndebele (South Africa) (nr-ZA)
Southern Altai (alt)
Southern Kurdish (sdh)
Southern Sami (sma)
Southern Sotho (st)
Southern Sotho (Lesotho) (st-LS)
Southern Sotho (South Africa) (st-ZA)
Spanish (es)
Spanish (Antigua & Barbuda) (es-AG)
Spanish (Argentina) (es-AR)
Spanish (Bahamas) (es-BS)
Spanish (Barbados) (es-BB)
Spanish (Belize) (es-BZ)
Spanish (Bermuda) (es-BM)
Spanish (Bolivia) (es-BO)
Spanish (Brazil) (es-BR)
Spanish (British Virgin Islands) (es-VG)
Spanish (Canada) (es-CA)
Spanish (Canary Islands) (es-IC)
Spanish (Caribbean Netherlands) (es-BQ)
Spanish (Cayman Islands) (es-KY)
Spanish (Ceuta & Melilla) (es-EA)
Spanish (Chile) (es-CL)
Spanish (Colombia) (es-CO)
Spanish (Costa Rica) (es-CR)
Spanish (Cuba) (es-CU)
Spanish (Curaçao) (es-CW)
Spanish (Dominica) (es-DM)
Spanish (Dominican Republic) (es-DO)
Spanish (Ecuador) (es-EC)
Spanish (El Salvador) (es-SV)
Spanish (Equatorial Guinea) (es-GQ)
Spanish (Grenada) (es-GD)
Spanish (Guatemala) (es-GT)
Spanish (Guyana) (es-GY)
Spanish (Haiti) (es-HT)
Spanish (Honduras) (es-HN)
Spanish (Latin America) (es-419)
Spanish (Mexico) (es-MX)
Spanish (Nicaragua) (es-NI)
Spanish (Panama) (es-PA)
Spanish (Paraguay) (es-PY)
Spanish (Peru) (es-PE)
Spanish (Philippines) (es-PH)
Spanish (Puerto Rico) (es-PR)
Spanish (Spain) (es-ES)
Spanish (St. Kitts & Nevis) (es-KN)
Spanish (St. Lucia) (es-LC)
Spanish (St. Vincent & Grenadines) (es-VC)
Spanish (Trinidad & Tobago) (es-TT)
Spanish (Turks & Caicos Islands) (es-TC)
Spanish (U.S. Virgin Islands) (es-VI)
Spanish (United States) (es-US)
Spanish (Uruguay) (es-UY)
Spanish (Venezuela) (es-VE)
Sranan Tongo (srn)
Standard Moroccan Tamazight (zgh)
Standard Moroccan Tamazight (Morocco) (zgh-MA)
Sukuma (suk)
Sumerian (sux)
Sundanese (su)
Susu (sus)
Swahili (sw)
Swahili (Congo - Kinshasa) (sw-CD)
Swahili (Kenya) (sw-KE)
Swahili (Tanzania) (sw-TZ)
Swahili (Uganda) (sw-UG)
Swati (ss)
Swati (Eswatini) (ss-SZ)
Swati (South Africa) (ss-ZA)
Swedish (sv)
Swedish (Finland) (sv-FI)
Swedish (Sweden) (sv-SE)
Swedish (Åland Islands) (sv-AX)
Swiss German (gsw)
Swiss German (France) (gsw-FR)
Swiss German (Liechtenstein) (gsw-LI)
Swiss German (Switzerland) (gsw-CH)
Syriac (syr)
Syriac (Iraq) (syr-IQ)
Syriac (Syria) (syr-SY)
Tachelhit (shi)
Tachelhit (Latin) (shi-Latn)
Tachelhit (Latin, Morocco) (shi-Latn-MA)
Tachelhit (Tifinagh) (shi-Tfng)
Tachelhit (Tifinagh, Morocco) (shi-Tfng-MA)
Tagalog (tl)
Tahitian (ty)
Taita (dav)
Taita (Kenya) (dav-KE)
Tajik (tg)
Tajik (Tajikistan) (tg-TJ)
Talysh (tly)
Tamashek (tmh)
Tamil (ta)
Tamil (India) (ta-IN)
Tamil (Malaysia) (ta-MY)
Tamil (Singapore) (ta-SG)
Tamil (Sri Lanka) (ta-LK)
Taroko (trv)
Taroko (Taiwan) (trv-TW)
Tasawaq (twq)
Tasawaq (Niger) (twq-NE)
Tatar (tt)
Tatar (Russia) (tt-RU)
Telugu (te)
Telugu (India) (te-IN)
Tereno (ter)
Teso (teo)
Teso (Kenya) (teo-KE)
Teso (Uganda) (teo-UG)
Tetum (tet)
Thai (th)
Thai (Thailand) (th-TH)
Tibetan (bo)
Tibetan (China mainland) (bo-CN)
Tibetan (India) (bo-IN)
Tigre (tig)
Tigre (Eritrea) (tig-ER)
Tigrinya (ti)
Tigrinya (Eritrea) (ti-ER)
Tigrinya (Ethiopia) (ti-ET)
Timne (tem)
Tiv (tiv)
Tlingit (tli)
Tok Pisin (tpi)
Tokelau (tkl)
Tongan (to)
Tongan (Tonga) (to-TO)
Tornedalen Finnish (fit)
Tsakhur (tkr)
Tsakonian (tsd)
Tsimshian (tsi)
Tsonga (ts)
Tsonga (South Africa) (ts-ZA)
Tswana (tn)
Tswana (Botswana) (tn-BW)
Tswana (South Africa) (tn-ZA)
Tulu (tcy)
Tumbuka (tum)
Tunisian Arabic (aeb)
Turkish (tr)
Turkish (Cyprus) (tr-CY)
Turkish (Turkey) (tr-TR)
Turkmen (tk)
Turkmen (Turkmenistan) (tk-TM)
Turoyo (tru)
Tuvalu (tvl)
Tuvinian (tyv)
Twi (tw)
Tyap (kcg)
Tyap (Nigeria) (kcg-NG)
Udmurt (udm)
Ugaritic (uga)
Ukrainian (uk)
Ukrainian (Ukraine) (uk-UA)
Umbundu (umb)
Unknown language (und)
Upper Sorbian (hsb)
Upper Sorbian (Germany) (hsb-DE)
Urdu (ur)
Urdu (Naskh) (ur-Arab)
Urdu (Naskh, India) (ur-Arab-IN)
Urdu (Naskh, Pakistan) (ur-Arab-PK)
Urdu (Nastaliq) (ur-Aran)
Uyghur (ug)
Uyghur (China mainland) (ug-CN)
Uzbek (uz)
Uzbek (Arabic) (uz-Arab)
Uzbek (Arabic, Afghanistan) (uz-Arab-AF)
Uzbek (Cyrillic) (uz-Cyrl)
Uzbek (Cyrillic, Uzbekistan) (uz-Cyrl-UZ)
Uzbek (Latin) (uz-Latn)
Uzbek (Latin, Uzbekistan) (uz-Latn-UZ)
Vai (vai)
Vai (Latin) (vai-Latn)
Vai (Latin, Liberia) (vai-Latn-LR)
Vai (Vai) (vai-Vaii)
Vai (Vai, Liberia) (vai-Vaii-LR)
Venda (ve)
Venda (South Africa) (ve-ZA)
Venetian (vec)
Veps (vep)
Vietnamese (vi)
Vietnamese (Vietnam) (vi-VN)
Volapük (vo)
Votic (vot)
Vunjo (vun)
Vunjo (Tanzania) (vun-TZ)
Võro (vro)
Walloon (wa)
Walloon (Belgium) (wa-BE)
Walser (wae)
Walser (Switzerland) (wae-CH)
Waray (war)
Warlpiri (wbp)
Washo (was)
Wayuu (guc)
Welsh (cy)
Welsh (United Kingdom) (cy-GB)
West Flemish (vls)
Western Balochi (bgn)
Western Frisian (fy)
Western Frisian (Netherlands) (fy-NL)
Western Mari (mrj)
Wolaytta (wal)
Wolaytta (Ethiopia) (wal-ET)
Wolof (wo)
Wolof (Senegal) (wo-SN)
Xhosa (xh)
Xhosa (South Africa) (xh-ZA)
Xiang Chinese (hsn)
Yangben (yav)
Yangben (Cameroon) (yav-CM)
Yao (yao)
Yapese (yap)
Yemba (ybb)
Yiddish (yi)
Yiddish (World) (yi-001)
Yoruba (yo)
Yoruba (Benin) (yo-BJ)
Yoruba (Nigeria) (yo-NG)
Zapotec (zap)
Zarma (dje)
Zarma (Niger) (dje-NE)
Zaza (zza)
Zeelandic (zea)
Zenaga (zen)
Zhuang (za)
Zoroastrian Dari (gbz)
Zulu (zu)
Zulu (South Africa) (zu-ZA)
Zuni (zun)

@karlingen
Copy link
Collaborator Author

karlingen commented Sep 17, 2021

@jfahrenkrug Below is the list of language codes that Locale.availableIdentifiers fails to provide:

Click to expand the list
Abkhazian (ab)
Achinese (ace)
Acoli (ach)
Adangme (ada)
Adyghe (ady)
Afar (aa)
Afrihili (afh)
Ainu (ain)
Akkadian (akk)
Akoose (bss)
Alabama (akz)
Aleut (ale)
Algerian Arabic (arq)
American Sign Language (ase)
Ancient Egyptian (egy)
Ancient Greek (grc)
Angika (anp)
Ao Naga (njo)
Arabic, Najdi (ars)
Aragonese (an)
Aramaic (arc)
Araona (aro)
Arapaho (arp)
Arawak (arw)
Aromanian (rup)
Arpitan (frp)
Atsam (cch)
Avaric (av)
Avestan (ae)
Awadhi (awa)
Aymara (ay)
Badaga (bfq)
Bafut (bfd)
Bakhtiari (bqi)
Balinese (ban)
Baluchi (bal)
Bamun (bax)
Banjar (bjn)
Batak Toba (bbc)
Bavarian (bar)
Beja (bej)
Betawi (bew)
Bhojpuri (bho)
Bikol (bik)
Bini (bin)
Bishnupriya (bpy)
Bislama (bi)
Blissymbols (zbl)
Brahui (brh)
Braj (bra)
Buginese (bug)
Bulu (bum)
Buriat (bua)
Caddo (cad)
Cajun French (frc)
Capiznon (cps)
Carib (car)
Cayuga (cay)
Central Dusun (dtp)
Central Yupik (esu)
Chadian Arabic (shu)
Chagatai (chg)
Chamorro (ch)
Cheyenne (chy)
Chibcha (chb)
Chimborazo Highland Quichua (qug)
Chinook Jargon (chn)
Chipewyan (chp)
Choctaw (cho)
Church Slavic (cu)
Chuukese (chk)
Classical Newari (nwc)
Classical Syriac (syc)
Comorian (swb)
Coptic (cop)
Cree (cr)
Crimean Turkish (crh)
Dakota (dak)
Dargwa (dar)
Dazaga (dzg)
Delaware (del)
Dinka (din)
Dogri (doi)
Dogrib (dgr)
Dyula (dyu)
Eastern Frisian (frs)
Efik (efi)
Egyptian Arabic (arz)
Ekajuk (eka)
Elamite (elx)
Emilian (egl)
Extremaduran (ext)
Fang (fan)
Fanti (fat)
Fiji Hindi (hif)
Fijian (fj)
Fon (fon)
Frafra (gur)
Gagauz (gag)
Gan Chinese (gan)
Gayo (gay)
Gbaya (gba)
Gheg Albanian (aln)
Ghomala (bbj)
Gilaki (glk)
Gilbertese (gil)
Goan Konkani (gom)
Gondi (gon)
Gorontalo (gor)
Gothic (got)
Grebo (grb)
Gwichʼin (gwi)
Haida (hai)
Haitian Creole (ht)
Hakka Chinese (hak)
Herero (hz)
Hiligaynon (hil)
Hiri Motu (ho)
Hittite (hit)
Hmong (hmn)
Hupa (hup)
Iban (iba)
Ibibio (ibb)
Iloko (ilo)
Ingrian (izh)
Ingush (inh)
Interlingue (ie)
Inupiaq (ik)
Jamaican Creole English (jam)
Judeo-Arabic (jrb)
Judeo-Persian (jpr)
Jutish (jut)
Kabardian (kbd)
Kachin (kac)
Kaingang (kgp)
Kalmyk (xal)
Kanembu (kbl)
Kanuri (kr)
Kara-Kalpak (kaa)
Karachay-Balkar (krc)
Karelian (krl)
Kashubian (csb)
Kawi (kaw)
Kenyang (ken)
Khasi (kha)
Khotanese (kho)
Khowar (khw)
Kimbundu (kmb)
Kinaray-a (krj)
Kirmanjki (kiu)
Klingon (tlh)
Kom (bkm)
Komi (kv)
Komi-Permyak (koi)
Kongo (kg)
Koro (kfo)
Kosraean (kos)
Kotava (avk)
Krio (kri)
Kuanyama (kj)
Kumyk (kum)
Kurukh (kru)
Kutenai (kut)
Kʼicheʼ (quc)
Ladino (lad)
Lahnda (lah)
Lamba (lam)
Latgalian (ltg)
Latin (la)
Laz (lzz)
Lezghian (lez)
Ligurian (lij)
Limburgish (li)
Lingua Franca Nova (lfn)
Literary Chinese (lzh)
Livonian (liv)
Lombard (lmo)
Lower Silesian (sli)
Lozi (loz)
Luba-Lulua (lua)
Luiseno (lui)
Lule Sami (smj)
Lunda (lun)
Maba (mde)
Madurese (mad)
Mafa (maf)
Magahi (mag)
Main-Franconian (vmf)
Maithili (mai)
Makasar (mak)
Manchu (mnc)
Mandar (mdr)
Mandingo (man)
Mari (chm)
Marshallese (mh)
Marwari (mwr)
Medumba (byv)
Mende (men)
Mentawai (mwv)
Mi'kmaq (mic)
Middle Dutch (dum)
Middle English (enm)
Middle French (frm)
Middle High German (gmh)
Middle Irish (mga)
Min Nan Chinese (nan)
Minangkabau (min)
Mingrelian (xmf)
Mirandese (mwl)
Mizo (lus)
Moksha (mdf)
Mongo (lol)
Moroccan Arabic (ary)
Mossi (mos)
Multiple languages (mul)
Muscogee (mus)
Muslim Tat (ttt)
Myene (mye)
Nauru (na)
Navajo (nv)
Ndonga (ng)
Neapolitan (nap)
Newari (new)
Ngambay (sba)
Nheengatu (yrl)
Nias (nia)
Niuean (niu)
No linguistic content (zxx)
Nogai (nog)
Northern Frisian (frr)
Norwegian (no)
Novial (nov)
Nyamwezi (nym)
Nyasa Tonga (tog)
Nyoro (nyo)
Nzima (nzi)
Ojibwa (oj)
Old English (ang)
Old French (fro)
Old High German (goh)
Old Irish (sga)
Old Norse (non)
Old Persian (peo)
Old Provençal (pro)
Osage (osa)
Ottoman Turkish (ota)
Pahlavi (pal)
Palatine German (pfl)
Palauan (pau)
Pali (pi)
Pampanga (pam)
Pangasinan (pag)
Papiamento (pap)
Pennsylvania German (pdc)
Phoenician (phn)
Picard (pcd)
Piedmontese (pms)
Plautdietsch (pdt)
Pohnpeian (pon)
Pontic (pnt)
Prussian (prg)
Rajasthani (raj)
Rapanui (rap)
Rarotongan (rar)
Riffian (rif)
Romagnol (rgn)
Romany (rom)
Rotuman (rtm)
Roviana (rug)
Rusyn (rue)
Saho (ssy)
Samaritan Aramaic (sam)
Samoan (sm)
Samogitian (sgs)
Sandawe (sad)
Sasak (sas)
Sassarese Sardinian (sdc)
Saterland Frisian (stq)
Saurashtra (saz)
Scots (sco)
Selayar (sly)
Selkup (sel)
Seneca (see)
Serer (srr)
Seri (sei)
Shan (shn)
Shanghainese (wuu)
Sidamo (sid)
Siksika (bla)
Silesian (szl)
Skolt Sami (sms)
Slave (den)
Sogdien (sog)
Soninke (snk)
Southern Altai (alt)
Southern Kurdish (sdh)
Southern Sami (sma)
Sranan Tongo (srn)
Sukuma (suk)
Sumerian (sux)
Sundanese (su)
Susu (sus)
Tagalog (tl)
Tahitian (ty)
Talysh (tly)
Tamashek (tmh)
Tereno (ter)
Tetum (tet)
Timne (tem)
Tiv (tiv)
Tlingit (tli)
Tok Pisin (tpi)
Tokelau (tkl)
Tornedalen Finnish (fit)
Tsakhur (tkr)
Tsakonian (tsd)
Tsimshian (tsi)
Tulu (tcy)
Tumbuka (tum)
Tunisian Arabic (aeb)
Turoyo (tru)
Tuvalu (tvl)
Tuvinian (tyv)
Twi (tw)
Udmurt (udm)
Ugaritic (uga)
Umbundu (umb)
Unknown language (und)
Venetian (vec)
Veps (vep)
Volapük (vo)
Votic (vot)
Võro (vro)
Waray (war)
Warlpiri (wbp)
Washo (was)
Wayuu (guc)
West Flemish (vls)
Western Balochi (bgn)
Western Mari (mrj)
Xiang Chinese (hsn)
Yao (yao)
Yapese (yap)
Yemba (ybb)
Zapotec (zap)
Zaza (zza)
Zeelandic (zea)
Zenaga (zen)
Zhuang (za)
Zoroastrian Dari (gbz)
Zuni (zun)

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.
image

But for the language Basaa, we are able to select both bas and bas-CM

image

Not sure how we should tackle this..

@jfahrenkrug
Copy link
Owner

@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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants