Laravel - Localisation : Guide pour les débutants

Bonjour, futurs développeurs ! Aujourd'hui, nous allons entreprendre un voyage passionnant dans le monde de la localisation Laravel. Ne vous inquiétez pas si vous êtes nouveau dans la programmation - je serai votre guide amical, expliquant tout étape par étape. À la fin de ce tutoriel, vous serez capable de faire parler vos applications Laravel en plusieurs langues ! C'est parti !

Laravel - Localization

Qu'est-ce que la localisation ?

Avant de plonger dans le code, comprenons ce que signifie la localisation. Imaginez que vous avez créé un site web incroyable, mais tous vos utilisateurs ne parlent pas la même langue. Ne serait-il pas génial si votre site pouvait automatiquement basculer les langues en fonction des préférences de l'utilisateur ? C'est exactement ce que fait la localisation !

La localisation est le processus d'adaptation de votre application à différentes langues et régions. C'est comme apprendre à votre application à devenir polyglotte !

Pourquoi la localisation est-elle importante ?

Permettez-moi de vous partager une petite histoire. Il y a quelques années, un de mes élèves a créé un site e-commerce incroyable. Il était parfait... sauf qu'il était seulement en anglais. Lorsqu'il a essayé de se développer sur le marché hispanophone, il s'est rendu compte qu'il devait reconstruction presque tout ! S'il avait utilisé la localisation dès le départ, cela aurait été beaucoup plus simple.

La localisation vous aide à :

  1. Atteindre un public mondial
  2. Améliorer l'expérience utilisateur
  3. Augmenter l'engagement et la rétention des utilisateurs

Maintenant, voyons comment Laravel rend ce processus un jeu d'enfant !

Configurer la localisation dans Laravel

Étape 1 : Créer des fichiers de langues

Premièrement, nous devons créer des fichiers de langues. Laravel rend cela super facile !

  1. Allez dans le répertoire resources/lang de votre projet Laravel.
  2. Créez un nouveau dossier pour chaque langue que vous souhaitez prendre en charge. Par exemple, en pour l'anglais, es pour l'espagnol.
  3. Dans chaque dossier, créez un fichier PHP nommé d'après la fonctionnalité que vous traduisez. Commençons par messages.php.

Voici à quoi pourrait ressembler votre structure de répertoire :

resources/
lang/
en/
messages.php
es/
messages.php

Maintenant, ajoutons quelques traductions à ces fichiers :

// resources/lang/en/messages.php
return [
'welcome' => 'Welcome to our website!',
'goodbye' => 'Goodbye, see you soon!',
];

// resources/lang/es/messages.php
return [
'welcome' => '¡Bienvenido a nuestro sitio web!',
'goodbye' => '¡Adiós, hasta pronto!',
];

Étape 2 : Utiliser les traductions dans votre code

Maintenant que nous avons nos traductions, utilisons-les dans notre code. Laravel propose plusieurs façons de faire cela :

Méthode 1 : Utiliser la fonction helper __()

echo __('messages.welcome');

Cela affichera "Welcome to our website!" si l'application est configurée en anglais, ou "¡Bienvenido a nuestro sitio web!" si elle est configurée en espagnol.

Méthode 2 : Utiliser la fonction helper trans()

echo trans('messages.goodbye');

Cela fait la même chose que __() mais certains développeurs préfèrent cette syntaxe.

Méthode 3 : Utiliser la directive @lang dans les templates Blade

Dans vos templates Blade, vous pouvez utiliser la directive @lang :

<h1>@lang('messages.welcome')</h1>

C'est particulièrement utile lorsque vous travaillez avec des templates HTML.

Étape 3 : Changer la locale de l'application

Maintenant, comment dire à Laravel quelle langue utiliser ? Il y a quelques façons de le faire :

Méthode 1 : Définir la locale par défaut

Dans votre fichier config/app.php, vous pouvez définir la locale par défaut :

'locale' => 'en',

Méthode 2 : Changer la locale à l'exécution

Vous pouvez changer la locale dynamiquement dans votre code :

App::setLocale('es');

Cela est utile lorsque vous souhaitez changer la langue en fonction des préférences ou des paramètres de l'utilisateur.

Méthode 3 : Utiliser un middleware pour la locale

Pour un contrôle plus avancé, vous pouvez créer un middleware pour définir la locale en fonction de divers facteurs. Voici un exemple simple :

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\App;

class SetLocale
{
public function handle($request, Closure $next)
{
if ($request->session()->has('locale')) {
App::setLocale($request->session()->get('locale'));
}
return $next($request);
}
}

Ensuite, enregistrez ce middleware dans votre app/Http/Kernel.php :

protected $middlewareGroups = [
'web' => [
// ... autre middleware
\App\Http\Middleware\SetLocale::class,
],
];

Techniques avancées de localisation

Pluralisation

Laravel peut gérer la pluralisation pour vous ! Voici comment :

// Dans votre fichier de langage
'apples' => '{0} No apples|{1} One apple|[2,*] :count apples',

// Dans votre code
echo trans_choice('apples', 0); // Affiche : No apples
echo trans_choice('apples', 1); // Affiche : One apple
echo trans_choice('apples', 5); // Affiche : 5 apples

Localisation avec des paramètres

Vous pouvez également utiliser des paramètres dans vos traductions :

// Dans votre fichier de langage
'welcome_name' => 'Welcome, :name!',

// Dans votre code
echo __('messages.welcome_name', ['name' => 'John']); // Affiche : Welcome, John!

Conclusion

Félicitations ! Vous avez刚刚 fait vos premiers pas dans le monde de la localisation Laravel. Avec ces outils à votre disposition, vous pouvez maintenant créer des applications qui s'adressent aux utilisateurs dans leur propre langue, peu importe où ils se trouvent dans le monde.

Souvenez-vous, la clé pour maîtriser la localisation (et la programmation en général) est la pratique. Essayez de créer un petit projet et implémentez la localisation dès le départ. Vous serez surpris de voir à quelle vitesse cela devient une seconde nature !

Bonne programmation, et que vos applications parlent plusieurs langues ! ??️?

Méthode Description Exemple
__() Fonction helper pour la traduction __('messages.welcome')
trans() Autre fonction helper pour la traduction trans('messages.goodbye')
@lang Directive Blade pour la traduction @lang('messages.welcome')
App::setLocale() Définir la locale de l'application App::setLocale('es')
trans_choice() Traduction avec pluralisation trans_choice('apples', 5)

Credits: Image by storyset