#include "wx/tokenzr.h"
#include "wx/fontmap.h"
#include "wx/encconv.h"
-#include "wx/ptr_scpd.h"
+#include "wx/scopedptr.h"
#include "wx/apptrait.h"
#include "wx/stdpaths.h"
#include "wx/hashset.h"
// global functions
// ----------------------------------------------------------------------------
-#ifdef __WXDEBUG__
-
-// small class to suppress the translation erros until exit from current scope
-class NoTransErr
-{
-public:
- NoTransErr() { ms_suppressCount++; }
- ~NoTransErr() { ms_suppressCount--; }
-
- static bool Suppress() { return ms_suppressCount > 0; }
-
-private:
- static size_t ms_suppressCount;
-};
-
-size_t NoTransErr::ms_suppressCount = 0;
-
-#else // !Debug
-
-class NoTransErr
-{
-public:
- NoTransErr() { }
-~NoTransErr() { }
-};
-
-#endif // Debug/!Debug
-
static wxLocale *wxSetLocale(wxLocale *pLocale);
namespace
bool m_bSwapped; // wrong endianness?
- DECLARE_NO_COPY_CLASS(wxMsgCatalogFile)
+ wxDECLARE_NO_COPY_CLASS(wxMsgCatalogFile);
};
<< GetFullSearchPath(ExtractLang(szDirPrefix));
}
- // don't give translation errors here because the wxstd catalog might
- // not yet be loaded (and it's normal)
- //
- // (we're using an object because we have several return paths)
-
- NoTransErr noTransErr;
- wxLogVerbose(_("looking for catalog '%s' in path '%s'."),
- szName, searchPath.c_str());
- wxLogTrace(TRACE_I18N, wxS("Looking for \"%s.mo\" in \"%s\""),
- szName, searchPath.c_str());
+ wxLogTrace(TRACE_I18N, wxS("Looking for \"%s.mo\" in search path \"%s\""),
+ szName, searchPath);
wxFileName fn(szName);
fn.SetExt(wxS("mo"));
// plural forms formula from it:
const char* headerData = StringAtOfs(m_pOrigTable, 0);
- if (headerData && headerData[0] == 0)
+ if ( headerData && headerData[0] == '\0' )
{
// Extract the charset:
- wxString header = wxString::FromAscii(StringAtOfs(m_pTransTable, 0));
- int begin = header.Find(wxS("Content-Type: text/plain; charset="));
- if (begin != wxNOT_FOUND)
+ const char * const header = StringAtOfs(m_pTransTable, 0);
+ const char *
+ cset = strstr(header, "Content-Type: text/plain; charset=");
+ if ( cset )
{
- begin += 34; //strlen("Content-Type: text/plain; charset=")
- size_t end = header.find('\n', begin);
- if (end != size_t(-1))
+ cset += 34; // strlen("Content-Type: text/plain; charset=")
+
+ const char * const csetEnd = strchr(cset, '\n');
+ if ( csetEnd )
{
- m_charset.assign(header, begin, end - begin);
- if (m_charset == wxS("CHARSET"))
+ m_charset = wxString(cset, csetEnd - cset);
+ if ( m_charset == wxS("CHARSET") )
{
// "CHARSET" is not valid charset, but lazy translator
- m_charset.Clear();
+ m_charset.empty();
}
}
}
// else: incorrectly filled Content-Type header
// Extract plural forms:
- begin = header.Find(wxS("Plural-Forms:"));
- if (begin != wxNOT_FOUND)
+ const char * plurals = strstr(header, "Plural-Forms:");
+ if ( plurals )
{
- begin += 13;
- size_t end = header.find('\n', begin);
- if (end != size_t(-1))
+ plurals += 13; // strlen("Plural-Forms:")
+ const char * const pluralsEnd = strchr(plurals, '\n');
+ if ( pluralsEnd )
{
- wxString pfs(header, begin, end - begin);
- wxPluralFormsCalculator* pCalculator = wxPluralFormsCalculator
- ::make(pfs.ToAscii());
- if (pCalculator != 0)
+ const size_t pluralsLen = pluralsEnd - plurals;
+ wxCharBuffer buf(pluralsLen);
+ strncpy(buf.data(), plurals, pluralsLen);
+ wxPluralFormsCalculator * const
+ pCalculator = wxPluralFormsCalculator::make(buf);
+ if ( pCalculator )
{
rPluralFormsCalculator.reset(pCalculator);
}
else
{
- wxLogVerbose(_("Cannot parse Plural-Forms:'%s'"), pfs.c_str());
+ wxLogVerbose(_("Failed to parse Plural-Forms: '%s'"),
+ buf.data());
}
}
}
- if (rPluralFormsCalculator.get() == NULL)
- {
+
+ if ( !rPluralFormsCalculator.get() )
rPluralFormsCalculator.reset(wxPluralFormsCalculator::make());
- }
}
// everything is fine
// the environment variables (in most cases this won't work, but I was
// out of ideas)
char *lang = getenv( "LC_ALL");
- char *dot = lang ? strchr(lang, '.') : (char *)NULL;
+ char *dot = lang ? strchr(lang, '.') : NULL;
if (!dot)
{
lang = getenv( "LC_CTYPE" );
if ( trans == NULL )
{
-#ifdef __WXDEBUG__
- if ( !NoTransErr::Suppress() )
- {
- NoTransErr noTransErr;
-
- wxLogTrace(TRACE_I18N,
- wxS("string \"%s\"[%ld] not found in %slocale '%s'."),
- origString, (long)n,
- wxString::Format(wxS("domain '%s' "), domain).c_str(),
- m_strLocale.c_str());
- }
-#endif // __WXDEBUG__
+ wxLogTrace(TRACE_I18N,
+ wxS("string \"%s\"[%ld] not found in %slocale '%s'."),
+ origString, (long)n,
+ wxString::Format(wxS("domain '%s' "), domain).c_str(),
+ m_strLocale.c_str());
if (n == size_t(-1))
return GetUntranslatedString(origString);