653 votes

Obtenir la langue actuelle de l'appareil

Comment obtenir la langue actuellement sélectionnée dans l'appareil Android ?

13 votes

La majorité des réponses ici obtiennent la langue de l'application. Étant donné que vous pouvez définir la locale par défaut de l'application dans le code, la réponse correcte est celle donnée par Sarpe - qui vous donne la locale de l'appareil.

0 votes

@VictorIonescu merci pour le commentaire. La réponse de Sarpe est correcte pour récupérer la locale du périphérique. Veuillez vous y référer. stackoverflow.com/a/28498119/3762067

939voto

trante Points 3811

J'ai vérifié les méthodes Locale sur mon appareil Android 4.1.2, et les résultats :

Locale.getDefault().getLanguage()       ---> en      
Locale.getDefault().getISO3Language()   ---> eng 
Locale.getDefault().getCountry()        ---> US 
Locale.getDefault().getISO3Country()    ---> USA 
Locale.getDefault().getDisplayCountry() ---> United States 
Locale.getDefault().getDisplayName()    ---> English (United States) 
Locale.getDefault().toString()          ---> en_US
Locale.getDefault().getDisplayLanguage()---> English
Locale.getDefault().toLanguageTag()     ---> en-US

9 votes

Merci, sympa avec une liste de possibilités. Pourriez-vous ajouter "Locale.getDefault().toString()", comme suggéré dans un commentaire de "Tom".

0 votes

Je suis confus. Avez-vous juste copié la réponse de DeRagan ?

0 votes

Non. J'ai collé le code original ici. Patrick a édité la réponse de DeRagan et a copié-collé mon code.

887voto

DeRagan Points 10551

Si vous voulez obtenir la langue sélectionnée de votre appareil, ceci pourrait vous aider :

Locale.getDefault().getDisplayLanguage();

Vous pouvez utiliser Locale.getDefault().getLanguage(); pour obtenir le code de langue habituel (par exemple, "de", "en")

0 votes

Utilisez "Locale.getDefault()" uniquement si vous voulez obtenir une instance de Locale

73 votes

GetDisplayLanguage() permet de localiser la langue. Si vous souhaitez uniquement obtenir le code ISO (par exemple pour les instructions if ou switch), utilisez 'Locale.getDefault().getISO3Language();'.

14 votes

GetISO3Language() renvoie des choses comme "deu" pour Deutschland (Allemagne) au lieu de de ...

49voto

Johan Pelgrim Points 2821

Vous pouvez "extraire" la langue de la locale actuelle. Vous pouvez extraire la locale via l'API Java standard, ou en utilisant le contexte Android. Par exemple, les deux lignes ci-dessous sont équivalentes :

String locale = context.getResources().getConfiguration().locale.getDisplayName();
String locale = java.util.Locale.getDefault().getDisplayName();

11 votes

Ce n'est pas vrai. Ils sont différents. La première peut changer si l'utilisateur change de Locale. La seconde est celle qui est préinstallée sur le téléphone. Elle ne change jamais, quoi que fasse l'utilisateur.

16 votes

Le commentaire de gregm est peut-être faux. Voir la réponse de airewyre.

4 votes

Le commentaire de @gregm est faux. Essayez-le vous-même et vous verrez que Locale.getDefault() change lorsque vous modifiez la langue dans les paramètres.

37voto

airewyre Points 709

Pour épargner à d'autres du temps et/ou de la confusion, je voulais partager que j'ai essayé les deux alternatives proposées par Johan Pelgrim ci-dessus et que sur mon appareil elles sont équivalentes - que l'emplacement par défaut soit modifié ou non.

Le paramètre par défaut de mon appareil est donc English(United Kindom) et dans cet état, comme prévu, les deux chaînes de la réponse de Johan donnent le même résultat. Si je change ensuite la locale dans les paramètres du téléphone (disons en italiano(Italia)) et que je ré-exécute, les deux chaînes de la réponse de Johan donnent la locale italiano(Italia).

Je pense donc que le message original de Johan est correct et que le commentaire de Gregm est incorrect.

19voto

Opsenas Points 333

Comme décrit dans Référence locale la meilleure façon d'obtenir la langue est :

Locale.getDefault().getLanguage()

cette méthode renvoie une chaîne avec l'identifiant de la langue selon norme ISO 639-1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X