Программно изменить язык файла ресурсов (resx) в Code Behind - PullRequest
8 голосов
/ 09 сентября 2009

У меня есть приложение .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 ]

13 голосов
/ 09 сентября 2009

Вы должны переопределить метод 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");
}

Надеюсь, это поможет

0 голосов
/ 09 сентября 2009

Вы также можете посмотреть на это

http://www.west -wind.com / презентации / wwDbResourceProvider /

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

...