Sync jobs

Asynchronous push of a project's translation strings, optionally followed by AI auto-translation.

Not verified yet

A sync job represents a single project-level sync – typically initiated by the LangSync CLI as part of your build or release pipeline. It bundles three phases:

  1. Plan. Diff the strings you're pushing against the strings on the server. Identify creates, updates, and (optionally) deletes.
  2. Push. Apply the plan: create new terms, update changed values, delete terms the local source no longer contains.
  3. Auto-translate. Fill missing translations across every target language with the AI.

Each phase finishes before the next starts. Jobs are resumable – if a worker crashes mid-push, the next worker picks up from the last applied operation.

Strategies

  • local – Local source is authoritative. Terms on the server but missing locally are deleted (when prune: true).
  • server – Server is authoritative. Local-only terms are ignored; server terms missing locally are kept.

Pick local for CI-driven workflows where the Git repo is the source of truth. Pick server for hybrid workflows where translators add terms directly in the dashboard.

Dry run

Pass --dry-run and the job stops after the plan. The plan lists every operation that would have run – useful for code-reviewing large changes before pushing.

Auto-translate behaviour

After a successful push, LangSync optionally fills missing translations across all attached target languages. You can:

  • Wait for translation to finish before the job reports as complete (default).
  • Return immediately after the push and let translation continue in the background.

Status lifecycle

A job moves through these states:

pending → planning → planned                      (terminal for dry-run)
                  └→ pushing → autotranslating → finalizing → completed
                                                            └→ failed

You can poll a job's status via the CLI, the dashboard's Sync jobs page, or the API.

Retention

Sync job records (the plan, per-operation results, and final auto-translation output) are retained for a short window after completion, then garbage-collected. Save anything you need to audit before then.

Behaviour and edge cases

  • Two workers can't run the same job. Workers claim jobs with an exclusive lease. Even with retries, a job's push and autotranslate phases run at most once.
  • Resumption is idempotent. If a worker crashes after applying half the push operations, the next worker reads the persisted progress and resumes from the next pending operation. No operation runs twice.
  • Auto-translate doesn't double-fire. Once auto-translate starts, resumption skips re-running it – even if the worker crashes after triggering the AI call.
  • Failed operations are captured. If three of a hundred push operations fail (e.g. validation error on a single term's mark), the job completes with a partial status and a failures list. Other operations are applied normally.
  • Deletes are permanent. A prune: true job with the local strategy removes terms that are missing locally – there is no undo. Use dry-run to verify the plan first.
  • Manage terms – direct dashboard editing.
  • The LangSync CLI is documented in API reference while the CLI ships in beta. A standalone CLI reference will follow.

On this page