Skip to content

DF-833: language prioritization, rollout playbook + i18n/ index - #212

Open
spjtls9 wants to merge 1 commit into
sonyapark-df-831-m3-build-ci-delta-translate-on-merge-to-main-open-prfrom
sonyapark-df-833-m4-prioritize-next-languages-write-rollout-playbook
Open

DF-833: language prioritization, rollout playbook + i18n/ index#212
spjtls9 wants to merge 1 commit into
sonyapark-df-831-m3-build-ci-delta-translate-on-merge-to-main-open-prfrom
sonyapark-df-833-m4-prioritize-next-languages-write-rollout-playbook

Conversation

@spjtls9

@spjtls9 spjtls9 commented Aug 29, 2026

Copy link
Copy Markdown

📚 Part 8 of an 8-PR stack — merge in order

Blocked by: #211 (DF-831) — this PR is branched off it, so review only the diff shown here.
Blocks: nothing — this is the top of the stack, merge it last.

Do not merge out of order. Each PR is branched off the one above it; merging ahead of its base pulls
in unreviewed commits. As each lands, GitHub retargets the next onto main automatically.

PR Issue Scope
  1 #205 DF-823 Plan & entitlement findings
  2 #206 DF-826 Scope, spec, glossary, validator
  3 #207 DF-827 Engine evaluation
  4 #208 DF-824 Korean navigation tree
  5 #209 DF-828 Pilot Korean translations
  6 #210 DF-830 Staged translation config
  7 #211 DF-831 Staged CI workflow
▸ 8 #212 DF-833 Prioritization, playbook, index ← this PR

Documents in i18n/ cross-reference each other, so relative links to files added later in the stack
resolve once the stack has landed.
The final state is link-checked; every relative link resolves.

Operational sequencing — none of this happens on merge

Merging this stack changes nothing a reader sees. docs.json is untouched, no workflow is installed, and
no ko/ tree exists at the repo root. Turning Korean on is a separate, deliberate sequence:

Step Action Gated on
1 Mintlify dashboard → Settings → Translations — confirm the feature, and whether it exposes glossary control DF-823
2 Run the 12-page bake-off; pick the engine step 1
3 Apply the docs.json languages array; cp i18n/nav/ko.json ./ko.json steps 1–2
4 Bulk-translate docs/ + guides/ into ko/ steps 2–3
5 Native Korean review (~3–5 days) — the step that does not compress step 4
6 Only if General Translation won: move gt.config.json to root, translate.yml to .github/workflows/, set GT_API_KEY + GT_PROJECT_ID steps 2–4
7 Backfill/reconcile, then publish /ko steps 5–6

Steps 3 and 6 are the only ones that change live behaviour. Both are reversible by reverting one file.


Adds: 04-rollout-playbook.md, README.md

README.md is the entry point for the whole i18n/ directory, and lands last in this stack so it never indexes files that don't exist yet.

Prioritization uses a signal Mixpanel already has

mixpanel.com publishes hreflang alternates for exactly four locales: en-US, ko-KR, ja-JP, id-ID. Marketing has already decided which non-English markets are worth translating for and paid for it. Docs should follow that list rather than invent a new one — same markets, same sales motion, same customers.

# Locale Why
1 ko In flight
2 ja Marketing-declared; large enterprise analytics market
3 id Marketing-declared, but verify against docs traffic first
4+ es/pt-BR, then de/fr No marketing signal; only on traffic evidence

Do not extend past Japanese on inference. docs.json already reports into a Mixpanel project, so pageviews by locale — and the measured lift after /ko ships — are a report away. That same report settles whether the API reference ever gets translated, for every language at once. We sell this product; we should use it.

The playbook

A new language becomes a checklist, ~1 week, most of it review: configure (~1h) → extend the glossary (~½ day, before bulk translation) → translate (hours, unattended) → validate (minutes, must exit 0) → native review (~3–5 days, the only step that does not compress) → ship and watch.

Also adds the reviewer checklist that the DF-831 workflow's PR body points at.

Side finding worth routing onward

mixpanel.com/ko/ returns 200 but currently serves English. The alternate is declared, the content is not there. Worth flagging to whoever owns the marketing site — a Korean docs launch may land before a Korean marketing site.

Prioritization uses a signal Mixpanel already has: mixpanel.com publishes
hreflang alternates for exactly en-US, ko-KR, ja-JP and id-ID. Marketing has
already decided which non-English markets are worth translating for and paid
for it, so docs should follow that list rather than invent one. Korean is in
flight; Japanese is next; Indonesian third but verify against docs traffic
first.

Do not extend past Japanese on inference. docs.json already reports into a
Mixpanel project, so pageviews by locale — and the measured lift after /ko
ships — are a report away. That same report settles whether the API reference
ever gets translated, for every language at once.

Playbook makes a new language a checklist rather than a project: ~1 week, most
of it native review. Configure (~1h), extend the glossary (~half a day, and
before bulk translation — fixing terminology across 295 translated pages costs
far more than deciding it once), translate (hours, unattended), validate
(minutes, must exit 0), native review (~3-5 days, the only step that does not
compress), then ship and watch.

Also adds the reviewer checklist that the DF-831 workflow's PR body points at,
and README.md as the entry point for the whole directory — landing last, once
everything it indexes exists.

Side finding for whoever owns the marketing site: mixpanel.com/ko/ returns 200
but currently serves English. The alternate is declared, the content is not
there.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@spjtls9
spjtls9 requested a review from a team as a code owner August 29, 2026 20:53
@spjtls9
spjtls9 requested review from julianneb-mixpanel and removed request for a team August 29, 2026 20:53
@linear-code

linear-code Bot commented Aug 29, 2026

Copy link
Copy Markdown
@greptile-apps

greptile-apps Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Confidence Score: 2/5

The rollout playbook should be corrected before merging because following it can fail translation and navigation validation while leaving guides unchecked.

The documented root-level config does not exist at this stage, the copied navigation labels cannot satisfy the required check, and validation covers only one of the two translated content trees.

Files Needing Attention: i18n/04-rollout-playbook.md

Important Files Changed

Filename Overview
i18n/04-rollout-playbook.md Adds the rollout procedure, but its config path, navigation check, and validation coverage make the documented workflow fail or miss content.
i18n/README.md Adds a coherent i18n project index whose referenced files, anchors, and principal state claims match the repository.

Reviews (1): Last reviewed commit: "DF-833: language prioritization, rollout..." | Re-trigger Greptile

### 3 · Translate — hours, unattended

```bash
npx gtx-cli translate --config gt.config.json # or: Mintlify dashboard → add locale

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Translation config path is wrong

When an engineer follows this command from the repository root before the staged configuration is relocated, gtx-cli looks for nonexistent root-level gt.config.json instead of i18n/config/gt.config.json, causing translation to fail before it starts.

# ...translate the values...

node i18n/scripts/build-locale-nav.mjs <locale> # → i18n/nav/<locale>.json
node i18n/scripts/build-locale-nav.mjs <locale> --check # must exit 0

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Copied labels fail required check

When an engineer copies labels.ko.json as instructed, the retained Community key is not consumed because the builder traverses only navigation.tabs; --check therefore reports it as unused and exits nonzero, blocking the rollout.

Comment on lines +101 to +103
node i18n/scripts/validate-mdx-parity.mjs \
--source docs --target <locale>/docs \
--locale <locale> --link-prefix --require-anchors --allow-code-comments

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Validation omits translated guides

When a rollout contains both docs and guides, this step validates only <locale>/docs, leaving structural defects in translated guides undetected before review and publishing.

Suggested change
node i18n/scripts/validate-mdx-parity.mjs \
--source docs --target <locale>/docs \
--locale <locale> --link-prefix --require-anchors --allow-code-comments
node i18n/scripts/validate-mdx-parity.mjs \
--source docs --target <locale>/docs \
--locale <locale> --link-prefix --require-anchors --allow-code-comments
node i18n/scripts/validate-mdx-parity.mjs \
--source guides --target <locale>/guides \
--locale <locale> --link-prefix --require-anchors --allow-code-comments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant