Глобализация сборок во время выполнения - PullRequest
1 голос
/ 15 октября 2008

Фон

Проект устанавливает несколько файлов, которые содержат все элементы для определения UserControl - некоторый пользовательский источник, CodeCompileUnit для кода разработчика и файл resx. Во время выполнения эти файлы компилируются в сборку, и классы используются нашим основным приложением (сборка обновляется только при необходимости).

Вопрос

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

  • У кого-нибудь есть другие варианты, которые стоит рассмотреть?
  • Какие проблемы могут быть присущи любому из предложенных мной решений?

Ограничения / Отказ от ответственности
Мне известно, что сценарий далеко не идеален и что в некоторых областях можно было бы сделать лучший выбор (например, глобализация с самого начала), но их нельзя изменить на данном этапе проекта. Я ценю любые советы, решения или рекомендации, которые вы можете предоставить. Спасибо.

Ответы [ 2 ]

3 голосов
/ 02 февраля 2009

Создайте отдельную спутниковую сборку для каждой культуры. Это имеет два преимущества:

  • Вы можете собрать все сборки за один раз и иметь определенный файл для каждой комбинации номера версии и имени файла, вместо этого также в зависимости от культуры.
  • У вас может быть несколько сборок в одной и той же установке, и язык для использования должен быть основан на системном языке, предпочтениях пользователя и т. Д. Это значительно упростит разработку и тестирование, поскольку вам не нужно будет продолжать сборку и копирование. файлы вокруг только ради смены языков.
  • Так работает .NET i18n. Хотя я не эксперт по .NET i18n («читай книгу Гая Смита-Ферье» - мой лучший совет!), Я обычно нахожу, что фреймворки работают лучше всего, когда вы следуете их ожидаемой модели.

Даже если заключительная часть «сборки спутниковой сборки» будет выполнена во время выполнения (вы можете сделать это вместо установить время?), Вы все равно получите как минимум второе и третье преимущество пули. Это также означает, что если вы когда-нибудь do пойдете по более обычному пути поставки спутниковых сборок, чтобы начать (вместо того, чтобы строить их на ящике пользователя), у вас будет меньше изменений.

Извиняюсь, если я неправильно понял вопрос ...

2 голосов
/ 15 января 2009

Если вы не планируете добавлять дополнительные языки после развертывания (по крайней мере, без обновления программного обеспечения), я бы предпочел собрать все дополнительные файлы RESX в добавляемую вами сборку сателлитов. Таким образом, они не будут редактироваться пользователем после развертывания.

...