Как это работает
Lingo.dev CLI скрывает сложный процесс локализации за элегантным интерфейсом командной строки.
Когда вы запускаете npx lingo.dev@latest i18n
, CLI считывает стандартный файл конфигурации i18n.json
и выполняет следующие 5 шагов:
1. Обнаружение контента
Lingo.dev CLI рассматривает ваш проект как источник истины. Он рекурсивно сканирует проект на наличие исходных и целевых файлов перевода на основе ваших конфигураций bucket, считывая их в память для обработки.
Этап обнаружения учитывает:
- Шаблоны включения, такие как
locales/[locale].json
- Шаблоны исключения для файлов, которые вы хотите пропустить
- Несколько конфигураций bucket для разных типов файлов
2. Очистка данных
Не весь контент требует перевода. В продуктивных приложениях содержатся числа, логические значения, даты, UUID и фрагменты кода, которые обычно остаются неизменными для всех языков.
Lingo.dev CLI интеллектуально фильтрует:
- Числовые значения, такие как
42
или3.14
- Логические значения (
true
/false
) - Даты и временные метки в формате ISO
- UUID и аналогичные идентификаторы
- Блоки кода и технические фрагменты
Такое фильтрование снижает затраты на использование LLM и ускоряет обработку, сосредотачиваясь только на переводимом контенте.
3. Вычисление дельты
Контент, который не изменился, не должен переводиться заново. Lingo.dev CLI реализует сложную систему версионирования, которая:
- Создает отпечатки контента с использованием хеширования SHA-256
- Сравнивает текущий контент с предыдущим состоянием, сохраненным в
i18n.lock
- Определяет новые, измененные и удаленные ключи перевода
- Отправляет только изменения в движок перевода
Этот инкрементальный подход означает, что вы платите только за новый или измененный контент, а не за всю библиотеку контента при каждом запуске.
Подробнее: Файл блокировки i18n.lock
4. Локализация
Локализация должна быть надежной, даже при нестабильном интернет-соединении или сбоях у поставщиков LLM. На этом этапе Lingo.dev CLI берет изменения (дельту) и отправляет их в настроенный вами переводческий бэкенд.
CLI реализует:
- Стратегию повторных попыток с экспоненциальной задержкой для сетевых сбоев
- Автоматическое восстановление после ошибок и сохранение частичного прогресса
- Поддержку как для сырого API LLM (OpenAI, Anthropic), так и для Lingo.dev Engine
- Параллельную обработку для нескольких целевых языков
Каждый запрос на перевод включает контекстную информацию, чтобы обеспечить согласованность и качество по всему вашему проекту.
5. Внедрение контента
Чтобы поддерживать чистые и удобные для обзора изменения, Lingo.dev CLI внедряет переводы точно в те места, где находится исходный контент. Такой подход:
- Сохраняет структуру и форматирование файлов
- Избегает ненужных конфликтов в git
- Создает минимальные, сфокусированные изменения
- Учитывает вашу существующую конфигурацию Prettier, если она есть
Результат — локализованные файлы, которые выглядят так, как будто они были созданы вручную, готовые к коду-ревью и развертыванию.
Полный рабочий процесс
Эти пять шагов обычно приводят к двум типам изменений:
- Файлы локализации — обновляются с новыми и измененными переводами
- Файл i18n.lock — обновляется с отпечатками контента для отслеживания состояния
Оба файла должны быть зафиксированы в вашем репозитории, либо вручную, либо автоматически через интеграции CI/CD.
Такая архитектура обеспечивает эффективное масштабирование Lingo.dev CLI — от одного разработчика, переводящего несколько строк, до команд, управляющих миллионами слов на десятках языков.
Следующие шаги
Теперь, когда вы понимаете, как Lingo.dev CLI работает изнутри, вы можете:
- Присоединиться к нашему сообществу: Discord — общайтесь с другими разработчиками, использующими Lingo.dev CLI, делитесь отзывами и получайте помощь с вашими задачами локализации;
- Внести вклад в проект: Open issues — Lingo.dev CLI является проектом с открытым исходным кодом и приветствует вклад. Просматривайте открытые задачи, предлагайте функции или отправляйте pull-реквесты, чтобы помочь улучшить инструмент для всех.