Существующие переводы
Начинать с пустого проекта не обязательно. Если у вас уже есть переведённые файлы, CLI работает вместе с ними: добавляет недостающее и сохраняет существующие переводы без изменений.
Укажите в конфигурации, что у вас уже есть#
Задайте исходную и целевые локали, а также шаблоны файлов так, чтобы они соответствовали тому, где уже лежат ваши переводы:
{
"sourceLocale": "en",
"targetLocales": ["de", "fr"],
"files": [{ "pattern": "locales/en.json" }]
}Если locales/de.json и locales/fr.json уже есть, они останутся без изменений.
Заполните недостающее#
lingo push --backfill-missing --wait--wait записывает файлы той же командой; без него соберите их с помощью lingo pull. --backfill-missing создаёт только отсутствующие целевые файлы — то есть локали, для которых файла ещё нет. Ключи в уже существующие файлы он не добавляет — для новых и изменённых ключей используйте обычный lingo push. Существующие файлы не перезаписываются.
✓ Run lrg_a8c...: localized 1 target file(s), 2 already up-to-date.Зафиксируйте отдельные значения#
Если какие-то существующие переводы проверены вручную и никогда не должны меняться, пометьте их через preservedKeys, чтобы ни один следующий запуск их не затронул:
{ "pattern": "locales/en.json", "preservedKeys": ["legal.terms"] }Как инициализируется lockfile#
При первом push хеш каждого исходного файла записывается в .lingo/lock.json. После этого обычный lingo push отправляет только те исходники, которые изменились: существующие переводы больше не отправляются повторно, если вы не измените исходник или не сделаете это принудительно. Закоммитьте lockfile вместе с переводами. См. Конфигурация.
Перезапись по необходимости
--backfill-missing никогда не перезаписывает существующие переводы. Чтобы обновить их намеренно (например, после смены модели или правил), используйте --force при пуше.