Вопрос

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

У меня есть ряд проектов, которые являются частью большого решения для отчетности, которые следуют в этом формате

Плагин. **** отчет

  • Ссылка (папка)
  • Dataaccesslayer (папка)
  • Набор данных (папка)
  • Datawrappers (папка)
  • Локализация (папка)

    * .cs.cs.

Где * это имя отчета, я собираюсь генерировать

У * .cs есть экспортное утверждение, чтобы я мог выбрать его, используя MEF (не уверен, если это актуально, но думал, что стоит упомянуть). Пространство имен в * .cs - Companyname.datashaper.plugin. * Отчет. Благодаря названию проекта и местоположению файлов я изменил пространство имен по умолчанию для каждого проекта, чтобы быть CompanyName.datashaper.plugin. * Отчет (это был просто плагин. * Отчет до моего изменения).

Теперь для проблемы .. Внутри * .cs Я создал ResourceManager. Это выглядит так ...

_resourceManager =
                new ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report",
                    Assembly.GetExecutingAssembly());

Внутри мой файл Designer Resx у меня есть следующие ...

internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report", typeof(*Report).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }

Мой звонок на диспетчер ресурсов выглядит так ...

string resourceString = _resourceManager.GetString(resourceKey, _currrentCultureInfo);

где _CurrentCultureInfo является правильным объектом CultureInfo.

У меня есть 4 различных файла RESX в моей папке локализации для каждого проекта, (**** Report.resx, **** Report.fr-ca.resx, **** Report.en-gb.resx, *** * Report.de-de.resx).

Когда я делаю призыв к диспетчеру ресурсов, я всегда получаю запись от .Resx ... Никогда ни один из других языковых файлов, независимо от объекта CultureInfo, я передаю в звонок. Что я испортил?

-> Быстрое обновление до моего оригинального вопроса, но это, кажется, это связано с MEF. Я создал свой класс старомодный путь (новый * отчет ()) и сделал вызов локализации, и он работает нормально

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

Решение

Хорошо, я выяснил это .. Я получаю файл .Resx, потому что он действительно встроен в главную сборку. Другие файлы встроены в отдельные DLL для каждого языка, мне тогда необходимо скопировать их в одну и ту же папку, которую я создаю свой совокупный контейнер, мой диспетчер ресурсов, затем видит все языки.

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