Skip to content

i18n 国际化基础组件

盘古国际化基础组件主要功能包含时区切换、语言切换、后端词条获取等

功能列表

  1. 时区切换变更时,用户服务接口返回数据的时间数值根据时区名称的变化而改变;
  2. 语言切换变更时,用户服务接口返回数据的时间格式根据语言种类的变化而改变;
  3. 盘古提供后端词条获取的公共方法,用户可按需使用

注意:支持自动化转换的日期类型: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.配置环境变量

配置项

  1. store-time-zone:代表业务微服务的容器上下文时区以及数据库数据存储所使用时区,如有一个服务已做配置,其他服务均需配置;如未配置,则系统默认采用UTC时区 yml配置如下:
pangea:
    international:
        store-time-zone=UTC

以下配置项无需配置(仅做调试使用)

  1. ignore-formats:忽略日期格式,配置后所匹配格式的日期不会进行时区转换
  2. data-format:添加该配置后,当前服务的所有接口关于Date、LocalDateTime类型数据的序列化均使用该日期格式 yml配置如下:
pangea:
    international:
        ignore-formats=yyyyMMdd
        data-format=yyyy-MM-dd

注意

  1. 如业务服务未做任何配置,默认采用世界时作为业务数据存储时区
  2. 如有疑问,请联系盘古团队

3.时区切换、语言切换使用示例

  1. 定义实体类
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;
}
  1. Controller中定义接口,接口返回实体列表
js
@RestController
@RequestMapping("product")
public TestController extends BaseController{

    @Autowired
    private ProductService productService;
    
    @GetMapping("getProductList")
    public List<ProductTest> getProductList(){
        return productService.getProductList();
    }
}
  1. 添加yml配置
pangea:
    international:
        store-time-zone=UTC
        date-format=yyyy/MM/dd
  1. 接口调用,请求头配置如下:
time_zone:Europe/Paris
  1. 返回结果

返回字段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. 录入后端词条

(1)在词条管理界面新增后端词条

进入开发平台-->右上角切换到业务系统-->进入《应用开发》-->多语言-->词条管理-->点击新增 alt text

(2)在词条管理界面导入后端词条

导入方式:进入开发平台-->右上角切换到业务系统-->进入《应用开发》-->多语言-->词条管理-->点击导入按钮-→点击下载模板 alt text

模版填写:

  • languageKey:格式为intl_backend_+32位UUID,格式样例:intl_backend_903b4eba-a7ab-4175-9e8f-ad27477e62f1
  • 类型统一为backend
  • 填写后端提示语及翻译后的文案
  • UUID在线生成:https://www.lddgo.net/string/uuidalt text

文案导入:

  • 模板填写完成后,将文档拖入导入页面,选择策略-“覆盖数据”,点击页面的确定按钮,执行导入

alt text

  1. 在后端代码中获取

按模板填写的languageKey,找到对应需国际化的的提示语位置,在代码中用以下代码覆盖,示例:

方法定义  类:I18nCommonUtils,方法:getLangValueByKey(String languageKey,String message);
方法使用  I18nCommonUtils.getLangValueByKey("intl_backend_fa92ae7a-2cba-487b-9be8-856c73288a83","该页面组下存在页面,请先移出");
  1. 在代码中使用截图 alt text

  2. 兼容盘古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);