1

MacでQt4.7.4を使用する。

私の*.TSファイルは生成され、私が書いたperlスクリプトを使用してUTF-8です。レガシー依存の長い話。エキゾチックな言語を含め、サポートする必要のある13の言語があります。それらから*.QMファイルを生成することはうまくいくようです。*.QMファイルをQtLinguistにロードすると、すべてが正常に見えます。

レガシーの理由により、私のシステム言語は「列挙型」です。つまり、私は次のようなことをします。

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

したがって、たとえば英語の.TSファイルからの抜粋は次のようになります。

<?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>

私のプロジェクトファイルには次のものがあります。

CODECFORTR = UTF-8

私のメインメソッドには、次のようなテストコードがあります。

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"

ご覧のとおり、すべての文字列が元の値に変換されています。実際の翻訳は行われません。なぜシンが起こっているのかご存知でしたら、助けていただければ幸いです。私は今途方に暮れています。

4

1 に答える 1

0

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

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

于 2012-05-07T21:09:25.300 に答える