Skip to content

DF-824: Korean navigation tree (staged — docs.json untouched) - #208

Draft
spjtls9 wants to merge 1 commit into
sonyapark-df-827-m2-evaluate-select-mdx-aware-translation-toolingfrom
sonyapark-df-824-m1-enable-i18n-in-docsjson-en-default-ko-and-translate-nav
Draft

DF-824: Korean navigation tree (staged — docs.json untouched)#208
spjtls9 wants to merge 1 commit into
sonyapark-df-827-m2-evaluate-select-mdx-aware-translation-toolingfrom
sonyapark-df-824-m1-enable-i18n-in-docsjson-en-default-ko-and-translate-nav

Conversation

@spjtls9

@spjtls9 spjtls9 commented Aug 29, 2026

Copy link
Copy Markdown

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

Blocked by: #207 (DF-827) — this PR is branched off it, so review only the diff shown here.
Blocks: #209 (DF-828) and everything after it in the stack.

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 ← this PR
  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

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.


Everything DF-824 needs, built and verified — without making the config change.

docs.json is not modified by this PR. Per the instruction to keep Mintlify config changes manual, the edit is staged and documented, not applied.

Adds: nav/{README.md,ko.json,labels.ko.json}, scripts/{build-locale-nav.mjs,preview-docsjson-patch.mjs}

What's here

  • labels.ko.json — all 128 navigation labels translated per the DF-826 terminology policy
  • ko.json — generated Korean nav tree: 5 tabs, 390 page paths prefixed ko/
  • build-locale-nav.mjs — regenerates it deterministically. --check fails when docs.json gains a label with no Korean or the map keeps a stale one, so the nav cannot silently rot. --drop-tab supports the DF-826 scope decision to defer the API reference.
  • preview-docsjson-patch.mjs — prints, and optionally stages, the exact docs.json change without making it
node i18n/scripts/build-locale-nav.mjs ko --check          # expect: check: OK
node i18n/scripts/preview-docsjson-patch.mjs ko            # see the change, don't make it

The change itself, when someone applies it

One shape: navigation.tabs becomes navigation.languages[], the existing tree becomes the en entry, and Korean is $ref'd out to ./ko.json — the layout Mintlify uses for their own docs. English stays at the repo root, so no English URL changes and enabling it is a no-op for English readers. Reversible by reverting one file.

Two decisions for whoever applies it

Both written up in nav/README.md:

  1. Global anchors cannot be localized per-locale. navigation.global.anchors (About Us / Community / Blog) is shared across every language by design. Korean strings are staged under _global_anchors if you'd rather move them into each language entry. Recommend leaving them shared — three English words in the top bar beats a nav that drifts per locale.
  2. Does the API Docs tab belong in the Korean nav? ko.json currently mirrors English exactly. If the API reference is deferred per DF-826, regenerate with --drop-tab="API Docs".

…ched

Everything DF-824 needs, built and verified, without making the config change.
docs.json is not modified by this PR.

- labels.ko.json — all 128 navigation labels translated per the DF-826
  terminology policy
- ko.json — generated Korean nav tree: 5 tabs, 390 page paths prefixed `ko/`
- build-locale-nav.mjs — regenerates it deterministically. `--check` fails when
  docs.json gains a label with no Korean or the map keeps a stale one, so the
  nav cannot silently rot; `--drop-tab` supports the DF-826 scope decision to
  defer the API reference.
- preview-docsjson-patch.mjs — prints, and optionally stages, the exact
  docs.json change without making it.

The change itself is one shape: navigation.tabs becomes navigation.languages[],
the existing tree becomes the `en` entry, and Korean is $ref'd out to ./ko.json
— the layout Mintlify uses for their own docs. English stays at the repo root,
so no English URL changes and enabling it is a no-op for English readers.

Two decisions for whoever applies it, both written up in nav/README.md: global
anchors cannot be localized per-locale (recommend leaving them shared), and
whether the API Docs tab belongs in the Korean nav at all.

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 santigracia and removed request for a team August 29, 2026 20:53
@linear-code

linear-code Bot commented Aug 29, 2026

Copy link
Copy Markdown

DF-824

@greptile-apps

greptile-apps Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Confidence Score: 4/5

The PR appears safe to merge, with two non-blocking gaps in navigation drift validation and its documentation.

The generated assets and preview transformation are coherent, but --check cannot detect stale generated output and the claimed CI integration is absent.

Files Needing Attention: i18n/scripts/build-locale-nav.mjs, i18n/nav/README.md

Important Files Changed

Filename Overview
i18n/scripts/build-locale-nav.mjs Generates translated locale navigation, but check mode does not verify that committed generated output is current.
i18n/scripts/preview-docsjson-patch.mjs Safely previews the current tabs/global navigation conversion without modifying docs.json.
i18n/nav/README.md Documents rollout decisions but references a nonexistent CI configuration.
i18n/nav/ko.json Adds the generated five-tab Korean navigation tree.
i18n/nav/labels.ko.json Adds the Korean translation map consumed by the generator.

Reviews (1): Last reviewed commit: "DF-824: Korean navigation tree, staged —..." | Re-trigger Greptile

Comment on lines +103 to +105
if (checkOnly) {
console.log(missing.size || unused.size ? "check: FAIL" : "check: OK");
process.exit(missing.size || unused.size ? 1 : 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.

P2 Check Ignores Generated Output

--check validates only missing and unused labels without comparing the generated tree against committed ko.json. Page-path, ordering, nesting, or icon changes therefore still report check: OK while leaving the generated navigation stale.

Comment thread i18n/nav/README.md
Comment on lines +30 to +31
# 1. see exactly what changes
node i18n/scripts/preview-docsjson-patch.mjs ko --write

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.

P2 Documented CI Gate Is Absent

The README says --check runs in config/translate.yml, but that configuration and any equivalent workflow invocation are absent. Maintainers are therefore told CI prevents navigation drift when the check is not automated.

@myronkaifung
myronkaifung marked this pull request as draft September 1, 2026 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant