/* * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package com.sun.webkit; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.util.Locale; import java.util.PropertyResourceBundle; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; final class LocalizedStrings { private final static Logger log = Logger.getLogger(LocalizedStrings.class.getName()); private final static ResourceBundle BUNDLE = ResourceBundle.getBundle("com.sun.webkit.LocalizedStrings", Locale.getDefault(), new EncodingResourceBundleControl("utf-8")); /** Private ctor to avoid unexpected instantiation */ private LocalizedStrings() {} private static String getLocalizedProperty(String propName) { log.log(Level.FINE, "Get property: " + propName); String propValue = BUNDLE.getString(propName); if ((propValue != null) && (propValue.trim().length() > 0)) { log.log(Level.FINE, "Property value: " + propValue); return propValue.trim(); } log.log(Level.FINE, "Unknown property value"); return null; } private static final class EncodingResourceBundleControl extends ResourceBundle.Control { private final String encoding; private EncodingResourceBundleControl(String encoding) { this.encoding = encoding; } @Override public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload) throws IllegalAccessException, InstantiationException, IOException { String bundleName = toBundleName(baseName, locale); String resourceName = toResourceName(bundleName, "properties"); URL resourceURL = loader.getResource(resourceName); if (resourceURL != null) { try { return new PropertyResourceBundle(new InputStreamReader(resourceURL.openStream(), encoding)); } catch (Exception z) { log.log(Level.FINE, "exception thrown during bundle initialization", z); } } return super.newBundle(baseName, locale, format, loader, reload); } } }