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,迎娶白富美,走上人生巅峰,想想还有点小激动~~~~ 直到后来发生了邮箱事件,我竟然忘了给邮箱密 ...
随机推荐
- [CLR via C#]1.2 将托管模块合并成程序集
原文:[CLR via C#]1.2 将托管模块合并成程序集 1.CLR是不和托管模块一起工作的,CLR是和程序集一起工作的. 2. 程序集是一个或多个托管模块/资源文件的逻辑性分组. 3. 程序 ...
- Linux学习笔记——怎样在交叉编译时使用共享库
0.前言 在较为复杂的项目中会利用到交叉编译得到的共享库(*.so文件).在这样的情况下便会产生下面疑问,比如: [1]交叉编译时的共享库是否须要放置于目标板中,假设须要放置在哪个文件 ...
- MVC页面声命周期
MVC页面声命周期 ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期 开篇:上一篇我们了解了所谓的请求处理管道,在众多的事件中微软开放了19个重要的事件给我们, ...
- [Unity-7] Update和FixedUpdate
1.Update和FixedUpdate这是Unity既用内提供的帧功能接口相关联. Update():这个函数里面的内容每一帧都会被运行一次.这个函数有一个特点,那就是运行的频率等于帧率.而这个帧率 ...
- C# Winform 界面线程的Invoke死锁,以及Application.DoEvent的问题
1.对于非界面线程来说,Invoke是把一个操作丢到界面线程的队列里,然后阻塞,等到这个操作被界面线程完成后,才继续后续操作.也就是说,Invoke是同步的. 问题来了,如果界面线程此时正在等待这个非 ...
- 原生JavaScript生成GUID的实现
GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成GUID的API.生成算法很有意思,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可 ...
- ie6、ie7真的不支持inline-block吗?
本来今天想出JavaScript继承的博文的,由于也才刚学习不久,以及工作比较忙,所以暂推两天写JavaScript的继承,喜欢的童鞋们关注我的博客哟! okay,言归正传.之前在接触前端的时候,处理 ...
- 异步提交form的时候利用jQuery validate实现表单验证
异步提交form的时候利用jQuery validate实现表单验证相信很多人都用过jquery validate插件,非常好用,并且可以通过下面的语句来自定义验证规则 // 电话号码验证 ...
- 提高C#编程水平的50个要点 你掌握了多少呢?
提高C#编程水平的50个要点,程序员都是追求极致的完美主义者,下面的这些注意点和要点,你都掌握运用了多少呢? 总是用属性(Property)来代替可访问的数据成员 在 readonly 和 const ...
- [译]Java垃圾回收是如何工作的
说明:这篇文章来翻译来自于Javapapers 的How Java Garbage Collection Works 这部分教程是为了理解Java垃圾回收的基础以及它是如何工作的.这是垃圾回收系列教程 ...