I am using resource files to switch languages in my web application which is build in mvc5
In index files its reading the culture value which i set.
I am calling the set culture method from layout.cshtml and calling its value with the following code.
@{
Layout = "~/Views/Shared/_Layout.cshtml";
if (!Request["dropdown"].IsEmpty())
{
Culture = UICulture = Request["dropdown"];
}
}
in index page the language is loading correctly but when from there when i go to the next page its loading the default language German but the resources reading from English resource file only.
Please help me on this..anybody
To change the current UI culture, you assign the CultureInfo object that represents the new UI culture to the Thread. CurrentThread. CurrentUICulture property.
In an ASP.NET Web page, you can set to two culture values, the Culture and UICulture properties. The Culture value determines the results of culture-dependent functions, such as the date, number, and currency formatting, and so on. The UICulture value determines which resources are loaded for the page.
for globally setting I suggest you to add the following lines to the global.asax.cs file: (in this example the culture sets to Israel hebrew )
protected void Application_Start()
{
//The culture value determines the results of culture-dependent functions, such as the date, number, and currency (NIS symbol)
System.Globalization.CultureInfo.DefaultThreadCurrentCulture = new System.Globalization.CultureInfo("he-il");
//System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = new System.Globalization.CultureInfo("he-il");
}
In web.config
I commented the following line inside and it worked fine for me.
<configuration>
<system.web>
<globalization culture="en-US" uiCulture="en-US" /> <!-- this only -->
</system.web>
</configuration>
You have to persist the information about current culture somewhere (I recommend cookie) and set thread culture to this cookie value (if present) - preferably in Application_BeginRequest
of your Global.asax
.
public ActionResult ChangeCulture(string value) {
Response.Cookies.Add(new HttpCookie("culture", value));
return View();
}
public class MvcApplication : HttpApplication {
protected void Application_BeginRequest() {
var cookie = Context.Request.Cookies["culture"];
if (cookie != null && !string.IsNullOrEmpty(cookie.Value)) {
var culture = new CultureInfo(cookie.Value);
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With