node.js:有没有办法将HTML放入i18n-node JSON转换文件?
这个问题说明了一切。 如果我把HTML直接放入(JSON格式)的翻译文件中,像这样:
"test_html" : "click <a href='http://stackoverflow.com/'>here</a>",
我在我的HTML中得到这个:
click <a href='http://stackoverflow.com/'>here</a>
我也尝试在我的翻译文件中结合这个:
"test_html_placeholder" : "click %shere%s",
有了这个在我的HTML:
<%= __('test_html_placeholder', '<a href="http://stackoverflow.com">', '</a>') %>
但得到了类似的结果。
我唯一能工作的就是这种笨拙:
"test_html_pre" : "click ", "test_html_link" : "here", "test_html_post" : ".",
有了这个:
<%= __('test_html_pre') %><a href="http://stackoverflow.com"><%= __('test_html_link') %></a><%= __('test_html_post') %>
但是这样做太麻烦了,几乎不值得去做,而且在某些语言中的字顺序会迫使我在我的翻译文件中放一些空的string,而i18n-node似乎并不喜欢,因为它吐出了关键字属性)名称,当它遇到一个空string。
我也尝试在符号前使用“\”作为转义字符,但是当我解除帆(重新启动服务器)时,我得到了无效的JSON错误。
任何想法,解决方法? 我正在使用sails.js,这不是我的决定,但我坚持它,它与i18n节点。 这个项目当天晚些时候考虑使用另一个图书馆,但不是完全不可能。
除了是否在语言文件中包含(html-)代码之外,还有即将到来的讨论:
尝试使用
<%- __('<a href="#">click</a>') %>
代替
<%= __('<a href="#">click</a>') %>
在ejs(sails默认的模板引擎)中,一个'<%='将会转义任何html标签,而'<% – '会把输出按原样输出。 我很确定你会发现你的.json文件中未转义的html。 除了JSON.stringify()
之外,i18n不做任何转换,但是几乎所有的模板引擎都会默认转义string来防止xssi。