Как локализовать кнопки в модальном диалоге JQueryUI - PullRequest
7 голосов
/ 19 октября 2010

У меня есть модальное диалоговое окно JQueryUI, и все работает нормально, за исключением одной проблемы ... как локализовать кнопки OK и Отмена? Я просмотрел демонстрации и документацию и, если не пропущу что-то очень очевидное, не могу понять, как это сделать ...

Мой код:

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

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

Отображается диалоговое окно с двумя кнопками «ОК» и «Отмена». Как мне заставить кнопки читать, например, "Si" и "Cancellare" ..?

Что мне нужно сделать, так это уметь вводить локализованное значение. Так что мне нужно не жестко кодировать «Si» или «Cancellare» в коде настройки диалога, а чтобы можно было установить кнопку «ОК» для отображения «OK» или «Si» или любого другого значения в зависимости от локали машина клиента.

Все остальное в диалоге работает нормально.

Ответы [ 3 ]

21 голосов
/ 29 ноября 2012

Лучший способ локализовать кнопки - использовать формат массива для параметра кнопок.

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

Это делает естественной работу с динамическими метками.С помощью этого формата вы также можете указать любые другие атрибуты, такие как class, disabled и т. Д.

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

6 голосов
/ 19 октября 2010

Вы просто меняете название объекта ...

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

$("#MyDialog").dialog({
    buttons: buttons
});
1 голос
/ 20 октября 2010

ОК, нашел способ сделать это: вам нужно создать один объект с вашими переводами в нем (этот объект можно передать в функцию), а затем создать второй объект, который связывает ваши действия с элементами переводов.объекты:

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

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

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

Базовый ответ Алексея Огаркова на вопрос JQuery UI Диалоговые кнопки от переменных

...