c # Перечислите и измените языковые ресурсы - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь переключать языки в своем приложении, и кажется, что я не могу заставить его работать.

Я создал папку ресурсов с файлами по схеме именования Language.*culureinfo.resx, т. Е. Language.en-US.resx со значением по умолчанию Language.resx

Я хочу a) перечислить все доступные языки и b) фактически изменить язык в приложении.

Для а) обходного пути может быть текстовый файл со всеми доступными языками для перечисления их в Resources.resx. Но если возможно, я хочу получить языки из доступных файлов ресурсов.

Для б) Я сделал тестовую форму с меткой:

public Form1()
    {

        InitializeComponent();
        this.label1.Text = Resources.Language.LabelString;

    }

и сделал кнопку, которая вызывает этот код, который я получил из здесь с аргументом "en-US":

private static void ChangeLanguage(string lang)
    {
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);
        foreach (Form frm in Application.OpenForms)
        {
            localizeForm(frm);
        }
    }

    private static void localizeForm(Form form)
    {
        var manager = new ComponentResourceManager(form.GetType());
        manager.ApplyResources(form, "$this");
        applyResources(manager, form.Controls);
    }

    private static void applyResources(ComponentResourceManager manager, Control.ControlCollection controls)
    {
        foreach (Control ctl in controls)
        {
            manager.ApplyResources(ctl, ctl.Name);
            applyResources(manager, ctl.Controls);
        }
    }

но ничего не происходит. Может ли кто-нибудь сказать мне, что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...