【问题标题】:setting a default locale设置默认语言环境
【发布时间】:2016-09-07 21:52:57
【问题描述】:

我正在尝试在路线中实施语言环境。 我可以通过这个 sn-p 让它像 host/en/pagehost/fr/page 一样工作:

#routing.yml

app:
    resource: "@AppBundle/Controller/"
    type:     annotation
    prefix:   /{_locale}
    requirements:
        _locale: nl|en

但我的目标是能够使用host/page,其中区域设置不在 url 中,而是设置为默认区域设置。

我该怎么做?我在文档中的任何地方都找不到它。

编辑,试用 JMSI18nRoutingBundle

补充:

# config.yml

jms_i18n_routing:
    default_locale: nl
    locales: [nl, en]
    strategy: prefix_except_default

.

# security.yml > firewalls section

form_login:
        login_path: _login
        check_path: _login
        csrf_token_generator: security.csrf.token_manager
    logout:
        path:   _logout
        target: /

.

# routing.yml

_logout:
    path: /logout
    options: { i18n: false }
_login:
    path: /login
    options: { i18n: false }

路由应有前缀,但我无法使用我的 loginlogout 路由。

【问题讨论】:

  • github.com/schmittjoh/JMSI18nRoutingBundle 有一个简单的捆绑包
  • 我只是看了一下,但它仅适用于 symfony 2。我正在使用 symfony 3。我什至无法使用 composer 安装它。
  • 我在 Symfony 3.0.6 上并且每次都使用这个包。添加到作曲家:"jms/i18n-routing-bundle": "^2.0",
  • 嗯很好,我会再试一次。会及时通知您。
  • 啊,是的,看来我用错了版本。这似乎有效,作为答案,我很乐意接受,谢谢!

标签: locale symfony symfony-routing


【解决方案1】:

使用https://github.com/schmittjoh/JMSI18nRoutingBundle 捆绑包。

app/config.yml 中为默认语言环境设置捆绑包。

jms_i18n_routing:
    default_locale: nl
    locales: [nl, en]
    strategy: prefix_except_default

【讨论】:

  • 您还应该删除路由之前添加的要求和前缀。如果设置了默认语言,它不会破坏路由,路由保持原样。
  • 我正在编辑我的帖子以更好地反映我迄今为止所做的尝试
  • 然后您从之前添加的路由中删除了所有内容?对我来说,捆绑包总是完美运行,我对路由不做任何事情,如果我不翻译 translations/routes.en.yml 或任何其他语言的路由,所有路由都停留在之前。
  • 不,我所有的路线都是基本路线,其他的如上所示。
猜你喜欢
  • 1970-01-01
  • 2020-04-05
  • 2018-06-13
  • 1970-01-01
  • 2017-11-01
  • 2014-09-14
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多