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

原创 2006年06月14日 18:06:00
 (转载) 

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

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

      1. 跟以前一样做界面,只是注意,把所有需要有多语言界面的文字都用label来做  2. 做完以后,在Solution Explorer里选中这个文件,选Tools->Generate L...

在ASP.Net 2.0中实现多语言界面的方法及多语言区域代码对应表

在ASP.Net 2.0中实现多语言界面的方法及多语言区域代码对应表
  • zztfj
  • zztfj
  • 2011年04月21日 17:48
  • 1917

跟我一起学如何在ASP.net 2.0中实现多语言支持

1. 引言     对于支持多语言的网站,用户可以动态选择网站所显示的语言。本文介绍如何在ASP 2.0(C#)上利用GlobalResource实现多语言支持,习惯用VB的朋友们可以做个参考。 ...
  • donhao
  • donhao
  • 2011年09月23日 10:59
  • 934

基于ASP.NET 2.0 实现WEB打印方法的探讨

摘  要:Web打印是在开发B/S结构应用程序时一项比较复杂但又应用广泛、非常实用的一种技术。本文主要针对ASP.NET 2.0实现WEB打印的几种方法进行了初步探讨,对每种方法的实现、各自特点进行了...

ASP.NET 2.0 实现伪静态网页方法

利用Mircosoft URLRewriter.dll实现页面伪静态昨天,转贴了一篇利用ISAPI筛选器来实现URL伪静态的文章,我按照文章上的内容做,可是没有做出来,目前看来,该方法没有使用Micr...

ASP.NET 2.0 实现伪静态网页方法 3种方法

方法一:利用Httphandler实现URL重写(伪URL及伪静态) 我们有时候会见到这样的地址:“http://www.huoho.com/show-12-34.html”,你或许认为在站点服...

asp.net 2.0中显示主从关系另一个方法

一般是在asp.net 2.0中,是用master-detail的关系来显示数据的,显示的办法也很多,但今天 看书发现一个,是在同一个gridview里,搭配bulletedlist来显示的。关键部分...

ASP.NET 2.0的URL映射的实现方法

  • 2009年02月26日 11:35
  • 22KB
  • 下载

ASP.NET 2.0实现类似QQ邮箱中‘HTML方式查看’功能查看Office文件

我们在做一些系统的 下载模块 或者 内部邮箱 的时候,有些使用系统的人可能并没有安装office,但是又急需查看附件的内容甚至图片等等,下载安装一个Office又不大现实(时间要求紧?在某个网吧?在朋...

Scott Mitchell 的ASP.NET 2.0数据教程之四十一::实现开放式并发

Scott Mitchell 的ASP.NET 2.0数据教程之四十一::实现开放式并发 http://blog.csdn.net/heker2007/article/details/158...
  • mmhoo
  • mmhoo
  • 2013年01月29日 19:15
  • 409
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在ASP.Net 2.0中实现多语言界面的方法
举报原因:
原因补充:

(最多只允许输入30个字)