Laravel est un outil puissant qui permet aux développeurs de créer des sites Web multilingues. En mettant en œuvre la localisation Web dans vos projets Laravel, vous pouvez offrir une expérience utilisateur personnalisée aux visiteurs issus de différents horizons linguistiques, élargissant ainsi votre portée et améliorant l'engagement des utilisateurs.
Nous vous guiderons à travers la mise en œuvre de la localisation dans votre application Laravel et vous présenterons un outil qui peut simplifier et améliorer vos efforts de localisation !
Pourquoi devriez-vous localiser le site web Laravel ?

Voici quelques raisons importantes pour lesquelles vous devriez localiser votre site web Laravel .
- Atteindre un public mondial : En localisant votre site Web Laravel, vous pouvez étendre la portée de votre application à un public international. Cela permet aux utilisateurs de différents pays et de différentes langues de comprendre et d'interagir avec votre contenu.
- Améliore l'expérience utilisateur : La localisation permet aux utilisateurs d'interagir avec l'application dans leur langue maternelle, ce qui améliore considérablement l'expérience utilisateur. Cela peut augmenter les taux d'engagement, réduire les taux de rebond et augmenter les conversions.
- Avantage concurrentiel : Sur un marché mondial concurrentiel, proposer des applications dans plusieurs langues peut donner un avantage significatif sur les concurrents. Cela montre votre engagement envers les marchés internationaux et peut vous aider à pénétrer de nouveaux marchés plus efficacement.
- Améliore le référencement : Les sites Web bien localisés ont tendance à être mieux classés dans les moteurs de recherche pour les recherches dans une langue particulière. Cela peut augmenter le trafic de votre blog et la visibilité en ligne sur divers marchés grâce à la traduction multilingue.
Exigences pour une localisation multilingue Laravel

Il y a quelques exigences et étapes à considérer lors de la mise en œuvre de la localisation multilingue dans Laravel.
- Pour obtenir les dernières fonctionnalités de localisation, assurez-vous d'utiliser la dernière version de Laravel (par exemple, version 10.x).
- Une compréhension basique de PHP et du framework Laravel sera utile dans le processus de mise en œuvre.
- Configurez un environnement de développement local ou un serveur qui prend en charge Laravel, y compris un serveur web et une base de données.
- Déterminez les langues que votre application prendra en charge dès le départ.
Traductions simples Laravel

Après avoir compris quelles sont les exigences à satisfaire avant de traduire une application ou un site web Laravel , nous fournirons quelques étapes pour traduire Laravel simplement.
Pour ce faire, ouvrez le fichier de vue que vous souhaitez localiser, par exemple, resources/views/welcome.blade.php. Ensuite, remplacez la balise body par le code suivant.
Welcome to Linguise website!
Comme vous pouvez le voir, le texte ci-dessus est actuellement écrit directement dans le code. Cela est moins efficace et rend difficile la traduction de sites web en différentes langues (internationalisation).
Nous allons rendre le texte ci-dessus plus flexible afin qu'il puisse être facilement adapté à différentes langues. Laravel fournit une fonctionnalité très utile pour cela ; le système de localisation. Comme première étape, remplacez le texte existant par le code suivant.
{{ __('Welcome to Linguise website!') }}
Laravel will display the above text by default and look up the translation if the user selects a language other than English. In this case, English will be used as the application’s default language.
Configuration des paramètres régionaux dans un web multilingue Laravel

Mais comment Laravel détermine-t-il la langue actuelle ou sait-il quelles langues sont disponibles dans l'application ? Il vérifie les paramètres de locale dans le fichier config/app.php. Ouvrez ce fichier et recherchez les deux clés suivantes.
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
L'explication au-dessus des touches doit être claire. En résumé, la clé de locale contient la locale par défaut pour votre application (si aucune autre locale n'est spécifiée dans le code). Le fallback_locale est activé si une locale inexistante est demandée dans votre application.
Maintenant, ajoutons une nouvelle clé à ce fichier pour fournir une liste de tous les paramètres régionaux pris en charge.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
À ce stade, nous avons essayé le web Laravel pour prendre en charge trois langues, à savoir l'anglais, l'italien et le français.
Aperçu des fichiers de traduction Laravel

