В моем текущем приложении я хочу реализовать локализацию ASP.Net с использованием глобальных ресурсов. У меня возникла проблема: после изменения CurrentThread.CurrentUICulture и CurrentThread.CurrentCulture и перехода на другую страницу эти значения перезаписываются значениями по умолчанию браузера.Как предотвратить Thread.CurrentThread.CurrentCulture, чтобы переключиться на значение браузера по умолчанию после его настройки вручную?
У меня есть DropDownList, который позволяет выбирать между различными языками. В ItemChanged Event я хранить culturename в сессии, перенаправление на мой defaultpage и использовать этот код
protected override void InitializeCulture()
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE");
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
base.InitializeCulture();
}
После переключения на другой contentpage, что не отменяет InitializeCulture Я вернулся к языку браузера по умолчанию. Как я могу сделать это упорным?
Какие у меня варианты? Следующие приходят на ум:
- На каждой странице * .aspx я делаю реализовать InitializeCulture
- создать новый класс, производный от System.Web.UI.Page и подменяет InitializeCulture EventHandler. Каждая страница * .aspx, которую я использую, извлекается из нее.
Нет ли более «встроенного» способа? ASP.net предлагает такую хорошую поддержку локализации, поэтому я думаю, что для достижения моей цели должен быть более простой/эффективный способ. Какой из них?
Я решил создать новый класс, который происходит из System.Web.UI.Page и переопределяет в нем InitializeCulture. Каждый контент-контент происходит от этого класса. – citronas
Это хорошая привычка всегда использовать базовую страницу. Затем вы можете переопределить базовые методы, подобные этому, без необходимости касаться каждого файла класса, чтобы изменить то, на что он наследует. – Chris