我在我的MVC剃须刀网页上使用了非常出色的jQuery Datatables控件。国际化运作良好,但不包括按钮文本。 所以我的脚本是
$(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 :(得分:0)
当您在JS中使用like作为字符串时,您的问题可能是Resources的编译问题。 一种可能的方法是为Resources提供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>