SpringMVC+Freemarker+jQuery实现多语言(国际化)切换

一、spring启动配置文件修改

其中message/messages指定的properties资源文件名,

文件在src/main/resources根目录的message文件夹下

      
    
        
	    
	        message/messages
	    
	
    
	
     
    
    
     
    
     

二、添加依赖文件

如果是使用eclipse开发环境的

找到maven包spring-webmvc-4.2.6.RELEASE.jar路径下的spring.ftl文件

SpringMVC+Freemarker+jQuery实现多语言(国际化)切换_第1张图片

如果是使用IDEA开发环境的

找到Maven:org.springframework:spring-webmvc:4.2.6.RELEASE下面的spring.ftl文件

SpringMVC+Freemarker+jQuery实现多语言(国际化)切换_第2张图片

把该文件拷贝放在页面的文件根目录下

SpringMVC+Freemarker+jQuery实现多语言(国际化)切换_第3张图片

三、添加资源文件

添加资源文件messages.properties, messages_en_US.properties, messages_zh_CN.properties,
如需要支持多种国际化语言,只需添加对应的资源文件,
messages.properties配置文件作用是当找不到其他有关带有messages的文件时默认读取这个配置文件的信息

注意路径和上面配置的一致,在classpath的src/main/resources根目录的message文件夹下:

其中Resource Bundle 'messages'是IDEA自动生成的,不用理会,知道三个文件都在message目录下就可以

SpringMVC+Freemarker+jQuery实现多语言(国际化)切换_第4张图片

SpringMVC+Freemarker+jQuery实现多语言(国际化)切换_第5张图片

Messages.properties配置文件作用是当找不到其他有关带有messages的文件时默认读取这个配置文件的信息

SpringMVC+Freemarker+jQuery实现多语言(国际化)切换_第6张图片

messages_en_US.properties是英文的配置文件

SpringMVC+Freemarker+jQuery实现多语言(国际化)切换_第7张图片

messages_zh_CN.properties为中文的配置文件,字符串需为ASCII编码

中文与英文的配置文件当中的键位必须一致,切换时才能读取到该键位信息,如果配置当中没有该键位名称,而页面上却填写了,进入该页面上时会报错显示不了

配置文件中的键位名称可以根据自己项目的需求去定

四、数据库菜单列表修改

由于菜单列表是从数据库表当中获取数据显示,所以数据库当中添加了一张英文菜单列表,一张中文菜单列表

SpringMVC+Freemarker+jQuery实现多语言(国际化)切换_第8张图片

SpringMVC+Freemarker+jQuery实现多语言(国际化)切换_第9张图片

 

当前端页面切换语言的时候,后端把查询语句修改成获取对应的菜单就行了

五、后端代码修改

在获取语言菜单进行重定向进入主页面时,获取的是什么语言的菜单列表,Locale的值就设置什么样的语言

前两句代码是Locale设置语言,Locale locale = new Locale("en", "US")该代码设置为英文

      Locale locale = new Locale("en", "US");
      request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, locale);
      response.sendRedirect("/index/home");

 

在controller控制层注入MessageSource类,该类实现国际化i18n,找到对应的资源文件

 

    @Autowired
    private MessageSource messageSource;

SpringMVC+Freemarker+jQuery实现多语言(国际化)切换_第10张图片

String userManagement = messageSource.getMessage("user.userManagement", null, locale);

其中像user.userManagement这些为资源文件中的键位

六、前端页面

可以在web页面的头部.ftl文件中引入spring.ftl文件,这个根据自己的项目去操作,页面布局一般头部为所有页面共用部分

<#import "spring.ftl" as spring/>

写上js代码切换时使用ajax请求发送到后端进行切换配置文件和调用不同的数据库菜单表

 

页面上需要切换显示中英文的地方改成配置文件中的键位,例如以下写法:

 

<@spring.message "language"/>

如页面上的标签内的姓名,原写法:

全部修改为:

user.userName是资源文件中的键位,每个键位必须唯一

中文配置文件与英文配置文件的键位必须一致

 

你可能感兴趣的:(JAVA)