在Symfony 3.4项目中,我需要使用几种语言进行本地化。我想制作如下网址:
mysite.com/path/page/1
(默认语言='en')mysite.com/de/path/page/1
(代表'de'语言)mysite.com/fr/path/page/1
(代表'fr'语言)所以我想将语言代码添加到URL中,但不是默认的。
同时我宁愿不要在Twig模板中过度复杂化URL创建。完美的情况是根本不更改path(...)
来电。
我的想法是将以下内容添加到config.yml
:
parameters:
locale: en
locale_url: ''
framework:
default_locale: "%locale%"
以及以下routing.yml
:
mybundle:
resource: "@MyBundle/Controller/"
type: annotation
prefix: /{_locale}/
requirements:
_locale: de|fr|
defaults: {_locale: %locale_url%}
然后我会在locale
事件中更改locale_url
和onKernelRequest
。
使用上述代码生成URL很有效。唯一的问题是我无法在运行时更改locale_url
的值,因为引发了以下错误:
Impossible to call set() on a frozen ParameterBag.
我发现使用symfony/config
组件会有所帮助,但我在其文档中找不到合适的内容。
如何从默认语言的URL中删除语言参数?