欢迎光临
我们一直在努力

在asp.net 2.0中实现多语言界面的方法_asp.net技巧

建站超值云服务器,限时71元/月

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


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


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


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


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


 


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


…………


<asp:Localize ID=”Localize1″ runat=”server” meta:resourcekey=”Localize1Resource1″></asp:Localize>


 


 


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


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


8.     有人说我怎么知道那个语言叫什么名字呢?很简单,打开ie,tools->internet options -> languages -> 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 >= 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. 打开来看一看吧!


 

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 在asp.net 2.0中实现多语言界面的方法_asp.net技巧
分享到: 更多 (0)