⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 propertymessageresources.java.svn-base

📁 MVC开源框架
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
        }        // Initialize variables we will require        String localeKey = localeKey(locale);        String originalKey = messageKey(localeKey, key);        String message = null;        // Search the specified Locale        message = findMessage(locale, key, originalKey);        if (message != null) {            return message;        }        // JSTL Compatibility - JSTL doesn't use the default locale        if (mode == MODE_JSTL) {           // do nothing (i.e. don't use default Locale)        // PropertyResourcesBundle - searches through the hierarchy        // for the default Locale (e.g. first en_US then en)        } else if (mode == MODE_RESOURCE_BUNDLE) {            if (!defaultLocale.equals(locale)) {                message = findMessage(defaultLocale, key, originalKey);            }        // Default (backwards) Compatibility - just searches the        // specified Locale (e.g. just en_US)        } else {            if (!defaultLocale.equals(locale)) {                localeKey = localeKey(defaultLocale);                message = findMessage(localeKey, key, originalKey);            }        }        if (message != null) {            return message;        }        // Find the message in the default properties file        message = findMessage("", key, originalKey);        if (message != null) {            return message;        }        // Return an appropriate error indication        if (returnNull) {            return (null);        } else {            return ("???" + messageKey(locale, key) + "???");        }    }    // ------------------------------------------------------ Protected Methods    /**     * Load the messages associated with the specified Locale key.  For this     * implementation, the <code>config</code> property should contain a fully     * qualified package and resource name, separated by periods, of a series     * of property resources to be loaded from the class loader that created     * this PropertyMessageResources instance.  This is exactly the same name     * format you would use when utilizing the <code>java.util.PropertyResourceBundle</code>     * class.     *     * @param localeKey Locale key for the messages to be retrieved     */    protected synchronized void loadLocale(String localeKey) {        if (log.isTraceEnabled()) {            log.trace("loadLocale(" + localeKey + ")");        }        // Have we already attempted to load messages for this locale?        if (locales.get(localeKey) != null) {            return;        }        locales.put(localeKey, localeKey);        // Set up to load the property resource for this locale key, if we can        String name = config.replace('.', '/');        if (localeKey.length() > 0) {            name += ("_" + localeKey);        }        name += ".properties";        InputStream is = null;        Properties props = new Properties();        // Load the specified property resource        if (log.isTraceEnabled()) {            log.trace("  Loading resource '" + name + "'");        }        ClassLoader classLoader =            Thread.currentThread().getContextClassLoader();        if (classLoader == null) {            classLoader = this.getClass().getClassLoader();        }        is = classLoader.getResourceAsStream(name);        if (is != null) {            try {                props.load(is);            } catch (IOException e) {                log.error("loadLocale()", e);            } finally {                try {                    is.close();                } catch (IOException e) {                    log.error("loadLocale()", e);                }            }            if (log.isTraceEnabled()) {                log.trace("  Loading resource completed");            }        } else {            if (log.isWarnEnabled()) {                log.warn("  Resource "+name+" Not Found.");            }        }        // Copy the corresponding values into our cache        if (props.size() < 1) {            return;        }        synchronized (messages) {            Iterator names = props.keySet().iterator();            while (names.hasNext()) {                String key = (String) names.next();                if (log.isTraceEnabled()) {                    log.trace("  Saving message key '"                        + messageKey(localeKey, key));                }                messages.put(messageKey(localeKey, key), props.getProperty(key));            }        }    }    // -------------------------------------------------------- Private Methods    /**     * Returns a text message for the specified key, for the specified Locale.     * <p>     * A null string result will be returned by this method if no relevant     * message resource is found. This method searches through the locale     * <i>hierarchy</i> (i.e. variant --> languge --> country) for the message.     *     * @param locale The requested message Locale, or <code>null</code> for     *  the system default Locale     * @param key The message key to look up     * @param originalKey The original message key to cache any found message under     * @return text message for the specified key and locale     */    private String findMessage(Locale locale, String key, String originalKey) {        // Initialize variables we will require        String localeKey = localeKey(locale);        String messageKey = null;        String message = null;        int underscore = 0;        // Loop from specific to general Locales looking for this message        while (true) {            message = findMessage(localeKey, key, originalKey);            if (message != null) {                break;            }            // Strip trailing modifiers to try a more general locale key            underscore = localeKey.lastIndexOf("_");            if (underscore < 0) {                break;            }            localeKey = localeKey.substring(0, underscore);        }        return message;    }    /**     * Returns a text message for the specified key, for the specified Locale.     * <p>     * A null string result will be returned by this method if no relevant     * message resource is found.     *     * @param locale The requested key of the Locale     * @param key The message key to look up     * @param originalKey The original message key to cache any found message under     * @return text message for the specified key and locale     */    private String findMessage(String localeKey, String key, String originalKey) {        // Load this Locale's messages if we have not done so yet        loadLocale(localeKey);        // Check if we have this key for the current locale key        String messageKey = messageKey(localeKey, key);        // Add if not found under the original key        boolean addIt = !messageKey.equals(originalKey);        synchronized (messages) {            String message = (String) messages.get(messageKey);            if (message != null) {                if (addIt) {                    messages.put(originalKey, message);                }            }            return (message);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -