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:langlbl_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 网站支持多语言的更多相关文章

  1. 让asp.net网站支持多语言,使用资源文件

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs&quo ...

  2. VS2010 Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)

    步骤如下: 1. Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)" title="VS2010 Chart控件(一)Chart控件在ASP.NE ...

  3. asp.net core 实现支持多语言

    asp.net core 实现支持多语言 Intro 最近有一个外国友人通过邮件联系我,想用我的活动室预约,但是还没支持多语言,基本上都是写死的中文,所以最近想支持一下更多语言,于是有了多语言方面的一 ...

  4. 搭建调用 WebService 的 ASP.NET 网站 (VS2010, C#)

    [系统环境]Windows 7 / 2008r2 [软件环境]Visual Studio 2010 [开发语言]C# [感谢]本文是在 <C#开发和调用Web Service> 一文的基础 ...

  5. 在Windows系统搭建.NET Core环境并创建运行ASP.NET网站

    微软于6月27日在红帽DevNation峰会上 正式发布了.NET Core 1.0.ASP.NET 1.0和Entity Framework Core 1.0,其将全部支持Windows.OS X和 ...

  6. 让你的.NET程序支持多语言

    辛辛苦苦做出来的软件,我们当然希望能让更多的人用,支持多语言是必须的.下面我将以Asp.net Web Form为例来介绍如何支持多语言.其他程序比如windows程序,过程都是大同小异的. 大概分以 ...

  7. NET Core环境并创建运行ASP.NET网站

    kungge 在Windows系统搭建.NET Core环境并创建运行ASP.NET网站 微软于6月27日在红帽DevNation峰会上 正式发布了.NET Core 1.0.ASP.NET 1.0和 ...

  8. FineUIPro中如何支持多语言(全局资源文件和本地资源文件)

    一个客户在邮件中问到了FineUIPro的多语言实现问题,其实 FineUIPro 并没有对此做特殊处理,因此直接使用 ASP.NET 原生支持的资源文件就能实现. 下面我们就以FineUIPro的空 ...

  9. 【转】windows下nginx+mono+fastCGI部署asp.net网站

    原文链接:http://www.cnblogs.com/amityat/archive/2011/08/23/2150153.html 1,什么是nginx 简介Nginx ("engine ...

随机推荐

  1. 【UML】UML基础知识

    UML简介     统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述.可视化处理.构造和建立软件系统制品的文档.     它记录了对必须构造的系统的决定和理解,可用于对系统的理解. ...

  2. paip.提升效率--数据绑定到table原理和流程Angular js jquery实现

    paip.提升效率--数据绑定到table原理和流程Angular js  jquery实现 html #--keyword 1 #---原理和流程 1 #----jq实现的代码 1 #-----An ...

  3. Tamper Data

    一款可以修改表单的火狐浏览器插件

  4. js 停止事件冒泡 阻止浏览器的默认行为(阻止超连接 # )

    在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到“停止事件冒泡”和“阻止浏览器默认行为”. 1..停止事件冒泡 JavaScript代码 //如果提供了事件对象,则这是一个非IE浏览器if ( ...

  5. android: 内容提供器简介

    我们学了 Android 数据持久化的技术,包括文件存储.SharedPreferences 存 储.以及数据库存储.不知道你有没有发现,使用这些持久化技术所保存的数据都只能在当 前应用程序中访问.虽 ...

  6. git stash恢复

    今天下午在使用Git命令进行代码管理时,因为自己一时疏忽直接把自己一天的劳动成果给弄丢了,这还了得,吓死宝宝了.真的,相信有代码丢失的朋友肯定能体会我当时的心情,不能体会我心情的那就祝你们也丢次代码, ...

  7. Visual Studio 2012完美的拥抱GitHub

    详情请查看http://www.aehyok.com/Blog/Detail/73.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链 ...

  8. Imagick总结及反思

    2014-08-23 今天安装Imagick出现了很多问题,自己也有些着急,以下为各版本信息: ImageMagick: 安装版本:ImageMagick-6.5.8-Q16 安装目录:E:/PHPS ...

  9. Qt 调试时的错误——Debug Assertion Failed!

    在VS2008中写qt程序时调试出现此问题,但在release模式下就不存在,在网上搜罗了一圈,是指针的问题. 问题是这样的: 需要打开两个文件,文件中数据类型是float,我使用QVector进行保 ...

  10. SVO实时全局光照:Sparse Voxel Octree based Global Illumination (SVO GI)

    功能已实现,初步集成进来,暂未进行重度优化.但GI的效果已很明显.这里特地给出了开启实时GI前后的效果对比,比对场景如下:1.只有直接光照(方向光源)的场景.2在直接光照(方向光源)基础上开启了实时G ...