0

誰かが私を殴る前に、これを最初に読んで、その 2 番目に、MFC で国際化を達成するために以下のリンクをたどってみました。

リソース DLL の作成: MFC コンポーネントのローカライズ http://msdn.microsoft.com/en-us/library/x6h91d9w.aspx

古い MFC のローカライズ htp://support.microsoft.com/kb/198846/en-us

私はMFCを初めて使用するので、親切に答えてください。したがって、MFC 7 以降でローカリゼーションを取得するために、次の手順に従いました。(現在 Visual Studio11 で MFC を使用)

  1. 共有 DLL で MFC を使用して MFC プロジェクト (MyApp) を作成しました
  2. 別の言語 (ドイツ語) をアプリに追加するために、win32 Dll プロジェクト (MyAppDEU) を作成しました。
  3. リソース ファイル (MyApp.rc) を同じフォルダー内にコピーし、名前を MyAppDEU.rc に変更しました。
  4. MyAppDEU.rc ファイルを dll プロジェクトに追加しました
  5. MyAppDEU.rc のリソース ビューで、VS_VERSION_INFO -> ブロック ヘッダーを「Deutsch (000704b0)」に変更しました。
  6. メインアプリがロードされたときの違いを確認するために、文字列テーブルのいくつかの文字列を変更しました
  7. MyAppDEU プロジェクトの出力を、MyApp Output フォルダー内でビルドするように変更しました
  8. Dll を取得するためにコンパイルされた MyAppDEU
  9. ポイント9 http://support.microsoft.com/kb/198846/en-usの指示に従って、または従わずにMyAppをコンパイルしました

したがって、これらすべてが完了しても、アプリケーションに違いは見られませんでした。アプリを作成した英語のリソース ファイルが読み込まれます。私のコンピューターにはドイツ語の Windows 8 OS が搭載されています。私が知っていることから、MFC にはサテライト DLL による多言語サポートが組み込まれています。ApplicationNameXXX.dll という正しい命名形式があります。dll は exe と同じディレクトリにあります。

ここで私が間違っていることや欠けていることを誰かが見てくれることを願っています。私はMFCにかなり慣れていないので、これに関する助けに感謝します。

4

2 に答える 2

1

[このSO回答から適応された回答]

私は、Satellite DLL による MFC 組み込みの多言語サポートをスキップして、わずかに異なるアプローチを成功裏に使用しました。

私たちのソリューションには複数の DLL プロジェクトがあり、それぞれに 1 つの言語のリソース セットが 1 つだけ含まれています (例: AppRes_ENU.DLL)。実行時InitInstance()に、次のようなコードで適切な言語 DLL を選択します。

CString sResourceDllName;
// format sResourceDllName according to the language ("%s\AppRes_%s.DLL")
hInst_aRes = LoadLibrary(sResourceDllName);
if (hInst_aRes == NULL)
{    // handle <resoure-DLL not available>
     return FALSE;
}
AfxSetResourceHandle(hInst_aRes);

hInst_aRes文字列、ダイアログボックスなどをロードするために使用します...

于 2013-07-07T09:11:15.510 に答える