Localisation pas à pas avec Laravel [Guide]

Faites passer votre entreprise au niveau supérieur grâce à l'expansion mondiale. Croissance et développement de l'entreprise.
Table of Contents

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 de différentes origines linguistiques, ce qui vous permet d'élargir votre audience et d'améliorer l'engagement des utilisateurs.

Nous vous guiderons dans 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 Laravel ?

Un homme portant un gilet orange tient une tablette affichant une carte du monde. Divers drapeaux de pays sont affichés.

Voici quelques raisons importantes pour lesquelles vous devriez localiser votre site Laravel .

  • Touchez un public mondial : En localisant votre site Laravel , vous pouvez étendre la portée de votre application à un public international. Cela permet aux utilisateurs de différents pays et horizons linguistiques 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 en plusieurs langues peut offrir un avantage significatif par rapport aux concurrents. Cela dé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 à mieux se classer dans les moteurs de recherche pour les recherches dans une langue donnée. Cela peut augmenter le trafic de votre blog et votre visibilité en ligne sur divers marchés grâce à la traduction multilingue.

Exigences pour une localisation Laravel multilingue

Deux personnes collaborant sur un grand écran d’ordinateur avec diverses applications. Elles semblent travailler ensemble.

Il y a quelques prérequis et étapes à prendre en compte lors de la mise en œuvre de la localisation multilingue dans Laravel.

  • Pour bénéficier des dernières fonctionnalités de localisation, assurez-vous d'utiliser la dernière version de Laravel (par exemple, la version 10.x).
  • Une compréhension de base de PHP et du framework Laravel sera utile lors du processus de mise en œuvre.
  • Configurez un environnement de développement local ou un serveur prenant en charge Laravel, y compris un serveur web et une base de données.
  • Déterminez dès le départ les langues que votre application prendra en charge.

Traductions Laravel simples

Homme travaillant sur un ordinateur portable. Navigation web à l'écran.

Après avoir compris quelles exigences doivent être remplies avant de traduire une application ou un site web Laravel , nous allons fournir 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.

				
					<body class="antialiased">
    <div class="relative flex items-top justify-center min-h-screen bg-gray-100 sm:items-center py-4 sm:pt-0">
        <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
            <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
                Welcome to Linguise website!
            </div>
        </div>
    </div>
</body>
				
			

Comme vous pouvez le constater, le texte ci-dessus est actuellement écrit directement dans le code. C'est moins efficace et cela rend difficile la traduction de sites web vers différentes langues (internationalisation). 

Nous allons rendre le texte ci-dessus plus flexible afin qu'il puisse être facilement adapté à différentes langues. Laravel offre une fonctionnalité très utile pour cela : le système de localisation. Dans un premier temps, remplacez le texte existant par le code suivant.

				
					{{ __('Welcome to Linguise website!') }}
				
			

Laravel affichera le texte ci-dessus par défaut et recherchera la traduction si l’utilisateur sélectionne une langue autre que l’anglais. Dans ce cas, l’anglais sera utilisé comme langue par défaut de l’application.

Configuration des locales dans un site web multilingue Laravel

Deux personnes travaillant sur des écrans d'ordinateur. Elles interagissent avec de grands écrans.

Mais comment Laravel détermine-t-il la langue actuelle ou connaît-il les langues disponibles dans l'application ? Il vérifie les paramètres régionaux 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 clés devrait être claire. En résumé, la clé locale contient la locale par défaut de votre application (si aucune autre locale n'est spécifiée dans le code). La fallback_locale est activée si une locale inexistante est demandée dans votre application.

Maintenant, ajoutons une nouvelle clé à ce fichier pour fournir une liste de toutes les locales prises 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é Laravel web pour prendre en charge trois langues, à savoir l'anglais, l'italien et le français.

Aperçu des fichiers de traduction Laravel

Une femme pointant du doigt un grand écran d'ordinateur affichant diverses icônes colorées. L'écran a un fond blanc avec des icônes bleues et violettes.

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 présentant des variantes régionales, vous devez nommer les répertoires ou les 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 dans 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 .

  1. L’approche héritée consiste à stocker les fichiers sous le chemin : resources/lang/{en,fr,it}/{myfile.php}.
  2. L'approche moderne utilise les fichiers resources/lang/{fr.json, it.json}.

