网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.获取本机上配置好的Oracle服务名.
.ASP.NET 2.0“插件”说.
.Asp.net(C#)多文件上传.
.ASP.NET 2.0 X64的奇怪问题.
.Asp.net url分页的用户控件 .
.IIS URL重写模块和ASP.NET路由组.
.通过ASP.net程序创建域帐户故障.
.关于线程的参数、“返回值”、及.
.Access 通用数据访问类(asp.net .
.过滤ASP.NET输出HTML中的无用空格.
.FCKeditor2.2+ASP.NET2.0不完全攻.
.关闭按钮点击事件的捕捉 .
.DataSet 添加数据集、行、列、主.
.asp.net2.0 上传图片并为用户创建.
.ASP.NET2.0数据库之SQL Server安.
.ASP.NET对IIS中的虚拟目录进行操.
.用JS脚本实现CheckBoxList只能选.
.asp.net中XML文件作为中间件进行.
.通过web.config设置数据库连接串.
.如何解决Remoting无法传输存储过.

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

发表日期:2006-5-19


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

 

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

 

上一篇:GridView中利用隐藏的TemplateFied来进行数据访问 人气:6186
下一篇:网页乱码问题ASP.NET 人气:9439
浏览全部ASP.Net的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