Назад

generaltranslation@7.8.0

Ernest McCarter avatarErnest McCarter
generaltranslation7.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‑интерфейсы для форматирования списков.