簡體   English   中英

node.js:有沒有辦法將 HTML 放入 i18n-node JSON 翻譯文件中?

[英]node.js: is there no way to put HTML into i18n-node JSON translation files?

問題說明了一切。 如果我將 HTML 直接放入(JSON 格式的)翻譯文件中,如下所示:

"test_html" : "click <a href='http://stackoverflow.com/'>here</a>",

我在我的 HTML 中得到了這個:

click &lt;a href=&#39;http://stackoverflow.com/&#39;&gt;here&lt;/a&gt;

我還嘗試將其合並到我的翻譯文件中:

"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 似乎不喜歡它,因為它會吐出關鍵(屬性)遇到空字符串時的名稱。

我還嘗試在符號前使用“\\”作為轉義字符,但是當我抬起帆(重新啟動服務器)時出現無效的 JSON 錯誤。

任何想法,解決方法? 我正在使用sails.js,這不是我的決定,但我堅持使用它並且它帶有i18n-node。 在這個項目中考慮使用另一個庫有點晚了,但並非完全不可能。

除了即將討論是否在語言文件中包含(html-)代碼之外:

嘗試使用

<%- __('<a href="#">click</a>') %>

代替

<%= __('<a href="#">click</a>') %>

在 ejs(sails 默認模板引擎)中,'<%=' 將轉義任何 html 標簽,而 '<%-' 將輸出按原樣放置而不觸及它。 我很確定您會在 .json 文件中找到未轉義的 html。 除了JSON.stringify()之外,i18n 不做任何轉換,但幾乎所有模板引擎都會默認對字符串進行轉義以防止 xssi。

對於那些使用 pug/jade 的人,你可以使用

!{ __('key_for_your_text') }

哈巴狗的另一種選擇是使用

p!= __('key_for_your_text')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM