Qt 国际化 : What do you use as source text in your Qt application?

标签 qt localization internationalization

这个问题是关于最佳实践的。我目前正致力于 Qt 国际化系统。

您在 Qt 应用程序中使用什么作为源文本?

  1. 您是否在应用程序代码中编写了英文文本并将其用作最终语言?
  2. 或者您是否编写了英文文本,但仍然为英文版本设置了一个专用翻译文件,这样您的代码中的文本就永远不会显示给客户?
  3. 或者您是否在您的代码中使用 ID(例如“ID_ABOUT_US”),以便在更改英文文本时语言文件永远不会“丢失”翻译?

背景:假设我使用英语作为源语言,并且我的应用程序还有 5 个翻译文件。现在发现英文文本表述不当,需要更改。由于 lupdate 使用的启发式方法,我会遇到其他 5 个翻译在更改后“丢失”这个翻译的问题吗?或者您通常认为这是一种好处,因为翻译也应该被审查?

对您的经历很感兴趣!

问候,

法比安

最佳答案

  1. 是英语,即使它不是您的母语。它是 AFAIK 世界上唯一一种仅用 7 位 ASCII 即可完全表达的语言,因此不需要您处理源代码编码。它也是人类翻译人员普遍理解的语言。然而,在源代码中“编写”意味着将所有内容都包含在 tr("") 中,从而实现预期的翻译。如果没有翻译(没有 installTranslator() 调用),tr() 是空操作,因此将显示文本。这同样适用于已安装翻译器的缺失翻译。所以你的翻译不需要完成,未翻译的文本将以你的“源代码”英文显示。

  2. “英语翻译”对于一个很少使用的功能很有用:而不是愚蠢的“1 message(s) received”你可以有任何复数的正确文本,Qt 会为你没有任何编码。只需使用 tr() overload with using the last numeric parameter并根据参数 n 在 TS 文件中提供所有复数形式的变体。不再有无穷无尽的 if-else 意大利面条和三元运算符。

    如果您的目标是多种语言(即不仅是英语和其他语言),那么设置“英语翻译”也有利于代码的一致性。英语被视为另一种语言,您可以像切换任何其他语言一样切换到它。如果您没有英文翻译,则需要卸载翻译器才能使用它,然后重新安装任何其他语言。这对 Qt 来说并不是什么大问题,只是代码的一致性问题。你可以做一个[language,translator]的 map ,不需要特别对待英语。

  3. 没有 ID。您会发现自己开发命名约定只是为了不与代码不同部分的翻译重叠。无论如何,您都需要向人工翻译人员提供 ID 到可读字符串的映射。关于“丢译”的恐惧。如果原始文本发生重大变化,那么强制重新翻译是一件好事。如果它没有那么大的变化,那么 Linguist 很可能会保留它,因为 TS 文件也保留源文件行。

如有疑问,请阅读 Qt's internationalization guide

关于Qt 国际化 : What do you use as source text in your Qt application?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12712577/

相关文章:

qt - 如何在调试时让 CLion 不显示 QString 值?

jquery - 结合jQuery-ui datepicker的本地化和初始化参数

string - 如何将 float 或货币转换为本地化字符串?

ruby-on-rails - Rails 3.1 中错误消息的嵌套模型属性本地化

ruby-on-rails - 无法在我的 Rails 项目中编辑国际化字符串

c++ - 不断重新连接到数据库导致程序变慢

windows - 如何为我的应用程序设置 Windows 10 通知首选项

linux - qgetenv 返回 NULL

ios - 如何强制 NSLocalizedString 使用特定语言

Xcode 不会从 xibs 导出字符串进行本地化