手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

在ASP.Net 2.0中实现多语言界面的方法

来源: 作者: 时间:2008-03-12
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

1、跟以前一样做界面,只是注意,把所有需要有多语言界面的文字都用label来做 中国.站长站

2、做完以后,在Solution Explorer里选中这个文件,选Tools->Generate Local Resource 中国站长.站

3、你会发现生成了一个目录,App_LocalResources;这个目录里多了一个resx的文件。比如你的aspx文件是default.aspx,它就会生成一个叫做default.aspx.resx的文件。 中国站.长站

4、打开这个文件看看,原来在label中的那些文字都跑到这里来了 站长.站

5、打开原来的aspx文件看看source,会发现源码变了:

Chinaz.com

 

以下为引用的内容:

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

…………

Www~Chinaz~com

 

<asp:Localize ID="Localize1" runat="server" meta:resourcekey="Localize1Resource1"></asp:Localize> Www^Chinaz^com

Www~Chinaz~com

 

6、注意这里:meta:resourcekey="PageResource1" 和meta:resourcekey="Localize1Resource1" 这就表示这里的文字是从资源中读取的。 站.长.站

7、OK现在来做另一种语言的资源文件。很简单,copy Default.aspx.resx再paste一下,然后rename为Default.aspx.fr-fr.resx注意fr-fr是你要做的语言的名字。大家如果看dvdrip的话,应该觉得这跟字幕文件很像吧? Www.Chinaz.com

8、有人说我怎么知道那个语言叫什么名字呢?很简单,打开ie,tools->internet options -> languages -> add,方框中间的就是了。 Chinaz_com

9、现在开始编辑其他资源的文字。打开Default.aspx.fr-fr.resx,对照着原来的内容,把里面的内容改成法语的。

Www_Chinaz_com

 

10、到此为止,我们就完成了第一阶段。ASP.Net会根据用户的语言偏好来选择显示的语言。把IE里的设置改一下,在我们刚说过的地方改成fr-fr,打开这一页看看?如果是法语,恭喜你。如果不是,回头重做…… Www~Chinaz~com

11、OK,下一步,我们要允许用户选择自己的语言,而不是自动。我们会用cookie存取用户的选择。在Application级别,我们读取这个cookie并设置适当的culture和uiculture。当然,第一次进来的时候,我们还是要读取浏览器的设置,这个可以从Request.UserLanguages中获得。 Chinaz^com

以下为引用的内容:

    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)

Www^Chinaz^com

 

        Dim language As String = String.Empty

[中国站长站]

 

        If (languageCookie Is Nothing) Then

中国.站.长站

 

            Dim userLanguages As String() = Request.UserLanguages Www^Chinaz^com

            Dim index As Integer

[中国站长站]

 

            For i As Integer = 0 To userLanguages.Length - 1 中.国.站.长.站

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

中国站.长.站

 

                If index >= 0 Then Chinaz

                    language = SupportedLanguages(index) Chinaz@com

                    Exit For Www_Chinaz_com

                End If

中国站.长站

 

            Next Www.Chinaz.com

            If language = String.Empty Then _ 中国站长.站

                language = SupportedLanguages(0) Www~Chinaz~com

            Response.Cookies.Add(New HttpCookie(LANGUAGE_COOKIE_NAME, language)) Www.Chinaz.com

        Else

中国.站长站

 

            language = languageCookie.Value

站长.站

 

        End If

[中国站长站]

 

        Dim culture As CultureInfo = New CultureInfo(language) Chinaz

        System.Threading.Thread.CurrentThread.CurrentUICulture = culture 中国站长_站,为中文网站提供动力

End Sub

Chinaz_com

 

Www.Chinaz.com

 

12、然后我们要有一页让用户选择语言,比如我们用两个button来做。在点击这个button之后,我们要设置这个cookie为适当的语言:

站.长.站

 

以下为引用的内容:

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

Www.Chinaz.com

 

        SetLanguage("fr-fr") 站.长.站

    End Sub Www@Chinaz@com

    Protected Sub SetLanguage(ByVal language As String)

中国.站长站

 

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

Www~Chinaz~com

 

        Dim culture As CultureInfo = New CultureInfo(language) Www~Chinaz~com

        System.Threading.Thread.CurrentThread.CurrentUICulture = culture 站.长.站

        Server.Transfer(Request.Path) 中国站.长站

End Sub

中.国站长站

 

[中国站长站]

注意最后的Server.Transfer(Request.Path) ,这是为了重新读取这一页,这样这一页也会显示新选择的语言。 Chinaz@com

13、最后我们要去掉ASP.Net的自动选择。从Default.aspx中去除:

中国站.长站

 

Culture="auto" UICulture="auto"  Chinaz^com

14、打开来看一看吧! 中国站.长站

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!