aboutsummaryrefslogtreecommitdiff
path: root/util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'util.cpp')
-rw-r--r--util.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/util.cpp b/util.cpp
index 266c1dd7df..f4ce556643 100644
--- a/util.cpp
+++ b/util.cpp
@@ -431,6 +431,35 @@ void ParseParameters(int argc, char* argv[])
}
+const char* wxGetTranslation(const char* pszEnglish)
+{
+ // Wrapper of wxGetTranslation returning the same const char* type as was passed in
+ static CCriticalSection cs;
+ CRITICAL_BLOCK(cs)
+ {
+ // Look in cache
+ static map<string, char*> mapCache;
+ map<string, char*>::iterator mi = mapCache.find(pszEnglish);
+ if (mi != mapCache.end())
+ return (*mi).second;
+
+ // wxWidgets translation
+ const char* pszTranslated = wxGetTranslation(wxString(pszEnglish, wxConvUTF8)).utf8_str();
+ if (strcmp(pszEnglish, pszTranslated) == 0)
+ return pszEnglish;
+
+ // Add to cache, memory doesn't need to be freed
+ char* pszCached = new char[strlen(pszTranslated)+1];
+ strcpy(pszCached, pszTranslated);
+ mapCache[pszEnglish] = pszCached;
+ return pszCached;
+ }
+}
+
+
+
+
+