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
Post a Comment