У меня есть многоязычный сайт asp.net.
есть главная страница и default.aspx.
Я поместил две кнопки на главной странице - одну, чтобы нажимать, когда я хочу изменить язык на английский, вторую - на польский. Конечно, я хочу изменить язык после нажатия на эти кнопки (и все изменения должны автоматически появиться на странице)
вот код для обоих:
protected void EnglishButton_Click(object sender, ImageClickEventArgs e)
{
string selectedLanguage = "en-US";
//Sets the cookie that is to be used by InitializeCulture() in content page
HttpCookie cookie = new HttpCookie("CultureInfo");
cookie.Value = selectedLanguage;
Response.Cookies.Add(cookie);
Server.Transfer(Request.Path);
}
protected void PolishButton_Click(object sender, ImageClickEventArgs e)
{
string selectedLanguage = "pl-PL";
//Sets the cookie that is to be used by InitializeCulture() in content page
HttpCookie cookie = new HttpCookie("CultureInfo");
cookie.Value = selectedLanguage;
Response.Cookies.Add(cookie);
Server.Transfer(Request.Path);
}
в default.aspx.cs У меня есть InitializeCulture ():
protected override void InitializeCulture()
{
HttpCookie cookie = Request.Cookies["CultureInfo"];
// if there is some value in cookie
if (cookie != null && cookie.Value != null)
{
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(cookie.Value);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(cookie.Value);
}
else // if none value has been sent by cookie, set default language
{
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture("pl-PL");
Thread.CurrentThread.CurrentUICulture = new
CultureInfo("pl-PL");
}
base.InitializeCulture();
}
я добавил файлы ресурсов и в одной метке я показываю реальную культуру:
Welcome.Text = "Culture:" + System.Globalization.CultureInfo.CurrentCulture.ToString ();
проблема в том, что когда я запускаю это приложение и нажимаю, например, Английская кнопка (по умолчанию польский), эффекта нет. если я щелкну по нему второй раз или нажму F5, изменения вступят в силу, и на ярлыке культура отобразится как en-US.
Цаме случается, если я хочу изменить язык обратно на польский (он работает после второго щелчка (или одного щелчка и обновления)).
Что я делаю не так?