Chinois simplifié et traditionnel vs régions

En train d’implémenter le support chinois traditionnel et simplifié dans mon application Android et je ne comprends pas comment cela est censé fonctionner.

Donc, en lisant la documentation ainsi que des discussions comme celle-ci et cela, j’ai mis le chinois simplifié dans

  • valeurs-zh
  • valeurs-zh-rCN
  • valeurs-zh-rSG

et chinois traditionnel

  • valeurs-zh-rTW
  • valeurs-zh-rHK

Tout fonctionne bien, mais cela n’a pas de sens pour moi (désolé si je ne comprends pas assez le chinois simplifié par rapport à l’usage traditionnel).

D’après ce que je comprends de la vérification de la boîte de dialog de parameters régionaux dans l’émulateur ainsi que sur un téléphone rooté, un utilisateur peut modifier les parameters régionaux en chinois simplifié ou en chinois traditionnel.

Maintenant, voici la question. Comment le système sait-il où se procurer le ssortingngs.xml chinois simplifié ou traditionnel? Existe-t-il une sorte d’hypothèse selon laquelle si je suis censé afficher le chinois simplifié, récupérez-le à partir de valeurs-zh et devenez traditionnel à partir de valeurs-zh-rTW?

Mais que se passe-t-il si un utilisateur se trouve dans HK et installe son appareil pour afficher le chinois simplifié? Ou que se passe-t-il si un émigrant quelque part dans le monde installe son appareil sur le chinois traditionnel mais que sa région est, par exemple, américaine ou canadienne?

Que dois-je faire pour permettre à mes utilisateurs de définir leurs parameters régionaux et que mon application apparaisse avec les parameters régionaux appropriés?

Mettre à jour:

De plus amples recherches, je crois qu’un utilisateur de téléphone Android ne peut pas définir le pays séparément de la langue. Ils ne peuvent définir que ce qu’on appelle les parameters régionaux dans l’interface utilisateur. Il se compose de la langue et du pays, mais la liste est limitée et de nombreuses combinaisons ne sont pas possibles.

Par exemple, un Chinois vivant aux États-Unis qui veut utiliser le chinois traditionnel pourrait définir la langue chinoise traditionnelle (au moins sur un téléphone enraciné) et disposerait alors d’une langue locale zh-rTW. Il ne pouvait en aucun cas placer son pays séparément aux États-Unis. De manière similaire, toute sorte d’émigrant ne peut pas définir sa langue maternelle avec le pays dans lequel il vit actuellement.

Fondamentalement, cela signifie que seule une série de combinaisons de langue et de pays sont sockets en charge. Maintenant, la question est de savoir comment ils sont?

Je pense donc qu’après une enquête plus approfondie et avec Marks, je vais répondre moi-même. Voila va:

Android ne contient que les deux locales zh_rCN, qui est le chinois simplifié et zh_rTW, qui est le chinois traditionnel. Comme vous pouvez le voir dans l’application Paramètres, il s’agit des seuls parameters régionaux fournis:

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

Cependant, tout autre créateur d’un système Android, par exemple pour un téléphone vendu en Chine, pourrait changer ce qu’ils ajoutent. L’ensemble d’ensemble théoriquement pris en charge peut être trouvé en regardant la liste des parameters régionaux trouvés dans l’application icu4c:

https://android.googlesource.com/platform/external/icu4c.git/+/master/data/locales/ Comme vous pouvez le voir pour le chinois, il y a

  • 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 est le code ISO pour le traditionnel et Hans pour le chinois simplifié. Donc théoriquement, cela voudrait dire que nous pourrions avoir

  • Chinois simplifié en Chine, Hong Kong, Macao et Singapour
  • Chinois traditionnel à Hong Kong, Macao et Taiwan

Cependant, gardez à l’esprit que l’application Paramètres doit être modifiée pour avoir les différentes sélections de parameters régionaux. Donc, à ce stade, le chinois simplifié se traduit par zh_rCN et zh_rTW traditionnel et vous devriez être séparé pour les utilisateurs qui ont une telle image Android modifiée qui prend en charge d’autres parameters régionaux.

Dans tous les cas, du côté de la sauvegarde, vous pouvez utiliser la classe Configuration pour obtenir les parameters régionaux, par exemple dans votre classe Application avec getResources (). GetConfiguration (). Locale.

Vous pouvez par exemple vous connecter et envoyer les données à votre système de suivi (peu importe ce que vous utilisez) ou vous pouvez vérifier celles qui sont sockets en charge et lancer une exception avec les parameters régionaux dans le message. Cela signifierait cependant un minimum de plantage de votre application (si vous êtes sur le coup, vous pouvez publier et mettre à jour quelques minutes plus tard ..)

Donc, pour récapituler .. la configuration minimale correspondrait à ce qui est fait dans l’application de parameters (ne contient que zh-rCN et zh-rTW), mais si vous souhaitez fournir des parameters régionaux par défaut pour Singapour, Hong Kong, Macao vous pouvez le faire aussi et cela devrait fonctionner. Je n’ai cependant aucune preuve qu’une telle configuration soit utilisée n’importe où.

J’espère que cela pourra aider.

Réponse mise à jour

La question et les réponses précédentes sont assez anciennes. Il est difficile de dire comment ils sont toujours corrects. Cette réponse est pour les autres personnes qui viennent ici qui veulent juste soutenir le chinois traditionnel et le chinois simplifié dans leur application, mais ne sont pas trop préoccupés par les détails de la localité.

Ajouter des fichiers ssortingng.xml pour le chinois traditionnel et simplifié

Dans Android Studio, cliquez avec le bouton droit sur le dossier res et choisissez Nouveau> Fichier de ressources Android . Tapez des ssortingngs pour le nom de fichier et choisissez Locales dans la liste.

entrer la description de l'image ici

Faites défiler jusqu’à zh pour la langue. Ajoutez un fichier de ssortingngs pour CN: Chine (simplifié) et un pour TW: Taiwan (traditionnel). Si vous n’en utilisez qu’un, choisissez simplement N’importe quelle région .

Si je comprends bien la documentation , la recherche vérifie d’abord s’il existe une correspondance exacte pour la langue et la région (Exemple: chinois traditionnel-Taïwan). Ensuite, il faudra recourir à des contrôles plus larges. (Ce système est à partir de Android 7.0.)

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

Je ne suis pas tout à fait sûr de la façon dont tout cela fonctionne, alors lisez ceci et cette documentation.

En suivant cette méthode dans ma propre application, le changement des parameters système entre traditionnel et simplifié a également modifié l’affichage de l’application.

Conversion entre traditionnel et simplifié

Si vous avez déjà une traduction en version traditionnelle ou simplifiée, vous pouvez convertir automatiquement le texte en ligne. Commencez avec Google Translate pour convertir à l’autre (il suffit de coller dans votre ssortingngs.xml ). Cela fait déjà un bon travail. Puis recommencez plusieurs fois en utilisant l’un des nombreux convertisseurs en ligne. Utilisez un outil ou un site de comparaison de texte ( text-compare.com est bien) pour comparer le résultat des conversions. Cela vous aidera à détecter les erreurs de Google.