Dans Laravel, comme dans de nombreux autres frameworks, les traductions pour différentes langues sont stockées dans des fichiers séparés. Deux méthodes sont utilisées pour organiser ces fichiers de traduction.
L'ancienne méthode stocke les fichiers dans la structure suivante : resources/lang/{en,fr,it}/{myfile.php}. La nouvelle méthode utilise des fichiers JSON, tels que resources/lang/{fr.json, it.json}. Cet article se concentrera sur la nouvelle méthode, bien que les principes soient similaires pour l'ancienne méthode, hormis les différences dans la façon dont les clés de traduction sont nommées et accessibles.
Pour les langues avec des variations régionales, vous devez nommer les répertoires ou fichiers de langue conformément à la norme ISO 15897. Par exemple, l'anglais britannique serait nommé en_GB au lieu de en-gb.
Informations générales
Dans Laravel, comme avec de nombreux frameworks, les traductions pour différentes langues sont stockées dans des fichiers séparés. Il existe deux méthodes principales pour organiser les fichiers de traduction Laravel .
- L'approche legacy consiste à stocker les fichiers sous le chemin : resources/lang/{en,fr,it}/{myfile.php}.
- L'approche moderne utilise les fichiers resources/lang/{fr.json, it.json}.
Cet article se concentrera sur la deuxième méthode, bien que les principes soient applicables aux deux (avec des variations dans la façon dont les clés de traduction sont nommées et accessibles).
Pour les langues qui varient selon la région, il est recommandé de nommer les répertoires/fichiers de langue conformément aux normes ISO 15897. Par exemple, l'anglais britannique serait désigné comme en_GB plutôt que en-gb.
Création de fichiers de traduction Laravel
Ayant configuré les paramètres régionaux pour notre application, nous pouvons procéder à la traduction de notre message de bienvenue par défaut.
Commençons par créer de nouveaux fichiers de localisation au format JSON dans le répertoire resources/lang. Tout d'abord, nous allons créer un fichier resources/lang/it.json et le remplir avec les traductions appropriées.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
Ensuite, ajoutez un fichier resources/lang/fr.json.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
Comme vous pouvez le constater, nous référons systématiquement au message par défaut du fichier welcome.blade.php ({{ __(‘Bienvenue sur le site web Linguise !’) }}). Il n'est pas nécessaire de créer un fichier en.json, car Laravel reconnaît automatiquement que les messages par défaut sont en anglais.
Réglage du commutateur de langue dans une application multilingue Laravel

