0

更改页面语言时,我正在加载语言环境包。

$("#langSelector").change(function() {
    document.location = this.value;     // eg. ?lang=en
    loadBundles(this.value.substring(6));
});

function loadBundles(lang) {
    jQuery.i18n.properties({
        name:'Messages',
        path:'i18n/',   // Location path
        mode:'both',
        language: lang,
        callback: function() {
            // both works fine.
            // alert(confirm_cancel);
            alert(jQuery.i18n.prop('confirm_cancel'));
        }
    });
}

意味着特定于语言环境的消息在callback. 我希望此(语言环境)消息显示在取消按钮单击事件上,如下所示

$("#cancelButton").click(function() {
    alert(jQuery.i18n.prop('confirm_cancel'));
});

请帮助我如何在回调函数之外获取语言环境字符串值。谢谢!

4

2 回答 2

0

这不起作用吗?

callback: function() {
    $("#cancelButton").off("click").on("click",function() {
      alert(jQuery.i18n.prop('confirm_cancel'));
    });
}
于 2013-11-14T07:10:31.060 回答
0

问题是调用loadBundle(lang)错误事件。由于更改语言环境后页面会重新加载,因此所有 i18n 属性都会消失。解决方案是在页面准备好时加载Bundle。这是我的jQuery:

jQuery(document).ready(function() {
    var lang = getURLParameter("lang");
    loadBundles(lang);
});

function getURLParameter(name) {
    return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null;
}

function loadBundles(lang) {
    jQuery.i18n.properties({
        name:'Messages',
        path:'i18n/',
        mode:'both',
        language: lang,
        callback: function() {}
    });
}

$("#langSelector").change(function() {
    document.location = this.value;
});

$("#cancelButton").click(function() {
    confirm(confirm_cancel);
});

现在它为 js 消息加载特定于语言环境的属性。

于 2013-11-15T07:08:53.950 回答