Comment obtenir la langue actuellement sélectionnée dans l'appareil Android ?
Merci, sympa avec une liste de possibilités. Pourriez-vous ajouter "Locale.getDefault().toString()", comme suggéré dans un commentaire de "Tom".
Comment obtenir la langue actuellement sélectionnée dans l'appareil Android ?
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
Merci, sympa avec une liste de possibilités. Pourriez-vous ajouter "Locale.getDefault().toString()", comme suggéré dans un commentaire de "Tom".
Non. J'ai collé le code original ici. Patrick a édité la réponse de DeRagan et a copié-collé mon code.
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();'.
GetISO3Language() renvoie des choses comme "deu" pour Deutschland (Allemagne) au lieu de de ...
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();
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.
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.
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.
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 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.
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