package org.limewire.ui.swing.util; import java.util.Locale; import org.xnap.commons.i18n.I18nFactory; public class I18n { private static final String BASENAME = "org.limewire.i18n.Messages"; private static org.xnap.commons.i18n.I18n i18n = I18nFactory.getI18n(I18n.class, BASENAME); public static void setLocale(Locale locale) { i18n.setResources(BASENAME, locale, ClassLoader.getSystemClassLoader()); } public static String tr(String text) { return i18n.tr(text); } private static org.xnap.commons.i18n.I18n getNonCachedI18n(Locale locale) { return I18nFactory.getI18n(I18n.class, BASENAME, locale, I18nFactory.NO_CACHE); } /** * Returns the translation of a text in the given locale if available. * * This allows you to look up a translation for a specific locale. Should be * used with care since the whole hierarchy for the message bundle might be loaded. * @param locale the locale to look up the translation for * @param text the text to translate */ public static String trl(Locale locale, String text) { return getNonCachedI18n(locale).tr(text); } public static String tr(String text, Object... args) { return i18n.tr(text.replace("'", "''"), args); } public static String trc(String comment, String text) { return i18n.trc(comment, text); } public static String trnc(String context, String singularText, String pluralText, long number) { return i18n.trnc(context, singularText, pluralText, number, number); } public static String trnc(String context, String singularText, String pluralText, long number, Object...args) { return i18n.trnc(context, singularText.replace("'", "''"), pluralText.replace("'", "''"), number, args); } /** * Returns the translated singular or plural form of the strings. The singular * case is shown for number == 1, the plural form is shown for all other cases * including number == 0. Variable substitution '{0}' may still be used with the * singular and plural forms. */ public static String trn(String singularText, String pluralText, long number) { return trn(singularText, pluralText, number, number); } public static String trn(String singularText, String pluralText, long number, Object...args) { return trn(i18n, singularText, pluralText, number, args); } private static String trn(org.xnap.commons.i18n.I18n i18n, String singularText, String pluralText, long number, Object...args) { return i18n.trn(singularText.replace("'", "''"), pluralText.replace("'", "''"), number, args); } /** * Returns the translation of a text in the given locale if available. * <p> * This allows you to look up a translation for a specific locale. Should be * used with care since the whole hierarchy for the message bundle might be loaded. * <p> * Delegates to {@link #trn(String, String, long)} using different * {@link org.xnap.commons.i18n.I18n} instance. */ public static String trln(Locale locale, String singularText, String pluralText, long number, Object... args) { return trn(getNonCachedI18n(locale), singularText, pluralText, number, args); } }