Как изменить локализацию страницы с помощью asp: DropDownList? - PullRequest
2 голосов
/ 24 марта 2011

У меня есть локализованное приложение, в котором пользователь может выбрать предпочитаемый язык в выпадающем меню. После события OnSelectedIndexChanged происходит обратная передача, и для CurrentThread.CurrentCulture должно быть установлено то, что выбирает пользователь.

Login.aspx.cs
public partial class Login : BasePage
{
   protected void LanguageDrop_changed(object sender, EventArgs e)
   {
       var lang = LanguageDropDown.SelectedValue;
       Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);
       Thread.CurrentThread.CurrentCulture = new CultureInfo(lang);
   }
}

Однако, это не работает правильно, потому что событие LanguageDrop_click срабатывает после InitializeCulture, поэтому инициализируется некоторая культура по умолчанию, элементы управления локализуются на язык по умолчанию, а затем устанавливается CurrentThread.CurrentCulture. Поэтому пользователю необходимо обновить страницу еще раз, чтобы увидеть ее на выбранном языке.

UPDATE: Я нашел частичный ответ: http://www.codeproject.com/Kb/aspnet/localizationByVivekTakur.aspx Он извлекает раскрывающееся значение языка в событии InitializeCulture () из коллекции Form

Ответы [ 2 ]

1 голос
/ 06 мая 2011

Лучшим ответом является либо предоставленная мной ссылка

http://www.codeproject.com/Kb/aspnet/localizationByVivekTakur.aspx Он извлекает значение раскрывающегося списка языков в событии InitializeCulture () из коллекции форм

или создаетResponse.Redirect, поэтому страница запрашивается снова, а затем устанавливается культура.

0 голосов
/ 24 марта 2011

По моему опыту, нет лучшего варианта, к сожалению, и вам придется выполнить другое обновление.Ваши рассуждения верны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...