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.

26
demandé sur Sudhir 2010-03-18 14:34:05

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

29
répondu Stephen C 2017-05-23 12:34:30

à 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

14
répondu Markus Lausberg 2010-03-18 12:18:18

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() ).

7
répondu Ash 2010-03-18 12:04:11

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;
}
2
répondu Chinmoy 2014-07-12 17:21:56