asp.net mvc 国际化(1) 国际化的基础
国际化主要在以下几个方面
1. 通常的文本国际化. 通过asp.net资源文件解决.
2. 前端国际化. 通过js语言包解决.
3. 后台输出的提示语言等的国际化.(比如说”该用户名不存在”)
4. 状态枚举的国际化.(比如说”正常”,”停止”等状态)
5. 数据库数据的国际化(比如说一级目录二级目录等文本)
asp.net mvc中的资源文件
本地文件: Views文件夹内. 用于给ASPX,ASCX,模板页等的国际化. 命名例如. Login.aspx.en-US.resx
<%= this.GetLocalResourceObject("First") %>全局文件: 站点根目录. 命名规则: 类名.语言代码.resx.
//页面
<%= this.GetGlobalResourceObject("Test","string1") %>//后台
类名.字段名
以声明方式设置 ASP.NET 网页的区域性和 UI 区域性
若要设置所有页的区域性和 UI 区域性,请向 Web.config 文件添加一个 globalization 节,然后设置 uiculture 和 culture 属性,如下面的示例所示:<globalization uiculture="es" culture="es-MX" />若要设置单个页的区域性和 UI 区域性,请设置 @ Page 指令的 Culture 和 UICulture 属性,如下面的示例所示:<%@ Page UICulture="es" Culture="es-MX" %>若要使 ASP.NET 将区域性和 UI 区域性设置为当前浏览器设置中指定的第一种语言,请将 UICulture 和 Culture 设置为 auto。也可以将该值设置为 auto:culture_info_name,其中 culture_info_name 是区域性名称。有关区域性名称的列表,请参见 CultureInfo。您可以在 @ Page 指令或 Web.config 文件中进行该设置。
用编程的方式设置ASP.NET网页的区域性和UI区域性
将页的 Culture 和 UICulture 属性设置为语言和区域性字符串(如 en-US)。这两个属性是页的内部属性,只能在页中使用。将当前线程的 CurrentUICulture 和 CurrentCulture 属性分别设置为 UI 区域性和区域性。CurrentUICulture 属性采用一个语言和区域性信息字符串。若要设置 CurrentCulture 属性,请创建 CultureInfo 类的一个实例并调用其 CreateSpecificCulture 方法。
//在aspx页面中protected override void InitializeCulture(){if (Request.Form["ListBox1"] != null){String selectedLanguage = Request.Form["ListBox1"];
UICulture = selectedLanguage ;Culture = selectedLanguage ;Thread.CurrentThread.CurrentCulture =CultureInfo.CreateSpecificCulture(selectedLanguage);Thread.CurrentThread.CurrentUICulture = new
CultureInfo(selectedLanguage);}base.InitializeCulture();
}
//在httpmodule中重新设置当前线程的CurrentUICulture和CurrentCulture属性
public void Init(HttpApplication context){context.PostAuthenticateRequest += new EventHandler(context_PostAuthenticateRequest);
}void context_PostAuthenticateRequest(object sender, EventArgs e){var httpContext = HttpContext.Current;try
{if (httpContext.Request.Cookies["lang"] != null){System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(httpContext.Request.Cookies["lang"].Value.ToString());
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(httpContext.Request.Cookies["lang"].Value.ToString());}}catch (Exception)
{ }}
通过以上的代码. 我们可以简单地完成国际化了.
具体操作可以看这里
待续
本人在长沙, 有工作可以加我QQ4658276