ASP.NET 网站支持多语言
ASP.NET网站支持多语言
(本地资源文件和全局资源文件的调用及需注意的地方总结)
一、 本地资源文件(App_LocalResources):
①、 本地资源的生成及调用
1、本地资源的VS自动生成方法:
将页面调整到【设计】视图,然后在VS2008菜单栏中
【工具】=》【生成本地资源】即可生成该页面的资源文件,在App_LocalResources文件夹中可查看。eg:Default2.aspx.resx
2、本地资源的手动生成方法:
选中网站=》添加新项=》然后选择【资源文件】即可创建一个资源文件,但是此时可以看到刚刚创建的资源文件.resx存放在App_GlobalResources文件夹中,当前为全局资源文件,需要在网站中创建一个名为App_LocalResources的文件夹(即本地资源文件夹)然后将刚刚创建的全局资源文件拖到当前文件夹中即可,然后在调用的时候需要在控件中添加meta:resourcekey=”资源键” 代码,具体在调用中讲解。
3、本地资源的调用:
(1)、服务器控件
1.1、前台隐示使用本地化资源,VS2008自动生成本地资源在控件中就会自动包含meta:resourcekey=”资源键” 代码,如果某控件未扫描到则就不会有该代码标识需要手动添加此代码
eg:
<asp:Label ruant=”server” ID=”lbl_msg” meta:resourcekey=”lbl_msg” ></asp:Label>
1.2、前台显示使用本地化资源
eg:
<asp:Label ruant=”server” ID=”lbl_msg”
Text=”<%$ Resources: lbl_msg .Text %>”
ToolTip=”<%$ Resources: lbl_msg .ToolTip %>”
></asp:Label>
蓝色图标和红色图标表示绑定数据形式(显示/隐示),如下图示:
1.3、后台编码时使用本地化资源
方法一:
//后台通过资源键来获取资源值,然后赋值给页面对象
this.txtbox1.Text=(string)GetLocalResourceObject("资源键");
或
this.txtbox1.Text=(string)HttpContext.GetLocalResourceObject("资源文件名", "资源键");
(2)、非服务器控件(HTML控件,input …):
1.1、html控件或input控件都无法自动生成资源文件,需要手动添加meta:resourcekey=”资源键” 标记,并将其添加到资源文件中,但必须注意的是控件中必须添加服务器标识属性,即:runat=”server”
eg:
<input id=”txt_msg” type=”text” meta:resourcekey=” txt_msg” />
测试结果:无法显示资源txt_msg值,将其修改如下:
<input id=”txt_msg” type=”text” meta:resourcekey=”txt_msg” runat="server" />
测试结果:正常显示资源txt_msg值
②、注意事项:
1、 每个页面必须包含一个默认的本地资源文件,(资源文件名和页面文件名区别在于资源文件名是在页面文件名(包含文件的后缀)基础上添加一个.resx后缀)
eg:index.aspx.resx。
默认的本地资源文件的作用:当其他本地资源文件,eg:index.aspx.en-US.resx 或…资源文件中未包含某键,而默认的本地资源文件中包含某键,则从默认的本地资源文件中取值。
2、 如果页面需要支持多语言则可以复制默认的本地资源文件,然后修改其文件名称
eg:index.aspx.en-US.resx(英文)
然后将index.aspx.en-US.resx中的键值修改为英文即可
3、 1)如果需要将所有的页面都使用同一种语言则可以配置web.config文件,前提将页面Page指令中的culture="auto" uiCulture="auto" 删除,否则首先使用页面中的语言形式
eg:
<system.web>
<!—en-US(英文),zh-CN(中文) …
UICulture - 针对用户界面的安钮之类的控件显示
Culture - 决定各种数据类型是如何组织,如数字与日期,货币
-->
<globalization culture="en-US" uiCulture="en-US"/>
</system.web>
2)如果某个页面和其他的页面使用的语言不同,则可以在某个页面Page命令中设置culture和uiCulture, 这两个属性的作用是使页面优先跟据浏览器的语言设置自动加载相应语言的资源文件等显示方式
eg:
<%@ Page culture="zh-CN" uiCulture="zh-CN" %>
4、 如果想在页面后台(即.cs文件)通过传递参数的方式设置使用的语言,则
eg:
命名空间引用:
using System.Threading;
using System.Globalization;
protected override void InitializeCulture()
{
string culture = Request.QueryString[“culture”].ToString();
if (culture != "")
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
}
else
{
//默认中文
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("zh-CN");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN");
}
base.InitializeCulture();
}
通过传递编码参数的方式,进行重写InitializeCulture (初始化语言方法)来改变页面语言显示方式。
5、 本地资源文件只能在本页面调用,不能被其他页面调用,假如有两个页面Index1.aspx和Page 2.aspx则,如下资源文件
eg:Index1.aspx.resx
Page2.aspx.resx
Index1.aspx页面不能调用Page 2.aspx.resx中的资源键值;
Page 2.aspx页面也不能调用Index1.aspx.resx中的资源键值;
Index1.aspx页面只能调用Index1.aspx.resx中的资源键值;
Page 2.aspx页面只能调用Page 2.aspx.resx中的资源键值;
二、 全局资源文件(App_GlobalResources):
① 、全局资源的生成及调用
1、全局资源的手动生成方法:
选中网站=》添加新项=》然后选择【资源文件】即可创建一个资源文件,但是此时可以看到刚刚创建的资源文件.resx存放在App_GlobalResources文件夹中,当前为全局资源文件.
2、前台全局资源文件的调用:
1)、在需要调用的控件中添加<%$ Resources : 资源文件名,资源键 %>
eg:
<asp:Label ID="lbl_global" runat ="server" Text ="<%$ Resources:lang,lbl_global %>">
</asp:Label>
2)、前台页面级JavaScript中调用全局资源文件方法:
<%= Resources .资源文件名 . 资源键 %>
eg:
<script>
var msg=” <%= Resources . lang . lbl_global %>”
</script>
3、后台全局资源文件的调用:
1)、在后台直接使用Resources .资源文件名 .资源键 方可获取资源值
eg:
this. lbl_global.Text=Resources . lang . lbl_global ;
//后台获取image类型对象
System.Drawing.Bitmap imgJpg= Resources.lang.img_jpg
2)、
//后台通过资源键来获取资源值,然后赋值给页面对象
this.lbl_global.Text=(string)GetGlobalResourceObject ("资源键");
或
this.lbl_global.Text=(string)HttpContext.GetGlobalResourceObject("资源文件名", "资源键");
3)、后台使用 ResourceManager类来获取资源
ResourceManager rm = new ResourceManager(Resource1.ResourceManager.BaseName,
Assembly.GetExecutingAssembly());
string str=rm. GetString(“资源键”);
② 注意事项:
1、全局的资源文件,存放在App_GlobalResources文件夹中,以.resx为后缀,首先必须添加一个默认的全局资源文件
eg:lang.resx。
默认的全局资源文件的作用:①、当其他全局资源文件,eg:lang.en-US.resx 或lang.zh-CN.resx等 资源文件中未包含某键,而默认的全局资源文件中包含某键,则从默认的全局资源文件中取值;②、资源调用时只能通过默认的资源文件名去调用,即
Resources . lang . 资源键 (正确√)
而不能使用
Resources . lang . en-US . 资源键; (错误×)
lang.en-US.resx 或lang.zh-CN.resx 只是根据使用的语言不同来自动调用
2、全局资源文件可以在本网站的所有页面中调用。
其他需要注意的地方和本地资源差不多,这里就不重复讲解。
以上是我对本地资源和全局资源的理解, 如果有错误的地方请各位大神给予指导。^.^
※未解决的问题:
无法实现外部Javascript中调用资源的问题,如果各位大神有好的解决办法,麻烦分享下噢,谢谢哈!
※关于网站支持多语言问题相关文章:
http://www.cnblogs.com/FredTang/archive/2013/01/23/2873231.html
http://www.cnblogs.com/wenjl520/archive/2010/10/17/1853367.html
http://www.cnblogs.com/lansetiankong/archive/2010/07/30/1788790.html
http://www.cnblogs.com/winsonet/archive/2010/09/08/1821107.html
多语言资源文件制作工具:
http://www.cnblogs.com/LifelongLearning/archive/2010/07/04/1771019.html
ASP.NET 网站支持多语言的更多相关文章
- 让asp.net网站支持多语言,使用资源文件
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs&quo ...
- VS2010 Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)
步骤如下: 1. Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)" title="VS2010 Chart控件(一)Chart控件在ASP.NE ...
- asp.net core 实现支持多语言
asp.net core 实现支持多语言 Intro 最近有一个外国友人通过邮件联系我,想用我的活动室预约,但是还没支持多语言,基本上都是写死的中文,所以最近想支持一下更多语言,于是有了多语言方面的一 ...
- 搭建调用 WebService 的 ASP.NET 网站 (VS2010, C#)
[系统环境]Windows 7 / 2008r2 [软件环境]Visual Studio 2010 [开发语言]C# [感谢]本文是在 <C#开发和调用Web Service> 一文的基础 ...
- 在Windows系统搭建.NET Core环境并创建运行ASP.NET网站
微软于6月27日在红帽DevNation峰会上 正式发布了.NET Core 1.0.ASP.NET 1.0和Entity Framework Core 1.0,其将全部支持Windows.OS X和 ...
- 让你的.NET程序支持多语言
辛辛苦苦做出来的软件,我们当然希望能让更多的人用,支持多语言是必须的.下面我将以Asp.net Web Form为例来介绍如何支持多语言.其他程序比如windows程序,过程都是大同小异的. 大概分以 ...
- NET Core环境并创建运行ASP.NET网站
kungge 在Windows系统搭建.NET Core环境并创建运行ASP.NET网站 微软于6月27日在红帽DevNation峰会上 正式发布了.NET Core 1.0.ASP.NET 1.0和 ...
- FineUIPro中如何支持多语言(全局资源文件和本地资源文件)
一个客户在邮件中问到了FineUIPro的多语言实现问题,其实 FineUIPro 并没有对此做特殊处理,因此直接使用 ASP.NET 原生支持的资源文件就能实现. 下面我们就以FineUIPro的空 ...
- 【转】windows下nginx+mono+fastCGI部署asp.net网站
原文链接:http://www.cnblogs.com/amityat/archive/2011/08/23/2150153.html 1,什么是nginx 简介Nginx ("engine ...
随机推荐
- webpack学习之入门实例
webpack:前端打包神器,目前活跃度甚至超过了gulp.grunt等,使用webpack打包,简单快速,下面记录下webpack环境搭建以及基本使用: 1.首先新建一个空白目录,用于项目根目录,比 ...
- Eclipse连接到My sql数据库的操作总结/配置数据库驱动
Eclipse连接到MYSQL数据库的操作 (自己亲测,开始学习Eclipse(我的Eclipse版本是4.5.2,Jdbc驱动器的jar包版本是5.1.7,亲测可以使用)连接到数据库的时候,发现网上 ...
- [ShareSDK for Android]新浪微博常见问题
一.新浪sso授权报错sso package or sign error 1. 新浪微博开放平台应用没有审核通过,不能用sso登陆,否则报错.关闭sso登陆Platform platform = Sh ...
- 使用Nginx负载均衡搭建高性能.NETweb应用程序一
一.遇到的问题 当我们用IIS服务器部署了一个web应用以后,当很多用户高并发访问的时候,客户端响应就会很慢,客户的体验就会很差,由于IIS接受到客户端请求的 时候,就会创建一个线程,当线程达到几千个 ...
- Swift入门篇-基本类型(2)
现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 .他们这种对新知识的探索精神我本人是很佩服的.但是 ...
- RESTful 接口规范
原文地址:http://www.coderli.com/translate-restful-standard-resolved OneCoder最近一直在使用Restful API,最近正好看到一篇自 ...
- [Java] 解决spring的xml标签内不能自由增加说明的难题,方便调试、部署时进行批量屏蔽
作者:zyl910 以往我们想在spring的xml配置文件中增加说明文本时,只能使用xml注释(<!-- 注释 -->).这对于"调试.部署时想批量屏蔽部分bean" ...
- Jmeter报告优化之New XSL stylesheet
Jmeter默认的报告展示的信息比较少,如果出错了,不是很方便定位问题.由Jmeter默认报告优化这篇文章可知,其实由.jtl格式转换为.html格式的报告过程中,style文件起了很关键的作用.下面 ...
- 【转载】UEditor前端配置项说明
UEditor 的配置项分为两类:前端配置项 和 后端配置项 后端配置项具体看这个文档L:后端配置项说明 本文档介绍如何通过设置前端配置项,定制编辑器的特性,配置方法主要通过修改ueditor.con ...
- BarEditItem ContentTemplate
<dxb:BarEditItem Name="txtSearch" > <dxb:BarEditItem.ContentTemplate> <Data ...