Программно изменить язык файла ресурсов (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/

Я не использовал его, но я использовал другой код, который написал Рик, и это было на высшем уровне.

Другие вопросы по тегам