Chino simplificado y tradicional frente a regiones

En el proceso de implementación del soporte chino tradicional y simplificado en mi aplicación de Android, me confundí sobre cómo se supone que funciona.

Entonces de leer el documentación así como algunas discusiones como este y este He puesto chino simplificado en

  • valores-zh
  • valores-zh-rCN
  • valores-zh-rSG

y chino tradicional en

  • valores-zh-rTW
  • valores-zh-rHK

Todo eso funciona bien, pero de alguna manera no tiene sentido para mí (lo siento si no entiendo lo suficiente sobre el uso tradicional chino o simplificado).

Por lo que entiendo al verificar el cuadro de diálogo de configuración regional en el emulador, así como en un teléfono rooteado, un usuario puede cambiar la configuración regional a chino simplificado o chino tradicional.

Ahora aquí está la pregunta. ¿Cómo sabe el sistema dónde obtener el archivo strings.xml en chino simplificado o tradicional? ¿Hay algún tipo de suposición que diga que si se supone que debo mostrar chino simplificado, lo obtengo de values-zh y lo tradicional de values-zh-rTW?

Pero, ¿qué pasa si un usuario se encuentra en HK y configura su dispositivo para mostrar chino simplificado? ¿O qué pasa si un emigrante en otro lugar del mundo configura su dispositivo en chino tradicional pero su región es, por ejemplo, EE.UU. o CA?

¿Qué tengo que hacer para permitir que mis usuarios establezcan su configuración regional y que mi aplicación aparezca con la configuración regional correcta?

Actualizar:

De una investigación más profunda, creo que un usuario de teléfono Android no puede establecer el país por separado del idioma. Solo pueden establecer lo que se llama la configuración regional en la interfaz de usuario. Consta de idioma y país, pero la lista es limitada, por lo que no es posible realizar muchas combinaciones.

Por ejemplo, una persona china que vive en los EE. UU. Y quiere usar chino tradicional podría establecer el idioma en chino tradicional (al menos en un teléfono rooteado) y luego tendría una configuración regional de zh-rTW. De ninguna manera podría establecer que su país por separado sea Estados Unidos. De manera similar, cualquier tipo de emigrante no puede establecer su lengua materna con el país en el que vive actualmente.

Básicamente, eso significa que solo se admiten un montón de combinaciones de idioma y país. Ahora la pregunta es ¿cómo saber cuáles son?

preguntado el 15 de noviembre de 10 a las 20:11

Sé que podría intentar resolver esto leyendo la fuente ... y probablemente lo haré si nadie me ayuda ... -

3 Respuestas

Así que creo que después de una investigación más profunda y con la respuesta de Marks, voy a dar una respuesta yo mismo. Aquí va:

Fuera de la caja, Android solo tiene las dos configuraciones regionales zh_rCN, que es chino simplificado y zh_rTW, que es chino tradicional. Como puede ver en la aplicación Configuración, estas son las únicas configuraciones regionales proporcionadas:

https://android.googlesource.com/platform/packages/apps/Settings/+/master/res/

Sin embargo, cualquier otro creador de un sistema Android, por ejemplo, para un teléfono vendido en China o algo así, podría cambiar lo que agregan. El conjunto general admitido teóricamente se puede encontrar mirando la lista de configuraciones regionales que se encuentran en la aplicación icu4c:

https://android.googlesource.com/platform/external/icu4c.git/+/master/data/locales/ Como puede ver para los chinos, hay

  • zh.txt
  • zh_CN.txt
  • zh_HK.txt
  • zh_Hans.txt
  • zh_Hans_CN.txt
  • zh_Hans_HK.txt
  • zh_Hans_MO.txt
  • zh_Hans_SG.txt
  • zh_Hant.txt
  • zh_Hant_HK.txt
  • zh_Hant_MO.txt
  • zh_Hant_TW.txt
  • zh_MO.txt
  • zh_SG.txt
  • zh_TW.txt

Hant es el código ISO para chino tradicional y Hans para chino simplificado. Entonces, teóricamente, esto significaría que podríamos tener

  • chino simplificado en China, Hong Kong, Macao y Singapur
  • chino tradicional en Hong Kong, Macao y Taiwán

Sin embargo, tenga en cuenta que la aplicación Configuración tendría que modificarse para tener las diferentes selecciones de configuración regional. Entonces, en esta etapa, el chino simplificado se traduce en zh_rCN y zh_rTW tradicional y usted debe estar aparte de los usuarios que tienen una imagen de Android modificada que admite otras configuraciones regionales.

En cualquier caso, para estar en el lado de guardar, puede usar la clase Configuración para obtener la configuración regional, por ejemplo, en su clase Aplicación con getResources (). GetConfiguration (). Locale.

Puede, por ejemplo, registrar eso y enviar los datos a su sistema de seguimiento (lo que sea que use) o puede verificar los compatibles y lanzar una excepción con la configuración regional en el mensaje y eso luego se mostrará en la interfaz de su mercado ... Sin embargo, significaría un mínimo de un bloqueo de su aplicación (si está en la bola, puede publicar y actualizar unos minutos más tarde ..)

