2012-02-10 4 views
11
#include<QApplication> 
#include<QTranslator> 
#include<QObject> 
#include<QTextCodec> 
#include<QWidget> 

int main(int argc, char* argv[]) 
{ 
    QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); 
    QApplication app(argc, argv); 

    QTranslator translator; 
    translator.load("app_zh_CN.qm"); 
    app.installTranslator(&translator); 

    QWidget widget; 
    widget.setWindowTitle(QObject::tr("Hello World!")); 
    widget.show(); 
    return app.exec(); 
} 

QTranslatorは、GUIインターフェイスがある

SOURCES += \ 
    main.cpp 

TRANSLATIONS += app_zh_CN.ts 

動作しないの "Hello World!"私のfile.qmには "你好!"(中国語)に翻訳される... どこに苦労ですか?誰が私を助けることができます..

+2

'translator.load()'ブール値を返します。それはあなたのために真実か偽りか? –

+0

@Arnold Spence:ありがとうございました..返される値はfalseです...何が間違っていますか? –

+0

彼の答えで@Dave Mateerの指示に従ってください:) –

答えて

19

"正しい"スポットに.qmファイルを置くと、あなたの例は私のために働きます。 (下記参照)すべての手順を実行していることを確認してください。lupdateを実行して.tsファイルを作成してください:

  1. 言語学者の翻訳を行い、.tsファイルを保存します。
  2. lreleaseを実行して、.tsファイルを.qmファイルにコンパイルします。
  3. .qmファイルを正しい場所にコピーします。

私の推測では、#4は悪くなっています。​​状態のドキュメント:ディレクトリが指定されていない場合

は、アプリケーションの 実行可能ファイルのディレクトリ(すなわち、)(applicationDirPathとして)使用されます。

しかし、私はそれがあるとして動作させるために実行上のフォルダに.qmファイルを入れていました。私がドキュメントを誤解していない限り、これはQtバグですが、回避するのは簡単です。ディレクトリに明示的にapp.applicationDirPathという名前を付けると、そのディレクトリは実行可能フォルダで機能しました。別のディレクトリを指定することもできます。

translator.load("app_zh_CN.qm");作品で:と

[MyApp] 
    app_zh_CN.qm 
    [debug] 
    MyApp.exe 

translator.load("app_zh_CN.qm", app.applicationDirPath());作品:例えば

[MyApp] 
    [debug] 
    app_zh_CN.qm 
    MyApp.exe 
+0

私を助けてくれてありがとう... –

関連する問題