在開發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--
修正一個小錯誤在上面的代碼,但仍然沒有結果。
盲目猜測:是否使用,你想翻譯對字符串的QObject :: TR()?此外,Qt無法知道動態字符串,因此如果您知道將出現什麼字符串(可能從數據庫中檢索到),則必須確保它們出現在tr()內,即使該代碼從不執行。 – erelender 2010-02-08 14:10:47
@erelender是的,我在我所有的編譯時間字符串(標籤和按鈕文本,主要)中使用tr()。然而,我沒有得到翻譯權。 – cake 2010-02-09 22:03:03