Comment obtenir la langue actuelle sélectionnée sur l'appareil Android?
android
localization
Pinki
la source
la source
Réponses:
Si vous souhaitez obtenir la langue sélectionnée de votre appareil, cela peut vous aider:
la source
Locale.getDefault().getLanguage();
pour obtenir le code de langue habituel (par exemple "de", "en").Locale.setDefault("ru")
et que la langue dans les paramètres système est définie sur l'anglais, la méthodeLocale.getDefault().getLanguage()
renverra "ru" , mais pas "en" . Existe-t-il une autre méthode pour obtenir les vrais paramètres régionaux / langue SYSTEM? Je n'ai pas trouvé de solution documentée ici , mais y a-t-il une solution plus élégante?Locale.getDefault().toString()
qui donne une chaîne qui identifie complètement les paramètres régionaux, par exemple "en_US".J'ai vérifié les méthodes locales sur mon appareil Android 4.1.2 et les résultats:
la source
Locale.getDefault().getDisplayLanguage()
qui revient"English"
Ce qui a fonctionné pour moi, c'est:
Resources.getSystem()
renvoie un objet Resources partagé global qui donne accès uniquement aux ressources système (pas de ressources d'application) et n'est pas configuré pour l'écran actuel (ne peut pas utiliser les unités de dimension, ne change pas en fonction de l'orientation, etc.).Parce qu'il
getConfiguration.locale
est désormais obsolète, le moyen préféré d'obtenir les paramètres régionaux principaux dans Android Nougat est:Pour garantir la compatibilité avec les versions précédentes d'Android, une solution possible serait une simple vérification:
Mise à jour
À partir de la bibliothèque de support,
26.1.0
vous n'avez pas besoin de vérifier la version Android car elle offre une méthode pratique rétrocompatiblegetLocales()
.Appelez simplement:
la source
ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration())
getLocales
est la voie à suivre. J'ai mis à jour ma réponse.Vous pouvez «extraire» la langue des paramètres régionaux actuels. Vous pouvez extraire les paramètres régionaux via l'API Java standard ou en utilisant le contexte Android. Par exemple, les deux lignes ci-dessous sont équivalentes:
la source
Locale.setDefault()
avec d'autres paramètres régionaux au préalable et vous obtenez des résultats différents.Pour économiser du temps et / ou de la confusion aux autres, je voulais partager que j'ai essayé les deux alternatives proposées par Johan Pelgrim ci-dessus et 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 l'anglais (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 les paramètres régionaux dans les paramètres du téléphone (disons à italiano (Italia)) et que je réexécute, les deux chaînes de la réponse de Johan donnent les paramètres régionaux comme italiano (Italia).
Par conséquent, je crois que le message original de Johan est correct et que le commentaire de gregm est incorrect.
la source
Vous pouvez utiliser ceci
quand "xx" est un code de langue comme "en", "fr", "sp", "ar" .... et ainsi de suite
la source
Comme décrit dans Référence locale, la meilleure façon d'obtenir la langue est:
cette méthode renvoie une chaîne avec l'ID de langue selon la norme ISO 639-1
la source
si le niveau d'API est supérieur ou égal à 24, utilisez
LocaleList.getDefault().get(0).getLanguage()
sinon utilisezLocale.getDefault.getLanguage()
référence: https://developer.android.com/guide/topics/resources/multilingual-support
la source
Pour ajouter à la réponse de Johan Pelgrim
sont équivalents car la
android.text.format.DateFormat
classe utilise les deux de manière interchangeable, par exempleet
la source
Vous pouvez essayer d'obtenir des paramètres régionaux à partir des ressources système:
la source
Les réponses ci-dessus ne font pas de distinction entre le chinois simple et le chinois traditionnel.
Locale.getDefault().toString()
travaux qui retournent "zh_CN", "zh_TW", "en_US" et etc.Références à: https://developer.android.com/reference/java/util/Locale.html , ISO 639-1 est OLD.
la source
Cette solution a fonctionné pour moi. Cela vous renverra la langue de l'appareil Android (pas la langue locale de l'application)
Cela renverra "en" ou "de" ou "fr" ou quelle que soit la langue de votre appareil.
la source
Vous pouvez utiliser ce code pour connaître le courant du clavier
la source
Il existe deux langues.
Langue par défaut du système d'exploitation:
Langue actuelle d'application:
la source
Si vous choisissez une langue que vous ne pouvez pas taper ce grec peut être utile.
Maintenant, essayez-le avec le grec
la source
Si vous souhaitez vérifier une langue actuelle, utilisez la réponse de @Sarpe (@Thorbear):
la source
DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault()).format(Date())
.la source
La façon correcte d'obtenir la langue de votre appareil est la suivante:
J'espère que cela aide.
la source
vous donnera le
Written
nom de la langue, par exemple,English, Dutch, French
vous donnera
language code
, par exemple:en, nl, fr
Les deux méthodes renvoient String
la source
la source
Les autres ont donné de bonnes réponses pour la langue de l'appareil,
si vous souhaitez que la langue de l' application soit la plus simple, ajoutez une
app_lang
clé à votrestrings.xml
fichier et spécifiez également la langue pour chacune des langues.De cette façon, si la langue par défaut de votre application est différente de la langue de l'appareil, vous pouvez choisir de l'envoyer comme paramètre pour vos services.
la source
la source
Ma solution est comme ça
et alors
montré ---> en
la source
voici le code pour obtenir le pays de l'appareil. Compatible avec toutes les versions d'Android, même Oreo.
Solution: si l'utilisateur n'a pas de carte SIM que d'obtenir le pays, il est utilisé lors de la configuration du téléphone ou de la sélection de la langue actuelle.
la source
Si vous souhaitez effectuer une tâche spécifique pour les utilisateurs résidant en Inde qui parle hindi, utilisez ci-dessous si la condition
la source