【问题标题】:Qt: detecting a non-translated QString (not from a tr())Qt:检测未翻译的 QString(不是来自 tr())
【发布时间】:2016-12-15 07:43:22
【问题描述】:
我有什么机会在一个非常古老且非常庞大的应用程序中找到所有错过 tr()-translate 调用的 QStrings?
我在想类似...制作一个仅用于调试的特殊 .ts 文件,并为所有翻译添加静态前缀。然后将 Qt 置于某种调试模式,并将其所有 QString 列出到 qDebug 或其他任何东西——有机会过滤掉调试翻译文件中缺少静态前缀的所有内容。这可能吗?
或者:有没有更好的方法来查找未翻译的 QString 事件?谢谢
【问题讨论】:
标签:
qt
internationalization
qstring
【解决方案1】:
对于一个大的老项目,这可能是很多工作,但下面是一种方法:
首先看到here,你想要这个:
QT_NO_CAST_FROM_ASCII 禁用从 C 字符串文字和指向 Unicode 的指针的自动转换。
为您的项目定义它,然后您就不能在需要 QString 的地方编写 C 字符串文字。然后你可能会得到一堆构建错误,你可以通过显式转换来修复这些错误,在你想要的地方使用tr。
在那之后,或者之前为了避免两次遍历相同的字符串,为QString.*"之类的正则表达式执行文件查找(Qt Creator中的Ctrl+Shift+F),并检查他们都需要tr。