Javascript i18n动态添加文本的翻译

Javascript i18n动态添加文本的翻译,javascript,node.js,internationalization,node-modules,i18n-node,Javascript,Node.js,Internationalization,Node Modules,I18n Node,刚开始使用i18n在Node中翻译我的网站。我有点不知道如何翻译DOM加载并呈现jade文件后生成的文本(比如用户单击按钮后) 我知道i18n是一个服务器端模块,我的新文本是在客户端生成的 如果有帮助的话,我也在开快车 我想做的是能够翻译客户端javascript生成的文本。考虑任意按钮:< /P> INDEX.JADE form.feedback-r a#submitclientiddd.button.button-primary #{i18n.__('Reply')}

刚开始使用i18n在Node中翻译我的网站。我有点不知道如何翻译DOM加载并呈现jade文件后生成的文本(比如用户单击按钮后)

我知道i18n是一个服务器端模块,我的新文本是在客户端生成的

如果有帮助的话,我也在开快车

我想做的是能够翻译客户端javascript生成的文本。考虑任意按钮:< /P>
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});
  • jade通过i18n和 (i18n.uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
  • 用户点击按钮
  • 文本通过jQuery更改为“Sending”,并在AJAX请求之后更改 回到“答复”
  • 按钮文本不再被翻译,因为它是动态翻译的 产生
  • 有没有办法在客户端使用i18n来解决这个问题?在最理想的情况下,我只想在客户端使用i18n,但它不起作用:

    actbutton.html(i18n.__('Reply'));
    
  • 我建议从这里开始: 在本页中,您将看到我推荐的这个软件包的起始说明

  • JSON文件应该保存已翻译的键/值字符串(无论其处于哪个级别)

  • 工作解决方案:

  • 我想做的是能够翻译客户端JavaScript生成的文本

    在这种情况下,您需要操作模板(视图)中的现有数据,因为i18模块在服务器端运行

    例如,您可以稍后将翻译后的文本存储在
    发送的数据
    属性中,并将其注入该按钮,如下所示:

    //-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)
    
  • 我建议从这里开始: 在本页中,您将看到我推荐的这个软件包的起始说明

  • JSON文件应该保存已翻译的键/值字符串(无论其处于哪个级别)

  • 工作解决方案:

  • 我想做的是能够翻译客户端JavaScript生成的文本

    在这种情况下,您需要操作模板(视图)中的现有数据,因为i18模块在服务器端运行

    例如,您可以稍后将翻译后的文本存储在
    发送的数据
    属性中,并将其注入该按钮,如下所示:

    //-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)
    

    我设法通过安装到我的公共javascript文件夹(不是通过NPM)来解决这个问题,然后在客户端使用与节点上的i18n相同的功能


    唯一的问题是browser-i18n看起来不支持范围值,如:[0]回复|[1,]回复。可能是一个可能的解决方案。

    我通过安装到我的公共javascript文件夹(不是通过NPM),然后在客户端使用与节点上的i18n相同的功能来解决这个问题


    唯一的问题是browser-i18n看起来不支持范围值,如:[0]回复|[1,]回复。可能是一个可能的解决方案。

    您好!谢谢你的帮助!我更新了我的问题,希望能为我的问题提供一个更清晰的例子。非常有趣的解决方案!我在这里看到的唯一问题是,我无法翻译“发送”(根据上面的例子),因为它不会被定义。。。有什么办法吗?如果我没弄错的话,像这样的东西应该适合你:在JADE模板中:`button(数据翻译成en='{t('buttons.sending'))=t('buttons.hello')``explain:{t('buttons.sending')}函数用{}计算i18语言环境文件中的字符串你把它包括在模板中。我可能没有正确地表达这个问题。这对于最初的jade模板来说很好,但是我感兴趣的是在模板渲染后添加功能。如果我想添加一个在DOM加载后用Javascript动态添加的按钮,该怎么办?我很确定我需要包括一些新的javascript库。。。我用一些代码更新了这个问题,这样你就可以看到我处于什么阶段了。嗨,内特!谢谢你的帮助!我更新了我的问题,希望能为我的问题提供一个更清晰的例子。非常有趣的解决方案!我在这里看到的唯一问题是,我无法翻译“发送”(根据上面的例子),因为它不会被定义。。。有什么办法吗?如果我没弄错的话,像这样的东西应该适合你:在JADE模板中:`button(数据翻译成en='{t('buttons.sending'))=t('buttons.hello')``explain:{t('buttons.sending')}函数用{}计算i18语言环境文件中的字符串你把它包括在模板中。我可能没有正确地表达这个问题。这对于最初的jade模板来说很好,但是我感兴趣的是在模板渲染后添加功能。如果我想添加一个在DOM加载后用Javascript动态添加的按钮,该怎么办?我很确定我需要包括一些新的javascript库。。。我用一些代码更新了这个问题,这样你就可以看到我处于什么阶段了。