2012-05-04 5 views
1

MacでQt 4.7.4を使用する。QTranslatorとUTF-8のコンボで問題が発生する

私が書いたperlスクリプトを使用して、私の* .TSファイルが生成され、UTF-8です。レガシー依存関​​係の長い話。私たちは13種類の言語をサポートしなければなりません。 * .QMファイルを生成することはうまくいくようです。 * .QMファイルをQt言語学者に読み込むことができ、すべてが健全に見えます。

レガシーの理由から、私のシステムランゲージは "Enums"です。

CODECFORTR = UTF-8 

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE TS> 
<TS version="2.0" language="en"> 
<defaultcodec>UTF-8</defaultcodec> 
<context> 
    <name>MyApp</name> 
    <message> 
     <source>APP_STRINGS_MYLABEL_TEXT/source> 
     <translation>My Label Text In English</translation> 
    </message> 
.. 
.. 
.. 
</context> 

マイプロジェクトファイルには、以下があります。

QString label = tr("APP_STRINGS_MYLABEL_TEXT"); // this translates to 13 langauges... 

ので、例えば英語.TSファイルからの抜粋を読み取ります。それは私がこのような何かを、です

私の主なメソッドは次のようなテストコードを持っています:

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); 
QTranslator translator; 
bool empty = translator.isEmpty(); // Returns TRUE 
bool loaded = translator.load("myApp_en","/Users/user/Dev/myApp/translation"); 
empty = translator.isEmpty(); // returns FALSE 

// install the translator. 
MyApp->installTranslator(&translator); 

// Here comes my problem... 
QString test = MyApp->trUtf8("APP_STRINGS_MYLABEL_TEXT"); // returns "APP_STRINGS_MYLABEL_TEXT" 
QString test2 = MyApp->tr("APP_STRINGS_MYLABEL_TEXT"); // returns "APP_STRINGS_MYLABEL_TEXT" 

ご覧のとおり、すべての文字列が元の値に戻されています。実際の翻訳は行われません。もし何が起こっているのかも知れば、私は援助に感謝します。私は今失っている。

+0

翻訳がロードされているように見えますが、システムロケールに一致させることはできません。あなたはこれで何を得るのですか?:\t qDebug()<< QLocale :: system().uiLanguages(); –

+0

uiLanguages()はコンパイルをパスしません。おそらく4.7.4では廃止予定ですが、language()は31( "英語")です。これは "languageToString(Langauge lang)"メソッドから戻ってくる文字列です。しかし、待って、ここに何かがあるかもしれません。私が "QLocale :: system()。name();"と尋ねると、私は "en_US"を取り戻しています。これは不一致が起こる場所ですか?どのように私はこれをブリッジするのですか? – JasonGenX

+0

国の接尾辞はOKだと思います。 Qtは翻訳ファイルの検索時にそれを削除します:http://qt-project.org/doc/qt-4.8/qtranslator.html#load他のロード機能を試すことはできますか? –

答えて

0

原因は文脈でした。私は第三者ソースから生成された文字列を使用しているので、文脈は常に間違っていました。翻訳APIで「MyApp」コンテキストを明示的に使用し始めると、すぐに機能し始めました。

回答したすべての人に感謝します。

関連する問題