Получение значения ресурса с явной локализацией

С различными файлами ресурсов (*.resx), как я могу получить локализованные значения, указав явную локализацию.

То есть, как правило, я могу напрямую ссылаться на атрибут с помощью custom-tool-namespace.Resource.localizedAttribute.

Значение, которое будет выдано, зависит от того, какая локализация была установлена ​​в CurrentCulture (по потоку). Но в отличие от этого, я бы хотел передать локализацию ресурсоемщику. Возможно ли это?

Ответ 1

Предполагая, что у вас есть несколько файлов ресурсов:

Messages.resx
Messages.fr-FR.resx
...
Messages.xx-XX.resx

все содержащие строковое значение, вы можете получить значение для определенной культуры:

var culture = new CultureInfo("fr-FR");
string value = Messages.ResourceManager.GetString("SomeKey", culture);

и это будет независимо от значения текущей культуры потоков.

Ответ 2

Лучшей практикой является использование nameof для сохранения intellisense и избежания ошибок при вводе

var culture = new CultureInfo("fr-FR");
string value = Messages.ResourceManager.GetString(nameof(Messages.SomeKey), culture);