vue-i18n-kit 0.2.1 — редактор локалей, CLI-инструменты и вшивание переводов в бандл

05.04.2026
vue-i18n-kit 0.2.1 — редактор локалей, CLI-инструменты и вшивание переводов в бандл

Что нового

Phantom keys — ключи-призраки

Раньше редактор умел находить «лишние» ключи — те, что есть в JSON, но нигде в коде не используются. Теперь добавилась обратная проверка.

Phantom keys — это ключи, которые есть в коде (t('profile.avatar.upload')), но которых нет ни в одном файле локалей. Приложение вызовет t() — и получит пустую строку или fallback.

На дашборде появилась отдельная карточка с красным счётчиком и список всех таких ключей. В таблице редактора — фильтр phantom, который мгновенно показывает только их.

Неудобно узнавать о таких вещах в продакшене.


Plural preview

Для ключей с ICU-плюрализацией ({count, plural, one {# товар} few {# товара} many {# товаров} other {# товаров}}) теперь есть таблица предпросмотра прямо в панели детали.

Раскрываешь ключ — и видишь, как он рендерится для n = 0, 1, 2, 5, 11, 21 по каждой локали одновременно.

Читать переведённую форму в сборе гораздо удобнее, чем мысленно разбирать ICU-шаблон.


Добавить локаль прямо из UI

Раньше добавить новый язык можно было только через CLI или вручную в конфиге. Теперь в хедере редактора есть кнопка с глобусом.

Открывается диалог: код локали (с валидацией BCP 47), путь к файлу (подставляется автоматически), название и флаг — опционально. Нажимаешь — файл создаётся, конфиг обновляется, локаль появляется в таблице.


CLI: merge — слияние словарей

bash Copy
vue-i18n-kit merge shared/base.json --dry
vue-i18n-kit merge shared/base.json

Берёт JSON-файл и deep-merge'ит его в файлы локалей проекта. По умолчанию добавляет только отсутствующие ключи, не трогая переведённые. --overwrite — перезаписывает всё. --locale ru — только в одну локаль.

Удобно для корпоративных словарей в монорепо: храните общие термины в одном месте и прогоняете merge после каждого обновления.


CLI: prune — удаление мёртвых ключей

bash Copy
vue-i18n-kit prune --dry   # посмотреть, что будет удалено
vue-i18n-kit prune          # применить

Сканирует исходники проекта — ищет все вызовы t(), tm(), $t(). Потом проходит по файлам локалей и удаляет всё, что в коде не встречается.

--dry показывает список без записи. --entries i18n-tools/locales.entries.json позволяет пропустить сканирование и использовать уже готовую карту — быстрее в CI.

Перед релизом пробежаться — хорошая привычка.


Config: extends — базовый словарь

В i18n-kit.config.json появилось поле extends:

json Copy
{
  "extends": "../../shared-i18n",
  "localesDir": "src/locales",
  ...
}

Указываете путь к папке с базовыми локалями (или к другому конфигу). При запуске редактора базовые ключи подмешиваются под проектные — проект всегда побеждает.

Хорошо ложится на схему: компания держит общий словарь, каждый продукт его наследует и переопределяет то, что нужно.


Vite plugin: inline-переводы

ts Copy
// vite.config.ts
import { vueI18nInlinePlugin } from 'vue-i18n-kit/vite'

export default defineConfig({
  plugins: [
    vueI18nInlinePlugin({
      locales: {
        en: 'src/locales/en.json',
        ru: 'src/locales/ru.json',
      },
    }),
  ],
})
ts Copy
// main.ts
import inlineLocales from 'virtual:vue-i18n-kit/locales'

app.use(createVueI18nPlugin({
  locales: {
    en: { messages: inlineLocales.en, meta: { display: 'English' } },
    ru: { messages: inlineLocales.ru, meta: { display: 'Русский' } },
  },
  defaultLocale: 'en',
}))

Переводы вшиваются в бандл на этапе сборки как статический объект. Никаких сетевых запросов в рантайме, никакого loading состояния.

Полезно для SSR, офлайн-приложений или просто когда хочется убрать один сетевой запрос.


Мелкие фиксы

  • Клик по ячейке — инпут теперь сразу получает фокус. Это был баг с ref внутри v-for: Vue складывал его в массив, focus() молча не вызывался.
  • Кнопки подтверждения/отмены редактирования теперь стоят рядом горизонтально, а не друг под другом.
  • Чекбоксы заменены на кастомный компонент в тёмном стиле — с поддержкой indeterminate для заголовка таблицы.

Итого

Версия 0.2.1 на npm.

bash Copy
npm install vue-i18n-kit@latest

Исходники и полный CHANGELOG — на GitHub.

Читать далее

05.04.2026

vue-i18n-kit: Locale Editor UI — дашборд, группы ключей и валидация

В новой версии vue-i18n-kit появился браузерный редактор локалей, который работает локально и не требует внешних сервисов. Дашборд с покрытием, группировка ключей по неймспейсам, валидация плейсхолдеров и ICU-синтаксиса, автоперевод пропущенных значений через LibreTranslate — и всё это прямо на вашей машине.

Метки
vue-i18n-kitлокализацияvue3i18nпереводыicu-messageformat
03.04.2026

rest-pipeline-js 1.3.6: DAG-переходы, вложенные пайплайны, SWR-кэш и перехватчики

Прошлый релиз добавил параллельные шаги, глобальный middleware и паузу. Но оставалось несколько вещей, которые в пайплайне выглядели как белые пятна.

Например, как сделать нелинейный сценарий? Как переиспользовать цепочку шагов внутри другой цепочки? А в HTTP-клиенте — как обновлять данные в фоне, не заставляя пользователя ждать? И почему до сих пор нет нормальных перехватчиков?

Версия 1.3.6 закрывает всё это.

Метки
rest-pipeline-jspipeline-orchestratordag-transitionsstale-while-revalidatehttp-interceptors