Example #1
0
void ArchiveModule::ReloadLanguage(
		const TCHAR* lpLanguage
		)
{
	string strPath = m_strModuleName;
	CutToSlash (strPath);

	Language* pLanguage = nullptr;
	Language* pEnglishLanguage = nullptr;

	string strMask = strPath+_T("*.lng");
	
	WIN32_FIND_DATA FindData;
	bool bResult = false;

	HANDLE hSearch = FindFirstFile(
			strMask,
			(WIN32_FIND_DATA*)&FindData
			);

	if ( hSearch != INVALID_HANDLE_VALUE )
	{
		do {
			string strFileName = strPath+FindData.cFileName;

			pLanguage = new Language();

			if ( pLanguage->LoadFromFile(strFileName) )
			{
				string strLanguage = pLanguage->GetLanguage();

				if ( strLanguage == lpLanguage )
				{
					if ( m_pLanguage )
						delete m_pLanguage;

					m_pLanguage = pLanguage;

					bResult = true;
				}
				else
				{
					if ( strLanguage == _T("English") ) //case??
					{
						if ( !pEnglishLanguage ) //нам два не надо
							pEnglishLanguage = pLanguage;
						else
							delete pLanguage;
					}
					else
						delete pLanguage;
				}
			}
			else
				delete pLanguage;

		} while ( !bResult && FindNextFile(hSearch, (WIN32_FIND_DATA*)&FindData) );

		FindClose (hSearch);
	}

	if ( pEnglishLanguage )
	{
		if ( !bResult )
		{
			if ( m_pLanguage )
				delete m_pLanguage;

			m_pLanguage = pEnglishLanguage;
		}
		else
			delete pEnglishLanguage;
	}
}