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协议,所有源代 ...
随机推荐
- GDI+绘图基础
GDI+ 指的是.NET Framwork中提供的二维图像.图像处理等功能,是构成Windows操作系统的一个子系统,它提供了图形图像操作的应用程序编程接口(API). 使用GDI+可以用相同的方式在 ...
- [SinGuLaRiTy] KM算法
[SinGuLaRiTy-1018] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. Some Method Are Reproduced F ...
- 拓扑排序+数学+DP【洛谷P1685】 游览
P1685 游览 题目描述 顺利通过了黄药师的考验,下面就可以尽情游览桃花岛了! 你要从桃花岛的西头开始一直玩到东头,然后在东头的码头离开.可是当你游玩了一次后,发现桃花岛的景色实在是非常的美丽!!! ...
- shared_ptr 和auto_ptr智能指针
shared_ptr:计数的智能指针 它是一个包装了new操作符在堆上分配的动态对象,但它实现的是引用计数型的智能指针 ,可以被自由地拷贝和赋值,在任意的地方共享它,当没有代码使用(引用计数为0)它时 ...
- opencv第一课,安装配置
下载工具:本教程以OpenCV3.2.0为例. 解压:本教程解压到D盘,解压的其它地方也是可以的,解压完后得到一个名为opencv目录. 配置系统变量:选择此电脑(计算机)->右键属性选择-&g ...
- 本地命令上传文件到服务器以及linux编辑过程中非正常退出问题
一.上传文件到linux服务器首先从你本地切换到你要上传文件的目录,接下来:scp 文件名字 服务器用户名字@服务器ip:存储路径例子:scp index.html root@106.75.229 ...
- Maven with Scala
下面是一个在Maven使用Scala的pom.xml <?xml version="1.0" encoding="UTF-8" standalone=&q ...
- [Java]如何把Soap Message装成一个String对象
代码片段 // Create transformer TransformerFactory tff = TransformerFactory.newInstance(); Transformer tf ...
- Hibernate常见报错
1.A different object with the same identifier value was already associated with the session(使用Hibern ...
- Django 12 中间件、上下文处理器和admin后台
Django 12 中间件.上下文处理器和admin后台 一.中间件 #Django中间件 (Middleware) # 一个轻量级.底层的“插件”系统,可以介入Django的请求和响应处理过程,修改 ...