我想在Symfony2安装上通过url定义页面语言。我的路由通过控制器内部的注释工作。
的routing.yml
_index:
resource: "@MyMainBundle/Controller/SiteController.php"
type: annotation
siteController.php
/**
* @Route( "/{_locale}/{site}", name="_site_site", defaults={"_locale" = "en"}, requirements={"site" = "about|cities|download|blog", "_locale" = "en|de|fr|es"} )
*/
这很安静,但我想要的是,以下网址调用相同的操作。
http://example.com/download
http://example.com/en/download
http://example.com/de/download
如果没有languge-parameter,页面应该切换回默认语言,但这是我可以在我的行动中处理的事情。
我找到了这个答案,但根本无法使用它。 Symfony2 default locale in routing
答案 0 :(得分:9)
只需添加另一个不包含区域设置的@Route
注释。
/**
* @Route("/{_locale}/{site}/")
* @Route("/{site}/")
*/
答案 1 :(得分:1)
这也可以在notes.yaml中使用
frontend_controllers:
resource: ../../src/Controller/Frontend
type: annotation
prefix:
- /
- /{_locale}
defaults:
_locale: 'en'
答案 2 :(得分:0)
如果您有api前缀,也可以使用下一个配置
controllers:
resource: ../../src/Controller/
type: annotation
prefix:
- api
- api/{_locale}
defaults:
_locale: en
答案 3 :(得分:0)
另一个适用于我的 Symfony 5 模拟解决方案:
# config/routes/annotations.yaml
controllers:
resource: '../../src/Controller/'
type: annotation
prefix:
fr: ''
en: '/en'
Symfony 文档:https://symfony.com/doc/current/routing.html#localized-routes-i18n