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"
ご覧のとおり、すべての文字列が元の値に戻されています。実際の翻訳は行われません。もし何が起こっているのかも知れば、私は援助に感謝します。私は今失っている。
翻訳がロードされているように見えますが、システムロケールに一致させることはできません。あなたはこれで何を得るのですか?:\t qDebug()<< QLocale :: system().uiLanguages(); –
uiLanguages()はコンパイルをパスしません。おそらく4.7.4では廃止予定ですが、language()は31( "英語")です。これは "languageToString(Langauge lang)"メソッドから戻ってくる文字列です。しかし、待って、ここに何かがあるかもしれません。私が "QLocale :: system()。name();"と尋ねると、私は "en_US"を取り戻しています。これは不一致が起こる場所ですか?どのように私はこれをブリッジするのですか? – JasonGenX
国の接尾辞はOKだと思います。 Qtは翻訳ファイルの検索時にそれを削除します:http://qt-project.org/doc/qt-4.8/qtranslator.html#load他のロード機能を試すことはできますか? –