在ASP.Net 2.0中实现多语言界面的方法
发布时间:2006-05-24 22:19:33 来源:博客园 网友评论 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,会发现源码变了:
如果是其他的控件上的文字,基本上也是会自动生成的。比如button和gridview的:
生成的resource如下:

*********************************************************************
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.下一步,我们要允许用户选择自己的语言,而不是自动。我们会用cookie存取用户的选择。在Application级别,我们读取这个cookie并设置适当的culture和uiculture。当然,第一次进来的时候,我们还是要读取浏览器的设置,这个可以从Request.UserLanguages中获得。
12. 然后我们要有一页让用户选择语言,比如我们用两个button来做。在点击这个button之后,我们要设置这个cookie为适当的语言:
注意最后的Server.Transfer(Request.Path) ,这是为了重新读取这一页,这样这一页也会显示新选择的语言。
13. 最后我们要去掉ASP.Net的自动选择。从Default.aspx中去除:
Culture="auto" UICulture="auto"
14. 打开来看一看吧!
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.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.下一步,我们要允许用户选择自己的语言,而不是自动。我们会用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. 打开来看一看吧!
- 推荐阅讯
- ASP.NET底层架构探索之ASP.NET管道
- ASP.NET 2.0的视图状态持久性机制
- ASP.NET2.0服务器控件之类型化样式属性
- 在ASP.NET中为图像加入版权信息
- ASP.NET 2.0移动开发入门之使用样式
- 如何改变asp.net项目名称
- ASP.NET 翻页后继续维持排序
- 10天学会ASP.net之第九天
- 在ASP.NET中跨页面实现多选
- ASP.NET 2.0服务器控件之客户端功能
- 阅读排行
- 1.用ASP.NET 2.0设计网络在线投票系统
- 2.在ASP.Net 2.0中实现多语言界面的方法
- 3.轻松加密ASP.NET 2.0 Web程序配置信息
- 4.在ASP.NET中使用AJAX的简单方法
- 5..NET 2.0中的企业库异常处理块简述
- 6.面向.NET开发人员的Ajax 技术平台策略
- 7.揭开ASP.NET中Cookie编程的奥秘
- 8.ASP.NET2.0服务器控件之创建自定义控件
- 9.ASP.NET2.0中Gridview中数据操作技巧
- 10.ASP.NET 2.0发送电子邮件全面剖析之二
- 专题教程
- Windows Server-Windows Server文档-Windows Server新闻-Windows Ser PostgreSQL-PostgreSQL文档-PostgreSQL新闻-PostgreSQL专家
- WebLogic-WebLogic文档-WebLogic新闻-WebLogic专家 FreeBSD-FreeBSD文档-FreeBSD新闻-FreeBSD专家
- Linux-内核 GUI KDE Gnome DNS FTP 安全 安装-Linux专区 Windows-AD IIS ServerCore 虚拟化 安全 HPC-Windows专区
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
