ABP: восстановление источников локализации из пользовательского провайдера - PullRequest
0 голосов
/ 23 января 2020

Я использую ABP v4.9.0 (. NET CORE 2.2) с angular клиентом

Я создал несколько пользовательских провайдеров локализации. Эти провайдеры получают словари перевода из внешнего API. Я добавляю источники локализации при запуске с этими провайдерами.

            var customProvider = new CustomLocalizationProvider(...);


            var localizationSource = new DictionaryBasedLocalizationSource("SOURCENAME", customProvider );
            config.Localization.Sources.Add(localizationSource );

При запуске вызывается провайдер InitializeDictionaries () и создаются словари локализации. Пока все хорошо, работает как задумано.

Теперь я хотел бы вручную перегрузить эти переводы по требованию, но я не могу заставить это работать.

Вот что я попробовал.

Здесь я запускаю повторную синхронизацию языковых ресурсов:

        foreach (var localizationSource in _localizationConfiguration.Sources)
        {
            try
            {
                localizationSource.Initialize(_localizationConfiguration, _iocResolver);
            }
            catch (Exception e)
            {
                Logger.Warn($"Could not get Localization Data for source '{localizationSource.Name}'", e);
            }
        }

В пользовательском провайдере я сначала очищаю Словари

    public class CustomLocalizationProvider : LocalizationDictionaryProviderBase
    {

    protected int IterationNo = 0;

    protected override void InitializeDictionaries()
    {
        Dictionaries.Clear();

        IterationNo += 1;

        var deDict = new LocalizationDictionary(new CultureInfo("de-DE"));
        deDict["HelloWorld"] = $"Hallo Welt Nummer {IterationNo}";
        Dictionaries.Add("de-DE", deDict);

        var enDict = new LocalizationDictionary(new CultureInfo("en"));
        enDict["HelloWorld"] = $"Hello World number {IterationNo}";
        Dictionaries.Add("en", enDict);
    }

    }

Поставщик выполняется снова, как и ожидалось.

Но когда я в конечном итоге использую клиентскую локализацию (angular), Я все равно получаю оригинальные переводы.

Что я скучаю?

Спасибо за помощь.

...