web-dev-qa-db-fra.com

Ajouter / supprimer les entrées de langue dans les "Paramètres" -> "Sélectionner les paramètres régionaux" de Android

Ma question:

Comment puis-je ajouter ou supprimer les entrées de langue dans les "Paramètres" -> "Paramètres de langue et clavier" -> "Sélectionner les paramètres régionaux" (ou "Sélectionner la langue") dans le Android téléphone du niveau du code source ?

Je fournirai plus de détails sur ce que je veux et ce que j'ai fait. Veuillez m'excuser si je présente une compréhension ou des informations stupides. Je suis assez nouveau pour Android, j'ai commencé à l'apprendre il y a plusieurs jours. Il y a encore beaucoup de choses que je ne sais pas.

Plus d'informations sur ce que je veux:

Je travaille récemment sur une tâche pour localiser le produit complet du téléphone avec de nouvelles langues (je veux dire, je suis ne fonctionne pas sur une application spécifique . C'est pourquoi je dois ajouter un nouvel environnement local dans les paramètres). Quand j'ai eu le téléphone de développement, j'ai trouvé qu'il n'y avait que plusieurs entrées de langue disponibles dans le "Select Locale", comme "English", "French" et "Espagne". Donc, tout d'abord, je dois ajouter et afficher de nouvelles entrées de langue à cette liste, telles que "japonais", "chinois", "coréen" .

J'ai tout le code source de Android et mon propre code, donc je pense que cette tâche peut être effectuée en modifiant le code source ou les fichiers de ressources quelque part Malheureusement, je ne sais pas où se trouvent le code et les fichiers.

Le didacticiel " Bonjour, L10N " montre un moyen d'ajouter un nouvel environnement local à partir de "Paramètres régionaux personnalisés" au moment de l'exécution. Mais ce que je veux, c'est ajouter les nouveaux paramètres régionaux au moment de la construction donc au démarrage du téléphone, les nouveaux paramètres régionaux seront affichés dans le "Select Locale "directement sans aucune autre action.

Ce que j'ai fait:

J'ai fait beaucoup de recherches sur Internet avant de venir ici. Voici ce que j'ai trouvé:

  1. Sinkiru dans Stackoverflow a posé une question sur ce que je recherche exactement. Voir ici . Cependant, personne d'autre ne lui a répondu. Sa propre réponse indique uniquement où interroger le paramètre de langue ACTUEL, qui n'est pas ce que je veux. Je lui ai personnellement envoyé un e-mail pour cette question, mais je n'ai pas sa réponse.

  2. J'ai beaucoup cherché dans Stackoverflow, avec les mots clés "Android locale", "Android language", "Android new locale" et quelque chose de similaire. La plupart des questions de ce site demandent comment changer les paramètres régionaux d'une application, comment ajouter un support multilingue pour une application, etc. Ce sont [~ # ~] pas [ ~ # ~] ce que je veux.

  3. J'ai beaucoup cherché dans le groupe Google de la plate-forme Android ( http://groups.google.com/group/Android-platform ). Certaines personnes posent ma question, mais après avoir lu les messages, je ne reçois toujours pas ma réponse .. : Voici une liste des messages que j'ai lus dans le groupe (et je le fais pas obtenir ce que je veux d'eux):

  4. Retour à l'entrée "(a)" ci-dessus. Dans le fil de discussion "Localisation d'OS", Dianne Hackborn, une ingénieure du framework Android, a déclaré ce qui suit:

"L'application des paramètres vous montre simplement tous les paramètres régionaux disponibles dans les ressources de la plate-forme. L'ajout de chaînes pour un nouveau paramètre régional devrait automatiquement afficher celles des paramètres Vous dites au système de build quelles ressources locales inclure quand il fait la build ... malheureusement je ne peux pas vous aider sur cette partie, mais peut-être quelqu'un d'autre peut. "

Ses mots en gras suggèrent que ma tâche pourrait être effectuée automatiquement en ajoutant une nouvelle ressource locale au code source, et en configurant ou en changeant quelque chose dans le système de construction. Je me demande si quelqu'un ici a déjà fait la même chose auparavant? Je vais essayer demain.

  1. Enfin, j'ai cherché dans le site officiel Android développeur. Dans le didacticiel "Exécuter et tester l'application localisée" du " Bonjour, L10N ", il est écrit quelque chose sur les paramètres régionaux disponibles dans l'application "Paramètres", mais qui parle essentiellement de ce qu'il faut faire dans l'émulateur et cela ne devrait pas être ce dont j'ai besoin. Je veux que cela se fasse sur un vrai téléphone.

  2. J'avais également plongé dans le code source de la plate-forme Android en essayant de découvrir quelque chose. J'ai commencé dans $ (ANDR_SRC_ROOT)/Packages/app/Settings/src /.../ LocalePicker.Java. Dans la méthode LocalePicker :: onCreate (), j'ai remarqué cette ligne de code:

    String [] locales = getAssets (). GetLocales ();

Le code sous cette ligne essaie de définir tous les noms de paramètres régionaux obtenus sur un ArrayAdapter, puis de définir l'adaptateur sur l'affichage de liste à afficher. Je pense donc que la méthode "getLocales ()" est la clé de la solution.

J'ai ensuite regardé le code getLocales (). getLocales () est une méthode membre d'AssetManager et est déclarée native, donc je suis entré dans $ (ANDR_SRC_ROOT) /frameworks/base/libs/utils/AssetManager.cpp que je [~ # ~] devinez [~ # ~] devrait être l'implémentation réelle de la méthode Java getLocales (). Le C++ AssetManager :: getLocales () me conduit enfin à la méthode C++ ResTable :: getConfigurations () dans laquelle une variable membre " mPackageGroups " est analysée pour récupérer tous les éléments ResTable_config disponibles. Ainsi, je pense que tous les paramètres régionaux disponibles devraient être ajoutés à ce mPackageGroups pendant le démarrage du système. Cependant, j'ai finalement perdu dans le code et je n'ai pas pu trouver où le les paramètres régionaux sont ajoutés aux mPackageGroups.

30
yaobin

sur les téléphones HTC, vous devez également modifier /system/customize/CID/default.xml ... C'est le fichier qu'ils utilisent pour spécifier les paramètres régionaux sur leurs roms d'origine. Si la rom est une WWE, il ne suffit que de modifier le CID, mais cela n'est pas toujours vrai.

2
insink71

vous devez créer le dossier "values" dans le dossier "res" du package framework-res d'Android. Le nom de ce nouveau dossier doit contenir le code pays de votre besoin, c'est-à-dire. values-pl-rPL (la partie rPL est requise) pour la langue polonaise (pour l'anglais britannique: en-rGB, etc.), cela devrait être suffisant - sinon - créer strings.xml fichier dans ce dossier, et y ajouter le nœud "resources" vide.

1
skwara

Je pense qu'une application normale ne devrait pas ajouter des emplacements au téléphone. Il existe des packages spéciaux comme MoreLocale 2 à cet effet. Si vous ajoutiez des paramètres régionaux, vous seriez responsable non seulement de fournir la localisation de votre propre application, mais de l'ensemble du système!

1
Christian Gawron

Pour créer ou ajouter plusieurs langues à votre application, vous devez d'abord définir toutes vos valeurs de chaîne dans le fichier string.xml dans le dossier values ​​plutôt que de les coder en dur dans votre programme. Ensuite, vous devez également avoir différents dossiers Value pour différentes langues, par exemple Value-es pour l'espagnol et Value-fr pour le français. Cela devrait faire l'affaire. Je ne pense pas que l'application puisse changer les paramètres régionaux par défaut.

1
Nixr Systems

Pour supprimer des langues, si nous supprimons la chaîne de paramètres régionaux de PRODUCT_LOCALES, cela fonctionnera.

Je cherche également un moyen d'ajouter de nouvelles langues, mais le simple fait d'y ajouter n'aide pas. Je pense que nous devons mettre à jour certains fichiers ou bibliothèques de bas niveau afin d'ajouter de nouvelles langues.

0
Yousuf

Je pense que vous devez modifier le

PRODUCT_LOCALES

Présent dans build/target/product/languages_full.mk, et ajoutez et supprimez les chaînes attribuées à cela.

Vous pouvez définir votre chaîne personnalisée comme zz_zz et ajouter le dossier values_zz_zz dans chacun de vos dossiers res.

Je n'ai pas essayé cela, mais cela pourrait fonctionner.

Remarque: PRODUCT_LOCALES peut être remplacé ailleurs selon votre système de génération

0
nandeesh