本地化ASP.NET应用程序:为什么我不应该使用Page.Culture?

时间:2016-02-01 17:12:56

标签: c# asp.net .net localization

到目前为止,我认为ASP.NET网络表单本地化可以通过覆盖Page.InitializeCulture并根据某些用户选择设置Page.Culture和/或Page.UICulture来实现。实际上,documentation of Page.InitializeCulture even says so

  

InitializeCulture方法不包含编码逻辑。扩展Page类功能的控件开发人员可以覆盖InitializeCulture方法,以初始化页面的CultureUICulture信息。

但是,在指向CultureUICulture的链接后会产生以下警告:

  

此API支持产品基础结构,不能直接在您的代码中使用。

是警告垃圾还是我走错了路线,本地化应该以其他方式完成?

1 个答案:

答案 0 :(得分:1)

我相信,预期的方式是:

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");

MSDN上的Page.UICulture条目后来说:

  

此属性是CurrentThread属性的快捷方式。该   culture是执行线程的属性

我会说这个警告大多是无意义的,因为它只是执行它的线程方法的快捷方式。

我个人不会在Page上设置文化,我会在global.ascx的某处做。例如。 Application_BeginRequestApplication_Start 这样就可以在页面生命周期开始之前设置文化。

潜在地,这是警告指向你的方向。