我目前正致力于本地化表单。但是我对于如何正确地做到这一点感到有些困惑。
我认为可以自动将控件属性导出到资源文件,但这似乎是一个手动任务。
我当前的方法是添加所有类型为String的控件属性,并且可写入资源文件。这是通过递归枚举窗体上的所有控件和子控件以及反映属性。
但这看起来有点复杂,我想知道其他人是怎么做到的。
所以我的问题: 使用资源文件进行控制文本本地化的最佳做法是什么?
编辑:我明白我做错了什么。我认为Displaytext会自动复制到每个资源文件中。但是,似乎只复制了已更改的字段。
基本上,我将语言设置为某个设置,更改所有控件的DisplayText,当我将语言更改回(默认)时,保存更改。
感谢任何/所有评论。
答案 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)。然后,您只需选择要进行本地化的语言即可。所有必要的资源文件都是自动生成的