springboot国际化Controller
时间: 2023-10-14 12:29:50 浏览: 144
springboot国际化
在Spring Boot中,可以使用Spring框架内置的国际化支持来实现控制器(Controller)的国际化。
首先,在application.properties或application.yml中配置国际化相关的属性,如下:
application.yml
```
spring:
messages:
basename: i18n/messages
fallback-to-system-locale: true
```
其中,basename指定了国际化资源文件的位置和名称,这里的i18n/messages表示在src/main/resources目录下的i18n子目录中,使用messages.properties和messages_XX.properties文件来存储不同语言的翻译内容。fallback-to-system-locale设置为true表示如果没有匹配的语言资源,则使用系统默认语言。
接着,在控制器(Controller)中注入MessageSource对象,并在方法中使用该对象获取对应的国际化消息,如下:
```java
@RestController
public class UserController {
@Autowired
private MessageSource messageSource;
@GetMapping("/hello")
public String hello(@RequestParam(required = false, defaultValue = "en") String lang) {
Locale locale = LocaleContextHolder.getLocale();
if ("zh".equals(lang)) {
locale = Locale.CHINESE;
}
String message = messageSource.getMessage("hello.world", null, locale);
return message;
}
}
```
在上述代码中,我们通过LocaleContextHolder获取当前的Locale对象,然后根据请求参数lang的值来判断是否需要切换为中文Locale对象。接着,使用MessageSource的getMessage方法获取对应的国际化消息。其中,第一个参数是消息的key,第二个参数是替换占位符的值,第三个参数是Locale对象。
最后,我们可以在messages.properties和messages_zh.properties文件中定义不同语言的翻译内容,如下:
messages.properties
```
hello.world=Hello, World!
```
messages_zh.properties
```
hello.world=你好,世界!
```
这样,在访问/hello接口时,根据不同的lang参数值,我们可以得到不同的国际化消息。
阅读全文