1

私のアプリケーションには、「変更を保存しますか?」があります。メッセージボックス。MFCから表示するテキストを取得しています。

CString prompt;
AfxFormatString1(prompt, AFX_IDP_ASK_TO_SAVE, strFileName);
UINT nResult = AfxMessageBox(prompt, MB_YESNOCANCEL, AFX_IDP_ASK_TO_SAVE)

現在、アプリケーションを日本語にローカライズしています。このような標準的なテキストは、すでにほとんどの主要言語に翻訳されていると思います。しかし、これらの標準テキストのリソース識別子の日本語版を使用するようにMFCを設定する方法がわかりません。これを行うことは可能ですか?

4

2 に答える 2

1

.rc ファイル内のいくつかのインクルード ファイルを変更する必要があることがわかりました。

#include "afxres.rc"         // Standard components
#include "afxprint.rc"               // printing/print preview resources
#include "afxribbon.rc"              // MFC ribbon and control bar resources

なる必要があります:

#include "l.jpn/afxres.rc"         // Standard components
#include "l.jpn/afxprint.rc"               // printing/print preview resources
#include "l.jpn/afxribbon.rc"              // MFC ribbon and control bar resources
于 2012-10-04T13:44:21.690 に答える
1

VS2008 では、AFX_IDP_ASK_TO_SAVE およびその他の AFX_... 文字列は MFC ローカリゼーション DLL (MFC90CHS.dll、MFC90JPN.dll) に保持されます。MFC90KOR.dll など。Windows Vista 以降で使用するには、次のように呼び出します。

SetThreadUILanguage (MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));

また

SetThreadUILanguage (MAKELANGID(LANG_JAPANESE,SUBLANG_JAPANESE_JAPAN));

Windows XP の呼び出し:

SetThreadLocale(lcid)

定数については、https://msdn.microsoft.com/en-us/library/windows/desktop/dd318693%28v=vs.85%29.aspxを参照してください。

GetSystemDefaultLangID を使用して、正しいロケール (中国語 OS など) を取得します。

重要: GetUserDefaultLangID() または GetSystemDefaultUILanguage() を使用しないでください。これらは異なるものを返します。つまり、英語の OS で中国語のロケールが選択されている場合です。

lcid = MAKELCID(GetSystemDefaultLangID(), SORT_DEFAULT);//With Chinese locale, returns 0x804, zh-CN
于 2015-09-09T09:02:09.850 に答える