Java tutorial
/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.localization; import java.io.UnsupportedEncodingException; import java.text.MessageFormat; import java.util.Collections; import java.util.Enumeration; import java.util.HashSet; import java.util.Properties; import java.util.ResourceBundle; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Created by rmy - Date: Apr 23, 2009 */ public class LocalizationResourceBundle extends ResourceBundle { private final Properties props; private static final String UTF_8_ENCODING = "UTF-8"; private static final String LATIN_1_ENCODING = "ISO-8859-1"; private static final Logger LOG = LoggerFactory.getLogger(LocalizationResourceBundle.class); public LocalizationResourceBundle(Properties props) { this.props = props; } protected Object handleGetObject(String key) { return createUTF8EncodedPhrase((String) this.props.get(key)); } public Enumeration<String> getKeys() { HashSet<String> set = new HashSet<String>(); for (Object o : this.props.keySet()) { set.add((String) o); } return Collections.enumeration(set); } public String getLocalizedPhrase(String s) { return (String) handleGetObject(s); } public String getLocalizedPhrase(String s, Object[] arguments) { String message = (String) handleGetObject(s); return StringUtils.isNotEmpty(message) ? MessageFormat.format(message, arguments) : null; } private String createUTF8EncodedPhrase(String localizedPhrase) { if (StringUtils.isBlank(localizedPhrase)) { return null; } try { return new String(localizedPhrase.getBytes(LATIN_1_ENCODING), UTF_8_ENCODING); } catch (UnsupportedEncodingException e) { LOG.error("Parsing localized phrase: " + localizedPhrase + " failed", e); return null; } } }