DF-830: staged translation config (gt.config.json) - #210
Conversation
Staged under i18n/config/ rather than at the repo root, where it would be live. Moving it early fails immediately — it targets a $.navigation.languages path that does not exist until DF-824 is applied. Note the filename: this is gt.config.json, General Translation's format, not Lingo.dev's i18n.json. DF-827 recommends against Lingo.dev — no heading-anchor pinning, no docs.json nav localization, no OpenAPI support. And if Mintlify-native translations win, this file gets deleted rather than moved: there is no config to write. Adapted from mintlify/docs' own gt.config.json, since Mintlify localize their documentation with this tool on this exact stack. Settings retained because they solve the hard problems: experimentalAddHeaderAnchorIds pins the 710 fragment links, experimentalLocalizeStaticUrls rewrites 2,721 internal links, the jsonSchema composite rule does all of DF-824 automatically, generateRedirects keeps our 881 redirects working per locale, and experimentalHideDefaultLocale keeps English at the repo root. Differences from theirs: reference/ and changelogs.mdx excluded per DF-826 scope, snippets/ excluded (verified — only proper nouns), no OpenAPI bucket (theirs is *.openapi.json, ours is openapi/*.yaml), and locales en + ko. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Confidence Score: 4/5The missing glossary integration should be fixed before this configuration is activated or merged as the DF-830 deliverable. The configured translation path processes Wave 1 documentation without supplying the required glossary and protected-term rules, so generated Korean content can violate established terminology requirements. Files Needing Attention: i18n/config/gt.config.json
|
| Filename | Overview |
|---|---|
| i18n/config/gt.config.json | Adds the staged GT translation configuration, but omits the required glossary/custom-instructions integration. |
| i18n/config/README.md | Clearly documents the staged state, activation conditions, scope decisions, and fallback plan. |
Reviews (1): Last reviewed commit: "DF-830: staged translation config (gt.co..." | Re-trigger Greptile
| "_comment": "STAGED — not active. Move to the repo root only after the docs.json languages array exists (see i18n/nav/README.md) and GT is chosen over Mintlify-native translations (see i18n/03-tooling-evaluation.md). Adapted from mintlify/docs' own gt.config.json.", | ||
|
|
||
| "defaultLocale": "en", | ||
| "locales": ["en", "ko"], |
There was a problem hiding this comment.
When this config runs Korean translation, it processes all Wave 1 MDX without supplying the required glossary and do-not-translate rules, causing reserved Mixpanel terms and other protected terminology to be translated inconsistently or incorrectly.
Source Used: Linear — [M3] Add i18n.json translation config
Documents in
i18n/cross-reference each other, so relative links to files added later in the stackresolve 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.jsonis untouched, no workflow is installed, andno
ko/tree exists at the repo root. Turning Korean on is a separate, deliberate sequence:docs.jsonlanguagesarray;cp i18n/nav/ko.json ./ko.jsondocs/+guides/intoko/gt.config.jsonto root,translate.ymlto.github/workflows/, setGT_API_KEY+GT_PROJECT_ID/koSteps 3 and 6 are the only ones that change live behaviour. Both are reversible by reverting one file.
Adds:
config/gt.config.json,config/README.mdNote the filename
This is
gt.config.json— General Translation's format — not Lingo.dev'si18n.jsonthat the issue title names. DF-827 recommends against Lingo.dev: no heading-anchor pinning, nodocs.jsonnav localization, no OpenAPI support.If Mintlify-native translations win the DF-827 decision, delete this file rather than moving it — there is no config to write. That decision is upstream in this stack and is not settled yet.
Why these settings
Adapted from
mintlify/docs' owngt.config.json, since Mintlify localize their documentation with this tool on this exact stack. Retained because they solve the hard problems:experimentalAddHeaderAnchorIds: "mintlify"#fragmentlinksexperimentalLocalizeStaticUrls+docsUrlPattern/ko/...jsonSchema.composite["$.navigation.languages"]generateRedirectsexperimentalHideDefaultLocaleDifferences from theirs:
reference/andchangelogs.mdxexcluded per DF-826 scope,snippets/excluded (verified — only proper nouns), no OpenAPI bucket (theirs is*.openapi.json, ours isopenapi/*.yaml), andlocales: ["en", "ko"].Acceptance not met, deliberately
The issue asks that it "runs locally and produces correct
ko/output for a changed page." That needs a General Translation account and the DF-824 config applied. It is step one of the DF-827 bake-off, and the validator is the pass/fail.