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协议,所有源代 ...
随机推荐
- vue2.x学习笔记
1.使用模板template的时候必须要有跟节点,可以支持表达式,但不支持正则,想使用正则就用过滤器. 2.数据在显示的时候所带的HTML DOM直接显示,不会渲染,要渲染DOM,得用v-html. ...
- 动态横向(水平)合并GridView数据行DataRow的列
前一段时间,Insus.NET有写过<动态合并GridView数据行DataRow的列>http://www.cnblogs.com/insus/p/3238348.html, 那是纵向( ...
- java 乱码问题解决方案
java 乱码问题解决方案 一.tomcat: <Connector port="8080" maxThreads="150&qu ...
- 从零开始安装 Ambari (4) -- 通过 Ambari 部署 hadoop 集群
1. 打开 http://192.168.242.181:8080 登陆的用户名/密码是 : admin/admin 2. 点击 “LAUNCH INSTALL WIZARD”,开始创建一个集群 3 ...
- hyperledger fabric 中java chaincode 支持离线打包
联盟链由于其本身的特性,目前应用在一些大型国有企业银行比较多.出于安全考虑,这些企业一般会隔离外网环境.所以在实际生产需求中可能存在需要在一个离线的环境中打包安装chaincode的情况. 本文基于这 ...
- c++将文件之间编译关系降到最低
类的定义式:类的定义,可以知道类的大小 类的实现: 类的声明:类的声明,表明,使用此类,编译不会出错 C++并没有把“将接口从实现中分离”做得很好.Class的定义式不只详细叙述了Class接口,还包 ...
- springcloud系列八 整合Hystrix
feign本身是支持Hystrix的,所以不需要引入其他依赖: 我们可以看看feign这个项目的依赖,就是引入这个依赖的pom.xml 要想看这个很简单,点击那个依赖进去就可以了 点进去就可以看到 & ...
- 我的web安全工程师学习之路——规划篇
据网上收集的web安全工程师需要掌握哪些技能,职位要求以及如何入门,加上学习网易推出的web安全工程师微专业课程,为了进一步学习,所以给自己做了一些小小规划,也希望给同样想成为web安全工程师的同仁们 ...
- Python入门8文件处理
文件处理文本模式name = input("请输入用户名:").strip()with open("a.txt","wt",encoding ...
- Realm数据库的使用
https://github.com/lipanquan/Realm/tree/master