ASP .NET Core 1.0 RTM Localization not working -


i've been trying implement localization asp .net core 1.0 rtm web app following microsofts documentation , can not work. problem i'm having it's displaying strings english resource file no matter how try setting culture.

if has 5 minutes of time, i'd grateful input.

here's startup.cs content regards localization:

public void configureservices(iservicecollection services) {   ...   services.addmvc()     .addviewlocalization(languageviewlocationexpanderformat.subfolder)     .adddataannotationslocalization();   services.addscoped<localizationfilter>();   services.addlocalization(options => options.resourcespath = "resources");    var supportedcultures = new list<cultureinfo>{      new cultureinfo("en-us"),      new cultureinfo("sl-si"),      new cultureinfo("de-de"),      new cultureinfo("hr-hr")   };   services.configure<requestlocalizationoptions>(options =>   {      options.supportedcultures = supportedcultures;      options.supporteduicultures = supportedcultures;      options.defaultrequestculture = new requestculture(new cultureinfo("en-us"),          new cultureinfo("en-us"));   }); }  public void configure(iapplicationbuilder app, ihostingenvironment env,    iloggerfactory loggerfactory) {       ...       var supportedcultures = new list<cultureinfo>{          new cultureinfo("en-us"),          new cultureinfo("sl-si"),          new cultureinfo("de-de"),          new cultureinfo("hr-hr")       };       var requestlocalizationoptions = new requestlocalizationoptions       {          supportedcultures = supportedcultures,          supporteduicultures = supportedcultures,          defaultrequestculture = new requestculture(new cultureinfo("en-us"),              new cultureinfo("en-us"))        };        app.userequestlocalization(requestlocalizationoptions); } 

and how i'm changing culture inside onactionexecuting in actionfilter

actioncontext.httpcontext.response.cookies.append(     cookierequestcultureprovider.defaultcookiename,     cookierequestcultureprovider.makecookievalue(new requestculture(culture)),     new cookieoptions { expires = datetimeoffset.utcnow.addyears(1) }); cultureinfo.currentculture = culture; cultureinfo.currentuiculture = culture; 

i've tried doing on controller no luck.

then in views i'm using @inject iviewlocalizer localizer display localized strings @localizer["name"].

my resoucres located in folder resources/views/controllername so:

  • resources/views/controllername/viewname.en.resx
  • resources/views/controllername/viewname.sl.resx
  • ...

the displayed string .en resource file no matter how try thange culture. there i'm missing? there more i'm supposed do? seems problem i'm having setting language. based on documentation you're supposed set cookie response.cookies.append, i've tried cultureinfo.currentculture thread.currentthread.curentculture not awailable anymore.

i don't know i'm missing. ideas @ all?

you hitting following : https://github.com/aspnet/mvc/issues/4692

mainly take @ comment: https://github.com/aspnet/mvc/issues/4692#issuecomment-223671462

summary: can create resource filter in mvc workaround issue:

public class culturesettingresourcefilter : iresourcefilter, iorderedfilter {     public int order     {                 {             return int.minvalue;         }     }      public void onresourceexecuted(resourceexecutedcontext context)     {         // time response have been started, not try modify response     }      public void onresourceexecuting(resourceexecutingcontext context)     {         var culture = httpcontext.getroutevalue("your-culture-key-name")?.tostring();         // set culture here         cultureinfo.currentculture = culture;         cultureinfo.currentuiculture = culture;     } }  services.addmvc(o => {     o.filters.add(new culturesettingresourcefilter()); }); 

Comments