我怎样才能在variable.yml中翻译? 主题 Hello
的翻译 notification:
agency.dpae.error:
mail:
subject: "Hello %name%" # translation subject
template: "client/mail/dpae_error.html.twig"
log:
type: TYPE_DPAE
from: FROM_AGENCY
messages.fr.yml
salut: "Hello"
namespace Di\NotificationBundle\Manager;
class SMSManager
{
$test= 'salut'
$name= 'fabien'
// translation salut to Hello
// display hello fabien
}
答案 0 :(得分:1)
你应该没有翻译而是翻译的关键:
/sbin/reboot
并在使用时翻译
鉴于notification:
agency.dpae.error:
mail:
subject: salut # translation subject
是parameters.yml的一部分,您可以使用
notification
然后您必须在翻译文件中定义翻译
$subject = $this->container->getParameter('notification')["agency.dpae.error"]["mail"]["subject"];
然后使用翻译器翻译
salut: "Hello %name%"
这里的要点是您将拥有不同的翻译文件,其中将使用相同密钥的不同翻译。因此,您必须将翻译存储在public function sendAction()
{
$name= 'fabien';
$subject = $this->container->getParameter('notification')["agency.dpae.error"]["mail"]["subject"]; // salut
$subject = $this->get('translator')->trans($subject,['%name%' => $name]);
echo $subject; // "Hello fabien";
}
文件中,而在配置选项中,您应该使用翻译中的密钥。
答案 1 :(得分:1)
您应该在翻译yaml文件中使用消息占位符:
notification:
agency.dpae.error:
mail:
subject: salut %key% translation subject
并将翻译服务作为依赖项传递给您的类:
class SMSManager
{
public function __construct(
TranslatorInterface $translator
) {
$this->translator = $translator;
}
定义为:
acme_sms_manager:
class: SMSManager
arguments:
- '@translator'
并使用如下:
$translated = $this->translator->trans(
'notification.agency.dpae.error.mail.subject',
array('%key%' => 'Fabien')
);
PS:如果翻译文件的名称是variable.yml,则应将目录作为第三个参数传递,例如:
$translated = $translator->trans(
'notification.agency.dpae.error.mail.subject',
array('%key%' => 'Fabien'),
'variable'
);
希望这个帮助