2010-11-15 21 views
58

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

Así que la lectura de la documentation , así como algunas discusiones como this y this he puesto chino simplificado en

  • valores-zh
  • valores-zh-RCN
  • valores-zh-RSG

y chino tradicional en

  • valores-zh-RTW
  • valores-zh-RHK

Que todo funciona bien, pero de alguna manera no tiene sentido para mí (lo siento si yo no entiendo lo suficiente sobre chino simplificado vs uso tradicional).

Por lo que entiendo de comprobar la configuración de diálogo en el emulador, así como en un teléfono raíces un usuario puede cambiar la configuración regional de chino simplificado o chino tradicional local.

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

Pero lo que si un usuario se encuentra en Hong Kong y puso su dispositivo para mostrar chino simplificado? O qué pasa si un emigrante en otro lugar del mundo establece su dispositivo en chino tradicional, pero su región es, por ejemplo, ¿US o CA?

¿Qué tengo que hacer para que mis usuarios para establecer su localidad y tienen mi aplicación aparece con la configuración regional de la derecha?

Actualización:

De mayor investigación Creo que un usuario de un teléfono Android no se puede configurar el país de forma separada de la lengua. Solo pueden establecer lo que se denomina 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.

E.g. una persona china que vive en los EE. UU. que desee utilizar el 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 su país por separado para ser EE. UU. De manera similar, cualquier tipo de emigrante no puede establecer su idioma nativo con el país en el que actualmente vive.

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

+0

Sé que podría tratar de resolver esto leyendo la fuente ... y probablemente lo haga si nadie me ayuda. –

Respuesta

45

Así que creo que después de una investigación adicional y con la respuesta Marcas voy a dar una respuesta a mí 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 se puede ver en la aplicación Ajustes estos son los únicos lugares suministrados:

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 así podría cambiar lo que agregan. El conjunto apoyado teóricamente en general se puede encontrar buscando en la lista de lugares que se encuentra en la aplicación icu4c:

https://android.googlesource.com/platform/external/icu4c.git/+/master/data/locales/ Como se puede ver por China hay

  • zh.txt
  • zh_CN.txt
  • zh_HK.txt
  • zh_Hans.txt
  • zh_Hans_CN.txt
  • zh_H ans_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. Lo que en teoría esto significaría que podríamos tener

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

Sin embargo, tenga en cuenta que la aplicación Ajustes haría tiene que ser modificado para tener las diferentes selecciones de configuración regional. Por lo tanto, en esta etapa, el chino simplificado se traduce en zh_rCN y zh_rTW tradicional, y usted debe estar separado para los usuarios que tienen una imagen de Android modificada que admite otras configuraciones regionales.

En cualquier caso, para ahorrar, puede usar la clase de configuración para obtener la configuración regional, p. en su clase de aplicación con getResources(). getConfiguration(). locale.

Puede p. Ej. registre eso y envíe los datos a su sistema de seguimiento (sea lo que sea que use) o podría verificar si hay soporte y lanzar una excepción con la configuración regional en el mensaje y que luego se mostraría en su interfaz de 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 ...)

Recapitulando ... 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, HongKong, Macao que proporciona chino tradicional como opción predeterminada, puede hacerlo también y debería funcionar. Sin embargo, no tengo evidencia de que dicha configuración se use en ningún lugar.

Espero que ayude.

+0

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, lo buscará, en orden: sv-rFI, sv, sv-rSE – Liggliluff

+0

El repositorio actual proporciona 'values-zh-rHK'. –

+0

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

1

Respuesta actualizada

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

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

En Android Studio, haga clic derecho en la carpeta y seleccione resNueva> archivo de recursos Android. Escriba strings para el Nombre de archivo y elija Configuración regional de la lista.

enter image description here

de desplazamiento hacia abajo para zh para el idioma. Agregue un archivo strings para CN: China (simplificado) y uno para TW: Taiwán (tradicional). Si solo está utilizando uno, simplemente elija Cualquier región.

Según tengo entendido, documentation, la búsqueda primero comprobará si hay una coincidencia exacta para el idioma y la región (Ejemplo: chino tradicional de Taiwán). Luego volverá 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 acerca de cómo funciona todo esto así que por favor leer this y this documentación.

Siguiendo este método en mi propia aplicación, el cambio de la configuración del sistema entre tradicional y simplificado también modificó la visualización de la aplicación.

La conversión entre tradicional y simplificado

Si ya tiene una traducción en cualquiera tradicional o simplificado, puede convertir el texto de auto en línea. Comience con Google Translate para convertir a la otra (solo pegue en su archivo strings.xml). Ya hace un buen trabajo. Luego, hazlo de nuevo varias veces usando uno de los muchos convertidores en línea. Use una herramienta de comparación de texto o sitio (text-compare.com es bueno) para comparar el resultado de las conversiones. Eso te ayudará a detectar los errores que cometió Google.

Cuestiones relacionadas