SpringBoot实现国际化

举报
多米诺的古牌 发表于 2021/07/03 14:51:11 2021/07/03
【摘要】 1.SpringBoot框架实现国际化国际化,一般用i18n表示,他是源于英文单词 internationalization的首末字符i和n,中间一共18个字母,为了简写所以命名为i18n这个简称。一般应用在首页,登录页等地方,用于页面切换中文、英文或者其他语言,本文主要以登录页为例。1.1 实现国际化的操作步骤主要有如下1.1.1 首先需要保证IDE中的编码格式为utf-8,否则可能会出现...

1.SpringBoot框架实现国际化

国际化,一般用i18n表示,他是源于英文单词 internationalization的首末字符i和n,中间一共18个字母,为了简写所以命名为i18n这个简称一般应用在首页,登录页等地方,用于页面切换中文、英文或者其他语言,本文主要以登录页为例。

1.1 实现国际化的操作步骤主要有如下

1.1.1 首先需要保证IDE中的编码格式为utf-8,否则可能会出现中文乱码情况。下面以IDEA为例:

1.1.2 创建i18n文件夹,并在下面创建需要国际化的配置文件。例如:login.properties文件

1.1.3 添加需要切换的国际化配置文件,例如添加:中文配置文件 login_zh_CN.properties,英文配置文件 login_en_US.properties,此时IDEA会自动合并为一个国际化文件夹Resource Bundle ‘login’

1.1.4 此时添加别的语言的配置文件,可以继续像上面手动添加配置,也可以通过右键Resource Bundle ‘login’文件夹New==》Add进行配置

1.1.5 在Resource Bundle中进行键值对配置,可以配置默认情况、中文情况、英文情况对应的输出情况。

1.1.6 在配置文件application.yml中配置需要扫描的国际化配置文件真实路径,例如:spring.messages.basename=i18n.login

1.1.7 在需要国际化转换的页面进行配置,比如在登录页以thymeleaf为例:th:text="#{login.tip}",将国际化文件中的自己定义的键对应的添加到页面表单中。

1.1.8 自定义配置国际化切换

1.1.8.1 首先需要创建一个类并且实现implements LocaleResolver接口

1.1.8.2 接着重写public Locale resolveLocale(HttpServletRequest httpServletRequest) {...}方法,通过获取请求中自定义的一个参数的值,进行判断,如果没有获取到则使用默认的配置,如果获取到值则进行判断,并返回结果。

@Override
public Locale resolveLocale(HttpServletRequest httpServletRequest) {
    String language = httpServletRequest.getParameter("传过来的参数");//获取请求中参数是传过来的参数的值
    Locale locale = Locale.getDefault();//获取默认的在没有设置时使用
    if(!StringUtils.isEmpty(language)){
        String[] split = language.split("_");
        locale = new Locale(split[0],split[1]);
    }
    return locale;
    //最后需要在自定义的配置类中注入bean
}

1.1.8.3 最后将配置好的切换控件通过到SpirngMvc扩展配置类注入到spring的bean中,就可以完成国际化的配置。

此时便完成了国际化配置,并且可以通过自定义的国际化切换组件,在页面进行个性化的切换操作。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。