Comment internationaliser et localiser les applications Java

Découvrez comment configurer l’internationalisation Java, traduire des fichiers .properties et automatiser votre workflow de localisation Java.

Comment fonctionne l’internationalisation Java

Le système i18n de Java repose sur deux éléments :

  • .properties des fichiers qui stockent vos chaînes traduites
  • La classe ResourceBundle qui charge le bon fichier à l’exécution en fonction des paramètres régionaux de l’utilisateur

Lorsque votre application s’exécute, ResourceBundle vérifie les paramètres régionaux de l’utilisateur et charge automatiquement le fichier correspondant. Si une traduction manque, il revient au fichier par défaut afin que rien ne se casse.

Appeler une chaîne dans le code est simple :

ResourceBundle bundle = ResourceBundle.getBundle("messages", Locale.FRENCH);
String greeting = bundle.getString("welcome.message");

C’est tout le mécanisme. Le reste du travail de localisation se fait dans les fichiers .properties eux-mêmes, d’où l’importance de bien les structurer.

Configurer votre ResourceBundle

Un resource bundle est un ensemble de fichiers .properties qui partagent un même nom de base. Le nom de base correspond à la partie du nom de fichier avant le suffixe de paramètres régionaux, et c’est ce que ResourceBundle.getBundle() utilise pour trouver le bon fichier à l’exécution.

messages.properties         # default (usually English)
messages_fr.properties      # French
messages_de.properties      # German
messages_es.properties      # Spanish

Ici, messages est le nom de base. Vous pouvez l’appeler comme vous le souhaitez, mais il doit refléter le contenu du fichier. Les applications plus importantes utilisent souvent plusieurs resource bundles pour rester organisées :

src/main/resources/
  messages.properties
  errors.properties
  emails.properties

Java attend un modèle de nommage spécifique : basename_language.properties ou basename_language_COUNTRY.properties pour les variantes régionales.

messages_fr.properties       # French
messages_fr_CA.properties    # French (Canada)
messages_pt_BR.properties    # Portuguese (Brazil)

Les codes de langue suivent la norme ISO 639-1 et les codes de pays la norme ISO 3166-1. Si vous utilisez un format incorrect, ResourceBundle ne trouvera pas le fichier à l’exécution.

Structurer les fichiers .properties Java

Chaque ligne d’un fichier .properties est une paire clé-valeur séparée par =.

welcome.message = Welcome to our application
error.login.invalid_credentials = Invalid username or password
form.submit.button = Submit

Au-delà de l’utilisation de paires clé-valeur, il est important de savoir que la manière dont vous rédigez votre fichier source a un impact direct sur la qualité de vos traductions. Certaines bonnes pratiques s’appliquent toujours, que vous traduisiez manuellement ou que vous utilisiez un outil de traduction IA comme PTC.

1

Utiliser des clés claires et descriptives

Les clés doivent indiquer clairement où et comment une chaîne est utilisée. C’est essentiel lorsque vous gérez des centaines de chaînes réparties sur plusieurs fichiers.

Utilisation incorrecte des clés :

btn1 = Submit 
msg2 = Error

Utilisation correcte des clés :

form.submit.button = Submit 
error.login.invalid_credentials = Invalid username or password

2

Utiliser des placeholders pour le contenu dynamique

Écrivez la phrase complète dans votre fichier .properties et utilisez des espaces réservés numérotés pour le contenu variable, plutôt que de concaténer des chaînes dans le code.

Incorrect (dans le code) :

"Hello, " + username + "! You have " + count + " new messages." 

Correct (dans le fichier .properties) :

dashboard.greeting = Hello, {0}! You have {1} new messages.

De nombreuses langues modifient l’ordre des mots et les règles d’accord ; découper les phrases en fragments rend une traduction correcte impossible.

3

Gérer le pluriel avec ChoiceFormat

Certaines chaînes varient en fonction d’une valeur numérique. Au lieu d’écrire des clés séparées pour le singulier et le pluriel, utilisez directement un modèle ChoiceFormat dans votre fichier .properties :

