很多项目都会需要处理国际化的问题,所以整理了以下三种情况国际化的处理方式(这里列举的是没有前后端分离的情况,如果项vue等框架可以查看相关国际化处理方式)。
第一种:js
目前主流的都是使用jQuery.i18n.properties,jQuery.i18n.properties是一款轻量级的jQuery国际化插件,能实现Web[网页](https://www.weishangxiangce.com/)前端的国际化。
/**
*
-
@className: ResourceBundleUtils
-
@classDescription:国际化资源文件获取
-
@author shiqiang.li
-
@create_date: 2019年6月17日 下午6:35:42
-
@update_date:
*/
public class ResourceBundleUtils {
private static Logger logger = LoggerFactory.getLogger(ResourceBundleUtils.class);/**
-
根据key获取国际化文件对应的value,如果不存在对应的key,返回key值
-
@param key
-
@return
*/
public static String getResourceBundleString(String key, Locale locale) {
String retrunStr = null;
if (StringUtils.isBlank(key)) {
logger.warn(“ResourceBundleUtils getResourceBundleDString key is null”);
return retrunStr;
}key = ResourceKeyConstant.REOURCE_HEAD.concat(ResourceKeyConstant.REOURCE_DOT).concat(key);
ResourceBundle resourceBundle = buildResourceBundle(locale);
try {
// 存在对应key就获取返回,没有则返回key
if (resourceBundle.containsKey(key)) {
retrunStr = resourceBundle.getString(key);
}
} catch (Exception e) {
logger.error(“ResourceBundleUtils getResourceBundleDString throw e:{}”, e);
}return retrunStr;
}
/**
-
根据key获取国际化文件对应的value,如果不存在对应的key
-
@param resourceBundle
-
@param key
-
@return
*/
public static String getResourceBundleString(ResourceBundle resourceBundle, String key) {
String retrunStr = null;
if (StringUtils.isBlank(key)) {
logger.warn(“ResourceBundleUtils getResourceBundleDString key is null”);
return retrunStr;
}if (resourceBundle == null) {
logger.warn(“ResourceBundle is null”);
return retrunStr;
}key = ResourceKeyConstant.REOURCE_HEAD.concat(ResourceKeyConstant.REOURCE_DOT).concat(key);
try {
// 存在对应key就获取返回,没有则返回key
if (resourceBundle.containsKey(key)) {
retrunStr = resourceBundle.getString(key);
// retrunStr = new String(resourceBundle.getString(key).getBytes(“ISO-8859-1”),
// “UTF8”);
}
} catch (Exception e) {
logger.error(“ResourceBundleUtils getResourceBundleDString throw e:{}”, e);
}return retrunStr;
}
/**
-
构建国际化对象
-
@return
*/
public static ResourceBundle buildResourceBundle(Locale locale) {
// 根据语言类型,进行国际化处理
ResourceBundle resourceBundle = null;
try {
if (locale != null) {
resourceBundle = ResourceBundle.getBundle(ResourceKeyConstant.REOURCE_FILE_NAME, locale);
} else {
resourceBundle = ResourceBundle.getBundle(ResourceKeyConstant.REOURCE_FILE_NAME,
new Locale(“en”, “US”));
}
} catch (MissingResourceException m) {
logger.error(“get resourceBundle is error–>{}”, m.getMessage(), m);
}return resourceBundle;
-