Reputation: 800
I am creating a website that will be multilingual in nature. I am providing a functionality whereby the user can select desired language by selecting it from the drop down.
Now my problem starts here (when a language is selected from the drop down). I am currently implementing 2 languages English and Arabic.
Problem is when the user select Arabic from the drop down on the login page the page is refreshed and the browser loads all the content in Arabic.
But...
When i select English back again, the page refreshes but the language content does not change !!
i have check the code and the values (culture name value) are being applied correctly!!
Any clues as to what is wrong and where...
Here is my code...
protected override void InitializeCulture()
{
String selectedLanguage = string.Empty;
if (Request.Form["ddlLanguage"] != null)
{
selectedLanguage = Request.Form["ddlLanguage"];
CultureInfo ci = new CultureInfo(selectedLanguage);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
}
base.InitializeCulture();
}
Any help will be great !!
Thanks
Upvotes: 3
Views: 683
Reputation: 235
Check this article - How to create ASP.NET MVC multilingual web application ? We will see mainly two approaches-
Approach 1: Using Static Pages
Approach 2: Using Dynamic page with localized data at runtime
Upvotes: 0
Reputation: 9166
The Culture
settings must set on each request. It's not enough to set the Thread
cultures once when the selection changes.
In order to set the culture according to the user selection on each request, there are several possible ways.
Page_Init
event of the master page.MyBasePage
) for the content pages and override the InitializeCulture
method of that class. Then make all the content pages derive from the class instead of directly from Page
.Global.asax
.Regardless of which method you will use, the culture that the user has chosen must be available to the code that is going to set the culture on the thread. So when the user changes his/her selection, you must save that selection in a place where you can access it in the coming requests. This can also be solved in several possible ways. Here are some options:
ProfileProvider
, you could save the selection to the user's profile.Session
although that would mean that the user must re-select it whenever the Session
has been reset.For a more detailed exmple of how this could be done using Global.asax
and a cookie
, have a look over here.
Upvotes: 2