std::wstring CLanguage::GetLangString ( const char * FileName, LanguageStringID ID ) { FILE *file = fopen(FileName, "rb"); if (file == NULL) { return L""; } //Search for utf8 file marker uint8_t utf_bom[3]; if (fread(&utf_bom, sizeof(utf_bom),1,file) != 1 || utf_bom[0] != 0xEF || utf_bom[1] != 0xBB || utf_bom[2] != 0xBF) { fclose(file); return L""; } //String; while (!feof(file)) { LANG_STR String = GetNextLangString(file); if (String.first == ID) { fclose(file); return String.second; } } fclose(file); return L""; }
bool CLanguage::LoadCurrentStrings(void) { //clear all the current strings loaded m_CurrentStrings.clear(); if (g_Settings->LoadBool(Debugger_DebugLanguage)) { m_LanguageLoaded = true; return true; } LanguageList LangList = GetLangList(); stdstr Filename; //Find the file name of the current language for (LanguageList::iterator Language = LangList.begin(); Language != LangList.end(); Language++) { if (g_Lang->IsCurrentLang(*Language)) { Filename = Language->Filename; break; } } if (Filename.length() == 0) { return false; } //Process the file FILE *file = fopen(Filename.c_str(), "rb"); if (file == NULL) { return false; } //Search for utf8 file marker uint8_t utf_bom[3]; if (fread(&utf_bom, sizeof(utf_bom), 1, file) != 1 || utf_bom[0] != 0xEF || utf_bom[1] != 0xBB || utf_bom[2] != 0xBF) { fclose(file); return false; } //String; while (!feof(file)) { m_CurrentStrings.insert(GetNextLangString(file)); } fclose(file); m_LanguageLoaded = true; return true; }