Вы должны сделать это (= переопределить InitializeCulture) в вашем классе Page. Он не работает на главной странице (MasterPage является производной от Control, а не от страницы). Я бы посоветовал вам реализовать базовый класс, производный от Page, и выводить каждую веб-форму из этого класса, тогда вам также придется писать код только один раз. Всегда удобно иметь свой базовый класс.
В Visual Studio вы добавляете новый класс PageBase.cs:
public class FormBase : Page
{
protected override InitializeCulture()
{
if (Request.Form["lbCulture"] != null)
{
String selectedLanguage = Request.Form["lbCulture"];
UICulture = selectedLanguage;
Culture = selectedLanguage;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
}
base.InitializeCulture();
}
}
Текущая культура либо сохраняется в каком-либо раскрывающемся списке, в сеансе, либо передается по строке запроса. Я использовал список в образце.
А затем вы выводите свою веб-форму с этой страницы следующим образом:
public class Default : FormBase // instead of deriving from Page