asp.net 实现多语言界面
来源:互联网 发布:淘宝三国杀主播店 编辑:程序博客网 时间:2024/06/05 05:40
最近看了朋友公司的项目,要求有中、英、日三种界面,他们是分别做三种不同的页面来实现的~~我看了吓倒了,这样的话,工作量也太大了吧!
其实在.Net里有很好的处理方式,那就是用资源文件。
用了资源文件,项目中不管要求多少种语言,只要做一个界面。其它的工作就只是翻译了。
先讲一下个人理解的原理:IE在访问的时候,服务器会取到访问的客户机的所在区域,也就是说用的是什么语言,这样返回的信息(如:日期)才会是相应的。
这个语言可以在IE--工具-选项-语言,中更改。
先在页面上放了几个BUTTON,其它的不用管它,编译通过后,点击:工具-生成本地资源,几秒后会发现,解决方案中多出了一个文件夹:App_LocalResources,且它包含了一个与页面同名的文件,不过扩展名是resx,它就是资源文件,打开它后,不难发现里面名称和值都是页面上控件的内容,
这里我们只要把它的值改一下,写些什么张三李四的就行了,现在远行页面,会发现控件已变成了张三李四了,并且页面上我们是没有任何设定的。
现在再回到IE的语言中,中国的代码是:zh-cn,英国:en-gb,那就用这两个国做例子。实现点张三时,显示中文,点李四时显示英文。
在VS中打开App_LocalResources,拖动先前自动生成的那个资源文件,取个名,如:Default.aspx.en-gb.resx,而默认那个则是:Default.aspx.resx
这里一定要注意命名的规范,注意看一下就知道为什么了。
现在打开Default.aspx.en-gb.resx,会发现它和Default.aspx.resx的内容是一样的(有点像费话,,),更改它,如把张三改成zhang,李四改成li,再编译。运行,如果IE的语言是中文的话,显示会是中文的,再把IE的语言改成英国。F5,看到的就是英文的了,呵呵,这样还没完。
现在要做到点张三为中文,点李四为英文,
到页面代码中重写InitializeCulture方法,加入以下代码:
转为中文:
其实在.Net里有很好的处理方式,那就是用资源文件。
用了资源文件,项目中不管要求多少种语言,只要做一个界面。其它的工作就只是翻译了。
先讲一下个人理解的原理:IE在访问的时候,服务器会取到访问的客户机的所在区域,也就是说用的是什么语言,这样返回的信息(如:日期)才会是相应的。
这个语言可以在IE--工具-选项-语言,中更改。
先在页面上放了几个BUTTON,其它的不用管它,编译通过后,点击:工具-生成本地资源,几秒后会发现,解决方案中多出了一个文件夹:App_LocalResources,且它包含了一个与页面同名的文件,不过扩展名是resx,它就是资源文件,打开它后,不难发现里面名称和值都是页面上控件的内容,
这里我们只要把它的值改一下,写些什么张三李四的就行了,现在远行页面,会发现控件已变成了张三李四了,并且页面上我们是没有任何设定的。
现在再回到IE的语言中,中国的代码是:zh-cn,英国:en-gb,那就用这两个国做例子。实现点张三时,显示中文,点李四时显示英文。
在VS中打开App_LocalResources,拖动先前自动生成的那个资源文件,取个名,如:Default.aspx.en-gb.resx,而默认那个则是:Default.aspx.resx
这里一定要注意命名的规范,注意看一下就知道为什么了。
现在打开Default.aspx.en-gb.resx,会发现它和Default.aspx.resx的内容是一样的(有点像费话,,),更改它,如把张三改成zhang,李四改成li,再编译。运行,如果IE的语言是中文的话,显示会是中文的,再把IE的语言改成英国。F5,看到的就是英文的了,呵呵,这样还没完。
现在要做到点张三为中文,点李四为英文,
到页面代码中重写InitializeCulture方法,加入以下代码:
if (Session["lan"] == null)
{
Session["lan"] = Request.UserLanguages[0];
}
string lan = Session["lan"].ToString();
Thread.CurrentThread.CurrentUICulture = new CultureInfo(lan);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lan);
这里是先取默认的语言,然后把当前语言设为这种语言,(如果Session空的话){
Session["lan"] = Request.UserLanguages[0];
}
string lan = Session["lan"].ToString();
Thread.CurrentThread.CurrentUICulture = new CultureInfo(lan);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lan);
转为中文:
Session["lan"] = "zh-cn";
Response.Redirect(Request.Url.PathAndQuery);
转为英文:Response.Redirect(Request.Url.PathAndQuery);
Session["lan"] = "en-gb";
Response.Redirect(Request.Url.PathAndQuery);
Response.Redirect(Request.Url.PathAndQuery);
- asp.net 实现多语言界面
- 在ASP.Net 2.0中实现多语言界面 C#
- Asp.net 多语言界面的实现方法...
- Asp.net 多语言界面的实现方法...
- asp.net 实现多语言
- 在ASP.Net 2.0中实现多语言界面的方法
- 在ASP.Net 2.0中实现多语言界面的方法
- 在ASP.Net 2.0中实现多语言界面的方法
- 在ASP.Net 2.0中实现多语言界面的方法
- 在ASP.NET 2.0中实现多语言界面的方法
- ASP.Net 中实现多语言界面的方法(2.0以上版本)
- 在ASP.Net 2.0中实现多语言界面的方法
- 在ASP.Net 2.0中实现多语言界面的方法
- 在ASP.Net 2.0中实现多语言界面的方法
- 在ASP.Net 2.0中实现多语言界面的方法
- 在ASP.Net 2.0中实现多语言界面的方法及多语言区域代码对应表
- asp.net 2.0实现多语言(一)
- asp.net 2.0实现多语言(二)
- 窗口间的传值
- HTML一些基本代码
- JavaScript 处理图片相关操作
- 三位在微软亚洲工程院实习生的实习报告
- OpenMAX大意(四) OpenMAX组件
- asp.net 实现多语言界面
- C#读写XML(1)
- linux系统下线程的编写
- EPA工业测控网络的时钟同步分析与改进
- 2008.10.07 多云
- warning C4482: 使用了非标准扩展: 限定名中使用了枚举
- 在C#中操作XML
- js获取下拉框(DropDownList)当前值
- java异常处理