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 ...
随机推荐
- paip.解决中文url路径的问题图片文件不能显示
paip.解决中文url路径的问题图片文件不能显示 #现状..中文url路径 图片文件不能显示 <img src="img/QQ截图20140401175433.jpg" w ...
- 关于eclispe保存代码自动格式化的设置
最近在项目开发,上级要求所有开发人员,代码必须格式和(Ctrl+Shift+F),但是还是会偶尔忘记格式化,今天看了有一种保存之后eclipse可以自动格式代码的设置 1.请大家在eclipse设置下 ...
- MyEclipse使用总结——MyEclipse文件查找技巧 ctrl+shift+R ctrl+H
一.查找文件 使用快捷键[ctrl+shift+R]弹出弹出文件查找框,如下图所示: 二.查找包含某个字符串的文件 使用快捷键[ctrl+H]在弹出对话框中选File Search选项,然后在第一个文 ...
- 分析system_call中断处理过程
分析system_call中断处理过程 上周我们使用gcc内嵌汇编调用系统调用,这次我们具体分析下过程. 将getpid嵌入menuos 代码从github下载,步骤如下: 1. 增加一个函数,get ...
- android: Android Notification
Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API level > 11),Notification类中的一些方法被Android声明deprecated(弃用 ...
- django文件上传下载
views: def mgmt_files(request): #列出树形目录,上传文件页面 if request.method == 'POST': path_root = "D:\\py ...
- 用C#表达式树优雅的计算24点
思路:一共4个数字,共需要3个运算符,可以构造一个二叉树,没有子节点的节点的为值,有叶子节点的为运算符 例如数字{1, 2, 3, 4},其中一种解的二叉树形式如下所示: 因此可以遍历所有二叉树可能的 ...
- ld: library not found for -lPods-AFNetworking
工程新添加了 AFNetworking 使用pod ,pod install 完成后,编译报错 ld: library not found for -lPods-AFNetworkingclang: ...
- 关闭/开启 ubuntu 自动更新提示
发现vps登陆后只有apt update后才知道有多少包需要更新不是很傻么,本地的ubuntu在登录时就有很好的提示,并且还能告知系统负载情况,很有用,这里就想开起来.首先这个提示的名字叫Motd. ...
- 用C++为nodejs 写组件,提高node处理效率
昨天研究了下如何用C++和node交互,在node的程序中,如果有大数据量的计算,处理起来比较慢,可以用C++来处理,然后通过回调(callback的形式),返回给node. 首先,先来看看node ...