Heim > Artikel > PHP-Framework > So verwenden Sie Middleware für die Mehrsprachenunterstützung in Laravel
Laravel ist ein weit verbreitetes PHP-Framework, das viele praktische Funktionen und Tools bietet, einschließlich Middleware, die mehrere Sprachen unterstützt. In diesem Artikel werden wir detailliert beschreiben, wie Sie Middleware verwenden, um die Mehrsprachenunterstützung von Laravel zu implementieren, und einige spezifische Codebeispiele bereitstellen.
Zuerst müssen wir das Sprachpaket von Laravel so konfigurieren, dass es mehrere Sprachen unterstützen kann. In Laravel werden Sprachpakete normalerweise im Verzeichnis resources/lang abgelegt, wo jede Sprache ein entsprechendes Unterverzeichnis hat. Wenn wir beispielsweise Englisch und Französisch unterstützen möchten, müssen wir zwei Unterverzeichnisse en und fr im Verzeichnis resources/lang erstellen.
Dann müssen wir in jedem Unterverzeichnis eine Datei „messages.php“ erstellen, die alle Zeichenfolgen enthält, die wir übersetzen möchten. Erstellen Sie beispielsweise die Datei „messages.php“ im Verzeichnis „en“ wie folgt:
return [ 'welcome' => 'Welcome to my website!', 'about' => 'About us', 'contact' => 'Contact us', ];
Als nächstes erstellen Sie die Datei „messages.php“ im Verzeichnis „fr“ wie folgt:
return [ 'welcome' => 'Bienvenue sur mon site web!', 'about' => 'À propos de nous', 'contact' => 'Contactez-nous', ];
Auf diese Weise haben wir das Sprachpaket konfiguriert. Als nächstes müssen wir Middleware schreiben, um die Unterstützung mehrerer Sprachen zu implementieren.
In Laravel können wir Middleware verwenden, um Anfragen zu bearbeiten. Daher können wir eine Middleware erstellen, die die Spracheinstellungen des Benutzers überprüft und das entsprechende Sprachpaket basierend auf seinen Einstellungen lädt. Hier ist ein einfaches Middleware-Beispiel:
<?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); } }
Diese Middleware liest den lang-Parameter in der Anfrage und legt die aktuelle Sprache basierend auf seinem Wert fest. Wenn die Anfrage keinen lang-Parameter enthält, wird standardmäßig Englisch verwendet. Wenn in der Anfrage eine ungültige Sprache angegeben wird, wird ein HTTP 400-Fehler zurückgegeben.
Wir können diese Middleware wie folgt in der Datei app/Http/Kernel.php registrieren:
protected $middlewareGroups = [ 'web' => [ AppHttpMiddlewareSetLanguage::class, // ... ], // ... ];
Auf diese Weise durchläuft jede Anfrage diese Middleware und legt die aktuelle Sprache fest.
Da wir nun das Sprachpaket und die Middleware konfiguriert haben, können wir mehrsprachige Zeichenfolgen in unserem Code verwenden. Laravel bietet eine Übersetzungsfunktion trans(), die die entsprechende Zeichenfolge entsprechend der aktuellen Sprache auswählen kann. Wir können es zum Beispiel in einer Ansicht verwenden:
<h1>{{ trans('messages.welcome') }}</h1>
In diesem Beispiel wählt die Funktion trans() die entsprechende „Willkommen“-Zeichenfolge basierend auf der aktuellen Sprache aus. Wenn die aktuelle Sprache Englisch ist, gibt sie „Willkommen bei“ zurück meine Website!“, und auf Französisch wird „Bienvenue sur mon site web!“ zurückgegeben.
Zusätzlich zu Ansichten können wir die Funktion trans() auch überall in Controllern, Formularvalidatoren, E-Mail-Vorlagen usw. verwenden.
Zusammenfassung
In diesem Artikel haben wir vorgestellt, wie man die Middleware von Laravel verwendet, um mehrsprachige Unterstützung zu erreichen, und einige spezifische Codebeispiele bereitgestellt. Mit diesem Ansatz können wir unserer Anwendung problemlos mehrsprachige Funktionen hinzufügen.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Middleware für die Mehrsprachenunterstützung in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!