use wxStrings in wxLocale methods, _() and wxGetTranslation(), so that it can be used with any string literals

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45080 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík 2007-03-26 21:05:04 +00:00
parent f5f93ea573
commit 31b7522e2b
4 changed files with 137 additions and 137 deletions

View File

@ -1620,11 +1620,11 @@ This function is deprecated, use \helpref{wxString}{wxstring} class instead.
\membersection{::wxGetTranslation}\label{wxgettranslation}
\func{const wxChar *}{wxGetTranslation}{\param{const wxChar* }{str},
\param{const wxChar* }{domain = NULL}}
\func{const wxString\& }{wxGetTranslation}{\param{const wxString\& }{str},
\param{const wxString\& }{domain = wxEmptyString}}
\func{const wxChar *}{wxGetTranslation}{\param{const wxChar* }{str}, \param{const wxChar* }{strPlural}, \param{size\_t }{n},
\param{const wxChar* }{domain = NULL}}
\func{const wxString\& }{wxGetTranslation}{\param{const wxString\& }{str}, \param{const wxString\& }{strPlural}, \param{size\_t }{n},
\param{const wxString\& }{domain = wxEmptyString}}
This function returns the translation of string {\it str} in the current
\helpref{locale}{wxlocale}. If the string is not found in any of the loaded
@ -1844,7 +1844,7 @@ even when \texttt{wxUSE\_PRINTF\_POS\_PARAMS} is 1.
\membersection{\_}\label{underscore}
\func{const wxChar *}{\_}{\param{const char *}{s}}
\func{const wxString\&}{\_}{\param{const wxString\&}{s}}
This macro expands into a call to \helpref{wxGetTranslation}{wxgettranslation}
function, so it marks the message for the extraction by {\tt xgettext} just as
@ -1856,7 +1856,7 @@ Don't confuse this macro with \helpref{\_T()}{underscoret}!
\membersection{wxPLURAL}\label{wxplural}
\func{const wxChar *}{wxPLURAL}{\param{const char *}{sing}, \param{const char *}{plur}, \param{size\_t}{n}}
\func{const wxString\&}{wxPLURAL}{\param{const wxString\&}{sing}, \param{const wxString\&}{plur}, \param{size\_t}{n}}
This macro is identical to \helpref{\_()}{underscore} but for the plural variant
of \helpref{wxGetTranslation}{wxgettranslation}.

View File

