ASP.NET中多语言的实现
一个网站可能具备多个语言,要实现这个功能在ASP.NET中是非常简单的。我们需要为项目添加资源文件文件夹,并且添加针对网站的特定的资源文件等即可。在ASP.NET中资源文件分成两类:全局和页面级(即“本地”级)。
一、全局资源文件:
顾名思义,全局资源文件是供整个网站内部全部页面调用的。因此必须放在App_GlobalResources中(可以通过右键创建该文件夹,然后继续右键创建资源文件)。
命名规则:任意。
使用规则:使用“<$Resources:全局资源文件名称,资源名称>”进行对特定属性的绑定。
当然,也可以通过后台代码形式绑定(因为生成了强类型:可以通过Resource.全局资源文件名.资源名称)形式绑定读取。
注意:如果是多语言的话,应该按照以下命名规则进行:任意全局文件名称.语言(区域)名称.resx。
绑定的时候则按照上面蓝色(使用规则)进行绑定,注意此时“全局资源文件名称”不能指定语言区域!
二、页面级资源文件:
也叫本地资源文件,一般只用于单个页面。命名规则:控件的ID.属性名。
绑定的时候只要手动在某个控件之后增加:meta:resourceKey="本地资源文件中控件的ID",注意ID和控件的ID必须对应!
如果针对某个页面特定控件创建多语言版本,命名规则:页面名称.aspx.语言(区域).resx。
三、示例代码:
本实例演示多语言版本:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="CSharp.WebForm1" UICulture="zh-CN" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>语言测试</title>
</head>
<body>
<form id="form1" runat="server">
<div>
请选择对应语言:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
<asp:ListItem Value="zh-CN">中文</asp:ListItem>
<asp:ListItem Value="en-US">英语</asp:ListItem>
</asp:DropDownList>
<asp:Panel ID="Panel1" runat="server" BackColor="<%$Resources:GlobalResource,PanelBackColor %>">
<asp:Label ID="Label1" runat="server" Text="Label" meta:resourceKey="Label1"></asp:Label>
</asp:Panel>
</div>
</form>
</body>
</html>
注意上面代码中划线的部分——UlCulture,可以直接指定当前页面的语言(假设是zh-CN)。另外注意绑定的方式。
项目结构:

