ASP.NET网站实现中英文转换(本地化资源)
2014-11-26 17:45
489 查看
主要内容:
1. 简单例子
2. 进一步认识Localization
3. 语言转换
4. 解决方案
一. 简单例子
1、下面通过一个简单的例子来实现本地化是那么的简单,首先我们打开Visual Studio 2010,新建一个名叫【中英文转换】的工程(名字就无关紧要了,随你喜欢~~),如下所示:
<asp:Button ID="Button2" runat="server" Text="<%$ resources: global, StrContent%>
于是我们会得到以下的效果,可以看出资源已绑定到控件上。
this.Button2.Text = Resources.global.StrContent;
![](http://images.cnitblog.com/blog/679260/201411/261744560749313.png)
另外,资源文件除了可以存放一些字符串之外,还可以存放图片,声频,文件等等,
三. 语言设置
大家是否觉得如果每次都要去Internet选项来进行语言的选择会很麻烦,那么如何在自己 的项目中设置要显示某一种语言呢?很简单,通常我们有三种途径。首先需要讲两个属性,
一个是Culture,这个决定各种数据类型是如何组织,如数字与日 期;
另一个是UICulture,这个就决定了采用哪一种本地化资源,也就是使用哪种语言。详细请看MSDN~~~
1. 在具体页面进行设置
如上,由于将UICulture和Culture属性都设置成auto,.NET4.0会根据你的Internet语言选项来确定加载哪些资源文件,当然你也可以将UICulture和Culture都设置成"en-us",那么这张页面所加载 的就是英文的资源文件了。不过这样写很麻烦,每一张页面都要写,太繁琐了,于是我们可以在web.config里面设置我们所要的语言。
2. 在web.config里面进行设置
通过这样设置,项目中的全部页面就会自动加载英文资源文件了,但要注意的一点是,如果在页面 中也设置了UICulture和Culture属性,那么它将覆盖web.config里面的设置。例如某张页面的这两个属性设为"zh-cn",那么这 张页面将显示中文而不是英文。但还是觉得不好,因为页面要加载的语言文件都写死了,不灵活。
3. 在代码里面进行设置
在程序代码里面进行设置,重载页面的InitializeCulture事件,注意在代码里的语言设置,会覆盖页面的HTML属性或者web.config的设置。上述的Request.UserLanguages[0]是获取Internet语言选项的第一种语言代码。
四. 解决方案
经过上述的初步和进一步的认识,相信大家已经理解了Localization的原理以及实现方法,但真要在我们的系统中实现多语言,实现本地化,我们应该怎样来架构呢?
通常我们为了减少重复代码,我们一般是建立一个基页面PageBase类,让所有的页面都继 承基页面,在基页面重写InitializeCulture事件,而用户所选择的语言我们可以储存在 Session,Cookie,QueryString或者.NET4.0提供的profile里面。 下面我们以存储在Session为例,构建我们的基页面,为简单起见,我只是通过一个按钮来选择语言:
主页面:
![](http://images.cnitblog.com/blog/679260/201411/261744576845555.png)
BasePage.cs
Index.aspx
中英文转换——附件
作者:827969653
1. 简单例子
2. 进一步认识Localization
3. 语言转换
4. 解决方案
一. 简单例子
1、下面通过一个简单的例子来实现本地化是那么的简单,首先我们打开Visual Studio 2010,新建一个名叫【中英文转换】的工程(名字就无关紧要了,随你喜欢~~),如下所示:
<asp:Button ID="Button2" runat="server" Text="<%$ resources: global, StrContent%>
于是我们会得到以下的效果,可以看出资源已绑定到控件上。
this.Button2.Text = Resources.global.StrContent;
![](http://images.cnitblog.com/blog/679260/201411/261744560749313.png)
另外,资源文件除了可以存放一些字符串之外,还可以存放图片,声频,文件等等,
三. 语言设置
大家是否觉得如果每次都要去Internet选项来进行语言的选择会很麻烦,那么如何在自己 的项目中设置要显示某一种语言呢?很简单,通常我们有三种途径。首先需要讲两个属性,
一个是Culture,这个决定各种数据类型是如何组织,如数字与日 期;
另一个是UICulture,这个就决定了采用哪一种本地化资源,也就是使用哪种语言。详细请看MSDN~~~
1. 在具体页面进行设置
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="中英文转换.Index" culture="auto" meta:resourcekey="PageResource1" uiculture="auto" %>
如上,由于将UICulture和Culture属性都设置成auto,.NET4.0会根据你的Internet语言选项来确定加载哪些资源文件,当然你也可以将UICulture和Culture都设置成"en-us",那么这张页面所加载 的就是英文的资源文件了。不过这样写很麻烦,每一张页面都要写,太繁琐了,于是我们可以在web.config里面设置我们所要的语言。
2. 在web.config里面进行设置
<?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配置 ASP.NET 应用程序的详细消息,请访问 http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <globalization culture="en-us" uiCulture="en-us"/> </system.web> </configuration>
通过这样设置,项目中的全部页面就会自动加载英文资源文件了,但要注意的一点是,如果在页面 中也设置了UICulture和Culture属性,那么它将覆盖web.config里面的设置。例如某张页面的这两个属性设为"zh-cn",那么这 张页面将显示中文而不是英文。但还是觉得不好,因为页面要加载的语言文件都写死了,不灵活。
3. 在代码里面进行设置
using System.Globalization; using System.Threading; // Set the culture to the browser's accept language Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]); // Set the user interface culture to the browser's accept language Thread.CurrentThread.CurrentUICulture = new CultureInfo(Request.UserLanguages[0]);
在程序代码里面进行设置,重载页面的InitializeCulture事件,注意在代码里的语言设置,会覆盖页面的HTML属性或者web.config的设置。上述的Request.UserLanguages[0]是获取Internet语言选项的第一种语言代码。
四. 解决方案
经过上述的初步和进一步的认识,相信大家已经理解了Localization的原理以及实现方法,但真要在我们的系统中实现多语言,实现本地化,我们应该怎样来架构呢?
通常我们为了减少重复代码,我们一般是建立一个基页面PageBase类,让所有的页面都继 承基页面,在基页面重写InitializeCulture事件,而用户所选择的语言我们可以储存在 Session,Cookie,QueryString或者.NET4.0提供的profile里面。 下面我们以存储在Session为例,构建我们的基页面,为简单起见,我只是通过一个按钮来选择语言:
主页面:
![](http://images.cnitblog.com/blog/679260/201411/261744576845555.png)
BasePage.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Threading; using System.Globalization; namespace 中英文转换 { public class BasePage : System.Web.UI.Page { /// <summary> /// 重写InitializeCulture()方法实现 本地化资源 /// </summary> protected override void InitializeCulture() { base.InitializeCulture(); // 用Session来存储语言信息 if (Session["PreferredCulture"] == null) Session["PreferredCulture"] = Request.UserLanguages[0]; string UserCulture = Session["PreferredCulture"].ToString(); if (UserCulture != "") { //根据Session的值重新绑定语言代码 Thread.CurrentThread.CurrentUICulture = new CultureInfo(UserCulture); Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(UserCulture); } } } }
Index.aspx
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Threading; using System.Globalization; namespace 中英文转换 { public partial class Index : BasePage { protected void Page_Load(object sender, EventArgs e) { Button2.Text = Resources.global.StrContent; } protected void RadioBtnList_SelectedIndexChanged(object sender, EventArgs e) { btnCov.Text = "转换成—"+RadioBtnList.SelectedItem.Text; } protected void btnCov_Click(object sender, EventArgs e) { Session["PreferredCulture"] = RadioBtnList.SelectedValue.ToUpper(); if (Session["PreferredCulture"].ToString().ToUpper() == "EN-US") Session["PreferredCulture"] = "en-us"; else if (Session["PreferredCulture"].ToString().ToUpper() == "ZH-CN") Session["PreferredCulture"] = "zh-cn"; //重定向页面 Response.Redirect(Request.Url.PathAndQuery);
} } }
中英文转换——附件
作者:827969653
相关文章推荐
- ASP.NET网站实现中英文转换(本地化资源)
- ASP.NET网站实现中英文转换(本地化资源)
- ASP.NET网站实现中英文转换(本地化资源),转
- ASP.NET网站实现中英文转换(本地化资源)
- ASP.NET网站实现中英文转换(本地化资源)
- ASP.NET网站实现中英文转换(本地化资源)
- 【转】ASP.NET网站实现中英文转换…
- https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
- 解析Asp.net中资源本地化的实现
- ASP网站实现中英文版的转换
- https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
- [转载]解析Asp.net中资源本地化的实现
- 【转】https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
- ASP.NET : 一个网站繁体转换的简单实现
- [转载]解析Asp.net中资源本地化的实现
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
- 从Asp.net实现资源全球化和本地化
- https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
- Asp.net中使用资源文件实现网站多语言