发出调试自定义文化

时间:2009-09-29 08:30:06

标签: asp.net debugging localization globalization

我在本地计算机上调试时遇到自定义文化问题。我有一个网站,内部与外部用户有一个单独的resx文件(术语不同)

我们使用自定义区域en-GB-external和相关resx实现此目的。内部客户端将使用en-GB resx文件。

在调试时,在一台PC上,我只获取en-GB.resx文件,而不是en-GB-internal.resx文件。但是,如果我构建代码并将其放在服务器上,并从同一台PC浏览它的工作原理。

如果我在另一台PC上调试相同的代码(从svn检出),它可以正常工作。

在一台PC上进行调试时,我甚至可以从哪里开始查看为什么这不起作用?

2 个答案:

答案 0 :(得分:0)

也许检查IE的文化设置。

答案 1 :(得分:0)

我们遵循msdn实现自定义文化的例子。但是,我们会尽可能在页面生命周期的早期切换文化。通过让不同的用户登录2个不同的页面来解决上述问题。然后我们覆盖InitializeCulture:

protected override void InitializeCulture()
    {
        SetCulture("en-GB-Internal");
        base.InitializeCulture();
    }
public void SetCulture(string nameOfCulture)
    {
        CreateCultureCookie(nameOfCulture);
        SetCurrentThreadCultureFromCultureCookie();
    }

    public void CreateCultureCookie(string name)
    {
        CultureInfo culture = new CultureInfo(name);

        HttpCookie cultureCookie = new HttpCookie("CultureCookie", culture.Name);
        cultureCookie.Expires = DateTime.Now.AddDays(30);

        AddCookie("CultureCookie", cultureCookie);
    }
private void SetCurrentThreadCultureFromCultureCookie()
    {
        if (Request.Cookies["CultureCookie"] != null && Request.Cookies["CultureCookie"].Value != null)
        {
            CultureInfo culture = new CultureInfo(Request.Cookies["CultureCookie"].Value);
            Thread.CurrentThread.CurrentCulture = culture;
            Thread.CurrentThread.CurrentUICulture = culture;
        }
    }