当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 在ASP.Net 2.0中实现多语言界面的方法

ASP.NET
二级域名Cookie问题的解决方法
如何为asp.net网站项目添加子项目
asp.net用url重写URLReWriter实现任意二级域名
asp.net 序列化and反序列化演示
asp.net Timer的使用方法
AjaxControlToolKit DropDownExtender(下拉扩展控件)使用方法
AjaxControlToolKit CalendarExtender(日历扩展控件)的使用方法
让GridView只显示特定用户的数据的方法
让GridView只更新某些特定的数据的方法
ajaxControlToolkit中CascadingDropDown的用法说明
axp.net ScriptManager的简单用法
把程序集安装到全局程序集缓存中的步骤
引用全局程序集缓存内的程序集的方法
asp.net COOKIES需要注意的一点
asp.net UrlReWriter使用经验小结
页面导出为Excel的时间格式的问题
asp.net cookie清除的代码
Asp.net XMLHTTP封装类(GET,Post发送和接收数据)
ASP.NET XmlHttp跨域访问实现代码
Asp.NET 随机码生成基类(随机字母,随机数字,随机字母+数字)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 209 ::
收藏到网摘: n/a

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、打开来看一看吧!