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-ed версию этой строки в шаблон Jade как 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
Это в основном противоречит смыслу хорошего шаблона Jade, так как мне приходится выполнять всю интерполяцию вручную. Есть ли способ сделать это более красиво, компактно, читабельно?