簡體   English   中英

i18n動態添加文本的翻譯

[英]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});
  1. 玉通過(i18n .__('Reply'))通過i18n渲染並正確翻譯的第一個按鈕文字
  2. 用戶點擊按鈕
  3. 通過jQuery將文本更改為“發送”,並在AJAX請求返回“回復”之后
  4. 由於按鈕文本是動態生成的,因此不再翻譯

有沒有辦法在客戶端使用i18n解決此問題? 在最理想的情況下,我只想在客戶端執行此操作,但是它不起作用:

actbutton.html(i18n.__('Reply'));
  1. 我建議從這里開始: https : //www.npmjs.com/package/i18n-express在此頁面中,您會找到我建議的與此程序包有關的開始說明。

  2. JSON文件應包含轉換后的鍵/值字符串(無論其處於何種級別)。

  3. 工作解決方案:

我想做的是能夠翻譯由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.

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