#include "StdAfx.h"
|
#include "LanguageControl.h"
|
#include <fstream>
|
#include <iostream>
|
|
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, strlen(lineBuffer) + 1, NULL, NULL);
|
bstrWide = SysAllocStringLen(NULL, nLength);
|
|
MultiByteToWideChar(CP_UTF8, 0, lineBuffer, 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<CString,CString>(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, strlen(lineBuffer) + 1, NULL, NULL);
|
bstrWide = SysAllocStringLen(NULL, nLength);
|
|
MultiByteToWideChar(CP_UTF8, 0, lineBuffer, 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<CString,CString>(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, strlen(lineBuffer) + 1, NULL, NULL);
|
bstrWide = SysAllocStringLen(NULL, nLength);
|
|
MultiByteToWideChar(CP_UTF8, 0, lineBuffer, 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<CString,CString>(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, 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<CString,CString>(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<CString, CString>::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<CString, CString>::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<CString, CString>::iterator itFind;
|
|
itFind = m_mapRecipe_Lang_CN.find(strKey);
|
|
if(m_mapRecipe_Lang_CN.end() == itFind)
|
return _T("");
|
|
return itFind->second;
|
}
|