哪个事件将UICulture应用于Page

时间:2011-04-07 07:19:37

标签: asp.net localization

我知道如何通过创建资源文件将本地化应用于页面。但有一件事真的让我心疼,因为几天后,UIculture如何应用于屏幕背景中的ASP.NET页面?

想到的想法是在Page Life Cycle的事件中。 如果是,那么在哪个事件以及如何测试?

请澄清。 感谢

2 个答案:

答案 0 :(得分:3)

以声明方式设置ASP.NET网页的文化和UI文化

要为所有页面设置UI文化和文化,请将全球化部分添加到Web.config文件,然后设置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文化

  1. 覆盖页面的InitializeCulture方法。
  2. 在重写方法中,确定将页面设置为的语言和文化。
    • 注意:在创建控件或为页面设置属性之前,会在页面生命周期的早期调用InitializeCulture方法。因此,要读取从控件传递给页面的值,您必须使用Form集合直接从请求中获取它们。
  3. 通过以下方式之一设置UI文化和文化:
    • 将页面的Culture和UICulture属性设置为语言和文化字符串(例如,en-US)。这些属性是页面内部的,只能在页面中使用。
    • 分别将当前线程的CurrentUICulture和CurrentCulture属性设置为UI文化和文化。 CurrentUICulture属性采用语言和文化信息字符串。要设置CurrentCulture属性,请创建CultureInfo类的实例并调用其CreateSpecificCulture方法。
  4. C#代码示例:

    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();
    }
    

    请参阅下面的详细页面生命周期:

    1. 构造
    2. ProcessRequest
    3. FrameworkInitialize
    4. InitializeCulture
    5. 如果存在儿童控制
      1. AddParsedSubObject
      2. CreateControlCollection
      3. AddedControl
      4. ResolveAdapter
    6. DeterminePostBackMode
    7. OnPreInit
    8. OnInit
    9. TrackViewState
    10. OnInitComplete
    11. OnPreLoad
    12. OnLoad
    13. OnLoadComplete
    14. EnsureChildControls
      1. CreateChildControls
    15. OnPreRender
    16. OnPreRenderComplete
    17. SaveViewState
    18. OnSaveStateComplete
    19. CreateHtmlTextWriter
    20. RenderControl
    21. 渲染
      1. RenderChildren
      2. VerifyRenderingInServerForm
    22. OnUnload
    23. 处理

答案 1 :(得分:2)

web.config和页面标记中的设置外,还有页面方法InitializeCulture(),您可以覆盖它以包含额外的逻辑。

protected override void InitializeCulture()
{
   // include your extra logic
   //base.Culture
   base.InitializeCulture();
}