Как локализовать приложение ASP.NET MVC?

Что лучше всего было бы локализовать ваше приложение ASP.NET MVC?

Я хотел бы рассмотреть две ситуации:

  • одно развертывание приложения в IIS, которое обрабатывало бы несколько языков
  • развертывание одного языка/приложения.

В первой ситуации вы должны пойти с каким-то взглядом на вид, например, ~/View/EN, ~/View/FI, ~/View/SWE или что-то другое?

Как насчет второго варианта, просто настроить приложение через Web.config и указать эти разные языки на разные URL-адреса?

Ответ 2

Вы бы локализовали приложение ASP.NET MVC очень точно так же, как классическое приложение ASP.NET Web Form.

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

Вы можете посмотреть запись в блоге Matt Hawley для получения дополнительных пояснений и примеров.

Ответ 3

К сожалению, исходный код Matt Hawley не работает в выпуске ASP.NET MVC. Ознакомьтесь с обновленным сообщением: http://blog.eworldui.net/post/2008/10/ASPNET-MVC-Localization-via-View-Engines.aspx

В общем, процесс локализации не так гладен в мире VS 2008/ASP.NET MVC, как и в традиционных веб-формах. http://www.guysmithferrier.com/post/2009/05/Localizing-ASPNET-MVC.aspx

Ответ 4

Посмотрите на проект Rob Connery MvcStore. Он делает скринкаст, демонстрируя один из способов решения проблемы глобализации.

http://wekeroad.com/2008/04/24/mvcstore-part-5

Ответ 5

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

Я только начинаю с MVC, но использую метод развязки, который вы хотели бы использовать одним и тем же контроллером, независимо от языка (рассматривая язык так же, как представление) - это тогда даст вам/Controller/Action/language/form

Ответ 6

Есть хороший учебник с недавним обновлением о том, как локализовать приложение asp.net mvc, охватывающее все аспекты, включая локализацию DisplayName, проверку, использование маршрутизации (сохранение имени культуры в URL-адресе), проблемы с кэшем вывода и т.д.... Алекс Адамян Блог - Пока моя клавиатура нежно плачет

Ответ 7

Мы действительно пошли совершенно по-другому, переопределив DataAnnotationsMetadaDataProvider. Там вы можете убедиться, что значения DisplayNameAttribute разрешены на правильный язык. На самом деле вы даже можете избавиться от этого атрибута и разрешить имена полей, только если это будет любая помощь.