今天是:
首 页信息查询网站SEO查询工具CSS编辑器建站素材
网海拾贝,电脑资讯,电脑快报,it资讯,网站建设资讯,教程基地
软件新闻
操作系统
Vista Winxp Win2003 Linux Windows综合
工具软件
系统工具 媒体工具 网络工具 杀毒软件 聊天
软件开发
C教程 C++ Java C# ASP.NET JSP PHP
数据库
Oracle MySQL DB2 SQL Server Sybase
安全
网络 病毒
办公应用
Word Excel Powerpoint Outlook 其他
平面设计
Photoshop Fireworks Coreldraw Flash Illustrator 3dsmax
网站运营
网站运营 网站优化 网站策划 策划书下载 建站心得 站长故事 网站盈利 网页制作 网页特效 建站素材 免费资源 QQ频道
  当前位置:首 页 >> 软件开发 >> ASP.NET教程 >> ASP.NET中多国语言的实现方法

ASP.NET中多国语言的实现方法

  发布于2008-03-14 13:02 来源:网海拾贝

现在的程序越来越要考虑国际化了,对于网站的开发也经常要考虑国际化的问题。
常见的国际化的需求主要就是两个方面:
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 %>的方式取值


中查找“ASP.NET中多国语言的实现方法”更多相关内容

中查找“ASP.NET中多国语言的实现方法”更多相关内容



上一篇:不用组件实现Ajax效果
下一篇:asp.net验证控件的气泡提示效果
最近更新 赞助商
·aspnet_regsql不能在sql2005下使用的解决10-14
·asp.net中的观察者模式09-18
·ASP.NET MVC:实现我们自己的视图引擎09-05
·asp.net2.0中App_GlobalResources用途08-22
·详解如何实现最基本的AJAX框架08-15
·如何使用ASP.Net加密Cookie08-15
·ASP.Net之C#中的异常处理08-14
·asp.net验证控件的气泡提示效果04-04
·ASP.NET中多国语言的实现方法03-14
·不用组件实现Ajax效果01-24
·asp.net 2.0 权限树的控制01-24

共有评论 1 条 网友评分 3分 查看所有评论

游客:飞思
评分:3
出现错误    “System.Web.UI.Util”不可访问,因为它受保护级别限制       
是什么原因呢???


发表评论→ 学而不思则罔,思而不学则殆,请大胆发表你的见解。

输验证码:

您对此篇文章的评分:1分 2分 3分 4分 5分

  • 站内搜索
关键词

搜索方式

搜索范围

精确匹配
Baidu
网站首页 - 关于本站 - 网站地图 - 广告合作 - 站点声明 - RSS订阅 - 联系我们
Copyright © 2005 网海拾贝.[新ICP备05003216号]. All Rights Reserved .