Sync jobs
Asynchronous push of a project's translation strings, optionally followed by AI auto-translation.
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:
- Plan. Diff the strings you're pushing against the strings on the server. Identify creates, updates, and (optionally) deletes.
- Push. Apply the plan: create new terms, update changed values, delete terms the local source no longer contains.
- 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 (whenprune: 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
└→ failedYou 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
pushandautotranslatephases 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
partialstatus and a failures list. Other operations are applied normally. - Deletes are permanent. A
prune: truejob with thelocalstrategy removes terms that are missing locally – there is no undo. Use dry-run to verify the plan first.
Related
- 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.