繁体   English   中英

在Symfony SwiftMailer中翻译电子邮件的最佳实践

[英]Best practice in translate an email in Symfony SwiftMailer

有谁知道如何翻译SwiftMailer在Symfony中发送的电子邮件的最佳实践? 有或没有树枝。

我可以提出一些选择,但是它们都不完整。

我能想到的第一件事是创建几个树枝文件。 就像User.register.html.twig (默认), User.register.nl_be.html.twig (比利时的荷兰语,根据您当前的URL)和User.register.nl.html.twig (所有荷兰语)一样。

但是这种方法有一个缺陷,如果编辑了我的默认模板,那么所有其他模板也需要更改。 由于我们支持多种语言,因此这是无法维护的。

其次,我想到了通过仅在一个模板中使用“标签”来使用Symfony的翻译器。 例如:

<h1>{{ 'user.email.register.title'|trans }}</h1>
<div>{{ 'user.email.register.body'|trans }}</div>

第一种方法中的缺陷已“修复”,但这包含另一个缺陷。 现在我们需要在翻译文件(yml,po,php,ini等)中管理html。

我们不能只翻译字符串或占位符,因为电子邮件模板根据您所在的域或语言而有所不同。例如,页眉或页脚完全不同。 有时市场营销只想将特定领域或语言的某些其他信息添加到电子邮件中。 与此相关的完整管理,必须尽可能简单!

是否有人对如何管理可翻译的电子邮件有任何想法,包括页眉/页脚/等的更改。 基于语言/域名或其他参数?

您可以在操作中直接输入TranslatorInterface

/**
* @param TranslatorInterface $translator
*/
public function switch(Request $request, TranslatorInterface $translator){
custom Stuff
}

然后,您可以检查用户是英语,德语还是其他。

    $lang = $user->getLang();

    if ($lang == 1) {
        $translator->setLocale('en');
    }

这将正确翻译您所有的{{'mail.test'| trans}} Twig var。 这非常有效,您只需维护一个html.twig文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM