2010-06-14 24 views

Respuesta

47

Sólo se les puede llamar English.lproj, Spanish.lproj, etc.

El "nombres abreviados" son en realidad IETF language tags (es decir BCP 47), excepto que se utiliza en lugar de pt_PT.lprojpt-PT.lproj.


La rutina de interpretación real es en https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/PlugIn.subproj/CFBundle_Locale.c, determinada por la función CFBundleGetLocalizationInfoForLocalization. Replicado aquí:

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

aquí:

  • L # es el código de idioma y C# es el código de país . Considero que dos identificadores son idénticos si comparten el mismo idioma y el mismo código de país.
  • Solo he enumerado las cadenas que aparecen en el archivo fuente. También reconoce algo como zh_HK y Traditional Chinese (ambos tienen el mismo número de código que zh_TW), probablemente a través de la lista CFLocale más sofisticada.

A partir de IOS 10.3.1, la siguiente lista de nombres lproj son actualmente usados ​​por Apple:

  • danés, holandés, Inglés, francés, alemán, italiano, japonés, polaco, Portugués, ruso, español, sueco
  • ar, bo, ca, cs, da, de, el, en, es, fi, fr, él, hola, hr, hu, id, it, ja, ko, ms, nb, nl, no, pa, pl, pt, ro, ru, sk, sv, th, tr, uk, ur, vi, chr (Nota: chr = Cherokee)
  • es_ES, 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, es_ES, es_ES, es_ES, sv_SE, th_TH, tr_TR, yue_CN, zh_CN, zh_HK, zh_TW
+0

realidad vi esta aquí: http: //www.cilinder. be/docs/next/NeXTStep/3.3/nd/Concepts/Localization.htmld/index.html Interesante. ¡La experiencia de Steve Jobs con NeXT realmente influye en Apple hasta hoy! – Moshe

+1

¿por qué hay dobles de algunos de ellos? Malayo, mongol, azerbaiyano – slf

+0

me hace desear que el viejo nórdico fuera compatible con – slf

1

alemán es de, español es es. El formato general para estos códigos es languageCode_CountryCode o languageCode (se usa como el predeterminado para cuando se especifica un idioma, pero no como un país).

Así que usted puede hacer cosas como en (genérica Inglés), en_GB (Inglés, pero desde el Reino Unido), fr_FR (francés de Francia), y fr_CH (suizo francés).

Los códigos de idioma son parte de ISO 639-1 standard, y los códigos de país son del ISO 3166 standard.

3

En breve, debe usar dos códigos de letras para la mayoría de los casos, como se especifica en BCP 47 codes.

Más largo, según lo especificado por official Apple documentation se supone que debes usar BCP 47 codes.

Ahora la regla de oro es usar el código más corto posible que tenga sentido. Debería usar esto porque esto maximiza la cobertura para locales similares.

Por ejemplo, si localizas en ruso, deberías usar solo el código ru, en lugar de alternativas como ru-RU. Esto es importante porque si usa el código abreviado, los usuarios de otros países que hablan ruso verán su solicitud en ruso. De lo contrario, se mostrará en ruso solo para personas que usan el idioma ruso de Rusia.

Si desea conocer más información sobre los códigos de lenguaje, incluyendo los códigos recomendados por los idiomas más usados, usted debe leer un breve artículo que escribí hace más de un año http://blog.i18n.ro/simplified-locale-codes/ - Recuerde que hay algunos trucos con respecto portugués y Chino pero para otros idiomas puede usar la lista a continuación.

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

Esta pregunta ha sido contestada, pero creo que hizo más confuso por las múltiples fuentes. El hecho es que iOS tiene 30 idiomas que reconocerá como carpetas .lproj. No aceptará ningún código regional, por lo que decirlo fr-CA no le permitirá obtener francés canadiense, sino que simplemente usará sus cadenas en inglés. Debe usar el código de dos letras para el idioma (en.lproj, fr.lproj, es.lproj, de.lproj, etc.). La única excepción a esta regla es chino, que debe ser zh_Hans para chino simplificado y zh_Hant para chino tradicional.

Lo que lo hace aún más confuso es que iTunes App Store tiene un diferente conjunto de idiomas que comprende, y reconoce muchas versiones regionales como el inglés australiano y el portugués brasileño.

Hay una lista completa (y actualizada) de los idiomas soportados y los códigos de idioma actual para iOS y iTunes aquí:

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

+0

No sé cuándo cambió esto, pero es posible realizar traducciones de idiomas específicos de la región como francés canadiense ahora. En XCode, vaya a Proyecto, Información, Localizaciones, presione el botón +, luego desplácese hacia abajo hasta la parte inferior de la lista de idiomas hasta llegar a Otro con la flecha derecha, esto abrirá una gran lista que incluye variantes regionales para los idiomas. –

Cuestiones relacionadas