[转]Asp.Net 网站多语言解决方案
本文转自:https://www.cnblogs.com/FredTang/archive/2013/01/23/2873231.html
最近领导要求实现PMSWeb应用程序的多区域语言的支持,所以在网搜集相关的信息,写出了解决方案文档,欢迎各位批评指正,谢谢!废话少说,进入正题:
多语言解决方案(2013年1月 济南)
目 录
1. 开发目的... 1
2. 实现的效果... 1
3. 方案1说明(Asp.Net内置公共资源文件+ExtJS)... 1
3.1. 概述... 1
3.2. 实现步骤... 1
3.3. 本方案总结... 4
4. 方案2(XML+JS)... 5
4.1. 概述:... 5
4.2. 实现步骤:... 5
4.3. 本方案总结... 7
1. 开发目的
为了使PMS系统适应国际化项目管理的正常运行,根据当前用户本地的语言、数据的习惯格式进行对系统进行本地化显示,满足用户的需求。
2. 实现的效果
PMS系统平台根据用户在登录时所选择的语言种类,对界面进行本地化显示。用户选择中文时,系统界面展示的语言为中文,如果用户选择英文时,则展示为英文。本地化内容具体包括:界面显示、提示信息、数据格式(日期、货币)。
3. 方案1说明(Asp.Net内置公共资源文件+ExtJS)
3.1. 概述
方案1采用.Net Framework2.0 公共资源文件(.resx)+ExtJS实现。为每个区域用户分别添加该区域的语言描述文件(默认语言.resx,中文.resx,英文.resx)。语言描述文件内容主要包括:关键字名称(key_name), 关键字值(key_value),其中关键字名称是唯一的。系统根据当前用户选择的区域语言,在相应的区域语言描述文件中获取界面显示信息。
3.2. 实现步骤
1) 获取当前用户的区域信息
用户在登录时选择语言种类。
PMS读取当前操作系统安装语言作为默认语言。
2) 建立区域语言资源文件
根据用户群体的需求,创建区域语言资源文件。
具体实现步骤:
- 在解决方案管理器中添加Asp.Net 文件夹“App_GlobalResources”。
在文件夹中添加资源文件,例如 lang.resx。
添加所要描述的键名称、键值。此文件为默认文件。
添加其他种类语言的描述文件,例如 英文(lang.en-US.resx)、中文(lang.zh-CN.resx),它们与默认文件的键名称相同,键值不同。如下图所示:
3) 设置Asp.Net 控件的文本显示方式,
设置举例如下:
标签控件(引用公共资源文件):
<asp:Label ID="lbl_global" runat ="server" Width ="600px" Text ="<%$Resources:lang,Message %>"></asp:Label>
按钮控件(引用本地资源文件):
<asp:Button ID= "btnMessage" runat= "server" OnClick= "btnMessage_Click" Text= "Message" meta:resourcekey= "btnMessageResource1" /> |
隐藏按钮(引用公共资源文件)
<asp:HiddenField ID= "hidLang" runat = "server" value= "<%=Resources.lang.Message %>" /> |
JavaScript变量引用:
var strLang="<%=Resources.lang.Message%>";
实现效果界面展示:
3.3. 本方案总结
优点:本方案实现简单,操作方便,安全性高。
对各种浏览器适应性高。
缺点: 部署后不易维护,需要重新编译。
数据信息无法分类,难护分类。
4. 方案2(XML+JS)
实现方案说明:
4.1. 概述:
本方案主要将区域语言描述数据存放在XML文件中,根据在XML文件中自定义的节点标志变量及标志变量的值,通过Javascript对XML文件进行读取操作。
4.2. 实现步骤:
Ø 设置区域语言初始标志
在Web.Config中,添加如下信息:
<appSettings> <add key= "Flag" value= "1" /> <!-- 0:中文; 1:英文--> </appSettings> |
Ø 系统获取区域语言标志
由于Javascript无法访问web.config文件,所以需要在Global.asax文件中Application_Start事件添加如下处理:
从Web.config 读取区域语言标志变量
将标志变量写入在指定的XML文件中,例如web.xml文件。
Ø 提取界面显示、提示信息区域语言描述信息,分别存入相对应的XML文件中,如中文.XML,英文.XML。格式如下所示:
英文:

<?xml version="1.0" encoding="utf-8" ?> <langShow> <formShow> <add key="Add" value="Add"></add> <add key="Delete" value="Delete"></add> <add key="ShowInfo" value="This is a test!"></add> </formShow> <alertmsg> <add key="FileNotExist" value="File isn't exist!"></add> <add key="DelInfo" value="Are you sure to delete this file?"></add> </alertmsg> </langShow>

中文:

