[{"data":1,"prerenderedAt":850},["ShallowReactive",2],{"navigation_docs":3,"-eslint-plugin-install":357,"-eslint-plugin-install-surround":847},[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":29,"body":359,"description":396,"extension":841,"links":842,"meta":843,"navigation":482,"path":30,"seo":844,"stem":31,"__hash__":846},"docs\u002F10.eslint-plugin\u002F1.install.md",{"type":360,"value":361,"toc":834},"minimark",[362,379,385,390,418,440,444,447,525,547,603,606,710,714,724,727,753,760,764,810,814,830],[363,364,365,369,370,374,375,378],"p",{},[366,367,368],"code",{},"@the-i18n-kit\u002Feslint-plugin-vue"," moves two classes of i18n feedback from CI\ninto the editor: authoring idioms that blind the orphan scanner, and keys that\ndo not exist for the app using them. The ",[371,372,373],"a",{"href":34},"rules"," and the\n",[371,376,377],{"href":38},"layer-aware factory"," each have their own page.",[363,380,381,382,384],{},"The plugin is purely additive to the scanner. The scan keeps every safety net\n— the candidate net, wide dynamic patterns, the uncertain classification —\nbecause ",[366,383,222],{}," must stay safe on code the lint never saw: old\ncommits, generated files, repos that never adopt the plugin. What the rules\nchange is how much work those nets do, not whether they exist.",[386,387,389],"h2",{"id":388},"_1-install-the-package","1. Install the Package",[391,392,397],"pre",{"className":393,"code":394,"language":395,"meta":396,"style":396},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add -D @the-i18n-kit\u002Feslint-plugin-vue\n","bash","",[366,398,399],{"__ignoreMap":396},[400,401,404,408,412,415],"span",{"class":402,"line":403},"line",1,[400,405,407],{"class":406},"sBMFI","pnpm",[400,409,411],{"class":410},"sfazB"," add",[400,413,414],{"class":410}," -D",[400,416,417],{"class":410}," @the-i18n-kit\u002Feslint-plugin-vue\n",[363,419,420,421,424,425,427,428,431,432,435,436,439],{},"It requires ESLint ",[366,422,423],{},"^9.10.0"," (flat config only) and Node 18 or newer. One\npeer is optional and only needed for the\n",[371,426,377],{"href":38},":\n",[366,429,430],{},"@intlify\u002Feslint-plugin-vue-i18n"," (",[366,433,434],{},"^3.0.0 || ^4.0.0","), whose\n",[366,437,438],{},"no-missing-keys"," the factory configures. The two authoring rules work\nwithout it.",[386,441,443],{"id":442},"_2-spread-a-preset","2. Spread a Preset",[363,445,446],{},"The default export carries the plugin and two presets as ordinary flat-config\narrays:",[391,448,453],{"className":449,"code":450,"filename":451,"language":452,"meta":396,"style":396},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import i18nKit from '@the-i18n-kit\u002Feslint-plugin-vue'\n\nexport default [\n  ...i18nKit.configs.recommended,\n]\n","eslint.config.mjs","js",[366,454,455,477,484,496,519],{"__ignoreMap":396},[400,456,457,461,465,468,472,474],{"class":402,"line":403},[400,458,460],{"class":459},"s7zQu","import",[400,462,464],{"class":463},"sTEyZ"," i18nKit ",[400,466,467],{"class":459},"from",[400,469,471],{"class":470},"sMK4o"," '",[400,473,368],{"class":410},[400,475,476],{"class":470},"'\n",[400,478,480],{"class":402,"line":479},2,[400,481,483],{"emptyLinePlaceholder":482},true,"\n",[400,485,487,490,493],{"class":402,"line":486},3,[400,488,489],{"class":459},"export",[400,491,492],{"class":459}," default",[400,494,495],{"class":463}," [\n",[400,497,499,502,505,508,511,513,516],{"class":402,"line":498},4,[400,500,501],{"class":470},"  ...",[400,503,504],{"class":463},"i18nKit",[400,506,507],{"class":470},".",[400,509,510],{"class":463},"configs",[400,512,507],{"class":470},[400,514,515],{"class":463},"recommended",[400,517,518],{"class":470},",\n",[400,520,522],{"class":402,"line":521},5,[400,523,524],{"class":463},"]\n",[363,526,527,528,531,532,535,536,535,539,542,543,546],{},"Both presets register the plugin under the ",[366,529,530],{},"@the-i18n-kit\u002Fvue"," prefix and\napply to ",[366,533,534],{},"**\u002F*.vue",", ",[366,537,538],{},"**\u002F*.ts",[366,540,541],{},"**\u002F*.js"," and ",[366,544,545],{},"**\u002F*.mjs",". They differ in one\nseverity:",[548,549,550,569],"table",{},[551,552,553],"thead",{},[554,555,556,560,564],"tr",{},[557,558,559],"th",{},"Rule",[557,561,562],{},[366,563,515],{},[557,565,566],{},[366,567,568],{},"strict",[570,571,572,588],"tbody",{},[554,573,574,583,586],{},[575,576,577],"td",{},[371,578,580],{"href":579},"\u002Feslint-plugin\u002Frules#literal-key-prefix",[366,581,582],{},"literal-key-prefix",[575,584,585],{},"error",[575,587,585],{},[554,589,590,598,601],{},[575,591,592],{},[371,593,595],{"href":594},"\u002Feslint-plugin\u002Frules#runtime-key-needs-declared-namespace",[366,596,597],{},"runtime-key-needs-declared-namespace",[575,599,600],{},"warn",[575,602,585],{},[363,604,605],{},"Overriding a severity is plain flat-config precedence — a later entry wins:",[391,607,609],{"className":449,"code":608,"filename":451,"language":452,"meta":396,"style":396},"import i18nKit from '@the-i18n-kit\u002Feslint-plugin-vue'\n\nexport default [\n  ...i18nKit.configs.recommended,\n  {\n    rules: {\n      '@the-i18n-kit\u002Fvue\u002Fruntime-key-needs-declared-namespace': 'error',\n    },\n  },\n]\n",[366,610,611,625,629,637,653,658,671,693,699,705],{"__ignoreMap":396},[400,612,613,615,617,619,621,623],{"class":402,"line":403},[400,614,460],{"class":459},[400,616,464],{"class":463},[400,618,467],{"class":459},[400,620,471],{"class":470},[400,622,368],{"class":410},[400,624,476],{"class":470},[400,626,627],{"class":402,"line":479},[400,628,483],{"emptyLinePlaceholder":482},[400,630,631,633,635],{"class":402,"line":486},[400,632,489],{"class":459},[400,634,492],{"class":459},[400,636,495],{"class":463},[400,638,639,641,643,645,647,649,651],{"class":402,"line":498},[400,640,501],{"class":470},[400,642,504],{"class":463},[400,644,507],{"class":470},[400,646,510],{"class":463},[400,648,507],{"class":470},[400,650,515],{"class":463},[400,652,518],{"class":470},[400,654,655],{"class":402,"line":521},[400,656,657],{"class":470},"  {\n",[400,659,661,665,668],{"class":402,"line":660},6,[400,662,664],{"class":663},"swJcz","    rules",[400,666,667],{"class":470},":",[400,669,670],{"class":470}," {\n",[400,672,674,677,680,683,685,687,689,691],{"class":402,"line":673},7,[400,675,676],{"class":470},"      '",[400,678,679],{"class":663},"@the-i18n-kit\u002Fvue\u002Fruntime-key-needs-declared-namespace",[400,681,682],{"class":470},"'",[400,684,667],{"class":470},[400,686,471],{"class":470},[400,688,585],{"class":410},[400,690,682],{"class":470},[400,692,518],{"class":470},[400,694,696],{"class":402,"line":695},8,[400,697,698],{"class":470},"    },\n",[400,700,702],{"class":402,"line":701},9,[400,703,704],{"class":470},"  },\n",[400,706,708],{"class":402,"line":707},10,[400,709,524],{"class":463},[386,711,713],{"id":712},"_3-triage-then-promote","3. Triage, Then Promote",[363,715,716,717,719,720,723],{},"The runtime-key rule is a warning in ",[366,718,515],{}," deliberately. On its first\nreal-world adoption run it found 81 sites, dominated by option-list callbacks\nlike ",[366,721,722],{},"(o) => t(o.label)"," — calls whose keys the scanner's candidate net\nalready protects. Shipping those 81 as errors on day one teaches a team to\nblanket-disable the rule, which protects nothing.",[363,725,726],{},"The intended path:",[728,729,730,737,744],"ol",{},[731,732,733,734,736],"li",{},"Run with ",[366,735,515],{}," and read the warnings.",[731,738,739,740,507],{},"Annotate the genuinely wire-driven calls — keys that arrive from a backend\nor database — as described in\n",[371,741,743],{"href":742},"\u002Feslint-plugin\u002Frules#the-annotation-workflow","the annotation workflow",[731,745,746,747,749,750,752],{},"Promote the rule to ",[366,748,585],{}," (or switch to ",[366,751,568],{},") once the remaining\nwarnings are decisions rather than a backlog.",[363,754,755,756,759],{},"For a one-off exception, a standard ",[366,757,758],{},"eslint-disable"," comment is the escape\nhatch. There is no parallel suppression system.",[386,761,763],{"id":762},"limits","Limits",[765,766,767,802],"ul",{},[731,768,769,773,774,777,778,777,781,784,785,777,788,777,791,794,795,535,798,801],{},[770,771,772],"strong",{},"Vue only, by decision."," The rules recognize the vue-i18n call family —\n",[366,775,776],{},"t","\u002F",[366,779,780],{},"te",[366,782,783],{},"tc"," where they resolve to a vue-i18n binding, ",[366,786,787],{},"$t",[366,789,790],{},"$te",[366,792,793],{},"$tc",",\ncomposer instances from ",[366,796,797],{},"useI18n()",[366,799,800],{},"nuxtApp.$i18n.t(...)"," — in plain Vue\nor Nuxt. The React call families are not recognized: next-intl's\nnamespace-relative keys would need React-specific judgment, and \"works for\nReact except the main feature\" is a promise nobody can rely on. React\nprojects keep the CLI's full scan coverage in CI.",[731,803,804,805,807,808,507],{},"The plugin lints code, not catalogs. Duplicate values, unused keys and\ntranslation completeness stay with ",[366,806,198],{},", the orphan scan and\n",[366,809,210],{},[386,811,813],{"id":812},"next","Next",[765,815,816,821],{},[731,817,818,820],{},[371,819,33],{"href":34}," — what each rule fires on, what it\ndeliberately ignores, and the annotation workflow.",[731,822,823,825,826,829],{},[371,824,37],{"href":38}," — per-app key\nexistence via ",[366,827,828],{},"layerAware()",", and the zero-config Nuxt path.",[831,832,833],"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);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":396,"searchDepth":486,"depth":486,"links":835},[836,837,838,839,840],{"id":388,"depth":479,"text":389},{"id":442,"depth":479,"text":443},{"id":712,"depth":479,"text":713},{"id":762,"depth":479,"text":763},{"id":812,"depth":479,"text":813},"md",null,{},{"description":845,"title":29},"How to install @the-i18n-kit\u002Feslint-plugin-vue, spread a preset into a flat config, and decide when to promote the runtime-key rule from warn to error.","AeIHUJEQl1kuDIp8uzek1sZuxLOrdtpAcep-E33w9tY",[848,849],{"title":18,"path":19,"stem":20,"description":396,"children":-1},{"title":33,"path":34,"stem":35,"description":396,"children":-1},1787604647515]