This works if you can intercept the very first creation of a resource package:
while (true) { ResourceBundle resourceBundle = ResourceBundle.getBundle("SystemMessages", new Locale("hu", "HU"), new ResourceBundle.Control() { @Override public List<String> getFormats(String baseName) { return ResourceBundle.Control.FORMAT_PROPERTIES; } @Override public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload) throws IllegalAccessException, InstantiationException, IOException { System.err.println(this.toBundleName(baseName, locale) + ": " + format + " - " + reload); return super.newBundle(baseName, locale, format, loader, reload); } @Override public long getTimeToLive(String baseName, Locale locale) { long ttl = 1000; System.err.println(this.toBundleName(baseName, locale) + " - " + ttl + "ms"); return ttl; } @Override public boolean needsReload(String baseName, Locale locale, String format, ClassLoader loader, ResourceBundle bundle, long loadTime) { System.err.println(baseName + "_" + locale + " - " + new Date(loadTime)); return true; } }); System.out.println(resourceBundle.getString("display.first_name") + ": John"); System.out.println(resourceBundle.getString("display.last_name") + ": Doe"); Thread.sleep(5000); }
gabor source share