Работа с существующими переводами
Lingo.dev CLI легко интегрируется с проектами, в которых уже есть файлы переводов, сохраняя вашу текущую работу и заполняя только недостающие переводы.
Когда вы запускаете CLI в проекте с уже существующими переводами, он анализирует, что уже переведено, и генерирует контент только для отсутствующих ключей, сохраняя качество и согласованность ваших переводов.
Примечание: убедитесь, что ваши файлы целевого языка пусты и не содержат контента на исходном языке. Наличие исходного языка в целевых файлах — плохая практика, которая может помешать процессу перевода.
Как это работает
Lingo.dev CLI сравнивает ваш исходный контент с существующими целевыми файлами, чтобы найти пробелы. Генерируются только недостающие переводы, а ваша текущая работа остается нетронутой.
Пример сценария:
// locales/en.json (source)
{
"welcome": "Welcome to our app",
"button.save": "Save",
"button.cancel": "Cancel",
"error.network": "Network error"
}
// locales/es.json (existing partial translations)
{
"welcome": "Bienvenido a nuestra aplicación",
"button.save": "Guardar"
}
Запуск npx lingo.dev@latest run генерирует только недостающие переводы:
// locales/es.json (after CLI run)
{
"welcome": "Bienvenido a nuestra aplicación",
"button.save": "Guardar",
"button.cancel": "Cancelar",
"error.network": "Error de red"
}
Ваши существующие переводы "welcome" и "button.save" останутся без изменений.
Первый запуск с существующими переводами
Когда вы впервые запускаете Lingo.dev CLI в проекте с уже существующими переводами, он создает файл i18n.lock на основе вашего текущего состояния. Этот lockfile отслеживает, какой контент уже обработан, чтобы существующие переводы не были перегенерированы.
Рабочий процесс:
- Первичное сканирование — CLI определяет существующие переводы в целевых файлах
- Анализ пробелов — сравнивает ключи исходного языка с целевыми файлами, чтобы найти недостающие переводы
- Генерация переводов — создаются только недостающие переводы
- Создание lockfile — фиксируются отпечатки всего исходного контента
Миграция с устаревших систем перевода
Lingo.dev CLI работает с файлами переводов, созданными любыми инструментами, если они соответствуют стандартным форматам, таким как JSON, YAML или другие поддерживаемые типы файлов.
Шаги миграции:
- Настройте i18n.json — Укажите шаблоны bucket, чтобы соответствовать расположению существующих файлов
- Запустите начальный перевод — CLI заполнит все недостающие переводы
- Проверьте и закоммитьте — Существующие переводы сохраняются, заполняются только пробелы
Пример миграции:
// Your existing project structure
locales/
en.json (source)
es.json (partial translations from previous tool)
fr.json (partial translations from previous tool)
// i18n.json configuration
{
"locale": {
"source": "en",
"targets": ["es", "fr"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"]
}
}
}
CLI сохраняет вашу структуру файлов и переводы.
Контроль качества перевода
Существующие переводы могут быть хуже по качеству, чем переводы, сгенерированные AI-движками. Lingo.dev CLI позволяет обновлять переводы при необходимости:
Сохранить существующие переводы:
npx lingo.dev@latest run
# Preserves all existing translations, fills in gaps
Перевести заново для определённых языков:
npx lingo.dev@latest run --force --target-locale es
# Regenerates all Spanish translations
Перевести заново для определённых ключей:
npx lingo.dev@latest run --force --key error.network
# Regenerates just the error.network key across all languages
Подробнее о повторном переводе см. в разделе Retranslation.
Пустые целевые файлы
Если у вас есть пустые целевые файлы или файлы только с частью ключей, Lingo.dev CLI считает их частично переведёнными и заполняет недостающий контент.
Пример:
// locales/de.json (empty target file)
{}
После запуска CLI это становится полноценным файлом перевода со всеми исходными ключами.
Инициализация lockfile
При первом запуске создаётся файл i18n.lock, который отражает текущее состояние. Это не даёт CLI переводить заново уже существующий контент, даже если он был создан не через Lingo.dev CLI.
Этот lockfile обеспечивает одинаковое поведение для существующих и новых переводов в будущем.