在我的申请中,我有一个'你想保存你的更改吗?'消息框。我正在从MFC显示文本:
CString prompt;
AfxFormatString1(prompt, AFX_IDP_ASK_TO_SAVE, strFileName);
UINT nResult = AfxMessageBox(prompt, MB_YESNOCANCEL, AFX_IDP_ASK_TO_SAVE)
现在我正在将应用程序本地化为日语。我猜这样的标准文本已经翻译成大多数主要语言。但我不知道如何设置MFC使用这些标准文本的资源标识符的日语版本。有可能这样做吗?
答案 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