private static ResourceBundle getBundle(String name) {
        if (missingBundles.contains(name)) {
            return null;
        }
        ResourceBundle bundle = bundles.get(name);
        if (bundle != null) {
            return bundle;
        }        
        try {
            bundle = ResourceBundle.getBundle(name, Locale.getDefault());
            bundles.put(name, bundle);
        } catch (MissingResourceException e) {
            LOGGER.log(Level.WARNING, "Missing bundle {0} for locale {1}", 
                    new Object[] { name, Locale.getDefault() });
            try {
                bundle = ResourceBundle.getBundle(name, Locale.ENGLISH);
                bundles.put(name, bundle);
            } catch (MissingResourceException f) {
                LOGGER.log(Level.SEVERE, "Missing base bundle {0}", name);
                missingBundles.add(name);
            }
        }
        return bundle;
    }