2014-03-19 47 views
0

我的項目文件夾是目前設置是這樣的:Qt的本地化的QMainWindow

-root 
    ---[source files] 
    ---Translations 
    ------app_en.ts 
    ------app_en.qm 
    ------app_fr.ts 
    ------app_fr.qm 
    ------app_jp.ts 
    ------app_jp.qm 

我的.pro文件:

#------------------------------------------------- 
# 
# Project created by QtCreator 2014-03-18T15:15:40 
# 
#------------------------------------------------- 

QT  += core gui 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = TestApp 
TEMPLATE = app 


SOURCES += main.cpp\ 
     mainwindow.cpp 
TRANSLATIONS=Translations/app_en.ts\ 
      Translations/app_fr.ts\ 
      Translations/app_jp.ts 
CODECFORSRC = UTF-8 

HEADERS += mainwindow.h 

FORMS += mainwindow.ui 

在我的main.cpp我試着翻譯強制JP:

#include "mainwindow.h" 
#include <QApplication> 
#include <QTranslator> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    QTranslator translator; 
    translator.load("app_jp"); 
    a.installTranslator(&translator); 
    MainWindow w; 
    w.show(); 

    return a.exec(); 
} 

但是主窗口仍然以英文顯示。也許我誤解了文檔,但是如何強制某個本地應用程序? 我的編譯輸出文件夾中有.qm文件(我將它們複製到編譯輸出文件夾的根目錄中)

回答

0

可能您提供了翻譯,但未標記爲已完成。檢查app_jp.ts(這是一個xml),你將有條目type="unfinished"。清除這個標誌。 也許你可以從Qt Linguist工具中做到這一點(我不記得這個選項在哪裏)。

檢查this tutorial

另外添加一些日誌(驗證翻譯是正確加載):

bool translatorLoaded = translator.load("app_jp"); 
if (!translatorLoaded) 
    qWarrning("Problem loading translation file"); 
+0

我也將其標記爲已完成,當我添加了qWarning我永遠無法得到它是真實的: HTTP:/ /pastebin.com/L3L6TMTq – James

+0

如果它永遠不會返回true,所以這意味着這些* .qm文件無法找到。我猜你使用Qt創建器時選中了「Build in different place」選項。確保這些文件位於可執行文件的相同位置(或禁用「在不同位置構建」)。 –

+0

將qm文件添加到嵌入資源,現在可以正常工作 – James