我有一个基本语言英语的WinForms应用程序。我将表单本地化为德语。德语中的某些单词比英语单词更长,所以我需要在德语版本的表单上移动一些控件。问题是,当我移动英语控件时,德语本地化并不反映运动(显然)。
然而有些控件被错误地移动了,我想重置它们,所以它们在英文表格上的动作也反映在德语表格上。
如何在德语表单上重置单个控件的位置和大小(或所有属性),以便在英语表单上移动时控件将在表单的两种语言版本上移动?除了深入挖掘本地化的.resx文件并删除控件的所有属性赋值之外,还有其他方法吗?
答案 0 :(得分:5)
我是Visual Studio开发人员本地化产品的作者(为了充分披露)。您从本地化的“.resx”文件中删除的任何属性(在Visual Studio窗体设计器中或在“.resx”文件本身中手动)将使控件再次遵循该属性的默认语言值。但是没有特定的功能来处理这个问题。您需要在逐个控制的基础上自己完成。但请注意,Visual Studio有时会出现问题,并且存在各种错误,因为这个问题和其他问题,所以即使您使用设计器删除它们也不会总是有效(上次我查看了这种情况)。除非它现在已经修复(我对此表示怀疑),如果你将德国控件的“Location”属性设置回默认语言的“Location”属性(例如在设计器中),VS应该删除“Location”属性“.de.resx”文件。它确实 - 有时候。其他时候它没有(去图),你需要自己手动删除它。一旦它消失,“回退”过程将确保再次使用默认语言属性(因此在您的案例中移动英文版本的控件将移动到德语版本,因为两者都再次依赖相同的属性 - 英文“.resx”文件中的那个。
答案 1 :(得分:2)
如果您以不需要更改控件的方式创建UI,我认为它将使您的未来开发更容易。然后你可以翻译标签而不是控制位置。
例如,将标签放在相应编辑字段的顶部,而不是左侧,使按钮大到足以处理所有文本。并考虑重新编写德语文本以使其尺寸更小。
答案 2 :(得分:0)
正如@Larry 所说,在设计时进行更改时,并不总是更新表单的 resx 文件。它们已损坏,有时我们需要将 Localizable 属性设置为 false 并再次设置为 true 以解决此问题。但最重要的是保持 .Designer.cs 文件始终在编辑器中打开以接受更改,因为如果关闭它并不总是更新。如果您使用的语言不是默认语言,切勿将 Localizable 属性设置为 false,除非您希望这是新的默认语言。