标签搜索

目 录CONTENT

文章目录

SpringBoot国际化子模块搭建

陈铭
2023-08-30 / 0 评论 / 0 点赞 / 57 阅读 / 375 字 / 正在检测是否收录...

子模块搭建

pom

为了编码下面的配置类用到

    <dependencies>
        <!-- Spring WebMVC -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

配置类

用于添加get请求的query拦截器,不启动配置类,默认走header拦截

package com.ruijie.cloud.llm.mp.common.i18n.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.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;

import java.util.Locale;

/**
 * 开启配置则所有的国际化将在url的query上控制
 * 如:http://127.0.0.1:8081/llm-mp/api/dna/test4?lang=en-US
 *
 * 反之,则在请求头上控制
 * 如:Accept-Language: en-US
 */
//@Configuration
public class I18nConfig implements WebMvcConfigurer {

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        // 默认语言
        slr.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
        return slr;
    }

    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
        // 参数名
        lci.setParamName("lang");
        return lci;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }
}

国际化文件

选择bundle资源
image-1693380372065
image-1693380391637
配置好文本
image-1693380455617

使用子模块

pom中,引入上述子模块。
可以直接用Spring提供的MessageSource直接读取文本。也可以用MessageUtils,他是若依提供的工具类(内部用的也是MessageSource),

@RequiredArgsConstructor
@RestController
public class TestController {

    private final MessageSource messageSource;

    @RepeatSubmit(message = "fansua",interval = 2000)
    @RequiresRoles("admin")
    @GetMapping("test4")
    public String login4() {
        // MessageUtils是若依提供的工具类
        String success = MessageUtils.message("success", null);
        return messageSource.getMessage("success", null, LocaleContextHolder.getLocale());
    }
}
0

评论区