以前只听说国际化自已却没有亲自动手做,知道是不同文字的翻译
下面这就是我简单实现国际化的例子,希望对刚接触国际化的朋友有帮助
这是我的登录窗口(其实没有什么,只是感觉测试好看一点)
这是后台代码
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%>"有这个东西会显示
同时你也会看到有个小点,鼠标放在上面,你会看到提示
光说不练也不行(下面是中文和英文)
运行效果:
就实现了国际化,就写到这里,以后加深了在写