All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.jhorstmann.i18n.I18N Maven / Gradle / Ivy

package net.jhorstmann.i18n;

import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class I18N {
    private static final Logger log = LoggerFactory.getLogger(I18N.class);

    private I18N() {
    }

    /**
     * Lookup for registered localeProviderFactories and returns a locale
     * delivered by matching provider
     * 
     * @return locale delivered from provider
     * @see LocaleProvider
     */
    public static Locale getLocale() {
        log.debug("Lookup locale-provider over serviceloader");
        LocaleProvider localeProvider = LocaleProviderFactory.newInstance().newLocaleProvider();
        return localeProvider.getLocale();
    }

    /**
     * Lookup for registered bundleProviderFactories and returns a bundle
     * delivered by matching provider
     * 
     * @param locale
     *            the Java-Locale
     * @return resource-bundle delivered from provider
     * @see ResourceBundleProvider
     */
    public static ResourceBundle getBundle(Locale locale) {
        log.debug("Lookup resourcebundle-provider over serviceloader");
        ResourceBundleProvider bundleProvider = ResourceBundleProviderFactory.newInstance().newResourceBundleProvider();
        return bundleProvider.getResourceBundle(locale);
    }

    public static ResourceBundle getBundle() {
        Locale locale = getLocale();
        return getBundle(locale);
    }

    public static String gettext(ResourceBundle bundle, String msgid) {
        return GettextResourceBundle.gettext(bundle, msgid);
    }

    public static String gettext(Locale locale, String msgid) {
        return GettextResourceBundle.gettext(getBundle(locale), msgid);
    }

    public static String gettext(String msgid) {
        return GettextResourceBundle.gettext(getBundle(), msgid);
    }

    public static String pgettext(ResourceBundle bundle, String msgctx, String msgid) {
        return GettextResourceBundle.pgettext(bundle, msgctx, msgid);
    }

    public static String pgettext(Locale locale, String msgctx, String msgid) {
        return GettextResourceBundle.pgettext(getBundle(locale), msgctx, msgid);
    }

    public static String pgettext(String msgctx, String msgid) {
        return GettextResourceBundle.pgettext(getBundle(), msgctx, msgid);
    }

    public static String ngettext(ResourceBundle bundle, String msgid, String msgidPlural, long n) {
        return GettextResourceBundle.ngettext(bundle, msgid, msgidPlural, n);
    }

    public static String ngettext(Locale locale, String msgid, String msgidPlural, long n) {
        return GettextResourceBundle.ngettext(getBundle(locale), msgid, msgidPlural, n);
    }

    public static String ngettext(String msgid, String msgidPlural, long n) {
        return GettextResourceBundle.ngettext(getBundle(), msgid, msgidPlural, n);
    }

    public static String npgettext(ResourceBundle bundle, String msgctx, String msgid, String msgidPlural, long n) {
        return GettextResourceBundle.npgettext(bundle, msgctx, msgid, msgidPlural, n);
    }

    public static String npgettext(Locale locale, String msgctx, String msgid, String msgidPlural, long n) {
        return GettextResourceBundle.npgettext(getBundle(locale), msgctx, msgid, msgidPlural, n);
    }

    public static String npgettext(String msgctx, String msgid, String msgidPlural, long n) {
        return GettextResourceBundle.npgettext(getBundle(), msgctx, msgid, msgidPlural, n);
    }

    private static String format(ResourceBundle bundle, String pattern, Object... params) {
        MessageFormat fmt = new MessageFormat(pattern, bundle.getLocale());
        return fmt.format(params);
    }

    public static String translate(ResourceBundle bundle, String context, String message, String plural, long n,
            Object... params) {
        if (context != null) {
            if (plural != null) {
                return trnc(bundle, context, message, plural, n, params);
            } else {
                return trc(bundle, context, message, params);
            }
        } else {
            if (plural != null) {
                return trn(bundle, message, plural, n, params);
            } else {
                return tr(bundle, message, params);
            }
        }
    }

    public static String mark(String message) {
        return message;
    }

    public static String tr(String message, Object... params) {
        return tr(getBundle(), message, params);
    }

    public static String tr(Locale locale, String message, Object... params) {
        return tr(getBundle(locale), message, params);
    }

    public static String tr(ResourceBundle bundle, String message, Object... params) {
        return format(bundle, GettextResourceBundle.gettext(bundle, message), params);
    }

    public static String trc(String context, String message, Object... params) {
        return trc(getBundle(), context, message, params);
    }

    public static String trc(Locale locale, String context, String message, Object... params) {
        return trc(getBundle(locale), context, message, params);
    }

    public static String trc(ResourceBundle bundle, String context, String message, Object... params) {
        return format(bundle, GettextResourceBundle.pgettext(bundle, context, message), params);
    }

    public static String trn(String message, String plural, long n, Object... params) {
        return trn(getBundle(), message, plural, n, params);
    }

    public static String trn(Locale locale, String message, String plural, long n, Object... params) {
        return trn(getBundle(locale), message, plural, n, params);
    }

    public static String trn(ResourceBundle bundle, String message, String plural, long n, Object... params) {
        String text = GettextResourceBundle.ngettext(bundle, message, plural, n);
        return format(bundle, text, params);
    }

    public static String trnc(String context, String message, String plural, long n, Object... params) {
        return trnc(getBundle(), context, message, plural, n, params);
    }

    public static String trnc(Locale locale, String context, String message, String plural, long n, Object... params) {
        return trnc(getBundle(locale), context, message, plural, n, params);
    }

    public static String trnc(ResourceBundle bundle, String context, String message, String plural, long n,
            Object... params) {
        String text = GettextResourceBundle.npgettext(bundle, context, message, plural, n);
        return format(bundle, text, params);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy