热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » ASP/ASP.NET编程 » 在ASP.Net 2.0中实现多语言界面的方法

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

论坛链接
  • 在ASP.Net 2.0中实现多语言界面的方法
  • 发布时间:2008-03-06 18:21:58    浏览数:5590    发布者:superadmin    设置字体【   
、跟以前一样做界面,只是注意,把所有需要有多语言界面的文字都用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 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

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 Www@Chinaz@com

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、打开来看一看吧!
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理