很多网站都有多种语言切换的功能,典型的是中、英文两种语言,本文介绍在ASP.NET中实现中、英文两种语言的完整细节。
一、打开Visual Studio 2005并新建一个解决方案,我们起名为MyWeb。
二、在MyWeb上新建一个网站,如下图所示:
三、为新建的网站上添加web.config文件,并在appSettings中加入DefaultCulture配置节:



此配置节表示默认语言为中文
四、为网站添加App_GlobalResources文件夹,并加入资源文件Strings.resx,在Strings.resx中配置如下图:
五、用同样的方法配置String.en-US.resx文件,如下图所示:
六、为网站添加全局应用程序类global.asax文件,并在其中加入如下代码:
{
try
{
if (Request.Cookies[ " CultureResource " ] != null )
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(Request.Cookies
[ " CultureResource " ].Value);
}
else
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo
(ConfigurationSettings.AppSettings[ " DefaultCulture " ].ToString());
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;
}
Resources.Strings.Culture = System.Threading.Thread.CurrentThread.CurrentCulture;
}
catch (Exception)
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(ConfigurationSettings.AppSettings
[ " DefaultCulture " ].ToString());
}
}
七、在网站中添加MyCulture类,系统会提示是否要加到App_Code文件夹下,选是。
MyCulture类的代码如下:
using System.Data;
using System.Configuration;
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;
/// <summary>
/// MyCulture 的摘要说明
/// </summary>
public class MyCulture
{
public MyCulture()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 获取语言设置字符串
/// </summary>
/// <returns></returns>
public static string GetCultureString()
{
if (Resources.Strings.Culture.ToString().ToUpper() == " en-US " .ToUpper())
{
return " En " ;
}
else
{
return " Cn " ;
}
}
/// <summary>
/// 更新用户语言设置
/// </summary>
/// <param name="culture"> 用户选择的语言 </param>
public static void UpdateCultureCookie( string culture)
{
if (HttpContext.Current.Request.Cookies[ " CultureResource " ] != null )
{
HttpContext.Current.Response.Cookies[ " CultureResource " ].Value = culture;
HttpContext.Current.Response.Cookies[ " CultureResource " ].Expires = System.DateTime.Now.AddDays( 30 );
}
else
{
HttpCookie cultureCookie = new HttpCookie( " CultureResource " );
cultureCookie.Value = culture;
cultureCookie.Expires = System.DateTime.Now.AddDays( 30 );
HttpContext.Current.Response.Cookies.Add(cultureCookie);
}
HttpContext.Current.Response.Redirect(HttpContext.Current.Request.Url.ToString());
}
}
八、好了,准备工作做好了,我们来完成页面的制作。打开Default.aspx,在页面中加入两个Label、两个TextBox、两个按钮,并将一个按钮的Text属性设为“中文”,另一个按钮的Text属性设为“English”,在Page_Load中加入如下代码:
{
if ( ! IsPostBack)
{
this .Label1.Text = Resources.Strings.Name;
this .Label2.Text = Resources.Strings.Password;
}
}
为两个按钮添加点击事件,并在其中编写点击代码:
{
MyCulture.UpdateCultureCookie( " zh-CN " );
}
protected void btn_English_Click( object sender, EventArgs e)
{
MyCulture.UpdateCultureCookie( " en-US " );
}
好了,大功告成,按F5运行,效果如下图所示:
看看切换中文和English是不是可以了。
下面是整个解决方案的源代码:
版权所有,转载必须注明出处。