springboot MessageSource语言国际化
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import java.util.Locale;
@Configuration
public class MessageSourceConfig {
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages");
messageSource.setUseCodeAsDefaultMessage(true);
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Autowired
private MessageSource messageSource;
public String getMessage(String key) {
return messageSource.getMessage(key, null, LocaleContextHolder.getLocale());
}
}
这段代码定义了一个配置类MessageSourceConfig
,其中创建了一个MessageSource
bean,并设置了资源文件的基础名(例如messages
),这些资源文件应放置在类路径下,并且可以是.properties或.yml格式。messageSource.setUseCodeAsDefaultMessage(true)
表示如果找不到消息,则使用消息键作为默认消息。messageSource.setDefaultEncoding("UTF-8")
确保了字符编码为UTF-8,以支持国际化消息的正确显示。getMessage
方法用于根据当前的Locale获取国际化消息。
评论已关闭