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 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 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 web Laravel ?
Voici quelques raisons importantes pour lesquelles vous devriez localiser votre site web Laravel .
- Atteignez un public mondial : en localisant votre 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 origines 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 dans plusieurs langues peut offrir un avantage significatif sur les concurrents. Cela montre votre engagement sur 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 votre visibilité en ligne sur divers marchés grâce à la traduction multilingue.
Exigences pour une localisation Laravel multilingue
Il y a quelques exigences et étapes à prendre en compte 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, la version 10.x).
- Une compréhension de base 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 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 simples Laravel
Après avoir compris les exigences à remplir 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 constater, le texte ci-dessus est actuellement écrit directement dans le code. Ceci est moins efficace et rend difficile la traduction de sites Web dans 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. 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 paramètres régionaux dans un site web multilingue Laravel
Mais comment Laravel détermine-t-il la langue actuelle ou sait quelles langues sont 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 touches doit ê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). 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é Laravel Web pour prendre en charge trois langues, à savoir l'anglais, l'italien et le français.
Présentation 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 méthode la plus récente utilise des fichiers JSON, tels que resources/lang/{fr.json, it.json}. Cet article se concentrera sur la méthode la plus récente, bien que les principes soient similaires pour l'ancienne méthode, mis à part les différences dans la façon dont les clés de traduction sont nommées et accessibles.
Pour les langues présentant des variations régionales, vous devez nommer les répertoires ou fichiers de langues 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 .
- L'approche héritée 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 les régions, il est recommandé de nommer les répertoires/fichiers de langue conformément aux normes ISO 15897. Par exemple, l’anglais britannique serait noté en_GB plutôt qu’en-gb.
Création de fichiers de traduction Laravel
Après avoir configuré les paramètres régionaux 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. 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 faisons systématiquement référence 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.
Définition du sélecteur 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 gérerons la traduction directement dans la route. Modifiez la route de bienvenue 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 de paramètres régionaux facultatif et définissons les paramètres régionaux actuels en fonction de celui-ci (si les paramètres régionaux demandés sont pris en charge).
Vous pouvez désormais visiter votre site web et inclure n’importe quelle langue prise en charge comme premier segment de l’URL. Par exemple, accéder à localhost/it ou localhost/fr affichera le contenu localisé. Si vous ne spécifiez pas de paramètres régionaux ou si vous en choisissez un qui n'est pas pris en charge, Laravel utilisera par défaut l'anglais (en).
Middleware de localisation pour Laravel
L'inclusion des paramètres régionaux dans chaque URL n'est peut-être pas idéale et pourrait perturber l'attrait visuel 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.
Ensuite, ajoutez le code suivant à l’intérieur.
Ce middleware demandera Laravel d'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 middleware par défaut dans app/Http/Kernel.php pour le groupe 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 modifier les paramètres régionaux dans le fichier routes/web.php. Nous utilisons ici une route de fermeture, 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 paramètres régionaux précédemment ajouté à 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 peut changer la langue active qu'en visitant localhost/langue/{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 (comme géré par le middleware de localisation).
Pour le tester, accédez à localhost/langue/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 fournir à l'utilisateur une option cliquable pour changer le sélecteur de langue Laravel Web plutôt que de lui demander de saisir manuellement les codes de paramètres régionaux dans l'URL. Pour y parvenir, créez un simple sélecteur de langue. Ajoutez un nouveau fichier dans resources/views/partials/lingual_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 sélecteur de langue nouvellement créé dans la vue « bienvenue », ajoutez simplement la ligne suivante à votre fichier Welcome.blade.php à l'endroit où vous souhaitez que le sélecteur 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 les paramètres régionaux actuels 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
Dans cette discussion, nous traiterons ensuite d'autres composants de localisation, à savoir la date, le nombre et la devise. Voici les étapes.
Dates localisées à 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 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 des nombres dans une langue spécifique.
Voici les devises. Pour la langue française (`fr`), la devise sera affichée en euros (€), tandis que pour la langue américaine (`en_US`), elle sera affichée en dollars américains ($).
Solution alternative Localisation Laravel avec Linguise
Après avoir compris les étapes de localisation Laravel telles que décrites 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 compliquer la tâche des utilisateurs novices qui souhaitent localiser leurs applications. Par conséquent, une solution plus innovante est nécessaire, capable d’une 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 simple et plus efficace de la localisation Laravel sans avoir besoin de connaissances approfondies en codage. Les principales fonctionnalités de Linguise incluent.
- Intégration facile avec Laravel
- Personnalisez le sélecteur de langue sans coder
- Traduction d'images
- Éditeur en direct pour personnaliser les traductions en fonction du contexte local
- Traduction dynamique pour du 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 gratuitement l'essai gratuit de 30 jours)
- Enregistrez votre domaine Web Laravel et saisissez quelques informations. Vous obtiendrez une clé API.
- Téléchargez et connectez le script de traduction Linguise au dossier Laravel que vous avez.
- Configurez les URL de langue dans le fichier htaccess.
- Insérez le script du sélecteur de langue dans l'en-tête de votre code HTML.
- Personnalisez le sélecteur de langue selon vos besoins
- Le sélecteur de langue apparaîtra sur le Web Laravel et le contenu pourra être traduit automatiquement.
Comment? Avec Linguise , il vous suffit de vous inscrire et de l'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 des médias, des 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 intégré Laravel implique plusieurs étapes et nécessite une bonne compréhension du framework. Cela peut être un défi 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 rationalisée. Ces solutions offrent des capacités de traduction rapides, 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é de localisation de votre Laravel !