Application multilingue

Fermé
Utilisateur anonyme - 12 mai 2014 à 19:57
 Utilisateur anonyme - 12 mai 2014 à 20:42
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.

A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
12 mai 2014 à 20:08
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.
0
Utilisateur anonyme
12 mai 2014 à 20:28
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.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 12/05/2014 à 20:35
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.
0
Utilisateur anonyme
12 mai 2014 à 20:42
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.
0