惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
宝玉的分享
宝玉的分享
G
Google Developers Blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
V
Visual Studio Blog
博客园 - Franky
S
SegmentFault 最新的问题
Jina AI
Jina AI
爱范儿
爱范儿
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
D
DataBreaches.Net
C
Check Point Blog
月光博客
月光博客
P
Proofpoint News Feed
T
The Blog of Author Tim Ferriss
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MongoDB | Blog
MongoDB | Blog
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
Martin Fowler
Martin Fowler

博客园 - w i n s o n

Claude Code 的替代品:OpenCode — 开源免费的 AI 编程神器 使用Ajax生成的Excel文件并下載 CBMVC For Titanium Alloy 发布! CBMVC Titanium Framework 介绍 .Net插件框架的实现及分析(三) .Net插件框架的实现及分析(二) .Net插件框架的实现及分析(一) 在类库中调用资源文件实现国际化! 让 PowerDesigner 支持 SQLite! 理解依赖注入及其好处! 图文说明如何使用T4在VS2008里生成代码 Winson.Framework 3.3 发布!! Silverlight学习问题总结(一) Winson.Framework 3.2 发布!!! 通过反射自动填充实体 Winson.Framework 3.0 正式发布!! Winson.Framework 2.5 发布! Winson.SqlPager 2.5 发布! [心得]VS2008免编译立即生效的方法
Javascript下调用.Net资源文件,实现语言国际化
w i n s o n · 2010-07-17 · via 博客园 - w i n s o n

2010-07-17 15:43  w i n s o n  阅读(1383)  评论()    收藏  举报

大家都知道,要在.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;
    }

接下来要实现服务器端的代码了:

代码

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(nullnull);
            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");

这样就可以在JS里轻松实现语言国际化效果了!