Skip to content

Features & workflows

Publishing Workflow

langctl uses a draft/published workflow similar to staging/production environments, ensuring only reviewed translations reach your users.

Draft vs Published

StatePurposeIncluded in pull / export
DraftWork in progress, under reviewNo (unless —include-drafts)
PublishedReady for productionYes (default)

Publishing Keys

terminal
# publish specific keys
langctl keys publish my-app home.welcome home.subtitle

# publish every draft key in a module
langctl keys publish my-app --module auth

# publish every draft key in the project
langctl keys publish my-app --all

# move keys back to draft
langctl keys unpublish my-app home.subtitle
terminal
# new keys are drafts by default
langctl keys create my-app feature.title --value en="New Feature"

# review it
langctl keys get my-app feature.title
langctl keys list my-app --drafts

# publish it, then pull — only published keys are written
langctl keys publish my-app feature.title
langctl pull

Keys you upload with langctl push or langctl import are drafts too, unless you pass --publish. To skip the draft stage for a key you create from the terminal, use langctl keys create … --publish.

To preview drafts locally without publishing them:

terminal
langctl pull --include-drafts

Tip

Use drafts for new translations or work-in-progress. Publish only after review.

In the dashboard, publish and unpublish from a key’s detail panel or a row’s action buttons, or select several keys and use Publish / Unpublish in the bulk bar.

AI Translations and Review

On top of draft/published, each AI translation has its own review state. An AI translation is left out of exports and langctl pull - even in a published key - until someone approves it or edits it. Your app falls back to the default language for that string in the meantime. See AI Translation.

KeyAI translationIncluded in pull / export
DraftanyNo (unless drafts are included)
PublishedApproved or editedYes
PublishedAwaiting reviewNo - that language falls back

Best Practices

  1. Default to Draft - Create new keys as drafts
  2. Review Before Publishing - Check accuracy and context
  3. Bulk Publish - Publish complete modules at once (keys publish my-app --module auth)
  4. Production Builds - Pull without --include-drafts for production; drafts are excluded by default

Next Steps