c# - Multilingual site not changing language -


my site has in english , spanish user should able select language in profile page.

i have structure. http://screencast.com/t/arrny8ydchm

on search input have this

         <input type="text" placeholder="@resource.searchboxwatermark" class="form-control" name="top-search" id="top-search"> 

then have profile edit view

@{     viewbag.title = "profile";     layout = "~/areas/globaladmin/views/shared/_layoutglobaladmin.cshtml"; } @using (html.beginform()) {     @html.antiforgerytoken()     <div class="wrapper wrapper-content">         <div class="row animated fadeinright">             <div class="col-md-4">                 <div class="ibox float-e-margins">                     <div class="ibox-title">                         <h5>profile detail</h5>                     </div>                     <div>                         <div class="ibox-content no-padding border-left-right">                             <img alt="image" class="img-responsive" src="~/images/profile_big.jpg">                         </div>                         <div class="ibox-content profile-content">                             <h4><strong>monica smith</strong></h4>                             <p><i class="fa fa-map-marker"></i> riviera state 32/106                             </p>                             <h5>                                 me                             </h5>                             <p>                                 lorem ipsum dolor sit amet, consectetur adipisicing elit, sed eiusmod tempor incididunt ut labore et dolore magna aliqua. ut enim ad minim veniam, quis nostrud exercitat.                             </p>                             <label class="radio-inline">@html.radiobutton("language", "english") english</label>                             <label class="radio-inline">@html.radiobutton("language", "spanish") spanish</label>                             <br/>                             <input type="submit" value="update" class="btn btn-primary"/>                         </div>                     </div>                 </div>             </div>         </div>     </div> } @{html.renderpartial("~/areas/globaladmin/views/shared/_toastr.cshtml");} 

and profile edit action:

[httppost]         public async task<actionresult> edit(formcollection formcollection)         {             try             {                 var client = authenticationhelper.getactivedirectoryclient();                 var user = (microsoft.azure.activedirectory.graphclient.user) await client.users.getbyobjectid(claimsprincipal.current.identities.first().name).executeasync();                 var extproplookupnamelanguage = $"extension_{settingshelper.clientid.replace("-", "")}_{"language"}";                 user.setextendedproperty(extproplookupnamelanguage, formcollection["language"]);                     await user.updateasync();                  try                 {                     string culture = string.empty;                     if (formcollection["language"].tostring() == "english")                     {                         culture = "en-us";                     }                     else if (formcollection["language"].tostring() == "spanish")                     {                         culture = "es-co";                     }                     var cultureinfo = new cultureinfo(culture);                     thread.currentthread.currentuiculture = cultureinfo;                     thread.currentthread.currentculture = cultureinfo.createspecificculture(cultureinfo.name);                     httpcookie langcookie = new httpcookie("culture", culture);                     langcookie.expires = datetime.now.addyears(1);                     system.web.httpcontext.current.response.cookies.add(langcookie);                     var toastrsuccess = "perfil actualizado satisfactoriamente";                     return redirecttoaction("edit", new { toastrsuccess = toastrsuccess });                  }                 catch (exception ex)                 {                     var toastrerror = ex.message;                     return redirecttoaction("edit", new { toastrerror = toastrerror });                 }              }             catch (exception ex)             {                 viewbag.toastrerror = ex.message;                 return redirecttoaction("edit", new { toastrerror = ex.message });             }         } 

however when select in radio button, spanish , search input watermark not changing spanish here:

http://screencast.com/t/78yqmemvx4qg

what missing here?

the reason setting threads uiculture , cultue current thread (the 1 executes edit action).at end returning redirect returns 302 status code client url of redirect action. once client receives it, issues additional request url, request handled arbitrary thread taken thread pool. threads ui culture not set spanish , reason resources don't work. need add code going parse language cookie on each incoming request(in case selecting language whole application).

you can achieve in multiple ways:

1) implement ihttpmodule , set culture in beginrequest:

   void context_beginrequest(object sender, eventargs e)    {       if (httpcontext.current.request.cookies["culture"] != null)       {         httpcookie cookie = httpcontext.current.request.cookies["culture"];         string lang = cookie.value;         var culture = new system.globalization.cultureinfo(lang);         thread.currentthread.currentculture = culture;         thread.currentthread.currentuiculture = culture;       }    } 

2) override onactionexecuting handler in base controller:

 protected override void onactionexecuting(actionexecutingcontext filtercontext)  {       if (httpcontext.current.request.cookies["culture"] != null)       {         httpcookie cookie = httpcontext.current.request.cookies["culture"];         string lang = cookie.value;         var culture = new system.globalization.cultureinfo(lang);         thread.currentthread.currentculture = culture;         thread.currentthread.currentuiculture = culture;       }       base.onactionexecuting(filtercontext);              } 

Comments