2013-02-28 45 views
2

我本地化我的應用程序,它適用於標籤,標題和錯誤messages.i已在我的應用程序中使用jtable。但按鈕沒有得到本地化。內部jtable.js我有本地化不適用於mvc4應用程序按鈕

messages: { 
      serverCommunicationError: 'An error occured while communicating to the server.', 
      loadingMessage: 'Loading records...', 
      noDataAvailable: 'No data available!', 
      areYouSure: 'Are you sure?', 
      save: 'Save', 
      saving: 'Saving', 
      cancel: 'Cancel', 
      error: 'Error', 
      close: 'Close', 
      cannotLoadOptionsFor: 'Can not load options for field {0}' 
     } 

但是,如果我選擇俄語我應該得到俄羅斯language.For這些消息,我已嘗試添加資源文件是這樣的:

<script type="text/javascript"> 
(function ($) { 
    $.widget("hik.jtable", { 
     messages: { 

      serverCommunicationError: '@SEFTool.Resources.Models.ValidationStrings.serverCommunication', 
      loadingMessage: '@SEFTool.Resources.Models.ValidationStrings.loading', 
      noDataAvailable: '@SEFTool.Resources.Models.ValidationStrings.noData', 
      areYouSure: '@SEFTool.Resources.Models.ValidationStrings.Sure', 
      save: '@SEFTool.Resources.Models.ValidationStrings.Save', 
      saving: '@SEFTool.Resources.Models.ValidationStrings.Saving', 
      cancel: '@SEFTool.Resources.Models.ValidationStrings.Cancel', 
      error: '@SEFTool.Resources.Models.ValidationStrings.Error', 
      close: '@SEFTool.Resources.Models.ValidationStrings.Close', 
      cannotLoadOptionsFor: '@SEFTool.Resources.Models.ValidationStrings.cannotLoad' 

     } 
    }); 
}); 

乙它不工作..我可以如何將當前文化傳遞給js文件並在其中調用資源文件。

在本地化按鈕請幫助..

編輯: -

我創建了一個類

public static class MyGlobals 
    { 
     public static string serverCommunicationError; 
..... 
    } 

和內景,我給這樣的。

@SEFTool.Models.Administration.MyGlobals.serverCommunicationError= '@SEFTool.Resources.Models.ValidationStrings.serverCommunication' 

上午geetin。但這個值俄語中「@ SEFTool.Resources.Models.ValidationStrings.serverCommunication」不獲取傳遞給@ SEFTool.Models.Administration.MyGlobals.serverCommunicationError.serverCommunicationError正顯示出空

編輯: -

內部索引視圖我已經做過這樣的.....但我沒有得到輸出

<script type="text/javascript"> 

(function (global) { 
    var r = global.Resources || {}; 
    r.serverCommunicationError = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.serverCommunication)'; 
    r.loadingMessage = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.loading)'; 
    r.noDataAvailable = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.noData)'; 
    r.areYouSure = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Sure)'; 
    r.save = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Save)'; 
    r.saving = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Saving)'; 
    r.cancel = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Cancel)'; 
    r.error = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Error)'; 
    r.close = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Close)'; 
    r.cannotLoadOptionsFor = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.cannotLoad)'; 

    global.Resources = r; 
})(this); 

    $('#content_1').jtable({ 
     title: '', 
     paging: true, 
     pageSize: 10, 
     sorting: true, 
     inlineEditor: false, 
     permissions: 'AED', 
+0

您是否收到錯誤消息或只是默認的英文按鈕? – 2013-02-28 08:58:36

+0

Chips_100:如果我給這個serverCommunicationError:'@ SEFTool.Resources.Models.ValidationStrings.serverCommunication',按鈕的內容是@ SEFTool.Resources.Models.ValidationStrings.serverCommunication – Mizbella 2013-02-28 09:35:25

+0

所以,它似乎不是評估C#代碼。你真的在一個MVC視圖,你可以使用這個剃刀語法(@符號)?文件結尾應該是'.cshtml'。 – 2013-02-28 10:52:09

回答

0

在您的視圖(.cshtml),建立以下腳本標籤:

<script type="text/javascript"> 
    (function(global) { 
     var r = global.Resources || {}; 
     r.serverCommunicationError = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.serverCommunication)'; 
     r.loadingMessage = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.loading)'; 
     r.noDataAvailable = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.noData)'; 
     r.areYouSure = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Sure)'; 
     r.save = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Save)'; 
     r.saving = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Saving)'; 
     r.cancel = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Cancel)'; 
     r.error = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Error)'; 
     r.close = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Close)'; 
     r.cannotLoadOptionsFor = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.cannotLoad)'; 

     global.Resources = r; 
    })(this); 
</script> 

然後,在你的腳本文件,像這樣引用它:

messages: { 
      serverCommunicationError: Resources.serverCommunicationError, 
      loadingMessage: Resources.loadingMessage, 
      noDataAvailable: Resources.noDataAvailable, 
      areYouSure: Resources.areYouSure, 
      save: Resources.save, 
      saving: Resources.saving, 
      cancel: Resources.cancel, 
      error: Resources.error, 
      close: Resources.close, 
      cannotLoadOptionsFor: Resources.cannotLoadOptionsFor 
     } 

只記得第一個腳本標籤有在您的js-file代碼之前調用,以便Resources對象可用。如果在你的js文件中,你等待DOM準備就緒,這將是沒有問題的。此外,這只是我想到的第一個解決方案。也許它不是最好的,別人知道更好的方法。我也會用不同的方式來解決這個問題。

+0

請記住,第一個腳本標記必須在js-file中的代碼之前調用,以便Resources對象可用 - 我不明白這一點 – Mizbella 2013-03-01 07:37:15

+0

您需要確保第一個代碼片段在第二個代碼片段之前運行一。所以,你必須在第二個代碼片段中將它包含在外部js文件之前,因爲第二個代碼片段引用了第一個代碼片段創建的對象。 如果您在DOM上運行第二個代碼,那麼它將不會有問題,因爲它會在第一個代碼片段後立即運行(它立即運行並且不會等待dom準備就緒) – 2013-03-01 07:44:00

+0

請參閱我的編輯 – Mizbella 2013-03-01 08:27:24

相關問題