本地化 Laravel5 无域名。com/language/

Localization with Laravel5 without domain.com/language/

我正在使用 Laravel 建立一个 learning-by-doing 项目并面临本地化。我在论坛上看到有 language-package 可用,但我认为(假设)Laravel 提供了我正在寻找的东西,虽然我还不知道去哪里找。

基本上我有一个使用 blade 呈现的视图。没什么特别的。我尝试使用 App::setLocale('nl') 来获取翻译,效果很好。

然后,在我的视图变得有点混乱之后,我开始使用 @extends()@section() 将一些东西放在几个文件中,我注意到每个文件都必须按顺序调用 App::setLocale()获取翻译。这似乎有点不方便...

有没有办法为所有视图和子视图的整个 life-cycle 请求设置语言? (如果没有 Laravel,我会使用 $_SESSION[]$_COOKIE 或在数据库中存储它,然后将其设置在索引中。php-file)

我并不想为荷兰语版开发 www.domain.com/nl/stuff 和英语版 www.domain.com/en/stuff 之类的东西。不需要 SEO,因为我正在创建 sort-of web-app.

知道在哪里可以找到这个吗?

P.s。我知道我可以在 /config/app.php 中设置语言,但我还想为用户提供 language-dropdown 以 select 他们想要的语言。 (可用语言的数量可能会增加)

您不应在视图内设置语言环境。您应该在 渲染所有视图之前执行此操作。例如在 middleware

例如这样的事情:

class LangMiddleware {

/**
 * Run the request filter.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
    public function handle($request, Closure $next)
    {
        if(Input::has('lang')){
            App::setLocale(Input::get('lang'));
        }

        return $next($request);
    }
}

然后将其注册为全局中间件,您可以根据请求执行 ?lang=en 设置语言环境。这只是一个示例,您可以随心所欲...;)