Java i18n: utiliser un accesseur ResourceBundle par paquet, ou un pour le projet entier?
-
20-09-2019 - |
Question
Je ne sais pas quoi que ce soit sur l'internationalisation.
J'ai un projet avec plusieurs paquets. J'utilise l'assistant intégré « Externaliser Strings » Eclipse pour extraire des constantes de chaîne dans mes cours à un fichier de propriétés et remplacer les chaînes avec des appels à un accesseur statique. Ainsi, au lieu de
System.out.println("Hello, world!");
Je termine avec
System.out.println(Messages.getString("MyKey"));
et une classe de service de Messages
dans chaque paquet (qui fournit une méthode de getString
statique pour obtenir la chaîne souhaitée à partir d'un ResourceBundle [dans ce cas, un fichier de .properties
]). Est-il préférable d'avoir une classe Messages
dans chaque paquet, ou une seule classe de Messages
pour l'ensemble du projet?
La solution
Je suis en faveur d'un fichier de localisation mondiale. Vous avez les clés en double ( « OK », « Annuler ») qui nécessiterait une duplication ou l'imbrication et l'interface avec les gens de localisation à l'extérieur est plus facile si les ressources sont consolidées.
Autres conseils
Je garderais un par paquet. Cet entretien de façon / refactoring / unité test est beaucoup plus facile.
En outre, il n'y a pas de dépendances globales sur un seul fichier.