我有一个 WindowsForm 应用程序,所有文本(在表单标签/按钮/其他控件上)都是用挪威语编写的。我想使用本地化转换所有英文文本。Devexpress中有什么方法可以将所有文本转换为英文,而无需手动将每个文本的含义写入资源文件中?例如:- 在附件中,“Brukernavn”被硬编码在标签上。我想将其自动转换为英文而不在 English-ResourceFile 中分配其值。Devexpress 本地化的方法应该是什么?
问问题
349 次
1 回答
0
我不知道有任何 Devexpress 方法可以做到这一点。一个好的解决方案是实际完成为英语构建本地化文件的工作,其工作方式如下。
- 将 InternationlisationLayer 添加到您的应用程序。
- 该层搜索应用程序以找到您可能想要翻译的所有控件。
- 找到所有控件后,您必须将它们的文本值与翻译后的文本相匹配。
- 找到匹配的英文文本后,您必须替换这些控件上的 Text 属性。
如果您想避免构建适当的本地化系统,下面将解释一个更简单的解决方案。
- 制作一个类型列表,并在其中填写您要翻译的所有控制文本。
- 翻译字符串并添加它们的格式,以便您拥有一个类型的字典(其中 Key 是原始文本,Value 是翻译后的文本)。
在应用程序开始获取您要翻译的所有控件的列表并执行以下操作:
public static IEnumerable<System.Windows.Forms.Control> GetAllControlsOfType(this System.Windows.Forms.Control control, Type type) { var controls = control.Controls.Cast<System.Windows.Forms.Control>(); return controls.SelectMany(ctrl => GetAllControlsOfType(ctrl, type)) .Concat(controls) .Where(c => c.GetType() == type); } public void DoTranslation() { var ctrls = this.GetAllControlsOfTypes(new List<Type>() { typeof(Label), typeof(Button) }); foreach (var ctr in ctrls) { var element = dict.FirstOrDefault(i => i.Key == ctr.Text); ctr.Text = element.Value; } }
于 2019-10-24T09:23:00.797 回答