【问题标题】:Localizing of C# Win FormsC# Win 表单的本地化
【发布时间】: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


【解决方案1】:

@Ashish : this 正是你想要的!!!!

【讨论】:

  • 这意味着我需要遍历我所有的表单控件并一个一个地设置本地化资源.....不确定它会如何影响我的窗口的性能大约有 40 到 50 个标签和其他静态控件..
猜你喜欢
  • 2011-12-04
  • 2011-11-04
  • 2011-11-07
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多