Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Win表单的本地化_C#_Localization - Fatal编程技术网

C#Win表单的本地化

C#Win表单的本地化,c#,localization,C#,Localization,我正在开发一个需要本地化的WinForm应用程序。 如果我尝试将表单的Localizable属性设置为True,并将所有语言的文本设置为True,那么一切都很好 我想要的是在一个单独的文件夹中维护所有语言资源文件(每个表单一个文件) 在我的资源文件中,我定义了所有字符串,如下所示: **Key Value** lblName Name lblAddress Address ..... 关键是我的控件名,我还将在资源文件中保留特定于表单的字

我正在开发一个需要本地化的WinForm应用程序。 如果我尝试将表单的Localizable属性设置为True,并将所有语言的文本设置为True,那么一切都很好

我想要的是在一个单独的文件夹中维护所有语言资源文件(每个表单一个文件)

在我的资源文件中,我定义了所有字符串,如下所示:

**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;