首 页  资讯中心 下载中心 资讯教程 最新下载 发布软件 发布文章 网通站 电信站繁體中文
设为首页
加入收藏
联系我们
 
您当前的位置:曾子源码软件下载站 -> 网络编程 -> asp.net -> 文章内容 退出登录 用户管理
热门文章
· 常用C,VC,C++书籍下..
· 新概念英语视频教程..
· 常用 JAVA JAVA2 J..
· 《梦幻麻将馆9雀圣争..
· 新东方英语视频教程..
· 常用VB,Visual Basi..
· [组图] After Effect..
· WINDOWS 所有系统文..
· [组图] 让机器运行多..
· 全美经典学习指导系..
相关文章
· 在ASP.NET应用中插入..
· 在ASP.NET中自动给U..
· 在ASP中使用数据库
· 在ASP.NET中实现Mod..
· 在ASP.NET中实现Mod..
· 在ASP.NET中实现MVC..
· 在ASP.NET中实现Mod..
· 在ASP.NET中实现Mod..
· 在asp.net中为Web用..
· 在asp.net中为Web用..
在ASP.Net 2.0中实现多语言界面的方法
作者: 博客园 Myrat     来源:不详  发布时间:2006-5-27 16:43:52  发布人:admin

减小字体 增大字体

     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.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. 打开来看一看吧!
  
  
    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
[] [返回上一页] [打 印] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [发表评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 网站信息排名查询
Copyright © 2004-2006 Zasp.Net. All Rights Reserved .