这是我在Windows窗体全球化方面的第一次尝试,因此我使用我的语言创建了表单,并将属性Localizable
设置为true,并将默认设置为Language
,默认资源文件中生成所有内容,很好。之后我添加了一个名为FormName.en.resx
的新资源文件,并在这里重命名了一些东西,只是为了测试它是如何工作的,但是现在我每次运行应用程序它都使用我添加的英文文件而不是默认的FormName.resx
文件如果我删除英文资源文件,一切都恢复正常,我错过了什么吗?
首先我认为Windows正在引起它,但我的语言设置正确,我甚至尝试手动更改Thread.CurrentThread.CurrentCulture
,但它始终保持英语。
答案 0 :(得分:0)
默认情况下,用于确定资源语言的UI语言与操作系统的语言包相关联。如果您正在运行英语Windows,那么您的应用程序将获取英语资源。如果要强制使用其他语言,请设置Thread.CurrentThread.CurrentUICulture属性。 Thread.CurrentThread.CurrentCulture影响日期/时间/数字的格式化。
答案 1 :(得分: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);
}
}
如果某人有更好的解决方案,请发布,我会尝试