gpt4 book ai didi

php - 在 symfony 命令中多次更改语言环境

转载 作者:可可西里 更新时间:2023-11-01 14:04:03 24 4
gpt4 key购买 nike

我正在尝试通过 symfony 2.0 命令(由 cron 调用)向用户发送提醒。问题是我们的网站是多语言的(默认是法语)。

我在发送提醒的循环的每一步都设置了语言环境。第一次正确设置语言环境。但是在后续步骤中,好像最新的语言环境变化没有反射(reflect)在模板中,模板被翻译成第一步的语言环境。

我想知道如何修复它以反射(reflect)语言环境更改。

这里有一些代码(简化)供引用:

<?php
// This loop is inside the execute() function of a symfony service (implements ContainerAwareCommand)
// …
// Sending reminders one at a time
foreach ($reminders as $reminder)
{
$message = \Swift_Message::newInstance();

$message->setFrom(array('noreply@domain.com' => 'YourBot'));
// Change locale to that of the user
$this->getContainer()->get('session')->setLocale($reminder->getLocale());

$templating = $this->getContainer()->get('templating');

// Reminder text
$email_message = $templating->render('MyBundle:Reminder:reminder.html.twig');

$message->setSubject('Reminder')
->setTo($reminder->getEmail())
->setBody($email_message, 'text/html');

$this->getContainer()->get('mailer')->send($message);

// Update reminder status
$reminder->setEmailSent(true);
$emSymfony->persist($reminder);
}
// … subsequent code
?>

感谢您的帮助!

最佳答案

尝试添加

$this->getContainer()->get('translator')->setLocale($reminder->getLocale());

因为语言环境只在翻译器初始化时保存,而不是在调用 trans() 时保存

关于php - 在 symfony 命令中多次更改语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13382264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com