Qt翻译功能最近用得好好的,却是一份新需求导致对这一功能的思考。
最近接到一个新需求就是为公司的某个软件添加多语言翻译功能,由于之前已经做过类似的了。直接移植就可以了。可是实际上并不是那么简单,多语言共有9种。可是翻译人员不会用Qt的语言家软件。除了中英文自己翻译外,其余的7种语言都需要发给专门的翻译人员翻译。7种语言翻译都统一弄成excel文本给他们翻译,当他们翻译完成后又一个一个对应的填在语言家软件里,这操作做了两份语言后,实在是受不了了。心里碎碎念:这到底是什么翻译操作啊,太繁琐了。
于是我不发excel文档给他们翻译了,和他们说你翻译到Qt的语言家软件吧。教他们安装Qt语言家,并教他们如何使用。说多是泪,我一顿操作猛如虎,一问他们会不会,都说太难了!只好放弃这一想法。顿时陷入沉思中,究竟是谁走漏了风声说:Qt翻译很简单的!!!
还有就是,语言家提供提取Qt项目文件的翻译到文件,我想说的是这操作挺好的。但每次翻译字段更改的时候又要重新刷新一下翻译文件,这设计太难用了。我们常用的思维应该是修改翻译文本,再通过翻译文本去修改Qt项目的翻译字段。
常常我们不论翻译和不翻译的文本都使用tr()
包含一下,但这是用错了,或许有人会说:可以解决乱码问题呀。只能说有些系统能解决乱码问题。在没有翻译功能的前提下使用tr()
会造成额外性能负担。还有就是tr()
会根据类名标记翻译字段,这一点很想不明白。作者可能是使用类似命名空间的做法来实现翻译字段的命名空间限制,实际使用上只会增加额外的使用负担和学习成本。
回到最初问题(重复工作多),没办法只能写一个小工具(csv转qm),csv格式文件可以被excel打开,而工具可以直接将csv文件转换为翻译二进制(qm后缀文件),这样就可以避免一个一个复制到语言家再翻译了。而对翻译人员也相对友好。
Qt君公众号回复『工具』获取该工具