Интернационализация для современного TypeScript
Ноль зависимостей · Безопасность типов · Не зависит от фреймворка
export default {
dashboard: {
greeting: "Привет, {name: string}!",
membership: "{role, select, admin {Администратор} pro {Pro-аккаунт} other {Обычный аккаунт}}",
cart: "{count, plural, =0 {Корзина пуста} one {В корзине # товар} few {В корзине # товара} many {В корзине # товаров} other {В корзине # товара}}",
discount: "Распродажа: <badge>Скидка 20%</badge> на всё",
invoice: "Итого: {amount, number, currency}",
delivery: "Ориентировочная доставка: {time}",
},
} as const;Привет, Алексей!
Pro-аккаунтБезопасность типов
Обеспечивает вывод типов TypeScript для ключей перевода, пространств имён и параметров, проверяя согласованность схемы между локалями.
Ноль зависимостей во время выполнения
Построен на базе TypeScript и стандартных Web API Intl, не требует этапа генерации кода при сборке. Minified + Gzipped: < 5 kB
Поддержка ICU Message Format
Поддерживает формы множественного числа, порядковые числительные, ветвление select и интерполяцию тегов форматированного текста без внешних парсеров.
Не зависит от фреймворка
Работает в Astro, Next.js, React, Vue, Svelte, Node.js, Bun и Cloudflare Workers.
Бенчмарк размера передачи по сети
Измеряет реальный объем сетевого трафика всех ресурсов i18n при начальном предрендеринге и гидратации на стороне клиента.
Playwright Headless Chromium · Real HTTP Transfer Size
i18next содержит полноценные парсеры и рантайм плагинов, создавая ощутимый базовый оверхед. В ts-intl нет сторонних зависимостей (ядро ~2 КБ), а в режиме разделения локалей передается словарь только активного языка.
Paraglide компилирует сообщения в JS-функции и удаляет неиспользуемые ключи через tree-shaking. ts-intl является библиотекой времени выполнения без генерации кода и использует стандартный динамический import, предотвращая накопление словарей разных языков в бандле.