我正在使用Qt並希望翻譯由Qt小部件顯示的「本地」文本。通過「本地顯示的文本」,例如,我指的是用於文本編輯(複製,粘貼,...)的上下文菜單中顯示的文本。Qt - 使用內建翻譯
以下是我已經做了:
#include <QApplication>
#include <QDebug>
#include <QTranslator>
#include <QFile>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTranslator translator;
if(translator.load("qt_fr.qm", QApplication::applicationDirPath())) {
qDebug() << a.installTranslator(&translator);
}
qDebug() << QFile::exists(QApplication::applicationDirPath() + "/qt_fr.qm"); // just to debug file existence
// MainWindow w; // not related to my question
// w.showMaximized(); // neither is this
return a.exec();
}
的qt_fr.qm文件位於path_to_qt/Qt5.6.2/5.6/mingw49_32 /譯爲Qt5.6.2和MinGW用戶。我將所述文件複製到正在運行的軟件目錄,但翻譯器始終無法加載它。但是,當我使用我自己的qm文件(使用Qt lupdate和lrelease工具從.ts文件構建)時,qm文件已正確加載並安裝。
有什麼我失蹤或做錯了嗎?
Qt會先追加一個後綴(默認'.qm'),所以我建議從文件名參數中刪除它。請注意,文檔建議使用接受'QLocale'作爲第一個參數的重載。例如,'translator.load(QLocale :: French,「qt」,QApplication :: applicationDirPath())'。 –
確實如此:如果沒有擴展名被添加到文件名中,加載過程很簡單。但是由於Qt在加載失敗時回溯並重試,添加.qm擴展不應導致失敗。 我也試過QLocale的版本,但它仍然無法正常工作。任何其他建議將受到歡迎。 – misterFad
此外,使用QLocale假定我們正在加載的qm文件與運行我們軟件的操作系統上安裝的語言匹配。但是,[有時候](https://camo.githubusercontent.com/8e48efe46e756e80f900584241c5c108ebc7fcef/68747470733a2f2f757365722e6f632d7374617469632e636f6d2f75706c6f61642f323031372f30312f32362f31343835343536393833393335385f696d6734372e706e67),我們可以同時是德國(例如)選擇英語。 當我使用我自己的.qm文件(lupdate&lrelease)時,上面提供的代碼片段工作正常,但是當加載Qt內置.qm文件時,加載過程失敗。 – misterFad