Mailgun 的 Handlebar 实现:在“if”中进行字符串比较,无需额外的助手

问题描述 投票:0回答:1

使用 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 中一定是可能的,但拒绝告诉我具体如何实现。

handlebars.js mailgun
1个回答
0
投票

The Mailgun API 文档提到了一个

equal
块助手,它的行为就像您在帖子中建议的
eq
助手一样。因此,我假设以下模板可以实现您的目标:

{{~#equal language "sv"~}}
  Hej
{{~else equal language "de"~}}
  Hallo
{{~else~}}
  Hello
{{~/equal~}}

注意:我使用

~
字符来消除模板中缩进造成的额外空格,以提高可读性。请参阅:https://stackoverflow.com/a/23636497/3397771

© www.soinside.com 2019 - 2024. All rights reserved.