如何使用jquery-i18n-properties和JavaScript动态更改语言?

3

我正在使用jquery-i18n-properties插件为我的网站提供国际化。为了加载所需的.properties文件,我已经更改了HTML并执行以下操作:

jQuery.i18n.properties({
    name: 'Messages', 
    path: 'bundle/', 
    mode: 'both',
    language: lang, 
    callback: function() {
        $("#msg_welcome").text(jQuery.i18n.prop('msg_welcome'));
        ...
    }
});

一切都很好。现在我想让用户通过按一个按钮来更改语言。有没有办法只使用JavaScript或此插件而不重新加载页面来实现它?谢谢。


这里有一个不错的教程:https://dev.to/adrai/the-progressive-guide-to-jquery-internationalization-i18n-using-i18next-3dc3 - adrai
1个回答

9

是的,这很容易。事实上,在jQuery.i18n.properties网站上有一个可以做到这一点的示例 (http://codingwithcoffee.com/files/trunk/index.html)。

诀窍在于,只需使用新语言重新初始化插件即可。把当前代码抽象成另一个函数,该函数接受lang作为参数。用一些默认语言进行初始化,一旦用户更改了当前语言,就将其传递给该函数。

function changeLang(lang) {
    jQuery.i18n.properties({
        name: 'Messages', 
        path: 'bundle/', 
        mode: 'both',
        language: lang, 
        callback: function() {
            $("#msg_welcome").text(jQuery.i18n.prop('msg_welcome'));
            ...
        }
    });
}

// somewhere else in your code
// change to english
changeLang('en_EN');
// change to other
changeLang('pt_PT');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接