Программно изменить язык файла ресурсов (resx) в Code Behind
У меня есть приложение.Net в C#, и у меня есть структура файла что-то вроде:
App_LocalResources
- MyPage.aspx.resx
- MyPage.aspx.fr.resx
MyPage.aspx
MyPage.aspx.cs
Я пытаюсь программно изменить язык, который сообщает приложению, какой файл resx использовать. Я хочу сделать это в коде файла (MyPage.aspx.cs).
Я пробовал оба из них в событиях OnPreRender, Page_Init и Page_Load:
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA");
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA");
и это не работает. Страница по-прежнему показывает английский язык. Файл MyPage.aspx имеет это:
<h3><asp:Literal runat="server" Text="<%$ Resources:pageTitle %>" /></h3>
Обратите внимание, что меня не волнует язык браузера. Это должно перевесить это. Я искал в Интернете это решение безрезультатно. Все примеры показывают переключение языка, как я уже пробовал (выше), однако это не влияет на используемый файл ресурсов. Есть идеи?
2 ответа
Вы должны переопределить метод InitializeCulture и поместить туда свой код. Пример:
protected override void InitializeCulture()
{
base.InitializeCulture();
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA");
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA");
}
Надеюсь это поможет
Вы также можете посмотреть на это
http://www.west-wind.com/presentations/wwDbResourceProvider/
Я не использовал его, но я использовал другой код, который написал Рик, и это было на высшем уровне.