net.i2p.util

## Class Translate

- java.lang.Object
- - net.i2p.util.Translate

- Direct Known Subclasses:
    Messages

      public abstract class Translate
      extends Object

  Translate strings efficiently. We don't include an English or default ResourceBundle, we simply check for "en" and return the original string. Support real-time language changing with the routerconsole.lang and routerconsole.country properties. To change language in router context, set the context properties PROP_LANG and PROP_COUNTRY. To change language in app context, set the System properties PROP_LANG and PROP_COUNTRY.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `PROP_COUNTRY`
    `static String` | `PROP_LANG`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Translate()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `clearCache()` Clear the cache.
    `static String` | `getCountry(I2PAppContext ctx)` Two-letter upper case or ""
    `static String` | `getDisplayLanguage(String langCode, String dflt, I2PAppContext ctx, String bun)` Return the "display language", e.g.
    `static String` | `getLanguage(I2PAppContext ctx)` Two- or three-letter lower case
    `static String` | `getString(int n, String s, String p, I2PAppContext ctx, String bun)` Use GNU ngettext For .po file format see http://www.gnu.org/software/gettext/manual/gettext.html.gz#Translating-plural-forms
    `static String` | `getString(String key, I2PAppContext ctx, String bun)` lang in routerconsole.lang property, else current locale
    `static String` | `getString(String s, I2PAppContext ctx, String bun, Object... oArray)` Varargs
    `static String` | `getString(String s, Object o, I2PAppContext ctx, String bun)` Translate a string with a parameter This is a lot more expensive than getString(s, ctx), so use sparingly.
    `static String` | `getString(String s, Object o, Object o2, I2PAppContext ctx, String bun)` for {0} and {1}
    `static boolean` | `isRTL(I2PAppContext ctx)`
    `static boolean` | `isRTL(String lang)` Is this a right-to-left language?
    `static void` | `setLanguage(String lang, String country)` Only for use by standalone apps in App Context.

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

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

- - ### Field Detail

    - #### PROP_COUNTRY

          public static final String PROP_COUNTRY

      See Also:
        Constant Field Values

    - #### PROP_LANG

          public static final String PROP_LANG

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Translate

          public Translate()

  - ### Method Detail

    - #### clearCache

          public static void clearCache()

      Clear the cache. Call this after adding new bundles to the classpath.

    - #### getCountry

          public static String getCountry(I2PAppContext ctx)

      Two-letter upper case or ""
      Returns:
        country in routerconsole.country property, else current locale

    - #### getDisplayLanguage

          public static String getDisplayLanguage(String langCode,
                                                  String dflt,
                                                  I2PAppContext ctx,
                                                  String bun)

      Return the "display language", e.g. "English" for the language specified by langCode, using the current language. Uses translation if available, then JVM Locale.getDisplayLanguage() if available, else default param.
      Parameters:
        `langCode` - two- or three-letter lower-case
        `dflt` - e.g. "English"

    - #### getLanguage

          public static String getLanguage(I2PAppContext ctx)

      Two- or three-letter lower case
      Returns:
        lang in routerconsole.lang property, else current locale

    - #### getString

          public static String getString(int n,
                                         String s,
                                         String p,
                                         I2PAppContext ctx,
                                         String bun)

      Use GNU ngettext For .po file format see http://www.gnu.org/software/gettext/manual/gettext.html.gz#Translating-plural-forms
      Parameters:
        `n` - how many
        `s` - singluar string, optionally with {0} e.g. "one tunnel"
        `p` - plural string optionally with {0} e.g. "{0} tunnels"

    - #### getString

          public static String getString(String key,
                                         I2PAppContext ctx,
                                         String bun)

      lang in routerconsole.lang property, else current locale

    - #### getString

          public static String getString(String s,
                                         I2PAppContext ctx,
                                         String bun,
                                         Object... oArray)

      Varargs
      Parameters:
        `oArray` - parameters

    - #### getString

          public static String getString(String s,
                                         Object o,
                                         I2PAppContext ctx,
                                         String bun)

      Translate a string with a parameter This is a lot more expensive than getString(s, ctx), so use sparingly.
      Parameters:
        `s` - string to be translated containing {0} The {0} will be replaced by the parameter. Single quotes must be doubled, i.e. ' -> '' in the string.
        `o` - parameter, not translated. To translate parameter also, use _t("foo {0} bar", _t("baz")) Do not double the single quotes in the parameter. Use autoboxing to call with ints, longs, floats, etc.

    - #### getString

          public static String getString(String s,
                                         Object o,
                                         Object o2,
                                         I2PAppContext ctx,
                                         String bun)

      for {0} and {1}

    - #### isRTL

          public static boolean isRTL(I2PAppContext ctx)

    - #### isRTL

          public static boolean isRTL(String lang)

      Is this a right-to-left language?
      Parameters:
        `lang` - Two- or three-letter lower case
      Returns:
        true for supported RTL languages

    - #### setLanguage

          public static void setLanguage(String lang,
                                         String country)

      Only for use by standalone apps in App Context. NOT for use in Router Context. Does not persist, apps must implement their own persistence. Does NOT override context properties.
      Parameters:
        `lang` - Two- or three-letter lower case, or null for default
        `country` - Two-letter upper case, or null for default, or "" for none