package net.jhorstmann.i18n.jsf; import java.util.Locale; import javax.faces.context.FacesContext; import net.jhorstmann.i18n.LocaleProvider; import net.jhorstmann.i18n.LocaleProviderFactory; public class FacesLocaleProviderFactory extends LocaleProviderFactory { public static final String KEY_DEACTIVATION_VAR = "net.jhorstmann.i18n.FacesLocaleProviderFactory.deactivate"; static class JsfLocaleProvider implements LocaleProvider { @Override public Locale getLocale() { return FacesLocale.getLocale(); } } private static final LocaleProvider PROVIDER = new JsfLocaleProvider(); /** * If the initial-param "net.jhorstmann.i18n.FacesLocaleProviderFactory.deactivate" is set to true, this Provider is deactivated, in all other cases it * returns the value of (FacesContext.getCurrentInstance() != null) */ @Override public boolean isEnvironmentSupported() { if (FacesContext.getCurrentInstance() == null) { // no JSF active return false; } String bundleVar = FacesContext.getCurrentInstance().getExternalContext().getInitParameter(KEY_DEACTIVATION_VAR); if (bundleVar != null && "true".equalsIgnoreCase(bundleVar)) { // Provider is disabled return false; } // JSF is active and no deactivation configured return true; } @Override public LocaleProvider newLocaleProvider() { return PROVIDER; } }