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. java生成竖排文字图片

    package com.kadang.designer.web.action;import java.awt.Color;import java.awt.Font;import java.awt.Fo ...

  2. 解决JS传参中文乱码

    function PopupFK(cNum,type){ var url = "contract!Paying.action"; url = url + "?contra ...

  3. 密码太多记不住?SSO帮你轻松访问VDI及外部资源

    单点登录(SSO)有多种方式,简单来讲,SSO是一个允许用户使用单一登录访问多个资源的认证过程.使用云应用的VDI用户可能需要某种方式的认证访问桌面外部的应用.SSO只需要用户单次输入认证信息就可以访 ...

  4. 移动APP的IM后台架构浅析

    IM(InstantMessaging 即时通讯)作为一项基础功能,很多APP都有,比如:手机QQ.微信.易信.钉钉.飞信.旺旺.咚咚.陌陌等.而IM如同我们日常生活中的水和电一样,必不可少,也是很多 ...

  5. 提高D3js力导向图加载速度(转)

    过去一段时间曾两次使用了 D3 力导向图来描绘族群关系. http://bl.ocks.org/mbostock/1062288 第一次用的时候不求甚解,交差了事.当时点也不多,很顺利完成了任务.这一 ...

  6. ASP 中 Cookies 的 Expires 属性的设置(JS版本)

    直接上代码,代码中有注释 <%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%> <% var numVisi ...

  7. PayPal 高级工程总监:读完这 100 篇文献,就能成大数据高手

    原文地址 开源(Open Source)对大数据影响,有二:一方面,在大数据技术变革之路上,开源在众人之力和众人之智推动下,摧枯拉朽,吐故纳新,扮演着非常重要的推动作用:另一方面,开源也给大数据技术构 ...

  8. Skyline6.5系列覆盖三维地理信息产业上下游

    SkylineGlobe将于近日推出6.5 系列产品.该系列产品提供从产业链上游影像处理.中游二三维展示分析.下游具体业务应用等覆盖整个三维空间地理信息产业链的一体化.一站式产品与服务. Skylin ...

  9. 阿里大鱼.net core 发送短信

    阿里大鱼还未提供 .net core 版SDK,但提供了相关API,下面是.net core版实现,只是简单发送短信功能: using System; using System.Collections ...

  10. [转] js == 与 === 的区别

    1.对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等 2)同类型比较,直接进 ...