Entonces, para recapitular ... la configuración mínima sería reflejar lo que se hace en la aplicación de configuración (solo tiene zh-rCN y zh-rTW), pero si desea proporcionar configuraciones regionales predeterminadas para Singapur, Hong Kong, Macao, suministro de chino tradicional como predeterminado también puedes hacer eso y debería funcionar. Sin embargo, no tengo evidencia de que dicha configuración se use en cualquier lugar.

Espero que ayude.

respondido 07 mar '17, 00:03

Desde Android 7.0, si un usuario selecciona zh-rSG, buscará zh-rSG, si no puede encontrarlo, buscará zh-rCN o cualquier otra configuración regional con el script simplificado. - Lo mismo ocurre si un usuario selecciona sv-rFI, buscará, en orden: sv-rFI, sv, sv-rSE - Liggliluff

El repositorio actual proporciona values-zh-rHK. - koala yung

values-zh-rCN no se compilará. Dice un nombre de directorio de recursos no válido. - Janusz

Respuesta actualizada

La pregunta y las respuestas anteriores son bastante antiguas. Es difícil saber qué tan correctos todavía son. Esta respuesta es para otras personas que vienen aquí y solo quieren admitir el chino tradicional y simplificado en su aplicación, pero no están demasiado preocupadas por los detalles de la localidad.

Añada string.xml archivos para chino tradicional y simplificado

En Android Studio, haga clic derecho en el res carpeta y elegir Nuevo> archivo de recursos de Android. Escribir strings para Nombre de archivo y elige Lugar de la lista.

enter image description here

Desplácese hacia abajo hasta zh para el idioma. Agrega uno strings se declara en CN: China (simplificado) y uno para TW: Taiwán (tradicional). Si solo está usando uno, elija Cualquier region.

Como entiendo el documentación, la búsqueda primero verificará si existe una coincidencia exacta para el idioma y la región (Ejemplo: chino-tradicional-Taiwán). Luego recurrirá a controles más amplios. (Este sistema es a partir de Android 7.0).

1. zh-Hant-TW   // Chinese - Traditional - Taiwan
2. zh-Hant      // Chinese - Traditional
3. zh           // Chinese

No estoy completamente seguro de cómo funciona todo esto, así que lea este y este documentación.

Siguiendo este método en mi propia aplicación, cambiar la configuración del sistema entre Tradicional y Simplificado también cambió la visualización de la aplicación.

Conversión entre tradicional y simplificada

Si ya tiene una traducción en Tradicional o Simplificado, puede convertir automáticamente el texto en línea. Comience con Google Translate para convertir al otro (solo pegue en su strings.xml expediente). Ya hace un trabajo bastante bueno. Luego, hágalo de nuevo varias veces utilizando uno de los muchos convertidores en línea. Utilice una herramienta de comparación de texto o un sitio (comparar-texto.com es bueno) para comparar el resultado de las conversiones. Eso le ayudará a detectar los errores que cometió Google.

Respondido el 20 de junio de 20 a las 10:06

https://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

Android 7.0 (API nivel 24) introdujo compatibilidad con etiquetas de idioma BCP 47, que puede usar para calificar recursos específicos de idioma y región. Una etiqueta de idioma se compone de una secuencia de una o más subetiquetas, cada una de las cuales refina o reduce la gama de idiomas identificada por la etiqueta general.

ahora puede definir tradicional o simplificado utilizando las etiquetas BCP 47. (Para usar una etiqueta de idioma BCP 47, concatenar b + y un código de idioma ISO 639-1 de dos letras, opcionalmente seguido de subetiquetas adicionales separadas por +).

más específicamente: -

Simplificado:

values-b+zh (defaults to simplified) 
values-b+zh+Hans or
values-b+zh+Hans+CN (if you want to include regions)

Tradicional:

values-b+zh+Hant or
values-b+zh+TW (defaults to traditional)
values-b+zh+Hant+TW (if you want to include regions)

puedes mirar https://tools.ietf.org/html/bcp47 para otras combinaciones interesantes. incluyendo: -

  zh-cmn-Hans-CN (Chinese, Mandarin, Simplified script, as used in
  China)

  cmn-Hans-CN (Mandarin Chinese, Simplified script, as used in
  China)

  zh-yue-HK (Chinese, Cantonese, as used in Hong Kong SAR)

  yue-HK (Cantonese Chinese, as used in Hong Kong SAR)

  zh-nan-TW (min nan Chinese, as used in Taiwan)

  zh-hak-CN (Chinese, Hakka, China).

recuerde agregar -by reemplazar el - en cada etiqueta con +

Respondido 12 Abr '19, 03:04

Esta debería ser la respuesta correcta, especialmente cuando desea proporcionar solo 2 traducciones: Hans y Hant para todas las regiones. Hans se usa en China continental y Singapur, y Hant se usa en Hong Kong y Taiwán. Y si desea proporcionar contenido de audio a través de texto a voz, la segunda parte de esta respuesta puede ser buena. - ZZZ

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.