2

さて、MFC 7 以降のサテライト DLL で組み込みのローカリゼーション サポートを利用するために MFC アプリケーションを作成しています。MUI サポートとスウェーデン語 UI を使用する Windows 7 Enterprise Edition のインストールを除いて、すべて正常に動作しているようです。英語の UI の代わりに、アプリケーションに英語の UI が表示されます。

アプリケーションはスウェーデン語を既定の言語として使用し、AppNameENU.dll の形式の英語ローカライズ DLL を使用します。そのため、MFC は、MUI 対応の Windows OS でのユーザーの選択を考慮していないかのように、実際にはこれらの状況で意図的に英語に切り替えます。 、および Windows インストールの既定の出荷言語のみですか?

これに関する MSDN ページ (上記のリンク) から、MFC は実際にこれらの設定を考慮に入れる必要があることを読みましたが、100% 確実ではありません。誰かが明確にしてもらえますか?

4

1 に答える 1

4

これは、言語選択のMFCサポートに設計上のバグがあるためです。ユーザーまたはシステム言語に一致する DLL がない場合にのみ、exe からリソースをロードすることが決定されます。

あなたの場合:言語の(順序付けられた)リストを次のように設定します:

  1. スウェーデン語 (ユーザー言語)
  2. 英語(システム言語)

次に、DLL を検索します (バグ: exe ではなく dll のみ!): スウェーデン語には一致しません。しかし、英語にはマッチがあります!

解決策: CLanguageSupportクラスを使用します。ユースケースでも問題なく動作します。

お気軽にご利用ください。アプリに組み込むのに数分しかかからず、既に実装したものとまったく同じ DLL スキームを使用します。(ヒント: CWinApp::InitInstance() 呼び出しを取り除く必要があるステップを忘れないでください!)

さらに、興味がある場合 (これはオプションです)、自動言語メニューを取得して、デフォルトが希望するものではない場合に備えて、ユーザーが自分の好みを選択できるようにすることができます。

また、翻訳の管理に役立つ優れたツールを探している場合は、appTranslatorを検討してください;-)

HTH、

于 2009-10-13T11:44:27.940 に答える