2010-10-19 127 views
7

我有一个JQueryUI模式对话框,除一个问题外,一切工作正常......如何本地化“确定”和“取消”按钮?我已经通过演示和文档了,除非我失去了一些东西很明显,无法弄清楚如何做到这一点?如何本地化JQueryUI模式对话框上的按钮

我的代码:

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

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

这将显示一个对话框,有两个按钮,“确定”和“取消”。我如何获得按钮来阅读,例如,“Si”和“Cancellare”..?

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

有关对话的其他一切工作正常。

回答

6

你只需要改变属性的名称...

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

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

谢谢你肯但不是我要找的答案!再次读我的问题我不清楚我的意思。我需要做的是能够注入一个本地化的价值。因此,我需要的不是像上面那样键入“Si”或“Cancellare”,而是能够设置OK按钮以显示“OK”或“Si”或任何其他值,具体取决于客户机器的区域设置。 – Alfamale 2010-10-20 10:07:58

+0

@Alfamale这是一个概念。我已更新我的答案以反映您的要求。 – 2010-10-20 14:18:08

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() { ... } 
     } 
    ] 
}); 

这使得使用动态标签很自然。采用这种格式,也可以指定任何其他属性,如classdisabled

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

+0

优秀!谢谢 ;) – themis 2013-04-12 20:08:24