De plus, Laravel n'est pas encore configuré pour remplacer la langue locale, donc pour l'instant, nous allons gérer la traduction directement dans la route. Modifiez la route d'accueil par défaut à l'intérieur du fichier routes/web.php comme ceci.
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
Dans ce cas, nous capturons un paramètre GET de locale facultatif et définissons la locale actuelle en fonction de celui-ci (si la locale demandée est prise en charge).
Maintenant, vous pouvez visiter votre site web et inclure l'une des langues prises en charge comme premier segment dans l'URL. Par exemple, en naviguant vers localhost/it ou localhost/fr, le contenu localisé s'affichera. Si vous ne spécifiez pas de paramètres régionaux ou choisissez-en un qui n'est pas pris en charge, Laravel sera par défaut en anglais (en).
Middleware de localisation pour Laravel
Inclure les paramètres régionaux dans chaque URL pourrait ne pas être idéal et pourrait perturber l'apparence visuelle du site. Pour résoudre ce problème, nous allons configurer un sélecteur de langue et utiliser la session utilisateur pour afficher le contenu traduit. Vous pouvez créer un nouveau middleware dans le fichier app/Http/Middleware/Localization.php, ou le générer en exécutant la commande artisan make:middleware Localization.
Puis, ajoutez le code suivant à l'intérieur.
Ce middleware dirigera Laravel pour utiliser l'emplacement sélectionné par l'utilisateur si cette option est présente dans la session.
Puisque nous avons besoin que l'opération s'exécute à chaque requête, ajoutez-la à la pile de middleware par défaut dans app/Http/Kernel.php pour le groupe de middleware web.
/**
* The application's route middleware groups.
*
* @var array>
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Localization::class, // <--- add this
],
Modification des itinéraires
Ensuite, définissez une route pour changer la locale dans le fichier routes/web.php. Nous utilisons une route de fermeture ici, mais vous pouvez placer le même code à l'intérieur d'un contrôleur si vous préférez.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
De plus, supprimez la commutation de la locale qui a été précédemment ajoutée à la route de bienvenue par défaut. Votre route racine devrait maintenant ressembler à ceci.
Route::get('/', function () {
return view('welcome');
});
Une fois cela fait, l'utilisateur ne pourra changer la langue active qu'en visitant localhost/language/{locale}. Les paramètres régionaux sélectionnés seront enregistrés dans la session, et les utilisateurs seront redirigés vers leur page précédente (gérée par le middleware de localisation).
Pour le tester, accédez à localhost/language/it (en supposant que le cookie de session est actif dans votre navigateur), et vous devriez voir le contenu traduit. Vous pouvez naviguer sur le site ou actualiser la page, et la langue choisie restera en vigueur.
Implémentation du commutateur de langue
Maintenant, nous devons fournir à l'utilisateur une option cliquable pour changer le commutateur de langue Laravel web plutôt que de leur demander de saisir manuellement les codes de langue dans l'URL. Pour y parvenir, créez un simple commutateur de langue. Ajoutez un nouveau fichier à resources/views/partials/language_switcher.blade.php et insérez le code suivant.
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
{{ $locale_name }}
@else
{{ $locale_name }}
@endif
@endforeach
Pour inclure le commutateur de langue nouvellement créé dans la vue « bienvenue », ajoutez simplement la ligne suivante à votre fichier welcome.blade.php où vous souhaitez que le commutateur apparaisse.
@include('partials/language_switcher')
{{ __('Welcome to our website!') }}
Ouvrez le fichier app/Providers/AppServiceProvider.php et ajoutez le code suivant dans la méthode boot() pour partager la locale actuelle avec toutes les vues lorsque le commutateur de langue est utilisé
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->composer('partials.language_switcher', function ($view) {
$view->with('current_locale', app()->getLocale());
$view->with('available_locales', config('app.available_locales'));
});
}
Fonctionnalités de traduction avancées en Laravel PHP

Dans cette discussion, nous allons ensuite traiter d'autres composants de localisation, à savoir la date, le nombre et la devise. Voici les étapes.
Dates localisées dans Laravel
La gestion des dates et des heures est cruciale dans le processus de localisation. Laravel utilise Carbon pour gérer les dates et les heures. Voici comment vous pouvez utiliser Carbon pour afficher une date localisée.
settings(
[
'locale' => app()->getLocale(),
]
);
// LL is macro placeholder for MMMM D, YYYY (you could write same as dddd, MMMM D, YYYY)
$dateMessage = $today->isoFormat('dddd, LL');
return view('welcome', [
'date_message' => $dateMessage
]);
});
Ce code définit les paramètres régionaux Carbon en fonction des paramètres régionaux actuels de l'application et formate la date en conséquence.
Pour afficher la date localisée dans une vue :
{{ __('Welcome to our website, :Name', ['name' => ‘Johb’]) }}
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
{{ $date_message }}
Formatage des nombres et des devises
Différents pays ont différentes manières de formater les nombres. Par exemple.
- France → 123 123,12
- Allemagne → 123.123,12
- Japon → 123,123
Pour prendre en compte ces variations dans votre application Laravel , vous pouvez utiliser NumberFormatter.
Vous pouvez également épeler les nombres dans une langue spécifique.
Voici les devises. Pour la locale française (`fr`), la devise sera affichée en euros (€), tandis que pour la locale américaine (`en_US`), elle sera affichée en dollars américains ($).
Solution alternative pour la localisation Laravel avec Linguise

Après avoir compris les étapes de la localisation Laravel comme décrit dans l'article, ce processus implique de nombreuses étapes qui nécessitent que les utilisateurs comprennent en profondeur le code du programme Laravel .
Cela peut certainement rendre les choses difficiles pour les utilisateurs novices qui souhaitent localiser leurs applications. Par conséquent, une solution plus innovante est nécessaire, capable de traduction rapide, prenant en charge la localisation et ne nécessitant que quelques étapes simples à mettre en œuvre.
Une solution prometteuse est Linguise. Linguise offre une approche plus facile et plus efficace de la localisation Laravel sans nécessiter de connaissances approfondies en codage. Les principales fonctionnalités de Linguise incluent.
- Intégration facile avec Laravel
- Personnaliser le commutateur de langue sans codage
- Traduction d'images
- Éditeur en ligne pour personnaliser les traductions en fonction du contexte local
- Traduction dynamique pour le contenu généré dynamiquement
- Optimisation SEO pour les versions multilingues
Les étapes pour installer Linguise sur les sites Web Laravel peuvent également être effectuées facilement. Voici une brève explication.
- Créez un compte Linguise (utilisez l'essai gratuit de 30 jours gratuitement)
- Enregistrez votre domaine Web Laravel et entrez quelques informations. Vous obtiendrez une clé API.
- Téléchargez et connectez le script de traduction Linguise au dossier Laravel que vous avez obtenu.
- Configurer les URL de langue dans le fichier htaccess.
- Insérez le script de commutateur de langue dans l'en-tête de votre HTML.
- Personnalisez le sélecteur de langue selon vos besoins
- Le commutateur de langue apparaîtra sur le Web Laravel , et le contenu peut être traduit automatiquement.
Comment? Avec Linguise, vous devez uniquement vous inscrire et activer, et le sélecteur de langue apparaîtra. Après cela, vous êtes libre de localiser, par exemple, via l'éditeur en direct, de traduire les médias, les images, etc.
Conclusion
La localisation Laravel est une fonctionnalité puissante qui permet aux développeurs de créer des sites web et des applications multilingues. Comme nous l'avons vu, le processus de localisation Laravel intégré implique plusieurs étapes et nécessite une bonne compréhension du framework. Cela peut être difficile pour les débutants ou ceux qui cherchent une solution plus rapide.
Des outils comme Linguise offrent une alternative innovante pour ceux qui cherchent une approche plus rationalisée. Ces solutions proposent des capacités de traduction rapide, une intégration facile et des fonctionnalités conviviales comme des sélecteurs de langue personnalisables et la traduction d'images. Maintenant, créez votre Linguise compte et profitez de notre fonctionnalité pour localiser votre Laravel !



