gnu.gettext

## Class GettextResource

- java.lang.Object
- - java.util.ResourceBundle
  - - gnu.gettext.GettextResource

-     public abstract class GettextResource
      extends ResourceBundle

  This class implements the main GNU libintl functions in Java.

  Using the GNU gettext approach, compiled message catalogs are normal Java ResourceBundle classes and are thus interoperable with standard ResourceBundle based code.

  The main differences between the Sun ResourceBundle approach and the GNU gettext approach are:

  - In the Sun approach, the keys are abstract textual shortcuts. In the GNU gettext approach, the keys are the English/ASCII version of the messages.
  - In the Sun approach, the translation files are called "Resource_locale.properties" and have non-ASCII characters encoded in the Java `\``unnnn` syntax. Very few editors can natively display international characters in this format. In the GNU gettext approach, the translation files are called "Resource.locale.po" and are in the encoding the translator has chosen. Many editors can be used. There are at least three GUI translating tools (Emacs PO mode, KDE KBabel, GNOME gtranslator).
  - In the Sun approach, the function `ResourceBundle.getString` throws a `MissingResourceException` when no translation is found. In the GNU gettext approach, the `gettext` function returns the (English) message key in that case.
  - In the Sun approach, there is no support for plural handling. Even the most elaborate MessageFormat strings cannot provide decent plural handling. In the GNU gettext approach, we have the `ngettext` function.

  To compile GNU gettext message catalogs into Java ResourceBundle classes, the `msgfmt` program can be used.

  Author:
    Bruno Haible

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class java.util.ResourceBundle

      `ResourceBundle.Control`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static boolean` | `verbose`

    - ### Fields inherited from class java.util.ResourceBundle

      `parent`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GettextResource()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static String` | `gettext(ResourceBundle catalog, String msgid)` Returns the translation of msgid.
    `static String` | `ngettext(ResourceBundle catalog, String msgid, String msgid_plural, long n)` Returns the plural form for n of the translation of msgid.
    `static String` | `npgettext(ResourceBundle catalog, String msgctxt, String msgid, String msgid_plural, long n)` Returns the plural form for n of the translation of msgid in the context of msgctxt.
    `static String` | `pgettext(ResourceBundle catalog, String msgctxt, String msgid)` Returns the translation of msgid in the context of msgctxt.

    - ### Methods inherited from class java.util.ResourceBundle

      `clearCache, clearCache, containsKey, getBundle, getBundle, getBundle, getBundle, getBundle, getBundle, getKeys, getLocale, getObject, getString, getStringArray, handleGetObject, handleKeySet, keySet, setParent`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### verbose

          public static boolean verbose

  - ### Constructor Detail

    - #### GettextResource

          public GettextResource()

  - ### Method Detail

    - #### gettext

          public static String gettext(ResourceBundle catalog,
                       String msgid)

      Returns the translation of msgid.
      Parameters:
        `catalog` - a ResourceBundle
        `msgid` - the key string to be translated, an ASCII string
      Returns:
        the translation of msgid, or msgid if none is found

    - #### ngettext

          public static String ngettext(ResourceBundle catalog,
                        String msgid,
                        String msgid_plural,
                        long n)

      Returns the plural form for n of the translation of msgid.
      Parameters:
        `catalog` - a ResourceBundle
        `msgid` - the key string to be translated, an ASCII string
        `msgid_plural` - its English plural form
      Returns:
        the translation of msgid depending on n, or msgid or msgid_plural if none is found

    - #### pgettext

          public static String pgettext(ResourceBundle catalog,
                        String msgctxt,
                        String msgid)

      Returns the translation of msgid in the context of msgctxt.
      Parameters:
        `catalog` - a ResourceBundle
        `msgctxt` - the context for the key string, an ASCII string
        `msgid` - the key string to be translated, an ASCII string
      Returns:
        the translation of msgid, or msgid if none is found

    - #### npgettext

          public static String npgettext(ResourceBundle catalog,
                         String msgctxt,
                         String msgid,
                         String msgid_plural,
                         long n)

      Returns the plural form for n of the translation of msgid in the context of msgctxt.
      Parameters:
        `catalog` - a ResourceBundle
        `msgctxt` - the context for the key string, an ASCII string
        `msgid` - the key string to be translated, an ASCII string
        `msgid_plural` - its English plural form
      Returns:
        the translation of msgid depending on n, or msgid or msgid_plural if none is found