All:
- Added wxLaunchDefaultBrowser.
+- Added wxPLURAL() macro in addition to _() (Jonas Rydberg)
All (GUI):
\helpref{wx\_reinterpret\_cast}{wxreinterpretcastraw}\\
\helpref{wx\_static\_cast}{wxstaticcastraw}\\
\helpref{\_}{underscore}\\
+\helpref{wxPLURAL}{wxplural}\\
\helpref{\_T}{underscoret}
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{str}
-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{strPlural} 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{str} is returned if `n == 1',
+other language. It takes two extra arguments: as above, \arg{str}
+parameter must contain the singular form of the string to be converted and
+is used as the key for the search in the catalog. The \arg{strPlural} 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{str} is returned if `n == 1',
otherwise \arg{strPlural}.
-See \urlref{GNU gettext manual}{http://www.gnu.org/manual/gettext/html\_chapter/gettext\_10.html\#SEC150} for additional information on plural forms handling.
+
+See \urlref{GNU gettext manual}{http://www.gnu.org/manual/gettext/html\_chapter/gettext\_10.html\#SEC150}
+for additional information on plural forms handling. For a shorter alternative
+see the \helpref{wxPLURAL()}{wxplural} macro.
Both versions call \helpref{wxLocale::GetString}{wxlocalegetstring}.
+Note that this function is not suitable for literal strings in Unicode
+builds, since you the literal strings must be enclosed into
+\helpref{\_T()}{underscoret} or \helpref{wxT}{wxt} macro which makes them
+unrecognised by \texttt{xgettext}, and so they are not extracted to the message
+catalog. Instead, use the \helpref{\_()}{underscore} and
+\helpref{wxPLURAL}{wxplural} macro for all literal strings.
+
+
\membersection{::wxIsEmpty}\label{wxisempty}
\func{bool}{wxIsEmpty}{\param{const char *}{ p}}
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}}
+
+This macro is identical to \helpref{\_()}{underscore} but for the plural variant
+of \helpref{wxGetTranslation}{wxgettranslation}.
+
+
\membersection{\_T}\label{underscoret}
\func{wxChar}{\_T}{\param{char }{ch}}
// ----------------------------------------------------------------------------
// gettext() style macros (notice that xgettext should be invoked with
-// --keyword="_" --keyword="wxGetTranslation:1,2" options
+// --keyword="_" --keyword="wxPLURAL:1,2" options
// to extract the strings from the sources)
#ifndef WXINTL_NO_GETTEXT_MACRO
- #define _(s) wxGetTranslation(_T(s))
+ #define _(s) wxGetTranslation(_T(s))
+ #define wxPLURAL(sing, plur, n) wxGetTranslation(_T(sing), _T(plur), n)
#endif
// another one which just marks the strings for extraction, but doesn't
XARGS=xargs
# common xgettext args: C++ syntax, use the specified macro names as markers
-XGETTEXT_ARGS=-C -k_ -kwxGetTranslation -kwxTRANSLATE -s -j
+XGETTEXT_ARGS=-C -k_ -kwxPLURAL:1,2 -kwxTRANSLATE -s -j
# implicit rules
%.mo: %.po
force-update:
$(RM) wxstd.po
-# print out the percentage of the trsnalted strings
+# print out the percentage of the translated strings
stats: FORCE
@for i in $(WX_LINGUAS); do \
x=`$(MSGFMT) -o /dev/null "$$i.po" 2>&1 | sed -e 's/[,\.]//g' \
for (int n = first; n <= last; ++n)
{
s << n << _T(" ") <<
- wxGetTranslation(_T("file deleted"), _T("files deleted"), n) <<
+ wxPLURAL("file deleted", "files deleted", n) <<
_T("\n");
}
wxMessageBox(s);
# generate the .po file for the program itself
# see `xgettext --help' for options, "-C" is important!
- xgettext -C -n -k_ -o internat.po ../internat.cpp
+ xgettext -C -n -k_ -kwxPLURAL:1,2 -kwxTRANSLATE -o internat.po ../internat.cpp
- # .po file for wxWindows might be generated in the same way, but for now just
- # take this one...
- cp ../wxstd.po .
+ # .po file for wxWindows might be generated in the same way. An already
+ # generated wxstd.po as well as translations for some languages can be
+ # found in the locale directory.
+ cp ../../locale/<language>.po ./wxstd.po
+ - or -
+ cp ../../locale/wxstd.po .
# now edit the files and do translate strings (this isn't done by gettext)
- # you can use another editor if you wish :-)
+ # you can use another editor if you wish :-) No need to edit wxstd.po if you
+ # already got a translated one.
vi internat.po wxstd.po
# create the message catalog files
# run the sample to test it
cd ..
- ./internat <language> <langid>
+ ./internat <language>
Q. How to get the gettext tools?
A. For Unix, you should be able to get the source distribution of any GNU mirror