package com.swingsane.i18n;
import java.util.Locale;
import java.util.ResourceBundle;
import org.apache.log4j.Logger;
/**
* An i18n localizer utility class.
*
* @author Roland Quast (roland@formreturn.com)
*/
public final class Localizer {
/**
* Returns the current locale.
*
* @return the current locale
*/
public static Locale getCurrentLocale() {
if (currentLocale == null) {
setCurrentLocale(Locale.getDefault());
}
return currentLocale;
}
/**
* Returns a translation for the specified key in the current locale.
*
* @param key
* a translation key listed in the messages resource file
* @return a translation for the specified key in the current locale
*/
public static String localize(String key) {
try {
return BUNDLE.getString(key);
} catch (Exception ex) {
LOG.warn(ex.getLocalizedMessage(), ex);
LOG.warn("Missing translation: " + key);
return key;
}
}
/**
* Sets the current locale and attempts to load the messages resource file for the locale.
*
* @param currentLocale
* a locale that has a messages resource
*/
public static void setCurrentLocale(Locale currentLocale) {
Localizer.currentLocale = currentLocale;
try {
ResourceBundle.getBundle(MESSAGES_RESOURCE, currentLocale);
} catch (Exception ex) {
ResourceBundle.getBundle(MESSAGES_RESOURCE, DEFAULT_LOCALE);
currentLocale = DEFAULT_LOCALE;
}
}
private static final String MESSAGES_RESOURCE = "com.swingsane.i18n.messages";
private static final Locale DEFAULT_LOCALE = Locale.ENGLISH;
private static Locale currentLocale = DEFAULT_LOCALE;
private static final Logger LOG = Logger.getLogger(Localizer.class);
private static final ResourceBundle BUNDLE = ResourceBundle.getBundle(MESSAGES_RESOURCE,
getCurrentLocale());
private Localizer() {
}
}