我找到了一种向Symfony路由添加语言环境的简单方法,如下所述:Locale switch in login of FOSUserBundle
我的项目中的一些相关设置:
配置
framework:
translator: { fallback: "%locale%" }
default_locale: nl
服务
fosmailer: @fos_user.mailer.twig_swift
路由
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /{_locale}/registreren
我试图让FOSUser在新创建的用户中发送确认邮件'浏览器语言。
为此,我将javascript找到的定位保存在我的数据库中。 然后,我将我的请求设置为该语言环境并手动发送确认邮件:
$request->setLocale($locale); //($locale = 'en_US')
$mailer = $this->get('fosmailer');
$mailer->sendConfirmationEmailMessage($user);
我的电子邮件模板包含一堆{{ 'foobar' | trans}}
个标签,效果非常好。但我也使用由FOSUser生成的{{confirmationUrl}}
。
在英文邮件中,此确认网址仍会显示为:
/nl/registreren/confirm/1234..
为什么我的邮件已本地化,但我的网址不是?
答案 0 :(得分:0)
URL地址未翻译,因为URL地址的本地化不是标准Symfony2安装的一部分。
为了本地化URL地址,您需要使用一些解决此问题的捆绑包,例如BeSimpleI18nRoutingBundle,或者您可以创建自己的解决方案。