comment détecter le langage de système d'exploitation (locale) à partir du code java
Quelle est la bonne façon de connaître le langage du système d'exploitation (locale) à partir du code java?
j'ai essayé
Locale.getDefault()
System.getProperties("user.language")
etc.
mais ils ne sont pas corrects rien n'affiche réellement le" System Locale "qui est disponible par la commande" systeminfo " dans windows.
Aidez-moi.
4 réponses
la commande Windows XP systeminfo
affiche beaucoup de choses, mais l'information pertinente est la suivante:
System Locale: en-us;English (United States)
Input Locale: en-us;English (United States)
pour obtenir des informations équivalentes en Java, utilisez Locale.getDefault()
pour obtenir la Locale que Java utilise, et utilisez des méthodes sur l'objet Locale telles que: getCountry()
, getLanguage()
pour avoir des détails. L'information est disponible à l'aide de codes ISO et sous forme de noms lisibles/affichables par l'humain.
notez que Locale.getDefault()
vous donne la locale que Java détecte dans L'environnement quand il démarre, cela peut être ou ne pas être la même que la locale" système". Pour obtenir définitivement la locale" système " en Java, vous devez faire des choses spécifiques à la plate-forme. IMO, il est plus simple de s'assurer que Java est lancé avec le système locale ... si vous avez vraiment besoin de cette information.
mise à jour: apparemment, Java 7 a changé la façon dont les informations locales utilisées par getDefault()
sont déterminées sur Windows; voir https://stackoverflow.com/a/8319889/139985
à propos
System.getProperty("user.country");
System.getProperty("user.language");
retourne dans mon cas
de l'utilisateur.pays=DE
de l'utilisateur.langue=de
vous pouvez facilement générer la locale à partir de cette information. Locale est de 'langue'_'pays' donc dans mon cas de_DE
Que Diriez-vous d'utiliser la locale par défaut?
Locale locale = Locale.getDefault();
String lang = locale.getDisplayLanguage();
String country = locale.getDisplayCountry();
cela me renvoie ma langue et mon pays actuels selon la commande systeminfo
de Windows. Est-ce cela que vous cherchez? (Si vous voulez les codes à 2 caractères pour la langue/le pays, vous pouvez simplement utiliser getLanguage()
ou getCountry()
).
pour être précis, vous pouvez essayer le code suivant:
public Locale getLocale() {
if (this.locale == null) {
this.locale = new Locale(System.getProperty("user.language"), System.getProperty("user.country"));
}
return this.locale;
}