asp.net全球化——让你的网站在中英文中自由切换

由于最近的一笔单子,为客户做的是代理签证、办理移民的网站,需要用到中英文切换,把我这个从未涉及过这一领域的人儿给小小的吓住了。不过吓归吓,还是要着手做的嘛。

中文的、英文的、百度上、谷歌上,到处搜这方面的资料,终于有点明白这属于全球化。

先是研究在web.config里加上

<system.web>
     <globalization Culture="en-us" UICulture="en-us" />
 </system.web>


接下来在研究如何通过代码修改这个值的时候,这条路没走得下去。

不死心,接着研究通过App_GlobalResources的方式,添加中英文的资源文件。终于算是走对一半了,可是最后遇到的问题是,用以下这样的代码要么只显示中文,要么只显示英文,把我给气得。

 Text="<% $ Resources:Resource, UserName %>" 

查看当前页面的culture值是什么,又是我想要的那个,为什么就是不变呢。

可是如果我在头部加上以下的代码的时候,改中文是中文,改英文是英方,我就奇了怪了,问题出在哪里了。

<%@ Page Culture="en-us" UICulture="en-us" %>

其实也是要感谢两篇文章

一是http://blog.csdn.net/rowland001/article/details/17279471

二是http://msdn.microsoft.com/zh-cn/library/bz9tc508(v=vs.80).aspx

其实前几天就看过第二篇文章,没有在意,今天再回看,突然明白了。

<%@ Page Language="VB" uiculture="auto" %>
<%@ Import Namespace="System.Threading" %>
<%@ Import Namespace="System.Globalization" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 
  1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">
    Protected Overrides Sub InitializeCulture()
        If Request.Form("ListBox1") IsNot Nothing Then
            Dim selectedLanguage As String = _
                Request.Form("ListBox1")
            UICulture = Request.Form("ListBox1")
            Culture = Request.Form("ListBox1")
            Thread.CurrentThread.CurrentCulture = _
                CultureInfo.CreateSpecificCulture(selectedLanguage)
            Thread.CurrentThread.CurrentUICulture = New _
                CultureInfo(selectedLanguage)
        End If
        MyBase.InitializeCulture()
    End Sub
</script>
<html>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ListBox ID="ListBox1" runat="server">
            <asp:ListItem Value="en-US" 
                Selected="True">English</asp:ListItem>
            <asp:ListItem Value="es-MX">Español</asp:ListItem>
            <asp:ListItem Value="de-DE">Deutsch</asp:ListItem>
        </asp:ListBox><br />
        <asp:Button ID="Button1" runat="server" 
            Text="Set Language" 
            meta:resourcekey="Button1" />
        <br />
        <asp:Label ID="Label1" runat="server" 
            Text="" 
            meta:resourcekey="Label1" />
        </div>
    </form>
</body>
</html>

受这段代码的启发,我最后是这样成功滴。

先在项目中添加这个文件夹,同时创建两个资源文件,一个中文,一个英文。

 



 以下是两个资源文件的内容 :

 

 

我在要用的时候是这样滴

<asp:Literal ID="Literal14" Text="<% $ Resources:Resource, UserName %>" runat="server"></asp:Literal>


在app_code里增加一个basepage文件,如下所示:

 

最后,在每一个需要引用的页里修改

本来引用的system.web.ui,page,现在改成引用basepage.

页面上,想怎么换就怎么换啦。

Master页里增加:

<a href="?currentculture=zh-cn">中文(中国)</a>
<a href="?currentculture=en-us">English(USA)</a>

页面效果看一看:

 


 

要中文是中文,要英文是英文,是不是一下子心情爽朗了许多呢!
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
此文档是从实际项目总结出来的,互联网上只有“在单一页面进行语言切换”的教程, 没有“一键切换”的解决方案,更没有同时把5种读取资源文件总结在一起的demo。 本文档重点 1.多种读取方式 2.一键全站切换 步骤 一:新建一个asp.net 空 web应用程序“Internationalization”(图1) 二:右键“Internationalization”--->添加--->添加ASP.NET文件夹--->App_GlobalResources 三:右键“App_GlobalResources”--->添加--->新建项--->资源文件--->GlobalLanguage.resx 四:在GlobalLanguage.resx里添加键值对.(图二) 五:连续复制“GlobalLanguage.resx”两次到“App_GlobalResources”下面,并修改名称为 GlobalLanguage.en-US.resx GlobalLanguage.zh-CN.resx 说明:(为什么会有三个文件呢?系统必须有一个默认文件“GlobalLanguage.resx”,两种语言两个文件.) 六:修改英文和文资源文件里的键值对。 说明(网上大多做法都是把语言设置为浏览器自动识别语言, 这种方式在实际项目一般不用,所以直接讲解用程序来控制) 七:添加language1.aspx (图3,4) 八:添加language2.aspx (图5),在设计模式下“工具”--->“生成本地资源”,会自动添加一个“App_LocalResources” 和第五步一样,添加再添加两个资源文件。 language2.aspx.zh-CN.resx language2.aspx.en-US.resx 说明(一键全站切换的实现方法有多种,这里只讲最有效的,编写一个基类,在里面设置一个全局变量lan,所有 页面都继承这个基类,再通过程序修改变量lan,用Session最简单,但是用户过多时对内存的消耗很大, 还可以用数据库和配置文件,但是最好用Cookie,所以下面以Cookie为例子) 九:新建一个母板页“language.Master”(图6,7) 十:添加language3.aspx (图8,9),必须继承Base类 十一:添加language4.aspx (图10),必须继承Base类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值