【问题标题】:Localization works on localhost but not in production enviroment本地化适用于本地主机,但不适用于生产环境
【发布时间】:2011-06-12 10:47:08
【问题描述】:

我有这个网站,支持英语和葡萄牙语。 在 localhost 中一切正常,内容根据名为“lang”的查询字符串参数进行翻译。

这段代码在每个页面中都发挥了作用:

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;

有什么线索吗?

提前致谢。

【问题讨论】:

    标签: asp.net localization


    【解决方案1】:

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

    首先,如果WebSiteMapGlobal.resx 是巴西葡萄牙语,则无需将pt-br 指定为文化,因为文化是中性

    问题可能是设置语言后调用base.InitializeCulture()造成的。您还应该发布一些关于您的页面执行的日志。

    另外,软件工程提示:您应该在 SetCulture() 之后从 void InitializeCulture() 调用 base.InitializeCulture()。结果是相同的(我只是要求您删除该调用),但从其覆盖中调用基方法是一个非常好的做法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多