c++ - Qt 从非源文件中翻译字符串

标签 c++ qt translation

我有一个使用 XML 文件的 Qt 项目。这些 XML 文件包含人类可读的文本,该文本应使用 Qt 工具(lupdate、lrelease、QtLinguist)进行翻译。

问题是,是否可以通过 lupdate 在 .ts 文件中生成条目,而无需使用 QT_TR_NOOP() 宏和 friend 从源代码文件中的 XML 文件复制字符串?或者一般来说,如何翻译 Qt 项目的非源文件中的字符串?

最佳答案

我们遇到了同样的问题:包含人类可读字符串的 XML 文件。

我们的解决方案是确保 XML 文件中的人类可读字符串易于提取(我们将它们放在 LABEL 属性中)并且我们开发了一个可以解析 XML 文件的小工具,提取字符串,生成上下文(通过从 XML 文件中提取数据),然后生成包含 QT_TR_NOOP() 列表的 CPP 头文件。

此文件已添加到 lupdate 使用的项目文件 (.pro) 中。

这个解决方案对我们来说很好,但我们必须非常小心两件事:

  • 每次 XML 文件的内容发生变化时运行此工具。
  • 确保 XML 文件采用 UTF-8 编码。

关于c++ - Qt 从非源文件中翻译字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4892575/

相关文章:

qt - qmake 无法评估正确的变量

translation - 全局化管道中的韩语翻译

c++ - 如何确定指针和动态数组 "C++ to Delphi"

c++ - 在创建派生类对象时将参数传递给基类构造函数

c++ - 使用迭代器进行二进制搜索,为什么我们使用 "(end - begin)/2"?

c++ - 如何从字符串中转换回 Boost::thread::id?

c++ - 如何最有效地从用户那里获取 10 个不同的数字,将它们添加到一个数组中,然后输出所有这些数字?

qt - 在 Qt Designer 中分层 UI 元素

qt - QDoubleSpinBox的前导零(始终为4位数字)

angular - Transloco translateService.translate 在 app.component.ts 中不起作用