views:

27

answers:

2

I am having an issue with a custom culture when debugging on my local machine. I have a web site that has a separate resx file for internal vs external users (terminology is different)

We implement this using a custom culture en-GB-external and associated resx. Internal clients would use the en-GB resx file.

On one PC when debugging, I only get the en-GB.resx file, not the en-GB-internal.resx file. However if I build the code and drop it on a server, and browse from the same PC it works.

If I debug the same code (checked out from svn) on another PC it works fine.

Where can I even start looking to determine why this doesn't work when debugging on one PC?

A: 

Check IE's culture settings perhaps.

leppie
I have - and if it was IE, wouldn't it also not work for the remote site?
Bernard
A: 

We followed the msdn example of implementing custom cultures. However we then switch cultures as early in the page lifecycle as possible. The issue above was fixed by having the different users login on 2 different pages. We then override the 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;
        }
    }
Bernard