0

这是我在 windows 窗体全球化方面的第一次尝试,所以我用我的语言创建了窗体并将属性设置Localizable为 true 并Language在默认情况下保留属性,所有内容都在默认资源文件中生成,这很好。之后我添加了新的资源文件FormName.en.resx并在这里​​重命名了一些东西只是为了测试它是如何工作的,但是现在每次我运行应用程序时它都使用我添加的英文文件而不是默认FormName.resx文件,如果我删除英文资源文件,一切都会顺利恢复正常,我错过了什么吗?

首先,我认为是 Windows 造成的,但我的语言设置正确,我什至尝试Thread.CurrentThread.CurrentCulture手动更改,但它始终保持为英文。

4

2 回答 2

0

默认情况下,用于确定资源语言的 UI 语言与操作系统的语言包绑定。如果您运行的是英文 Windows,那么您的应用程序将获取英文资源。如果要强制使用不同的语言,请设置Thread.CurrentThread.CurrentUICulture属性。Thread.CurrentThread.CurrentCulture 影响日期/时间/数字的格式。

于 2012-07-27T19:20:18.793 回答
0

好吧,我认为这是一种肮脏的方法,但是如果有人遇到同样的问题,那就是:

 private void ChangeLanguage(string lang)
        {       
            Thread.CurrentThread.CurrentCulture = new CultureInfo(lang);
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);

            //YourFormType should be the name of your form
            ComponentResourceManager resources = new ComponentResourceManager(typeof(YourFormType));
            resources.ApplyResources(this, "$this");

            foreach (Control control in this.Controls)
            {
                resources.ApplyResources(control , control.Name);
            }
        }

如果有人有更好的解决方案,请发布,我会尝试

于 2012-07-29T15:33:01.283 回答