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

2016-02-19 18:57 2 1 收藏

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

【 tulaoshi.com - Web开发 】

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

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

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

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

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

   

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

  %@ 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

   

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

   

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

  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中获得。

   

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

      Private SupportedLanguages As String() = {"en-us", "fr-fr"}

   

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

      Public Const LANGUAGE_COOKIE_NAME As String = "UserLanguage"

   

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

      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

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

              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

   

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

  12. 然后我们要有一页让用户选择语言,比如我们用两个button来做。在点击这个button之后,我们要设置这个cookie为适当的语言:

   

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

      Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click

          SetLanguage("fr-fr")

      End Sub

   

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

      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

   

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

  注意最后的Server.Transfer(Request.Path) ,这是为了重新读取这一页,这样这一页也会显示新选择的语言。

   

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

  13. 最后我们要去掉ASP.Net的自动选择。从Default.aspx中去除:

   

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

  Culture="auto" UICulture="auto" 

   

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

  14. 打开来看一看吧!

   

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

来源:https://www.tulaoshi.com/n/20160219/1619640.html

延伸阅读
VC开发多语言界面支持的简单方法 作者:成晓旭 (需要完整源代码请与作者联系) 最近在做一个小程序,要求实现对多语言界面显示支持功能,并且,界面显示内容用户能够自己设置。 初步设计用INI文件来配置显示内容,换一种语言的配置文件,就能够更换整个系统的显示语言。考虑到系统规模很小,周期又短,不想用太复杂的方案来解决这个问题,当...
标签: ASP
  1.ASP部分 a.建立语言包 1.在各个子系统建立"语言包"目录 , 如BBS-- language --Simplified ---Traditional ---English 2 为每个ASP,js,HTC 建立语言文件,如ACMBBStopic.asp.lang ,treeview.htc.lang , 用来存放语言全局变量。 如目录LanguageEnglish ACMBBSShow.asp.lang Public Const LangRollway="reverse roll&quo...
用VC实现支持多语言的程序 作者:新奥特视频公司 穆学峰 最近要做个程序要求有中文和英文两个版本,因此要把应用程序的资源文件COPY一份英文的。 方法一 :在资源中用InsertCopy COPY一份资源如图 方法二 :直接用文本编辑器编辑rc文件 ...
最近在做一个小程序,要求实现对多语言界面显示支持功能,并且,界面显示内容用户能够自己设置。 初步设计用INI文件来配置显示内容,换一种语言的配置文件,就能够更换整个系统的显示语言。考虑到系统规模很小,周期又短,不想用太复杂的方案来解决这个问题,当参考了很多网上类似的设计和代码,发现都不是很满足。 主要问题在于:绝大多...
标签: Web开发
Asp.Net 2.0 中实现了IButtonControl接口的控件都有一个PostBackUrl属性,可以进行跨页面提交,就是用的POST方法。那么在1.x中费了一番周折的POST提交就很简单了,只要把PostBackUrl设置为提交页,在那提交页用Request.Params[]就能拿到POST的表单参数了。还能用PreviousPage.FindControl去取前一页的控件。这里用Request和PreviousPage去...

经验教程

417

收藏

52
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部