SpringBoot专栏_web:如何快速配置i18n国际化,图文结合附带源码下载(第六讲)

版权声明:更多信息请关注 wwws.shinians.com 官网 https://blog.csdn.net/zzhuan_1/article/details/85209945

                                             

在之前开发当中配置国际化是比较繁琐的,下面我们看下SpringBoot如何快速的配置国际化,以及国际化又哪些用途、配置当中我们遇到了哪些"坑",遇到问题大家可以留言,会为大家一一解答。

国际化配置要点:

1)、编写国际化配置文件;

2)、使用ResourceBundleMessageSource管理国际化资源文件

3)、在页面使用fmt:message取出国际化内容(前端使用的是Thymeleaf)

(备注)可以自定义配置通过重写LocaleResolver实现切换效果

详细步骤

1.创建配置文件,其中包含中文、英文、默认等,然后在右侧写上相关配置即可(有以下几点需要注意)

此步骤注意点:

红线部分   1)现在的创建的配置文件放在了i18n目录下,自然目录可以更改 。

红线部分 2)写配置文件的时候中文如果不是utf-8编码,此时页面是会乱码的(下面会给出解决方案).

 红线部分 3)点击Resource Bundle可快速添加我们要添加的配置项目

点击+号,然后在右侧输入信息即可

更改成Utf-8编码:File->Settings最下侧改成utf-8即可

更改整个项目的编码:如下图 File->other settings->default settings 更改下面编码即可

2.application.properties需要配置下i18n的路径位置,如下

spring.messages.basename=i18n.login

3.其实这样就可以用了,在页面上获取即可;部分代码如下

#非标签内写法
 <div class="message">[[#{app.name}]]</div>

#th:placeholder 取出
 <input name="account" th:placeholder="#{login.username}" value="datacenter" type="text" lay-verify="required" class="layui-input" >

#th:value取出
 <input class="loginin" th:value="#{login.btn}" value="登录" lay-submit lay-filter="login" style="width:100%;" type="submit">

更改浏览器语言:显示效果如下(chrome 在高级设置中切换不同的语言显示也不同)

重点:如何手动切换语言呢

共2步骤:1.编写类实现LocaleResolver   2.Bean注入

package com.limp.framework.boss.component;

import org.springframework.lang.Nullable;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;

/**
 * @intro :
 * @auth : shinians
 * @time : 2018/12/22 15:36
 * @website: www.shinians.com
 */
public class MyLocaleResolver implements LocaleResolver {
    /**
     * 编写相应的逻辑 l参数区分,
     * l='zh_CN'
      l='en_US'
     * @param request
     * @return
     */
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        String l = request.getParameter("l");
        Locale locale = Locale.getDefault();
        if(!StringUtils.isEmpty(l)){
            String[] split = l.split("_");
            locale = new Locale(split[0],split[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest httpServletRequest, @Nullable HttpServletResponse httpServletResponse, @Nullable Locale locale) {

    }
}

2.

现在就可以传递不同l参数进行切换语言了

IP:端口/system/nav/login?l=en_US

IP:端口/system/nav/login?l=zh_CN 

猜你喜欢

转载自blog.csdn.net/zzhuan_1/article/details/85209945