是否可以在文本绘图级别翻译窗体语言?
问题描述:
我试图做一个简单的方法来翻译我的应用程序。 我想也许有可能通过覆盖Graphics类在文本绘图级别使用Dictionary来翻译表单。 甚至编辑绘图点以支持RightToLeft语言。 有人有一些好主意吗?是否可以在文本绘图级别翻译窗体语言?
答
我想也许有可能通过重写Graphics类来在文本绘制级别翻译带有字典的窗体。
Graphics
类不能被覆盖。您可以覆盖控件的OnPaint
方法。但是,如何将文本图纸与其他图纸分开?例如,如果有人读取Text
属性,您会得到什么结果?
有人有一些好主意吗?
是的,使用内置的本地化解决方案。只需在您的表单上设置Localizable
财产至true
。现在,您可以在设计时切换语言,并在设计时编辑该语言的所有内容,而不仅仅是文本,还包括RightToLeft属性,大小和基本所有内容。
当您启动应用程序时,表单将使用Windows语言或回退到不变的语言。如果您想以编程方式更改语言,只需设置Thread.CurrentThread.CurrentUICulture
属性。您可能希望重新打开表单以应用该语言,或者明确地致电InitializeComponent()
。
这是一个有趣的方式,我会检查出来。而对于你的问题,我的意思是只将输出转换为显示,所以Text属性将保持原来的状态。 – user6466445
这将是非常具有误导性,缺乏每一个惯例。顺便说一句,为什么它是一个问题,如果“文本”属性返回控件上的文本?如果你需要一些固定的东西,那就是'Name'属性,你也可以使用'Tag'来达到任何自定义的目的。 – taffer
如果我正在翻译Text属性,我无法返回原始文本,并且这可能会在某些情况下导致问题(例如,带选项列表的ComboBox),如果翻译是在绘图时完成的,那么Text属性仍然是源文件,并且所以随时可以通过重绘来轻松地更改语言。 – user6466445