ASP.NET MVC:多语言的三种技术处理策略
ASP.NET MVC:多语言的三种技术处理策略
背景
本文介绍了多语言的三种技术处理策略,每种策略对应一种场景,这三种场景是:
- 多语言资源信息只被.NET使用。
- 多语言资源信息只被Javascript使用。
- 多语言资源信息同时被.NET和Javascript使用。
下文我们就一个一个场景的分析。
第一种场景:多语言资源信息只被.NET使用
这种场景的技术处理最简单,可以充分利用VisualStudio提供的资源编辑器及资源文件。
实现步骤
1、定义资源文件。

2、使用资源文件。
1 <h1>Classic:@Strings.Title </h1>
第二种场景:多语言资源信息只被Javascript使用
这种场景的技术实现需要参考使用的Javascript类库,自己做也不难(无非是原型覆盖或变量覆盖)。
实现步骤
1、定义Javascript本地化文件。

2、引入需要的本地化文件(可以静态引入或动态根据配置引入)。
1 <script src="../../../Javascript/Ext/locale/ext-lang-zh_CN.js"></script>
第三种场景:多语言资源信息同时被.NET和Javascript使用
这种场景多少有些复杂,因为资源信息需要在两个地方使用,我们可以重复定义两次,或者用代码生成器,不过这里介绍另外一种方式:服务器生成Javascript。
实现步骤
1、定义生成Javascript代码的控制器(会把服务器的资源文件生成为Javascript代码,这样就保证资源只需要定义一次)。

1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Web.Mvc;
6
7 using Happy.Web.Mvc;
8
9 namespace Happy.MvcExample.Controllers
10 {
11 public class JavascriptResourceController : Controller
12 {
13 //
14 // GET: /JavascriptResource/Strings
15
16 public ActionResult Strings()
17 {
18 return new JavascriptResourceResult("MvcExample.Strings", typeof(Resource.Strings));
19 }
20 }
21 }

2、使用服务器生成的Javascript代码。

1 <script src="~/Scripts/jquery-2.0.3.js"></script>
2 <script type="text/javascript" src="JavascriptResource/Strings"></script>
3 <script type="text/javascript">
4 $("#ClientTitle").text(MvcExample.Strings.Title);
5 </script>

最终的运行效果
切换语言需要修改Web.Config,配置如下:
1 <globalization uiCulture="en-US"/>
中文

英文

注:不同的颜色是不同的模板导致的。
代码下载
地址:http://happy.codeplex.com/SourceControl/latest。
备注
简单的多语言容易实现,如果是跨国的企业应用,难度就非常大了,因为同一个系统运行在不同的时区和区域文化中,我还没有深入想这块咋处理(没有需求)。
在博客系统中
ASP.NET MVC:多语言的三种技术处理策略的更多相关文章
- Java 基础入门随笔(1) JavaSE版——java语言三种技术架构
1.java语言的三种技术架构: J2SE(java 2 Platform Standard Edition):标准版,是为开发普通桌面和商务应用程序提供的解决方案.该技术体系是其他两者的基础,可以完 ...
- Asp.net mvc 知多少(三)
本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
EF+LINQ事物处理 在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...
- asp.net跳转页面的三种方法比较
目前,对于学习asp.net的很多朋友来讲,实现跳转页面的方法还不是很了解.本文将为朋友们介绍利用asp.net跳转页面的三种方法,并对其之间的形式进行比较,希望能够对朋友们有所帮助. ASP.NET ...
- ASP.NET MVC 表单的几种提交方式
下面是总结一下在ASP.NET MVC中表单的几种提交方式. 1.Ajax提交表单 需要引用 <script type="text/javascript" src=" ...
- 基于C#程序设计语言的三种组合算法
目录 基于C#程序设计语言的三种组合算法 1. 总体思路 1.1 前言 1.2 算法思路 1.3 算法需要注意的点 2. 三种组合算法 2.1 普通组合算法 2.2 与自身进行组合的组合算法 2.3 ...
- 第二百五十九节,Tornado框架-模板语言的三种方式
Tornado框架-模板语言的三种方式 模板语言就是可以在html页面,接收逻辑处理的self.render()方法传输的变量,将数据渲染到对应的地方 一.接收值渲染 {{...}}接收self.re ...
- 【转载】目前主流过滤XSS的三种技术
目前主流过滤XSS的三种技术 过滤 过滤,顾名思义,就是将提交上来的数据中的敏感词汇直接过滤掉.例如对"<script>"."<a>". ...
- ASP.NET MVC 多语言方案
前言: 好多年没写文章了,工作很忙,天天加班, 每天都相信不用多久,就会升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰,想想还有点小激动~~~~ 直到后来发生了邮箱事件,我竟然忘了给邮箱密 ...
随机推荐
- bootstrap-wysiwyg 结合 base64 解码 .net bbs 图片操作类 (二) 图片裁剪
图片裁剪参见: http://deepliquid.com/projects/Jcrop/demos.php?demo=thumbnail 一个js插件 http://www.mikes ...
- Swift编程语言学习12 ——实例方法(Instance Methods)和类型方法(Type Methods)
方法是与某些特定类型相关联的函数.类.结构体.枚举都能够定义实例方法:实例方法为给定类型的实例封装了详细的任务与功能.类.结构体.枚举也能够定义类型方法:类型方法与类型本身相关联.类型方法与 Obje ...
- TDD(测试驱动开发)学习一:初识TDD
首先说一下名词解释,TDD,英文名称Test-Driven Development,中文名称测试驱动开发,简单的断下句“测试/驱动/开发”,简单的理解一下,就是测试驱动着开发,大白话就是说用一边测试一 ...
- C# 通过ImportNode AppendChild方法合并XmlDocument,XML转为DataTable
var doc1 = new XmlDocument(); var doc2 = new XmlDocument(); XmlNode root1 = doc1.DocumentElement; do ...
- Codeforces 527C Glass Carving(Set)
意甲冠军 片w*h玻璃 其n斯普利特倍 各事业部为垂直或水平 每个分割窗格区域的最大输出 用两个set存储每次分割的位置 就能够比較方便的把每次分割产生和消失的长宽存下来 每次分割后剩下 ...
- 在 VS2013的ASPNET站点开发中用 xheditor v1.1.13 作为HTML编辑器
要用vs2013开发一个博客站点,.net framework 4,须要一个HTML编辑器作为写文章的工具.经多方试用,排除了dotnettextbox.kceditor.认为xheditor ...
- js 拖拽实现
代码参考 <!DOCTYPE html> <html lang="en"> <title>拖拽</title> <head&g ...
- cocos2dx对于强大的RichText控制
最近准备做一个聊天系统,开始准备使用cocos2dx的UIRichText控制显示屏聊天,在使用中发现的结果,cocos2dx的RichText很有限.全然不具备实现聊天的功能.仅仅实现了增加文本.图 ...
- 【Android中Broadcast Receiver组件具体解释
】
BroadcastReceiver(广播接收器)是Android中的四大组件之中的一个. 以下是Android Doc中关于BroadcastReceiver的概述: ①广播接收器是一个专注于接收广播 ...
- shell 水平测试
http://bbs.chinaunix.net/thread-476260-1-1.html 版权声明:本文博客原创文章,博客,未经同意,不得转载.