C#: проблема с интернационализацией при настройке класса CultureInfo - PullRequest
1 голос
/ 31 марта 2020

Я пытаюсь реализовать библиотеку интернационализации. Я создал его, и он работал нормально, но у меня есть одна проблема. publi c stati c void SetCurrentLanguage (string language) {

        if (m_resourceManager == null)
        {   
            CultureInfo cultInfo = new CultureInfo(language);
            Thread.CurrentThread.CurrentCulture = cultInfo;
            Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;

            m_resourceManager = ResourceManager.CreateFileBasedResourceManager("Globalization", m_path, null);
        }

Вышеупомянутая функция вызывается дважды с двумя разными функциями. Когда он вызывается из первой функции, мы устанавливаемCurrentLanguage (de-DE), и он работает хорошо. но когда мы вызываем функцию во второй раз, это дает мне результат в (en-EN), потому что культура beacuse не устанавливается во второй раз, потому что m_resourceManager не равен нулю. Язык de-DE для второго вызова также должен быть установлен.

Я застрял в этой точке. Может кто-нибудь помочь мне с этим?

Заранее спасибо

1 Ответ

0 голосов
/ 18 апреля 2020

Не можете ли вы переставить метод на что-то вроде этого?

public static void SetCurrentLanguage(string language) {

    CultureInfo cultInfo = new CultureInfo(language);
    Thread.CurrentThread.CurrentCulture = cultInfo;
    Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;

    if (m_resourceManager == null)
    {   
        m_resourceManager = ResourceManager.CreateFileBasedResourceManager("Globalization", m_path, null);
    }
}

Таким образом, вы просто создаете менеджер ресурсов, когда он нулевой, но при этом изменяете cultureinfo при каждом вызове функции.

...