Локализация загруженных .dll - PullRequest
0 голосов
/ 04 февраля 2020

Мы разработали приложение, которое загружает определенные c .dll файлы, которые затем используются в качестве плагинов. Само приложение имеет несколько .resx-файлов, которые используются для локализации.

Titles.resx
    Titles.de-DE.resx
    Titles.it-IT.resx

Эти файлы загружаются через Prism и LightInject

_container.RegisterSingletonFluent<TitlesLocalizer>();

public class TitlesLocalizer : LocalizerBase
    {
        public TitlesLocalizer()
        {
            ResourceManagerStringLocalizerFactory factory = new ResourceManagerStringLocalizerFactory(new OptionsWrapper<LocalizationOptions>(new LocalizationOptions()), new NullLoggerFactory());
            Localizer = factory.Create(typeof(Properties.Titles));
        }
    }

    public class TitlesLocalizer<T> : LocalizerBase<T>
    {
        public TitlesLocalizer()
        {
            ResourceManagerStringLocalizerFactory factory = new ResourceManagerStringLocalizerFactory(new OptionsWrapper<LocalizationOptions>(new LocalizationOptions()), new NullLoggerFactory());
            Localizer = factory.Create(typeof(T));
        }
    }

Локализация самого приложения работает как положено , Все плагины поставляются с собственными ресурсами локализации, которые загружаются через общую локализацию c:

_container.RegisterSingletonFluent<TitlesLocalizer<Properties.Titles>>();

Проблема в том, что внутри плагина загружается только нейтральный язык. Я проверил культуру через точку останова, и я все еще хочу использовать ее (например, немецкий). Я не знаю, что мешает правильной локализации, поэтому, возможно, кто-то понял, что я могу сделать неправильно. Заранее благодарю за любую помощь! PS: если вам нужно больше кода, просто скажите мне. Я предоставлю столько, сколько мне разрешено,

EDIT1: После многих испытаний я обнаружил проблему. При создании проекта плагина он создает папки для "de-DE", "it-IT", .... Внутри находятся локализационные библиотеки. Сам плагин будет скопирован в каталог сборки приложений в «App / Plugins / PluginX». Проблема в том, что приложение может загружать файлы локализации только в том случае, если они находятся внутри «App / de-DE /».

Так есть ли способ загрузить эти файлы .dll, даже если они находятся внутри подпапки, такой как «App / Plugins / PluginX / de-DE /»?

...