asp.net mvc - What's the best way to switch language resource files based on a querystring variable in mvc? -
i'm using mvc 4 , razor views. have app pulls resource files. there 1 set of resource files have request have translations in parts of site see resource files foreign languages come in.
part of application sends out referrals users , in referral there option set language shown (regardless of user-client set too). going set on querystring lang=es
. we're referencing resource variables in view @resources.templates.referralacceptance.defaultacceptancemessage
. if no lang value available in querystring need default culturecode sent client, if not available fall standard english version have.
i'm new resource files, particularly mvc. what's best way of me tackling this?
here have done in past:
in web.config
file, add following setting:
<system.web> <globalization enableclientbasedculture="true" /> </system.web>
this handle fallback instance, there no language set in query string.
now controller utilise query string "lang" parameter:
(i have following code in "basecontroller" , have controllers inherit this.)
add following override method controller:
protected override iasyncresult beginexecute(requestcontext requestcontext, asynccallback callback, object state) { var culture = requestcontext.httpcontext.request.querystring["lang"]; //!!check see if culture exists , valid before setting thread culture var cultureinfo = new cultureinfo(culture); thread.currentthread.currentculture = cultureinfo; thread.currentthread.currentuiculture = cultureinfo; return base.beginexecute(requestcontext, callback, state); }
this enables read "lang" value in query string , use set culture of thread. should override culture set enableclientbasedculture
setting.
Comments
Post a Comment