summaryrefslogtreecommitdiff
path: root/src/utils/translation/translationmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/translation/translationmanager.cpp')
-rw-r--r--src/utils/translation/translationmanager.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/utils/translation/translationmanager.cpp b/src/utils/translation/translationmanager.cpp
index 3ab5dbb23..f64d8e612 100644
--- a/src/utils/translation/translationmanager.cpp
+++ b/src/utils/translation/translationmanager.cpp
@@ -44,6 +44,7 @@ void TranslationManager::loadCurrentLang()
translator = loadLang(getLang(), "");
translator = loadLang(getLang(), "help/", translator);
dictionary = loadLang(getLang(), "dict/");
+ reverseDictionary = reverseLang(dictionary);
}
#ifdef ENABLE_CUSTOMNLS
@@ -57,6 +58,8 @@ void TranslationManager::loadGettextLang()
void TranslationManager::close()
{
delete2(translator);
+ delete2(dictionary);
+ delete2(reverseDictionary);
}
PoDict *TranslationManager::loadLang(const LangVect &lang,
@@ -131,3 +134,13 @@ bool TranslationManager::translateFile(const std::string &fileName,
delete [] fileContents;
return true;
}
+
+PoDict *TranslationManager::reverseLang(const PoDict *const dict)
+{
+ PoDict *const revDict = new PoDict(dict->mLang);
+ FOR_EACH (PoMap::const_iterator, it, dict->mPoLines)
+ {
+ revDict->set((*it).second, (*it).first);
+ }
+ return revDict;
+}