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. 常用linux命令索引

    每天一个linux命令(61):wget命令 每天一个linux命令(60):scp命令 每天一个linux命令(59):rcp命令 每天一个linux命令(58):telnet命令 每天一个linu ...

  2. crossplatform---bower解决js的依赖管理

    从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...

  3. paip.中文 分词 -- 同义词大全整理

    paip.中文 分词 -- 同义词大全整理 同义词的处理方法: 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blo ...

  4. canvas之万花筒

    canvas也有css3里transform的变换功能,transform的底层运算的方式是运用了线性代数里矩阵, 而矩阵是在我们的生活实践中会经常被使用,它可以把复杂的空间问题呈现出来,它还有很多实 ...

  5. Java Socket网络编程常见异常(转)

    1.java.net.SocketTimeoutException 这个异常比较常见,socket超时.一般有2个地方会抛出这个,一个是connect的时候,这个超时参数由connect(Socket ...

  6. linux中touch命令参数修改文件的时间戳(转)

    linux中touch命令参数不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件,以下是linux中touch命令参数的使用方法: touch [-acm][-r ...

  7. 教你如何删除WIN7系统文件以及无法删除的文件

    http://jingyan.baidu.com/article/2f9b480d6d42ce41cb6cc2cc.html 我不怎么会说话,就简单明了的说吧!当我们想删除一个文件时提示无法删除,有些 ...

  8. LPC4370 ACDHS speed and DMA

    LPC4370 ACDHS speed AHB clock BASE_M4_CLK CLK_M4_ADCHS up to 204 MHz. For register interface. ADCHS ...

  9. Find Minimum in Rotated Sorted Array leetcode java

    题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 ...

  10. 取消vs2013在代码中的Reference数量功能

    继续吐槽.新增的自动统计reference数量的功能: 不爽的是总以为那是一行空行,可是鼠标放上去总是落空,遂我要干掉他. 这玩意有个好处就是有两个版本的程序有小修改的时候(尤其有很多重载方法的调用变 ...