每个页面上的InitializeCulture()是否必要?

时间:2012-03-14 10:58:38

标签: .net-4.0 localization asp.net-4.0 globalization

我有一个需要本地化的网络表单网站。我的意思是,它是本地化的,我只需要根据域设置正确的语言。类似的东西:

protected override void InitializeCulture()
{
    var i = Request.Url.Host.ToLower();
    var domain = i.Substring(i.Length - 2, 2);
    if (domain == "se")
    {
        Thread.CurrentThread.CurrentCulture =
            CultureInfo.CreateSpecificCulture("sv-SE");
        Thread.CurrentThread.CurrentUICulture = new
            CultureInfo("sv-SE");
    }
    else if (domain == "dk")
    {
        Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture("da-DK");
        Thread.CurrentThread.CurrentUICulture = new
            CultureInfo("da-DK");
    }
}

我的第一个问题是:我是否真的需要在每个页面上调用InitializeCulture()以获取正确的资源?

第二个问题。我也有一些全球资源。如果是第一个问题,那么它们也会正确设置吗?

聚苯乙烯。 uiCulture="auto"在webconfig中是不够的(长篇故事)。

2 个答案:

答案 0 :(得分:2)

是。你在做什么符合Microsoft-recommended method。 由于您的示例根据URL确定要使用的语言,因此每个页面请求可能需要不同的语言,因此您无法避免为每个页面执行此操作。

根据您的第二个问题,是的,所有资源加载都取决于CurrentCulture。因此,本地和全球资源都会受到文化初始化的影响。

答案 1 :(得分:2)

如果应用程序中的语言在页面基础上没有差异,那么将代码重用为已解答here是有意义的。 或者更好的是仍然使用http模块解释here