【问题标题】:Multi-language URLs in Laravel 4Laravel 4 中的多语言 URL
【发布时间】:2013-06-13 15:17:46
【问题描述】:

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

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

所以问题是:

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

提前感谢您!

【问题讨论】:

    标签: laravel laravel-4


    【解决方案1】:

    我最终做了以下事情:

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

    2) 在构造函数中为那些动作被翻译的控制器设置了一个前置过滤器。它基本上检查语言字符串是否有效,如果不是则替换它。所选语言将在会话中设置。

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

    【讨论】:

      猜你喜欢
      • 2013-09-13
      • 2012-03-21
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      • 2012-11-25
      相关资源
      最近更新 更多