#c# #localization
#c# #локализация
Вопрос:
У меня есть следующие файлы RESX, объявленные в моем проекте .NET Framework MVC:
Язык по умолчанию de-CH
.
У меня есть следующий код для получения ResourceSet
:
public CultureInfo Culture { get; set; }
public ResourceSet ResourceSet
{
get
{
var resMgr = new ResourceManager(nameOfResource, Assembly.Load(assemblyName));
return resMgr.GetResourceSet(cultureInfo: Culture, createIfNotExists: false, tryParents: true);
}
}
У меня есть некоторый код, который для заданного набора CultureInfo
объектов пытался загрузить соответствующие ResourceSet
объекты.
Но по какой-то причине он всегда загружает только ResourceSet
для культуры по умолчанию, de-CH
. И если я установил tryParents
false
значение, то оно возвращается null
.
Что я делаю не так? Если я установил…
Culture = CultureInfo.GetCultureInfo("en-US")
…и затем вызовите ResourceSet
, почему он не загружает содержимое из Create.en-US.resx?
Ответ №1:
Я понял это сам: второй аргумент, переданный GetResourceSet
— createIfNotExists
имеет вводящее в заблуждение имя. Название подразумевает, что объект ресурса будет создан, если он еще не существует, тогда как документация объясняет это по-другому (мой акцент):
значение true для загрузки набора ресурсов, если он еще не был загружен; в противном случае значение false .
Как только я установил это значение на true
ожидаемые наборы ресурсов, зависящие от конкретной культуры, были загружены.