2010-03-02 6 views
2

Le code ci-dessous affiche "Japan Standard Time".Comment faire pour obtenir la valeur TimeZone.getDisplayName (locale) pour retourner du texte non-anglais?

Je m'y attendais à la sortie quelque chose avec Kanji le long des lignes de "日本 標準 時". Il ne semble pas important quel ID de fuseau horaire ou paramètres régionaux je passe à getDisplayName() - le texte résultant est toujours anglais. Comment puis-je obtenir les valeurs localisées? J'utilise Sun Java SDK/JRE version 1.6.0 -18. J'ai également essayé d'exécuter l'utilitaire tzupdater mais je n'ai obtenu aucun changement dans les résultats.

Répondre

3

Il fonctionne si vous utilisez les paramètres régionaux JAPAN prédéfinis:

System.out.println(tz.getDisplayName(Locale.JAPAN)); 

Au moins, il imprime un tas de points d'interrogation sur ma console, plutôt que « heure normale du Japon », qui doit être un bon signe .

Locale.JAPAN est défini comme new Locale("ja_JP_", "ja", "JP"), donc il y a clairement une certaine subtilité ici dans les arguments du constructeur.

+0

Les codes de langue et de pays ISO ne sont pas toujours cohérents. Alors que "JP" est le code de pays pour le Japon (les codes de pays sont généralement écrits en majuscules), le code de langue pour le japonais est "ja" (les codes de langue sont généralement écrits en minuscules). – jarnbjo

+0

N'est-il pas grand temps de configurer votre console IDE pour sortir UTF-8? ;) – BalusC

+0

Merci à vous deux. Skaffman m'a fait comprendre que le problème venait du lieu. Si je crée une nouvelle locale comme 'new Locale (" ja "," JP "),' cela fonctionnera aussi. –

Questions connexes