【发布时间】:2012-03-25 20:02:38
【问题描述】:
tl;dr:我正在寻找一种在 Jade 模板中进行国际化的优雅方法。本质上,问题归结为我必须对变量中的字符串进行插值,而不是逐字代码。
问题详情:
在单语 Jade 模板中,我可以制作一个带有嵌入式标签和变量的元素,如下所示:
p Posted by
span.author= post.author
| on
span.date= post.author
得到类似的东西
<p>Posted by <span style="author">The Author</span> on
<span style="date">2012-03-08</span></p>
但是当我想将其国际化时,我需要一个字符串,因为每种语言的词序都不相同。另外,我想对翻译人员隐藏 html 详细信息,只需给他们这样一行:
Posted by #{author} on #{date}
现在,当我将此字符串的 i18n 版本作为 i18n.posted_by_on 传递给 Jade 模板时,它不会对其进行插值,所以我能做的最好的事情是:
- var author = '<span class="author">$</span>'.replace('$',post.author);
- var date = '<span class="date">$</span>'.replace('$',post.date);
- var header = i18n.posted_by_on
.replace('#{author}',author)
.replace('#{date}',date);
p!= header
这在很大程度上破坏了漂亮的 Jade 模板的意义,因为我必须手动进行所有插值。有没有更好、更紧凑、更易读的方法?
【问题讨论】:
标签: internationalization express template-engine pug