Dans cette partie 01, nous allons explorer comment implémenter l'internationalisation et la traduction dans une application Laravel en utilisant uniquement les fonctionnalités natives du framework, sans recourir à des packages externes. Cette approche est idéale pour comprendre les fondamentaux et pour les projets où une gestion simple des traductions suffit. Nous verrons comment configurer les fichiers de langue, traduire des chaînes de caractères, gérer les pluriels, et changer de langue dynamiquement, le tout accompagné d'extraits de code explicites. Dans la partie 02, nous passerons à l'étape suivante en utilisant un package pour simplifier et optimiser cette tâche.
1. Configuration de Base
1.1. Fichier de Configuration
Laravel utilise un fichier de configuration config/app.php pour définir la langue par défaut de l'application. Par défaut, la langue est définie sur en (anglais). Vous pouvez la modifier en fonction de vos besoins.
1'locale' => 'fr', // Définir la langue par défaut sur le français1'locale' => 'fr', // Définir la langue par défaut sur le français
1.2. Langues Disponibles
Vous pouvez également définir les langues disponibles dans votre application en modifiant le fichier config/app.php :
1'available_locales' => [2 'en' => 'English',3 'fr' => 'Français',4 'es' => 'Español',5],1'available_locales' => [2 'en' => 'English',3 'fr' => 'Français',4 'es' => 'Español',5],
2. Structure des Fichiers de Langue
Laravel stocke les fichiers de langue dans le répertoire resources/lang. Chaque langue a son propre sous-répertoire, par exemple resources/lang/fr pour le français.
1// resources/lang/fr/messages.php2return [3 'welcome' => 'Bienvenue sur notre application!',4 'greeting' => 'Bonjour, :name!',5];1// resources/lang/fr/messages.php2return [3 'welcome' => 'Bienvenue sur notre application!',4 'greeting' => 'Bonjour, :name!',5];
2.2. Utilisation des Traductions
Pour utiliser ces traductions dans vos vues ou contrôleurs, utilisez la fonction __() ou l'assistance trans() :
1echo __('messages.welcome'); // Affiche "Bienvenue sur notre application!"2echo trans('messages.greeting', ['name' => 'Jean']); // Affiche "Bonjour, Jean!"1echo __('messages.welcome'); // Affiche "Bienvenue sur notre application!"2echo trans('messages.greeting', ['name' => 'Jean']); // Affiche "Bonjour, Jean!"
3. Traduction des Chaînes de Caractères
3.1. Traduction Simple
Pour traduire une chaîne de caractères simple, utilisez la clé définie dans le fichier de langue :
1// resources/lang/fr/messages.php2return [3 'welcome' => 'Bienvenue sur notre application!',4];56// Dans une vue7echo __('messages.welcome'); // Affiche "Bienvenue sur notre application!"1// resources/lang/fr/messages.php2return [3 'welcome' => 'Bienvenue sur notre application!',4];56// Dans une vue7echo __('messages.welcome'); // Affiche "Bienvenue sur notre application!"
3.2. Traduction avec Paramètres
Vous pouvez également passer des paramètres dynamiques dans vos traductions :
1// resources/lang/fr/messages.php2return [3 'greeting' => 'Bonjour, :name!',4];56// Dans une vue7echo trans('messages.greeting', ['name' => 'Jean']); // Affiche "Bonjour, Jean!"1// resources/lang/fr/messages.php2return [3 'greeting' => 'Bonjour, :name!',4];56// Dans une vue7echo trans('messages.greeting', ['name' => 'Jean']); // Affiche "Bonjour, Jean!"
4. Gestion des Pluriels
Laravel prend en charge la gestion des pluriels dans les traductions. Pour cela, utilisez la fonction trans_choice() :
1// resources/lang/fr/messages.php2return [3 'apples' => '{0} Il n\'y a pas de pommes|{1} Il y a une pomme|[2,*] Il y a :count pommes',4];56// Dans une vue7echo trans_choice('messages.apples', 0); // Affiche "Il n'y a pas de pommes"8echo trans_choice('messages.apples', 1); // Affiche "Il y a une pomme"9echo trans_choice('messages.apples', 5, ['count' => 5]); // Affiche "Il y a 5 pommes"1// resources/lang/fr/messages.php2return [3 'apples' => '{0} Il n\'y a pas de pommes|{1} Il y a une pomme|[2,*] Il y a :count pommes',4];56// Dans une vue7echo trans_choice('messages.apples', 0); // Affiche "Il n'y a pas de pommes"8echo trans_choice('messages.apples', 1); // Affiche "Il y a une pomme"9echo trans_choice('messages.apples', 5, ['count' => 5]); // Affiche "Il y a 5 pommes"
5. Changement de Langue Dynamique
5.1. Middleware pour Changer la Langue
Vous pouvez créer un middleware pour changer la langue de l'application en fonction de la préférence de l'utilisateur :
1php artisan make:middleware SetLocale1php artisan make:middleware SetLocale
Ensuite, modifiez le middleware pour définir la langue :
1namespace App\Http\Middleware;23use Closure;4use Illuminate\Support\Facades\App;56class SetLocale7{8 public function handle($request, Closure $next)9 {10 if (session()->has('locale')) {11 App::setLocale(session('locale'));12 }1314 return $next($request);15 }16}1namespace App\Http\Middleware;23use Closure;4use Illuminate\Support\Facades\App;56class SetLocale7{8 public function handle($request, Closure $next)9 {10 if (session()->has('locale')) {11 App::setLocale(session('locale'));12 }1314 return $next($request);15 }16}
Enregistrez le middleware dans app/Http/Kernel.php :
1protected $middlewareGroups = [2 'web' => [3 // ...4 \App\Http\Middleware\SetLocale::class,5 ],6];1protected $middlewareGroups = [2 'web' => [3 // ...4 \App\Http\Middleware\SetLocale::class,5 ],6];
5.2. Changer la Langue via une Route
1Route::get('locale/{locale}', function ($locale) {2 if (in_array($locale, config('app.available_locales'))) {3 session(['locale' => $locale]);4 }56 return redirect()->back();7});1Route::get('locale/{locale}', function ($locale) {2 if (in_array($locale, config('app.available_locales'))) {3 session(['locale' => $locale]);4 }56 return redirect()->back();7});
6. Utilisation des Fichiers JSON pour les Traductions
Laravel permet également d'utiliser des fichiers JSON pour les traductions, ce qui est particulièrement utile pour les applications à grande échelle.
6.1. Création d'un Fichier JSON
Créez un fichier JSON dans resources/lang/fr.json :
1{2 "Welcome to our application!": "Bienvenue sur notre application!",3 "Hello, :name!": "Bonjour, :name!"4}1{2 "Welcome to our application!": "Bienvenue sur notre application!",3 "Hello, :name!": "Bonjour, :name!"4}
6.2. Utilisation des Traductions JSON
Pour utiliser ces traductions, utilisez la fonction __() avec la clé correspondante :
1echo __('Welcome to our application!'); // Affiche "Bienvenue sur notre application!"2echo __('Hello, :name!', ['name' => 'Jean']); // Affiche "Bonjour, Jean!"1echo __('Welcome to our application!'); // Affiche "Bienvenue sur notre application!"2echo __('Hello, :name!', ['name' => 'Jean']); // Affiche "Bonjour, Jean!"
7. Conclusion
Laravel offre une prise en charge robuste de l'internationalisation et de la traduction, ce qui facilite la création d'applications multilingues. En suivant les étapes décrites dans cet article, vous pouvez facilement implémenter des fonctionnalités de traduction dans votre application Laravel. Que vous ayez besoin de traductions simples, de gestion des pluriels, ou de changements de langue dynamiques, Laravel a les outils nécessaires pour répondre à vos besoins.
N'oubliez pas de consulter la documentation officielle de Laravel pour plus d'informations et d'exemples détaillés.