Cet article se concentrera sur la seconde méthode, bien que les principes s’appliquent 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é par en_GB plutôt que par en-gb.

Création de fichiers de traduction Laravel

Après avoir configuré les locales de 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. Nous allons d'abord 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 l'observer, nous référençons systématiquement le message par défaut du fichier welcome.blade.php ({{ __(‘Bienvenue sur le site 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.

Configurer le sélecteur de langue dans une application multilingue Laravel

Des personnes interagissant avec une grande interface de messagerie.

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 dans le 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 locale facultatif et définissons la locale actuelle en fonction de celui-ci (si la locale demandée est prise en charge).

Désormais, vous pouvez visiter votre site web et inclure l’une des langues prises en charge comme premier segment de l’URL. Par exemple, en accédant à localhost/it ou localhost/fr, le contenu localisé s’affichera. Si vous ne spécifiez pas de locale ou si vous en choisissez une qui n’est pas prise en charge, Laravel utilisera l’anglais (en) par défaut.

Middleware de localisation pour Laravel

Inclure la locale dans chaque URL n’est peut-être pas idéal et pourrait nuire à l’attrait visuel du site. Pour y remédier, nous allons mettre en place 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.

Ensuite, ajoutez le code suivant à l'intérieur.

				
					<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Session;

class Localization
{
    /**
    * Handle an incoming request.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  \Closure  $next
    * @return mixed
    */
    public function handle(Request $request, Closure $next)
    {
        if (Session::has('locale')) {
            App::setLocale(Session::get('locale'));
        }
        return $next($request);
    }
}


				
			

Ce middleware indiquera à Laravel d'utiliser l'emplacement sélectionné par l'utilisateur si cette option est présente dans la session.

Comme 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<string, array<int, class-string|string>>
*/
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 ici une route de type closure, mais vous pouvez placer le même code dans 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 le changement de locale qui avait été précédemment ajouté à la route d'accueil par défaut. Votre route racine devrait maintenant ressembler à ceci.

				
					Route::get('/', function () {
   return view('welcome');
});

				
			

Une fois cette opération effectuée, l'utilisateur ne peut changer la langue active qu'en visitant localhost/language/{locale}. La locale sélectionnée sera enregistrée dans la session, et les utilisateurs seront redirigés vers leur page précédente (comme géré par le middleware de localisation). 

Pour le tester, rendez-vous sur localhost/language/it (en supposant que le cookie de session soit 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 sélecteur de langue

Maintenant, nous devons offrir à l'utilisateur une option cliquable pour changer le sélecteur de langue Laravel web plutôt que de l'obliger à saisir manuellement les codes de locale dans l'URL. Pour ce faire, créez un sélecteur de langue simple. Ajoutez un nouveau fichier à l'emplacement resources/views/partials/language_switcher.blade.php et insérez le code suivant.

				
					<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
    @foreach($available_locales as $locale_name => $available_locale)
        @if($available_locale === $current_locale)
            <span class="ml-2 mr-2 text-gray-700">{{ $locale_name }}</span>
        @else
            <a class="ml-1 underline ml-2 mr-2" href="language/{{ $available_locale }}">
                <span>{{ $locale_name }}</span>
            </a>
        @endif
    @endforeach
</div>


				
			

Pour inclure le nouveau sélecteur de langue dans la vue « welcome », ajoutez simplement la ligne suivante à votre fichier welcome.blade.php à l'endroit où vous souhaitez que le sélecteur apparaisse.

				
					<body class="antialiased">
    <div class="relative flex items-top justify-center min-h-screen bg-gray-100 sm:items-center py-4 sm:pt-0">
        <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
            @include('partials/language_switcher')

            <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
                {{ __('Welcome to our website!') }}
            </div>
        </div>
    </div>
</body>


				
			

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 sélecteur 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 dans Laravel PHP

Illustration de personnes travaillant sur un projet. Une équipe en collaboration.

Dans cette discussion, nous aborderons ensuite 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 essentielle dans le processus de localisation. Laravel utilise Carbon pour gérer ces informations. Voici comment utiliser Carbon pour afficher une date localisée.

				
					<?php
Route::get('/', function () {
    $today = \Carbon\Carbon::now()
        ->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 la locale de Carbon en fonction de la locale actuelle 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’]) }}
<br>
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
<br>
{{ $date_message }}


				
			

Formatage des nombres et des devises

Les différents pays ont diverses façons de formater les nombres. Par exemple.

  • France → 123 123,12
  • Allemagne → 123.123,12
  • Japon → 123 123

Pour gérer ces variations dans votre application Laravel , vous pouvez utiliser NumberFormatter.

				
					<?php
$num = NumberFormatter::create('en_US', NumberFormatter::DECIMAL);

$num2 = NumberFormatter::create('fr', NumberFormatter::DECIMAL);
				
			

Vous pouvez également écrire les nombres en toutes lettres dans une langue spécifique.

				
					<?php
$num = NumberFormatter::create('en_US', NumberFormatter::SPELLOUT);

$num2 = NumberFormatter::create('it', NumberFormatter::SPELLOUT);
				
			

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 ($).

				
					<?php
$currency1 = NumberFormatter::create('it', NumberFormatter::CURRENCY);

$currency2 = NumberFormatter::create('en_US', NumberFormatter::CURRENCY);
				
			
Brisez les barrières linguistiques
Dites adieu aux barrières linguistiques et bonjour à une croissance illimitée ! Essayez dès aujourd'hui notre service de traduction automatique.

Solution alternative de localisation Laravel avec Linguise

Une équipe travaillant ensemble sur un projet numérique. Elle est entourée de divers outils et symboles numériques.

Après avoir compris les étapes de la localisation Laravel telles que décrites dans l'article, ce processus implique de nombreuses étapes qui exigent des utilisateurs qu'ils comprennent en profondeur le code du programme Laravel .

Cela peut certainement rendre la tâche difficile aux utilisateurs novices qui souhaitent localiser leurs applications. Par conséquent, une solution plus innovante est nécessaire, capable de traduire rapidement, 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 simple 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 sélecteur de langue sans coder
  • Traduction des images
  • Éditeur en direct pour personnaliser les traductions selon le contexte local
  • Traduction dynamique pour contenu généré dynamiquement
  • Optimisation SEO pour les versions multilingues

Les étapes pour installer Linguise sur les sites Laravel peuvent également être réalisées facilement. Voici une brève explication.

  1. Créez un compte Linguise (utilisez l'essai gratuit de 30 jours)
  2. Enregistrez votre domaine web Laravel et saisissez quelques informations. Vous obtiendrez une clé API.
  3. Téléchargez et connectez le script de traduction Linguise au dossier Laravel que vous avez obtenu.
  4. Configurer les URL de langue dans le fichier htaccess.
  5. Insérez le script de changement de langue dans l'en-tête de votre code HTML.
  6. Personnaliser le sélecteur de langue selon vos besoins
  7. Le sélecteur de langue apparaîtra sur le site Laravel , et le contenu pourra être traduit automatiquement.

Comment ? Avec Linguise, il vous suffit de vous inscrire et d'activer, et le sélecteur de langue apparaîtra. Ensuite, vous êtes libre de localiser, par exemple, via l'éditeur en direct, de traduire les médias, les images, etc.

Prêt à explorer de nouveaux marchés ? Essayez notre service de traduction automatique gratuitement avec notre essai sans risque d'un mois. Aucune carte de crédit requise !

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. Il peut être difficile pour les débutants ou ceux qui recherchent une solution plus rapide.

Des outils comme Linguise offrent une alternative innovante à ceux qui recherchent une approche plus simplifiée. Ces solutions offrent des capacités de traduction rapide, une intégration facile et des fonctionnalités conviviales telles que des sélecteurs de langue personnalisables et la traduction d'images. Maintenant, créez votre compte Linguise et profitez de notre fonctionnalité pour localiser votre Laravel !

Vous pourriez également être intéressé par la lecture

Ne manquez pas ça !
Abonnez-vous à notre Newsletter

Recevez des actualités sur la traduction automatique de sites web, le SEO international et plus encore !

Invalid email address
Essayez-le. Une fois par mois, et vous pouvez vous désabonner à tout moment.

Ne partez pas sans partager votre adresse e-mail !

Nous ne pouvons pas vous garantir que vous gagnerez à la loterie, mais nous pouvons vous promettre des actualités informatives intéressantes sur la traduction et des réductions occasionnelles.

Ne manquez pas ça !
Invalid email address