¿Códigos de idioma para chino simplificado y chino tradicional?

79

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/?
jeph perro
fuente
2
Dice que el español y el francés son fáciles, ¡pero la base de datos CLDR enumera 26 y 47 variantes específicas de cada país, respectivamente, para cada uno! Solo depende de cuánto dependen los recursos que está proporcionando de las diferencias.
Patanjali

Respuestas:

174

@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_CNpara China continental, zh_SGpara Singapur,zh_TW para Taiwán o zh_HKpara 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_CNy zh_TWcon 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_HANSpara caracteres chinos simplificados (genéricos) y zh_HANTpara caracteres chinos tradicionales, excepto en casos raros en los que es significativo distinguir diferentes países.

Todd Owen
fuente
11
Esta es una gran respuesta, bien escrita y probablemente no sea algo que la mayoría de la gente sepa. Y traza una buena línea entre lo que es técnicamente más correcto ( 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 de zh_CN, que honestamente es menos de lo que esperaba.
dkarp
11
En realidad, la diferencia en las URL es tan grande como esperaba. inurl:zh_CNda 4,3 millones de aciertos; inurl:zh_HANSda 20K. Aún así, una respuesta realmente informativa.
dkarp
2
La diferencia entre HANS y HANT es mucho menos útil que CN y TW, ya que la diferencia es más que los caracteres, pero el uso específico de la región. Por ejemplo, subrutina se traduce como 子程序 en China continental, pero como 子 程式 en Taiwán. En este ejemplo, los caracteres son los mismos en chino simplificado y tradicional, pero la traducción debería ser diferente.
Yongwei Wu
34

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 con mydomain.com/fr_CA(Canadá) y mydomain.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-CAy fr-FR).

La configuración regional estándar para chino simplificado es zh_CN. La configuración regional estándar para el chino tradicional es zh_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.

dkarp
fuente
2

El idioma depende de dónde se hable (¡doh!), Por lo que los códigos de idioma y ubicación reflejan esa realidad. zhes el código de idioma básico, pero debido a que hay dos formas principales, existen zh_Hansy zh_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_HKy zh_Hant_HKpara 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:

  • Cuerdas fijas? Solo idioma.
  • ¿Formatear sobre la marcha? Lugar.
  • ¿Corrección ortográfica en el entorno de visualización? Lugar.
  • ¿Páginas completas / subsitio? Solo idioma, de lo contrario, configuración regional (como una variante de idioma) si se requiere contenido significativamente diferente.

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.

Patanjali
fuente
Mi pensamiento es si su lenguaje de programación (como Java) o marco de coincidencia de idiomas puede admitir el formato de tipo zh-hans_CN, entonces hágalo. Si no es así, entonces tener el País implica el 'script', como se supone que Hans para zh_CN, zh_SG y Hant para zh_TW, zh_HK. Así que la parte del guión se puede dejar fuera. Si su sistema no tiene coincidencia de países en absoluto, como en / fr / de / es para la mayoría de los idiomas ... entonces podría tener el formato de tipo zh_hans / zh_hant al menos para ciertos idiomas (como Drupal es principalmente De esta manera, permito que mis aplicaciones móviles envíen esta información para que coincida con mi API de Drupal CMS)
armyofda12mnkeys