Search code examples
asp.netglobalization

Why is InitializeCulture not being called


I have a base page class that implements protected override void InitializeCulture() however it is never called during the page rendering process?

I have added the following code to my base page

        protected override void InitializeCulture()
        {
            var cultureCode = ConfigManager.GetConfig("System:CultureCode") ?? "en-GB";
            var cultureInfo = CultureInfo.CreateSpecificCulture(cultureCode);
            Thread.CurrentThread.CurrentCulture = cultureInfo;
            Thread.CurrentThread.CurrentUICulture = cultureInfo;
        }

The value returned by ConfigManager.GetConfig("System:CultureCode") is en-US.

The overridden method is never called and the txtCulture.Text = Thread.CurrentThread.CurrentCulture.Name in my test page always returns en-GB!


Solution

  • Did you inherit BasePage from System.Web.UI.Page, I reproduced it worked

    public class BasePage : System.Web.UI.Page
        {
            protected override void InitializeCulture()
            {
                var cultureCode = ConfigManager.GetConfig("System:CultureCode") ?? "en-GB";
                var cultureInfo = CultureInfo.CreateSpecificCulture(cultureCode);
                Thread.CurrentThread.CurrentCulture = cultureInfo;
                Thread.CurrentThread.CurrentUICulture = cultureInfo;
            }
        }
    

    Default page

    public partial class _Default : BasePage
    {
           protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {                   
                } 
            }
    }