本地化 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
设置语言环境。这只是一个示例,您可以随心所欲...;)
我正在使用 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
设置语言环境。这只是一个示例,您可以随心所欲...;)