laravel - Laravel 4 中的多语言 URL

标签 laravel laravel-4

我正在尝试实现多语言 URL。因此,我想要像这样的 URL:/de/ueber-uns/kontakt/en/about-us/contact到目前为止一切顺利,我使用 App::before()在filters.php 中检查给定的语言环境。我想我需要在 routes.php 中为每种语言的每个 Controller 操作设置一个路由。

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

所以问题是:

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

  • 先感谢您!

    最佳答案

    我最终做了以下事情:

    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/

    相关文章:

    mysql - 将 2000 万条记录存储在 MySql 中的一个表或两个单独的表中,每 1000 万条?

    MySQL 存储函数出现访问冲突 :1305 in Laravel but works in phpmyadmin

    php - Laravel 所有路由除了 '/' 返回 404

    php - 带有空格的自定义列名称 Laravel 4

    Laravel 4 多语言路由

    php - MySQL:管理用户账单和送货地址

    laravel - 在 v :bind inside v-for 中使用动态名称

    laravel - 属性[livewire]不存在

    php - Laravel - 如何清除数组语言的缓存

    php - Laravel Ajax - 即使数据库行不存在也会成功执行