Подтвердить что ты не робот

Глобальный ресурс против локального ресурса в ASP.NET

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

Resource.UI.iNotFound

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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