title: Validation error messages don't change after culture change
body: <p>I'm currently working on a <strong>MVC4</strong> application that needs to support 2 languages.
  I'm using <strong>DataAnnotations</strong> with resources in the form:</p>
  
  <pre><code>public class SignupModel
  {
      [Required(ErrorMessageResourceName = "Registration_ValidEmailRequired", ErrorMessageResourceType = typeof(Validation))]
      [Email(ErrorMessageResourceName = "Registration_ValidEmailRequired", ErrorMessageResourceType = typeof(Validation))]
      public string Email { get; set; }
  
      [Required(ErrorMessageResourceName = "Registration_PasswordRequired", ErrorMessageResourceType = typeof(Validation))]
      [StringLength(100, MinimumLength = 8, ErrorMessageResourceName = "Registration_PasswordInvalidLength", ErrorMessageResourceType = typeof(Validation))]
      [DataType(DataType.Password)]
      public string Password { get; set; }
  }
  </code></pre>
  
  <p>I have created a <strong>global action filter</strong> that reads a language cookie if exists, and sets the current <strong>culture</strong> and <strong>uiculture</strong> accordingly. If the cookie doesn't exist it creates the cookie with the current culture. This is how the <strong>OnActionExecuting</strong> looks like in the filter:</p>
  
  <pre><code>public void OnActionExecuting(ActionExecutingContext filterContext)
  {
      var langCookie = GetOrSetLanguageCookie(filterContext.HttpContext);
      var culture = new CultureInfo(langCookie.Value);
  
      Thread.CurrentThread.CurrentCulture = culture;
      Thread.CurrentThread.CurrentUICulture = culture;
  }
  </code></pre>
  
  <p>Everything works as expected except when this happens:</p>
  
  <ol>
  <li>Post from HTML form (let's say a fancy signup form in the home with no client side validation so nothing on its fancy layout is broken) to the Signup action in the Home controller.</li>
  <li>If the data posted have errors, they are displayed in the language matching the current culture. (nice and expected).</li>
  <li>Change the language, by using the drop down I enabled in the client which actually post back to the server. (I haven't implemented the <strong>PRG</strong> patter here yet, so I see the warning about the same data being re-posted).</li>
  <li>The view is rendered with the language I picked, however the validation messages remain in the same language they were initially.</li>
  </ol>
  
  <p>If I debug the action filter handling the language switch, I can see the ModelState holding the errors in the original language, so my guess is validation only happens once in the server.
  I guess I need to clean the ModelState and force validation, but I was wondering if this is a hack and if there is a better way to deal with this issue.</p>
  
  <p>Thanks!
  R.</p>