2016-07-01 124 views
0

在我们的C#WinForms应用程序中,我们遇到了一些本地化问题:大量我们的.resx文件似乎在其中有一个“control.TrayLocation”条目,并带有一个指定点位置的值(例如17,58)。这是非常不寻常的,因为通常这些类型的属性会添加到名称以'>>'开头的资源文件中,以指示它们是表单属性。为什么我的所有资源文件都包含TrayLocation?是Sisulizer的错吗?

这可能与我们使用Sisulizer进行翻译的事实有关,因为它可能已将属性添加到.resx中,但要确定这是否是原因,有点难。

有其他人经历了WinForms和Sisulizer的同样的问题

+0

这是相关的http://www.sisulizer.net/forum4/3622.html。如果是这样的话,>>扫描错误并不能解决问题,但问题是Sisulizer会将该点视为字符串而不是点。当它是字符串时,翻译器可以输入任何值,在你的情况下,中文值不正确。只需删除这些中文翻译或排除或标记为不翻译所有TrayLocation行。 – Jaska

回答

1

注:在充分披露的利益,我TranSolution的作者,为Visual Studio开发本地化程序(并因此的Sisulizer的竞争对手)。这不一定是Sisulizer添加的东西(虽然这是可能的)。创建托盘控件时,MSFT会自行添加此属性,该控件只是出现在Visual Studio窗体设计器底部的“托盘”区域中的非可视控件。 IOW,它通常不是“System.Windows.Forms.Control”衍生物,即GUI控件。它是与您的表单或用户控件相关的其他非可视控件,例如“System.Data.DataSet”(因此不属于最终用户实际看到的内容)。在表单设计器中,尝试从“工具箱”拖动“DataSet”到您的表单中。它会出现在设计器窗口底部的区域(“托盘”区域),因此“托盘位置”属性会显示您在该区域的位置。您甚至会在“.resx”文件中注意到,此属性是“元数据”元素,而不是“数据”元素(与“.resx”文件中的大多数其他元素一样)。这个上下文中的“元数据”通常是指通常不与控件关联的其他属性(其他属性可以即时添加到任何.NET对象中,但这是一个很长的故事)。这些特定属性通常由Visual Studio本身使用,因此您不会将它们记录为MSDN中实际控件的一部分。注意BTW的 “>>” 你提到实际指定的一个窗体或用户控件,即相关的4个特殊MSFT特性之一:

>> ControlName.Name

>> ControlName.Type

>> ControlName.Parent

>> ControlName.ZOrder

这些都无关,与托盘控制但是(他们目前的形式或用户控件通常只)。他们甚至没有被MSFT正式记录(事实上我上次检查过),尽管你在基于表单的“.resx”文件中找到的很多内容没有记录。您可以在这里找到这些属性的准官方解释https://blogs.msdn.microsoft.com/rprabhu/2003/08/21/winres/(来自在MSFT表单团队工作的人员)。

最后,请注意,根据程序的不同,在第三方本地化程序中处理这些属性和其他情况可能无法始终正确完成。我不能说Sisulizer正在做什么(大概他们正在为你正确地处理事情),但从我自己的经验来看,它花了很多工作来跟踪这个问题(再一次,因为大部分事情在基于表单的“.resx”文件中没有记录MSFT)。

1

两周前我注意到了相同的问题,并将问题报告给Sisulizer。他们解决了这个问题,并且在使用最新版本(361)时,Sisulizer不再添加这些>> xxxx资源项目。

相关问题