如何在JQueryUI模式对话框上本地化按钮

时间:2010-10-19 14:29:46

标签: jquery jquery-ui jquery-ui-dialog

我有一个JQueryUI模式对话框,一切正常,除了一个问题...如何本地化OK和Cancel按钮?我已经完成了演示和文档,除非我遗漏了一些非常明显的东西,否则无法弄清楚如何做到这一点......

我的代码:

$("#MyDialog").dialog({
.
.
.
    buttons: {
        OK: function () {
.
.
.

        },
        Cancel: function () {
.
.
.
        }
    }
});

显示一个带有两个按钮的对话框,“确定”和“取消”。如何让按钮读取,例如“Si”和“Cancellare”..?

我需要做的是能够注入本地化的值。所以我需要的是不要将“Si”或“Cancellare”硬编码到对话框设置代码中,而是能够设置OK按钮以显示“OK”或“Si”或任何其他值,具体取决于客户的机器。

关于对话框的其他所有内容都可以正常工作。

3 个答案:

答案 0 :(得分:21)

本地化按钮的最佳方法是使用按钮选项的数组格式。

$( "#MyDialog" ).dialog({
    buttons: [
        {
            text: "OK",
            click: function() { ... }
        },
        {
            text: "Cancel",
            click: function() { ... }
        }
    ]
});

这样可以自然地使用动态标签。使用此格式,您还可以指定任何其他属性,例如classdisabled等。

http://api.jqueryui.com/dialog/#option-buttons

答案 1 :(得分:6)

您只需更改属性的名称......

var buttons = {};
buttons[getLocalizedCaptionForYesButton()] = function() { };
buttons[getLocalizedCaptionForCancelButton()] = function() { };

$("#MyDialog").dialog({
    buttons: buttons
});

答案 2 :(得分:1)

好的,找到了这样做的方法:你需要创建一个带有翻译的对象(这个对象可以传递给函数),然后创建第二个对象,将你的动作函数与翻译元素联系起来对象:

var translations = {};
translations["ok"] = "Si";
translations["cancel"] = "Cancellare";

var buttonsOpts = {};
buttonsOpts[translations["ok"]] = function () {
            .
            .
            .
        };
buttonsOpts[translations["cancel"]] = function () {
            .
            .
            .
        };

$("#MyDialog").dialog({
    .
    .
    .
    buttons: buttonsOpts
});

Alexey Ogarkov提出的问题基本答案jQuery UI Dialog Buttons from variables