2012-03-14 63 views
1

我有一个需要本地化的web表单站点。我的意思是,它是本地化的,我只需要根据域名设置正确的语言。喜欢的东西:每个页面上的InitializeCulture()都需要吗?

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()为正确的资源的每一个页面上加载?

第二个问题。我也有一些全球资源。如果对第一个问题是肯定的,他们是否也会正确设置?

Ps。 uiCulture="auto"enableClientBasedCulture="true"在webconfig中是不够的(长篇故事)。

回答

2

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

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

2

如果应用程序中的语言在页面间不存在差异,那么重新使用代码作为回答here是有意义的。 或更好的仍然使用http模块解释here

+0

有趣。将研究它! – 2013-05-15 15:50:39