4 min de lecture
21 vues

Internationalisation et Traduction dans Laravel : Partie 01 - Les Bases sans Package

Internationalisation et Traduction dans Laravel : Partie 01 - Les Bases sans Package

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.php
return [
'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.php
return [
'welcome' => 'Bienvenue sur notre application!',
];
 
// Dans une vue
echo __('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.php
return [
'greeting' => 'Bonjour, :name!',
];
 
// Dans une vue
echo 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.php
return [
'apples' => '{0} Il n\'y a pas de pommes|{1} Il y a une pomme|[2,*] Il y a :count pommes',
];
 
// Dans une vue
echo 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.