子模块搭建
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资源
配置好文本
使用子模块
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());
}
}
评论区