asp.net 国际化

本文介绍了一个简单的 ASP.NET 应用程序国际化实现过程,包括登录页面的多语言支持和资源文件的使用方法。

以前只听说国际化自已却没有亲自动手做,知道是不同文字的翻译

下面这就是我简单实现国际化的例子,希望对刚接触国际化的朋友有帮助

这是我的登录窗口(其实没有什么,只是感觉测试好看一点)

这是后台代码

 protected void Button1_Click(object sender, EventArgs e)
    {
        Session["language"] = DropDownList1.SelectedValue;
        Response.Redirect("ChangeLanguage.aspx");
    }

下面是解资源方面(看到App_GlobalResource文件夹了吗?里面有两个资源文件)

(也许有的朋友会问到,我做的是locakResource(本地)而你这个是GlobalResource(全局),其实说到本地或者全局,)

(没什么大的区别,就像string和  StringBuilder差不多,本地说通一点,就是每一张页自动产生一个资源文件 Tools 下有一个LocalResources)

你点一下它就会自动生成AppLocalResources文件夹(它下面会有每个页生成的资源文件)

这是public.en.resx文件(即英文)

这是public.resc(即中文)

这是跳转到ChangeLanguage.aspx后台代码

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Threading;
using System.Globalization;

public partial class ChangeLanguage : System.Web.UI.Page
{

    protected override void InitializeCulture() //这是个方法就是在加载之前进行浏览器判断(想深入了解自已可以去研究)
    {
        if (Session["language"] != null)
        {
            //加载语言信息               
            InitializeCulture(GetMessageByLanguage(Session["language"].ToString(), "zh-cn", "en-us"));
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
      
        Label1.Text = GetGlobalResourceObject("public", "SystemName").ToString();--这个public是资源文件名 SystemName(是文件Name)
       
    }
   
   
    public static string GetMessageByLanguage(string Language, string zhMessage, string enMessage)
    {
        if (Language.Trim().ToUpper() == "CHINESE")  //session["language"]
        {
            return zhMessage; //就返回中文
        }
        return enMessage; //要不就返回英文
    }

//就这个方法很重要呵呵,几句话
    public static void InitializeCulture(string UserCulture)
    {
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(UserCulture);
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(UserCulture);
    }


}

这是前台<asp:Label ID="Label1" runat="server" Text="<%$ Resources:public,SystemName%>" Width="221px"></asp:Label>

Text="<%$ Resources:public,SystemName%>"有这个东西会显示

同时你也会看到有个小点,鼠标放在上面,你会看到提示

光说不练也不行(下面是中文和英文)

运行效果:

 


 

就实现了国际化,就写到这里,以后加深了在写

此文档是从实际项目中总结出来的,互联网上只有“在单一页面进行语言切换”的教程, 没有“一键切换”的解决方案,更没有同时把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、付费专栏及课程。

余额充值