0

当我们想要根据以下 URL 中的 $_GET 参数设置区域设置语言设置 (App::setLocale()) 时的简单场景:

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);
}
4

2 回答 2

3

我没有看到这个问题,但我认为你需要它。

   if(empty($request->input('language_code'))) {
        // set "en" as default language
        App::setLocale("en");
    } else {
        App::setLocale($request->input('language_code'));
    }
于 2017-11-09T12:26:10.217 回答
2

使用 PHP >= 7.0,您可以使用非常好的单行。

只需使用这个:

App::setLocale(request('langauge_code', 'en'));

// en is the default if request has no language_code

瞧 :)

于 2017-11-09T12:48:39.193 回答