1.springboot~@ConditionalOnMissingBean一切为了可扩展性2.springboot~security中自定义forbidden和unauthorized返回值3.springboot~静态文件映射4.springboot~将一个Integer类型序列为k/v对象5.springboot~jackson和redis日期序列化6.springboot~mybatis-plus枚举到数据库整型字段7.springboot~用正则表达式提取bearer token8.springboot~maven进行docker打包与推送9.springboot~关于打包时记录当前git信息10.springboot~@valid返回第一个错误消息11.springboot~加快tomcat启动securerandom.source12.springboot~starter包的制作13.springboot~MyBatisPlus中使用@TableField完成字段自动填充14.springboot~没有启动类项目的单元测试15.springboot~WebMvcConfigurer详解16.springboot~openfeign开启熔断之后MDC为null的解决17.springboot~openfeign开启熔断之后MDC为null的理解18.springboot~logback按level添加不同的颜色19.BeanFactory的总结20.springboot~写一个从excel读取json到List21.springboot~redis-cluster动态感应的配置22.springboot~对mybatis的start包进行单元测试23.springcloud~nacos通过@refreshScope进行配置热更新24.springboot~RedisTemplate三种序列化方式25.springboot~Cache注解缓存在代码中的获取26.springboot~ApplicationContextAware与@Autowired注解27.springboot~Screw生成数据库文档28.starter包~mica-auto自动生成spring.factories等元文件29.springboot~elasticsearch对nested集合类型的字段进行不等于的检索30.springboot~手动加载thymeleaf模版31.springboot~SSE做消息推送32. SimpleDateFormat和DateTimeFormatter33.github~通过packages功能实现maven仓库托管34.springboot~关于md5签名引发的问题35.springboot~ConditionalOnProperty注解的使用36.spi~在插件开发过程中的使用
37.springboot~国际化Locale正确的姿势
38.springboot~sharding-jdbc实现分库分表39.springboot~mybatis-plus的DynamicTableNameInnerInterceptor实现分表40.springboot~统一处理日期请求参数java.utils.Date和java.time.LocalDate41.java~如何使用无符号整型42.springboot~jgroups实现节点间的通讯Java中的Locale.getDefault()获取的是操作系统的默认区域设置,如果需要获取客户端浏览器的区域设置,可以从HTTP头中获取"Accept-Language"的值来进行解析。
使用说明
Java网站中实现国际化(多语言支持)通常需要涉及以下几个方面:
-
为所有可见的文本(如按钮、标签、提示等)都提供多语言的支持,遵循国际化的标准,建议使用标准的属性文件进行配置。
-
根据用户请求或浏览器设置来选择合适的Locale,以便在数据保存和显示时使用相应的语言和地区格式。最常用的方法是使用Java的Locale类来获取、设置当前的Locale,可以通过调用Locale类的getAvailableLocales()方法获取支持的区域列表,也可以根据用户的请求或浏览器的设置来检测用户当前所使用的Locale。
-
针对国际化后的日期、时间、数字等数据类型进行格式化处理,以便在不同的语言、地区环境下使数据显示更加友好和易读。可以使用Java的SimpleDateFormat类等进行处理。
正确的姿势
在Java Web应用中使用MessageSource对象实现国际化功能时,可以通过以下步骤使用浏览器语言动态设置Locale区域。
- 国际化文件在resources/i18n目录,文件名是message_{语言}.properties
- 通过MessageSource对象进行国际化配置信息的管理
- 配置类
@Configuration
public class LocalMessageConfig {
/**
* 系统国际化文件配置
* @return MessageSource
*/
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:i18n/message");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
}
- 静态工具类
/**
* 国际化消息配置 LocalMessageConfig中配置了resources/i18n/messages_zh_CN.properties.
* 通过 LocaleContextHolder.getLocale()获取客户端浏览器的语言环境,就是请求头中的Accept-Language的值,再根据它进行国际化消息的获取。
*
* @UtilityClass所有的方法和属性都会被加上static关键字,并且该类会创建一个私有的空参构造器
*/
@UtilityClass
public class LocaleMessageUtils {
/**
* 通过code 获取错误信息
* @param code
* @return
*/
public String getMessage(String code) {
return getMessage(code, null);
}
/**
* 通过code 和参数获取错误信息
* @param code
* @return
*/
public String getMessage(String code, Object... objects) {
MessageSource messageSource = SpringContextUtils.getBean("messageSource");
Locale locale = LocaleContextHolder.getLocale();
return messageSource.getMessage(code, null,locale);
}
}
- 配置文件有中文和英文两个版本
# message_en_US.properties
title=System
# message_zh_CN.properties
title=\u7cfb\u7edf # 中文咱们使用unicode编码
- 在前台控制器中获取配置信息
@GetMapping("get-title")
public ResponseEntity title() {
return ResponseEntity.ok(
LocaleMessageUtils.getMessage("title")
);
}
- 通过切换浏览器的语言,来实现中文和英文的输出




通过这个国际化,我们可以更优雅的实现多语言的系统设计了,不硬编码在程序里是程序员永远追求的方向!