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; }
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; }