Class I18n

java.lang.Object
io.leandev.appfuse.nls.I18n

public class I18n extends Object

Internationalization (I18n) utility class for handling translations and locale-specific formatting. This class provides methods for translating text, formatting dates, numbers, and other locale-specific operations.

Thread-safe implementation using ConcurrentHashMap for caching dictionaries. Supports fallback mechanisms for missing translations and locale hierarchies.

  • Constructor Details

    • I18n

      public I18n()
      Default constructor that uses the system default locale.
    • I18n

      public I18n(Locale locale)
      Constructor with a specific locale.
      Parameters:
      locale - the locale to use, if null defaults to system default
  • Method Details

    • getInstance

      public static I18n getInstance()
    • setLocale

      public void setLocale(Locale locale)
      Sets the locale for this I18n instance.
      Parameters:
      locale - the locale to set, if null defaults to system default
    • locale

      public Locale locale()
    • translate

      public String translate(String text)
      Translates the given text using the instance's default locale.
      Parameters:
      text - the text to translate
      Returns:
      the translated text, or the original text if no translation found
    • translate

      public String translate(String text, Locale locale)
    • translate

      public String translate(String text, String namespace)
    • translate

      public String translate(String text, String namespace, Locale locale)
    • translate

      public String translate(String text, String namespace, String language)
    • interpret

      public String interpret(String text, String namespace, Locale locale)

      Interprets a translation key within a specific namespace and locale. Provides multi-level fallback mechanism:

      1. Try country-specific locale (e.g., zh-TW)
      2. Try language-only locale (e.g., zh)
      3. Try English (en) as final fallback
      Parameters:
      text - the translation key
      namespace - the namespace (e.g., "term", "message", "app")
      locale - the target locale, if null defaults to system default
      Returns:
      the translated text, or null if no translation found
    • term

      public String term(String text, Locale locale)
    • term

      public String term(String text)
    • message

      public String message(String text, Locale locale)
    • message

      public String message(String text)
    • datetimePattern

      public String datetimePattern()
      取得目前語系的日期時間格式。 若語系未定義格式,則回傳預設格式 "yyyy-MM-dd HH:mm:ss"。
      Returns:
      日期時間格式字串
    • datetimePattern

      public String datetimePattern(String defaultDatetimePattern)
      取得目前語系的日期時間格式。 若語系未定義格式,則回傳指定的預設格式。
      Parameters:
      defaultDatetimePattern - 預設日期時間格式
      Returns:
      日期時間格式字串
    • datetimePattern

      public String datetimePattern(Locale locale)
      取得指定語系的日期時間格式。 若語系未定義格式,則回傳預設格式 "yyyy-MM-dd HH:mm:ss"。
      Parameters:
      locale - 目標語系
      Returns:
      日期時間格式字串
    • datetimePattern

      public String datetimePattern(Locale locale, String defaultDatetimePattern)
    • datePattern

      public String datePattern()
      取得目前語系的日期格式。 若語系未定義格式,則回傳預設格式 "yyyy-MM-dd"。
      Returns:
      日期格式字串
    • datePattern

      public String datePattern(String defaultDatePattern)
      取得目前語系的日期格式。 若語系未定義格式,則回傳指定的預設格式。
      Parameters:
      defaultDatePattern - 預設日期格式
      Returns:
      日期格式字串
    • datePattern

      public String datePattern(Locale locale)
      取得指定語系的日期格式。 若語系未定義格式,則回傳預設格式 "yyyy-MM-dd"。
      Parameters:
      locale - 目標語系
      Returns:
      日期格式字串
    • datePattern

      public String datePattern(Locale locale, String defaultDatePattern)
      取得指定語系的日期格式。 若語系未定義格式,則回傳指定的預設格式。
      Parameters:
      locale - 目標語系
      defaultDatePattern - 預設日期格式
      Returns:
      日期格式字串
    • timePattern

      public String timePattern()
    • timePattern

      public String timePattern(String defaultDatePattern)
    • timePattern

      public String timePattern(Locale locale)
    • timePattern

      public String timePattern(Locale locale, String defaultDatePattern)
    • numberPattern

      public String numberPattern()
    • numberPattern

      public String numberPattern(String defaultPattern)
    • numberPattern

      public String numberPattern(Locale locale)
    • numberPattern

      public String numberPattern(Locale locale, String defaultPattern)
    • moneyPattern

      public String moneyPattern()
    • moneyPattern

      public String moneyPattern(String defaultPattern)
    • moneyPattern

      public String moneyPattern(Locale locale)
    • moneyPattern

      public String moneyPattern(Locale locale, String defaultPattern)
    • integerPattern

      public String integerPattern()
    • integerPattern

      public String integerPattern(String defaultPattern)
    • integerPattern

      public String integerPattern(Locale locale)
    • integerPattern

      public String integerPattern(Locale locale, String defaultPattern)
    • floatPattern

      public String floatPattern()
    • floatPattern

      public String floatPattern(String defaultPattern)
    • floatPattern

      public String floatPattern(Locale locale)
    • floatPattern

      public String floatPattern(Locale locale, String defaultPattern)
    • fontFamily

      public String fontFamily()
    • fontFamily

      public String fontFamily(String defaultFontFamily)
    • fontFamily

      public String fontFamily(Locale locale)
    • fontFamily

      public String fontFamily(Locale locale, String defaultFontFamily)
    • get

      public String get(String key, String namespace, String language)
    • get

      public String get(String key, String namespace, Locale locale)