tl; dr:我正在尋找一種在Jade模板中進行國際化的優雅方法。本質上,問題歸結爲我必須對變量中的字符串進行插值,而不是逐字代碼。帶Express/Jade的I18N:帶嵌入式標籤和插值的字符串
問題的詳細信息:
在單語玉模板我可以做一個元素嵌入標籤和變量,像這樣:
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}
現在,當我通過這個字符串的國際化-ED版玉模板i18n.posted_by_on,它不會做插值就可以了,所以最好的,我可以做的是:
- 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
這主要是違背了漂亮的翡翠模板的點,因爲我必須手動完成所有的插值。有沒有什麼方法可以更好,更緊湊,更易讀?
我從來沒有找到答案(優先級轉移),但這似乎適合,所以我會接受它:) – 2013-11-27 20:32:55