Where would I find a list of locale name abbreviations for my project localization folders? (Such as en
for English, fr
for French).
I am looking to do German, Spanish and others.
You can just call them English.lproj
, Spanish.lproj
, etc.
The "abbreviated names" are actually IETF language tags (i.e. BCP 47), except that you use pt_PT.lproj
instead of pt-PT.lproj
.
The actual interpretation routine is in https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/PlugIn.subproj/CFBundle_Locale.c, determined by the CFBundleGetLocalizationInfoForLocalization
function. Replicated here:
| lproj identifiers | L# | C# | Display name |
|:-------------------------------|:----|:----|:---------------------------|
| en_US = en = English | 0 | 0 | English (United States) |
| en_GB | 0 | 2 | English (United Kingdom) |
| en_AU | 0 | 15 | English (Australia) |
| en_CA | 0 | 82 | English (Canada) |
| en_SG | 0 | 100 | English (Singapore) |
| en_IE | 0 | 108 | English (Ireland) |
| fr_FR = fr = French | 1 | 1 | French (France) |
| fr_CA | 1 | 11 | French (Canada) |
| fr_CH | 1 | 18 | French (Switzerland) |
| fr_BE | 1 | 98 | French (Belgium) |
| de_DE = de = German | 2 | 3 | German (Germany) |
| de_CH | 2 | 19 | German (Switzerland) |
| de_AT | 2 | 92 | German (Austria) |
| it_IT = it = Italian | 3 | 4 | Italian (Italy) |
| it_CH | 3 | 36 | Italian (Switzerland) |
| nl_NL = nl = Dutch | 4 | 5 | Dutch (Netherlands) |
| nl_BE | 34 | 6 | Dutch (Belgium) |
| sv_SE = sv = Swedish | 5 | 7 | Swedish (Sweden) |
| es_ES = es = Spanish | 6 | 8 | Spanish (Spain) |
| es_XL | 6 | 86 | Spanish (Latin America) |
| da_DK = da = Danish | 7 | 9 | Danish (Denmark) |
| pt_BR = pt = Portuguese | 8 | 71 | Portuguese (Brazil) |
| pt_PT | 8 | 10 | Portuguese (Portugal) |
| nb_NO = nb = no = Norwegian | 9 | 12 | Norwegian Bokmål (Norway) |
| nn_NO = nn = Nynorsk | 151 | 101 | Norwegian Nynorsk (Norway) |
| he_IL = he = Hebrew | 10 | 13 | Hebrew (Israel) |
| ja_JP = ja = Japanese | 11 | 14 | Japanese (Japan) |
| ar = Arabic | 12 | 16 | Arabic |
| fi_FI = fi = Finnish | 13 | 17 | Finnish (Finland) |
| el_GR = el = Greek | 14 | 20 | Greek (Greece) |
| el_CY | 14 | 23 | Greek (Cyprus) |
| is_IS = is = Icelandic | 15 | 21 | Icelandic (Iceland) |
| mt_MT = mt = Maltese | 16 | 22 | Maltese (Malta) |
| tr_TR = tr = Turkish | 17 | 24 | Turkish (Turkey) |
| hr_HR = hr = Croatian | 18 | 68 | Croatian (Croatia) |
| zh_TW = zh-Hant | 19 | 53 | Chinese (Taiwan) |
| zh_CN = zh = zh-Hans = Chinese | 33 | 52 | Chinese (China) |
| ur_PK = ur = Urdu | 20 | 34 | Urdu (Pakistan) |
| ur_IN | 20 | 96 | Urdu (India) |
| hi_IN = hi = Hindi | 21 | 33 | Hindi (India) |
| th_TH = th = Thai | 22 | 54 | Thai (Thailand) |
| ko_KR = ko = Korean | 23 | 51 | Korean (South Korea) |
| lt_LT = lt = Lithuanian | 24 | 41 | Lithuanian (Lithuania) |
| pl_PL = pl = Polish | 25 | 42 | Polish (Poland) |
| hu_HU = hu = Hungarian | 26 | 43 | Hungarian (Hungary) |
| et_EE = et = Estonian | 27 | 44 | Estonian (Estonia) |
| lv_LV = lv = Latvian | 28 | 45 | Latvian (Latvia) |
| se = Sami | 29 | 46 | Northern Sami |
| fo_FO = fo = Faroese | 30 | 47 | Faroese (Faroe Islands) |
| fa_IR = fa = Farsi | 31 | 48 | Persian (Iran) |
| ru_RU = ru = Russian | 32 | 49 | Russian (Russia) |
| ga_IE = ga = Irish | 35 | 50 | Irish (Ireland) |
| sq = Albanian | 36 | -1 | Albanian |
| ro_RO = ro = Romanian | 37 | 39 | Romanian (Romania) |
| cs_CZ = cs = Czech | 38 | 56 | Czech (Czech Republic) |
| sk_SK = sk = Slovak | 39 | 57 | Slovak (Slovakia) |
| sl_SI = sl = Slovenian | 40 | 66 | Slovenian (Slovenia) |
| yi = Yiddish | 41 | -1 | Yiddish |
| sr_CS = sr = Serbian | 42 | 65 | Serbian (Serbia) |
| mk_MK = mk = Macedonian | 43 | 67 | Macedonian (Macedonia) |
| bg_BG = bg = Bulgarian | 44 | 72 | Bulgarian (Bulgaria) |
| uk_UA = uk = Ukrainian | 45 | 62 | Ukrainian (Ukraine) |
| be_BY = be = Byelorussian | 46 | 61 | Belarusian (Belarus) |
| uz_UZ = uz = Uzbek | 47 | 99 | Uzbek (Uzbekistan) |
| kk = Kazakh | 48 | -1 | Kazakh |
| hy_AM = hy = Armenian | 51 | 84 | Armenian (Armenia) |
| ka_GE = ka = Georgian | 52 | 85 | Georgian (Georgia) |
| mo = Moldavian | 53 | -1 | Moldavian |
| ky = Kirghiz | 54 | -1 | Kyrgyz |
| tg = Tajiki | 55 | -1 | Tajik |
| tk = Turkmen | 56 | -1 | Turkmen |
| mn = Mongolian | 58 | -1 | Mongolian |
| ps = Pashto | 59 | -1 | Pashto |
| ku = Kurdish | 60 | -1 | Kurdish |
| ks = Kashmiri | 61 | -1 | Kashmiri |
| sd = Sindhi | 62 | -1 | Sindhi |
| bo = Tibetan | 63 | 105 | Tibetan |
| ne_NP = ne = Nepali | 64 | 106 | Nepali (Nepal) |
| sa = Sanskrit | 65 | -1 | Sanskrit |
| mr_IN = mr = Marathi | 66 | 104 | Marathi (India) |
| bn = Bengali | 67 | 60 | Bengali |
| as = Assamese | 68 | -1 | Assamese |
| gu_IN = gu = Gujarati | 69 | 94 | Gujarati (India) |
| pa = Punjabi | 70 | 95 | Punjabi |
| or = Oriya | 71 | -1 | Oriya |
| ml = Malayalam | 72 | -1 | Malayalam |
| kn = Kannada | 73 | -1 | Kannada |
| ta = Tamil | 74 | -1 | Tamil |
| te = Telugu | 75 | -1 | Telugu |
| si = Sinhalese | 76 | -1 | Sinhala |
| my = Burmese | 77 | -1 | Burmese |
| km = Khmer | 78 | -1 | Khmer |
| lo = Lao | 79 | -1 | Lao |
| vi_VN = vi = Vietnamese | 80 | 97 | Vietnamese (Vietnam) |
| id = Indonesian | 81 | -1 | Indonesian |
| tl = Tagalog | 82 | -1 | Tagalog |
| ms = Malay | 83 | -1 | Malay |
| am = Amharic | 85 | -1 | Amharic |
| ti = Tigrinya | 86 | -1 | Tigrinya |
| om = Oromo | 87 | -1 | Oromo |
| so = Somali | 88 | -1 | Somali |
| sw = Swahili | 89 | -1 | Swahili |
| rw = Kinyarwanda | 90 | -1 | Kinyarwanda |
| rn = Rundi | 91 | -1 | Rundi |
| Nyanja | 92 | -1 | Nyanja |
| mg = Malagasy | 93 | -1 | Malagasy |
| eo = Esperanto | 94 | 103 | Esperanto |
| cy = Welsh | 128 | 79 | Welsh |
| eu = Basque | 129 | -1 | Basque |
| ca_ES = ca = Catalan | 130 | 73 | Catalan (Spain) |
| la = Latin | 131 | -1 | Latin |
| qu = Quechua | 132 | -1 | Quechua |
| gn = Guarani | 133 | -1 | Guarani |
| ay = Aymara | 134 | -1 | Aymara |
| tt = Tatar | 135 | -1 | Tatar |
| ug = Uighur | 136 | -1 | Uyghur |
| dz_BT = dz = Dzongkha | 137 | 83 | Dzongkha (Bhutan) |
| jv = Javanese | 138 | -1 | Javanese |
| su = Sundanese | 139 | -1 | Sundanese |
| gl = Galician | 140 | -1 | Galician |
| af_ZA = af = Afrikaans | 141 | 102 | Afrikaans (South Africa) |
| br = Breton | 142 | 77 | Breton |
| iu_CA = iu = Inuktitut | 143 | 78 | Inuktitut (Canada) |
| gd = Scottish | 144 | 75 | Scottish Gaelic |
| gv = Manx | 145 | 76 | Manx |
| to_TO = to = Tongan | 147 | 88 | Tongan (Tonga) |
| grc | 148 | 40 | Ancient Greek |
| kl = Greenlandic | 149 | 107 | Kalaallisut |
| az = Azerbaijani | 150 | -1 | Azerbaijani |
Here:
zh_HK
and Traditional Chinese
(both have same code number as zh_TW
), probably through the more sophisticated CFLocale list. As of iOS 10.3.1, the following list of lproj names are actually used by Apple: