Shipeasy
TranslationsCase studies

Launch a new locale end to end

Seed a target profile from your source, AI-draft every key, review the diff, and publish — one locale, start to finish.

TutorialOn this page · 6 min readUpdated · June 19, 2026Works with · CLI · Dashboard · MCP

You ship in English. Sales just closed a deal that needs French. You have a few hundred keys already live in en:prod and you want fr:prod standing up this week — drafted by AI, reviewed by a human, published without a redeploy.

This is the full locale-launch pipeline: seed → draft → review → publish.

1. Seed the target from your source profile

A profile is the versioned set of keys for one locale. Seed the new one from your source so it starts with every key present and untranslated:

shipeasy i18n profiles create fr:prod --from en:prod

fr:prod now mirrors the key set of en:prod, with values empty (or carrying the source string as a placeholder). Nothing is published yet.

2. AI-draft every key

Machine-translate the whole profile in one pass. The drafter uses the source value and any per-key context as the prompt:

shipeasy i18n translate fr:prod --from en:prod
Context improves the draft

Keys that carry a context note ("Open — the verb", "Save — the noun, a discount") translate far better. If your source keys already have context, the French draft inherits it. Add context to the ambiguous ones before drafting.

3. Review the draft

Drafts land in a review state, not live. Walk the diff in the dashboard's drafts view (or export it for a native speaker). You're checking three things:

Meaning

Did the model pick the right sense of an ambiguous word?

Tone & glossary

Brand terms, register, and product nouns match your profile 's glossary.

Layout

French runs ~20% longer than English — check the strings that live in tight UI.

Edit in place. Reviewing is insert-and-correct — you're not re-translating, just approving and fixing.

4. Publish the profile

shipeasy i18n profiles publish fr:prod

Publishing pushes the locale's labels to the CDN. The SDK picks fr:prod up on its next refresh — no redeploy. Your app already reads labels through the SDK, so t("cta.subscribe") resolves to French the moment a user's locale is fr.

Rollout & measurement plan

  • Publish to a draft profile first if you want to dogfood before going live — point internal users at fr:staging, verify, then publish fr:prod.
  • Don't go 100% on day one. A new locale is a great candidate to gate behind a flag — roll French out to a slice of French-locale users, watch for layout breakage and support tickets, then open it to all.
  • Track the gap. Run shipeasy i18n validate in CI so a new English key can't ship without a French counterpart being queued.
Was this page helpful?
✎ Edit this page

On this page