Существующие переводы

Max PrilutskiyГенеральный директор и соучредитель1 мин чтения

Начинать с пустого проекта не обязательно. Если у вас уже есть переведённые файлы, CLI работает вместе с ними: добавляет недостающее и сохраняет существующие переводы без изменений.

Укажите в конфигурации, что у вас уже есть#

Задайте исходную и целевые локали, а также шаблоны файлов так, чтобы они соответствовали тому, где уже лежат ваши переводы:

json
{
  "sourceLocale": "en",
  "targetLocales": ["de", "fr"],
  "files": [{ "pattern": "locales/en.json" }]
}

Если locales/de.json и locales/fr.json уже есть, они останутся без изменений.

Заполните недостающее#

bash
lingo push --backfill-missing --wait

--wait записывает файлы той же командой; без него соберите их с помощью lingo pull. --backfill-missing создаёт только отсутствующие целевые файлы — то есть локали, для которых файла ещё нет. Ключи в уже существующие файлы он не добавляет — для новых и изменённых ключей используйте обычный lingo push. Существующие файлы не перезаписываются.

text
✓ Run lrg_a8c...: localized 1 target file(s), 2 already up-to-date.

Зафиксируйте отдельные значения#

Если какие-то существующие переводы проверены вручную и никогда не должны меняться, пометьте их через preservedKeys, чтобы ни один следующий запуск их не затронул:

json
{ "pattern": "locales/en.json", "preservedKeys": ["legal.terms"] }

Как инициализируется lockfile#

При первом push хеш каждого исходного файла записывается в .lingo/lock.json. После этого обычный lingo push отправляет только те исходники, которые изменились: существующие переводы больше не отправляются повторно, если вы не измените исходник или не сделаете это принудительно. Закоммитьте lockfile вместе с переводами. См. Конфигурация.

Перезапись по необходимости

--backfill-missing никогда не перезаписывает существующие переводы. Чтобы обновить их намеренно (например, после смены модели или правил), используйте --force при пуше.