我正在开发一个在 Linux 和 Windows 上运行的 Qt 应用程序。我在德国地区。
在 Linux 上构建它时,我得到了标准按钮的正确翻译,例如QMessageBox::question
带有QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel
按钮集的标准按钮(在我的例子中是“Ja”、“Nein”和“Abbrechen”)。
但是,如果我在 Windows 上构建代码,我只会获得这些按钮(“是”、“否”和“取消”)的 C 语言环境(英语)文本。
经过一番搜索,我通过添加找到了一个全球可行的解决方案
#include <QTranslator>
#include <QLibraryInfo>
和
QTranslator qtTranslator;
if (qtTranslator.load(QLocale::system(), QString::fromUtf8("qt"), QString::fromUtf8("_"),
QLibraryInfo::location(QLibraryInfo::TranslationsPath))) {
app.installTranslator(&qtTranslator);
}
到我的main.cpp
.
使用它,我还可以在 Windows 上获得翻译后的字符串。然而,在 Linux 上,qtTranslator.load
调用失败,因此我之前的状态没有任何变化,所以我最终将该代码放在一个#ifdef Q_OS_WIN
块中。
这可行,但对我来说似乎有点hacky。另外,我不明白为什么我默认在 Linux 上而不是在 Windows 上得到翻译后的字符串。
我这样做的方式是正确的解决方案吗?如果是这样,为什么我需要在 Windows 上添加额外的代码?