为什么在更改设计器中的区域性时不会自动创建本地化资源文件?

时间:2009-09-22 09:41:28

标签: .net winforms reflection localization resourcemanager

我目前正致力于本地化表单。但是我对于如何正确地做到这一点感到有些困惑。

我认为可以自动将控件属性导出到资源文件,但这似乎是一个手动任务。

我当前的方法是添加所有类型为String的控件属性,并且可写入资源文件。这是通过递归枚举窗体上的所有控件和子控件以及反映属性。

但这看起来有点复杂,我想知道其他人是怎么做到的。

所以我的问题: 使用资源文件进行控制文本本地化的最佳做法是什么?

编辑:我明白我做错了什么。我认为Displaytext会自动复制到每个资源文件中。但是,似乎只复制了已更改的字段。

基本上,我将语言设置为某个设置,更改所有控件的DisplayText,当我将语言更改回(默认)时,保存更改。

感谢任何/所有评论。

3 个答案:

答案 0 :(得分:3)

嗯,实际上本地化表单并不难。您将“Localizable”属性设置为“true”。这会导致表单上控件的所有可本地化属性都迁移到资源文件中。当前资源文件是与语言环境无关的文件。然后,您可以在“表单”的属性中选择另一种语言,并将所有控件标题和文​​本替换为其已翻译的变体。这会导致创建和使用适当的与语言环境相关的资源文件。

您可以通过在Thread.CurrentThread上设置CurrentCulture和CurrentUICulture属性来选择显示界面的语言:

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-GB");

界面将相应调整。

答案 1 :(得分:1)

它已经这样做了。

在表单或UserControl设计器中启用Localizable。

现在更改语言(也在设计师中),并自动创建相应的langXXX.resx。

答案 2 :(得分:1)

您只需要使表单可以本地化(在属性面板中,将Localizable设置为true)。然后,您只需选择要进行本地化的语言即可。所有必要的资源文件都是自动生成的