Как локализовать приложение ASP.NET MVC?
Что было бы лучше всего для локализации вашего приложения ASP.NET MVC?
Я хотел бы охватить две ситуации:
- одно развертывание приложения в IIS, которое будет обрабатывать несколько языков
- один язык / приложение развертывания.
В первой ситуации вы должны использовать что-то вроде вида, например, ~/View/EN, ~/View/FI, ~/View/SWE или что-то другое?
А как насчет второго случая, просто настройки приложения через Web.config и указания этих разных языков на разные URL?
9 ответов
Вы также можете посмотреть здесь полное руководство по локализации ASP.NET MVC 2 и валидацию модели ASP.NET MVC 2 с локализацией. Эти разделы помогут вам, если вы работаете с ASP.NET MVC 2.
Вы бы локализовали свое приложение ASP.NET MVC практически так же, как и классическое приложение веб-формы ASP.NET.
Вы не будете использовать разные страницы / представления для каждого языка, но каждая страница будет поддерживать несколько языков с использованием спутниковых сборок.
Вы можете посмотреть на запись в блоге Мэтта Хоули для большего количества объяснения и примеров.
К сожалению, оригинальный код Мэтта Хоули не работает в выпускной версии 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
Взгляните на проект MvcStore Роба Коннери. Он делает скринкаст, показывающий один из способов решения проблемы глобализации.
Имеется хорошее руководство с недавним обновлением о том, как локализовать приложение asp.net mvc, охватывающее все аспекты, включая локализацию DisplayName, валидацию, использование маршрутизации (сохранение имени культуры в URL), проблемы с кэшем вывода и т. Д. Блог Алекса Адамяна - Хотя моя клавиатура нежно плачет
Я никогда не был убежден в том, что нужно обрабатывать локализацию в форме, как полагает Элайджа, - разные длины и направления могут привести к очень сложным или изменчивым на вид формам.
Я только начинаю с MVC, но, используя метод развязки, вы захотите использовать один и тот же контроллер независимо от языка (рассматривая язык только как представление) - тогда вы получите /Controller/Action/language/form
На самом деле мы пошли совершенно иначе с переопределением DataAnnotationsMetadaDataProvider. Там вы можете убедиться, что значения DisplayNameAttribute разрешены на правильном языке. На самом деле вы можете даже избавиться от этого атрибута и разрешить его по именам полей, только если это поможет.
Я написал эту статью некоторое время назад. Он использует пользовательский вид двигателя. http://blog.oimae.com/2011/02/20/cultured-view-engine-for-mvc/
И еще один учебник для другого решения
Учебник. Создание локализации ASP.NET MVC с определением языка.