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