Javascript i18n动态添加文本的翻译
刚开始使用i18n在Node中翻译我的网站。我有点不知道如何翻译DOM加载并呈现jade文件后生成的文本(比如用户单击按钮后) 我知道i18n是一个服务器端模块,我的新文本是在客户端生成的 如果有帮助的话,我也在开快车 我想做的是能够翻译客户端javascript生成的文本。考虑任意按钮:< /P>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')}
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});
actbutton.html(i18n.__('Reply'));
发送的数据
属性中,并将其注入该按钮,如下所示:
//-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)
发送的数据
属性中,并将其注入该按钮,如下所示:
//-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库。。。我用一些代码更新了这个问题,这样你就可以看到我处于什么阶段了。