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