我想在我的网站上设置“国际化”。为了解决这个问题,我需要将“locales”设置为所有控制器URL的前缀(例如:mywebsite.com/en/page),然后我在Symfony4文档中找到了这个帮助: https://symfony.com/doc/current/routing/external_resources.html
我已按如下方式修改了文件
配置/ routes.yaml
controllers:
resource: '../src/Controller/'
type: annotation
prefix: /{_locale}
requirements:
_locale: '%app.locales%'
defaults:
_locale: '%locale%'
配置/ services.yaml
parameters:
app.locales: en|es|fr|ru|mg
locale: 'en'
配置/包/ translation.yaml
framework:
default_locale: '%locale%'
translator:
paths:
- '%kernel.project_dir%/translations'
fallbacks:
- '%locale%'
如果我按如下方式编写网址: mywebsite.com/en/page ,一切正常,但如果我省略在网址中编写_locale,例如: mywebsite.com / page ,它返回404错误。 我希望它能够 mywebsite.com/en/page ,因为“en”在我的文件中被指定为default_locale。
我错过了什么?感谢。
答案 0 :(得分:1)
似乎这个技巧可以达成协议:
#config/services.yaml
parameters:
app.locales: en|es|fr|ru|mg|
locale: 'en'
只需在app.locales行的末尾添加 | ,现在我可以在没有_locale前缀的情况下访问控制器
答案 1 :(得分:0)
Symfony 4.3.1(也许也早于4.x,没有测试)的工作方法如下:
atl_token
其余的与问题中的相同。注意:使用此设置时,“ / en /”是可选的,也就是说,无论有没有,它都可以双向工作。