Правильный синтаксис встроенных тегов ресурса asp.net - PullRequest
1 голос
/ 26 августа 2010

Я пытаюсь локализовать веб-приложение asp.net.Рассмотрим следующий код asp.net.Я работаю с CurrentCulture и CurrentUICulture, установленным на немецкий язык ("DE-DE").

<%= ReportTitles.EndOfDay %>
<asp:Literal ID="litLabel" runat="server" Text="<%$ Resources:ReportTitles, EndOfDay %>"/>

Я ожидаю, что эти две строки дадут одинаковый результат, но вместо этого я получаю:* Auswertungen für den TagesabschlussКонец дня

Другими словами, первый синтаксис <%= ReportTitles.EndOfDay %> успешно извлекает значение из файла ReportTitles.de.resx, который мы используем, но второй синтаксис <asp:Literal ID="litLabel" runat="server" Text="<%$ Resources:ReportTitles, EndOfDay %>"/> возвращает значение по умолчаниюФайл UST ReportTitles.resx на английском языке.

Что не так со 2-й строкой?Спасибо

1 Ответ

3 голосов
/ 26 августа 2010

Настройка культуры во время загрузки находится где-то в середине жизненного цикла. Это после того, как буквальный контроль был создан.

По сути, дерево элементов управления создается, когда Page.ProcessRequest вызывает FrameworkInitialize, который вызывает __BuildControlTree, метод, автоматически сгенерированный из файла кода. Он создаст новый элемент управления Literal, установит все свойства и добавит его в дерево элементов управления. Он в основном уже прочитал из активного ResourceManager. Это до загрузки, еще до PreInit. Это означает, что вы еще не изменили культуру.

<% = ...%> будет проанализирован в вызове HtmlTextWriter.Write во время рендеринга. Это конец жизненного цикла, и он будет использовать новую культуру.

Обычное место для реализации этого - либо использование HttpModule / HttpHandler, либо переопределение Page.InitializeCulture.

Проверьте http://ghferr.free.fr/wiki/Articles/images/aspnet_page-control-life-cycle.jpg, обзор, который стоит напечатать и поставить на стене поблизости. ;)

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