Question

Nous implémentons i18n en utilisant JSTL et nous avons rencontré un problème: les textes de ressources définis dans le fichier .properties et contenant des caractères non ISO 8859 (par exemple, les langues inidiques) ne peuvent pas être restitués par balise.

Après avoir plongé dans le code de la balise et de la classe BundleHelper, nous avons finalement découvert qu’elle utilisait en interne la méthode ResourceBundle.getBundle qui, à son tour, utilisait PropertyResourceBundle pour charger le fichier .properties en tant que regroupement de ressources.

Elle repose en interne sur la méthode java.util.Properties # load (InputStream) qui ne prend pas en charge la lecture de caractères non ISO 8859 et dont le seul travail consiste à représenter ces caractères au format / u hex hex hex hex, ce qui pas pratique dans le cas où tout le fichier .properties est pour la langue Hindi!

Y a-t-il un travail autour pour cela. J'ai essayé d'utiliser le format XML dans un fichier .properties, mais cela n'a pas été reconnu par PropertyResourceBundle!

Les informations relatives à l'environnement sont: Jdk 1.5, Weblogic 9.2

Était-ce utile?

La solution

Avez-vous absolument besoin d'utiliser JDK 1.5? Si vous pouviez déplacer jusqu'à 1,6, vous pourriez utiliser la surcharge load (Reader) qui vous permettrait de stocker les fichiers dans d'autres encodages (par exemple UTF-8). Je ne suis pas sûr de la compatibilité de cela avec PropertyResourceBundle, certes.

N'oubliez pas que même en travaillant avec des fichiers ISO-8859-1, vous n'avez pas besoin d'utiliser ce format pour éditer le fichier. Vous pouvez utiliser native2ascii . / a> pour convertir un fichier depuis un encodage différent. Conservez votre " source " les fichiers de propriétés au format UTF-8, puis exécutez native2ascii dans le cadre de votre construction. Par exemple:

native2ascii -encoding UTF-8 Foo.properties.utf8 Foo.properties

Autres conseils

Écrivez vos fichiers avec le codage de votre choix et exécutez-les à l'aide du native2ascii (fourni avec le JDK exactement à cette fin) dans le cadre du processus de construction ou de déploiement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top