Javascript下调用.Net资源文件,实现语言国际化
2010-07-17 15:43 w i n s o n 阅读(1368) 评论(1) 编辑 收藏 举报大家都知道,要在.Net下实现国际化是很简单的事,只需添加一个 App_GlobalResources 目录和相应的资源文件(.resx),然后就可以直接调用了,如现有一资源文件名为: Admin.resx,其中有一个叫 Title 的键值,这时在页面只需直接使用
string title = Resources.Admin.Title;
但如果想在JS里也使用此资源文件,要如何处理呢?其实也很简单,只需使用AJAX调用后台获取资源文件即可,以下就使用jQuery + ASP.NET MVC为例实现在JS下直接调用资源文件的方法(当然你也可以直接使用传统的JS AJAX方法获取)
先创建获取资源文件的函数:

//使用键值方式获取资源文件,其中 category 即资源文件名
Resource = function (category, key) {
//使用jQuery的 ajax 直接获取相应的资源文件
var rtnvalue =
$.ajax({
type: "POST",
dataType: "json",
data: {
"category": category,
"key": key
},
url: "/GetResource",
async: false
}).responseText;
//返回 json 数据
var rtnvalue = $.parseJSON(rtnvalue);
if (!rtnvalue.MsgType)
return "No Resource File!";
else
return rtnvalue.Content;
}
Resource = function (category, key) {
//使用jQuery的 ajax 直接获取相应的资源文件
var rtnvalue =
$.ajax({
type: "POST",
dataType: "json",
data: {
"category": category,
"key": key
},
url: "/GetResource",
async: false
}).responseText;
//返回 json 数据
var rtnvalue = $.parseJSON(rtnvalue);
if (!rtnvalue.MsgType)
return "No Resource File!";
else
return rtnvalue.Content;
}
接下来要实现服务器端的代码了:

public ActionResult GetResource(FormCollection collection)
{
//此为自定义信息返回类,方便返回相应的ajax结果
Message msg = new Message();
//调用 ResourceManager 以获取相应的资源文件
ResourceManager rm = (ResourceManager)System.Type.GetType
("Resources." + collection["category"]).GetProperty("ResourceManager",
BindingFlags.Static | BindingFlags.NonPublic).GetValue(null, null);
msg.Content = rm.GetString(collection["key"]) ?? "";
//由于我用的是ASP.NET MVC,所以直接使用 Json(obj) 返回即可
return Json(msg);
}
{
//此为自定义信息返回类,方便返回相应的ajax结果
Message msg = new Message();
//调用 ResourceManager 以获取相应的资源文件
ResourceManager rm = (ResourceManager)System.Type.GetType
("Resources." + collection["category"]).GetProperty("ResourceManager",
BindingFlags.Static | BindingFlags.NonPublic).GetValue(null, null);
msg.Content = rm.GetString(collection["key"]) ?? "";
//由于我用的是ASP.NET MVC,所以直接使用 Json(obj) 返回即可
return Json(msg);
}
Ok,万事具备啦,现在可以直接调用了,在JS里如要显示以上 Title 的语言,就可以使用以下代码调用:
alert(Resource("Admin", "Title"));
//or
var title = Resource("Admin", "Title");
//or
var title = Resource("Admin", "Title");
这样就可以在JS里轻松实现语言国际化效果了!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器