title: How to prevent Thread.CurrentThread.CurrentCulture to switch to the default browser value after setting it manually?
body: <p>In my current application I want to implement ASP.Net localization with global resources. I have the problem, that after changing the CurrentThread.CurrentUICulture and CurrentThread.CurrentCulture and changing to another page, these values are overwritten by the browser default values.</p>
  
  <p>I have a DropDownList that enables a selection between different languages. In the ItemChanged Event I store the culturename in the session, redirect to my defaultpage and use this code</p>
  
  <pre><code>protected override void InitializeCulture()
  {
      System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE");
      System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
      base.InitializeCulture();
  }
  </code></pre>
  
  <p>After switching to another contentpage, that does not override InitializeCulture I'm back to the default browser language. How can I make that persistent?</p>
  
  <p>What options do I have? The following come to my mind:  </p>
  
  <ul>
  <li>On every *.aspx page I do implement InitializeCulture</li>
  <li>I create a new class that derives from System.Web.UI.Page and overrides the InitializeCulture Eventhandler. Every *.aspx page I use derives from it.</li>
  </ul>
  
  <p>Isn't there a more "built-in" way? ASP.net offers such good localization support, so I guess there must be an easier/more efficient way to achieve my goal. Which one is there? </p>