我正在尝试实现多语言 URL。因此,我想要像这样的 URL:/de/ueber-uns/kontakt
和 /en/about-us/contact
到目前为止一切顺利,我使用 App::before()
在filters.php 中检查给定的语言环境。我想我需要在 routes.php 中为每种语言的每个 Controller 操作设置一个路由。
所以我想到了动态创建文件routes.php。我所需要的只是知道如何访问所有可用的 Controller 或在代码中获取所有注册的路由(如工匠路由,但不是使用 CLI)。
所以问题是:
先感谢您!
最佳答案
我最终做了以下事情:
1) routes.php 中的路由是使用自定义 artisan 命令动态创建的。它解析所有 Controller 并为支持的每种语言的每个操作创建路由。语言字符串使用类似的路由处理
Route::get('{lang}/customer/login', 'CustomerController@getLogin')->where('lang', '[a-z]{2}').
这样用户只需更改语言字符串,站点就会以正确的语言加载(如果支持)。
不同语言的路由都会导致相同的 Controller 操作。对于除英语之外的这些语言,我需要翻译(/app/lang 中的routes.php)。
2)在构造函数中设置了那些 Action 被翻译的 Controller 的前置过滤器。它基本上检查语言字符串是否有效,如果无效则替换它。所选语言将在 session 中设置。
我希望任何人都可以使用它:)
关于laravel - Laravel 4 中的多语言 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16813219/