generaltranslation@7.8.0
Обзор
В generaltranslation@7.8.0 мы добавляем возможности форматирования списков, которые станут основой для будущих компонентов и методов. В этом релизе добавлен formatListToParts() — как в класс GT, так и в виде отдельной функции.
Мотивация
Списки элементов требуют корректного форматирования с учётом локали. В частности, мы хотели добавить возможность объединять несколько элементов (не только строки) в отформатированный список. Это создаёт хорошую основу для формирования списков произвольных данных, например 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‑интерфейсы для форматирования списков.