[英]i18n Translation of Dynamically Added Text
i18n剛開始在Node中翻譯我的網站。 我對如何轉換在DOM加載並渲染了jade文件之后生成的文本(如用戶單擊按鈕后)感到有些困惑。
我知道i18n是服務器端模塊,我生成的新文本在客戶端。
如果有幫助,我也正在運行快遞。
我想做的是能夠翻譯客戶端上javascript生成的文本。 考慮一個任意按鈕:
INDEX.JADE
form.feedback-r
a#submitclientiddd.button.button-primary #{i18n.__('Reply')}
// Other Jade Stuff Here
script(src='javascripts/clientside.js', type='text/javascript')
CLIENT SIDE JS
$("#posts").on("submit", "form.feedback-r", function(e) {
actbutton.html("Sending").addClass("feedback").removeClass('send_reply').prop("disabled", true);
});
... AJAX FUNCTION REQUEST AND ON SUCCESS ...
actbutton.html("Reply").addClass("success-text").prop("disabled", false);
SERVER SIDE JS
res.render('index', { title: 'Page Title', i18n: res});
有沒有辦法在客戶端使用i18n解決此問題? 在最理想的情況下,我只想在客戶端執行此操作,但是它不起作用:
actbutton.html(i18n.__('Reply'));
我建議從這里開始: https : //www.npmjs.com/package/i18n-express在此頁面中,您會找到我建議的與此程序包有關的開始說明。
JSON文件應包含轉換后的鍵/值字符串(無論其處於何種級別)。
工作解決方案:
我想做的是能夠翻譯由JavaScript在客戶端生成的文本。
在這種情況下,您將需要處理template(view)中的現有數據,因為i18模塊在服務器端運行。
例如,您可以將翻譯后的文本稍后存儲到data-sent
屬性中的此按鈕中,如下所示:
//-INDEX.JADE
form.feedback-r
a#submitclientiddd.button.button-primary(data-reply-text='#{i18n.__('Reply')}', data-sending-text='#{i18n.__('Sending')}') #{i18n.__('Reply')}
//-CLIENT SIDE JS
var sending_text = $('a#submitclientiddd').attr('data-sending-text');
$("#posts").on("submit", "form.feedback-r", function(e) { actbutton.text(sending_text); });
//-AJAX FUNCTION REQUEST AND ON SUCCESS
var reply_text = $('a#submitclientiddd').attr('data-reply-text');
actbutton.text(reply_text); //(back to reply text)
我設法通過將Browser-i18n安裝到我的公共javascript文件夾(而不是通過NPM),然后在客戶端上使用與i18n相同的客戶端功能來解決此問題。
唯一的問題是browser-i18n看起來不支持范圍值,例如:[0] [1,]答復。 面向瀏覽器的i18n可能是一種解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.