欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

现有web系统替换成Spring Boot2框架 之14 I18n国际化实现 spring bootmaveni18国际化 

程序员文章站 2022-04-16 11:05:24
...

此步骤是修改自己代码没有公共性

16.1 国际化文件处理

将原来的国际化文件重命名如下,放到/src/resources目录下

16.2 初始化国际化类

最终需要使用MessageSource 实现国际化。将国际化类的加载放到启动加载项中InitializedThreadPool.java 启动系统时将国际化类初始化方便后续使用。

@Autowired

private MessageSource messageSource;

//中英文转换类

I18nBean.getInstance().setMessageSource(messageSource);

16.修改国际化类

1. 增加MessageSource 属性初始化时注入

2. getString()方法改成使用MessageSource 获取值

private static MessageSource messageSource;

 

private I18nBean(){}

 

private static I18nBean i18nBean = null;

 

private static ResourceBundle resourcesBundle_ch = null;

 

private static ResourceBundle resourcesBundle_en = null;

public static I18nBean getInstance(){

 

if(i18nBean == null){

i18nBean = new I18nBean();

}

 

return i18nBean;

}

 

 public static void setMessageSource(MessageSource ms) {

messageSource = ms;

}

 

public static String getI18NStringByKey(String key, HttpServletRequest request) {

 return messageSource.getMessage(key, null, getLocale());

    }

 

 /**

  * 供页面中英文转换使用

  * @param request

  * @return

  */

 public static ResourceBundle getResourceBundle(HttpServletRequest request) {

 public static MessageSource getMessageSource() {

return messageSource;

 }

 public static Locale getLocale() {

return LocaleContextHolder.getLocale();

 }

 public static String getString(String code) {

 return messageSource.getMessage(code, null, getLocale());

 }

16.4 统一修改jsp国际化使用的方法

taglibs.jsp修改:

<%

I18nBean rb = I18nBean.getInstance();

%>

 

以上步骤完成之后jsp页面通过rb.getString();就可以获取国际化数据,就不需要每个jsp页面都修改了