2016-02-05 85 views
0

我在我的MVC剃须刀网页上使用了非常出色的jQuery Datatables控件。国际化运作良好,但不包括按钮文字。 所以我的剧本是更改jQuery数据表按钮语言

$(document).ready(function() { 
    $('#resultsTable').dataTable({ 
     dom: 'frtiBp', 
     "language": { 
      "url": "@ResourceHelper.GetResourceValue(ResourceKeys.DATATABLE_LANG_FILE)" 
     }, 
     buttons: [ 
      'copy', 'csv', 'excel' 
     ] 
    }); 
}); 

的ResourceHelper会得到一个文件的URL像 通用/数据表/ 1.10.10 /插件/国际化/ English.json 或 通用/数据表/ 1.10.10 /插件/i18n/Chinese.json

取决于语言

我可以把字符串中的按钮文本从我的资源帮助

 "language": { 
      "url": "@ResourceHelper.GetResourceValue(ResourceKeys.DATATABLE_LANG_FILE)", 
      "buttons": { 
       copy: '@ResourceHelper.GetResourceValue(ResourceKeys.COPY)', 
       csv: '@ResourceHelper.GetResourceValue(ResourceKeys.SAVECSV)', 
       excel: '@ResourceHelper.GetResourceValue(ResourceKeys.SAVE_EXCEL)' 
      } 
     }, 

这些解决方案的正确值,但我希望所有的表语言的东西在DataTables语言文件中的一个地方,而不是在我的资源文件和数据表之间分割。我在本地有他们,所以我可以编辑它们,但有可能吗?或者还有另外一种方法来解决这个问题?

回答

0

当您在本例中使用像JS中的字符串时,您的问题可能是资源的编译问题。 一种可能的方法是为资源制作JavaScript服务。在我们的例子中,我们使用了angularjs,即使你不使用angularjs也是如此。

1.添加一个MVC控制器返回的资源由键和值上市

TranslateResourcesController.cs

public class TranslateResourcesController : Controller 
{ 
    // GET: TranslateResources 
    public JsonResult Index() 
    { 
     return Json(Resources.Resource.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, false, true).Cast<DictionaryEntry>().ToDictionary(v => v.Key, v => v.Value), JsonRequestBehavior.AllowGet); 
    } 
} 

2.添加一个.js文件(服务)

(function() 
{ 
    "use strict"; 
    var mainApp = angular.module("mainApp",[]); 

    function TranslateResourcesService(restangular) 
    { 
     //Call .cs controller (same could be done using ajax or $http) 
     var controllerName = "TranslateResources"; 
     var url = window.applicationBaseFullUrl + controllerName; 
     var service = restangular.oneUrl(controllerName, url).get().$object; 
     return service; 
    } 
    mainApp.factory("TranslateResourcesService", ["Restangular", TranslateResourcesService]); 

    function TranslateResourcesController($scope, TranslateResourcesService) 
    { 
     $scope.TranslateResourcesService = TranslateResourcesService; 
    } 

    mainApp.controller("TranslateResourcesController", ["$scope", "TranslateResourcesService", TranslateResourcesController]); 


})(); 

现在使用JS服务,或者在这种情况下,我分配给一个angularjs控制器来全局使用它。


用法:

<button type="reset" class="btn btn-danger">{{TranslateResourcesService.COPY_BUTTON}}</button> 
+0

感谢大家好,但我的ResourceHelper工作得很好,我只是想知道如何得到数据表加载从郎文件的按钮文本。我想这有点让人困惑,因为我使用resourceHelper做了两个工作,我会编辑这个问题。 – dibs487