Вопрос

У меня есть библиотека классов - вызовите его каркас. В assentionfo.cs у меня есть:

[assembly: NeutralResourcesLanguage("en-US")]
.

Под A \ Resources \ Directory у меня frameworkresources.resx и frameworkresources.fr-fr.resx

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

private static ResourceManager manager = new ResourceManager("Framework.Resources.FrameworkResources", Assembly.GetExecutingAssembly());
.

в коде, если я сделаю что-то подобное:

String message = manager.GetString("ArgumentNullExceptionMessage", CultureInfo.CurrentCulture);
.

Я могу отладить и наведите курсор reciveCulture, и это (и roomulature) установлено в FR-FR, но это всегда возвращает мое по умолчанию, английское сообщение - не французское сообщение от файла ресурсов FR-FR.

Должен ли ResourceManager автоматически проводит это, или я должен написать код для запроса текущей культуры, затем откройте правильный файл? Я неверно, предполагая, что менеджер ресурсов будет знать, чтобы получить строку FR-FR, потому что это текущая культура?

Я не уверен, почему это не работает.

<Сильное> Обновление: У меня есть спутниковые сборки, так что верьте, что часть компиляции идет хорошо. Я думаю, что проблема в моем диспетчере ресурсов. Я пытался использовать ресурсы и явно использую ResourceManager:

ResourceManager manager =
    new ResourceManager("Framework.Resources.FrameworkResources",
        Assembly.GetExecutingAssembly());

Debug.WriteLine("de-DE : " + manager.GetString(resourceName, new CultureInfo("de-DE")));
Debug.WriteLine("el    : " + manager.GetString(resourceName, new CultureInfo("el")));
Debug.WriteLine("es-MX : " + manager.GetString(resourceName, new CultureInfo("es-MX")));
Debug.WriteLine("fr-FR : " + manager.GetString(resourceName, new CultureInfo("fr-FR")));
Debug.WriteLine("hi    : " + manager.GetString(resourceName, new CultureInfo("hi")));
Debug.WriteLine("zh-CN : " + manager.GetString(resourceName, new CultureInfo("zh-CN")));
.

Это приводит к этому:

de-DE : Argument '%ArgumentName%' cannot be null or empty.
el    : Argument '%ArgumentName%' cannot be null or empty.
es-MX : Argument '%ArgumentName%' cannot be null or empty.
fr-FR : Argument '%ArgumentName%' cannot be null or empty.
hi    : Argument '%ArgumentName%' cannot be null or empty.
zh-CN : Argument '%ArgumentName%' cannot be null or empty.
.

Так, хотя все на месте, мой диспетчер ресурсов просто не пытается посмотреть в этих спутниковых собраниях. И чтобы быть понятным, в этих сборках у меня переведена версия строки выше - поэтому она определенно читает из моего файла frameworkresources.resx.resx, вместо того, чтобы конкретные культуры.

Это было полезно?

Решение

Я подумал это (спасибо более чистящимися на интервате).Я управлял кодом из модульных тестов, и вертелю MSTest не «развертывает» спутниковые узлы.Если я пойду в настройки теста и выключите «развертывание», все работает, как и ожидалось.Тьфу!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top