2010-06-14 5 views

Répondre

47

Vous pouvez les appeler English.lproj, Spanish.lproj, etc.

Les "noms abrégés" sont en fait IETF language tags (à savoir BCP 47), sauf que vous utilisez pt_PT.lproj au lieu de pt-PT.lproj.


La routine d'interprétation réelle est en https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/PlugIn.subproj/CFBundle_Locale.c, déterminée par la fonction CFBundleGetLocalizationInfoForLocalization. Répliquées ici:

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

ici:

  • L # est le code de langue et C# est le code du pays . Je considère deux identifiants identiques s'ils partagent la même langue et le même code de pays.
  • J'ai seulement listé les chaînes apparaissant dans le fichier source. Il reconnaît également quelque chose comme zh_HK et Traditional Chinese (les deux ont le même numéro de code que zh_TW), probablement à travers la liste CFLocale plus sophistiquée.

Comme d'iOS 10.3.1, la liste suivante des noms de lproj sont effectivement utilisés par Apple:

  • danois, néerlandais, anglais, français, allemand, italien, japonais, polonais, Portugais, Russe, Espagnol, Suédois
  • ar, bo, ca, cs, da, de, el, en, es, fi, fr, il, salut, hr, hu, id, il, ja, ko, ms, nb, nl, non, pa, pl, pt, ro, ru, sk, sv, th, tr, uk, ur, vi, chr (Note: chr = Cherokee)
  • en_AU, en_CA, en_CN, fr, 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, fr_FR, 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
+0

j'ai vu en fait cela ici: http: //www.cilinder. be/docs/next/NeXTStep/3.3/nd/Concepts/Localization.htmld/index.html Intéressant. L'expérience de Steve Jobs avec NeXT influence vraiment Apple jusqu'à aujourd'hui! – Moshe

+1

Pourquoi y a-t-il des doubles de certains d'entre eux? Malais, mongol, azerbaïdjanais – slf

+0

me fait souhaiter Vieux nordique a été pris en charge – slf

1

allemand est de, l'espagnol est es. Le format général de ces codes est languageCode_CountryCode ou languageCode (utilisé par défaut lorsqu'une langue est spécifiée, mais pas un pays).

Ainsi, vous pouvez faire des choses comme en (générique anglais), en_GB (anglais, mais au Royaume-Uni), fr_FR (français de France), et fr_CH (suisse français).

Les codes de langue font partie de ISO 639-1 standard et les codes de pays proviennent du ISO 3166 standard.

3

En peu de temps, vous devez utiliser deux codes de lettres pour la plupart des cas, comme indiqué par BCP 47 codes. Plus long, comme indiqué par official Apple documentation, vous devez utiliser BCP 47 codes.

Maintenant, la règle consiste à utiliser le code le plus court possible. Vous devriez l'utiliser parce que cela maximise la couverture pour les paramètres régionaux similaires. Par exemple, si vous localisez en russe, vous devez utiliser uniquement le code ru, au lieu d'alternatives comme ru-RU. Ceci est important car si vous utilisez le code de fonction, les utilisateurs d'autres pays qui parlent russe verront votre application en russe. Sinon, vous n'afficherez le russe que pour les personnes utilisant la langue russe depuis la Russie.

Si vous voulez en savoir plus d'informations sur les codes linguistiques y compris les codes recommandés pour les langues les plus utilisées, vous devriez lire un court article je l'ai écrit il y a plus d'un an http://blog.i18n.ro/simplified-locale-codes/ - Rappelez-vous qu'il ya quelques trucs concernant portugais et Chinois mais pour d'autres langues, vous pouvez utiliser la liste ci-dessous.

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

1

Cette question a été répondu mais je pense en plus confuse par les multiples sources. Le fait est que iOS a 30 langues qu'il reconnaîtra comme des dossiers .lproj. Il n'acceptera aucun code régional, ce qui veut dire que fr-CA ne vous permettra pas d'être canadien-français, mais utilisera simplement vos chaînes en anglais. Vous devez utiliser le code à deux lettres pour la langue (en.lproj, fr.lproj, es.lproj, de.lproj, etc.). La seule exception à cette règle est le chinois, qui doit être zh_Hans pour le chinois simplifié et zh_Hant pour le chinois traditionnel. Ce qui rend cela encore plus déroutant, c'est que l'iTunes App Store a un différent langage de langues qu'il comprend, et il reconnaît de nombreuses versions régionales comme l'anglais australien et le portugais brésilien.

Il y a une complète (et mis à jour) liste des langues prises en charge en cours et les codes de langue pour les deux iOS et iTunes ici:

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

+0

Je ne sais pas quand cela a changé, mais il est possible de faire des traductions de langues spécifiques à une région comme Canadien français maintenant. Dans XCode, allez dans Project, Info, Localizations, appuyez sur le bouton +, puis faites défiler vers le bas de la liste des langues jusqu'à ce que vous arriviez à Other avec la flèche droite, cela ouvrira une belle liste comprenant des variantes régionales pour les langues. –

Questions connexes