Parler toutes les langues : internationalisation des applications Java

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi votre application Java devrait-elle parler le langage humain ?

\n\n

Avez-vous déjà réfléchi à la raison pour laquelle les applications que nous utilisons chaque jour — de Spotify à Notion — « comprennent » immédiatement dans quelle langue s'adresser à vous ? Elles ne lisent pas dans les pensées, ne devinent pas par adresse IP. Elles utilisent l'internationalisation (i18n).

\n\n

Pour un développeur Java, savoir rendre les applications multilingues n'est pas simplement un « gadget », mais une compétence obligatoire si vous visez le marché mondial. Imaginez : vous avez créé un super service de gestion de tâches. En Russie, il a décollé. Mais dès que vous voulez le vendre en Allemagne ou au Japon — les utilisateurs verront le bouton « Créer une tâche » en russe. Et ils fermeront l'onglet. Triste, n'est-ce pas ?

\n\n

Dans cet article, nous ne parlerons pas seulement de théorie. Nous prendrons une application Java (la plus ordinaire, console ou web) et nous y ajouterons pas à pas la prise en charge des langues russe, anglaise et allemande. Vous verrez que l'internationalisation Java n'est pas effrayante, mais plutôt élégante. C'est parti !

\n\n

Qu'est-ce que l'internationalisation et la localisation ? Ne les confondez pas !

\n\n

Ces concepts sont souvent mélangés. Mettons les points sur les i.

\n\n
    \n
  • Internationalisation (i18n) — c'est le processus de conception d'une application afin qu'elle puisse être adaptée à différentes langues et régions sans modification du code. Vous créez des « crochets » pour la traduction.
  • \n
  • Localisation (l10n) — c'est le remplissage de ces « crochets » avec des traductions spécifiques, des formats de dates, des devises et des règles de tri pour un pays particulier.
  • \n
\n\n

En Java, les classes du package java.util sont responsables de l'internationalisation : Locale et ResourceBundle. Souvenez-vous d'elles — ce sont vos meilleurs amis.

\n\n

Étape 1. Découverte de Locale — le cœur de l'internationalisation

\n\n

La classe Locale représente une région spécifique (langue + pays). Par exemple :

\n\n
    \n
  • Locale.US — anglais (États-Unis)
  • \n
  • Locale.GERMANY — allemand (Allemagne)
  • \n
  • new Locale("ru", "RU") — russe (Russie)
  • \n
\n\n

Locale est utilisé pour sélectionner la bonne traduction des chaînes, le formatage des nombres, des dates, des devises. Sans lui, l'internationalisation est impossible.

\n\n

Comment obtenir la locale actuelle ?

\n\n
import java.util.Locale;\n\npublic class Main {\n    public static void main(String[] args) {\n        // Locale par défaut (généralement correspond à celle du système)\n        Locale defaultLocale = Locale.getDefault();\n        System.out.println("Locale actuelle : " + defaultLocale);\n\n        // Locales disponibles dans la JVM\n        Locale[] available = Locale.getAvailableLocales();\n        System.out.println("Total disponibles : " + available.length);\n    }\n}
\n\n

La sortie peut être, par exemple : Locale actuelle : ru_RU. Mais nous ne nous fierons pas à la locale système — dans une application web, elle est généralement transmise par le navigateur de l'utilisateur.

\n\n

Étape 2. ResourceBundle — votre traducteur

\n\n

Maintenant, la partie intéressante : comment stocker les traductions ? En Java, on utilise des fichiers de propriétés (.properties). Chaque fichier est un ensemble de paires clé=valeur.

\n\n

Création des fichiers de traduction

\n\n

Créez dans le répertoire src/main/resources (ou simplement dans le dossier des sources) trois fichiers :

\n\n

1. Messages.properties (langue par défaut — anglais)

\n
greeting=Hello, {0}!\nfarewell=Goodbye!\napp.title=Task Manager
\n\n

2. Messages_ru_RU.properties (russe)

\n
greeting=Привет, {0}!\nfarewell=До свидания!\napp.title=Менеджер задач
\n\n

3. Messages_de_DE.properties (allemand)

\n
greeting=Hallo, {0}!\nfarewell=Auf Wiedersehen!\napp.title=Aufgabenverwaltung
\n\n

Notez les suffixes : _ru_RU, _de_DE. Java recherche le fichier selon le modèle : NomDeBase

Blogs

Book Recommendations