tl; dr: Estoy buscando un método elegante de internacionalización en las plantillas de Jade. Esencialmente, el problema se reduce a que tengo que hacer interpolación en cadenas en variables, en lugar de código literal.I18N con Express/Jade: cadenas con etiquetas incrustadas e interpolación
Detalles del problema:
en una plantilla de Jade monolingüe sólo puedo hacer que un elemento con las etiquetas y las variables asociadas de esta manera:
p Posted by
span.author= post.author
| on
span.date= post.author
a conseguir algo como
<p>Posted by <span style="author">The Author</span> on
<span style="date">2012-03-08</span></p>
Pero cuando Quiero internacionalizar esto, necesito una sola cadena, ya que el orden de las palabras no es el mismo en todos los idiomas. Además, me gustaría ocultar los detalles del HTML de traductores, y sólo les dan una línea como esta:
Posted by #{author} on #{date}
Ahora cuando pase la versión i18n-ed de esta cadena a la plantilla de Jade como i18n.posted_by_on, se no va a hacer la interpolación en él, así que lo mejor que puedo hacer es:
- 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
Esta mayoría se pierde el punto de la bonita plantillas Jade, ya que tengo que hacer toda la interpolación de forma manual. ¿Hay algún método que lo haga de forma más agradable, compacta y legible?
Nunca encontré una respuesta (se cambiaron las prioridades), pero parece que encaja, así que lo aceptaré :) –