messages.count = {0,choice,0#no messages|1#one message|1<{0} messages}

Java traite ce modèle à l’exécution et renvoie la forme appropriée en fonction de la valeur transmise.

4

Échapper les caractères spéciaux

Des caractères comme =, :, #, et \ ont une signification particulière dans les fichiers .properties :

  • = ou : sépare les clés des valeurs
  • # ou ! démarre un commentaire
  • \ introduit des séquences d’échappement (comme \n pour un saut de ligne)

Si vous devez utiliser ces caractères dans une chaîne, échappez-les avec une barre oblique inverse.

support.link = Visit us at https\://support.example.com

5

Enregistrer les fichiers en UTF-8

Toujours enregistrer les fichiers .properties en UTF-8. Sans cela, les caractères non-ASCII sont corrompus et les traductions deviennent illisibles.

6

Gardez tout le texte destiné aux utilisateurs hors de votre code

Si une chaîne est visible par les utilisateurs, elle doit se trouver dans un fichier .properties file. Les chaînes codées en dur ne seront pas traduites, et votre application finira par afficher un mélange de langues.

Autres considérations de localisation Java

Tout ce qui doit être localisé ne se trouve pas dans un fichier .properties. Les dates, heures, nombres et montants monétaires sont formatés dans le code à l’exécution, et il est tout aussi important de les gérer correctement que vos chaînes traduites.

Java fournit des classes intégrées pour cela :

  • DateTimeFormatter pour le formatage des dates et heures selon les paramètres régionaux
  • NumberFormat pour les nombres, pourcentages et montants monétaires

Étant donné que ce guide se concentre sur les fichiers .properties et leur traduction, nous ne les aborderons pas en profondeur ici. La documentation Java officielle pour DateTimeFormatter et NumberFormat est un bon point de départ.

Traduire des fichiers .properties Java

Une fois votre fichier source prêt, plusieurs options s’offrent à vous pour le faire traduire. Le bon choix dépend de votre budget, de vos délais et du niveau d’automatisation dont vous avez besoin.

OptionDélaisCoûtBesoins de maintenance
Traducteurs professionnelsDe quelques jours à quelques semainesÉlevésExport manuel, envoi, réception et réintégration à chaque mise à jour
Scripts de traductionQuelques minutesFaiblesNécessite une relecture – les espaces réservés peuvent se casser, le contexte des traductions peut être incorrect
Traduction IA (comme PTC)Quelques minutesFaiblesDes traductions tenant compte du contexte se synchronisent automatiquement via Git ou CI/CD

Avec PTC, des traductions de qualité humaine sont prêtes en quelques minutes, et il n’y a pas d’abonnement — vous ne payez que ce que vous traduisez. Pour commencer, vous bénéficiez de 20 000 mots traduits en deux langues gratuitement, sans carte de crédit requise.

Après l’inscription, un assistant de configuration vous guide à travers les bases : une brève description de votre application, vos langues cibles et votre fichier .properties. L’ensemble du processus prend environ 5 minutes. Pour un aperçu complet, consultez notre guide de démarrage.

Une fois la traduction terminée par PTC, accédez à l’onglet Resource Files et téléchargez un fichier ZIP contenant les fichiers .properties traduits.

Ajoutez ces fichiers dans le dossier src/main/resources de votre projet, à côté de votre fichier source d’origine. À l’exécution, ResourceBundle sélectionne automatiquement le bon fichier en fonction des paramètres régionaux de l’utilisateur. Vous n’avez pas besoin de modifier votre code.

Maintenir les traductions .properties Java synchronisées

Traduire votre fichier .properties une seule fois est simple. Mais comment maintenir les traductions à jour à mesure que votre application évolue ? Chaque fois que vous ajoutez une nouvelle chaîne, mettez à jour un texte existant ou supprimez une clé, vos fichiers traduits doivent refléter ce changement.

Le faire manuellement implique d’exporter les fichiers, de les envoyer en traduction, d’attendre, puis de les réintégrer à chaque fois — c’est pourquoi la plupart des équipes finissent par automatiser.

PTC offre deux façons d’automatiser le processus de traduction :

Intégration Git

Connectez votre dépôt GitHub, GitLab ou Bitbucket à PTC : il surveillera votre fichier source .properties pour détecter les changements. Lorsqu’une chaîne est ajoutée ou mise à jour, PTC la traduit automatiquement et renvoie les fichiers de traduction mis à jour via une pull request. Vos traductions restent synchronisées sans aucune étape manuelle.

Intégration CI/CD

Si vous préférez tout conserver dans votre processus de build existant, l’API de PTC vous permet de téléverser votre fichier source et de récupérer les traductions dans le cadre de votre job CI. Chaque build produit automatiquement des traductions à jour.

Dans les deux cas, ajouter une nouvelle langue plus tard n’est qu’un changement de configuration, pas un nouveau processus manuel.

Prêt à localiser votre application Java ?

Vos fichiers .properties constituent la base de votre workflow de localisation Java. Adoptez la bonne structure, maintenez vos traductions synchronisées, et votre application pourra prendre en charge de nouvelles langues sans ralentir votre cycle de publication.

Si vous n’avez pas encore essayé PTC, l’essai gratuit est un bon point de départ. 20 000 mots, deux langues, sans carte bancaire.

Traduction Java avec l’IA

Obtenez des traductions contextuelles en quelques minutes

Téléchargez des fichiers, ou automatisez via l’API ou l’intégration Git


Sur cette page

Faire défiler vers le haut