Index: src/libictranslate/ResourceManager.cpp =================================================================== diff -u -N -r50fea83cc4ee863edac0fd3960e2249f99c33b03 -r2ffaff594233ce671e00b842c718cca32f9498c5 --- src/libictranslate/ResourceManager.cpp (.../ResourceManager.cpp) (revision 50fea83cc4ee863edac0fd3960e2249f99c33b03) +++ src/libictranslate/ResourceManager.cpp (.../ResourceManager.cpp) (revision 2ffaff594233ce671e00b842c718cca32f9498c5) @@ -154,10 +154,15 @@ m_pszLngName(NULL), m_pszBaseFile(NULL), m_pszFontFace(NULL), + m_wLangCode(0), + m_wPointSize(0), m_pszHelpName(NULL), m_pszAuthor(NULL), m_pszVersion(NULL), - m_uiSectionID(0) + m_byCharset(0), + m_bRTL(false), + m_uiSectionID(0), + m_bUpdating(false) { } @@ -513,6 +518,44 @@ } } +CTranslationItem* CLangData::GetTranslationItem(uint_t uiTranslationKey, bool bCreate) +{ + translation_map::iterator iterTranslation = m_mapTranslation.find(uiTranslationKey); + if(iterTranslation != m_mapTranslation.end()) + return &(*iterTranslation).second; + else + { + if(bCreate) + { + std::pair pairTranslation = m_mapTranslation.insert(std::make_pair(uiTranslationKey, CTranslationItem())); + if(pairTranslation.second) + return &(*pairTranslation.first).second; + } + } + + return NULL; +} + +bool CLangData::Exists(uint_t uiTranslationKey) const +{ + return m_mapTranslation.find(uiTranslationKey) != m_mapTranslation.end(); +} + +// removes strings that does not exist in the reference translation +void CLangData::CleanupTranslation(const CLangData& rReferenceTranslation) +{ + translation_map::iterator iterTranslation = m_mapTranslation.begin(); + while(iterTranslation != m_mapTranslation.end()) + { + if(!rReferenceTranslation.Exists((*iterTranslation).first)) + { + m_mapTranslation.erase(iterTranslation++); + } + else + ++iterTranslation; + } +} + void CLangData::SetFilename(PCTSTR psz) { if (m_pszFilename)