QT 製作語言包

我用的是Qt 4.7.2.

        Qt的翻譯分爲三步:

        1.運行lupdate,從應用程序中提取所有經tr()標識過的字符串。生成一個後綴爲*.ts的文件。

        2.使用Qt Linguist翻譯這個*.ts。然後用其生成*.qm。

        3.在應用程序中用QTranslator這個類加載*.qm文件。


        要用lupdate生成後綴爲*.ts的文件就要先在應用程序的工程文件*.pro中加入這一句:

                TRANSLATIONS = orbitEditor_zh_CN.ts

        文件名可以自己定。然後在命令行中運行lupdate -verbose 工程名.pro,程序執行完後,就會生成一個*.ts文件了。

        用Qt Linguis打開*.ts這個文件。如圖:

        從圖片中可以看到Context這一欄,這一欄是根據你程序中的類列出來的。然後旁邊的Strings這一欄就是要翻譯的語句了。翻譯時注意Sources and Forms這一欄,和Warnings這一欄就行了。前一欄可以看到要翻譯的語句的出處,後一欄可以看到警告信息。警告信息還是很有用的。每翻譯完一句,點工具欄上的那個有綠色勾的圖標,就可以完成翻譯,並跳到下一句。完全正確的那句就會出現綠色的小勾,有警告信息的就會變成黃色的勾,還沒有翻譯的就還是問號。

        注意:1.我發現有些地方,我按照原格式是應該加"\n"的。可是翻譯出來後,"\n"也顯示在了中文語句中,而不是回車換行。2.對於"&Load"這樣的語句,我們可以跟其他軟件一樣,翻譯成"加載(&L)",這樣就不會有快捷鍵丟失的警告了。3.翻譯出來的語句跟原語句的格式要相符,尤其是後面的標點。我發現比如我原來用的是英文的句號".",然後我改成中文的句號"。"就沒有警告提示了。可是當原來是英文的"!"時,翻譯成"!"就還是有警告信息。奇怪~

        翻譯完後,點File-->Release就可以生成*.qm文件了。在main.cpp中用如下語句加載:

                QTranslatorqtTranslator;

        qtTranslator.load("orbitEditor_zh_CN.qm",":/");
        a.installTranslator(&qtTranslator);

        當然記得把*.qm加入資源文件*.qrc。根據路徑的不同,自己修改上面load那句。

        這樣翻譯完後,可能會出現兩個問題:

        1.Qt的內部類比如QMessageBox,QDialog等中的語句沒有翻譯成中文。對於這個問題,再加載一個翻譯文件就行。Qt已經爲我們準備好了,在"安裝目錄\translations中。我用的就是qt_zh_CN.ts這個文件,Qt已近爲我們翻譯好了。只要將它導出爲*.qm文件就可以加載了。

        2.翻譯成中文後,中文的文字很小,得很努力看纔看得清。。。這個最簡單的方法就是設置下全局的文字大小。

        所以,最後在main.cpp中所有的加載語句是:

        QApplicationa(argc,argv);


    //加載中文翻譯
    //加載本軟件的翻譯
    QTranslator qtTranslator;
    qtTranslator.load("orbitEditor_zh_CN.qm",":/");
    a.installTranslator(&qtTranslator);
    //加載Qt其他類,比如QDialog的翻譯
    QTranslator qtGloble;
    qtGloble.load("qt_zh_CN.qm",":/");
    a.installTranslator(&qtGloble);

    //設置全局文字大小
    QFont font  = a.font();
    font.setPointSize(12);
    a.setFont(font);
發佈了70 篇原創文章 · 獲贊 11 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章