LanguageComparison* LanguageManager::GetLanguageComparison(UINT idx, LPCTSTR* log)
{
	if (idx < GetLanguageCount())
	{
		FullLanguageInfo& li = m_languages[idx];
		if (li.bIsValid == FALSE)
			return NULL;
		if (li.bLangCompValid == FALSE)
		{
			MappedLanguage lng;
			if (!ILanguageUtilities::ImportLanguageFile(li.langPath.c_str(), lng, FALSE))
			{
				li.bIsValid = FALSE;
				return NULL;
			}
			if (li.bLangInfoValid == FALSE)
			{
				li.bLangInfoValid = TRUE;
				li.langInfo = lng.GetLanguageInfo();
			}
			if (!ILanguageUtilities::CompareLanguages(m_systemDefaultLanguage, lng, li.langComp, li.langCompLog))
			{
				li.bLangCompValid = FALSE;
				return NULL;
			}
			li.bLangCompValid = TRUE;
		}
		*log = li.langCompLog.c_str();
		return &li.langComp;
	}
	return NULL;
}
BOOL LanguageManager::LoadLanguage(UINT idx)
{
	if (idx >= GetLanguageCount())
		return FALSE;
	if (IsLanguageLoaded(idx))
		return TRUE;
	return LoadLanguage(m_languages[idx].langPath.c_str());
}
BOOL LanguageManager::IsLanguageLoaded(UINT idx)
{
	if (IsLanguageLoaded() == FALSE)
		return FALSE;
	if (idx >= GetLanguageCount())
		return FALSE;
	if (m_languages[idx].bIsValid == FALSE)
		return FALSE;
	return _tcsicmp(m_languages[idx].langPath.c_str(), m_loadedLanguagePath.c_str()) == 0;
}
BOOL LanguageManager::ExportLanguageFile(INT idx, LPCTSTR path)
{
	ASSERT(idx < (INT)GetLanguageCount());
	if (idx >= (INT)GetLanguageCount())
		return FALSE;
	if (idx >= 0)
	{
		MappedLanguage lng;
		if (!ILanguageUtilities::ImportLanguageFile(m_languages[idx].langPath.c_str(), lng, FALSE))
			return FALSE;
		if (!ILanguageUtilities::ExportLanguageFile(path, &lng, &m_systemDefaultLanguage))
			return FALSE;
	}
	else
	{
		if (!ILanguageUtilities::ExportLanguageFile(path, NULL, &m_systemDefaultLanguage))
			return FALSE;
	}
	return TRUE;
}
LPCTSTR LanguageManager::GetLanguagePath(UINT idx)
{
	if (idx < GetLanguageCount())
	{
		FullLanguageInfo& li = m_languages[idx];
		if (li.bIsValid == FALSE)
			return NULL;
		return li.langPath.c_str();
	}
	return NULL;
}
Beispiel #6
0
bool Translator::GetLanguageInfo(unsigned int number, const char **code, const char **name)
{
	if (number >= GetLanguageCount())
	{
		return false;
	}

	Language *l = m_Languages[number];
	if (code)
	{
		*code = l->m_code2;
	}
	if (name)
	{
		*name = m_pStringTab->GetString(l->m_FullName);
	}

	return true;
}
LanguageInfo* LanguageManager::GetLanguageInfo(UINT idx)
{
	if (idx < GetLanguageCount())
	{
		FullLanguageInfo& li = m_languages[idx];
		if (li.bIsValid == FALSE)
			return NULL;
		if (li.bLangInfoValid == FALSE)
		{
			MappedLanguage lng;
			if (!ILanguageUtilities::ImportLanguageFile(li.langPath.c_str(), lng, TRUE))
			{
				li.bIsValid = FALSE;
				return NULL;
			}
			li.bLangInfoValid = TRUE;
			li.langInfo = lng.GetLanguageInfo();
		}
		return &li.langInfo;
	}
	return NULL;
}