Zu erkennen, wie Sprache in Laravel 5
Möchte ich zu erkennen meine client-Sprache, indem Sie immer die empfohlenen browser-Sprache.
Zum Beispiel, wenn Sie öffnen den browser, in Japan wird es mir Ländercode oder Land Namen der aktuellen Benutzer geöffnet, wie "en-jp" oder "japan".
Ich versuche diesen code, aber es scheint, die Sprache, die ich zuvor ausgewählt und ist standardmäßig Englisch.
Ich eine Middleware, und ich muss ausschließen, dass der api-Teil, weil ich einige Router pingen diese Adresse und die router-browser nicht über Sprache Informationen, die Ziegel-system.
class BeforeMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
protected $except_urls = [
'api/*'
];
public function handle($request, Closure $next)
{
$langArr = array("en", "fr");
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
} else {
$languages[0] = "en";
}
if (Session::has('locale')) {
App::setLocale(Session::get('locale'));
} else {
if (in_array($languages[0], $langArr))
App::setLocale($languages[0]);
}
return $next($request);
}
} /* end class */
Danke für Sie Hilfe.
InformationsquelleAutor Nans Noel | 2016-05-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach die locale aus der Kopfzeile, können Sie packen die
http-accept-language
Wert aus der Anforderung. Dieser ist zugänglich über eine Fassade oder verwenden Sie den Anfrage-variable in Ihrer middleware:Diese gibt eine Zeichenfolge zurück, die wie folgt aussieht:
en-GB,en;q=0.8
. Sie können dann analysieren Sie es (vielleicht mitexplode()
?) und ergreifen Sie die Sprache von dort.Jedoch, diese Art der Sache kann manchmal kompliziert werden. Wenn Sie etwas weiter Fortgeschritten, es gibt ein Paket, das all dies für Sie:
https://github.com/mcamara/laravel-localization
InformationsquelleAutor edcs
Oder verwenden Sie
Illuminate\Http\Request::getPreferredLanguage
Wie diese, die in middleware:
InformationsquelleAutor Daniel Šádek
Ich habe gerade eine Middleware für diese, kann es nützlich sein.
Zuerst stellen Sie
$availableLangs
dem array der verfügbaren Sprachen in Ihrer app, können Sieconfig\app.php
anstelle der Initialisierung der array in der middleware, wie ich es Tat.Wenn die erste Sprache, die verfügbar ist in der Anfrage-Sprache-Daten, es setzt das locale, falls nicht, wird die Suche nach dem nächsten, und so weiter.
$availableLangs
statt mit definierten Reihenfolge in$userLangs
. Durchlaufen$userLangs
und prüfen, ob definiert in$availableLangs
funktionieren sollte. Wir sollten immer Folgen Sie dem browser die bevorzugte Sprache der Wahl.InformationsquelleAutor Toni Almeida
In eine middleware-do:
Wenn Sie zurückkehren möchten, die Sprache, in der Antwort an den client, erstellen Sie einen anderen middleware und tun:
InformationsquelleAutor prog_24