Search code examples
c#asp.netglobalization

Changing the language of your web application c#


I've done some ressearch and the only way to do this seem to override the InitializeCulture method in every page of the web application. Thing is, my application has 80 pages, so I was wondering if there was another way of doing this that would be easier.

 protected override void InitializeCulture()
    {
        if (Session["CultureLang"] != null)
        {
            string selectedLanguage = Session["CultureLang"].ToString();
            if (selectedLanguage == "True")
                selectedLanguage = "en-US";
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
        }
        base.InitializeCulture();
    }

I have this in the web.config file:

<globalization culture="auto" uiCulture="auto" requestEncoding="UTF-8" responseEncoding="UTF-8" fileEncoding="UTF-8"/>

NOTE: My button to change the language is in a custom webcontrol, if that changes anything.


Solution

  • How about adding a base class that contains culture aware code, then your 80+ pages inherit from this base class.

    Something like:

    public abstract class CultureAwarePage : Page
    {
       protected override void InitializeCulture() { ... }
    }
    
    public partial class MyPage1 : CultureAwarePage
    {
      ...
    }