Коды локалей для папок iPhone lproj

Где я могу найти список сокращений названий локалей для папок локализации моего проекта? (Такие как en для английского, fr по французски).

Я ищу делать немецкий, испанский и другие.

4 ответа

Решение

Вы можете просто позвонить им English.lproj, Spanish.lproj, так далее.

"Сокращенные имена" на самом деле являются языковыми тегами IETF (т.е. BCP 47), за исключением того, что вы используете pt_PT.lproj вместо pt-PT.lproj,


Фактическая процедура интерпретации находится в https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/PlugIn.subproj/CFBundle_Locale.c, определяемой CFBundleGetLocalizationInfoForLocalization функция. Тиражируется здесь:

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

Вот:

  • L # - это код языка, а C# - код страны. Я считаю два идентификатора идентичными, если они используют один и тот же язык и код страны.
  • Я только перечислил строки, появляющиеся в исходном файле. Это также признает что-то вроде zh_HK а также Traditional Chinese (оба имеют тот же код, что и zh_TW), вероятно, через более сложный список CFLocale.

Начиная с iOS 10.3.1, Apple фактически использует следующий список имен lproj:

  • Датский, голландский, английский, французский, немецкий, итальянский, японский, польский, португальский, русский, испанский, шведский
  • ар, бо, ча, сс, да, де, эль, ан, эс, фи, фр, он, привет, ч, ху, ид, это, я, ко, мс, нб, нл, нет, па, пл, pt, ro, ru, sk, sv, th, tr, uk, ur, vi, chr (примечание: chr = чероки)
  • 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, z_H_TH, TR

Вкратце, вы должны использовать двухбуквенные коды для большинства случаев, как указано в кодах BCP 47.

Дольше, как указано в официальной документации Apple, вы должны использовать коды BCP 47.

Теперь эмпирическое правило заключается в использовании кратчайшего кода, который имеет смысл. Вы должны использовать это, потому что это максимизирует покрытие для подобных локалей.

Например, если вы локализуетесь на русском языке, вы должны использовать только ru код, а не альтернативы, как ru-RU, Это важно, потому что, если вы используете короткий код, пользователи из других стран, говорящие по-русски, увидят ваше приложение на русском языке. В противном случае вы будете отображать русский только для людей, использующих русский язык из России.

Если вы хотите узнать больше информации о языковых кодах, включая рекомендуемые коды для большинства используемых языков, вам следует прочитать небольшую статью, которую я написал более года назад: http://blog.i18n.ro/simplified-locale-codes/ - Помните что есть некоторые хитрости относительно португальского и китайского, но для других языков вы можете использовать список ниже.

Arabic (ar), Czech (cs), Danish (da), German (de), Greek (el), Finnish (fi), Hebrew (he), Hungarian (hu), Italian (it), Japanese (ja), Korean (ko), Norwegian (nb), Dutch (nl), Polish (pl), Romanian (ro), Russian (ru), Swedish (sv), Turkish (tr), Ukrainian (uk).

Немецкий это deИспанский es, Общий формат для этих кодов languageCode_CountryCodeили жеlanguageCode (используется по умолчанию, когда указан язык, но не страна).

Так что вы можете делать такие вещи, как en (общий английский), en_GB (английский, но из Великобритании), fr_FR (Французский из Франции) и fr_CH (швейцарский французский).

Коды языков являются частью стандарта ISO 639-1, а коды стран - из стандарта ISO 3166.

На этот вопрос был дан ответ, но я думаю, что его несколько запутало множество источников. Дело в том, что iOS имеет 30 языков, которые она будет распознавать как папки.lproj. Он не будет принимать региональные коды, поэтому, сообщив об этом, fr-CA не получит французского канадца, а просто будет использовать ваши английские строки. Вам необходимо использовать двухбуквенный код языка (en.lproj, fr.lproj, es.lproj, de.lproj и т. Д.). Единственным исключением из этого правила является китайский, который должен быть zh_Hans для упрощенного китайского языка и zh_Hant для традиционного китайского.

Что делает это еще более запутанным, так это то, что в iTunes App Store есть другой набор языков, которые он понимает, и он распознает многие региональные версии, такие как австралийский английский и бразильский португальский.

Здесь представлен полный (и обновленный) список текущих поддерживаемых языков и кодов языков для iOS и iTunes:

http://www.ibabbleon.com/iOS-Language-Codes-ISO-639.html

Другие вопросы по тегам