2017-08-01 2 views
0

Java Locale.getDefault() renvoie toujours en-US sous Windows même si les paramètres régionaux du système sont définis sur une langue différente (via le panneau de configuration Région et langue). L'exécution d'un script tel que systeminfo | findstr /C:\"System Locale\ dans Java Runtime.exec() prend beaucoup de temps.Détecter les paramètres régionaux du système Windows dans Java

Existe-t-il un moyen plus rapide de détecter les paramètres régionaux du système lors du démarrage de l'application (Java)? Exécuter le cmd ci-dessus une fois et écrire dans un fichier de propriétés pour les lectures suivantes peut-être une solution. Mais que se passe-t-il si les paramètres régionaux du système sont modifiés et que le système est redémarré? Quelle est la méthode la plus fiable pour trouver les paramètres régionaux du système dans jdk?

+1

Possible copie de https://stackoverflow.com/questions/2469435/how-to-detect-operating-system-language-locale-from-java-code – Beginner

+1

https://stackoverflow.com/questions/7107972/ java-7-default-locale/8319889 # 8319889 Même numéro –

Répondre

-1
Locale.getDefault();   // 
locale.getDisplayLanguage(); // Return current language 
locale.getDisplayCountry(); // Return current country 
+0

comme indiqué, locale.getdefault renvoie toujours en-US. Les deux autres font la même chose ou retournent une chaîne vide. – svk

+1

@SuprajaJayakumar il ne doit pas retourner en-US. MAIS il retournera en-US sauf si un autre paramètre régional a été défini par défaut par un appel précédent à Locale.setDefault (Locale). – jwenting

2

Locale.getDefault() retourne la valeur par défaut pour la machine virtuelle Java Locale actuelle, pas pour le système d'exploitation. Le paramètre régional par défaut de la machine virtuelle Java est par défaut en-US pour la plupart des machines virtuelles Java (il peut y en avoir des localisées, je n'en ai jamais vu).

Il est possible de le définir sur autre chose en utilisant Locale.setDefault (Locale newDefault), après quoi Locale.getDefault() retournera cette Locale à la place. Donc, une solution à votre problème pourrait être d'obtenir les paramètres régionaux système par défaut en utilisant la commande que vous avez une fois, définissez cette nouvelle valeur par défaut en utilisant Locale.setDefault() au démarrage de l'application, puis en utilisant Locale.getDefault().

+0

convenu, c'est ce que nous faisons actuellement. Mais comme indiqué, Runtime exec() prend beaucoup de temps à exécuter. Existe-t-il un moyen de raccourcir ce temps d'exécution de l'exécution traitée externe dans jvm? À condition que l'application soit localisée avant que la page d'accueil ne soit affichée, cela ne semble pas être une option. Est-ce correct ? – svk