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

272737546

272737546

2016-02-19 18:57

今天图老师小编给大家展示的是在ASP.Net 2.0中实现多语言界面的方法,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!

  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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

   

      Protected Sub SetLanguage(ByVal language As String)

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

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

   

展开更多 50%)
分享

猜你喜欢

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

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

ASP程序界面的多语言支持

ASP
ASP程序界面的多语言支持

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

ASP实现多语言支持

ASP
ASP实现多语言支持

在ASP.Net中两种利用CSS实现多界面的方法

电脑网络
在ASP.Net中两种利用CSS实现多界面的方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

巧用XML做多语言界面的FLASH

Web开发
巧用XML做多语言界面的FLASH

在ASP.Net中实现RSA加密

ASP
在ASP.Net中实现RSA加密

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

通过System.Web.Mail程序发邮件

通过System.Web.Mail程序发邮件

不要重新分配被锁定对象的对象引用

不要重新分配被锁定对象的对象引用
下拉加载更多内容 ↓