package org.agnitas.emm.extension.util; import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.ResourceBundle; public class I18NResourceBundle { private final I18NFactory factory; private final Map<String, ResourceBundle> messages; public I18NResourceBundle( I18NFactory factory) { this.factory = factory; this.messages = new HashMap<String, ResourceBundle>(); } public String getMessage( String key, Locale locale) { ResourceBundle languageBundle = getMessageBundle( locale.getLanguage() + "_" + locale.getCountry()); if( languageBundle != null && languageBundle.containsKey( key)) return languageBundle.getString( key); languageBundle = getMessageBundle( locale.getLanguage()); if( languageBundle != null && languageBundle.containsKey( key)) return languageBundle.getString( key); languageBundle = getMessageBundle( ""); if( languageBundle != null && languageBundle.containsKey( key)) return languageBundle.getString( key); return null; } private ResourceBundle getMessageBundle( String i18nPrefix) { ResourceBundle bundle = this.messages.get( i18nPrefix); if( bundle == null) { bundle = factory.getMessages( i18nPrefix); this.messages.put( i18nPrefix, bundle); } return bundle; } }