Как App_LocalResources работает с MVC? - PullRequest
24 голосов
/ 04 июня 2010

Я работал через свое первое приложение MVC, и я хотел бы его локализовать. Я знаю, как использовать App_GlobalResources, но я бы предпочел использовать App_LocalResources.

В типичном приложении WebForms вы помещаете папку App_LocalResources в тот же каталог, что и файл ASPX ... это то же самое в MVC (IE: я помещаю их в соответствующие подпапки в каталоге "views")?

Кроме того, при доступе к App_GlobalResources в вашем представлении вы можете сделать это следующим образом <%=Html.Encode(Resources.Index.Title)%>, однако я не могу сделать это с App_LocalResources. Я не хочу делать свои <label runat="server", чтобы воспользоваться meta:resourcekey


EDIT:

Я нашел ОДИН метод для этого, но я не уверен, что это лучший метод. Вот идея

  1. Вы помещаете папку App_LocalResources в качестве подпапки в вашей соответствующей папке просмотра
  2. Вы создаете файлы resx, соответствующие вашим представлениям ... IE: Index.resx или About.resx
  3. Вы устанавливаете свойства файлов Resx на «Public» (PublicResXFileCodeGenerator), «Embeded Resource», «Views. [Viewname]» namespace
  4. Создайте новое имя ресурса под названием «Заголовок» и поместите все, что вы хотите, в Значение.

Теперь я могу ссылаться на локальные ресурсы, используя что-то вроде этого

<%= MyProj.Views.Home.Index.Title%>

Единственная проблема, с которой я сталкиваюсь, заключается в том, что ресурсы встроены, и я не могу добавлять новые локали без повторной компиляции проекта.

Вот моя ссылка на этот метод.

Ответы [ 2 ]

16 голосов
/ 24 марта 2011

Вы не должны использовать App_GlobalResources или App_LocalResources с MVC. Это из-за того, как эти ресурсы работают. Эти ресурсы не встроены в ваш проект, а скомпилированы средой выполнения ASP.NET. Это означает, что ваши ресурсы не будут доступны, когда они не работают внутри среды выполнения ASP.NET, а это означает, что вы потеряете возможность модульного тестирования ваших представлений и контроллеров, если будете использовать ресурсы в них.

Этот пост дает более подробную информацию об этом.

Вместо этого вы должны использовать подход, который вы упоминаете в своем вопросе. Поместите ваш ресурс туда, куда вы хотите, и установите для него «Встроенный ресурс», а пользовательский инструмент должен быть «PublicResXFileCodeGenerator».

1 голос
/ 06 ноября 2010

Я знаю, что это не дает прямого ответа на вопрос, но я думаю, что вы действительно ищете "Как мне выполнить локализацию с ASP.NET MVC".

Вы можете проверить ответы на этот вопрос stackoverflow.com и посмотреть, помогут ли они ответить на проблему, которую вы хотите решить: how-to-localize-asp-net-mvc-application

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