Application multilingue [Fermé]

Signaler
Messages postés
1650
Date d'inscription
dimanche 21 octobre 2012
Statut
Membre
Dernière intervention
10 décembre 2016
-
Rocky_123
Messages postés
1650
Date d'inscription
dimanche 21 octobre 2012
Statut
Membre
Dernière intervention
10 décembre 2016
-
Bonjour,

J'ai réalisé une application avec NetBeans que je traduis maintenant en plusieurs langues. Je voudrais que l'application s'initialise avec la langue courante du système. Alors petit aperçu de comment je procède.

Lors de l'initialisation :


System.out.println(Locale.getDefault().toString());
language = ResourceBundle.getBundle("i18n.Language");
translateUserInterface();

J'ai par exemple deux fichiers "Language", l'un "Language.properties" contient la langue par défaut (français dans mon cas), l'autre "Language_it.properties" contient la traduction en italien.

Si avant d'appeler ce code je fais :

Locale.setDefault(Locale.forLanguageTag("it"));

C'est bon, le programme s'initialise donc en italien.

De même si je lance le programme avec :

java -Duser.language=it -jar app.jar

L'interface se traduit bien en italien.

Maintenant je veux tester ce qu'il va choisir par défaut. Donc, je ne spécifie aucune locale, rien, je joue avec les paramètres de Windows. Donc je vais dans les options régionales, je change le format en Italien (Italie), je règle même la langue pour les programmes non unicode etc, et la valeur retournée est toujours fr_FR ou fr_BE (j'ai un PC Windows 8.1 en Belgique). Comment faire pour tester correctement? Il ne prend que la langue de Windows? Je voudrais être sûr que sur un PC en italien, l'application s'initialise bien dans la bonne langue sans que l'utilisateur doive intervenir.

Si quelqu'un a quelque chose à ajouter, ça pourrait m'éclairer.

1 réponse

Messages postés
16104
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 janvier 2020
2 503
Bonjour,

Une astuce pour tester : tu mets ton fichier italien comme langue par défaut et tu mets ton fichier français comme plus spécifique. Ainsi si la langue française est bien détectée tu auras le fichier français, ou par défaut le fichier italien.
Rocky_123
Messages postés
1650
Date d'inscription
dimanche 21 octobre 2012
Statut
Membre
Dernière intervention
10 décembre 2016
344
Bonjour, de cette façon ça fonctionne il prend bien le fr et non la langue par défaut mais je voudrais justement tester le cas où on arrive sur un PC dans une autre langue pour voir s'il prend bien. Ici il me retourne toujours fr, quels que soient les paramètres que je définis dans Windows.
Bon, j'ai bien quelques contacts en Italie, je pourrais demander de tester mais bon je voulais quand même m'assurer sur ma machine.
KX
Messages postés
16104
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 janvier 2020
2 503
Si ça fonctionne avec le
Locale.setDefault("it");
alors ça fonctionnera aussi sur un ordinateur italien qui aura
Locale.getDefault().equals("it");
...

Le seul "piège" à éviter c'est de ne pas considérer "it" mais "it_IT", or vu tes tests ça a l'air de fonctionner avec "fr_Fr" et "fr_BE" qui prennent bien "fr" donc il ne devrait pas y avoir de problème.
Rocky_123
Messages postés
1650
Date d'inscription
dimanche 21 octobre 2012
Statut
Membre
Dernière intervention
10 décembre 2016
344
Normalement oui il doit se rabattre sur le fichier général si pas de fichier spécifique au pays. Ainsi pour le français on pourrait avoir fr_FR, fr_BE, fr_CA et d'autres pays francophones.

En effet, si je passe en ligne de commande java -Duser.language=it
il affiche alors :

it_BE

Et il prend quand même le fichier _it

J'ai aussi une solution plus radicale, le faire en Klingon et donner un dictionnaire.