返回

generaltranslation@7.8.0

Ernest McCarter avatarErnest McCarter
generaltranslation7.8.0列表格式翻译

概览

generaltranslation@7.8.0 中,我们引入了列表格式化功能,为后续即将推出的组件和方法奠定基础。本次发布在 GT 类中以及作为独立函数都新增了 formatListToParts()


设计动机

条目列表需要进行符合本地化规则的适当格式化。具体来说,我们希望新增一种能力:可以将多个条目(不仅仅是字符串)组合成一个经过格式化的列表。这样就为创建由任意数据(例如 JSX 元素)构成的列表打下了良好基础。


用法

新的 formatListToParts() 函数在插入适用于当前语言环境的分隔符的同时,保留列表项的原始类型:

import { GT, formatListToParts } from 'generaltranslation'

const gt = new GT({ locales: ['en'] })

// 混合数据类型
gt.formatListToParts(['apple', 42, { type: 'fruit' }])
// 返回:['apple', ', ', 42, ', and ', { type: 'fruit' }]

// 独立函数
formatListToParts(['red', 'green', 'blue'], {
  locales: ['es'],
  type: 'disjunction',
})
// 返回:['red', ', ', 'green', ' o ', 'blue']

支持多种列表类型和样式:

// 析取(或)
gt.formatListToParts(['A', 'B', 'C'], { type: 'disjunction' })
// 返回:['A', ', ', 'B', ', or ', 'C']

// 简短样式
gt.formatListToParts(['first', 'second'], { style: 'short' })
// 返回:['first', ' & ', 'second']

// 单位格式化
gt.formatListToParts(['1km', '2mi'], { type: 'unit' })
// 返回:['1km', ', ', '2mi']

组件基础

此功能为即将推出的 <List/> 组件以及 msg.list() / gt.list() 方法打下了基础,这些方法将提供用于列表格式化的 React 接口。