asp.net全球化——讓你的網站在中英文中自由切換

由於最近的一筆單子,爲客戶做的是代理簽證、辦理移民的網站,需要用到中英文切換,把我這個從未涉及過這一領域的人兒給小小的嚇住了。不過嚇歸嚇,還是要着手做的嘛。

中文的、英文的、百度上、谷歌上,到處搜這方面的資料,終於有點明白這屬於全球化。

先是研究在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" %>

其實也是要感謝兩篇文章

一是http://blog.csdn.net/rowland001/article/details/17279471

二是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>

頁面效果看一看:

 


 

要中文是中文,要英文是英文,是不是一下子心情爽朗了許多呢!
發佈了62 篇原創文章 · 獲贊 2 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章