2011-01-20 84 views
0

我有英文和葡萄牙语支持的本网站。 在本地主机中一切正常,内容基于名为“lang”的querystring参数进行翻译。本地化在本地主机上运行,​​但不在生产环境中

的代码块这使得捉弄,让每一页:

protected override void InitializeCulture() 
{ 
    SetCulture(); 
} 

private void SetCulture() 
{ 
    var logger = Util.GetLogger(); 

    string lang = Request.QueryString["lang"]; 
    if (string.IsNullOrEmpty(lang)) { lang = "pt-br"; } 

    string sessionLang = (string)Session["lang"]; 


    if (sessionLang != lang) 
    { 
     Session["lang"] = lang; 
    } 

    logger.Log(string.Format("Culture {0} found",lang)); 

    UICulture = lang; 
    Culture = lang; 

    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang); 
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang); 

    logger.Log(string.Format("Cultura {0} set", lang)); 

    base.InitializeCulture(); 
} 

得益于记录器,我可以肯定地说,这种方法被称为在两种情况下(生产和本地主机)。

我在App_GlobalResources文件夹中有两个资源文件: -WebSitemapGlobal.en-us.resx; -WebSitemapGlobal.resx;

任何线索?

在此先感谢。

回答

0

我可以看到你对.NET中的本地化有点困惑。

首先,如果WebSiteMapGlobal.resx是在巴西葡萄牙语,没有必要指定pt-br文化,因为文化是中性

也许,这个问题是由于设置语言后调用base.InitializeCulture()。你也应该发布一些关于你的页面执行的日志。

此外,软件工程提示:您应该在SetCulture()之后拨打base.InitializeCulture()InitializeCulture()开始。结果是一样的(我只是要求你去掉那个调用),但是从它的覆盖调用一个基本方法是一个非常好的习惯。

相关问题