@ -80,7 +80,7 @@ This is the default constructor and it does nothing to initialize the object:
See \helpref{Init()}{wxlocaleinit} for parameters description.
\func{}{wxLocale}{\param{const char }{*szName}, \param{const char }{*szShort = NULL}, \param{const char }{*szLocale = NULL}, \param{bool }{bLoadDefault = true}, \param{bool }{bConvertEncoding = false}}
\func{}{wxLocale}{\param{const wxString\& }{name}, \param{const wxString\& }{short = wxEmptyString}, \param{const wxString\& }{locale = wxEmptyString}, \param{bool }{bLoadDefault = true}, \param{bool }{bConvertEncoding = false}}
See \helpref{Init()}{wxlocaleinit} for parameters description.
@ -104,9 +104,9 @@ set locale is restored and so the changes described in
\membersection{wxLocale::AddCatalog}\label{wxlocaleaddcatalog}
\func{bool}{AddCatalog}{\param{const char }{*szDomain}}
\func{bool}{AddCatalog}{\param{const wxString\& }{domain}}
\func{bool}{AddCatalog}{\param{const char }{*szDomain}, \param{wxLanguage}{msgIdLanguage}, \param{const char }{*msgIdCharset}}
\func{bool}{AddCatalog}{\param{const wxString\& }{domain}, \param{wxLanguage}{msgIdLanguage}, \param{const wxString\& }{msgIdCharset}}
Add a catalog for use with the current locale: it is searched for in standard
places (current directory first, then the system one), but you may also prepend
@ -255,7 +255,7 @@ special meaning of \texttt{wxLANGUAGE\_DEFAULT}.
\membersection{wxLocale::GetLocale}\label{wxlocalegetlocale}
\constfunc{const char*}{GetLocale}{\void}
\constfunc{const wxString\& }{GetLocale}{\void}
Returns the locale name as passed to the constructor or
\helpref{Init()}{wxlocaleinit}. This is full, human-readable name,
@ -265,7 +265,7 @@ e.g. "English" or "French".
\membersection{wxLocale::GetName}\label{wxlocalegetname}
\constfunc{const wxString\&}{GetName}{\void}
\constfunc{const wxString\& }{GetName}{\void}
Returns the current short name for the locale (as given to the constructor or
the Init() function).
@ -273,9 +273,9 @@ the Init() function).
\membersection{wxLocale::GetString}\label{wxlocalegetstring}
\constfunc{const char*}{GetString}{\param{const char }{*szOrigString}, \param{const char }{*szDomain = NULL}}
\constfunc{const wxString\& }{GetString}{\param{const wxString\& }{origString}, \param{const wxString\& }{domain = wxEmptyString}}
\constfunc{const char*}{GetString}{\param{const char }{*szOrigString}, \param{const char }{*szOrigString2}, \param{size\_t }{n}, \param{const char }{*szDomain = NULL}}
\constfunc{const wxString\& }{GetString}{\param{const wxString\& }{origString}, \param{const wxString\& }{origString2}, \param{size\_t }{n}, \param{const wxString\& }{domain = NULL}}
Retrieves the translation for a string in all loaded domains unless the szDomain
parameter is specified (and then only this catalog/domain is searched).
@ -286,14 +286,14 @@ a string is not found; use \helpref{wxLogNull}{wxlogoverview} to suppress it).
The second form is used when retrieving translation of string that has
different singular and plural form in English or different plural forms in some
other language. It takes two extra arguments: \arg{szOrigString}
other language. It takes two extra arguments: \arg{origString}
parameter must contain the singular form of the string to be converted.
It is also used as the key for the search in the catalog.
The \arg{szOrigString2} parameter is the plural form (in English).
The \arg{origString2} parameter is the plural form (in English).
The parameter \arg{n} is used to determine the plural form. If no
message catalog is found \arg{szOrigString} is returned if `n == 1',
otherwise \arg{szOrigString2}.
See \urlref{GNU gettext manual}{http://www.gnu.org/software/gettext/manual/html\_chapter/gettext\_10.html\#SEC150} for additional information on plural forms handling.
message catalog is found \arg{origString} is returned if `n == 1',
otherwise \arg{origString2}.
See \urlref{GNU gettext manual}{http://www.gnu.org/manual/gettext/html\_chapter/gettext\_10.html\#SEC150} for additional information on plural forms handling.
This method is called by the \helpref{wxGetTranslation}{wxgettranslation}
function and \helpref{\_()}{underscore} macro.
@ -306,9 +306,9 @@ added later override those added before.
\membersection{wxLocale::GetHeaderValue}\label{wxlocalegetheadervalue}
\constfunc{wxString}{GetHeaderValue}{\param{const char }{*szHeader}, \param{const char }{*szDomain = NULL}}
\constfunc{wxString}{GetHeaderValue}{\param{const wxString\& }{header}, \param{const wxString\& }{domain = wxEmptyString}}
Returns the header value for header \arg{szHeader}. The search for \arg{szHeader} is case sensitive. If an \arg{szDomain}
Returns the header value for header \arg{header}. The search for \arg{header} is case sensitive. If an \arg{domain}
is passed, this domain is searched. Else all domains will be searched until a header has been found.
The return value is the value of the header if found. Else this will be empty.
@ -360,7 +360,7 @@ Returns \helpref{wxLanguage}{wxlanguage} value or
\func{bool}{Init}{\param{int }{language = wxLANGUAGE\_DEFAULT}, \param{int }{flags =
wxLOCALE\_LOAD\_DEFAULT | wxLOCALE\_CONV\_ENCODING}}
\func{bool}{Init}{\param{const char }{*szName}, \param{const char }{*szShort = NULL}, \param{const char }{*szLocale = NULL}, \param{bool }{bLoadDefault = true}, \param{bool }{bConvertEncoding = false}}
\func{bool}{Init}{\param{const wxString\& }{name}, \param{const wxString\& }{short = wxEmptyString}, \param{const wxString\& }{locale = wxEmptyString}, \param{bool }{bLoadDefault = true}, \param{bool }{bConvertEncoding = false}}
The second form is deprecated, use the first one unless you know what you are
doing.
@ -387,12 +387,12 @@ description of this behaviour. Note that this flag is meaningless in Unicode bui
\end{twocollist}
}
\docparam{szName}{The name of the locale. Only used in diagnostic messages.}
\docparam{name}{The name of the locale. Only used in diagnostic messages.}
\docparam{szShort}{The standard 2 letter locale abbreviation; it is used as the
\docparam{short}{The standard 2 letter locale abbreviation; it is used as the
directory prefix when looking for the message catalog files.}
\docparam{szLocale}{The parameter for the call to setlocale(). Note that it is
\docparam{locale}{The parameter for the call to setlocale(). Note that it is
platform-specific.}
\docparam{bLoadDefault}{May be set to false to prevent loading of the message catalog

View File

@ -382,15 +382,15 @@ public:
wxLocale() { DoCommonInit(); }
// the ctor has a side effect of changing current locale
wxLocale(const wxChar *szName, // name (for messages)
const wxChar *szShort = (const wxChar *) NULL, // dir prefix (for msg files)
const wxChar *szLocale = (const wxChar *) NULL, // locale (for setlocale)
wxLocale(const wxString& name, // name (for messages)
const wxString& shortName = wxEmptyString, // dir prefix (for msg files)
const wxString& locale = wxEmptyString, // locale (for setlocale)
bool bLoadDefault = true, // preload wxstd.mo?
bool bConvertEncoding = false) // convert Win<->Unix if necessary?
{
DoCommonInit();
Init(szName, szShort, szLocale, bLoadDefault, bConvertEncoding);
Init(name, shortName, locale, bLoadDefault, bConvertEncoding);
}
wxLocale(int language, // wxLanguage id or custom language
@ -402,9 +402,9 @@ public:
}
// the same as a function (returns true on success)
bool Init(const wxChar *szName,
const wxChar *szShort = (const wxChar *) NULL,
const wxChar *szLocale = (const wxChar *) NULL,
bool Init(const wxString& name,
const wxString& shortName = wxEmptyString,
const wxString& locale = wxEmptyString,
bool bLoadDefault = true,
bool bConvertEncoding = false);
@ -435,7 +435,7 @@ public:
bool IsOk() const { return m_pszOldLocale != NULL; }
// returns locale name
const wxChar *GetLocale() const { return m_strLocale; }
const wxString& GetLocale() const { return m_strLocale; }
// return current locale wxLanguage value
int GetLanguage() const { return m_language; }
@ -462,15 +462,15 @@ public:
// The loaded catalog will be used for message lookup by GetString().
//
// Returns 'true' if it was successfully loaded
bool AddCatalog(const wxChar *szDomain);
bool AddCatalog(const wxChar *szDomain,
wxLanguage msgIdLanguage, const wxChar *msgIdCharset);
bool AddCatalog(const wxString& domain);
bool AddCatalog(const wxString& domain,
wxLanguage msgIdLanguage, const wxString& msgIdCharset);
// check if the given locale is provided by OS and C run time
static bool IsAvailable(int lang);
// check if the given catalog is loaded
bool IsLoaded(const wxChar *szDomain) const;
bool IsLoaded(const wxString& domain) const;
// Retrieve the language info struct for the given language
//
@ -504,20 +504,20 @@ public:
//
// domains are searched in the last to first order, i.e. catalogs
// added later override those added before.
virtual const wxChar *GetString(const wxChar *szOrigString,
const wxChar *szDomain = NULL) const;
virtual const wxString& GetString(const wxString& origString,
const wxString& domain = wxEmptyString) const;
// plural form version of the same:
virtual const wxChar *GetString(const wxChar *szOrigString,
const wxChar *szOrigString2,
size_t n,
const wxChar *szDomain = NULL) const;
virtual const wxString& GetString(const wxString& origString,
const wxString& origString2,
size_t n,
const wxString& domain = wxEmptyString) const;
// Returns the current short name for the locale
const wxString& GetName() const { return m_strShort; }
// return the contents of .po file header
wxString GetHeaderValue( const wxChar* szHeader,
const wxChar* szDomain = NULL ) const;
wxString GetHeaderValue(const wxString& header,
const wxString& domain = wxEmptyString) const;
// These two methods are for internal use only. First one creates
// ms_languagesDB if it doesn't already exist, second one destroys
@ -527,7 +527,7 @@ public:
private:
// find catalog by name in a linked list, return NULL if !found
wxMsgCatalog *FindCatalog(const wxChar *szDomain) const;
wxMsgCatalog *FindCatalog(const wxString& domain) const;
// copy default table of languages from global static array to
// m_langugagesInfo, called by InitLanguagesDB
@ -562,22 +562,25 @@ private:
extern WXDLLIMPEXP_BASE wxLocale* wxGetLocale();
// get the translation of the string in the current locale
inline const wxChar *wxGetTranslation(const wxChar *sz, const wxChar* domain=NULL)
inline const wxString& wxGetTranslation(const wxString& str,
const wxString& domain = wxEmptyString)
{
wxLocale *pLoc = wxGetLocale();
if (pLoc)
return pLoc->GetString(sz, domain);
return pLoc->GetString(str, domain);
else
return sz;
return str;
}
inline const wxChar *wxGetTranslation(const wxChar *sz1, const wxChar *sz2,
size_t n, const wxChar* domain=NULL)
inline const wxString& wxGetTranslation(const wxString& str1,
const wxString& str2,
size_t n,
const wxString& domain = wxEmptyString)
{
wxLocale *pLoc = wxGetLocale();
if (pLoc)
return pLoc->GetString(sz1, sz2, n, domain);
return pLoc->GetString(str1, str2, n, domain);
else
return n == 1 ? sz1 : sz2;
return n == 1 ? str1 : str2;
}
#else // !wxUSE_INTL
@ -592,10 +595,10 @@ inline const wxChar *wxGetTranslation(const wxChar *sz1, const wxChar *sz2,
#define wxTRANSLATE(str) _T(str)
inline const wxChar *wxGetTranslation(const wxChar *sz,
const wxChar *WXUNUSED(domain) = NULL)
inline const wxString& wxGetTranslation(const wxString& str,
const wxString& WXUNUSED(domain) = wxEmptyString)
{
return sz;
return str;
}
#endif // wxUSE_INTL/!wxUSE_INTL

View File

@ -962,14 +962,14 @@ public:
~wxMsgCatalog();
// load the catalog from disk (szDirPrefix corresponds to language)
bool Load(const wxChar *szDirPrefix, const wxChar *szName,
const wxChar *msgIdCharset = NULL, bool bConvertEncoding = false);
bool Load(const wxString& dirPrefix, const wxString& name,
const wxString& msgIdCharset, bool bConvertEncoding = false);
// get name of the catalog
wxString GetName() const { return m_name; }
// get the translated string: returns NULL if not found
const wxChar *GetString(const wxChar *sz, size_t n = size_t(-1)) const;
const wxString *GetString(const wxString& sz, size_t n = size_t(-1)) const;
// public variable pointing to the next element in a linked list (or NULL)
wxMsgCatalog *m_pNext;
@ -1304,7 +1304,7 @@ void wxMsgCatalogFile::FillHash(wxMessagesHash& hash,
: new wxCSConv(msgIdCharset);
#elif wxUSE_FONTMAP
wxASSERT_MSG( msgIdCharset == NULL,
wxASSERT_MSG( msgIdCharset.empty(),
_T("non-ASCII msgid languages only supported if wxUSE_WCHAR_T=1") );
wxEncodingConverter converter;
@ -1374,7 +1374,7 @@ void wxMsgCatalogFile::FillHash(wxMessagesHash& hash,
msgstr = str;
#else // !wxUSE_WCHAR_T
#if wxUSE_FONTMAP
if ( convertEncoding )
if ( bConvertEncoding )
msgstr = wxString(converter.Convert(str));
else
#endif
@ -1418,14 +1418,14 @@ wxMsgCatalog::~wxMsgCatalog()
}
}
bool wxMsgCatalog::Load(const wxChar *szDirPrefix, const wxChar *szName,
const wxChar *msgIdCharset, bool bConvertEncoding)
bool wxMsgCatalog::Load(const wxString& dirPrefix, const wxString& name,
const wxString& msgIdCharset, bool bConvertEncoding)
{
wxMsgCatalogFile file;
m_name = szName;
m_name = name;
if ( !file.Load(szDirPrefix, szName, m_pluralFormsCalculator) )
if ( !file.Load(dirPrefix, name, m_pluralFormsCalculator) )
return false;
file.FillHash(m_messages, msgIdCharset, bConvertEncoding);
@ -1449,7 +1449,7 @@ bool wxMsgCatalog::Load(const wxChar *szDirPrefix, const wxChar *szName,
return true;
}
const wxChar *wxMsgCatalog::GetString(const wxChar *sz, size_t n) const
const wxString *wxMsgCatalog::GetString(const wxString& str, size_t n) const
{
int index = 0;
if (n != size_t(-1))
@ -1459,16 +1459,16 @@ const wxChar *wxMsgCatalog::GetString(const wxChar *sz, size_t n) const
wxMessagesHash::const_iterator i;
if (index != 0)
{
i = m_messages.find(wxString(sz) + wxChar(index)); // plural
i = m_messages.find(wxString(str) + wxChar(index)); // plural
}
else
{
i = m_messages.find(sz);
i = m_messages.find(str);
}
if ( i != m_messages.end() )
{
return i->second.c_str();
return &i->second;
}
else
return NULL;
@ -1512,26 +1512,27 @@ void wxLocale::DoCommonInit()
}
// NB: this function has (desired) side effect of changing current locale
bool wxLocale::Init(const wxChar *szName,
const wxChar *szShort,
const wxChar *szLocale,
bool bLoadDefault,
bool bConvertEncoding)
bool wxLocale::Init(const wxString& name,
const wxString& shortName,
const wxString& locale,
bool bLoadDefault,
bool bConvertEncoding)
{
wxASSERT_MSG( !m_initialized,
_T("you can't call wxLocale::Init more than once") );
m_initialized = true;
m_strLocale = szName;
m_strShort = szShort;
m_strLocale = name;
m_strShort = shortName;
m_bConvertEncoding = bConvertEncoding;
m_language = wxLANGUAGE_UNKNOWN;
// change current locale (default: same as long name)
if ( szLocale == NULL )
wxString szLocale(locale);
if ( szLocale.empty() )
{
// the argument to setlocale()
szLocale = szShort;
szLocale = shortName;
wxCHECK_MSG( szLocale, false, _T("no locale to set in wxLocale::Init()") );
}
@ -1566,10 +1567,10 @@ bool wxLocale::Init(const wxChar *szName,
if ( m_strShort.empty() ) {
// FIXME I don't know how these 2 letter abbreviations are formed,
// this wild guess is surely wrong
if ( szLocale && szLocale[0] )
if ( !szLocale.empty() )
{
m_strShort += (wxChar)wxTolower(szLocale[0]);
if ( szLocale[1] )
if ( szLocale.length() > 1 )
m_strShort += (wxChar)wxTolower(szLocale[1]);
}
}
@ -1724,12 +1725,13 @@ bool wxLocale::Init(int language, int flags)
}
#ifdef __AIX__
// at least in AIX 5.2 libc is buggy and the string returned from setlocale(LC_ALL)
// can't be passed back to it because it returns 6 strings (one for each locale
// category), i.e. for C locale we get back "C C C C C C"
// at least in AIX 5.2 libc is buggy and the string returned from
// setlocale(LC_ALL) can't be passed back to it because it returns 6
// strings (one for each locale category), i.e. for C locale we get back
// "C C C C C C"
//
// this contradicts IBM own docs but this is not of much help, so just work around
// it in the crudest possible manner
// this contradicts IBM own docs but this is not of much help, so just work
// around it in the crudest possible manner
wxChar *p = wxStrchr((wxChar *)retloc, _T(' '));
if ( p )
*p = _T('\0');
@ -1859,11 +1861,9 @@ bool wxLocale::Init(int language, int flags)
#endif
#ifndef WX_NO_LOCALE_SUPPORT
wxChar *szLocale = retloc ? wxStrdup(retloc) : NULL;
bool ret = Init(name, canonical, szLocale,
bool ret = Init(name, canonical, retloc,
(flags & wxLOCALE_LOAD_DEFAULT) != 0,
(flags & wxLOCALE_CONV_ENCODING) != 0);
free(szLocale);
if (IsOk()) // setlocale() succeeded
m_language = lang;
@ -2592,43 +2592,43 @@ wxLocale::~wxLocale()
}
// get the translation of given string in current locale
const wxChar *wxLocale::GetString(const wxChar *szOrigString,
const wxChar *szDomain) const
const wxString& wxLocale::GetString(const wxString& origString,
const wxString& domain) const
{
return GetString(szOrigString, szOrigString, size_t(-1), szDomain);
return GetString(origString, origString, size_t(-1), domain);
}
const wxChar *wxLocale::GetString(const wxChar *szOrigString,
const wxChar *szOrigString2,
size_t n,
const wxChar *szDomain) const
const wxString& wxLocale::GetString(const wxString& origString,
const wxString& origString2,
size_t n,
const wxString& domain) const
{
if ( wxIsEmpty(szOrigString) )
return wxEmptyString;
if ( origString.empty() )
return origString;
const wxChar *pszTrans = NULL;
const wxString *trans = NULL;
wxMsgCatalog *pMsgCat;
if ( szDomain != NULL )
if ( !domain.empty() )
{
pMsgCat = FindCatalog(szDomain);
pMsgCat = FindCatalog(domain);
// does the catalog exist?
if ( pMsgCat != NULL )
pszTrans = pMsgCat->GetString(szOrigString, n);
trans = pMsgCat->GetString(origString, n);
}
else
{
// search in all domains
for ( pMsgCat = m_pMsgCat; pMsgCat != NULL; pMsgCat = pMsgCat->m_pNext )
{
pszTrans = pMsgCat->GetString(szOrigString, n);
if ( pszTrans != NULL ) // take the first found
trans = pMsgCat->GetString(origString, n);
if ( trans != NULL ) // take the first found
break;
}
}
if ( pszTrans == NULL )
if ( trans == NULL )
{
#ifdef __WXDEBUG__
if ( !NoTransErr::Suppress() )
@ -2637,83 +2637,80 @@ const wxChar *wxLocale::GetString(const wxChar *szOrigString,
wxLogTrace(TRACE_I18N,
_T("string \"%s\"[%ld] not found in %slocale '%s'."),
szOrigString, (long)n,
szDomain
? (const wxChar*)wxString::Format(_T("domain '%s' "), szDomain).c_str()
origString, (long)n,
domain.empty()
? (const wxChar*)wxString::Format(_T("domain '%s' "), domain).c_str()
: _T(""),
m_strLocale.c_str());
}
#endif // __WXDEBUG__
if (n == size_t(-1))
return szOrigString;
return origString;
else
return n == 1 ? szOrigString : szOrigString2;
return n == 1 ? origString : origString2;
}
return pszTrans;
return *trans;
}
wxString wxLocale::GetHeaderValue( const wxChar* szHeader,
const wxChar* szDomain ) const
wxString wxLocale::GetHeaderValue(const wxString& header,
const wxString& domain) const
{
if ( wxIsEmpty(szHeader) )
if ( header.empty() )
return wxEmptyString;
wxChar const * pszTrans = NULL;
const wxString *trans = NULL;
wxMsgCatalog *pMsgCat;
if ( szDomain != NULL )
if ( !domain.empty() )
{
pMsgCat = FindCatalog(szDomain);
pMsgCat = FindCatalog(domain);
// does the catalog exist?
if ( pMsgCat == NULL )
return wxEmptyString;
pszTrans = pMsgCat->GetString(wxEmptyString, (size_t)-1);
trans = pMsgCat->GetString(wxEmptyString, (size_t)-1);
}
else
{
// search in all domains
for ( pMsgCat = m_pMsgCat; pMsgCat != NULL; pMsgCat = pMsgCat->m_pNext )
{
pszTrans = pMsgCat->GetString(wxEmptyString, (size_t)-1);
if ( pszTrans != NULL ) // take the first found
trans = pMsgCat->GetString(wxEmptyString, (size_t)-1);
if ( trans != NULL ) // take the first found
break;
}
}
if ( wxIsEmpty(pszTrans) )
if ( !trans || trans->empty() )
return wxEmptyString;
wxChar const * pszFound = wxStrstr(pszTrans, szHeader);
if ( pszFound == NULL )
size_t found = trans->find(header);
if ( found == wxString::npos )
return wxEmptyString;
pszFound += wxStrlen(szHeader) + 2 /* ': ' */;
found += header.length() + 2 /* ': ' */;
// Every header is separated by \n
wxChar const * pszEndLine = wxStrchr(pszFound, wxT('\n'));
if ( pszEndLine == NULL ) pszEndLine = pszFound + wxStrlen(pszFound);
size_t endLine = trans->find(wxT('\n'), found);
size_t len = (endLine == wxString::npos) ?
wxString::npos : (endLine - found);
// wxString( wxChar*, length);
wxString retVal( pszFound, pszEndLine - pszFound );
return retVal;
return trans->substr(found, len);
}
// find catalog by name in a linked list, return NULL if !found
wxMsgCatalog *wxLocale::FindCatalog(const wxChar *szDomain) const
wxMsgCatalog *wxLocale::FindCatalog(const wxString& domain) const
{
// linear search in the linked list
wxMsgCatalog *pMsgCat;
for ( pMsgCat = m_pMsgCat; pMsgCat != NULL; pMsgCat = pMsgCat->m_pNext )
{
if ( wxStricmp(pMsgCat->GetName(), szDomain) == 0 )
if ( pMsgCat->GetName() == domain )
return pMsgCat;
}
@ -2759,21 +2756,21 @@ bool wxLocale::IsAvailable(int lang)
}
// check if the given catalog is loaded
bool wxLocale::IsLoaded(const wxChar *szDomain) const
bool wxLocale::IsLoaded(const wxString& szDomain) const
{
return FindCatalog(szDomain) != NULL;
}
// add a catalog to our linked list
bool wxLocale::AddCatalog(const wxChar *szDomain)
bool wxLocale::AddCatalog(const wxString& szDomain)
{
return AddCatalog(szDomain, wxLANGUAGE_ENGLISH_US, NULL);
return AddCatalog(szDomain, wxLANGUAGE_ENGLISH_US, wxEmptyString);
}
// add a catalog to our linked list
bool wxLocale::AddCatalog(const wxChar *szDomain,
wxLanguage msgIdLanguage,
const wxChar *msgIdCharset)
bool wxLocale::AddCatalog(const wxString& szDomain,
wxLanguage msgIdLanguage,
const wxString& msgIdCharset)
{
wxMsgCatalog *pMsgCat = new wxMsgCatalog;