【发布时间】:2016-06-24 15:18:31
【问题描述】:
我正在我的 Symfony3 应用上实现翻译。我阅读了the book 并在我的路线开始处实现了_locale var。我还设置了从/ 到/en 的重定向,并定义了翻译后备。
这是按预期工作的,除了 FOSUserBundle 路由。由于它们不是在我自己的路由中定义的,因此它们不会处理 {_locale},并且当我访问它们时它们会重置为默认语言。 (/de/mypage => /profile => /en/mypage)
我的翻译文件存放在app/ressources/translations,我所有的翻译都是在树枝端完成的。
app_localized:
resource: "@AppBundle/Controller/"
type: annotation
prefix: /{_locale}
app:
path: /
defaults:
_controller: FrameworkBundle:Redirect:urlRedirect
path: /en
permanent: true
我在书中看到有人建议在控制器中设置翻译,但就我而言,我得到了一些,并且认为在每个人中重复语言检查没有什么价值。
我还考虑在会话中存储_locale var,并放置一个全局监听器,但似乎有点太多了,所以我想我可能遗漏了一些东西。
那么,如何通过 URL 处理全局语言,包括在 FOSUserBundle 路由上,而不在每个控制器中重复代码?
其实我的 FOSRout 就是这样的。 fos_js_routing: 资源:“@FOSJsRoutingBundle/Resources/config/routing/routing.xml”
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
prefix: /{_locale}
requirements:
_locale: '%app_locales%'
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /{_locale}/profile
requirements:
_locale: '%app_locales%'
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /{_locale}/register
requirements:
_locale: '%app_locales%'
fos_user_resetting:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /{_locale}/resetting
requirements:
_locale: '%app_locales%'
fos_user_change_password:
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
prefix: /{_locale}/profile
requirements:
_locale: '%app_locales%'
【问题讨论】:
标签: translation fosuserbundle symfony