// Name: wx/intl.h
// Purpose: Internationalization and localisation for wxWindows
// Author: Vadim Zeitlin
-// Modified by:
+// Modified by: Michael N. Filippov <michael@idisys.iae.nsk.su>
+// (2003/09/30 - plural forms support)
// Created: 29/01/98
// RCS-ID: $Id$
// Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
// macros
// ----------------------------------------------------------------------------
-// gettext() style macro (notice that xgettext should be invoked with "-k_"
-// option to extract the strings inside _() from the sources)
+// gettext() style macros (notice that xgettext should be invoked with
+// --keyword="_" --keyword="wxGetTranslation:1,2" options
+// to extract the strings from the sources)
#ifndef WXINTL_NO_GETTEXT_MACRO
- #define _(str) wxGetTranslation(_T(str))
+ #define _(s) wxGetTranslation(_T(s))
#endif
// another one which just marks the strings for extraction, but doesn't
// retrieve the translation for a string in all loaded domains unless
// the szDomain parameter is specified (and then only this domain is
// searched)
+ // n - additional parameter for PluralFormsParser
//
// return original string if translation is not available
// (in this case an error message is generated the first time
// added later override those added before.
const wxChar *GetString(const wxChar *szOrigString,
const wxChar *szDomain = (const wxChar *) NULL) const;
+ // plural form version of the same:
+ const wxChar *GetString(const wxChar *szOrigString,
+ const wxChar *szOrigString2,
+ size_t n,
+ const wxChar *szDomain = (const wxChar *) NULL) const;
// Returns the current short name for the locale
const wxString& GetName() const { return m_strShort; }
bool m_bConvertEncoding;
+ bool m_initialized;
+
static wxLanguageInfoArray *ms_languagesDB;
DECLARE_NO_COPY_CLASS(wxLocale)
else
return sz;
}
+inline const wxChar *wxGetTranslation(const wxChar *sz1, const wxChar *sz2,
+ size_t n)
+{
+ wxLocale *pLoc = wxGetLocale();
+ if (pLoc)
+ return pLoc->GetString(sz1, sz2, n);
+ else
+ return n == 1 ? sz1 : sz2;
+}
#else // !wxUSE_INTL
// the macros should still be defined - otherwise compilation would fail
-#if !defined(WXINTL_NO_GETTEXT_MACRO) && !defined(_)
- #define _(str) (_T(str))
+#if !defined(WXINTL_NO_GETTEXT_MACRO)
+ #if !defined(_)
+ #define _(s) (_T(s))
+ #endif
#endif
#define wxTRANSLATE(str) _T(str)
// define this one just in case it occurs somewhere (instead of preferred
// wxTRANSLATE) too
-#if !defined(WXINTL_NO_GETTEXT_MACRO) && !defined(gettext_noop)
- #define gettext_noop(str) _T(str)
+#if !defined(WXINTL_NO_GETTEXT_MACRO)
+ #if !defined(gettext_noop)
+ #define gettext_noop(str) _T(str)
+ #endif
+ #if !defined(N_)
+ #define N_(s) _T(s)
+ #endif
#endif
#endif // _WX_INTL_H_