Maison  >  Article  >  cadre php  >  Comment utiliser le middleware pour la prise en charge multilingue dans Laravel

Comment utiliser le middleware pour la prise en charge multilingue dans Laravel

王林
王林original
2023-11-03 13:07:571251parcourir

Comment utiliser le middleware pour la prise en charge multilingue dans Laravel

Laravel est un framework PHP largement utilisé qui fournit de nombreuses fonctionnalités et outils pratiques, notamment un middleware prenant en charge plusieurs langues. Dans cet article, nous détaillerons comment utiliser le middleware pour implémenter la prise en charge multilingue de Laravel et fournirons quelques exemples de code spécifiques.

  1. Configurer le pack de langue

Tout d'abord, nous devons configurer le pack de langue de Laravel afin qu'il puisse prendre en charge plusieurs langues. Dans Laravel, les packages de langue sont généralement placés dans le répertoire resources/lang, où chaque langue a un sous-répertoire correspondant. Par exemple, si nous voulons prendre en charge l'anglais et le français, nous devons créer deux sous-répertoires, en et fr, dans le répertoire resources/lang.

Ensuite, dans chaque sous-répertoire, nous devons créer un fichier messages.php qui contient toutes les chaînes que nous voulons traduire. Par exemple, créez le fichier messages.php dans le répertoire en comme suit :

return [
    'welcome' => 'Welcome to my website!',
    'about' => 'About us',
    'contact' => 'Contact us',
];

Ensuite, créez le fichier messages.php dans le répertoire fr comme suit :

return [
    'welcome' => 'Bienvenue sur mon site web!',
    'about' => 'À propos de nous',
    'contact' => 'Contactez-nous',
];

De cette façon, nous avons configuré le package de langue. Ensuite, nous devons écrire un middleware pour implémenter la prise en charge multilingue.

  1. Créer un middleware

Dans Laravel, nous pouvons utiliser un middleware pour gérer les requêtes. Par conséquent, nous pouvons créer un middleware qui vérifie les paramètres linguistiques de l'utilisateur et charge le module linguistique approprié en fonction de ses paramètres. Voici un exemple simple de middleware :

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateHttpRequest;

class SetLanguage
{
    public function handle(Request $request, Closure $next)
    {
        // 检查请求中是否设置了语言参数
        $language = $request->input('lang', 'en');

        // 检查语言包是否存在
        if (!in_array($language, ['en', 'fr'])) {
            abort(400, 'Invalid language');
        }

        // 设置当前语言
        app()->setLocale($language);

        // 继续处理请求
        return $next($request);
    }
}

Ce middleware lira le paramètre lang dans la requête et définira la langue actuelle en fonction de sa valeur. S'il n'y a pas de paramètre lang dans la requête, la valeur par défaut sera l'anglais. Si une langue non valide est spécifiée dans la requête, elle renverra une erreur HTTP 400.

Nous pouvons enregistrer ce middleware dans le fichier app/Http/Kernel.php de la manière suivante :

protected $middlewareGroups = [
    'web' => [
        AppHttpMiddlewareSetLanguage::class,
        // ...
    ],
    // ...
];

De cette façon, chaque requête passera par ce middleware et définira la langue actuelle.

  1. Utilisation de chaînes multilingues

Maintenant que nous avons configuré le pack de langue et le middleware, nous pouvons utiliser des chaînes multilingues dans notre code. Laravel fournit une fonction de traduction trans(), qui permet de sélectionner la chaîne correspondante en fonction de la langue actuelle. Par exemple, nous pouvons l'utiliser dans une vue :

<h1>{{ trans('messages.welcome') }}</h1>

Dans cet exemple, la fonction trans() sélectionnera la chaîne "welcome" correspondante en fonction de la langue actuelle, si la langue actuelle est l'anglais, elle renverra "Welcome to mon site web ! », et en français il renverra « Bienvenue sur mon site web ! ».

En plus des vues, nous pouvons également utiliser la fonction trans() n'importe où dans les contrôleurs, les validateurs de formulaires, les modèles d'e-mails, etc.

Résumé

Dans cet article, nous avons présenté comment utiliser le middleware de Laravel pour obtenir une prise en charge multilingue et avons fourni quelques exemples de code spécifiques. En utilisant cette approche, nous pouvons facilement ajouter des fonctionnalités multilingues à notre application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn