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. Atitit..文件上传组件选型and最佳实践总结(2)----断点续传

    Atitit..文件上传组件选型and最佳实践总结(2)----断点续传 1. 断点续传的原理 1 2. 如何判断一个插件/控件是否支持断点续传?? 1 3. 常用的组件选型结果::马 1 4. 自定 ...

  2. atitit.提升软件开发的效率and 质量的那些强大概念and方法总结

    atitit.提升软件开发的效率and 质量的那些强大概念and方法总结 1. 主流编程中三个最糟糕的问题 1 1.1. 从理解问题后到实现的时间很长 1 1.2. 理解和维护代码  2 1.3. 学 ...

  3. CSS3参考手册

    很好用的CSS3 API http://www.css88.com/book/css/

  4. 轻松了解Spring中的控制反转和依赖注入(二)

    紧接上一篇文章<轻松了解Spring中的控制反转和依赖注入>讲解了SpringIOC和DI的基本概念,这篇文章我们模拟一下SpringIOC的工作机制,使我们更加深刻的理解其中的工作. 类 ...

  5. Struts2入门3 深入学习

    Struts2入门3 深入学习 处理结果和异常 前言: Struts学习的差不多了,还有最后的一点就收官了就是结果处理和异常处理.前面学习Struts主要围绕就是Action以及struts.xml配 ...

  6. 代码大全 MSIL语言程序设计

    .NET平台的编译器会将高级语言(C#,VB.NET,F#)编译成MSIL(微软中间语言)格式.熟悉MSIL语言,可以读懂一些加密程序混淆过的算法,这些算法几乎不能还原成高级语言,但是可以还原成MSI ...

  7. php-fpm.conf 重要参数 max_children 和 request_terminate_timeout(转)

    php-fpm.conf有两个至关重要的参数:一个是”max_children”,另一个是”request_terminate_timeout”我的两个设置的值一个是”40″,一个是”900″,但是这 ...

  8. use IFS in bash

    function dfd() { #http://www.cnblogs.com/hunterfu/archive/2010/02/23/1672129.html IFS=$'\n' for i in ...

  9. iptables防火墙原理详解

    1. netfilter与iptables Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤.数 ...

  10. framework4.0注册到IIS

    C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir -enable C:\WINDOWS\Microsoft.NET ...