Как работает 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%>
Единственная проблема, с которой я вижу, - это тот факт, что ресурсы встроены, и я не могу добавить новые локали без повторной компиляции проекта.
Вот моя ссылка на этот метод.
Ответы
Ответ 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