#include "StdAfx.h" #include "LanguageControl.h" #include #include CLanguageControl::CLanguageControl(void) { } CLanguageControl::~CLanguageControl(void) { } void CLanguageControl::LoadRecipeLanguageSet() { CString strEN; strEN.Format(_T("%s\\EN.ini"), LANGUAGE_DIR_PATH); LoadRecipeLanguageSet_EN(strEN); CString strKR; strKR.Format(_T("%s\\KR.ini"), LANGUAGE_DIR_PATH); LoadRecipeLanguageSet_KR(strKR); CString strCH; strCH.Format(_T("%s\\CN.ini"), LANGUAGE_DIR_PATH); LoadRecipeLanguageSet_CN(strCH); CString strDescription; strDescription.Format(_T("%s\\Description.ini"), LANGUAGE_DIR_PATH); LoadRecipeLanguageSet_CN(strCH); } void CLanguageControl::LoadRecipeLanguageSet_EN(CString strFilePath) { std::ifstream fileStream; fileStream.open(strFilePath, std::ios::in /*| std::ios::nocreate*/); if (!fileStream.is_open()) { fileStream.close(); return; } m_mapRecipe_Lang_KR.clear(); char lineBuffer[1024]; char seps[]="=\n"; //备盒磊 char* pTemp; char* pContext; CString strKey; CString strValue; do { ZeroMemory(lineBuffer, sizeof(lineBuffer)); fileStream.getline(lineBuffer, sizeof(lineBuffer)); // UTF-8 to ANSI BSTR bstrWide; char* pszAnsi; int nLength; nLength = MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), NULL, NULL); bstrWide = SysAllocStringLen(NULL, nLength); MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), bstrWide, nLength); nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL); pszAnsi = new char[nLength]; WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, pszAnsi, nLength, NULL, NULL); SysFreeString(bstrWide); // Line pTemp = strtok_s(pszAnsi, seps, &pContext); if(pTemp == NULL) continue; strKey = (CString) pTemp; pTemp = strtok_s(NULL, seps, &pContext); if(pTemp == NULL) strValue = _T(""); else strValue = (CString) pTemp; m_mapRecipe_Lang_EN.insert(std::pair(strKey, strValue)); delete [] pszAnsi; } while(!fileStream.eof()); fileStream.close(); return; } void CLanguageControl::LoadRecipeLanguageSet_KR(CString strFilePath) { std::ifstream fileStream; fileStream.open(strFilePath, std::ios::in /*| std::ios::nocreate*/); if (!fileStream.is_open()) { fileStream.close(); return; } m_mapRecipe_Lang_KR.clear(); char lineBuffer[1024]; char seps[]="=\n"; //备盒磊 char* pTemp; char* pContext; CString strKey; CString strValue; do { ZeroMemory(lineBuffer, sizeof(lineBuffer)); fileStream.getline(lineBuffer, sizeof(lineBuffer)); // UTF-8 to ANSI BSTR bstrWide; char* pszAnsi; int nLength; nLength = MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), NULL, NULL); bstrWide = SysAllocStringLen(NULL, nLength); MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), bstrWide, nLength); nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL); pszAnsi = new char[nLength]; WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, pszAnsi, nLength, NULL, NULL); SysFreeString(bstrWide); // Line pTemp = strtok_s(pszAnsi, seps, &pContext); if(pTemp == NULL) continue; strKey = (CString) pTemp; pTemp = strtok_s(NULL, seps, &pContext); if(pTemp == NULL) strValue = _T(""); else strValue = (CString) pTemp; m_mapRecipe_Lang_KR.insert(std::pair(strKey, strValue)); delete [] pszAnsi; } while(!fileStream.eof()); fileStream.close(); return; } void CLanguageControl::LoadRecipeLanguageSet_CN(CString strFilePath) { std::ifstream fileStream; fileStream.open(strFilePath, std::ios::in /*| std::ios::nocreate*/); if (!fileStream.is_open()) { fileStream.close(); return; } m_mapRecipe_Lang_CN.clear(); char lineBuffer[1024]; char seps[]="=\n"; //备盒磊 //char* pTemp; //char* pContext; CString strKey; CString strValue; do { ZeroMemory(lineBuffer, sizeof(lineBuffer)); fileStream.getline(lineBuffer, sizeof(lineBuffer)); // UTF-8 to ANSI BSTR bstrWide; char* pszAnsi; int nLength; nLength = MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), NULL, NULL); bstrWide = SysAllocStringLen(NULL, nLength); MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), bstrWide, nLength); nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL); pszAnsi = new char[nLength]; WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, pszAnsi, nLength, NULL, NULL); SysFreeString(bstrWide); CString strLine = (CString) bstrWide; int nFind = strLine.Find(_T("=")); delete [] pszAnsi; if(nFind == -1) continue; strKey = strLine.Left(nFind); strValue = strLine.Right(strLine.GetLength() - nFind - 1); /* // Line pTemp = strtok_s(pszAnsi, seps, &pContext); if(pTemp == NULL) continue; strKey = (CString) pTemp; pTemp = strtok_s(NULL, seps, &pContext); if(pTemp == NULL) strValue = _T(""); else strValue = (CString) pTemp; */ m_mapRecipe_Lang_CN.insert(std::pair(strKey, strValue)); } while(!fileStream.eof()); fileStream.close(); return; } void CLanguageControl::LOadRecipeDescription(CString strFilePath) { std::ifstream fileStream; fileStream.open(strFilePath, std::ios::in /*| std::ios::nocreate*/); if (!fileStream.is_open()) { fileStream.close(); return; } m_mapRecipe_Lang_CN.clear(); char lineBuffer[1024]; char seps[]="=\n"; //备盒磊 //char* pTemp; //char* pContext; CString strKey; CString strValue; do { ZeroMemory(lineBuffer, sizeof(lineBuffer)); fileStream.getline(lineBuffer, sizeof(lineBuffer)); // UTF-8 to ANSI BSTR bstrWide; char* pszAnsi; int nLength; nLength = MultiByteToWideChar(CP_UTF8, 0, lineBuffer, strlen(lineBuffer) + 1, NULL, NULL); bstrWide = SysAllocStringLen(NULL, nLength); MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), bstrWide, nLength); nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL); pszAnsi = new char[nLength]; WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, pszAnsi, nLength, NULL, NULL); SysFreeString(bstrWide); CString strLine = (CString) bstrWide; int nFind = strLine.Find(_T("=")); delete [] pszAnsi; if(nFind == -1) continue; strKey = strLine.Left(nFind); strValue = strLine.Right(strLine.GetLength() - nFind - 1); /* // Line pTemp = strtok_s(pszAnsi, seps, &pContext); if(pTemp == NULL) continue; strKey = (CString) pTemp; pTemp = strtok_s(NULL, seps, &pContext); if(pTemp == NULL) strValue = _T(""); else strValue = (CString) pTemp; */ m_mapRecipe_Description.insert(std::pair(strKey, strValue)); } while(!fileStream.eof()); fileStream.close(); return; } CString CLanguageControl::GetString(emLanguageType emType, CString strKey) { switch(emType) { case emLanguageType_EN: return GetString_EN(strKey); break; case emLanguageType_KR: return GetString_KR(strKey); break; case emLanguageType_CH: return GetString_CH(strKey); break; } return _T("Unkown_Type"); } CString CLanguageControl::GetString_EN(CString strKey) { std::map::iterator itFind; itFind = m_mapRecipe_Lang_EN.find(strKey); if(m_mapRecipe_Lang_EN.end() == itFind) return _T(""); return itFind->second; } CString CLanguageControl::GetString_KR(CString strKey) { std::map::iterator itFind; itFind = m_mapRecipe_Lang_KR.find(strKey); if(m_mapRecipe_Lang_KR.end() == itFind) return _T(""); return itFind->second; } CString CLanguageControl::GetString_CH(CString strKey) { std::map::iterator itFind; itFind = m_mapRecipe_Lang_CN.find(strKey); if(m_mapRecipe_Lang_CN.end() == itFind) return _T(""); return itFind->second; }