【发布时间】:2013-08-20 11:43:14
【问题描述】:
我正在开发一个需要本地化的 WinForm 应用程序。 如果我尝试将表单的 Localizable 属性设置为 True 并为所有语言设置文本,那么一切正常。
我想要的是将所有语言资源文件保存在一个单独的文件夹中(每个表单一个文件)。
-Project
-Resources
-Language
frmFirstForm.en-US.resx
frmFirstForm.en-GB.resx
frmSecondForm.en-US.resx
frmSecondForm.en-GB.resx
frmFirst.cs
frmSecond.cs
在我的资源文件中,我将所有字符串定义如下:
**Key Value**
lblName Name
lblAddress Address
.....
关键是我的控件名称,我还将在资源文件中保留表单特定的字符串。现在的问题是,当我编译解决方案时,它会生成语言文件,但在运行应用程序时它只显示默认值。我什至不知道是否加载了本地化资源文件。此外,虽然我已经指定了两个单独的表单文件,但是在编译系统时,只为项目的每种语言生成一个资源文件(意味着 FirstForm 和 SecondForm 没有单独的资源文件)。
有什么方法可以根据指定的本地化线程更改表单控件吗?
我已经在我的主应用程序 Program.cs 文件中添加了以下行:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
请建议我如何进行此操作..
【问题讨论】:
-
除非您写“color”之类的词,否则您不会看到 en-GB 和 en-US 之间的巨大差异。如果您想对其进行测试,则只需在 en-GB 中使用虚假词即可。
-
@HansPassant:我已经为两个资源文件使用了不同的字符串。我很抱歉在第一阶段没有描述这一点。
-
您正在为 .resx 文件使用非标准位置,总是不明智地尝试像这样绊倒构建系统。检查是否正在生成附属程序集。
-
Yes Satellite Assemblies 正在 debug 下的 en-US 和 en-GB 文件夹中生成。
标签: c# localization