Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Locale codes for iPhone lproj folders

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.

like image 562
Moshe Avatar asked Jun 14 '10 20:06

Moshe


People also ask

How to add localization file?

Select your root project file, and then proceed to the project panel. Find the Localization section section, click the “plus” (+) icon, and add the desired languages. Select only the Localizable. strings file for localization.

What is a locale language code?

In computing, a locale is a set of parameters that defines the user's language, region and any special variant preferences that the user wants to see in their user interface. Usually a locale identifier consists of at least a language code and a country/region code.

How many languages does iOS support?

iOS can be localized into 100 languages and regions, but only 33 languages (plus 6 regions) are supported in App Store Connect. (Apple has translated iOS itself into about 40+ languages.) That means your app can be localized into some languages, like Chinese Hong Kong, but the app descriptions cannot.

What is AR Lproj?

LPROJ files mostly belong to Mac OS X Localized Project Folder. Not really a file, this is typically a folder that contains localized versions of file such as ReadMe, Welcome, and License files or background graphics. These localized files are used by install makers to customize install packages.


1 Answers

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:

  • L# is the language code and C# is the country code. I consider two identifier identical if they share the same language and country code.
  • I have only listed strings appearing the source file. It also recognizes something like 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:

  • Danish, Dutch, English, French, German, Italian, Japanese, Polish, Portuguese, Russian, Spanish, Swedish
  • ar, bo, ca, cs, da, de, el, en, es, fi, fr, he, hi, hr, hu, id, it, ja, ko, ms, nb, nl, no, pa, pl, pt, ro, ru, sk, sv, th, tr, uk, ur, vi, chr (Note: chr = Cherokee)
  • en_AU, en_CA, en_CN, en_GB, en_ID, en_IN, en_JP, en_MY, en_NZ, en_SG
  • es_419, es_AR, es_CL, es_CO, es_CR, es_GT, es_MX, es_PA, es_PE, es_US
  • ar_SA, da_DK, de_AT, de_CH, fi_FI, fr_BE, fr_CA, fr_CH, he_IL, it_CH, ms_MY, nb_NO, nl_BE, nl_NL, pt_BR, pt_PT, ru_RU, sv_SE, th_TH, tr_TR, yue_CN, zh_CN, zh_HK, zh_TW
like image 72
kennytm Avatar answered Sep 20 '22 03:09

kennytm