我正在尝试在我的网站上设置“国际化”。为了解决这个问题,我需要将“locales”设置为所有 Controller URL的前缀(例如:mywebsite.com/en/page),然后我在Symfony4文档中找到了这个帮助: https://symfony.com/doc/current/routing/external_resources.html
我已将这些文件修改如下
config/routes.yaml
controllers:
resource: '../src/Controller/'
type: annotation
prefix: /{_locale}
requirements:
_locale: '%app.locales%'
defaults:
_locale: '%locale%'
config/services.yaml
parameters:
app.locales: en|es|fr|ru|mg
locale: 'en'
config/packages/translation.yaml
framework:
default_locale: '%locale%'
translator:
paths:
- '%kernel.project_dir%/translations'
fallbacks:
- '%locale%'
如果我按如下方式编写 URL:mywebsite.com/en/page,则一切正常,但如果我省略在 URL 中写入 _locale,例如:mywebsite.com/page,它返回 404 错误。 我希望它能够到达 mywebsite.com/en/page,因为“en”在我的文件中被指定为 default_locale。
我错过了什么?谢谢。
最佳答案
看来这个技巧确实有效:
#config/services.yaml
parameters:
app.locales: en|es|fr|ru|mg|
locale: 'en'
只需在 app.locales 行末尾添加 | ,现在我可以在没有 _locale 前缀的情况下访问 Controller
关于routes - Symfony 4 如何在所有 Controller 的 URL 中运行 _locale 前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48053619/