2013-02-28 62 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