diff --git a/src/common/intl.cpp b/src/common/intl.cpp index 22b8af9da4..5165f10c22 100644 --- a/src/common/intl.cpp +++ b/src/common/intl.cpp @@ -1016,21 +1016,25 @@ wxMsgCatalogFile::~wxMsgCatalogFile() static wxString GetMsgCatalogSubdirs(const wxChar *prefix, const wxChar *lang) { - wxString searchPath; - searchPath << prefix << wxFILE_SEP_PATH << lang; - - // Under Unix, the message catalogs are supposed to go into LC_MESSAGES - // subdirectory so look there too. Note that we do it on all platforms - // and not just Unix, because it doesn't cost much to look into one more - // directory and doing it this way has two important benefits: + // Search first in Unix-standard prefix/lang/LC_MESSAGES, then in + // prefix/lang and finally in just prefix. + // + // Note that we use LC_MESSAGES on all platforms and not just Unix, because + // it doesn't cost much to look into one more directory and doing it this + // way has two important benefits: // a) we don't break compatibility with wx-2.6 and older by stopping to // look in a directory where the catalogs used to be and thus silently // breaking apps after they are recompiled against the latest wx // b) it makes it possible to package app's support files in the same // way on all target platforms - const wxString searchPathOrig(searchPath); - searchPath << wxFILE_SEP_PATH << wxT("LC_MESSAGES") - << wxPATH_SEP << searchPathOrig; + wxString pathPrefix; + pathPrefix << prefix << wxFILE_SEP_PATH << lang; + + wxString searchPath; + searchPath.reserve(4*pathPrefix.length()); + searchPath << pathPrefix << wxFILE_SEP_PATH << wxT("LC_MESSAGES") << wxPATH_SEP + << prefix << wxFILE_SEP_PATH << wxPATH_SEP + << pathPrefix; return searchPath; }