我遇到了奇怪的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