一个网站可能具备多个语言,要实现这个功能在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中多语言的实现的更多相关文章

  1. ASP.NET中基本语言特性

    自动属性 public string Name { get; set; } 对象与集合的初始化 //自动推断类型//集合的初始化 var Products=new List<Product> ...

  2. asp.net中时间差的问题

    asp.net中时间差的问题 在asp中我们可以用datediff来处理,时间的差,相当的不错,可是在asp.net中C#语言中却没有.可是ASP.net给我们提供了一个TimeSpan,我们可以用它 ...

  3. (二)ASP.NET中JavaScript的中英文(多语言)实现方案(二)

    在ASP.NET中JavaScript的中英文(多语言)实现方案中简单的介绍了js实现多语言的一种方案.下面将要讲述另外一种方法,尽管很相似,但是有些地方也是需要细细琢磨的,不说了,先看看. 在Lan ...

  4. asp.net中的<%%> <%#%> <%=%>形式的详细用法 (转载)

    博客分类: ASP.NET   一. <%%>这种格式实际上就是和asp的用法一样的,只是asp中里面是vbscript或者javascript代码,而在asp.net中是.net平台下支 ...

  5. 在 ASP.NET 中创建数据访问和业务逻辑层(转)

    .NET Framework 4 当在 ASP.NET 中处理数据时,可从使用通用软件模式中受益.其中一种模式是将数据访问代码与控制数据访问或提供其他业务规则的业务逻辑代码分开.在此模式中,这两个层均 ...

  6. ASP.NET中的XML和JSON

    一.DOM简介 1.XML 定义:XML是一种跨语言.跨平台的数据储存格式 2.什么是DOM DOM(document object model)文档对象模型:是一种允许程序或脚本动态的访问更新文档内 ...

  7. asp.net中的窗口弹出实现,包括分支窗口 . ASP.NET返回上一页面实现方法总结 .

    返回上一页的这个东东在我们做项目的时候一般是用于填写完表单后确认的时候,有对原来输入的数据进行修改或者更新时用的,或者是因为网站为了方便浏览者而有心添加的一个东东,一般这种功能的实现在ASP.NET中 ...

  8. asp.net中,<%#%>,<%=%>和<%%>分别是什么意思,有什么区别

    在asp.net中经常出现包含这种形式<%%>的html代码,总的来说包含下面这样几种格式:一.  <%%>这种格式实际上就是和asp的用法一样的,只是asp中里面是vbscr ...

  9. ASP.NET中UEditor使用

    ASP.NET中UEditor使用 0.ueditor简介 UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点.开源基于BSD协议,所有源代 ...

随机推荐

  1. Python入门:模拟登录(二)或注册之requests处理带token请求

    转自http://blog.csdn.net/foryouslgme/article/details/51822209 首先说一下使用Python模拟登录或注册时,对于带token的页面怎么登录注册模 ...

  2. charles 抓取app https 请求

    测试需要抓取app的https请求链接,百度了一下教程,能设置的都设置成功了,但就是抓取不成功,显示如下图 无奈之下还是用谷歌搜索了下(网速极慢),但是庆幸的找到了问题的答案,原因还是手机设置的问 打 ...

  3. tomcat启动后 项目运行缓慢,要几十到几百秒不等 怎么样./startup.sh 运行加快

    修改 linux系统中 /usr/local/jdk1.8.0_11/jre/lib/security/java.security 借力 好文章.我们新的Linux系统,部署了多个 Tomca,同时重 ...

  4. 关于cuda拷贝的速度测试

    由于没有使用profiler,仅仅通过简单的传输函数测试,如下测试了10000个点,1000000个点,100000000个点的速度: 均按时钟周期来计时,通过MAX调整数据 int main(){ ...

  5. webpack热更新实现

    原文地址:webpack热更新实现 webpack,一代版本一代神,代代版本出大神.如果你的webpack和webpack-dev-server版本大于2小于等于3.6,请继续看下去.其它版本就必浪费 ...

  6. Oracle恢复表数据

    Oracle恢复数据 在oracle 10g以及之后的版本,提供了回收站的机制,为了防止误操作将表数据清空而有回收机制. 换句话说,我们删除的表不会立马消失,而是进入回收站.下面我们可以查看回收站 查 ...

  7. luogu3380 树套树之线段树套线段树

    个人感觉可能是最不需要脑子写的方法 不过也不太好调 就是用一个普通的线段树维护这个序列,但是对于线段树的每一个区间,再开一个动态开点的权值线段树,里面存储这个区间所有元素值 单点修改只会涉及到log棵 ...

  8. Django---队列

    1.队列介绍 任务队列用作跨线程或机器分配工作的机制. 任务队列的输入是称为任务的工作单元. 专用工作进程不断监视任务队列以执行新工作. Celery通过消息进行通信,通常使用经纪人(brokers) ...

  9. Qt 学习之路 2(25):画刷和画笔

    Home / Qt 学习之路 2 / Qt 学习之路 2(25):画刷和画笔 Qt 学习之路 2(25):画刷和画笔  豆子  2012年11月5日  Qt 学习之路 2  17条评论 前面一章我们提 ...

  10. vue安装常用插件命令

    1. 安装element-ui npm i element-ui -S 2. 安装vuex npm install vuex --save 3. 安装axios npm install --save ...