web-dev-qa-db-fra.com

Modifier les paramètres de langue (paramètres régionaux) de l'appareil

Je sais qu'il est possible d'avoir plusieurs langues dans une seule application via le res/string et en fonction des paramètres régionaux. Voici un cas (Android) contrôlant la langue de l'utilisateur

Maintenant, comment puis-je changer la langue du téléphone? Comme je le ferais par Menu> Paramètres> Langue et clavier> Sélectionner les paramètres régionaux> langues

Existe-t-il un vrai code pour accéder à ces paramètres? Ou devrais-je créer une intention pour un raccourci vers les paramètres de langue. Veuillez poster un code

Edit: Avec la classe Locale developer.Android.com/intl/fr/reference/Java/util/Locale.html

Le constructeur est au moins Locale (String language) L'entrée est la langue. Comment récupérer la langue actuelle utilisée sur l'appareil?

18
Raymond Chenon

Vous n'êtes pas sûr de le configurer directement à partir de l'application, mais si vous souhaitez y envoyer l'utilisateur pour le modifier lui-même, essayez ceci:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.Android.settings", "com.Android.settings.LanguageSettings");            
startActivity(intent);
43
Jim Blackler

Il existe une autre façon d'ouvrir les paramètres système pour changer la langue:

Intent i = new Intent( Android.provider.Settings.ACTION_LOCALE_SETTINGS );
startActivity( i );

Il affiche uniquement la liste des langues, et lorsque vous en choisissez une, cela change la langue de l'appareil.

12
Sergey

J'ai trouvé une autre réponse à ma propre question. Il existe un projet de code open source code.google.com/p/languagepickerwidget Il recrée une ListActivity pour afficher et choisir les langues.

Jim, votre solution est très simple et exactement ce dont j'avais besoin. C'est un raccourci vers les paramètres. Immédiatement après votre publication, j'ai mis en ligne une application appelée "raygional" sur le marché. Si je pouvais (je n'ai que 6 points), je rendrais votre réponse utile.

Il existe une autre façon de voir les processus et les intentions. Sur l'émulateur, allez dans Menu> Outils de développement> Paramètres de développement> et cliquez sur Afficher les processus en cours

6
Raymond Chenon

Autant que je sache, le seul moyen de changer le Locale de l'appareil sans utiliser les Intents (ce que proposent les autres solutions) est d'accéder aux classes internes par réflexion (avec les risques que cela implique).

Vous pouvez trouver un exemple exact de ce cas d'utilisation ici: http://www.tutorialforandroid.com/2010/07/access-internal-classes-in-Android.html

3
Edu Zamora

Pour développer la réponse de Jim si vous modifiez l'intention en:

intent.setClassName("com.Android.settings", "com.Android.settings.LocalePicker"); 

Il déposera l'utilisateur directement dans la liste de sélection de la langue et une fois qu'une langue est sélectionnée, il retournera à votre application.

Il supprime un clic, ne fait pas réfléchir l'utilisateur à laquelle des trois options (langue, dictionnaire et clavier) choisir et revient à votre application immédiatement après la sélection.

1
caller9