我可以本地化AFX_IDP_ASK_TO_SAVE吗?

时间:2012-10-04 12:02:51

标签: c++ mfc localization

在我的申请中,我有一个'你想保存你的更改吗?'消息框。我正在从MFC显示文本:

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

现在我正在将应用程序本地化为日语。我猜这样的标准文本已经翻译成大多数主要语言。但我不知道如何设置MFC使用这些标准文本的资源标识符的日语版本。有可能这样做吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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