2010-10-19 132 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