Springboot+freemarker 实现页面国际化

一、根据浏览器语言环境实现页面国际化

1、新建国际化文件

Resource文件夹下新建文件夹i18n(internationalization)然后新建一个messages.properties文件,再新建一个messages_zh_US.properties文件(messages任意命名),此时idea会自动识别并帮我们新建一个Resource Bundle ‘messages’文件夹,我们新建的文件也会自动放进去。

Springboot+freemarker 实现页面国际化_第1张图片

通过图中所示步骤,新建另一个messages_en_US.properties文件。此时一共新建3个文件。

 messages.properties(默认),messages_zh_US.properties(中文),messages_en_US.properties(英文)

随意点击三者其一,然后文件左下角点击resource bundle,点击图中+,添加key(做唯一标识,页面中引用),右面是三个文件对应的value,分别是默认,英文,中文。

Springboot+freemarker 实现页面国际化_第2张图片

 

2、页面部分

首先从maven的引用库中找到spring.ftl文件放进static文件夹下,在页面中通过freemarker标签引入。通过自定义标签<@spring.message code = “key”>调用,key就是我们新建的国际化文件中的key。

Springboot+freemarker 实现页面国际化_第3张图片

Springboot+freemarker 实现页面国际化_第4张图片

 

 

  1. 测试

采用chrome浏览器测试,首先从设置中查看语言环境,中文,打开页面:

Springboot+freemarker 实现页面国际化_第5张图片

然后将英语环境置顶,

Springboot+freemarker 实现页面国际化_第6张图片

Springboot+freemarker 实现页面国际化_第7张图片

 

二、通过按钮点击,手动实现国际化

1、页面添加如下代码,中英文切换

Springboot+freemarker 实现页面国际化_第8张图片

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、测试

Springboot+freemarker 实现页面国际化_第9张图片

Springboot+freemarker 实现页面国际化_第10张图片

 

你可能感兴趣的:(springboot)