使用 Mailgun 的 Handlebars 实现我想要多语言模板。 IE。将每个文本块包装在一个条件中并显示作为参数传递的语言。
现在是关键部分:如果
language
参数丢失或具有不受支持的值(即模板中未指定),则应显示英语字符串作为后备语言。
如果 Mailgun 支持自定义助手,您可以定义一个助手 根据此 SO 答案,例如
Handlebars.registerHelper('eq', (a, b) => a == b)
然后做:
{{#if (eq language "sv")}}Hej
{{else if (eq language "de")}}Hallo
{{else}}Hello
{{/if}}
但是,据我所知,Mailgun 中没有办法定义自己的助手。
那么,如果没有额外的帮助者,我该如何做到这一点?
我知道理论上我可以将输入转换为布尔值,然后执行类似的操作
{{#if isSwedish}}Hej
{{else if isGerman}}Hallo
{{else}}Hello
{{/if}}
但这对我来说非常不方便,我宁愿传递一个字符串属性
language
。
Mailgun 支持人员告诉我,这在 Handlebars 中一定是可能的,但拒绝告诉我具体如何实现。
The Mailgun API 文档提到了一个
equal
块助手,它的行为就像您在帖子中建议的 eq
助手一样。因此,我假设以下模板可以实现您的目标:
{{~#equal language "sv"~}}
Hej
{{~else equal language "de"~}}
Hallo
{{~else~}}
Hello
{{~/equal~}}
注意:我使用
~
字符来消除模板中缩进造成的额外空格,以提高可读性。请参阅:https://stackoverflow.com/a/23636497/3397771