title: How to change site language using Resources and CultureInfo in ASP .NET MVC?
body: <p>I have several resource files for each language I want to support, named like below:</p>
  
  <pre><code>NavigationMenu.en-US.resx
  NavigationMenu.ru-RU.resx
  NavigationMenu.uk-UA.resx
  </code></pre>
  
  <p>Files are located in <code>MySolution/Resources/NavigationMenu</code> folder.</p>
  
  <p>I have action which sets <code>CurrentCulture</code> and <code>CurrentUICulture</code> like below</p>
  
  <pre><code>public ActionResult SetLanguage(string lang)
  {
      try
      {
          Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang);
          Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(lang);
          return Redirect(Request.UrlReferrer.AbsoluteUri);
      }
      catch(Exception)
      {
          return RedirectToAction("Index");
      }
  }
  </code></pre>
  
  <p><code>lang</code> parameter values are <code>uk-UA</code>, <code>ru-RU</code> or <code>en-US</code> depending on what link in my view was clicked. Also I have web config globalization defined section:</p>
  
  <pre><code>&lt;globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="ru-RU" uiCulture="ru-RU" /&gt;
  </code></pre>
  
  <p>When my application starts I have Russian language as expected but when I try to change my language with <code>SetLanguage</code> action to English I get no language changes in my views. <code>NavigationMenu.SomeProperty</code> is still Russian. What am I missing?</p>