【问题标题】:Symfony 2.3 different locales on different pathsSymfony 2.3 不同路径上的不同语言环境
【发布时间】:2015-02-20 15:27:14
【问题描述】:

我需要在不同的路径上实现不同的语言环境。 现在在路径/ 下存在网页,在路径/admin 下存在admin 页面。

管理员用户网页上拥有 EN 或 FR 区域设置(取决于他选择的内容),并且在 管理页面 中只有 EN。 URL 路径中不能包含语言环境。

问题是,当登录的管理员使用 FR 检查 网页 并进入 EN 上的 管理页面 时,网页 有当管理员回来时在 FR 上。

我正在考虑在会话中为 webadmin 页面存储单独的语言环境,并根据 path 读取它们。

任何没有硬编码或更好方法的建议?

【问题讨论】:

    标签: php symfony routing locale multilingual


    【解决方案1】:

    您可以为路线添加要求以定义可能的语言环境列表。

    Adding Requirements section for Routing

    # app/config/routing.yml
    homepage:
        path:      /{_locale}
        defaults:  { _controller: AppBundle:Main:homepage, _locale: en }
        requirements:
            _locale:  en|fr
    

    【讨论】:

    • 要求locale不能在URL中。
    • 抱歉,错过了。如果您使用手动语言环境选择(而不是自动检测或类似的东西),这根本不是路径问题 - 实际上只是将语言环境存储在会话中。您还可以创建一个 onRequest 事件侦听器,根据 uri 和他的偏好为用户设置适当的语言环境。
    【解决方案2】:

    我的方法是创建一个事件侦听器,该侦听器根据访问的路径强制使用所需的语言环境。使用正则表达式简单地解析路径。

    【讨论】:

      猜你喜欢
      • 2013-07-20
      • 2021-09-17
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多