Как создать файл ресурса (совместно используемый, для всех культур)
По умолчанию, если вы добавляете новый файл ресурса в свой проект без суффикса (например, Resource1.resx
), тогда это будет общий ресурс, означающий, что получение ресурса с помощью CultureInfo.InvariantCulture
вернет этот ресурс.
Ресурсы находятся в иерархии, а конечная root является инвариантной культурой. Например, если свойство Thread.CurrentUICulture
возвращает культуру en-US
, то ResourceManager
пытается получить ресурсы American-Engli sh в первую очередь (в нашем примере: ресурсы из Resource1.en-US.resx
), если таковые имеются , Если такие ресурсы не были найдены, он пытается использовать нейтральные ресурсы Engli sh (Resource1.en.resx
) и, наконец, инвариантные (общие) ресурсы.
Совет: Если ваш Резервные (общие) ресурсы уже есть в Engli sh, тогда вы можете сделать «ярлык», добавив атрибут [assembly:NeutralResourcesLanguage("en-US")]
в вашу сборку. Он сообщает ResourceManager
, что для культуры en-US
не требуется обход иерархии, но он может сразу перейти к инвариантным ресурсам.
Каковы преимущества этого подхода? Я знаю, что файлы ресурсов также используются для получения надлежащих текстовых сообщений для разных культур, но мое приложение поддерживает только одну культуру.
Ваше приложение сможет поддерживать больше языков без каких-либо изменений кода (даже если вы не устанавливаете Thread.CurrentUICulture
, его значение по умолчанию зависит от текущих региональных настроек).
Во-вторых, это может быть полезно, даже если вы не планируете добавлять новые языки просто потому, что это делает источники более чистыми путем разделения зависящего от языка контента.
Совет 2: Если вы хотите добавить новые языки в свой проект без перекомпиляции исходного кода, тогда вы можете попробовать HybridResourceManager
* Класс 1036 *, который может напрямую использовать файлы .resx
. Таким образом, даже пользователи уже развернутого приложения могут добавлять новые языки. См. Также класс DynamicResourceManager
, который может динамически генерировать новые языковые файлы. Связанная страница содержит также пример того, как организовать ваши ресурсы. ( ссылка nuget )