<?xml version="1.0" encoding="utf-8" ?> <langShow> <formShow> <add key="Add" value="添加"></add> <add key="Delete" value="删除"></add> <add key="ShowInfo" value="这是一个测试用例"></add> </formShow> <alertmsg> <add key="FileNotExist" value="文件不存!"></add> <add key="DelInfo" value="请确认是否删除该文件?"></add> </alertmsg> </langShow>

Ø 根据区域标志,通过Javascript在对应的上述文件中读取显示信息。
界面效果显示如下图所示:
4.3. 本方案总结
优点:
资源文件维护方便,不用重新编译。
数据信息可以分类,便于维护。
缺点:
安全性差,用户可以直接打开资源文件。
适应性差。系统需要辨别不同的浏览器(IE,Firefox..)。
代码下载:
.Net 内置公共资源.zip js_xml_multiLang.zip
[转]Asp.Net 网站多语言解决方案的更多相关文章
- CGI、ASP、PHP、JSP、 ASP.NET网站开发语言比较
一.主流网站开发语言的简介及优缺点. 现在主流的网站开发语言主要包括cgi.asp.php.asp.net.jsp等. HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持. (一) ...
- ASP.NET MVC 多语言解决方案
1:打开VS,新建ASP.NET MVC4项目 2:创建一个放本地化资源的文件夹并命名为"Language",右键选择添加新项,选择资源文件并命名为"Com" ...
- ASP.NET 网站支持多语言
ASP.NET网站支持多语言 (本地资源文件和全局资源文件的调用及需注意的地方总结) 一. 本地资源文件(App_LocalResources): ①. 本地资源的生成及调用 1.本地 ...
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
EF+LINQ事物处理 在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...
- VS2010 Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)
步骤如下: 1. Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)" title="VS2010 Chart控件(一)Chart控件在ASP.NE ...
- ASP.NET MVC 多语言实现——URL路由
考虑实现一个完整的基于asp.net mvc的多语言解决方案,从路由到model再到view最后到数据库设计(先挖好坑,后面看能填多少). 我所见过的多语言做得最好的网站莫过于微软的msdn了,就先从 ...
- 搭建调用 WebService 的 ASP.NET 网站 (VS2010, C#)
[系统环境]Windows 7 / 2008r2 [软件环境]Visual Studio 2010 [开发语言]C# [感谢]本文是在 <C#开发和调用Web Service> 一文的基础 ...
- asp.net网站服务器搭建之从零开始
asp.net网站服务器搭建之从零开始 一 IIS(Internet Information Services)安装: 1.选择"控制面板". 2.点"添加或删除程序 ...
- ASP.NET网站优化(转自一位博友的文章,写的非常好)
不修改代码就能优化ASP.NET网站性能的一些方法 阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一 ...
随机推荐
- jenkins常用插件汇总
jenkins常用插件汇总: Build-timeout Plugin:任务构建超时插件 Naginator Plugin:任务重试插件 Build User Vars Plugin:用户变量获取插件 ...
- 关于ORACLE的字符窜存储(未完善,欢迎补充)
oracle中常见的用于存储字符串的数据类型有: 数据类型 是否定长 最多存储数 效率排行 备注 是否oracle特有 英文占位 中文占位 char 是 2000 比VARCHAR2稍高 char的长 ...
- 记录JavaScript中使用keyup事件做输入验证(附event.keyCode表)
input的blur事件 $("#input-name").blur(function () { var value = $(this).val(); if (value === ...
- 【文文殿下】Win7打开无线热点
下载程序 : https://files.cnblogs.com/files/Syameimaru/wifi.rar 打开config.ini 修改相关信息,然后运行程序. 运行成功后,打开网络和共享 ...
- poj3070矩阵快速幂求斐波那契数列
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13172 Accepted: 9368 Desc ...
- 读DEDECMS找后台目录有感
本文作者:红日安全团队——Mochazz 早上看了先知论坛的这篇文章:解决DEDECMS历史难题–找后台目录 不得不说作者思路确实巧妙,作者巧妙的利用了Windows FindFirstFile和织梦 ...
- [JS深入学习]——数组对象排序
(转) JavaScript实现多维数组.对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序. sort() 方法用于对数组的元素进行排序.语法如下: arrayObject. ...
- jmeter制造大批量的用户数据数据
需求:因测试需要,要造100w用户数据,通过用户名.手机号.密码可新增用户,其中用户名和电话号码要求100w用户不能重复 要点: 1.通过Bean shell Sampler实现用户名和手机号的足够随 ...
- python学习笔记02-编码
ASCII码 255个 每一个占1个字节 8位 解决中文的问题:出现一张扩展表 支持中文的第一张表 gb2312 后来发展为GBK1.0 Gb18030 万国码:unicode 世界统一 存 ...
- css style 标签可编辑
一次偶然在鑫大技术博客上发现 style 标签配合contenteditable 可编辑属性 实现动态编辑css 这里我就回顾了下 contenteditable 可编辑属性 (这个属性并无浏 ...