В чем преимущества использования локализации .resx для приложения ASP.NET MVC?

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

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

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

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

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

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


person Simon_Weaver    schedule 04.03.2009    source источник


Ответы (3)


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

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

У подхода RESX есть еще один недостаток:

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

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

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

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

person Franci Penov    schedule 04.03.2009

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

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

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

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

person Ian Suttle    schedule 04.03.2009
comment
спасибо, Ян. вот в каком направлении я склонялся. Мне просто не приходилось ничего локализовать раньше. на самом деле мне еще не нужно ничего локализовать, но я хочу быть готовым. Я просто пропустил большую часть контента, как нерелевантный, и мне стало любопытно, что мне делать - person Simon_Weaver; 04.03.2009
comment
Прямо сейчас мы проходим через трудности локализации сайтов. Для нас это группа приложений, которые работают вместе уже несколько лет. Это непростая задача :). Определенно, по крайней мере, подумайте об этом, прежде чем говорить о том, как вы поступаете. Надеюсь, это поможет и сэкономит вам работу :) - person Ian Suttle; 04.03.2009
comment
Мне тоже интересно, есть ли какой-либо уровень абстракции с ресурсами, например, чтобы я мог добавить * в начале каждой строки, а затем знать, что у меня есть, а что не локализовано. Очевидно, что с помощью HtmlHelper я могу сделать это сам довольно легко, но, возможно, есть еще кое-что, чему нужно научиться - person Simon_Weaver; 04.03.2009
comment
Одна рекомендация, которую я считаю весьма полезной, заключалась в том, чтобы использовать FXCop в вашем коде, чтобы указывать на вещи, которые не локализуются должным образом. Я не встречал такого стандарта, как префикс текста с помощью *, но я определенно вижу в этом выгоду. Возможно, замените resx на другой с явно неправильными данными, например mmmmm - person Ian Suttle; 04.03.2009

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

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

или '‹% = Html.CultureButton (" Имя "," ResouceId ", HtmlButtonType.Button)%>'

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

Также управление глобализацией сайта НАМНОГО проще с resx для текста.

person Richard    schedule 04.03.2009