Laravel 4中的多语言URL

时间:2013-05-29 11:56:05

标签: laravel laravel-4

我正在尝试实现多语言网址。因此,我希望有如下网址:
/de/ueber-uns/kontakt/en/about-us/contact
到目前为止,我在filters.php中使用App::before()来检查给定的语言环境。我想我需要在routes.php中为每种语言中的每个控制器操作提供一条路由。

所以我想到动态创建文件routes.php。我需要的只是知道如何访问所有可用的控制器或在代码中获取所有注册的路由(如工匠路线,但不能使用CLI)。

所以问题是:

  • 是多语言网址的一般方法吗?
  • 是否可以访问所有控制器以某种方式提取方法?
  • 我怎样才能获得\ Illuminate \ Routing \ Router.php中使用的RouteCollection?

提前谢谢!

1 个答案:

答案 0 :(得分:4)

我最终做了以下事情:

1)routes.php中的路由是使用自定义artisan命令动态创建的。它解析所有控制器,并为每种支持的语言中的每个操作创建路由。语言字符串使用类似的路径处理     Route :: get('{lang} / customer / login','CustomerController @ getLogin') - > where('lang','[a-z] {2}')。 这样,用户只需更改语言字符串,站点将以正确的语言加载(如果支持)。 不同语言的路由都会导致相同的控制器操作。对于除英语之外的这些语言,我需要翻译(routes.php在/ app / lang中)。

2)对于那些操作被转换的控制器的前置过滤器在构造函数中设置。它基本上检查语言字符串是否有效,如果没有则替换它。所选语言将在会话中设置。

我希望任何人都可以使用它:)

相关问题