会员注册 | 电脑急诊 | 中国汽车救援中心网 | 中国电脑视频网 | 装机必备软件 | 淘宝商城
·维修资料下载
·视频教程下载
·
网络教程下载
中文域名 虚拟空间 香港主机 域名空间 电子书下载
进入论坛 地图
教程 | 技巧 | 笔记本 | 安全 | 网络故障 | 建站经验 | 维修资料 | 行情 | Vista | Win Xp | 手机 | MP3 | DVDC | Q Q | 评测 | DIY | 厂商 | 源码 | 病毒 | 数据恢复
[菜鸟学院] 操作系统 程序设计 网站开发 图像动画 办公软件 [故障查询] CPU 主板 硬盘 内存 显示器 打印机 光驱 显卡 [PC电子书] 软件教程 硬件技术 数据理论 网络技术
【救援中心俱乐部】
120急诊室  菜鸟学院  视频教程
俱乐部活动 软件世界  操作系统
维修资料   网络世界  网站建设
笔记本专栏 硬件世界  聊天专栏
网友靓照   个人专栏  原创交流
灌水乐园   贴图中心  游戏世界
当前位置:首页 > 菜鸟学院 > 编程开发 > Asp.net > 正文

ASP.NET中多国语言的实现方法
   2008-3-20 7:30:49 来源: 进入论坛 添加到收藏夹

现在的程序越来越要考虑国际化了,对于网站的开发也经常要考虑国际化的问题。
常见的国际化的需求主要就是两个方面:
1、不同的国家页面布局不同
2、不同的国家要显示当国的文字
在ASP.NET2.0中实现这两种需求的方法很多,我今天就总结其中一种方法的具体实现。

对应需求1我们可以使用母版页来实现,对于需求2可以使用资源文件的方式来实现。
在母版页中定义好页面布局和各种语言的转换链接,每种语言定义一个母版页,比如中文就叫Chinese.master,英文就叫English.master
Chinese.master 示例
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Chinese.master.cs" Inherits="Front_ChineseMasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>首页</title>

</head>

<body>

<form id="form1" runat="server">

<a href="index.aspx?language=Chinese">中文</a>

<a href="index.aspx?language=English">English</a>

<a href="index.aspx?language=Japanese">日本語</a>

<div> <table> <tr> <td> <asp:contentplaceholder id="Top" runat="server">

</asp:contentplaceholder>

</td>

</tr>

<tr>
<td>bbbbb </td> </tr> <tr> <td>ccccc

</td> </tr> </table> </div> </form>

</body>

</html>

其他语言的母版页也是类似

然后可以在每个aspx的Page_PreInit事件中调用共通的方法来进行语言的动态转换
protected void Page_PreInit(object sender, EventArgs e)
{
Util.ChangeLanguage(Request, this);
}
public static void ChangeLanguage(HttpRequest Request, Page page)
{
string strLanguage = Request.QueryString.Get("language");
if (strLanguage != null)
{
page.Session[Util.SESSION_LANGUAGE] = strLanguage;
}
strLanguage = page.Session[Util.SESSION_LANGUAGE] as string;
string strMasterPage = "~/Front/MasterPage/" + strLanguage + ".master";
page.MasterPageFile = strMasterPage;

string strUICulture = "";
switch (strLanguage)
{
case "English":
strUICulture = "en-us";
break;
case "Japanese":
strUICulture = "ja";
break;
}
page.UICulture = strUICulture;
}主要就是在ChangeLanguage方法中首先改变页面的母版页,然后再改变页面的区域

然后可以在Global.asax全局的Session_Start事件中设置初始语言:
void Session_Start(object sender, EventArgs e)
{
Session[Util.SESSION_LANGUAGE] = "Chinese";
}我这个例子中是直接设置初始为中文语言,当然也可以根据客户端的环境来动态设置的:
void Session_Start(object sender, EventArgs e)
{
switch (Session.LCID)
{
case 0x0009:
Session[Util.SESSION_LANGUAGE] = "English";
break;
case 0x0011:
Session[Util.SESSION_LANGUAGE] = "Japanese";
break;
default:
Session[Util.SESSION_LANGUAGE] = "Chinese";
break;
}
//Session[Util.SESSION_LANGUAGE] = "Chinese";
}
通过以上步骤我们已经可以动态改变页面布局(母版页)和页面的区域了。

下面新建三个全局的资源文件:Resource.resx,Resource.en-us.resx,Resource.ja.resx
在三个资源文件中都加入TestString这个键值,value值写上不同的语言
然后我们就可以在自己的Page页面中使用这个资源文件了:
<%@ Page Language="C#" MasterPageFile="~/Front/MasterPage/Chinese.master" AutoEventWireup="true"

CodeFile="index.aspx.cs" Inherits="index" %>

<asp:Content ID="Content1" ContentPlaceHolderID="Top" Runat="Server">

<asp:Label ID="Label1" runat="server" Text="<%$ Resources:Resource,TestString %>" Width="76px">

</asp:Label><br />

<br />

</asp:Content>

也就是说以后出现文字或和区域有关的图片的时候都要在不同的资源文件中定义好,然后在页面中使用<%$ Resources:Resource,TestString %>的方式取值


 
打印】【电脑俱乐部】【电脑视频】【电脑故障】【电脑学院】【电子书】【关闭
精彩视频教程推荐
电子书下载
推荐阅读
·Fireworks打造精致个性的Vista样
·Vista初级使用技巧及故障总结
·服务器升级故障及其解决方法
·保证Windows操作系统无毒技巧两则
·不用光盘也能找回系统的完璧之身
·08年互联网领袖扑克 马云蝉联黑桃
·IT市场趋势 1名员工1条狗成1个工
·笔记本网络“走亲”求便捷
·Windows XP下27招释放C盘空间技巧
·微软将精简Windows 7内置程序
·利用根区作用修复主板BIOS
·BIOS芯片物理损坏另类维修
·数字万用表的使用
·电源芯片检测方法
·如何判断上管下管
·Windows 2008下IIS7设置FTP的技巧

视频教程
EasyBoot制作双系统启 EasyBoot制作WinodwsX
最新新闻
·Fireworks打造精致个性的Vista样式按
·Vista初级使用技巧及故障总结
·服务器升级故障及其解决方法
·保证Windows操作系统无毒技巧两则 
·不用光盘也能找回系统的完璧之身
·08年互联网领袖扑克 马云蝉联黑桃A 
·IT市场趋势 1名员工1条狗成1个工厂
·笔记本网络“走亲”求便捷

装机必备软件下载
 
关于我们 | 合作媒体 | 版权声明 | 联系方式 | 意见反馈 | 广告业务 | 网站地图 | 急救中心

Copyright © 2003--2007 中国电脑援救中心版权所有
鲁ICP备05000605号