首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

带参数读书资源文件二

2012-10-07 
带参数读书资源文件2String language StringUtils.defaultString(locale.getLanguage())String localeF

带参数读书资源文件2
   String language = StringUtils.defaultString(locale.getLanguage());
            String localeFileName = prefix + "_" + language
                    + suffix;
            File file = new File(filePath, localeFileName);
            try
            {
                if (!file.exists())
                {
                    file = new File(filePath, fileName);
                    if (!file.exists())
                    {
                        throw new IllegalArgumentException("File not found: "
                                + file.getAbsolutePath());
                    }
                }
                fis = new FileInputStream(file);
                messages = new Properties();
                messages.load(fis);
            }
            catch (IOException ioe)
            {
                log.error(ioe);
            }
        }
        //关闭文件流
        finally
        {
            if (fis != null)
            {
                try
                {
                    fis.close();
                }
                catch (IOException e)
                {
                }
            }
        }
       
        return messages;
    }
   
    /**
     * 获取主程序的资源文件
     */
    private static Properties getMainPropFile(Locale locale)
    {
        String lang = locale.getLanguage();
        Properties message = null;
        if (messageMap.containsKey(lang))
        {
            message = messageMap.get(lang);
        }
        else
        {
            message = getPropertiesFromFile(messagePath,
                    IConfigItem.RESOURCES_FILE_NAME,
                    locale);
            messageMap.put(lang, message);
        }
        return message;
    }
   
    /**
     * 根据key值和locale实现国际化
     * @return 国际化之后的字符串
     */
    public static String getMessage(String key, Locale locale, String... args)
    {
        if (locale == null)
        {
            return key;
        }
        Properties messages = getMainPropFile(locale);
        if (messages == null)
        {
            return key;
        }
        String message = messages.getProperty(key, key);
        if (message != null && args.length >0)
        {
            return format(message, args);
        }
        return message;
    }
   
    /**
     *
     * 可以读出资源文件,得到一系列信息
     * @return 属性集
     */
    public static Properties getMessageProperties(Locale locale)
    {
        Properties message = getPropertiesFromFile(messagePath,
                "ApplicationResources.properties",
                locale);
        return message;
    }
   
    /**
     * 获取key对应的国际化字符串
     * @return key对应的国际化字符串
     */
    public String getMessage(String key)
    {
        return this.messages == null ? key
                : this.messages.getProperty(key, key);
    }
   
    /**
     * 获取key对应的国际化字符串
     * @param key
     * @param args 参数序列
     * @return key对应的国际化字符串(经过格式化的)
     */
    public String getMessage(String key, String... args)
    {
        return format(getMessage(key), args);
    }
   
    /**
     * 给字符串设置参数
     * @return 格式化之后的字符串
     */
    public static String format(String message, String... args)
    {
        try
        {
            MessageFormat mf = new MessageFormat(message);
            return mf.format(args);
        }
        catch (Exception e)
        {
            return message;
        }
    }
   

    public Locale getLocale()
    {
        return locale;
    }
   
}

热点排行