Fill in your name and email address (without double quotes).
@item Language-Team
-Fill in the English name of the language, and the email address of the
-language team you are part of.
+Fill in the English name of the language, and the email address or
+homepage URL of the language team you are part of.
Before starting a translation, it is a good idea to get in touch with
your translation team, not only to make sure you don't do duplicated work,
@table @asis
@item Celtic
-Gaeilge
+Gaeilge (Irish)
@end table
@item Three forms, special case for numbers ending in 1[2-9]
functions will be build. (You need at least the few functions which the
GNU @code{gettext} Library itself needs.) However some of the functions
in the @file{lib/} also give messages to the user which of course should be
-translated, too. Taking care of this it is not enough to place the support
-library (say @file{libsupport.a}) just between the @code{@@INTLLIBS@@}
-and @code{@@LIBS@@} in the above example. Instead one has to write this:
+translated, too. Taking care of this, the support library (say
+@file{libsupport.a}) should be placed before @code{@@INTLLIBS@@} and
+@code{@@LIBS@@} in the above example. So one has to write this:
@example
-LIBS = ../lib/libsupport.a @@INTLLIBS@@ ../lib/libsupport.a @@LIBS@@
+LIBS = ../lib/libsupport.a @@INTLLIBS@@ @@LIBS@@
@end example
@item
"abc"
@item gettext shorthand
----
+_("abc")
@item gettext/ngettext functions
----
+@code{GettextResource.gettext}, @code{GettextResource.ngettext}
@item textdomain
----
+---, use @code{ResourceBundle.getResource} instead
@item bindtextdomain
----
+---, use CLASSPATH instead
@item setlocale
automatic
---
@item Use or emulate GNU gettext
-emulate
+---, uses a Java specific message catalog format
@item Extractor
----
+@code{xgettext -k_}
@item Formatting with positions
@code{MessageFormat.format "@{1,number@} @{0,number@}"}
---
@end table
+Before marking strings as internationalizable, uses of the string
+concatenation operator need to be converted to @code{MessageFormat}
+applications. For example, @code{"file "+filename+" not found"} becomes
+@code{MessageFormat.format("file @{0@} not found", new Object[] @{ filename @})}.
+Only after this is done, can the strings be marked and extracted.
+
+GNU gettext uses the native Java internationalization mechanism, namely
+@code{ResourceBundle}s. To convert a PO file to a ResourceBundle, the
+@code{msgfmt} program can be used with the option @code{--java} or
+@code{--java2}. To convert a ResourceBundle back to a PO file, the
+@code{msgunfmt} program can be used with the option @code{--java}.
+
+Two different programmatic APIs can be used to access ResourceBundles.
+Note that both APIs work with all kinds of ResourceBundles, whether
+GNU gettext generated classes, or other @code{.class} or @code{.properties}
+files.
+
+@enumerate
+@item
+The @code{java.util.ResourceBundle} API.
+
+In particular, its @code{getString} function returns a string translation.
+Note that a missing translation yields a @code{MissingResourceException}.
+
+This has the advantage of being the standard API. And it does not require
+any additional libraries, only the @code{msgfmt} generated @code{.class}
+files. But it cannot do plural handling, even if the resource was generated
+from a PO file with plural handling.
+
+@item
+The @code{gnu.gettext.GettextResource} API.
+
+Its @code{gettext} function returns a string translation. Note that when
+a translation is missing, the @var{msgid} argument is returned unchanged.
+
+This has the advantage of having the @code{ngettext} function for plural
+handling.
+
+To use this API, one needs the @code{libintl.jar} file which is part of
+the GNU gettext package and distributed under the LGPL.
+@end enumerate
+
@node gawk, Pascal, Java, List of Programming Languages
@subsection GNU awk
fpk
@item File extension
-@code{pp}
+@code{pp}, @code{pas}
@item String syntax
@code{'abc'}
---, use @code{ResourceString} data type instead
@item textdomain
----, use @code{TranslateResourcestrings} function instead
+---, use @code{TranslateResourceStrings} function instead
@item bindtextdomain
----, use @code{TranslateResourcestrings} function instead
+---, use @code{TranslateResourceStrings} function instead
@item setlocale
automatic, but uses only LANG, not LC_MESSAGES or LC_ALL
@item Prerequisite
-@code{uses gettext;}
+@code{@{$mode delphi@}} or @code{@{$mode objfpc@}}@*@code{uses gettext;}
@item Use or emulate GNU gettext
emulate partially
@item Extractor
-?
+@code{ppc386} followed by @code{xgettext} or @code{rstconv}
@item Formatting with positions
-?
+@code{uses sysutils;}@*@code{format "%1:d %0:d"}
@item Portability
?
---
@end table
+The Pascal compiler has special support for the @code{ResourceString} data
+type. It generates a @code{.rst} file. This is then converted to a @code{.pot}
+file by use of @code{xgettext} or @code{rstconv}. At runtime, a @code{.mo}
+file corresponding to translations of this @code{.pot} file can be loaded
+using the @code{TranslateResourceStrings} function in the @code{gettext} unit.
+
@node wxWindows, YCP, Pascal, List of Programming Languages
@subsection wxWindows library
emulate, see @code{include/wx/intl.h} and @code{src/common/intl.cpp}
@item Extractor
-xgettext
+@code{xgettext}
@item Formatting with positions
---
@table @asis
@item RPMs
-libycp, libycp-devel
+libycp, libycp-devel, yast2-core-translator
@item File extension
@code{ycp}
@code{_("abc")}
@item gettext/ngettext functions
----
+@code{_()} with 1 or 3 arguments
@item textdomain
@code{textdomain} statement
use maps instead
@item Extractor
----
+@code{xgettext}
@item Formatting with positions
@code{sformat "%2 %1"}
@code{rst}
@item Extractor
-@code{rstconv}
+@code{xgettext}, @code{rstconv}
@end table
@c This is the template for new data formats.