在ASP.Net 2.0中實現多語言界面的方法

1.     跟之前同樣作界面,只是注意,把全部須要有多語言界面的文字都用label來作瀏覽器

2.     作完之後,在Solution Explorer裏選中這個文件,選Tools->Generate Local Resourcecookie

3.     你會發現生成了一個目錄,App_LocalResources;這個目錄裏多了一個resx的文件。好比你的aspx文件是default.aspx,它就會生成一個叫作default.aspx.resx的文件。ide

4.     打開這個文件看看,原來在label中的那些文字都跑到這裏來了ui

5.     打開原來的aspx文件看看source,會發現源碼變了:server

<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="Default2" title="Untitled Page" Culture="auto" meta:resourcekey="PageResource1" UICulture="auto" %>ip

…………資源

<asp:Localize ID="Localize1" runat="server" meta:resourcekey="Localize1Resource1"></asp:Localize>源碼

6.     注意這裏:meta:resourcekey="PageResource1" 和meta:resourcekey="Localize1Resource1" 這就表示這裏的文字是從資源中讀取的。it

7.     OK如今來作另外一種語言的資源文件。很簡單,copy Default.aspx.resx再paste一下,而後rename爲Default.aspx.fr-fr.resx注意fr-fr是你要作的語言的名字。你們若是看dvdrip的話,應該以爲這跟字幕文件很像吧?io

8.     有人說我怎麼知道那個語言叫什麼名字呢?很簡單,打開ie,tools-&gt;internet options -&gt; languages -&gt; add,方框中間的就是了。

9.     如今開始編輯其餘資源的文字。打開Default.aspx.fr-fr.resx,對照着原來的內容,把裏面的內容改爲法語的。

10. 到此爲止,咱們就完成了第一階段。ASP.Net會根據用戶的語言偏好來選擇顯示的語言。把IE裏的設置改一下,在咱們剛說過的地方改爲fr-fr,打開這一頁看看?若是是法語,恭喜你。若是不是,回頭重作……

11. OK,下一步,咱們要容許用戶選擇本身的語言,而不是自動。咱們會用cookie存取用戶的選擇。在Application級別,咱們讀取這個cookie並設置適當的culture和uiculture。固然,第一次進來的時候,咱們仍是要讀取瀏覽器的設置,這個能夠從Request.UserLanguages中得到。

    Private SupportedLanguages As String() = {"en-us", "fr-fr"}

    Public Const LANGUAGE_COOKIE_NAME As String = "UserLanguage"

    Sub Application_AcquireRequestState(ByVal sender As Object, ByVal e As EventArgs)

        Dim languageCookie As HttpCookie = Request.Cookies(LANGUAGE_COOKIE_NAME)

        Dim language As String = String.Empty

        If (languageCookie Is Nothing) Then

            Dim userLanguages As String() = Request.UserLanguages

            Dim index As Integer

            For i As Integer = 0 To userLanguages.Length - 1

                index = Array.IndexOf(SupportedLanguages, userLanguages(i))

                If index &gt;= 0 Then

                    language = SupportedLanguages(index)

                    Exit For

                End If

            Next

            If language = String.Empty Then _

                language = SupportedLanguages(0)

            Response.Cookies.Add(New HttpCookie(LANGUAGE_COOKIE_NAME, language))

        Else

            language = languageCookie.Value

        End If

        Dim culture As CultureInfo = New CultureInfo(language)

        System.Threading.Thread.CurrentThread.CurrentUICulture = culture

End Sub

12. 而後咱們要有一頁讓用戶選擇語言,好比咱們用兩個button來作。在點擊這個button以後,咱們要設置這個cookie爲適當的語言:

    Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click

        SetLanguage("fr-fr")

    End Sub

    Protected Sub SetLanguage(ByVal language As String)

        Response.Cookies(Global.ASP.global_asax.LANGUAGE_COOKIE_NAME).Value = language

        Dim culture As CultureInfo = New CultureInfo(language)

        System.Threading.Thread.CurrentThread.CurrentUICulture = culture

        Server.Transfer(Request.Path)

End Sub

注意最後的Server.Transfer(Request.Path) ,這是爲了從新讀取這一頁,這樣這一頁也會顯示新選擇的語言。

13. 最後咱們要去掉ASP.Net的自動選擇。從Default.aspx中去除:

Culture="auto" UICulture="auto" 

14. 打開來看一看吧!

相關文章
相關標籤/搜索