title: @Html.ValidationMessageFor not displaying localized error messages, only default language
body: <p>I have a small project where the user selects the language they want to use (EN or FR) when entering the application, and both languages have localized resource files. Once selected, the views will pick up either resource file without a problem. All text is displayed properly in their respective language.</p>
  
  <p>The issue is with the Validation messages. if the user submits and subsequently triggers one of the messages, they will always show up in english (the default resource). Code setup:-</p>
  
  <p><strong>Model</strong></p>
  
  <pre><code>[Required(ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "FirstNameValidation")]
      public string FirstName { get; set; }
  </code></pre>
  
  <p><strong>View</strong></p>
  
  <pre><code>            &lt;div&gt;
              &lt;h4&gt;@Resources.Global.FirstName&lt;/h4&gt;
              @Html.TextBoxFor(model =&gt; model.FirstName, new { @class = "form-control" })
              @Html.ValidationMessageFor(model =&gt; model.FirstName, "", new { @class = "text-danger" })
          &lt;/div&gt;
  </code></pre>
  
  <p><strong>Controller</strong></p>
  
  <pre><code>private static void SetCurrentCultureLanguage(string languageType)
      {
          CultureInfo ci = new CultureInfo(languageType);
          Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(languageType);
          Thread.CurrentThread.CurrentUICulture = ci;
      }
  </code></pre>
  
  <p>I tried an alternate method of setting the language with action filters + route data. When the user sets their chosen language, adding it to the routevalues like this...</p>
  
  <pre><code>RouteData.Values["language"] = language;
  </code></pre>
  
  <p>and then applying it to the action filter:-</p>
  
  <pre><code>public override void OnActionExecuting(ActionExecutingContext filterContext)
      {
          var language = (string) filterContext.RouteData.Values["language"];
  
          var ci = new CultureInfo(language);
          Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
          Thread.CurrentThread.CurrentUICulture = ci;
      }
  </code></pre>
  
  <p>Where is the @Html.ValidationMessageFor pulling it's resource selection from? Debugging both attempts above show that the CurrentCulture and CurrentUiCulture are set to "fr" throughout the process, but it doesn't want to recognise that the resource exists.</p>