我正在与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
中设置语言,但我还想提供语言下拉菜单,供用户选择所需的语言。 (可用语言数量增加的地方)
答案 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
来设置区域设置。这只是一个你可以随心所欲的例子......;)