一、根据浏览器语言环境实现页面国际化
1、新建国际化文件
Resource文件夹下新建文件夹i18n(internationalization)然后新建一个messages.properties文件,再新建一个messages_zh_US.properties文件(messages任意命名),此时idea会自动识别并帮我们新建一个Resource Bundle ‘messages’文件夹,我们新建的文件也会自动放进去。
通过图中所示步骤,新建另一个messages_en_US.properties文件。此时一共新建3个文件。
messages.properties(默认),messages_zh_US.properties(中文),messages_en_US.properties(英文)
随意点击三者其一,然后文件左下角点击resource bundle,点击图中+,添加key(做唯一标识,页面中引用),右面是三个文件对应的value,分别是默认,英文,中文。
2、页面部分
首先从maven的引用库中找到spring.ftl文件放进static文件夹下,在页面中通过freemarker标签引入。通过自定义标签<@spring.message code = “key”>调用,key就是我们新建的国际化文件中的key。
- 测试
采用chrome浏览器测试,首先从设置中查看语言环境,中文,打开页面:
然后将英语环境置顶,
二、通过按钮点击,手动实现国际化
1、页面添加如下代码,中英文切换
2、新建区域解析器MyLocaleReslover implements LocaleResolver,添加到容器中。
public class MyLocaleReslover implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest httpServletRequest) {
String localeStr = httpServletRequest.getParameter("locale");
// Locale locale = Locale.getDefault();//获取默认语言环境
Locale locale = httpServletRequest.getLocale();//获取请求客户端的语言环境
if (localeStr != null && !StringUtils.isEmpty(localeStr)) {
String[] split = localeStr.split("_");
locale = new Locale(split[0], split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}
@Configuration
public class MyWebAppConfiguration implements WebMvcConfigurer {
@Bean
public LocaleResolver localeResolver() {
return new MyLocaleReslover();
}
}
3、测试