C#Win表单的本地化
我正在开发一个需要本地化的WinForm应用程序。 如果我尝试将表单的Localizable属性设置为True,并将所有语言的文本设置为True,那么一切都很好 我想要的是在一个单独的文件夹中维护所有语言资源文件(每个表单一个文件) 在我的资源文件中,我定义了所有字符串,如下所示:C#Win表单的本地化,c#,localization,C#,Localization,我正在开发一个需要本地化的WinForm应用程序。 如果我尝试将表单的Localizable属性设置为True,并将所有语言的文本设置为True,那么一切都很好 我想要的是在一个单独的文件夹中维护所有语言资源文件(每个表单一个文件) 在我的资源文件中,我定义了所有字符串,如下所示: **Key Value** lblName Name lblAddress Address ..... 关键是我的控件名,我还将在资源文件中保留特定于表单的字
**Key Value**
lblName Name
lblAddress Address
.....
关键是我的控件名,我还将在资源文件中保留特定于表单的字符串。现在的问题是,当我编译解决方案时,它会生成语言文件,但在运行应用程序时,它只显示默认值。我甚至不知道是否加载了本地化的资源文件。另外,虽然我指定了两个单独的表单文件,但在编译时,系统只为一个项目的每种语言生成一个单独的资源文件(意味着FirstForm和SecondForm没有单独的资源文件)
是否有任何方法可以根据指定的本地化线程更改表单控件
我已经在我的主application Program.cs文件中添加了以下行:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
请建议我如何继续进行这项工作。@Ashish:这正是你想要的 除非你写像“颜色”这样的词,否则你不会看到en GB和en US之间的巨大差异。如果您想测试它,那么只需使用一个en GB的伪单词。@HansPassant:我已经在两个资源文件中使用了不同的字符串。很抱歉,在第一阶段没有描述这一点。您正在使用非标准位置来测试.resx文件,这样做总是不明智的。检查是否正在生成附属程序集。是的,正在调试下的相应文件夹en US和en GB中生成附属程序集。。这意味着我需要遍历所有表单控件并逐个设置本地化资源。…不确定这将如何影响我的窗口的性能(大约为40到40个)50标签和其他静态控件。。
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;