Подтвердить что ты не робот

Как работает App_LocalResources с MVC?

Я работал над своим первым приложением 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:

Я обнаружил метод ONE для этого, но я не уверен, что это лучший метод. Здесь идея

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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