快速使用Thymeleaf实现国际化

快速使用Thymeleaf实现国际化,第1张

目录

什么是国际化?

1.创建一个springboot工程

2.创建存放文字的文件

3.编辑文件

4.编写页面代码

5.实现中英文的切换


什么是国际化?

        国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。

1.创建一个springboot工程

加入依赖

        
        
            org.thymeleaf
            thymeleaf-spring5
        
        
            org.thymeleaf.extras
            thymeleaf-extras-java8time
        

创建完成后打开设置

确保图片中的都是UTF-8

2.创建存放文字的文件

在resources文件夹下创建i18n的包,然后在i18n的包下创建login.propertis与login_zh_CN.properties文件(代表中文的意思),在创建login_zh_CN.properties文件时会发现他们合并成了一个文件:Resources Bundle 'login'。

Resources Bundle 'login'可以右键创建文件。

 接着在创建一个en_US文件,他会自动识别为英语。

 

3.编辑文件

文件打开后,点击左下角有的可视化编辑。

 右键login点击New Property

 添加login.tip

 然后如图所示进行补充

 然后在多添加几条。

 文本模式如下:

4.编写页面代码

在 application.properties中添加如下代码:

# 文件的真实位置
spring.messages.basename=i18n.login

然后在templates文件夹下面创建index.html文件,代码如下:




    
    登录界面



    
Please Sign in




中文   English

运行后输入地址:http://localhost:8080/

 

可以看到显示的文字是英文的。

然后改造成如下代码:



    
    
    登录界面



    
Please Sign in




中文   English

运行后界面:

 发现英文变成了中文。

5.实现中英文的切换

在创建config文件夹--->创建MyLocalResolver代码如下:

package com.li.config;

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 request) {
        //获取请求参数
        String lang = request.getParameter("l");
        Locale locale = Locale.getDefault();//如果没有就用默认的
        //如果请求链接携带了国际化的参数
        if (!StringUtils.isEmpty(lang)){
            //zh_CN
            String[] split = lang.split("_");
            //国家,地区
            locale= new Locale(split[0], split[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {

    }
}

MyLocalResolver类创建好后需要将他放到spring中,在config中创建MyConfig类

代码如下:

package com.li.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MyConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
        registry.addViewController("/index.html").setViewName("index");
    }

    //自定义国际化主键就生效了
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocalResolver();
    }
}

然后运行,此时点击a标签就可以实现中英文的切换了。

 

总结:

        国际化可以切换文字,在创建properties文件的时候需要注意命名,Thymeleaf中#{}可以获取文件中的值,@{}里面放的是路径,@{index.html(l='zh_CN')}其中括号里面的是传递的参数,要想传递多个参数就在后面加上逗号即可,例如:@{index.html(l='zh_CN',username=${username},password='123456')}。

编写MyConfig类时配置视图解析器,addViewControllers()不然路径错误无法访问。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/731297.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存