/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package modmanager.gui.l10n; /** * * @author Shirkit */ import java.io.UnsupportedEncodingException; import java.util.Enumeration; import java.util.Locale; import java.util.PropertyResourceBundle; import java.util.ResourceBundle; public abstract class Utf8ResourceBundle { public static final ResourceBundle getBundle(String baseName) { ResourceBundle bundle = ResourceBundle.getBundle(baseName); return createUtf8PropertyResourceBundle(bundle); } public static final ResourceBundle getBundle(String baseName, Locale locale) { ResourceBundle bundle = ResourceBundle.getBundle(baseName, locale); return createUtf8PropertyResourceBundle(bundle); } public static ResourceBundle getBundle(String baseName, Locale locale, ClassLoader loader) { ResourceBundle bundle = ResourceBundle.getBundle(baseName, locale, loader); return createUtf8PropertyResourceBundle(bundle); } private static ResourceBundle createUtf8PropertyResourceBundle(ResourceBundle bundle) { if (!(bundle instanceof PropertyResourceBundle)) { return bundle; } return new Utf8PropertyResourceBundle((PropertyResourceBundle) bundle); } private static class Utf8PropertyResourceBundle extends ResourceBundle { PropertyResourceBundle bundle; private Utf8PropertyResourceBundle(PropertyResourceBundle bundle) { this.bundle = bundle; } /* (non-Javadoc) * @see java.util.ResourceBundle#getKeys() */ public Enumeration getKeys() { return bundle.getKeys(); } /* (non-Javadoc) * @see java.util.ResourceBundle#handleGetObject(java.lang.String) */ protected Object handleGetObject(String key) { String value = (String) bundle.getString(key); if (value == null) { return null; } try { return new String(value.getBytes("ISO-8859-1"), "UTF-8"); } catch (UnsupportedEncodingException e) { // Shouldn't fail - but should we still add logging message? return null; } } } }