content: package com.xxl.job.admin.core.util;
  
  import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  import org.springframework.core.io.ClassPathResource;
  import org.springframework.core.io.Resource;
  import org.springframework.core.io.support.EncodedResource;
  import org.springframework.core.io.support.PropertiesLoaderUtils;
  
  import java.io.IOException;
  import java.text.MessageFormat;
  import java.util.HashMap;
  import java.util.Map;
  import java.util.Properties;
  
  /**
   * i18n util
   *
   * @author xuxueli 2018-01-17 20:39:06
   */
  public class I18nUtil {
  
  	private static Logger logger = LoggerFactory.getLogger(I18nUtil.class);
  
  	private static Properties prop = null;
  
  	public static Properties loadI18nProp() {
  		if (prop != null) {
  			return prop;
  		}
  		try {
  			// build i18n prop
  			String i18n = XxlJobAdminConfig.getAdminConfig().getI18n();
  			String i18nFile = MessageFormat.format("i18n/message_{0}.properties", i18n);
  
  			// load prop
  			Resource resource = new ClassPathResource(i18nFile);
  			EncodedResource encodedResource = new EncodedResource(resource, "UTF-8");
  			prop = PropertiesLoaderUtils.loadProperties(encodedResource);
  		}
  		catch (IOException e) {
  			logger.error(e.getMessage(), e);
  		}
  		return prop;
  	}
  
  	/**
  	 * get val of i18n key
  	 * @param key
  	 * @return
  	 */
  	public static String getString(String key) {
  		return loadI18nProp().getProperty(key);
  	}
  
  	/**
  	 * get mult val of i18n mult key, as json
  	 * @param keys
  	 * @return
  	 */
  	public static String getMultString(String... keys) {
  		Map<String, String> map = new HashMap<String, String>();
  
  		Properties prop = loadI18nProp();
  		if (keys != null && keys.length > 0) {
  			for (String key : keys) {
  				map.put(key, prop.getProperty(key));
  			}
  		}
  		else {
  			for (String key : prop.stringPropertyNames()) {
  				map.put(key, prop.getProperty(key));
  			}
  		}
  
  		String json = JacksonUtil.writeValueAsString(map);
  		return json;
  	}
  
  }
  