美文网首页java后台
SpringBoot系列—国际化(八)

SpringBoot系列—国际化(八)

作者: 海晨忆 | 来源:发表于2019-09-26 14:14 被阅读0次

    个人博客:haichenyi.com。感谢关注

      所谓的国际化就是语言切换。中文切换到其他语种。

      国际化的信息,这些都是需要开发人员在配置类中配置好的。SpringBoot会自动加载这些配置类。

    举个栗子:以登录界面为例,我们的登录界面输入账号、密码框的左边,会有这两个提示,我们就自动修改这两个提示。

    创建配置文件

      首先,你要在你的resources目录下面新建i18n目录,当然,不是必须的,可以不创建,直接创建文件。之所以创建这个目录,只是便于管理。

      然后,在i18n目录下面创建配置文件,操作如下:

    创建配置文件1.png

      在i18n的目录下面,新建一个Resources Bundle类型的文件,名字叫login

    创建配置文件2.png 创建配置文件3.png

      点击+号,创建中文,英文两种语言的配置文件。中文叫 zh_CN,英文叫 en_US,这两种类型是写死的。

    创建配置文件4.png 创建配置文件5.png 创建配置文件6.png

      根据如上操作,分别创建key为login.username,login.password,并且分别创建好对应的内容。这个key,页面会用到。

    PS:不要忘记了,在全局配置文件中配置好,spring.messages.basename=i18n.login,这里现在是只有一个登陆页面需要国际化,如果有多个页面需要,比方说注册页面,就在后面添加。如:spring.messages.basename=i18n.login,i19n.register这样的方式,中间用逗号隔开即可。

    修改页面显示内容

      按照上面的步骤,创建好了之后,在你页面需要国际化的view,分别按如下的方式获取值:

    <!--th:text="#{上面命名的key}"-->
    <div class="inputbox">
                    <label for="user" th:text="#{login.username}">Username</label>
                    <input id="user" type="text" name="username" required/>
                </div>
                <div class="inputbox">
                    <label for="mima" th:text="#{login.password}">Password</label>
                    <input id="mima" type="password" name="password" required/>
                </div>
    

    自定义区域解析器

      区域解析器LocaleResolver,按如下的方式实现即可。

    package com.haichenyi.springbootbill.component;
    
    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;
    
    /**
     * 自定义区域解析器
     */
    public class MyLocalResolver implements LocaleResolver {
        @Override
        public Locale resolveLocale(HttpServletRequest httpServletRequest) {
            String l = httpServletRequest.getParameter("l");
            Locale locale = Locale.getDefault();
            if (!StringUtils.isEmpty(l)) {
                String[] s = l.split("_");
                locale = new Locale(s[0], s[1]);
            }
            return locale;
        }
    
        @Override
        public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
    
        }
    }
    
    

      最后,在你对应的超链接的地方传 zh_CNen_US 即可实现。

    相关文章

      网友评论

        本文标题:SpringBoot系列—国际化(八)

        本文链接:https://www.haomeiwen.com/subject/ajmqyctx.html