没有domain.com/language/的Laravel5本地化

时间:2015-02-13 08:02:40

标签: php laravel localization laravel-5

我正在与Laravel建立一个边做边学的项目并面向本地化。我在论坛上看到有可用的语言包,但我认为(假设)Laravel提供了我想要的东西,虽然我不知道在哪里看。 / p>

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

然后,在我的观点变得有些混乱后,我开始使用@extends()@section()将一些内容放入多个文件中,我注意到每个文件都必须调用App::setLocale()才能获取翻译。这似乎有点不方便......

有没有办法为所有视图和子视图的请求的整个生命周期设置语言? (如果没有Laravel,我会使用$_SESSION[]$_COOKIE或者在数据库中存储它,然后在index.php文件中设置它。

我没有尝试为荷兰语版本开发www.domain.com/nl/stuff,为英文版本开发www.domain.com/en/stuff。因为我正在创建一种网络应用程序,所以不需要搜索引擎优化。

知道在哪里找到这个吗?

P.S。我知道我可以在/config/app.php中设置语言,但我还想提供语言下拉菜单,供用户选择所需的语言。 (可用语言数量增加的地方)

1 个答案:

答案 0 :(得分:2)

您不应在视图中设置区域设置。你应该在之前完成所有视图的渲染。例如,在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来设置区域设置。这只是一个你可以随心所欲的例子......;)