c#列出并更改语言资源

时间:2019-01-11 10:21:18

标签: c# resources

我正在尝试在应用程序中切换语言,看来我无法使其正常工作。

我已经创建了一个资源文件夹,其中包含遵循命名方案Language.*culureinfo.resxLanguage.en-US.resx的文件,默认名称为Language.resx

我想a)列出所有可用的语言,b)实际更改应用程序中的语言。

对于a),一种解决方法是拥有一个包含所有可用语言的文本文件,以在Resources.resx中列出它们。但是,如果可能的话,我想从可用的资源文件中获取语言。

对于b)我已经制作了带有标签的测试表格:

public Form1()
    {

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

    }

并创建了一个按钮,该按钮使用参数"en-US"调用我从here派生的代码:

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);
        }
    }

但是什么也没发生。谁能告诉我我做错了吗?

0 个答案:

没有答案