Estamos creando subsitios en varios idiomas en nuestro sitio web.
Me gustaría utilizar los códigos de idioma de 2 letras. El español y el francés son fáciles. Obtendrán URL como:
mydomain.com/es
mydomain.com/fr
pero tengo un problema con el chino tradicional y simplificado. ¿Existen estándares para los códigos de 2 letras que se deben usar para estos idiomas?
mydomain.com/zh
mydomain.com/?
utf-8
internationalization
cjk
chinese-locale
jeph perro
fuente
fuente
Respuestas:
@dkarp da una excelente respuesta general. Agregaré algunos detalles adicionales con respecto al chino:
Hay varios países donde el chino es el principal idioma escrito. La principal diferencia entre ellos es si usan caracteres simplificados o tradicionales, pero también existen pequeñas diferencias regionales (en vocabulario, etc.). La forma estándar de distinguirlos sería con un código de país, por ejemplo,
zh_CN
para China continental,zh_SG
para Singapur,zh_TW
para Taiwán ozh_HK
para Hong Kong.China continental y Singapur utilizan caracteres simplificados y los demás utilizan caracteres tradicionales. Desde que China y Taiwán son los dos con las poblaciones más grandes, simplemente
zh_CN
yzh_TW
con frecuencia se utilizan para distinguir las versiones de caracteres simplificados y tradicionales de un sitio web.Sin embargo, más técnicamente correcto, pero no se usa comúnmente en la práctica , sería usar
zh_HANS
para caracteres chinos simplificados (genéricos) yzh_HANT
para caracteres chinos tradicionales, excepto en casos raros en los que es significativo distinguir diferentes países.fuente
zh_HANS
) y lo que existe en el uso general (zh_CN
). Puede hacer una búsqueda en Google de los dos términos: se trata de una diferencia de 7 a 1 a favor dezh_CN
, que honestamente es menos de lo que esperaba.inurl:zh_CN
da 4,3 millones de aciertos;inurl:zh_HANS
da 20K. Aún así, una respuesta realmente informativa.De hecho, existe una representación estándar para esto. A medida que la gente se ha topado con el mismo problema que está viendo, el mismo idioma, pero diferentes dialectos o caracteres, han ampliado el código de idioma de dos letras con un código de región de dos letras. Por lo tanto, es posible que tenga una página francesa universal en
mydomain.com/fr
, pero la internacionalización para los lectores canadienses franceses podría dejarlo conmydomain.com/fr_CA
(Canadá) ymydomain.com/fr_FR
(Francia). Algunas plataformas usan un guión en lugar de un guión bajo para separar los códigos de idioma y región (de ahífr-CA
yfr-FR
).La configuración regional estándar para chino simplificado es
zh_CN
. La configuración regional estándar para el chino tradicional eszh_TW
.Dudo en señalarles los documentos de estándares BCP 47 reales , ya que son, eh, un poco pesados en los detalles y un poco ligeros en la legibilidad. Simplemente use identificadores de configuración regional estándar, como los que usa Java , y estará bien.
fuente
El idioma depende de dónde se hable (¡doh!), Por lo que los códigos de idioma y ubicación reflejan esa realidad.
zh
es el código de idioma básico, pero debido a que hay dos formas principales, existenzh_Hans
yzh_Hant
, pero siguen siendo solo códigos de idioma, no locales.Específico de la ubicación
Para especificar completamente qué idioma se usa en una ubicación en particular , el código de país aún tiene que tener el sufijo, por lo que es
zh_Hans_HK
yzh_Hant_HK
para el chino simplificado y tradicional, respectivamente, como se habla en Hong Kong.En realidad, la realidad es que en muchos países a menudo se requiere algo más específico que el código de país, pero es probable que aumente exponencialmente la complejidad y el mantenimiento de las bases de datos como CLDR, además de la infraestructura de soporte para alimentarlas, como la IP para la extracción de detalles de ubicación. , no está disponible en general o no es lo suficientemente precisa.
Texto fijo
Ahora, si el código es solo para especificar qué conjunto de cadenas fijas usar en la interfaz de usuario, o incluso conjuntos de páginas enteras en un sitio, un sufijo de país no es realmente necesario, a menos que haya más de unos pocos lugares donde el idioma varía. significativamente (información basada en la ubicación) como para molestarse en crear un conjunto de recursos completamente separado.
Cuanto mayor sea el conjunto de recursos, es más probable que se requiera un código de idioma basado en la configuración regional [en este contexto, solo un atributo de idioma, en lugar de una configuración regional real, para que pueda llamarlo como desee!], Pero al menos usted solo tienes que hacer eso cuando sea necesario.
Valores sobre la marcha
Sin embargo, si desea formatear valores de variables particulares, como fechas, horas, monedas y números, las configuraciones regionales sobre la marcha se vuelven importantes, porque todas las herramientas que admiten dicha funcionalidad (como las basadas en datos Unicode CLDR) las esperan. La configuración regional para estos debe ser una configuración separada del código para el que se configura un lenguaje de interfaz de usuario generado internamente, a menos que desee crear un conjunto de recursos para cada configuración regional conocida y mantenerlos ad nauseum.
Herramientas de idioma del navegador
Tenga en cuenta que cuando se especifica la configuración regional para una página web que se puede editar, como en los cuadros de entrada, y se ha habilitado el corrector ortográfico en los atributos o css para el campo, las herramientas de idioma del navegador revisarán la ortografía del campo de acuerdo con esa configuración regional.
Criterios
Debe tener claro lo que proporciona el conjunto de recursos, así que considere:
Hoja de cálculo para minimizar los gastos generales de mantenimiento
Utilizo una hoja de cálculo para contener cadenas de interfaz de usuario donde cada código de idioma tiene un código principal, de modo que la celda para su versión de una cadena tiene una fórmula que obtiene su cadena del padre. Para crear una cadena personalizada para ese idioma y cadena, simplemente sobrescribo la fórmula de la celda con el texto exacto. Eso minimiza la cantidad de mantenimiento de recursos. Ejecuto una macro al final que genera un archivo de recursos completo para cada idioma.
fuente