All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.mingsoft.base.util.BundleUtil Maven / Gradle / Ivy

/**
 * Copyright (c) 2012-present 铭软科技(mingsoft.net)
 * 本软件及相关文档文件(以下简称“软件”)的版权归 铭软科技 所有
 * 遵循 铭软科技《服务协议》中的《保密条款》
 */





package net.mingsoft.base.util;

import net.mingsoft.base.constant.Const;
import net.mingsoft.base.entity.ResultData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.i18n.LocaleContextHolder;

import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

/**
 * 获取国际化资源工具类
 */
public class BundleUtil {

    /*
     * log4j日志记录
     */
    protected static final Logger LOG = LoggerFactory.getLogger(BundleUtil.class);

    /**
     * 获取本地化文件 推荐使用 BundleUtil.getString 方法
     * @param key
     * @param resources 资源文件所在位置
     * @return
     */
    @Deprecated
    public static String getLocaleString(String key, String resources) {
        Locale locale = LocaleContextHolder.getLocale();
        return ResourceBundle.getBundle(resources, locale).getString(key);
    }

    /**
     * 读取国际化资源文件 推荐使用 BundleUtil.getString 方法
     *
     * @param key
     *            键值
     * @return 返回获取到的字符串
     */
    @Deprecated
    public static String getResString(String key) {
        return getLocaleString(key,Const.RESOURCES);
    }

    /**
     * 读取国际化资源文件,优先模块对应的资源文件,如果模块资源文件找不到就会优先基础层 推荐使用 BundleUtil.getString 方法
     *
     * @param key
     *            键值
     * @param rb
     *            模块对应资源文件
     * @return 返回获取到的字符串
     * 推荐: getString
     */
    @Deprecated
    public static String getResString(String key, ResourceBundle rb) {
        try {
            return rb.getString(key);
        } catch (MissingResourceException var4) {
            return getLocaleString(key,Const.RESOURCES);
        }
    }

    /**
     * 读取国际化资源文件 推荐使用 BundleUtil.getString 方法
     *
     * @param key
     *            键值
     * @param fullStrs
     *            需填充的值
     * @return 返回获取到的字符串
     * 推荐使用 getLocalString
     */
    @Deprecated
    public static String getResString(String key, String... fullStrs) {
        String temp = getResString(key);
        for(int i = 0; i < fullStrs.length; ++i) {
            temp = temp.replace("{" + i + "}", fullStrs[i]);
        }

        return temp;
    }



    /**
     * 读取国际化资源文件,优先模块对应的资源文件,如果模块资源文件找不到就会优先基础层 推荐使用 BundleUtil.getString 方法
     *
     * @param key
     *            键值
     * @param rb
     *            模块对应资源文件
     * @return 返回获取到的字符串
     * 推荐: getString
     */
    @Deprecated
    public static String getResString(String key, ResourceBundle rb, String... fullStrs) {
        String temp = "";
        try {
            temp = rb.getString(key);
        } catch (MissingResourceException e) {
            temp = getResString(key);
        }
        for (int i = 0; i < fullStrs.length; i++) {
            temp = temp.replace("{" + i + "}", fullStrs[i]);
        }
        return temp;
    }


    /**
     * 读取国际化资源文件 推荐使用 BundleUtil.getString 方法
     *
     * @param key
     *            键值
     * @param fullStrs
     *            需填充的值
     * @return 返回获取到的字符串
     */
    @Deprecated
    public static String getLocalString(String key, String... fullStrs) {
        String temp = getResString(key);
        for(int i = 0; i < fullStrs.length; ++i) {
            temp = temp.replace("{" + i + "}", fullStrs[i]);
        }

        return temp;
    }

    /**
     * 读取国际化资源文件,优先模块对应的资源文件,如果模块资源文件找不到就会优先基础层,对应的控制层代码,可以直接使用this.getResString()方法
     * @param resources 资源文件路径,通常是 每个模块包下*.constant 中Const.RESOURCES
     * @param key 国际化文件key
     * @param params 拼接值
     * @return 国际化字符串
     */
    public static String getString(String resources,String key, String... params) {
        Locale locale = LocaleContextHolder.getLocale();
        String temp = "";
        try {
            temp = ResourceBundle.getBundle(resources, locale).getString(key);
        } catch (MissingResourceException e) {
            LOG.error("不存在资源文件:{}",resources);
            e.printStackTrace();

        }
        //替换占位
        for (int i = 0; i < params.length; i++) {
            temp = temp.replace("{" + i + "}", params[i]);
        }
        return temp;
    }

    /**
     * 读取base包国际化文件,因为base包有通用的基本提示,也经常用到,具体看 net.mingsoft.base.resources.resources
     * @param key 国际化文件key
     * @param params 拼接值
     * @return 国际化字符串
     */
    public static String getBaseString(String key, String... params) {
        Locale locale = LocaleContextHolder.getLocale();
        String temp = "";
        temp = ResourceBundle.getBundle(Const.RESOURCES, locale).getString(key);

        //替换占位
        for (int i = 0; i < params.length; i++) {
            temp = temp.replace("{" + i + "}", params[i]);
        }
        return temp;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy