Какие преимущества использования локализации .resx для приложения ASP.NET MVC? - PullRequest
9 голосов
/ 04 марта 2009

На этом сайте есть ряд вопросов, связанных с как получить доступ к файлам RESX в приложении ASP.NET MVC и рекомендациям по их использованию.

Однако после прочтения (впервые я мог бы добавить) статьи MSDN о ресурсах мне интересно, есть ли какие-либо преимущества использования файлов RESX, поскольку я не собираюсь использовать серверные элементы управления. Theres все эти разговоры о «неявной» и «явной» локализации, но я не собираюсь извлекать выгоду из этого с MVC.

В конечном счете моему приложению потребуются строковые ресурсы для кнопок и элементов меню, а также гораздо более длинные элементы HTML для более длинного разнородного содержимого. Я хотел бы использовать CMS для более длинных предметов, потому что я почти уверен, что не хочу вставлять их в файл RESX.

Существуют ли веские причины использовать или не использовать ресурсы ASP.NET в новом приложении. Я собираюсь предположить, что любые будущие улучшения MVC или улучшения RESX будут работать в гармонии вместе, но пока я просто получаю прославленный IDictionary, насколько я могу видеть.

Стоит ли переходить на RESX или искать в другом месте? Стоит ли даже рассматривать CMS для тех ресурсов, для которых предназначен RESX?

Буду признателен за любые извлеченные уроки.

Ответы [ 3 ]

9 голосов
/ 04 марта 2009

У инфраструктуры RESX есть несколько преимуществ:

  • вам не нужно загружать соответствующие языковые ресурсы. Как только локаль потока установлена, CLr позаботится о поиске подходящей сборки и загрузке ресурсов.
  • Легко передать сторонним ресурсам локализацию для локализаций.
  • существует механизм возврата по умолчанию для нелокализованных ресурсов.

Есть также один особенный недостаток подхода RESX:

  • Трудно поддерживать модель перевода, когда пользователи переводят ваши ресурсы для вас.

Я бы хотел немного подробнее остановиться на этом последнем пункте. Возьмите, например, модель перевода Facebook. Facebook предлагает людям довольно простой способ предоставлять переводы различных ресурсов и голосовать за них. Если они хранятся в базе данных, их можно будет использовать после надлежащего процесса редактирования без перекомпоновки и повторного развертывания приложения. В модели RESX сборки ресурсов необходимо будет перестроить и развернуть, что может иметь достаточно высокую стоимость в зависимости от процесса развертывания.

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

РЕДАКТИРОВАТЬ: Я забыл упомянуть, что эти соображения ортогональны выбору платформы ASP.NET (MVC или WebForms).

4 голосов
/ 04 марта 2009

Я бы сказал «да», файлы resx все еще являются хорошим вариантом для новых приложений. Я не думаю, что ASP.NET MVC, в частности, что-то меняет в хранении ваших строк.

Что хорошего в использовании ресурсов, так это

  • ими довольно легко управлять
  • локализация вашего сайта гораздо проще, чем без ресурсов (и я подчеркиваю намного проще)
  • Вы можете заменить хранилище ресурсов в любое время, поскольку ресурсы используют модель провайдера. Вы можете отключить файлы resx для записей в БД без изменения реализации вашего сайта.

Я рекомендую файлы ресурсов для "строк сайта", которые отличаются от больших блоков данных, которые вы можете редактировать часто. Поэтому для полной рекомендации я бы сказал, использовать файлы ресурсов (resx для запуска) для кнопок, меток и т. Д., А также CMS для содержательного содержимого.

3 голосов
/ 04 марта 2009

Если вы собираетесь использовать Resx и не использовать элементы управления сервером, как в MVC, почему бы не расширить методы помощника MVC, чтобы вы могли создавать локализованные метки и текст? Затем просто вызовите текст из ресурса в вспомогательном методе.

например. '<% = Html.CultureLabel ("ResouceId")%>'

или '<% = Html.CultureButton ("Name", "ResouceId", HtmlButtonType.Button)%>'

Просто мысль.

Также намного проще управлять глобализацией сайта с помощью resx для текста.

...