package mj.ocraptor.configuration; import java.text.MessageFormat; import java.util.Locale; import java.util.ResourceBundle; import mj.ocraptor.configuration.properties.ConfigString; import org.apache.commons.lang3.LocaleUtils; public class Localization { private ResourceBundle resourceBundle; private Config cfg; private static final String LANGUAGE_RESOURCE_FOLDER = "mj.ocraptor.javafx.controllers.text"; private static Localization instance; private static final org.slf4j.Logger LOGGER = org.slf4j.LoggerFactory.getLogger(Localization.class); /** * */ private Localization() { this.cfg = Config.inst(); this.initResourceBundle(); } /** * * */ public static Localization instance() { if (instance == null) { instance = new Localization(); } return instance; } /** * * */ private void initResourceBundle() { Locale defaultLocale = Locale.ENGLISH; String defaultLocaleFromProperties = this.cfg.getProp(ConfigString.DEFAULT_LOCALE); if (!defaultLocaleFromProperties.isEmpty()) { defaultLocale = LocaleUtils.toLocale(defaultLocaleFromProperties); } this.resourceBundle = ResourceBundle.getBundle(LANGUAGE_RESOURCE_FOLDER, defaultLocale); } /** * * * @return */ public Locale getLocale() { return this.resourceBundle.getLocale(); } /** * * * @param locale */ public void setLocale(Locale locale) { this.resourceBundle = ResourceBundle.getBundle(LANGUAGE_RESOURCE_FOLDER, locale); } /** * * * @param property * @param placeHolders * @return */ public String getText(final String property, final Object... placeHolders) { String[] stringList = new String[placeHolders.length]; try { for (int i = 0; i < placeHolders.length; i++) { stringList[i] = String.valueOf(placeHolders[i]); } } catch (Exception e) { return "ERROR"; } return getText(property, stringList); } /** * * * @param property * @param placeHolders * @return */ public String getText(final String property, final String... placeHolders) { try { if (placeHolders.length == 0) { return this.resourceBundle.getString(property); } else { return MessageFormat.format(this.resourceBundle.getString(property), placeHolders); } } catch (Exception e) { LOGGER.error("Property not found: \"" + property + "\""); return "ERROR"; } } }