下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

总结:在ASP.Net 2.0中实现多语言界面的方法你造吗

作者:课课家     来源: http://www.kokojia.com/点击数:648发布时间: 2015-11-14 23:00:49

标签: ASPASP开发ASP教程

大神带你学编程,欢迎选课

小编等着你们的到来,共同探讨关于编辑语言的知识,我想大家会满载而归的。excel2010视频教程

1、跟以前一样做界面,只是注意,把所有需要有多语言界面的文字都用label来做
2、做完以后,在Solution Explorer里选中这个文件,选Tools->Generate Local Resource
3、你会发现生成了一个目录,App_LocalResources;这个目录里多了一个resx的文件。比如你的aspx文件是default.aspx,它就会生成一个叫做default.aspx.resx的文件。
4、打开这个文件看看,原来在label中的那些文字都跑到这里来了
5、打开原来的aspx文件看看source,会发现源码变了:excel2010教程

以下为引用的内容:
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="Default2" title="Untitled Page" Culture="auto" meta:resourcekey="PageResource1" UICulture="auto" %>
…………


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,打开这一页看看?如果是法语,恭喜你。如果不是,回头重做……

well高级语言的出现使得计算机程序设计语言不再过度地依赖某种特定的机器或环境。这是因为高级语言在不同的平台上会被编译成不同的机器语言,而不是直接被机器执行。最早出现的编程语言之一FORTRAN的一个主要目标,就是实现平台独立。[1]
虽然大多数的语言可以既可被编译又可被解译,但大多数仅在一种情况下能够良好运行。在一些编程系统中,程序要经过几个阶段的编译,一般而言,后阶段的编译往往更接近机器语言。这种常用的使用技巧最早在1960年代末用于BCPL,编译程序先编译一个叫做“0代码”的转换程序(representation),然后再使用虚拟器转换到可以运行于机器上的真实代码。这种成功的技巧之后又用于Pascal和P-code,以及Smalltalk和二进制码,在很多时候,中间过渡的代码往往是解译,而不是编译的。[1]
如果所使用的翻译的机制是将所要翻译的程序代码作为一个整体翻译,并之后运行内部格式,那么这个翻译过程就被成为编译。因此,一个编译器是一个将人可阅读的程序文本(叫做源代码)作为输入的数据,然后输出可执行文件(object code)。所输出的可执行文件可以是机器语言,由计算机的中央处理器直接运行,或者是某种模拟器的二进制代码。[1]
如果程序代码是在运行时才即时翻译,那么这种翻译机制就被称作直译。经直译的程序运行速度往往比编译的程序慢,但往往更具灵活性,因为它们能够与执行环境互相作用。[1]excel2010

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

更多视频课程文章的课程,可到课课家官网查看。我在等你哟。

赞(100)
踩(2)
分享到:
华为认证网络工程师 HCIE直播课视频教程