CultureInfo и (resx) файлы ресурсов

Я использовал механизм ресурсов C#s (Visual Studios), и он работал хорошо. Мне нужно иметь возможность использовать ресурсы, но вместо того, чтобы использовать CultureInfo в качестве определителя, использовать что-то еще. Это моя текущая настройка, которая работает нормально, но мне нужно определить, какой Resource Manager использовать. Либо Брюссель, либо Париж. Затем менеджер ресурсов определяет, какой ресурс использовать в Брюсселе или Париже для вызова. Мне нужен один менеджер ресурсов для обоих, поэтому мне не нужно решать, какой менеджер ресурсов использовать. Частично проблема заключается в том, что пользовательский инструмент PublicResXFileCodeGenerator генерирует код для вас (что очень удобно, если вы используете стандартный подход)

Вот как это выглядит в настоящее время (это работает нормально)

Брюссельские Ресурсы

  • brussels.en-GB.resx
  • brussels.ja-JP.resx
  • brussels.fr-FR.resx
  • brussels.resx

Париж

  • paris.en-GB.resx
  • paris.ja-JP.resx
  • paris.fr-FR.resx
  • paris.resx

Я не хочу использовать CultureInfo, но вместо этого указываю свой собственный идентификатор resx. Есть ли способ сделать это с помощью файла resx?

так далее

Брюссель и Париж Ресурсы

  • MyResourceManager.brussels-ан-GB.resx
  • MyResourceManager.brussels-я- JP.resx
  • MyResourceManager.brussels-фр-FR.resx
  • MyResourceManager.paris-ан-GB.resx
  • MyResourceManager.paris-я- JP.resx
  • MyResourceManager.paris-фр-FR.resx
  • MyResourceManager.resx

РЕДАКТИРОВАТЬ: пример того, как я хотел бы использовать его (или что-то подобное)

MyResourceManager.Header

вместо

brussels.Header

paris.Header

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

1 ответ

Решение

Используйте CultureInfo для определения набора ресурсов для загрузки, это будет проще, поскольку он интегрируется в Thread.CurrentUICulture.

Если у вас есть культуры, которые не являются стандартными из поддерживаемых коробок, используйте CultureAndRegionInfoBuilder для создания дополнительных культур, которые вам нужны. См. http://msdn.microsoft.com/en-us/library/system.globalization.cultureandregioninfobuilder.aspx. Должно быть множество примеров использования этого API в Stackru, т. Е. Создание настраиваемой культуры в ASP.NET.

Другие вопросы по тегам