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 检索正确的语言环境,即在中文操作系统上。

重要提示:不要使用 GetUserDefaultLangID() 或 GetSystemDefaultUILanguage(),它们会返回不同的东西,即如果您有英文操作系统,则选择了中文区域设置。

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