zoukankan      html  css  js  c++  java
  • 在ASP.Net 2.0中实现多语言界面的方法

    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>


    *********************************************************************
    谢谢后面的留言,在这里说一句,如果是其他的控件上的文字,基本上也是会自动生成的。比如button和gridview的:


    <asp:Button ID="Button1" runat="server" meta:resourcekey="Button1Resource1" Text="Button1" /><br />
    <asp:GridView ID="GridView1" runat="server" meta:resourcekey="GridView1Resource1">
    <Columns>
    <asp:BoundField HeaderText="Header1" meta:resourcekey="BoundFieldResource1" />
    <asp:BoundField HeaderText="Header2" meta:resourcekey="BoundFieldResource2" />
    </Columns>
    </asp:GridView>

    生成的resource如下:

     


    *********************************************************************

     

    6.     注意这里:meta:resourcekey="PageResource1" meta:resourcekey="Localize1Resource1" 这就表示这里的文字是从资源中读取的。

    7.     OK现在来做另一种语言的资源文件。很简单,copy Default.aspx.resxpaste一下,然后renameDefault.aspx.fr-fr.resx注意fr-fr是你要做的语言的名字。大家如果看dvdrip的话,应该觉得这跟字幕文件很像吧?

    8.     有人说我怎么知道那个语言叫什么名字呢?很简单,打开ietools->internet options -> languages -> add,方框中间的就是了。

    9.     现在开始编辑其他资源的文字。打开Default.aspx.fr-fr.resx,对照着原来的内容,把里面的内容改成法语的。

    10. 到此为止,我们就完成了第一阶段。ASP.Net会根据用户的语言偏好来选择显示的语言。把IE里的设置改一下,在我们刚说过的地方改成fr-fr,打开这一页看看?如果是法语,恭喜你。如果不是,回头重做……

    11. OK,下一步,我们要允许用户选择自己的语言,而不是自动。我们会用cookie存取用户的选择。在Application级别,我们读取这个cookie并设置适当的cultureuiculture。当然,第一次进来的时候,我们还是要读取浏览器的设置,这个可以从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. 打开来看一看吧!

  • 相关阅读:
    GeoProcessor执行工具参数设置
    matlab为影像制作散点图
    无法连接SVN
    STM32例程之USB HID双向数据传输(源码下载)【转】
    USB仪器控制教程
    STemWin5.22移植笔记(flyheart)
    STemWin5.22移植笔记【转】
    [STemWin教程入门篇]第二期:emWin5.xx的详细移植步骤
    [STemWin教程入门篇] 第一期:emWin介绍
    TI推出一款强大模拟设计与仿真工具TINA-TI 9.
  • 原文地址:https://www.cnblogs.com/luoyaoquan/p/2035265.html
Copyright © 2011-2022 走看看