| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
asp.net 制作多语言

作者:未知    文章来源:网络    点击数:    更新时间:2007-9-27
收藏此文到百度搜藏 百度搜藏| 新浪VIvi| 365key| Younote| 搜狐 | 博采中心| 你好BLOG| 亿友网摘| 网摘博客| POCO网摘| 和讯网摘|
  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. 打开来看一看吧!  
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 相关文章