根据当前软件设置的语言来显示对应的提示信息等
- int iKey = MULTILANGUAGESTART + 2063;
- g_LanguageKey.Format("%d", iKey);
- CString str = "The intersection cannot be set in a non idle state!";
- str = g_SysLanguageInfo.GetCs("Prompted", g_LanguageKey, str);
- if (AfxMessageBox(str, MB_RETRYCANCEL | MB_ICONWARNING) == IDCANCEL)
- {
- return false;
- }
-
- // SysLanguageInfo.h: interface for the SysLanguageInfo class.
- //
- //
-
- #if !defined(AFX_SysLanguageInfo_H__649ABA02_CEAE_4578_9107_B1483F42AA9F__INCLUDED_)
- #define AFX_SysLanguageInfo_H__649ABA02_CEAE_4578_9107_B1483F42AA9F__INCLUDED_
-
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
-
- #define MAX_BUFF 1024*3
-
- class SysLanguageInfo
- {
- public:
- SysLanguageInfo();
- virtual ~SysLanguageInfo();
-
-
- public:
- // 读系统配置信息
- void ReadConfig();
-
- // 获取本程序的目录
- CString GetLocalDir();
-
- // 获取系统单位比例因子
- void SetSysUnitScale(int nUnit);
- double GetSysUnitScale();
-
- // 单位序号
- int GetUnit(); //0 1, 2
- void SetUnit(int nUnit);
-
- // 设置发行版本
- void SetPublishVersion(int nType);
-
- //语言相关函数
- public:
- //获取当前语言序号
- void ReadLanguage(int iLanguageID);
-
- //设置语言路径
- void SetLanguagePath();
-
- //获取当前语言号
- int GetCurrenLanguageID();
- /****************************************************************************
- *
- *参数:
- CDialog *pDlg 对话框指针
- UINT uDlgID 对话框ID
- *
- *返回值:
- *void
- *
- *描述:
- *设置 对话框控件 名称
- 当对话框运行时获取其所有可得到的字符串,并保存到语言文件中,每个控件用对话框ID和控件ID唯一标识
- ****************************************************************************/
- void SetDlgStrings(CDialog* pDlg, UINT uID, CString strSection);
-
- // 根据关键字获取配置文字
- CString GetCs(CString strKey); //strSection== "String". strDefult = strKey
- CString GetCs(CString strSection,CString strKey,CString strDefault);
-
- CString GetToolItem(CString strSection,CString strKey,CString strDefault);
-
- // config.ini字段读写
- CString LoadConfigString(CString strSect, CString strKey);
- void SetConfigString(CString strSect, CString strKey, CString strText);
-
- // 指定语言
- BOOL IsLanguage(int nLanguage);
- void SetLanguage(int nLanguage);
-
- // 判断是否有指定语言项
- BOOL EnableLanguage(int nLanguage);
-
- // 检测语言配置文件
- //void CheckLanguageFile();
-
- // 设置语言组合
- void SetLanguageGroup(int nLanguageGroup);
- private:
-
- public:
- CString TrimValidString(CString strText); //去除回车换行字符
-
-
- private: //私有成员变量
- int m_nUnit; // 系统单位序号
- double m_lfSysScale; // 系统单位比例因子
-
- CString m_strLocalDir; // 程序目录
- CString m_strConfig; // 配置文件路径
- CString m_strLanguagePath; // 语言配置信息路径
- CString m_strLangText;
-
- int m_nLanguage; // 当前语言序号
- int m_nLanguageGroup; // 当前配置的语言组合
- int m_nPublish; // 发行版本(0-单机,)
- };
-
- #endif // !defined(AFX_SysLanguageInfo_H__649ABA02_CEAE_4578_9107_B1483F42AA9F__INCLUDED_)
-
-
- // SysLanguageInfo.cpp: implementation of the SysLanguageInfo class.
- //
- //
-
- #include "stdafx.h"
- #include "SysLanguageInfo.h"
- #include "direct.h"
- #include "Symbol.h"
-
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[]=__FILE__;
- #define new DEBUG_NEW
- #endif
-
- //
- // Construction/Destruction
- //
-
- SysLanguageInfo::SysLanguageInfo()
- {
- m_nUnit = 0; // 系统单位序号
- m_lfSysScale = 0.0; // 系统单位比例因子
-
- //初始化本地目录
- m_strLocalDir = GetLocalDir();
- SetCurrentDirectory(m_strLocalDir);
-
- }
-
- SysLanguageInfo::~SysLanguageInfo()
- {
-
- }
-
- struct LANGDEF
- {
- UINT nID;
- char szLangName[256];
- };
-
- const LANGDEF languages[] =
- {
- { XTP_IDC_LANG_ARABIC, "ArabicSa" },
- { XTP_IDC_LANG_BULGARIAN, "Bulgarian" },
- { XTP_IDC_LANG_CHINESE_PRC, "Chinese_Prc" },
- { XTP_IDC_LANG_CHINESE_TAIWAN, "Chinese_Taiwan" },
- { XTP_IDC_LANG_CROATIAN, "Croatian" },
- { XTP_IDC_LANG_CZECH, "Czech" },
- { XTP_IDC_LANG_DANISH, "Danish" },
- { XTP_IDC_LANG_DUTCH, "Dutch" },
- { XTP_IDC_LANG_ENGLISH, "English" },
- { XTP_IDC_LANG_ESTONIAN, "Estonian" },
- { XTP_IDC_LANG_FINNISH, "Finnish" },
- { XTP_IDC_LANG_FRENCH, "French" },
- { XTP_IDC_LANG_GERMAN, "German" },
- { XTP_IDC_LANG_GREEK, "Greek" },
- { XTP_IDC_LANG_HEBREW, "Hebrew" },
- { XTP_IDC_LANG_HUNGARIAN, "Hungarian" },
- { XTP_IDC_LANG_ITALIAN, "Italian" },
- { XTP_IDC_LANG_JAPANESE, "Japanese" },
- { XTP_IDC_LANG_KOREAN, "Korean" },
- { XTP_IDC_LANG_LATVIAN, "Latvian" },
- { XTP_IDC_LANG_LITHUANIAN, "Lithuanian" },
- { XTP_IDC_LANG_NORWEGIAN, "Norwegian" },
- { XTP_IDC_LANG_POLISH, "Polish" },
- { XTP_IDC_LANG_PORTUGUESE_BR, "Portuguese_Br" },
- { XTP_IDC_LANG_PORTUGUESE, "Portuguese" },
- { XTP_IDC_LANG_ROMANIAN, "Romanian" },
- { XTP_IDC_LANG_RUSSIAN, "Russian" },
- { XTP_IDC_LANG_SERBIAN, "Serbian" },
- { XTP_IDC_LANG_SLOVAK, "Slovak" },
- { XTP_IDC_LANG_SLOVENIAN, "Slovenian" },
- { XTP_IDC_LANG_SPANISH, "Spanish" },
- { XTP_IDC_LANG_SWEDISH, "Swedish" },
- { XTP_IDC_LANG_THAI, "Thai" },
- { XTP_IDC_LANG_TURKISH, "Turkish" },
- { XTP_IDC_LANG_UKRAINIAN, "Ukrainian" },
- };
-
-
- void SysLanguageInfo::ReadConfig()
- {
- m_nUnit = 0;
- SetSysUnitScale(m_nUnit);
-
- //初始化本地目录
- m_strLocalDir = GetLocalDir();
- SetCurrentDirectory(m_strLocalDir);
-
-
- //m_strWYPath.Format("\\Lang", m_strLocalDir);
- // if(!ec_load_unqlite(m_strWYPath + "\\kvite.dll"))
- // AfxMessageBox("Load database fauluer!!!");
-
- //m_strConfig.Format("%s\\Language\\IBrightCutConfig.ini", m_strLocalDir);
-
- //设定发行版本
- SetPublishVersion(PUBLISHVER_NORMAL); //PUBLISHVER_NORMAL--单机
-
- //设定有几种语言(0--简体,1--英文, 2--简体+英文, 3--繁体, 4--简体+英文+繁体,5)
- // int nLanguageGroup = LANGUAGE_SIMPLIFIED|LANGUAGE_ENGLISH|LANGUAGE_COMPLICATED;
- // SetLanguageGroup(nLanguageGroup);
-
- //m_strKvs.Format("%s\\InSystem.kvs", m_strLocalDir);
- //m_strUIni.Format("%s\\DlKsBx\\UserSysem.ini", m_strLocalDir);
-
- // 初始化语言
- //ReadLanguage();
- }
-
- double SysLanguageInfo::GetSysUnitScale()
- {
-
- return m_lfSysScale;
- }
-
- void SysLanguageInfo::SetSysUnitScale(int nUnit)
- {
- switch (nUnit)
- {
- case UNIT_MM:
- {
- m_lfSysScale = UNIT_MM;
- break;
- }
- case UNITSCALE_CM:
- {
- m_lfSysScale = UNIT_CM;
- break;
- }
- case UNIT_INCH:
- {
- m_lfSysScale = UNIT_INCH;
- break;
- }
- default:
- {
- m_lfSysScale = UNIT_CM;
- break;
- }
- }
- }
-
- int SysLanguageInfo::GetUnit()
- {
- return m_nUnit;
- }
-
- void SysLanguageInfo::SetUnit(int nUnit)
- {
- m_nUnit = nUnit;
- SetSysUnitScale(nUnit);
- }
-
- void SysLanguageInfo::SetPublishVersion(int nType)
- {
- m_nPublish = nType;
- }
-
- void SysLanguageInfo::SetLanguageGroup(int nLanguageGroup)
- {
- m_nLanguageGroup = nLanguageGroup;
- }
- void SysLanguageInfo::ReadLanguage(int iLanguageID)
- {
- char __cwd[256];
- getcwd(__cwd,256);
-
-
-
-
- if (iLanguageID > 0 )
- {
- m_nLanguage = iLanguageID;
- }
- else
- {
- m_nLanguage = XTP_IDC_LANG_ENGLISH;
- }
-
- SetLanguagePath();
-
- getcwd(__cwd,256);
- /
- // SetCurrentDirectory(__cwd);//by
- }
-
- // #define XTP_IDC_LANG_ARABIC 35200
- // #define XTP_IDC_LANG_BULGARIAN 35201
- // #define XTP_IDC_LANG_CHINESE_PRC 35202
- // #define XTP_IDC_LANG_CHINESE_TAIWAN 35203
- // #define XTP_IDC_LANG_CROATIAN 35204
- // #define XTP_IDC_LANG_CZECH 35205
- // #define XTP_IDC_LANG_DANISH 35206
- // #define XTP_IDC_LANG_DUTCH 35207
- // #define XTP_IDC_LANG_ENGLISH 35208
- // #define XTP_IDC_LANG_ESTONIAN 35209
- // #define XTP_IDC_LANG_FINNISH 35210
- // #define XTP_IDC_LANG_FRENCH 35211
- // #define XTP_IDC_LANG_GERMAN 35212
- // #define XTP_IDC_LANG_GREEK 35213
- // #define XTP_IDC_LANG_HEBREW 35214
- // #define XTP_IDC_LANG_HUNGARIAN 35215
- // #define XTP_IDC_LANG_ITALIAN 35216
- // #define XTP_IDC_LANG_JAPANESE 35217
- // #define XTP_IDC_LANG_KOREAN 35218
- // #define XTP_IDC_LANG_LATVIAN 35219
- // #define XTP_IDC_LANG_LITHUANIAN 35220
- // #define XTP_IDC_LANG_NORWEGIAN 35221
- // #define XTP_IDC_LANG_POLISH 35222
- // #define XTP_IDC_LANG_PORTUGUESE 35223
- // #define XTP_IDC_LANG_PORTUGUESE_BR 35224
- // #define XTP_IDC_LANG_ROMANIAN 35225
- // #define XTP_IDC_LANG_RUSSIAN 35226
- // #define XTP_IDC_LANG_SERBIAN 35227
- // #define XTP_IDC_LANG_SLOVAK 35228
- // #define XTP_IDC_LANG_SLOVENIAN 35229
- // #define XTP_IDC_LANG_SPANISH 35230
- // #define XTP_IDC_LANG_SWEDISH 35231
- // #define XTP_IDC_LANG_THAI 35232
- // #define XTP_IDC_LANG_TURKISH 35233
- // #define XTP_IDC_LANG_UKRAINIAN 35234
-
- void SysLanguageInfo::SetLanguagePath()
- {
- char __cwd[256];
- getcwd(__cwd,256);
- CString strLanguageId = "";
- CString strLangViewPath = "";
-
- for (int i = 0; i < _countof(languages); ++i)
- {
- if (m_nLanguage == languages[i].nID)
- {
- strLangViewPath.Format(_T("LangView\\%s.dll"), languages[i].szLangName);
- ec_load_language((LPSTR)(LPCTSTR)strLangViewPath);
-
- m_strLanguagePath.Format("%s\\Language\\IBrightCut%s.ini", m_strLocalDir, languages[i].szLangName);
- }
- }
-
- D_SetLanguage((LPSTR)(LPCTSTR)m_strLanguagePath); //ly
- }
-
- int SysLanguageInfo::GetCurrenLanguageID()
- {
- return m_nLanguage;
- }
-
- BOOL SysLanguageInfo::EnableLanguage(int nLanguage)
- {
- int nRet = (nLanguage&m_nLanguageGroup);
- return (nRet == nLanguage);
- }
-
- BOOL SysLanguageInfo::IsLanguage(int nLanguage)
- {
- return (m_nLanguage == nLanguage);
- }
-
- void SysLanguageInfo::SetLanguage(int nLanguage)
- {
- m_nLanguage = nLanguage;
- }
-
- void SysLanguageInfo::SetDlgStrings(CDialog *pDlg, UINT uDlgID, CString strSection)
- {
- if (pDlg == NULL)
- {
- return;
- }
-
- CString strKey = "";
- CString strText = "";
- BOOL bTempFlag;
-
-
- BOOL bRead = TRUE; //1:从文件读,设置对话框 //0:从对话框读,保存到文件
- if(bRead)
- {
- CString strDefault = "";
- DWORD dwSize = 1000;
- char* pData = (char*)malloc(dwSize);
-
- //strSection.Format("IDD%d", uDlgID);
-
- //读对话框标题
- strKey.Format("IDD%d_Title", uDlgID);
- pDlg->GetWindowText(strText);
- if (!strKey.IsEmpty() && !strText.IsEmpty())
- {
- if(GetPrivateProfileString(strSection, strKey, "", pData, dwSize, m_strLanguagePath) != 0)
- {
- pDlg->SetWindowText(pData);
- }
- else
- {
- WritePrivateProfileString(strSection, strKey, strText, m_strLanguagePath);
- }
- }
-
- //写入各个子控件的标题文字
- CWnd* pWnd = pDlg->GetWindow(GW_CHILD);
- while(pWnd != NULL)
- {
- bTempFlag = TRUE;
- int iCtrlID = pWnd->GetDlgCtrlID();
- strKey.Format("IDD%d_%d", uDlgID, iCtrlID);
- pWnd->GetWindowText(strText);
-
-
- if (!strKey.IsEmpty() && !strText.IsEmpty())
- {
- CString Src;
- if(GetPrivateProfileString(strSection, strKey,"", pData,dwSize,m_strLanguagePath) != 0)
- {
- pWnd->SetWindowText(pData);
- }
- else
- {
- bool bNumFlag = true;
- bool bFloatFlag = false;
- for(int i = 0; i< strText.GetLength(); i++)
- {
- //strText.GetAt(i)>= 0x30 || strText.GetAt(i)<= 0x39 ||
- if (strText.GetAt(i) == 0x5c)
- {
- bTempFlag = FALSE;
- }
- }
-
- CString Src = strText;
- if (Src == Src.SpanIncluding( _T("-0123456789.") ))
- {
- bTempFlag = FALSE;
- }
-
- if (bTempFlag)
- {
- switch(uDlgID)
- {
- case 243:
- {
- if ( iCtrlID < 1050 || iCtrlID >1057)
- {
- WritePrivateProfileString(strSection,strKey,strText,m_strLanguagePath);
- }
- break;
- }
- default:
- {
- WritePrivateProfileString(strSection,strKey,strText,m_strLanguagePath);
- break;
- }
- }
- //bTempFlag = TRUE;
- }
- }
- }
- pWnd = pWnd->GetWindow(GW_HWNDNEXT);
- }
-
- //释放内存
- free(pData);
- }
- // else //0:从对话框读,保存到文件
- // {
- // //写入对话框标题
- // strKey.Format("IDD%d_Title", uDlgID);
- // pDlg->GetWindowText(strText);
- // WritePrivateProfileString(strSection, strKey, strText, m_strLanguagePath);
- //
- // //写入各个子控件的标题文字
- // CWnd* pWnd = pDlg->GetWindow(GW_CHILD);
- // while(pWnd != NULL)
- // {
- // strKey.Format("IDD%d_%d", uDlgID, pWnd->GetDlgCtrlID());
- // pWnd->GetWindowText(strText);
- // WritePrivateProfileString(strSection, strKey, strText, m_strLanguagePath);
- //
- // pWnd = pWnd->GetWindow(GW_HWNDNEXT);
- // }
- // }
- }
-
- CString SysLanguageInfo::GetCs(CString strKey)
- {
- CString strValue = "";
-
- char buf[PCHLEN] = "";
- int nRet = GetPrivateProfileString("MenuBars", strKey, "", buf, PCHLEN, m_strLanguagePath);
- if (nRet <= 0)
- {
- WritePrivateProfileString("MenuBars", strKey, strKey, m_strLanguagePath);
- strValue = strKey;
- }
- else
- {
- strValue = buf;
- }
-
- return strValue;
- }
-
- CString SysLanguageInfo::GetCs(CString strSection, CString strKey, CString strDefault)
- {
- CString strValue = "";
- char buf[PCHLEN] = "";
-
- int nRet = GetPrivateProfileString(strSection, strKey, "", buf, PCHLEN, m_strLanguagePath);
- if (nRet <= 0)
- {
- if ( !strDefault.IsEmpty() )
- {
- WritePrivateProfileString(strSection, strKey, strDefault, m_strLanguagePath);
- strValue = strDefault;
- }
- else
- {
- WritePrivateProfileString(strSection, strKey, strKey, m_strLanguagePath);
- strValue = strKey;
- }
-
- }
- else
- {
- strValue = buf;
- }
-
- return strValue;
- }
-
- CString SysLanguageInfo::GetToolItem(CString strSection,CString strKey,CString strDefault)
- {
- CString strValue = "";
- char buf[PCHLEN] = "";
- CString strFilePath = "";
- strFilePath = m_strLocalDir + "\\Language\\IBrightCutEnglish.ini";
-
- int nRet = GetPrivateProfileString(strSection, strKey, "", buf, PCHLEN, strFilePath);
- if (nRet > 0)
- {
- strValue = buf;
- }
-
- return strValue;
- }
-
- CString SysLanguageInfo::LoadConfigString(CString strSect, CString strKey)
- {
- CString strValue = "";
-
- char buf[PCHLEN] = "";
- int nRet = GetPrivateProfileString(strSect, strKey, "", buf, PCHLEN, m_strConfig);
- if (nRet <= 0)
- {
- WritePrivateProfileString(strSect, strKey, strKey, m_strConfig);
- strValue = strKey;
- }
- else
- {
- strValue = buf;
- }
-
- return strValue;
- }
-
- void SysLanguageInfo::SetConfigString(CString strSect, CString strKey, CString strText)
- {
- WritePrivateProfileString(strSect, strKey, strText, m_strConfig);
- }
-
- CString SysLanguageInfo::GetLocalDir()
- {
- int m = 0;
- char szBuf[PCHLEN] = "";
- CString strPath = "";//输出程序的路径
-
- ::GetModuleFileName(NULL, szBuf, sizeof(szBuf));//得到本程序的目录
-
- strPath = szBuf;
- m = strPath.ReverseFind('\\');
- if (m != -1)
- {
- strPath = strPath.Left(m);
- }
-
- return strPath;
- }
-
- CString SysLanguageInfo::TrimValidString(CString strText)
- {
- CString strInfo = strText;
- int nFind = strInfo.Find(_T('\n'));
- if (nFind >= 0)
- {
- if (nFind == 0)
- {
- strInfo = strText.Right(strInfo.GetLength()-1);
- }
- else
- {
- strInfo = strInfo.Left(nFind);
- }
- }
-
- return strInfo;
- }
-