[{"data":1,"prerenderedAt":1232},["ShallowReactive",2],{"navigation_docs":3,"-configuration-reference":357,"-configuration-reference-surround":1229},[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},"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},"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},"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":125,"body":359,"description":1209,"extension":1222,"links":1223,"meta":1224,"navigation":1225,"path":126,"seo":1226,"stem":127,"__hash__":1228},"docs\u002F5.configuration\u002F4.reference.md",{"type":360,"value":361,"toc":1208},"minimark",[362,371,376,391,414,486,490,493,496,860,864,867,873,876,951,955,958,1013,1016,1021,1023,1059,1061,1066,1069,1105,1110,1163,1168,1171],[363,364,365,366,370],"p",{},"Generated from the zod schema in ",[367,368,369],"code",{},"@the-i18n-kit\u002Fcli"," that validates your config, so it cannot list a field the tool rejects or omit one it accepts.",[372,373,375],"h2",{"id":374},"where-these-fields-may-be-declared","Where These Fields May Be Declared",[363,377,378,379,382,383,386,387,390],{},"Two files carry these fields and both validate against this same schema: ",[367,380,381],{},"i18n-kit.config.ts",", or another accepted extension, and ",[367,384,385],{},".i18n-mcp.json",". Unless the ",[367,388,389],{},"Declared in"," column below says otherwise, a field may be declared in either.",[363,392,393,394,397,398,401,402,405,406,409,410,413],{},"The ",[367,395,396],{},"i18nKit"," block in ",[367,399,400],{},"nuxt.config.ts"," is not a third place for them. ",[367,403,404],{},"@the-i18n-kit\u002Fnuxt"," accepts its own module options there — ",[367,407,408],{},"enabled",", ",[367,411,412],{},"failOnInvalidConfig"," — and reads no field on this page from it. The CLI reads what that module publishes from a build artifact, so a field declared beside your Nuxt config applied to nothing until something had been built, and a pipeline that installs the CLI and runs it against a checkout never builds.",[415,416,417,433],"table",{},[418,419,420],"thead",{},[421,422,423,427,430],"tr",{},[424,425,426],"th",{},"Restriction",[424,428,429],{},"Applies to",[424,431,432],{},"Means",[434,435,436,462],"tbody",{},[421,437,438,444,452],{},[439,440,441,443],"td",{},[367,442,385],{}," only",[439,445,446,409,449],{},[367,447,448],{},"$schema",[367,450,451],{},"samplingPreferences",[439,453,454,455,458,459,461],{},"The schema accepts the key at runtime and the typed config's ",[367,456,457],{},"ProjectConfig"," interface leaves it out, so declaring it in ",[367,460,381],{}," is a type error in your editor.",[421,463,464,469,480],{},[439,465,466,467],{},"Either file; rejected by ",[367,468,404],{},[439,470,471,409,474,409,477],{},[367,472,473],{},"locales",[367,475,476],{},"localeDirs",[367,478,479],{},"defaultLocale",[439,481,482,483,485],{},"Either file accepts the key, and in a Nuxt project running ",[367,484,404],{}," it fails the build: Nuxt resolves these itself, and a hand-written second copy is a source of truth with no tiebreak.",[372,487,489],{"id":488},"fields","Fields",[363,491,492],{},"Every field is optional. The schema is strict, so a key it does not declare fails validation rather than being ignored — a misspelled field stops the command that read it.",[363,494,495],{},"A field marked deprecated still validates, so a config that has one keeps loading. Every loader strips it after validation and warns, naming the file it came from, so the value is accepted and then means nothing.",[415,497,498,516],{},[418,499,500],{},[421,501,502,505,508,511,513],{},[424,503,504],{},"Field",[424,506,507],{},"Type",[424,509,510],{},"Constraints",[424,512,389],{},[424,514,515],{},"Description",[434,517,518,539,559,577,600,619,637,655,676,698,721,741,762,780,802,821,839],{},[421,519,520,524,529,532,536],{},[439,521,522],{},[367,523,448],{},[439,525,526],{},[367,527,528],{},"string",[439,530,531],{},"—",[439,533,534,443],{},[367,535,385],{},[439,537,538],{},"Path or URL to the JSON schema for IDE autocompletion.",[421,540,541,546,550,553,556],{},[439,542,543],{},[367,544,545],{},"framework",[439,547,548],{},[367,549,528],{},[439,551,552],{},"suggested: \"nuxt\", \"laravel\", \"generic\", \"vue\", \"react\"",[439,554,555],{},"Either config file",[439,557,558],{},"Force framework detection instead of auto-detecting from project structure. Any registered adapter name is accepted — the suggestions are the adapters that ship today, not the only permitted values.",[421,560,561,566,570,572,574],{},[439,562,563],{},[367,564,565],{},"context",[439,567,568],{},[367,569,528],{},[439,571,531],{},[439,573,555],{},[439,575,576],{},"Free-form project background for the agent — business domain, user base, brand voice, anything that helps the agent understand the project.",[421,578,579,588,593,595,597],{},[439,580,581],{},[582,583,585],"a",{"href":584},"#layerrules",[367,586,587],{},"layerRules",[439,589,590],{},[367,591,592],{},"object[]",[439,594,531],{},[439,596,555],{},[439,598,599],{},"Rules that help the agent decide which layer a new translation key belongs to. The agent interprets the natural-language 'when' field.",[421,601,602,607,612,614,616],{},[439,603,604],{},[367,605,606],{},"glossary",[439,608,609],{},[367,610,611],{},"Record\u003Cstring, string>",[439,613,531],{},[439,615,555],{},[439,617,618],{},"Term dictionary for consistent translations. Keys are source terms, values describe the required translation or usage note.",[421,620,621,626,630,632,634],{},[439,622,623],{},[367,624,625],{},"translationPrompt",[439,627,628],{},[367,629,528],{},[439,631,531],{},[439,633,555],{},[439,635,636],{},"System prompt prepended to all translation requests (provider mode and agent-mode fallback contexts). Sets tone, style, and constraints.",[421,638,639,644,648,650,652],{},[439,640,641],{},[367,642,643],{},"localeNotes",[439,645,646],{},[367,647,611],{},[439,649,531],{},[439,651,555],{},[439,653,654],{},"Per-locale context included in translation prompts. Keys are locale codes (e.g., 'de-DE', 'en-US', 'de-DE-formal'), values describe register, regional conventions, or other locale-specific guidance.",[421,656,657,665,669,671,673],{},[439,658,659],{},[582,660,662],{"href":661},"#examples",[367,663,664],{},"examples",[439,666,667],{},[367,668,592],{},[439,670,531],{},[439,672,555],{},[439,674,675],{},"Few-shot translation examples that demonstrate the project's style. The agent uses these as reference when generating translations.",[421,677,678,686,691,693,695],{},[439,679,680],{},[582,681,683],{"href":682},"#orphanscan",[367,684,685],{},"orphanScan",[439,687,688],{},[367,689,690],{},"Record\u003Cstring, object>",[439,692,531],{},[439,694,555],{},[439,696,697],{},"Per-layer configuration for orphan key detection. Map each layer name to its settings. Scan directories are automatically determined from each layer's root directory.",[421,699,700,707,712,714,718],{},[439,701,702],{},[582,703,705],{"href":704},"#localedirs",[367,706,476],{},[439,708,709],{},[367,710,711],{},"(string | object)[]",[439,713,531],{},[439,715,466,716],{},[367,717,404],{},[439,719,720],{},"Locale directories for the generic adapter. Each entry is a path string (layer defaults to 'default') or an object with 'path' and 'layer' properties.",[421,722,723,727,731,734,738],{},[439,724,725],{},[367,726,479],{},[439,728,729],{},[367,730,528],{},[439,732,733],{},"minimum length 1",[439,735,466,736],{},[367,737,404],{},[439,739,740],{},"Default locale code. Required for generic adapter activation.",[421,742,743,747,752,755,759],{},[439,744,745],{},[367,746,473],{},[439,748,749],{},[367,750,751],{},"string[]",[439,753,754],{},"each entry: minimum length 1",[439,756,466,757],{},[367,758,404],{},[439,760,761],{},"Explicit list of locale codes to operate on. If absent, locales are auto-discovered from files on disk.",[421,763,764,769,773,775,777],{},[439,765,766],{},[367,767,768],{},"protectedLocales",[439,770,771],{},[367,772,751],{},[439,774,754],{},[439,776,555],{},[439,778,779],{},"Human-maintained locales excluded from automatic translation. Entries may be any locale ref (code, language tag, or file name); entries that do not match a known locale are ignored with a warning. Explicitly naming a protected locale in targetLocales overrides the protection (with a warning).",[421,781,782,790,795,797,799],{},[439,783,784],{},[582,785,787],{"href":786},"#reportoutput",[367,788,789],{},"reportOutput",[439,791,792],{},[367,793,794],{},"true | string",[439,796,531],{},[439,798,555],{},[439,800,801],{},"Enable file output for diagnostic tools (get_missing_translations, search_translations, find_orphan_keys, remove_orphan_keys). When set, each tool writes its full JSON report to \u003CreportOutput>\u002F\u003CtoolName>.json and returns only a summary in the MCP response. Set to true for the default '.i18n-reports\u002F' directory, or a string for a custom path.",[421,803,804,809,814,816,818],{},[439,805,806],{},[367,807,808],{},"localeFileFormat",[439,810,811],{},[367,812,813],{},"\"json\" | \"php-array\"",[439,815,531],{},[439,817,555],{},[439,819,820],{},"Override the auto-detected locale file format. Useful when both formats exist or auto-detection picks wrong.",[421,822,823,828,832,834,836],{},[439,824,825],{},[367,826,827],{},"providerBaseUrl",[439,829,830],{},[367,831,528],{},[439,833,733],{},[439,835,555],{},[439,837,838],{},"Base URL for the LLM provider — gateways, self-hosted model servers and corporate proxies that speak the provider's own protocol. Overrides the endpoint only, not the request shape or auth header. Overridden by the I18N_BASE_URL environment variable and by --baseUrl. Not supported by the \"google\" provider, which rejects it rather than ignoring it.",[421,840,841,846,851,853,857],{},[439,842,843,845],{},[367,844,451],{}," (deprecated)",[439,847,848],{},[367,849,850],{},"unknown",[439,852,531],{},[439,854,855,443],{},[367,856,385],{},[439,858,859],{},"Deprecated and ignored — MCP sampling was removed. Still accepted so existing config files keep validating. Configure a provider instead (e.g., I18N_PROVIDER\u002FI18N_MODEL).",[372,861,863],{"id":862},"nested-shapes","Nested Shapes",[363,865,866],{},"These fields take a structure rather than a single value. The tables state what the structure holds; the descriptions are the schema's own.",[868,869,871],"h3",{"id":870},"layerrules",[367,872,587],{},[363,874,875],{},"Each entry is an object:",[415,877,878,894],{},[418,879,880],{},[421,881,882,885,887,890,892],{},[424,883,884],{},"Property",[424,886,507],{},[424,888,889],{},"Required",[424,891,510],{},[424,893,515],{},[434,895,896,915,933],{},[421,897,898,903,907,910,912],{},[439,899,900],{},[367,901,902],{},"layer",[439,904,905],{},[367,906,528],{},[439,908,909],{},"yes",[439,911,531],{},[439,913,914],{},"Layer name (e.g., 'root', 'app-admin', 'app-shop', 'lang').",[421,916,917,922,926,928,930],{},[439,918,919],{},[367,920,921],{},"description",[439,923,924],{},[367,925,528],{},[439,927,909],{},[439,929,531],{},[439,931,932],{},"What this layer contains — key namespaces, domain scope, etc.",[421,934,935,940,944,946,948],{},[439,936,937],{},[367,938,939],{},"when",[439,941,942],{},[367,943,528],{},[439,945,909],{},[439,947,531],{},[439,949,950],{},"Natural-language rule describing when a key should go in this layer.",[868,952,953],{"id":664},[367,954,664],{},[363,956,957],{},"Each entry: A single translation example. 'key' holds the dot-path translation key (e.g., 'common.actions.save'), 'note' an optional style comment, and every other property is a locale code (e.g., 'de-DE', 'en-US') mapped to its translated value.",[415,959,960,974],{},[418,961,962],{},[421,963,964,966,968,970,972],{},[424,965,884],{},[424,967,507],{},[424,969,889],{},[424,971,510],{},[424,973,515],{},[434,975,976,994],{},[421,977,978,983,987,989,991],{},[439,979,980],{},[367,981,982],{},"key",[439,984,985],{},[367,986,528],{},[439,988,909],{},[439,990,531],{},[439,992,993],{},"The dot-path translation key this example demonstrates (e.g., 'common.actions.save').",[421,995,996,1001,1005,1008,1010],{},[439,997,998],{},[367,999,1000],{},"note",[439,1002,1003],{},[367,1004,528],{},[439,1006,1007],{},"no",[439,1009,531],{},[439,1011,1012],{},"Optional style comment shown alongside the example.",[363,1014,1015],{},"Properties beyond these are accepted rather than rejected, so a key from an older version of the kit does not fail your config. Anything the current schema does not list is ignored.",[868,1017,1019],{"id":1018},"orphanscan",[367,1020,685],{},[363,1022,875],{},[415,1024,1025,1039],{},[418,1026,1027],{},[421,1028,1029,1031,1033,1035,1037],{},[424,1030,884],{},[424,1032,507],{},[424,1034,889],{},[424,1036,510],{},[424,1038,515],{},[434,1040,1041],{},[421,1042,1043,1048,1052,1054,1056],{},[439,1044,1045],{},[367,1046,1047],{},"ignorePatterns",[439,1049,1050],{},[367,1051,751],{},[439,1053,1007],{},[439,1055,531],{},[439,1057,1058],{},"Glob patterns for translation keys to exclude from orphan detection (e.g., \"common.datetime.months.*\"). Use * to match a single key segment, ** to match any depth.",[363,1060,1015],{},[868,1062,1064],{"id":1063},"localedirs",[367,1065,476],{},[363,1067,1068],{},"Each entry takes one of these forms:",[415,1070,1071,1081],{},[418,1072,1073],{},[421,1074,1075,1077,1079],{},[424,1076,507],{},[424,1078,510],{},[424,1080,515],{},[434,1082,1083,1094],{},[421,1084,1085,1089,1091],{},[439,1086,1087],{},[367,1088,528],{},[439,1090,733],{},[439,1092,1093],{},"Relative path to a locale directory. Layer name defaults to 'default'.",[421,1095,1096,1101,1103],{},[439,1097,1098],{},[367,1099,1100],{},"object",[439,1102,531],{},[439,1104,531],{},[363,1106,393,1107,1109],{},[367,1108,1100],{}," form holds:",[415,1111,1112,1126],{},[418,1113,1114],{},[421,1115,1116,1118,1120,1122,1124],{},[424,1117,884],{},[424,1119,507],{},[424,1121,889],{},[424,1123,510],{},[424,1125,515],{},[434,1127,1128,1146],{},[421,1129,1130,1135,1139,1141,1143],{},[439,1131,1132],{},[367,1133,1134],{},"path",[439,1136,1137],{},[367,1138,528],{},[439,1140,909],{},[439,1142,733],{},[439,1144,1145],{},"Relative path to a locale directory.",[421,1147,1148,1152,1156,1158,1160],{},[439,1149,1150],{},[367,1151,902],{},[439,1153,1154],{},[367,1155,528],{},[439,1157,909],{},[439,1159,733],{},[439,1161,1162],{},"Layer name for this locale directory.",[868,1164,1166],{"id":1165},"reportoutput",[367,1167,789],{},[363,1169,1170],{},"The value takes one of these forms:",[415,1172,1173,1183],{},[418,1174,1175],{},[421,1176,1177,1179,1181],{},[424,1178,507],{},[424,1180,510],{},[424,1182,515],{},[434,1184,1185,1197],{},[421,1186,1187,1192,1194],{},[439,1188,1189],{},[367,1190,1191],{},"true",[439,1193,531],{},[439,1195,1196],{},"Set to true to write reports to the default '.i18n-reports\u002F' directory.",[421,1198,1199,1203,1205],{},[439,1200,1201],{},[367,1202,528],{},[439,1204,733],{},[439,1206,1207],{},"Custom directory path (relative to project root) where diagnostic tool reports are written.",{"title":1209,"searchDepth":1210,"depth":1210,"links":1211},"",3,[1212,1214,1215],{"id":374,"depth":1213,"text":375},2,{"id":488,"depth":1213,"text":489},{"id":862,"depth":1213,"text":863,"children":1216},[1217,1218,1219,1220,1221],{"id":870,"depth":1210,"text":587},{"id":664,"depth":1210,"text":664},{"id":1018,"depth":1210,"text":685},{"id":1063,"depth":1210,"text":476},{"id":1165,"depth":1210,"text":789},"md",null,{},true,{"description":1227,"title":125},"Every field a kit config file accepts: its type, its constraints, where it may be declared and what it does.","y2-nfIScBmDAQo2clitjGMD634C_R9303mV1r_p2kSw",[1230,1231],{"title":121,"path":122,"stem":123,"description":1209,"children":-1},{"title":129,"path":130,"stem":131,"description":1209,"children":-1},1787604651552]