Глобальный ресурс против локального ресурса в ASP.NET - PullRequest
38 голосов
/ 15 января 2009

Мы используем файлы resx для локализации наших веб-приложений. Обычно мы создаем локальные файлы resx (которые отображаются на определенную страницу), когда только одна страница использует определенную фразу, и глобальный файл resx, когда фраза нужна более чем одной странице. Но хорошая вещь о глобальных файлах resx состоит в том, что они являются классом, и вы можете называть фразы так же, как вы вызываете свойства класса:

Resource.UI.iNotFound

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

Я уверен, что есть хороший ответ на это, я просто не знаю, что это ....

Ответы [ 4 ]

50 голосов
/ 29 марта 2009

Я продолжал искать рекомендации и нашел это в MSDN :

Выбор между глобальными и локальными файлами ресурсов

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

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

Файлы локальных ресурсов облегчают управлять ресурсами для одного ASP.NET Страница интернета. Но вы не можете поделиться ресурсы между страницами. Дополнительно, Вы можете создать много местных файлы ресурсов, если у вас много страниц это должно быть локализовано во многих языки. Если сайты большие с много папок и языков, местные ресурсы могут быстро расширить количество сборок в домен приложения.

Когда вы вносите изменения в файл ресурсов по умолчанию, локальный или глобальный, ASP.NET перекомпилирует ресурсы и перезапускает приложение ASP.NET. Это может повлиять на общую производительность вашего сайт. Если вы добавите спутниковый ресурс файлы, это не вызывает перекомпиляция ресурсов, но Приложение ASP.NET будет перезапущено.

Похоже, что команда программистов должна взвесить все за и против каждого метода и выбрать, что им подходит.

15 голосов
/ 06 марта 2009

Joe90 - Я должен сказать, что по своему опыту я не могу согласиться с тем, что управлять множеством локальных файлов ресурсов, разбросанных по всему вашему проекту, проще, чем управлять одним глобальным файлом ресурсов. Ничто не мешает повторять одни и те же переводы снова и снова, и их очень трудно отследить. Доступ к файлу глобальных ресурсов очень легко координировать внутри группы, и несколько пользователей могут сразу увидеть, был ли их требуемый перевод уже выполнен.

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

Похоже, что у Microsoft нет четких указаний относительно того, какова лучшая практика, или даже как эти два метода реализованы, чтобы мы могли рискнуть предположить!

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

7 голосов
/ 05 февраля 2011

У меня есть команда разработчиков не менее 10 разработчиков для одного продукта, и мы используем один глобальный ресурс для каждого сайта.

Проблема с объединением этого большого файла resx, по моему мнению, не должна быть проблемой.

Если у вас есть 10 разработчиков, которые сами устанавливают язык на сайте, как вы получаете единый способ выразить себя на сайте? Разработчики часто склонны хорошо разбираться в коде, а не в грамматическом выражении. (Я сам разработчик.)

Эксперт по языку должен отредактировать файл resx и заблокировать его для разработчиков!

2 голосов
/ 03 октября 2011

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

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

...