Laravel 根据 $_GET 参数更改语言
Laravel change language depending on a $_GET parameter
我们想要根据 $_GET 参数设置语言环境设置 (App::setLocale()) 的简单场景,如下所示 URL:
http://aboutlaravel.com/?language_code=en
可能的解决方案:创建一个中间件并在app/Http/Kernel中注册它。php
protected $middlewareGroups = [
'web' => [
...
\App\Http\Middleware\Localization::class
],
本地化中间件如下所示:
public function handle($request, Closure $next)
{
if(isset($_GET['language_code'])) {
if ($_GET['language_code'] == "en") {
App::setLocale("en");
} else if ($_GET['language_code'] == "de") {
App::setLocale("de");
}
}
return $next($request);
}
我没有看到问题,但我认为你需要它。
if(empty($request->input('language_code'))) {
// set "en" as default language
App::setLocale("en");
} else {
App::setLocale($request->input('language_code'));
}
使用PHP >= 7.0你可以使用一个非常漂亮的衬垫。
只需使用这个:
App::setLocale(request('langauge_code', 'en'));
// en is the default if request has no language_code
瞧瞧:)
我们想要根据 $_GET 参数设置语言环境设置 (App::setLocale()) 的简单场景,如下所示 URL:
http://aboutlaravel.com/?language_code=en
可能的解决方案:创建一个中间件并在app/Http/Kernel中注册它。php
protected $middlewareGroups = [
'web' => [
...
\App\Http\Middleware\Localization::class
],
本地化中间件如下所示:
public function handle($request, Closure $next)
{
if(isset($_GET['language_code'])) {
if ($_GET['language_code'] == "en") {
App::setLocale("en");
} else if ($_GET['language_code'] == "de") {
App::setLocale("de");
}
}
return $next($request);
}
我没有看到问题,但我认为你需要它。
if(empty($request->input('language_code'))) {
// set "en" as default language
App::setLocale("en");
} else {
App::setLocale($request->input('language_code'));
}
使用PHP >= 7.0你可以使用一个非常漂亮的衬垫。
只需使用这个:
App::setLocale(request('langauge_code', 'en'));
// en is the default if request has no language_code
瞧瞧:)