如何:为 ASP.NET 网页全球化设置区域性和 UI 区域性
若要设置单个页的区域性和 UI 区域性,请设置 @ Page 指令的 Culture 和 UICulture 属性,如下面的示例所示:
若要使 ASP.NET 将区域性和 UI 区域性设置为当前浏览器设置中指定的第一种语言,请将 UICulture 和 Culture 设置为 auto。也可以将该值设置为 auto:culture_info_name,其中 culture_info_name 是区域性名称。有关区域性名称的列表,请参见 CultureInfo。您可以在 @ Page 指令或 Web.config 文件中进行该设置。 以编程方式设置 ASP.NET 网页的区域性和 UI 区域性重写该页的 InitializeCulture 方法。 在重写的方法中,确定要为页设置的语言和区域性。 注意 InitializeCulture 方法在页生命周期的很早的时期调用,此时还没有为页创建控件,也没有为页设置属性。因此,若要读取从控件传递给页的值,必须使用 Form 集合直接从请求获取这些值。 以下列方式之一设置区域性和 UI 区域性: 将页的 Culture 和 UICulture 属性设置为语言和区域性字符串(如 en-US)。这两个属性是页的内部属性,只能在页中使用。 将当前线程的 CurrentUICulture 和 CurrentCulture 属性分别设置为 UI 区域性和区域性。CurrentUICulture 属性采用一个语言和区域性信息字符串。若要设置 CurrentCulture 属性,请创建 CultureInfo 类的一个实例并调用其 CreateSpecificCulture 方法。 下面的代码示例显示一个 ASP.NET 网页,该网页允许用户从下拉列表中选择他们的首选语言。该页导入两个命名空间,使得使用线程处理类和全球化类更加方便。 Visual Basic 复制代码
<script runat=”server”> Protected Overrides Sub InitializeCulture() If Request.Form(“ListBox1”) IsNot Nothing Then Dim selectedLanguage As String = _ Request.Form(“ListBox1”) UICulture = Request.Form(“ListBox1”) Culture = Request.Form(“ListBox1”) Thread.CurrentThread.CurrentCulture = _ CultureInfo.CreateSpecificCulture(selectedLanguage) Thread.CurrentThread.CurrentUICulture = New _ CultureInfo(selectedLanguage) End If MyBase.InitializeCulture() End Sub </script>
C# 复制代码
<script runat=”server”> 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(); } </script>
请参见其他资源 ASP.NET 全球化和本地化 ASP.NET 全球化和本地化