Laravel本地化,重定向到正确的视图

时间:2014-12-02 18:11:45

标签: php laravel localization multilingual

我使用laravel和mcamara / laravel-localization包来管理双语网站(法语/英语)。 在包文档中https://github.com/mcamara/laravel-localization 他们没有解释如何将URL指向正确的视图,具体取决于哪种语言设置为本地。

例如,如果网址为 / en / contact ,则加载视图 en.contact (zh_cn是以英文编写的视图的子目录),id为URL / fr / contact 从子目录 fr 加载视图。 对于需要翻译 / en / products 的网址,当本地语言设置为法语时,需要加载 / fr / produits

3 个答案:

答案 0 :(得分:0)

免责声明:我从未使用过这个包...

这是因为包(以及laravel的本地化)假设您正在使用Laravel's translations。因此,程序包基本上只担心设置应用程序区域设置,Laravel完成其余的工作。

但是,如果您需要不同的视图(或者不想使用翻译),您可以只检索当前的语言环境并使用它来构建视图的名称

View::make(App::getLocale().'.contact');

答案 1 :(得分:0)

您必须动态更改视图路径,因此您不必手动为视图添加前缀。

只需创建一个新的中间件并在Kernel.php中注册即可。 我已经为此创造了一个要点。 https://gist.github.com/vanderb/80dea9a8039dd60962c5cb291eae7b75

现在,您所要做的就是引用视图名称,而不是每次都添加lang代码。

我还建议使用命名路由 https://laravel.com/docs/5.4/routing#named-routes

答案 2 :(得分:0)

我不明白你为什么要为每种语言使用不同的观点。这会使你的代码加倍。只需使用一个带有Laravels自己的翻译功能的视图来翻译您的字符串。该包处理路由的命名(/ products vs / produits)。意见应该保持不变。

如果你真的想要不同语言的不同观点,@ lukasgeiter有答案。听起来像是代码重复。

附注:Laravel 5.4s新的JSON翻译功能和langman非常棒。