您的位置:首页 > 编程语言 > ASP

asp.net全球化——让你的网站在中英文中自由切换

2013-12-12 14:56 435 查看
由于最近的一笔单子,为客户做的是代理签证、办理移民的网站,需要用到中英文切换,把我这个从未涉及过这一领域的人儿给小小的吓住了。不过吓归吓,还是要着手做的嘛。

中文的、英文的、百度上、谷歌上,到处搜这方面的资料,终于有点明白这属于全球化。

先是研究在web.config里加上

<system.web>
<globalization Culture="en-us" UICulture="en-us" />
</system.web>


接下来在研究如何通过代码修改这个值的时候,这条路没走得下去。

不死心,接着研究通过App_GlobalResources的方式,添加中英文的资源文件。终于算是走对一半了,可是最后遇到的问题是,用以下这样的代码要么只显示中文,要么只显示英文,把我给气得。

Text="<% $ Resources:Resource, UserName %>"

查看当前页面的culture值是什么,又是我想要的那个,为什么就是不变呢。

可是如果我在头部加上以下的代码的时候,改中文是中文,改英文是英方,我就奇了怪了,问题出在哪里了。

<%@ Page Culture="en-us" UICulture="en-us" %>

其实也是要感谢两篇文章

一是/article/10186587.html

二是http://msdn.microsoft.com/zh-cn/library/bz9tc508(v=vs.80).aspx

其实前几天就看过第二篇文章,没有在意,今天再回看,突然明白了。

<%@ Page Language="VB" uiculture="auto" %>
<%@ Import Namespace="System.Threading" %>
<%@ Import Namespace="System.Globalization" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">
Protected Overrides Sub InitializeCulture()
If Request.Form("ListBox1") IsNot Nothing Then
Dim selectedLanguage As String = _
Request.Form("ListBox1")
UICulture = Request.Form("ListBox1")
Culture = Request.Form("ListBox1")
Thread.CurrentThread.CurrentCulture = _
CultureInfo.CreateSpecificCulture(selectedLanguage)
Thread.CurrentThread.CurrentUICulture = New _
CultureInfo(selectedLanguage)
End If
MyBase.InitializeCulture()
End Sub
</script>
<html>
<body>
<form id="form1" runat="server">
<div>
<asp:ListBox ID="ListBox1" runat="server">
<asp:ListItem Value="en-US"
Selected="True">English</asp:ListItem>
<asp:ListItem Value="es-MX">Español</asp:ListItem>
<asp:ListItem Value="de-DE">Deutsch</asp:ListItem>
</asp:ListBox><br />
<asp:Button ID="Button1" runat="server"
Text="Set Language"
meta:resourcekey="Button1" />
<br />
<asp:Label ID="Label1" runat="server"
Text=""
meta:resourcekey="Label1" />
</div>
</form>
</body>
</html>

受这段代码的启发,我最后是这样成功滴。

先在项目中添加这个文件夹,同时创建两个资源文件,一个中文,一个英文。



以下是两个资源文件的内容 :





我在要用的时候是这样滴

<asp:Literal ID="Literal14"Text="<% $ Resources:Resource, UserName %>"runat="server"></asp:Literal>


在app_code里增加一个basepage文件,如下所示:





最后,在每一个需要引用的页里修改



本来引用的system.web.ui,page,现在改成引用basepage.

页面上,想怎么换就怎么换啦。

Master页里增加:

<a href="?currentculture=zh-cn">中文(中国)</a>
<a href="?currentculture=en-us">English(USA)</a>

页面效果看一看:





要中文是中文,要英文是英文,是不是一下子心情爽朗了许多呢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: