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.
'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
:
'available_locales' => [ 'en' => 'English', 'fr' => 'Français', 'es' => 'Español',],
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.
// resources/lang/fr/messages.phpreturn [ 'welcome' => 'Bienvenue sur notre application!', 'greeting' => 'Bonjour, :name!',];
2.2. Utilisation des Traductions
Pour utiliser ces traductions dans vos vues ou contrôleurs, utilisez la fonction __()
ou l'assistance trans()
:
echo __('messages.welcome'); // Affiche "Bienvenue sur notre application!"echo 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 :
// resources/lang/fr/messages.phpreturn [ 'welcome' => 'Bienvenue sur notre application!',]; // Dans une vueecho __('messages.welcome'); // Affiche "Bienvenue sur notre application!"
3.2. Traduction avec Paramètres
Vous pouvez également passer des paramètres dynamiques dans vos traductions :
// resources/lang/fr/messages.phpreturn [ 'greeting' => 'Bonjour, :name!',]; // Dans une vueecho 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()
:
// resources/lang/fr/messages.phpreturn [ 'apples' => '{0} Il n\'y a pas de pommes|{1} Il y a une pomme|[2,*] Il y a :count pommes',]; // Dans une vueecho trans_choice('messages.apples', 0); // Affiche "Il n'y a pas de pommes"echo trans_choice('messages.apples', 1); // Affiche "Il y a une pomme"echo 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 :
php artisan make:middleware SetLocale
Ensuite, modifiez le middleware pour définir la langue :
namespace App\Http\Middleware; use Closure;use Illuminate\Support\Facades\App; class SetLocale{ public function handle($request, Closure $next) { if (session()->has('locale')) { App::setLocale(session('locale')); } return $next($request); }}
Enregistrez le middleware dans app/Http/Kernel.php
:
protected $middlewareGroups = [ 'web' => [ // ... \App\Http\Middleware\SetLocale::class, ],];
5.2. Changer la Langue via une Route
Route::get('locale/{locale}', function ($locale) { if (in_array($locale, config('app.available_locales'))) { session(['locale' => $locale]); } return redirect()->back();});
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
:
{ "Welcome to our application!": "Bienvenue sur notre application!", "Hello, :name!": "Bonjour, :name!"}
6.2. Utilisation des Traductions JSON
Pour utiliser ces traductions, utilisez la fonction __() avec la clé correspondante
:
echo __('Welcome to our application!'); // Affiche "Bienvenue sur notre application!"echo __('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.