作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这个问题说明了一切。如果我将 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') %>
但这太麻烦了,几乎不值得做,而且某些语言的词序会迫使我在我的翻译文件中放入一些空字符串,i18n-node 似乎不喜欢它吐出来关键(属性)名称,当它遇到空字符串。
我也试过在符号前使用“\”作为转义字符,但在升 sails (重启服务器)时出现无效的 JSON 错误。
任何想法,解决方法?我正在使用 sails.js,这不是我的决定,但我坚持使用它并且它带有 i18n-node。在这个项目上考虑使用另一个库有点晚了,但并非完全不可能。
最佳答案
除了即将讨论是否在语言文件中包含 (html-) 代码之外:
尝试使用
<%- __('<a href="#">click</a>') %>
代替
<%= __('<a href="#">click</a>') %>
在 ejs(sails 默认模板引擎)中,'<%=' 将转义任何 html 标记,而 '<%-' 将输出按原样放置而不触及它。我很确定您会在 .json 文件中找到未转义的 html。除了 JSON.stringify()
之外,i18n 不做任何转换,但几乎所有模板引擎都会默认转义字符串以防止 xssi。
关于html - node.js:有没有办法将 HTML 放入 i18n-node JSON 翻译文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26269745/
我是一名优秀的程序员,十分优秀!