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 ...
随机推荐
- [读书笔记]C#学习笔记五: C#3.0自动属性,匿名属性及扩展方法
前言 这一章算是看这本书最大的收获了, Lambda表达式让人用着屡试不爽, C#3.0可谓颠覆了我们的代码编写风格. 因为Lambda所需篇幅挺大, 所以先总结C#3.0智能编译器给我们带来的诸多好 ...
- paip.log4j兼容linux windows 路径设置
paip.log4j兼容linux windows 路径设置 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog ...
- LLVM和GCC的区别
最近在Mac OS X Mountain Lion下用Xcode进行开发,发现在编译选项里有如下所示的这两种编译器:一个是Apple LLVM compiler 4.2,另外一个是LLVM GCC 4 ...
- vue.js(二)
一个实例: html: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset= ...
- Windows Server 安装 BitLocker
打开PowerShell(管理员): C:\> Install-WindowsFeature BitLocker -Restart 安装好后,系统会自动重新启动. Windows Server ...
- Mac OS X 系统12个常用的文本编辑快捷键(移动、选中)
经常和文字处理打交道?如果多多使用下面这 12 个快捷键,在移动.选择.复制等操作文字时效率会大大提升. 6 个移动光标的快捷键第一组快捷键可以用来在文本中快速移动光标: 跳到本行开头 – Comma ...
- navigationBar设置透明
//设置全透明方式 一.完全不用图片(iOS7之后有效)[self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBar ...
- 多层嵌套对象无法使用gson反序列化的问题The JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@3bf13cde failed to de
http://www.oschina.net/question/1256646_123691 http://bbs.csdn.net/topics/360005140 http://stackover ...
- C# Bitmap类型与Byte[]类型相互转化
Bitmap => byte[] Bitmap b = new Bitmap( "test.bmp "); MemoryStream ms = new Memory ...
- PIC24FJ64GB002 with bluetooth USB dongle
PIC24FJ64GB002 with bluetooth USB dongle I will explain my project (how to control a bluetooth USB d ...