2010-02-05 38 views
2

在開發Qt應用程序時,我遇到了使用QTranslator的問題。經過一番研究,我發現問題是來自Qt的lupdate與Qt翻譯lupdate和命名空間

using namespace; 

指令有問題。按照here中的說明,我發現我必須在我的代碼中使用特殊註釋,以幫助lupdate明白這些類位於命名空間內。特殊的註釋是這樣的:

/* 
TRANSLATOR namespace::MyClass 
*/ 

所以,我說在我所有的來源必須通過TR所管理將QString這個意見。但是,這些應用程序仍然沒有被翻譯。 QTranslator的installTranslator方法返回true。我用來安裝翻譯器的實際代碼是

Application app(argc,argv); //Application is a subclass of QApplication 
QTextCoded::setCodecForTr(QTextCodec::codecForName("utf8")); 
QTranslator translator; 
translator.load(QString("..//language//") + locale); 
app.installTranslator(&translator); 
app.exec(); 

有沒有人遇到同樣的問題?我究竟做錯了什麼?

EDIT--

修正一個小錯誤在上面的代碼,但仍然沒有結果。

+0

盲目猜測:是否使用,你想翻譯對字符串的QObject :: TR()?此外,Qt無法知道動態字符串,因此如果您知道將出現什麼字符串(可能從數據庫中檢索到),則必須確保它們出現在tr()內,即使該代碼從不執行。 – erelender 2010-02-08 14:10:47

+0

@erelender是的,我在我所有的編譯時間字符串(標籤和按鈕文本,主要)中使用tr()。然而,我沒有得到翻譯權。 – cake 2010-02-09 22:03:03

回答

0

您確實安裝了翻譯器,但不加載任何翻譯。

您鏈接到指定的確切文件:

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    QTranslator translator; 
    translator.load(QString("arrowpad_") + locale); // here load translation 
    app.installTranslator(&translator); 

    app.exec() 
} 
+0

Ops ...我忘了這一步,但這不是問題(我已經嘗試過)。我在編輯這個問題。 – cake 2010-02-05 15:35:01