我遇到了奇怪的Qt翻译问题。Qt Translation返回相同的字符串而不是翻译
由于我无法改变涉及翻译表的遗留数据库的原因,我们的'自然语言'是'枚举'。
QString myString = tr("OUR_APP_MY_STRING");
我有一个脚本,它将* .TS文件从我们的数据库中构建出来供Qt使用。
该条目在* .ts文件的英文看起来像这样:
<message>
<source>OUR_APP_MY_STRING</source>
<translation>My String</translation>
</message>
的* .TS文件加载罚款到Qt语言。那里的一切都很好看。找到“OUR_APP_MY_STRING”并且其“英文翻译”看起来不错。
的QT项目文件的翻译部分 的* .ts文件我使用lrelease,即可生成.QM文件,并把它们在应用程序的资源( .qrc)文件。
在我的应用程序的安装功能(通过施工后的main()调用),我有以下代码:
// initialize translator
this->currentTranslator = new QTranslator(instance());
if (this->currentTranslator->load(":/translation/myApp_en.qm"))
{
this->installTranslator(this->currentTranslator);
QString test = tr("OUR_APP_MY_STRING"); // <<----- problem. output is always "OUR_APP_MY_STRING"
}
任何想法?
回答你的问题:是的,我在我的项目文件中的* .qrc文件。我所有的应用图片都在那里。 * .qrc文件的前缀是“/”。文件夹存在。我们之间唯一的区别是,我从我的QApplication派生类中加载并初始化了翻译器,并且您正在从主要方法中进行此操作。 – JasonGenX
@ RM1970编辑了我的答案,请看底部。 – dschulz
这不是加载部分。我放弃了资源,只为了解问题出在哪里。我直接从我的硬盘上加载,并且加载很好。负载返回“true”.. QTranslator上的“isEmpty”返回false。我觉得我遇到了麻烦,因为我的* .TS文件是UTF-8,因为我的应用程序被翻译成13种语言,有些非常奇特。我无法弄清楚如何解决它。翻译字符串总是返回相同的字符串,未翻译。 – JasonGenX