Fab*_*ian 4 qt localization internationalization
这个问题是关于最佳实践的。我目前正在研究 Qt 国际化系统。
您在 Qt 应用程序中使用什么作为源文本?
背景: 假设我使用英语作为源语言,并且我的应用程序还有 5 个翻译文件。现在发现英文文本表述得不好,需要修改。由于 lupdate 使用的启发式方法,我是否会遇到其他 5 个翻译在更改后“丢失”此翻译的问题?或者您通常认为这是一个好处,因为翻译也应该进行审核?
对你的经历很感兴趣!
问候,
法比安
是的,英语,即使它不是你的母语。AFAIK 是世界上唯一一种仅用 7 位 ASCII 即可完全表达的语言,因此不需要您处理源代码编码。它也是人类翻译人员普遍理解的语言。然而,在源代码中“编写”意味着将所有内容都包含在 tr("") 中,从而实现预期翻译。如果没有翻译(没有installTranslator()调用),tr()则为无操作,因此将显示文本。这同样适用于已安装翻译器的缺失翻译。所以你的翻译不需要完成,未翻译的文本将以你的“源代码”英文显示。
“英语翻译”对于一个很少使用的功能很有用:而不是愚蠢的“收到 1 条消息”,您可以为任何复数提供正确的文本,Qt 会为您完成,无需任何编码。只需使用tr() 重载并使用最后一个数字参数,并在 TS 文件中为每个参数提供所有复数变体n。不再有无休止的 if-else 意大利面条和三元运算符。
如果您的目标是多种语言(即不仅是英语和其他语言),那么设置“英语翻译”也有利于代码的一致性。英语被视为另一种语言,您可以像任何其他语言一样切换到它。如果您没有英文翻译,则需要卸载翻译器才能使用它,然后再次安装任何其他语言。这对 Qt 来说并不是一个大问题,这只是代码一致性的问题。你可以做一个[语言,翻译]的地图,不需要专门对待英语。
没有 ID。您会发现自己开发命名约定只是为了不与代码不同部分的翻译重叠。无论如何,您都需要向人工翻译人员提供 id 到可读字符串的映射。关于“失去翻译”的恐惧。如果原文发生了重大变化,那么强制重新翻译是一件好事。如果它没有改变那么多,那么 Linguist 很可能会保留它,因为 TS 文件也保留源文件行。
如有疑问,请阅读Qt 的国际化指南
| 归档时间: |
|
| 查看次数: |
1361 次 |
| 最近记录: |