C#(国际化介绍)

以前一直就想做那种中英文切换的功能,可一直没有时间,现在终于有时间了,最近辞职了就开始研究那个国际化在网上找了点资料后,自己慢慢做个例子如下
在这里了为方便说明就做中英文切换
个人理解的原理如下:
我们现在做的是中英切换的所以我们会用到两个库,一个中文,一个英文
当我们点那个英文的时候从连接英文库,当我们点中文的时候连接中文的库,就这么简单
其次还有一点要说明的是有些非动态的文本(导航之类)怎么来处理切换呢?
在这里我们就会用到资源文件
在这里我们先创建一个用户自定义控件
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="header.ascx.cs" Inherits="UserControls_header" %>
<style type="text/css">
    .a
    {
        text-decoration: none;
    }
</style>
<div>
    <div style="float: left;">
        <ul>
            <li>
                <asp:Literal ID="Literal1" runat="server" meta:resourcekey="Literal1Resource1"></asp:Literal></li>
            <li>
                <asp:Literal ID="Literal2" runat="server" meta:resourcekey="Literal2Resource1"></asp:Literal></li>
            <li>
                <asp:Literal ID="Literal3" runat="server" meta:resourcekey="Literal3Resource1"></asp:Literal></li>
            <li>
                <asp:Literal ID="Literal4" runat="server" meta:resourcekey="Literal4Resource1"></asp:Literal></li>
        </ul>
    </div>
    <div style="float: right;">
        <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click"
            meta:resourcekey="LinkButton1Resource1">English</asp:LinkButton>
        <asp:LinkButton ID="LinkButton2" runat="server" OnClick="LinkButton2_Click"
            meta:resourcekey="LinkButton2Resource1">中文</asp:LinkButton>
    </div>
</div>
然后点生成本地资源
这样你会发现你那个目录里多了如下东西,那个header.ascx.en.resx是我自己手添加的header.ascx.resx是自动生成的

现在来给你看一下,


现在我们来看一下那个header.ascx.resx和header.ascx.en.resx里的设置



在这里可能大家会有点明白了,以上两个资源文件就是为了做切换用的()
第一个是中文的,也就是当我点中文的时候他会是显示1,2,3,4,5反之会是one,two,three,four
当这些都做好以后,后面就比较简单了
在 Global.asax 里边添加
void Application_BeginRequest(object sender, EventArgs e)
    {
        string lang = "zh-cn";//default to the invariant culture
        HttpCookie cookie = Request.Cookies["Language"];
        if (cookie != null)
          lang = cookie.Value;
        System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(lang);
        System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
    }
控制语言
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class UserControls_ChangeLanguage : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        Response.Cookies["Language"].Value = "en-us";
        Response.Redirect("~/default.aspx");
    }
    protected void LinkButton2_Click(object sender, EventArgs e)
    {
        Response.Cookies["Language"].Value = "zh-cn";
        Response.Redirect("~/default.aspx");
    }
}
希望能对大家有帮助!如果有些的不好的地方也希望大家多提意见。。。。
忘了说了本人正在找工作,以前公司网站http://www.pboedu.com/,最近帮别人做的网站http://www.mbaudiolab.com/index.aspx
简历如果有意向请联系。。。



--------------------------
新闻:苹果开始大规模测试iPhone推送提醒
网站导航: 博客园首页  新闻  .NET频道  社区  博问  闪存  找找看

posted on 2009-05-19 12:48  大飞-q4444zpf  阅读(495)  评论(0编辑  收藏  举报

导航