Skip to content
better-i18n.com

Publishing is the step that makes a translation real to your app. Until you publish, everything you have written lives in the dashboard only.

There is no build and no deploy in between.

What happens #

Code
Publish
  → translations are written to the CDN origin
  → the cache is purged for what changed
  → your app fetches the new version on its next request

Doing it #

  1. Open your project
  2. Click Publish
  3. Read what it lists — this is the important part
  4. Confirm

The popover lists exactly what is about to go live, grouped so you can see it rather than trust a count.

Read the list before you confirm #

Drafts publish too. This surprises people, so it is worth being blunt: the publish action includes both approved translations and drafts. The API's own default is approved-only, and the dashboard deliberately widens it so that what the popover lists is what actually ships — a count of "12 ready" that publishes 9 would be worse.

The consequence: draft does not mean "cannot go live". It means "nobody has vouched for this yet". If you need approval to be a real gate, review before publishing rather than relying on the status to hold things back. See How do I review and approve translations?.

How long until visitors see it #

The CDN serves translations with a one-minute cache, and publishing purges what changed — so the usual answer is seconds, and one minute is the ceiling.

Layers that can add their own delay:

LayerDelay
CDN edgePurged on publish; max-age=60 otherwise
SDK in-memory cacheUp to its refresh interval
Next.js ISRWhatever revalidate you set

If your app renders translations at build time or caches them for an hour, that is your number, not ours. I published but my app still shows old translations walks through finding which layer is holding on.

From the CLI #

Bash
better-i18n publish:status   # what would go live right now
better-i18n publish          # do it

publish:status is worth running first in a pipeline, and it is the honest answer to "is there anything pending".

There is no rollback #

Publishing is not versioned and there is no snapshot to restore. Fixing a bad publish means editing the translation and publishing again — which takes about a minute, so it is rarely a crisis, but it does mean the review happens before the button, not after.

Every publish is recorded as a job you can inspect:

Bash
better-i18n syncs list
better-i18n syncs get <syncId>

That tells you what happened and when. It does not undo it.

Next #