ASP.NET Change Language / Culture At Runtime
By Robbe Morris
Here's a quick tip for setting user defined languages and cultures in ASP.NET applications at runtime.
We'll need to override the Page's InitializeCulture() method. The example below
iterates through all of the languages defined in the user's browser and sets
the current thread's culture to the first one it finds. The current thread's
culture is what drives .NET's dynamic handling of the proper culture for resources
files.
protected override void InitializeCulture()
{
CultureInfo cultureInfo = null;
if (Request.UserLanguages == null) return;
if (Request.UserLanguages.GetLength(0) <1) return;
foreach(string userLanguage in Request.UserLanguages)
{
cultureInfo = GetCultureInfo(userLanguage,true);
if (cultureInfo != null)
{
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureInfo.Name);
break;
}
}
}
protected virtual CultureInfo GetCultureInfo(string userLanguage,bool useUserOverride)
{
int semiColonIndex = userLanguage.IndexOf(";");
try
{
if (semiColonIndex != -1)
{
userLanguage = userLanguage.Substring(0,semiColonIndex);
}
return new CultureInfo(userLanguage,useUserOverride);
}
catch (ArgumentException) { return null; }
}
ASP.NET Change Language / Culture At Runtime (2539 Views)