[{"data":1,"prerenderedAt":714},["ShallowReactive",2],{"navigation_docs":3,"-introduction-why":357,"-introduction-why-surround":712},[4,22,40,53,78,107,132,153,167,176,347],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Introduction","\u002Fintroduction","1.introduction",[9,13,17],{"title":10,"path":11,"stem":12},"Why the-i18n-kit","\u002Fintroduction\u002Fwhy","1.introduction\u002F1.why",{"title":14,"path":15,"stem":16},"Architecture","\u002Fintroduction\u002Farchitecture","1.introduction\u002F2.architecture",{"title":18,"path":19,"stem":20},"Built for Agents","\u002Fintroduction\u002Fbuilt-for-agents","1.introduction\u002F3.built-for-agents",false,{"title":23,"icon":24,"path":25,"stem":26,"children":27,"page":21},"ESLint Plugin","i-lucide-shield-check","\u002Feslint-plugin","10.eslint-plugin",[28,32,36],{"title":29,"path":30,"stem":31},"Install and Presets","\u002Feslint-plugin\u002Finstall","10.eslint-plugin\u002F1.install",{"title":33,"path":34,"stem":35},"The Rules","\u002Feslint-plugin\u002Frules","10.eslint-plugin\u002F2.rules",{"title":37,"path":38,"stem":39},"Layer-Aware Missing Keys","\u002Feslint-plugin\u002Flayer-aware","10.eslint-plugin\u002F3.layer-aware",{"title":41,"path":42,"stem":43,"children":44,"page":21},"Getting Started","\u002Fgetting-started","2.getting-started",[45,49],{"title":46,"path":47,"stem":48},"Set Up the MCP Server","\u002Fgetting-started\u002Fagent-setup","2.getting-started\u002F1.agent-setup",{"title":50,"path":51,"stem":52},"From an Unconfigured Repository to a Gated CI Job","\u002Fgetting-started\u002Fcold-start","2.getting-started\u002F2.cold-start",{"title":54,"path":55,"stem":56,"children":57,"page":21},"Monorepos","\u002Fmonorepos","3.monorepos",[58,62,66,70,74],{"title":59,"path":60,"stem":61},"Layers","\u002Fmonorepos\u002Flayers","3.monorepos\u002F1.layers",{"title":63,"path":64,"stem":65},"The Consumer Graph","\u002Fmonorepos\u002Fconsumer-graph","3.monorepos\u002F2.consumer-graph",{"title":67,"path":68,"stem":69},"The Shared Library Scenario","\u002Fmonorepos\u002Fshared-libraries","3.monorepos\u002F3.shared-libraries",{"title":71,"path":72,"stem":73},"Duplicates and Divergence","\u002Fmonorepos\u002Fduplicates-and-divergence","3.monorepos\u002F4.duplicates-and-divergence",{"title":75,"path":76,"stem":77},"Misplaced Usages","\u002Fmonorepos\u002Fmisplaced-usages","3.monorepos\u002F5.misplaced-usages",{"title":79,"path":80,"stem":81,"children":82,"page":21},"Frameworks","\u002Fframeworks","4.frameworks",[83,87,91,95,99,103],{"title":84,"path":85,"stem":86},"Detection","\u002Fframeworks\u002Fdetection","4.frameworks\u002F1.detection",{"title":88,"path":89,"stem":90},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F2.nuxt",{"title":92,"path":93,"stem":94},"Laravel","\u002Fframeworks\u002Flaravel","4.frameworks\u002F3.laravel",{"title":96,"path":97,"stem":98},"Vue","\u002Fframeworks\u002Fvue","4.frameworks\u002F4.vue",{"title":100,"path":101,"stem":102},"React \u002F Next.js","\u002Fframeworks\u002Freact-next","4.frameworks\u002F5.react-next",{"title":104,"path":105,"stem":106},"Generic","\u002Fframeworks\u002Fgeneric","4.frameworks\u002F6.generic",{"title":108,"path":109,"stem":110,"children":111,"page":21},"Configuration","\u002Fconfiguration","5.configuration",[112,116,120,124,128],{"title":113,"path":114,"stem":115},"Where Configuration Lives","\u002Fconfiguration\u002Fwhere-config-lives","5.configuration\u002F1.where-config-lives",{"title":117,"path":118,"stem":119},"Precedence and Conflicts","\u002Fconfiguration\u002Fprecedence","5.configuration\u002F2.precedence",{"title":121,"path":122,"stem":123},"Declared vs. Derived Configuration","\u002Fconfiguration\u002Fdeclared-vs-derived","5.configuration\u002F3.declared-vs-derived",{"title":125,"path":126,"stem":127},"Configuration Fields","\u002Fconfiguration\u002Freference","5.configuration\u002F4.reference",{"title":129,"path":130,"stem":131},"Referring to Locales","\u002Fconfiguration\u002Flocale-refs","5.configuration\u002F5.locale-refs",{"title":133,"path":134,"stem":135,"children":136,"page":21},"Nuxt Module","\u002Fnuxt-module","6.nuxt-module",[137,141,145,149],{"title":138,"path":139,"stem":140},"Install and Setup","\u002Fnuxt-module\u002Finstall","6.nuxt-module\u002F1.install",{"title":142,"path":143,"stem":144},"What It Publishes","\u002Fnuxt-module\u002Fwhat-it-publishes","6.nuxt-module\u002F2.what-it-publishes",{"title":146,"path":147,"stem":148},"What It Validates","\u002Fnuxt-module\u002Fvalidation","6.nuxt-module\u002F3.validation",{"title":150,"path":151,"stem":152},"Options and Limits","\u002Fnuxt-module\u002Foptions-and-limits","6.nuxt-module\u002F4.options-and-limits",{"title":154,"icon":155,"path":156,"stem":157,"children":158,"page":21},"CI\u002FCD","i-lucide-git-pull-request","\u002Fci-cd","7.ci-cd",[159,163],{"title":160,"path":161,"stem":162},"GitHub Actions","\u002Fci-cd\u002Fgithub-actions","7.ci-cd\u002F1.github-actions",{"title":164,"path":165,"stem":166},"GitLab CI","\u002Fci-cd\u002Fgitlab-ci","7.ci-cd\u002F2.gitlab-ci",{"title":168,"path":169,"stem":170,"children":171,"page":21},"Concepts","\u002Fconcepts","8.concepts",[172],{"title":173,"path":174,"stem":175},"Translation Modes","\u002Fconcepts\u002Ftranslation-modes","8.concepts\u002F1.translation-modes",{"title":177,"path":178,"stem":179,"children":180,"page":-1},"Reference","\u002Freference","9.reference",[181,183,261,339,343],{"title":177,"path":178,"stem":182},"9.reference\u002Findex",{"title":184,"path":185,"stem":186,"children":187,"page":-1},"CLI Commands","\u002Freference\u002Fcli","9.reference\u002F1.cli\u002Findex",[188,189,193,197,201,205,209,213,217,221,225,229,233,237,241,245,249,253,257],{"title":184,"path":185,"stem":186},{"title":190,"path":191,"stem":192},"add","\u002Freference\u002Fcli\u002Fadd","9.reference\u002F1.cli\u002Fadd",{"title":194,"path":195,"stem":196},"check","\u002Freference\u002Fcli\u002Fcheck","9.reference\u002F1.cli\u002Fcheck",{"title":198,"path":199,"stem":200},"find-duplicates","\u002Freference\u002Fcli\u002Ffind-duplicates","9.reference\u002F1.cli\u002Ffind-duplicates",{"title":202,"path":203,"stem":204},"get","\u002Freference\u002Fcli\u002Fget","9.reference\u002F1.cli\u002Fget",{"title":206,"path":207,"stem":208},"init","\u002Freference\u002Fcli\u002Finit","9.reference\u002F1.cli\u002Finit",{"title":210,"path":211,"stem":212},"missing","\u002Freference\u002Fcli\u002Fmissing","9.reference\u002F1.cli\u002Fmissing",{"title":214,"path":215,"stem":216},"move","\u002Freference\u002Fcli\u002Fmove","9.reference\u002F1.cli\u002Fmove",{"title":218,"path":219,"stem":220},"remove","\u002Freference\u002Fcli\u002Fremove","9.reference\u002F1.cli\u002Fremove",{"title":222,"path":223,"stem":224},"remove-orphans","\u002Freference\u002Fcli\u002Fremove-orphans","9.reference\u002F1.cli\u002Fremove-orphans",{"title":226,"path":227,"stem":228},"rename","\u002Freference\u002Fcli\u002Frename","9.reference\u002F1.cli\u002Frename",{"title":230,"path":231,"stem":232},"scaffold","\u002Freference\u002Fcli\u002Fscaffold","9.reference\u002F1.cli\u002Fscaffold",{"title":234,"path":235,"stem":236},"scan","\u002Freference\u002Fcli\u002Fscan","9.reference\u002F1.cli\u002Fscan",{"title":238,"path":239,"stem":240},"search","\u002Freference\u002Fcli\u002Fsearch","9.reference\u002F1.cli\u002Fsearch",{"title":242,"path":243,"stem":244},"status","\u002Freference\u002Fcli\u002Fstatus","9.reference\u002F1.cli\u002Fstatus",{"title":246,"path":247,"stem":248},"translate","\u002Freference\u002Fcli\u002Ftranslate","9.reference\u002F1.cli\u002Ftranslate",{"title":250,"path":251,"stem":252},"translate-key","\u002Freference\u002Fcli\u002Ftranslate-key","9.reference\u002F1.cli\u002Ftranslate-key",{"title":254,"path":255,"stem":256},"update","\u002Freference\u002Fcli\u002Fupdate","9.reference\u002F1.cli\u002Fupdate",{"title":258,"path":259,"stem":260},"write","\u002Freference\u002Fcli\u002Fwrite","9.reference\u002F1.cli\u002Fwrite",{"title":262,"path":263,"stem":264,"children":265,"page":-1},"MCP Tools","\u002Freference\u002Fmcp","9.reference\u002F2.mcp\u002Findex",[266,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327,331,335],{"title":262,"path":263,"stem":264},{"title":268,"path":269,"stem":270},"discover","\u002Freference\u002Fmcp\u002Fdiscover","9.reference\u002F2.mcp\u002Fdiscover",{"title":272,"path":273,"stem":274},"find_duplicate_keys","\u002Freference\u002Fmcp\u002Ffind_duplicate_keys","9.reference\u002F2.mcp\u002Ffind_duplicate_keys",{"title":276,"path":277,"stem":278},"find_empty_translations","\u002Freference\u002Fmcp\u002Ffind_empty_translations","9.reference\u002F2.mcp\u002Ffind_empty_translations",{"title":280,"path":281,"stem":282},"find_orphan_keys","\u002Freference\u002Fmcp\u002Ffind_orphan_keys","9.reference\u002F2.mcp\u002Ffind_orphan_keys",{"title":284,"path":285,"stem":286},"find_undefined_keys","\u002Freference\u002Fmcp\u002Ffind_undefined_keys","9.reference\u002F2.mcp\u002Ffind_undefined_keys",{"title":288,"path":289,"stem":290},"get_missing_translations","\u002Freference\u002Fmcp\u002Fget_missing_translations","9.reference\u002F2.mcp\u002Fget_missing_translations",{"title":292,"path":293,"stem":294},"get_translation_status","\u002Freference\u002Fmcp\u002Fget_translation_status","9.reference\u002F2.mcp\u002Fget_translation_status",{"title":296,"path":297,"stem":298},"get_translations","\u002Freference\u002Fmcp\u002Fget_translations","9.reference\u002F2.mcp\u002Fget_translations",{"title":300,"path":301,"stem":302},"list_namespaces","\u002Freference\u002Fmcp\u002Flist_namespaces","9.reference\u002F2.mcp\u002Flist_namespaces",{"title":304,"path":305,"stem":306},"move_translation_key","\u002Freference\u002Fmcp\u002Fmove_translation_key","9.reference\u002F2.mcp\u002Fmove_translation_key",{"title":308,"path":309,"stem":310},"remove_orphan_keys","\u002Freference\u002Fmcp\u002Fremove_orphan_keys","9.reference\u002F2.mcp\u002Fremove_orphan_keys",{"title":312,"path":313,"stem":314},"remove_translations","\u002Freference\u002Fmcp\u002Fremove_translations","9.reference\u002F2.mcp\u002Fremove_translations",{"title":316,"path":317,"stem":318},"rename_translation_key","\u002Freference\u002Fmcp\u002Frename_translation_key","9.reference\u002F2.mcp\u002Frename_translation_key",{"title":320,"path":321,"stem":322},"scaffold_locale","\u002Freference\u002Fmcp\u002Fscaffold_locale","9.reference\u002F2.mcp\u002Fscaffold_locale",{"title":324,"path":325,"stem":326},"search_translations","\u002Freference\u002Fmcp\u002Fsearch_translations","9.reference\u002F2.mcp\u002Fsearch_translations",{"title":328,"path":329,"stem":330},"translate_key","\u002Freference\u002Fmcp\u002Ftranslate_key","9.reference\u002F2.mcp\u002Ftranslate_key",{"title":332,"path":333,"stem":334},"translate_missing","\u002Freference\u002Fmcp\u002Ftranslate_missing","9.reference\u002F2.mcp\u002Ftranslate_missing",{"title":336,"path":337,"stem":338},"write_translations","\u002Freference\u002Fmcp\u002Fwrite_translations","9.reference\u002F2.mcp\u002Fwrite_translations",{"title":340,"path":341,"stem":342},"GitHub Action","\u002Freference\u002Faction","9.reference\u002F3.action",{"title":344,"path":345,"stem":346},"Programmatic API","\u002Freference\u002Fprogrammatic-api","9.reference\u002F4.programmatic-api",{"title":348,"icon":349,"path":350,"stem":351,"children":352,"page":21},"Extra Topics","i-lucide-microscope","\u002Fextra-topics","91.extra-topics",[353],{"title":354,"path":355,"stem":356},"How Detection Scores Adapters","\u002Fextra-topics\u002Fdetection-scoring","91.extra-topics\u002F1.detection-scoring",{"id":358,"title":10,"body":359,"description":484,"extension":705,"links":706,"meta":707,"navigation":708,"path":11,"seo":709,"stem":12,"__hash__":711},"docs\u002F1.introduction\u002F1.why.md",{"type":360,"value":361,"toc":693},"minimark",[362,367,371,392,400,406,410,415,422,426,434,468,472,475,478,515,524,527,531,542,545,637,640,644,647,673,677,689],[363,364,366],"h2",{"id":365},"the-problem","The Problem",[368,369,370],"p",{},"Translation files are data that no compiler checks. Nothing fails when a key is\nreferenced but never defined, and nothing fails when a key is defined but nothing\nreferences it. Both conditions accumulate silently:",[372,373,374,378,381,384],"ul",{},[375,376,377],"li",{},"A new component needs its key created in every locale file, by hand.",[375,379,380],{},"Deleted components leave keys behind. Nobody knows which of them are safe to\nremove, so nobody removes any of them.",[375,382,383],{},"Renaming a key means finding it across every locale file and every call site.",[375,385,386,387,391],{},"An AI agent writing ",[388,389,390],"code",{},"$t('booking.confirm.title')"," has no idea where the locale\nfiles are or what already exists — and finding out by reading the files means\npulling thousands of lines into its context window to learn one fact.",[368,393,394,395,399],{},"The kit treats these as operations rather than as chores: targeted reads that\nreturn the keys you asked for, writes applied across every locale in one call, and\na scan that reports ",[396,397,398],"em",{},"why"," a key looks unused before offering to delete it.",[368,401,402,403,405],{},"On a production Nuxt monorepo, one ",[388,404,222],{}," run covered about 2,526 source\nfiles and reported about 1,103 orphan keys — a number nobody was going to reach by\ngrepping.",[363,407,409],{"id":408},"who-it-is-for","Who It Is For",[411,412,414],"h3",{"id":413},"you-work-with-an-ai-agent","You Work With an AI Agent",[368,416,417,418,421],{},"You want your agent to maintain translations as part of its normal editing loop,\nwithout the loop costing you a context window. The kit's design constraints follow\nfrom that: results are JSON, large results divert to a file and return a summary,\nand failures carry machine-readable reasons an agent can branch on rather than\nprose it has to interpret. See ",[419,420,18],"a",{"href":19},"\nfor each claim and the mechanism behind it.",[411,423,425],{"id":424},"you-maintain-i18n-in-a-large-monorepo","You Maintain i18n in a Large Monorepo",[368,427,428,429,433],{},"You have ",[430,431,432],"strong",{},"layers"," — scoped locale directories, whether those are Nuxt layers,\nworkspace packages, a shared UI library, or one app among several in a monorepo —\nand the same key can mean different things in different ones. What you need from a\ntool is not speed, it is a reason to trust a deletion.",[368,435,436,437,440,441,444,445,448,449,452,453,456,457,460,461,463,464,467],{},"The kit builds a ",[430,438,439],{},"consumer graph"," from your project config: which apps consume\nwhich layers. Usage evidence is then counted per consuming app, so a key used in\n",[388,442,443],{},"app-shop"," does not protect the same key name in ",[388,446,447],{},"app-admin",", and a key in a shared\nlayer referenced only from an app that does not consume that layer is reported as a\n",[430,450,451],{},"misplaced usage"," rather than as proof of life. Keys with ambiguous evidence\nbecome ",[430,454,455],{},"uncertain keys"," and are never removed — not on a dry run, not on a\nconfirmed run. Only ",[430,458,459],{},"orphan keys",", with no usage evidence in any consuming app,\nare ever deleted, and ",[388,462,222],{}," runs as a preview unless you pass\n",[388,465,466],{},"--no-dry-run",".",[363,469,471],{"id":470},"who-does-not-need-this","Who Does Not Need This",[368,473,474],{},"A single-locale project with one locale file and a few dozen keys does not have the\nproblem this kit was built for. You can read the file. Nothing drifts, because there\nis nothing to drift from. Installing a toolkit to manage one JSON file is work you\nwould be doing for its own sake.",[368,476,477],{},"One piece is still worth ten minutes, because it catches a class of bug that a\nsingle-locale project has as badly as a monorepo does: a key that is referenced in\ncode and defined nowhere renders as the raw key string in production.",[479,480,485],"pre",{"className":481,"code":482,"language":483,"meta":484,"style":484},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install -g @the-i18n-kit\u002Fcli\nthe-i18n-cli check\n","bash","",[388,486,487,506],{"__ignoreMap":484},[488,489,492,496,500,503],"span",{"class":490,"line":491},"line",1,[488,493,495],{"class":494},"sBMFI","npm",[488,497,499],{"class":498},"sfazB"," install",[488,501,502],{"class":498}," -g",[488,504,505],{"class":498}," @the-i18n-kit\u002Fcli\n",[488,507,509,512],{"class":490,"line":508},2,[488,510,511],{"class":494},"the-i18n-cli",[488,513,514],{"class":498}," check\n",[368,516,517,519,520,523],{},[388,518,194],{}," reports keys referenced in source but defined in no locale layer the using\napp consumes, and exits non-zero when it finds any — so it works as a CI step with\nno config file and no further adoption. Dynamically built keys (template literals,\nconcatenation) cannot be verified statically and are reported as ",[388,521,522],{},"uncertainKeys",",\nnever as hard findings, so the step does not go red on something it cannot prove.",[368,525,526],{},"If that step earns its keep and your project later grows a second locale, the rest\nof the kit is already installed.",[363,528,530],{"id":529},"i18n-linters-are-complements","i18n Linters Are Complements",[368,532,533,534,537,538,541],{},"If you run ",[388,535,536],{},"eslint-plugin-i18next",", ",[388,539,540],{},"vue-i18n","'s ESLint rules, or a similar linter,\nkeep running it. It does something this kit does not: it inspects call sites as you\ntype them and enforces how translation calls are written — no bare user-facing\nstrings, no missing namespace, no interpolation the linter cannot resolve.",[368,543,544],{},"The distinction is what each one can see:",[546,547,548,564],"table",{},[549,550,551],"thead",{},[552,553,554,558,561],"tr",{},[555,556,557],"th",{},"Question",[555,559,560],{},"A linter",[555,562,563],{},"the-i18n-kit",[565,566,567,579,590,610,623],"tbody",{},[552,568,569,573,576],{},[570,571,572],"td",{},"Is this call site written correctly?",[570,574,575],{},"Yes — that is its job",[570,577,578],{},"No",[552,580,581,584,587],{},[570,582,583],{},"Which keys in this locale file does no code reference?",[570,585,586],{},"No — it reads one file at a time",[570,588,589],{},"Yes, per consuming app",[552,591,592,603,605],{},[570,593,594,595,598,599,602],{},"Rename ",[388,596,597],{},"a.b.c"," to ",[388,600,601],{},"x.y.z"," across 30 locale files",[570,604,578],{},[570,606,607,609],{},[388,608,226],{}," writes every locale file in one call",[552,611,612,615,618],{},[570,613,614],{},"Which apps consume this shared layer?",[570,616,617],{},"No — it has no project model",[570,619,620,622],{},[388,621,198],{}," and the orphan scan both read the consumer graph",[552,624,625,628,630],{},[570,626,627],{},"Fill the missing locales for a key",[570,629,578],{},[570,631,632,634,635],{},[388,633,246],{}," and ",[388,636,250],{},[368,638,639],{},"A linter is a rule applied to a file. The kit is a model of the project — locale\ntable, layers, consumer graph — plus operations that act across all of it. Neither\nsubstitutes for the other, and they do not conflict: the kit reads your source, it\ndoes not rewrite call sites.",[363,641,643],{"id":642},"what-it-cannot-do","What It Cannot Do",[368,645,646],{},"Stated up front, because a page that lists no limits is an advertisement:",[372,648,649,655,661,667],{},[375,650,651,654],{},[430,652,653],{},"Key extraction is static and line-based."," A key assembled at runtime from\nvalues the scanner cannot see is reported as uncertain, not resolved.",[375,656,657,660],{},[430,658,659],{},"Deletion decisions are only as good as your project config."," With no app\ninformation, every layer is treated as globally visible — conservative, and\ntherefore quieter about genuine orphans in a monorepo you have not described yet.",[375,662,663,666],{},[430,664,665],{},"Translation quality is the provider's."," The kit validates placeholder parity\nand plural-variant counts and rejects values that fail, but it does not judge\nwhether a translation is good.",[375,668,669,672],{},[430,670,671],{},"It does not detect hardcoded user-facing strings."," That is what a linter is\nfor.",[363,674,676],{"id":675},"next","Next",[372,678,679,684],{},[375,680,681,683],{},[419,682,14],{"href":15}," — one engine, five surfaces, and why\nthe terminal and your agent return the same answer.",[375,685,686,688],{},[419,687,18],{"href":19}," — the agent-first claims and\nthe mechanism behind each one.",[690,691,692],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":484,"searchDepth":694,"depth":694,"links":695},3,[696,697,701,702,703,704],{"id":365,"depth":508,"text":366},{"id":408,"depth":508,"text":409,"children":698},[699,700],{"id":413,"depth":694,"text":414},{"id":424,"depth":694,"text":425},{"id":470,"depth":508,"text":471},{"id":529,"depth":508,"text":530},{"id":642,"depth":508,"text":643},{"id":675,"depth":508,"text":676},"md",null,{},true,{"description":710,"title":10},"The problem the kit solves, the two groups it is built for, who does not need it, and how it relates to the i18n linter you may already run.","CH2ZrCAhMuo0CaBx2jmgF7N2SD7OnEn2nsPdAIBXtsI",[706,713],{"title":14,"path":15,"stem":16,"description":484,"children":-1},1787604647514]