L'internationalisation (souvent abrégée en i18n) fait référence à la conception et à la préparation de logiciels pouvant être facilement adaptés à diverses langues, régions et cultures sans nécessiter de modifications techniques du code. Ceci est généralement suivi d'une localisation (souvent abrégée en l10n), qui implique l'adaptation du logiciel internationalisé à une langue spécifique, notamment la traduction du texte, l'ajustement aux conventions locales et la modification d'autres éléments spécifiques à la langue.
L'objectif est de rendre le logiciel suffisamment flexible pour prendre en charge plusieurs paramètres régionaux en séparant la logique de base des éléments spécifiques aux paramètres régionaux tels que les conventions linguistiques et culturelles.
Localiser un message texte dans un programme Java simple est un peu simple en utilisant la classe ResourceBundle fournie par le langage de programmation. La classe ResourceBundle facilite le chargement des attributs clé-valeur spécifiques aux paramètres régionaux définis dans les fichiers de propriétés. Ces fichiers de propriétés sont appelés groupes de ressources.
ResourceBundle resources = ResourceBundle.getBundle("messages", Locale.FRANCE); String greeting = resources.getString("greeting.hello"); assertEquals("Bonjour le monde", greeting); String greetingUsername = MessageFormat.format(resources.getString("greeting.username"), "Ayo"); assertEquals("Bonjour Ayo", greetingUsername);
Une autre méthode de localisation d'un message texte dans un programme Java consiste à utiliser des bibliothèques tierces. L'une de ces bibliothèques est i18n-resource-bundle. Cette bibliothèque est une implémentation du ResourceBundle évoqué précédemment.
Ajoutez la dépendance ci-dessous dans votre pom.xml si vous utilisez Maven
<dependency> <groupId>io.github.jelilio</groupId> <artifactId>i18n-resource-bundle</artifactId> <version>0.0.2</version> </dependency>
Si vous préférez Gradle, utilisez plutôt ceci ;
implementation 'io.github.jelilio:i18n-resource-bundle:0.0.2'
i8n-resource-bundle fournit une interface MessageSource qui définit plusieurs méthodes de résolution des messages. Il a deux implémentations, ResourceBundleMessageSource et ReloadableResourceBundleMessageSource. Les deux implémentations accèdent aux regroupements de ressources en utilisant des noms de base spécifiés similaires à Java ResourceBundle. Le ResourceBundleMessageSource résout les messages sous forme de groupes de ressources pour différents paramètres régionaux en s'appuyant sur l'implémentation ResourceBundle de Java en combinaison avec MessageFormat pour l'analyse des messages.
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("messages"); String greeting = messageSource .getMessage("greeting.hello", null, Locale.FRANCE); assertEquals("Bonjour le monde", greeting); String greetingUsername = messageSource .getMessage("greeting.username", new String[]{"Ayo"}, Locale.FRANCE); assertEquals("Bonjour Ayo", greetingUsername);
Contrairement à ResourceBundleMessageSource, ReloadableResourceBundleMessageSource utilise les instances de propriétés de Java comme structure de données personnalisée pour les messages les chargeant à l'aide de stratégies différentes qui permettent le rechargement des fichiers de propriétés en fonction des modifications d'horodatage et d'un encodage de caractères spécifique sans avoir besoin de redémarrer l'application.
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasenames("messages"); String greeting = messageSource .getMessage("greeting.hello", null, Locale.FRANCE); assertEquals("Bonjour le monde", greeting); String greetingUsername = messageSource .getMessage("greeting.username", new String[]{"Ayo"}, Locale.US); assertEquals("Bonjour Ayo", greetingUsername);
Dans ce bref guide, nous avons appris à implémenter l'internationalisation (i18n) dans les applications Java à l'aide de ResourceBundle et i18n-resource-bundle. nous avons appris comment les groupes de ressources sont résolus en fonction des noms de paramètres régionaux fournis et avons vu un exemple en action.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!