2010-10-19 9 views
7

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

Мой код:

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

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

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

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

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

ответ

6

Вы просто изменить имя свойства ...

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

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

Спасибо Кен, но не ответ, который я искал! Повторив мой вопрос, я не понимал, что я имел в виду. То, что мне нужно сделать, - иметь возможность INJECT локализованного значения. Поэтому мне нужно не использовать TYPE «Si» или «Cancellare», как указано выше, но иметь возможность установить кнопку OK для отображения «OK» или «Si» или любого другого значения в зависимости от локали машины клиента. – Alfamale

+0

@Alfamale Это та же концепция. Я обновил свой ответ, чтобы отразить ваши требования. –

1

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

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

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

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

Базовый ответ предоставляется Алексей Огарков на вопрос jQuery UI Dialog Buttons from variables

21

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

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

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

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

+0

Отлично! Спасибо ;) – themis

Смежные вопросы