两个全局文件中定义了一个叫做PanelBackColor的Key,而值则是(zh-CN:Red,默认是LightBlue)。同理,两个本地资源文件中定义了Label1作为Key,zh-CN中是中文“欢迎来到ASP.NET的世界”,另外一个是英语版本。大家可以测试一下。
以下给出后台代码:
public partial class WebForm1 : System.Web.UI.Page
{
/// <summary>
/// 动态设置当前语言,改变当前线程的语言
/// </summary>
protected override void InitializeCulture()
{
string language = Request.Form["DropDownList1"];
if (language != null)
{
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(language);
}
}
}
另外想补充一点:
1)动态改变当前语言,必须按照后台代码(重写InitializeCulture)实现。
2)或者可以修改配置文件(全局其作用, system.web节点下追加):
<globalization uiCulture="zh-CN"/>
3)又或者在aspx中加入UICulture属性(参考我给出的aspx示例代码)。
其中如果同时设置,优先级大小如下:2<3<1
ASP.NET中多语言的实现的更多相关文章
- ASP.NET中基本语言特性
自动属性 public string Name { get; set; } 对象与集合的初始化 //自动推断类型//集合的初始化 var Products=new List<Product> ...
- asp.net中时间差的问题
asp.net中时间差的问题 在asp中我们可以用datediff来处理,时间的差,相当的不错,可是在asp.net中C#语言中却没有.可是ASP.net给我们提供了一个TimeSpan,我们可以用它 ...
- (二)ASP.NET中JavaScript的中英文(多语言)实现方案(二)
在ASP.NET中JavaScript的中英文(多语言)实现方案中简单的介绍了js实现多语言的一种方案.下面将要讲述另外一种方法,尽管很相似,但是有些地方也是需要细细琢磨的,不说了,先看看. 在Lan ...
- asp.net中的<%%> <%#%> <%=%>形式的详细用法 (转载)
博客分类: ASP.NET 一. <%%>这种格式实际上就是和asp的用法一样的,只是asp中里面是vbscript或者javascript代码,而在asp.net中是.net平台下支 ...
- 在 ASP.NET 中创建数据访问和业务逻辑层(转)
.NET Framework 4 当在 ASP.NET 中处理数据时,可从使用通用软件模式中受益.其中一种模式是将数据访问代码与控制数据访问或提供其他业务规则的业务逻辑代码分开.在此模式中,这两个层均 ...
- ASP.NET中的XML和JSON
一.DOM简介 1.XML 定义:XML是一种跨语言.跨平台的数据储存格式 2.什么是DOM DOM(document object model)文档对象模型:是一种允许程序或脚本动态的访问更新文档内 ...
- asp.net中的窗口弹出实现,包括分支窗口 . ASP.NET返回上一页面实现方法总结 .
返回上一页的这个东东在我们做项目的时候一般是用于填写完表单后确认的时候,有对原来输入的数据进行修改或者更新时用的,或者是因为网站为了方便浏览者而有心添加的一个东东,一般这种功能的实现在ASP.NET中 ...
- asp.net中,<%#%>,<%=%>和<%%>分别是什么意思,有什么区别
在asp.net中经常出现包含这种形式<%%>的html代码,总的来说包含下面这样几种格式:一. <%%>这种格式实际上就是和asp的用法一样的,只是asp中里面是vbscr ...
- ASP.NET中UEditor使用
ASP.NET中UEditor使用 0.ueditor简介 UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点.开源基于BSD协议,所有源代 ...
随机推荐
- Servlet对象生命周期(四)
一.Servlet对象生命周期 一下图片说明上图第7点 destroy()方法是在停止tomcat服务器时执行 https://pan.baidu.com/s/1mgTabWW#list/path=% ...
- easyUI 展开DataGrid里面的行显示详细信息
http://blog.csdn.net/yanghongchang_/article/details/7854156原著 datagrid 可以改变它的view(视图)去显示不同的效果.使用详细视图 ...
- 【zookeeper】
window下安装zookeeper三结点集群: 1:解压缩zookeeper压缩包:复制三分并且命名成:Server_A Server_B Server_C 2:拷贝conf目录下的文件zoo ...
- Sql Server 数据恢复-破解版
首先,恭喜大家进了误删误改使得数据丢失的坑~~~~~ 不要担心,恢复就好了. 下载地址:https://pan.baidu.com/s/1a59U--Y6EmbPF2CFsxmo2Q 密码:jb14 ...
- android studio 程序员有福了—从layout自动生成viewholder类
狂点这里下载 超级牛逼的插件啊,比那些使用SparseArray的强太多了! 在android studio 1.0上测试,没有问题. 不说了直接说功能 Android Toolbox Plugin ...
- Subversion Server Edge的安装使用
1.Subversion Server Edge的搭建 当在操作系统为64位的配置服务器上部署时只能够选择Collabnet Subversion Edge,它集合了Subversion所需要一切资源 ...
- JScrollPane (滚动面板)使用心得
注意:使用滚动面板时,必须指定内部组件是哪个组件 JScrollPane的两种使用方式:. 方式一: //直接在创建滚动面板对象时,就指定所要显示的组件 //本例中所要显示的是jPanel JPane ...
- spring 事务 配置 多个
Spring中事务控制相关配置: <bean id="txManager" class="org.springframework.jdbc.datasource.D ...
- P5221 Product(莫比乌斯反演)
CYJian的新春虐题赛- 比赛详情 [题目链接] https://www.luogu.org/problemnew/show/P5221 求 \(\prod_{i=1}^{N}\prod_{j=1} ...
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_基元类型(一)
[概念] 编译器直接支持的数据类型 [C#基元类型与对应的 FCL 类型] C#基元类型 FCL 类型 说明 sbyte System.Sbyte 有符号8位值 byte System.Byte 无符 ...