i18n 国际化基础组件
盘古国际化基础组件主要功能包含时区切换、语言切换、后端词条获取等
功能列表
- 时区切换变更时,用户服务接口返回数据的时间数值根据时区名称的变化而改变;
- 语言切换变更时,用户服务接口返回数据的时间格式根据语言种类的变化而改变;
- 盘古提供后端词条获取的公共方法,用户可按需使用
注意:支持自动化转换的日期类型:Date、LocalDateTime
快速上手
1.在工程pom.xml
中添加依赖
html
<!-- 盘古核心模块 -->
<dependency>
<groupId>com.hisense.pangea</groupId>
<artifactId>pangea-common-core</artifactId>
<version>${pangea.version}</version>
</dependency>
<!-- 盘古多语言支持模块 -->
<dependency>
<groupId>com.hisense.pangea</groupId>
<artifactId>pangea-common-i18n</artifactId>
<version>${pangea.version}</version>
</dependency>
2.配置环境变量
配置项
- store-time-zone:代表业务微服务的容器上下文时区以及数据库数据存储所使用时区,如有一个服务已做配置,其他服务均需配置;如未配置,则系统默认采用UTC时区 yml配置如下:
pangea:
international:
store-time-zone=UTC
以下配置项无需配置(仅做调试使用)
- ignore-formats:忽略日期格式,配置后所匹配格式的日期不会进行时区转换
- data-format:添加该配置后,当前服务的所有接口关于Date、LocalDateTime类型数据的序列化均使用该日期格式 yml配置如下:
pangea:
international:
ignore-formats=yyyyMMdd
data-format=yyyy-MM-dd
注意
- 如业务服务未做任何配置,默认采用世界时作为业务数据存储时区
- 如有疑问,请联系盘古团队
3.时区切换、语言切换使用示例
- 定义实体类
js
@Data
@TableName("product_test")
public class ProductTest extends BaseEntity {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String sku;
private Double price;
private Integer stock;
private Date publishDate;
private LocalDateTime otherDate;
}
- 在
Controller
中定义接口,接口返回实体列表
js
@RestController
@RequestMapping("product")
public TestController extends BaseController{
@Autowired
private ProductService productService;
@GetMapping("getProductList")
public List<ProductTest> getProductList(){
return productService.getProductList();
}
}
- 添加yml配置
pangea:
international:
store-time-zone=UTC
date-format=yyyy/MM/dd
- 接口调用,请求头配置如下:
time_zone:Europe/Paris
- 返回结果
返回字段publishDate、otherDate的值代表巴黎时区对应的时间值
[
{
"sku":"KT-001",
"price":1600.00,
"stock":100,
"publishDate":"2025/05/06 12:00:00"
"otherDate":"2025/05/06 12:00:00"
}
]
4.后端词条使用示例
- 录入后端词条
(1)在词条管理界面新增后端词条
进入开发平台-->右上角切换到业务系统-->进入《应用开发》-->多语言-->词条管理-->点击新增
(2)在词条管理界面导入后端词条
导入方式:进入开发平台-->右上角切换到业务系统-->进入《应用开发》-->多语言-->词条管理-->点击导入按钮-→点击下载模板
模版填写:
- languageKey:格式为intl_backend_+32位UUID,格式样例:intl_backend_903b4eba-a7ab-4175-9e8f-ad27477e62f1
- 类型统一为backend
- 填写后端提示语及翻译后的文案
- UUID在线生成:https://www.lddgo.net/string/uuid
文案导入:
- 模板填写完成后,将文档拖入导入页面,选择策略-“覆盖数据”,点击页面的确定按钮,执行导入
- 在后端代码中获取
按模板填写的languageKey,找到对应需国际化的的提示语位置,在代码中用以下代码覆盖,示例:
方法定义 类:I18nCommonUtils,方法:getLangValueByKey(String languageKey,String message);
方法使用 I18nCommonUtils.getLangValueByKey("intl_backend_fa92ae7a-2cba-487b-9be8-856c73288a83","该页面组下存在页面,请先移出");
在代码中使用截图
兼容盘古2,盘古2代码使用示例
国际化翻译工具类——MessageSourceUtils
MessageSourceUtils 在
pangea-common-i18n
中的com.hisense.pangea.utils.MessageSourceUtils
js
String message= MessageSourceUtils.getMessage("intl_backend_fa92ae7a-2cba-487b-9be8-856c73288a83");
System.out.println("Message = "+ message);