Подтвердить что ты не робот

Локальные коды для папок iPhone lproj

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

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

4b9b3361

Ответ 1

Вы можете просто называть их 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 # - код языка, а С# - код страны. Я считаю, что два идентификатора идентичны, если они имеют один и тот же язык и код страны.
  • У меня есть только перечисленные строки, отображающие исходный файл. Он также распознает что-то вроде zh_HK и Traditional Chinese (оба имеют одинаковый кодовый номер zh_TW), возможно, через более сложный список CFLocale.

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

  • Датский, голландский, английский, французский, немецкий, итальянский, японский, польский, португальский, русский, испанский, шведский
  • 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 (Примечание: 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

Ответ 2

В скором времени вы должны использовать два буквенных кода для большинства случаев, как указано коды 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).

Ответ 3

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

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

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

Ответ 4

На этот вопрос был дан ответ, но я думаю, что несколько запутанных из нескольких источников. Дело в том, что 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