[{"data":1,"prerenderedAt":1429},["ShallowReactive",2],{"navigation":3,"v3-navigation":406,"\u002Fcontributing":733,"\u002Fcontributing-surround":1426},[4,130,180,277,298,319,346],{"title":5,"order":6,"path":7,"stem":8,"children":9,"page":129},"Guide",10,"\u002Fguide","guide",[10,14,19,24,29,35,40,45,50,56,61,66,71,76,82,87,93,98,103,109,114,119,124],{"title":11,"path":12,"stem":13,"order":6,"group":11},"Getting started","\u002Fguide\u002Fgetting-started","guide\u002Fgetting-started",{"title":15,"path":16,"stem":17,"order":18,"group":11},"Migrating from @nuxtjs\u002Fi18n","\u002Fguide\u002Fmigration","guide\u002Fmigration",20,{"title":20,"path":21,"stem":22,"order":23,"group":11},"Upgrading","\u002Fguide\u002Fupgrade","guide\u002Fupgrade",30,{"title":25,"path":26,"stem":27,"order":28,"group":11},"FAQ","\u002Fguide\u002Ffaq","guide\u002Ffaq",40,{"title":30,"path":31,"stem":32,"order":33,"group":34},"Translation files","\u002Fguide\u002Ftranslations","guide\u002Ftranslations",50,"Core concepts",{"title":36,"path":37,"stem":38,"order":39,"group":34},"Page config","\u002Fguide\u002Fper-component-translations","guide\u002Fper-component-translations",60,{"title":41,"path":42,"stem":43,"order":44,"group":34},"Runtime overrides","\u002Fguide\u002Fruntime-overrides","guide\u002Fruntime-overrides",70,{"title":46,"path":47,"stem":48,"order":49,"group":34},"Server routes and API","\u002Fguide\u002Fserver-side-translations","guide\u002Fserver-side-translations",80,{"title":51,"path":52,"stem":53,"order":54,"group":55},"Routing strategies","\u002Fguide\u002Fstrategy","guide\u002Fstrategy",90,"Routing",{"title":57,"path":58,"stem":59,"order":60,"group":55},"Locale detection","\u002Fguide\u002Flocale-detection","guide\u002Flocale-detection",100,{"title":62,"path":63,"stem":64,"order":65,"group":55},"Localized paths","\u002Fguide\u002Fcustom-locale-routes","guide\u002Fcustom-locale-routes",110,{"title":67,"path":68,"stem":69,"order":70,"group":55},"Custom locale detection","\u002Fguide\u002Fcustom-auto-detect","guide\u002Fcustom-auto-detect",120,{"title":72,"path":73,"stem":74,"order":75,"group":55},"Excluding paths","\u002Fguide\u002Fexcluding-static-files","guide\u002Fexcluding-static-files",130,{"title":77,"path":78,"stem":79,"order":80,"group":81},"SEO","\u002Fguide\u002Fseo","guide\u002Fseo",140,"SEO and domains",{"title":83,"path":84,"stem":85,"order":86,"group":81},"Layers and domains","\u002Fguide\u002Flayers","guide\u002Flayers",150,{"title":88,"path":89,"stem":90,"order":91,"group":92},"Deployment","\u002Fguide\u002Fdeployment","guide\u002Fdeployment",160,"Production",{"title":94,"path":95,"stem":96,"order":97,"group":92},"Performance tuning","\u002Fguide\u002Fperformance","guide\u002Fperformance",170,{"title":99,"path":100,"stem":101,"order":102,"group":92},"Performance Test Results","\u002Fguide\u002Fperformance-results","guide\u002Fperformance-results",180,{"title":104,"path":105,"stem":106,"order":107,"group":108},"DevTools","\u002Fguide\u002Fdevtools","guide\u002Fdevtools",190,"Tooling",{"title":110,"path":111,"stem":112,"order":113,"group":108},"CLI","\u002Fguide\u002Fcli","guide\u002Fcli",200,{"title":115,"path":116,"stem":117,"order":118,"group":108},"Testing your app","\u002Fguide\u002Ftesting","guide\u002Ftesting",210,{"title":120,"path":121,"stem":122,"order":123,"group":108},"Storybook","\u002Fguide\u002Fstorybook","guide\u002Fstorybook",220,{"title":125,"path":126,"stem":127,"order":128,"group":108},"Crowdin","\u002Fguide\u002Fcrowdin","guide\u002Fcrowdin",230,false,{"title":131,"order":18,"path":132,"stem":133,"children":134},"Frameworks","\u002Fintegrations","integrations",[135,138,143,147,151,155,159,163,168,172,176],{"title":136,"path":132,"stem":137,"order":6},"Overview","integrations\u002Findex",{"title":139,"path":140,"stem":141,"order":18,"group":142},"Vue","\u002Fintegrations\u002Fvue-package","integrations\u002Fvue-package","UI frameworks",{"title":144,"path":145,"stem":146,"order":23,"group":142},"React and Preact","\u002Fintegrations\u002Freact-package","integrations\u002Freact-package",{"title":148,"path":149,"stem":150,"order":28,"group":142},"Solid","\u002Fintegrations\u002Fsolid-package","integrations\u002Fsolid-package",{"title":152,"path":153,"stem":154,"order":33,"group":142},"Astro","\u002Fintegrations\u002Fastro-package","integrations\u002Fastro-package",{"title":156,"path":157,"stem":158,"order":39,"group":142},"Astro islands","\u002Fintegrations\u002Fastro-islands","integrations\u002Fastro-islands",{"title":160,"path":161,"stem":162,"order":44,"group":142},"VitePress","\u002Fintegrations\u002Fvitepress-package","integrations\u002Fvitepress-package",{"title":164,"path":165,"stem":166,"order":49,"group":167},"Runtime","\u002Fintegrations\u002Fruntime-package","integrations\u002Fruntime-package","Runtimes",{"title":169,"path":170,"stem":171,"order":54,"group":167},"Node.js","\u002Fintegrations\u002Fnodejs-package","integrations\u002Fnodejs-package",{"title":173,"path":174,"stem":175,"order":60,"group":108},"Types generator","\u002Fintegrations\u002Ftypes-generator","integrations\u002Ftypes-generator",{"title":177,"path":178,"stem":179,"order":65,"group":108},"DevTools UI","\u002Fintegrations\u002Fdevtools-ui-package","integrations\u002Fdevtools-ui-package",{"title":181,"order":23,"path":182,"stem":183,"children":184},"API","\u002Fapi","api",[185,188,192,196,200,204],{"title":186,"path":182,"stem":187,"order":6},"API reference","api\u002Findex",{"title":189,"path":190,"stem":191,"order":18},"Module options","\u002Fapi\u002Fmodule-options","api\u002Fmodule-options",{"title":193,"path":194,"stem":195,"order":23},"CLI commands","\u002Fapi\u002Fcli","api\u002Fcli",{"title":197,"path":198,"stem":199,"order":28},"Helpers","\u002Fapi\u002Fmethods","api\u002Fmethods",{"title":201,"path":202,"stem":203,"order":33},"Hooks","\u002Fapi\u002Fevents","api\u002Fevents",{"title":205,"path":206,"stem":207,"children":208,"order":39},"Package APIs","\u002Fapi\u002Fpackages","api\u002Fpackages",[209,213,217,221,225,229,233,237,241,245,249,253,257,261,265,269,273],{"title":210,"path":211,"stem":212},"astro","\u002Fapi\u002Fpackages\u002Fastro","api\u002Fpackages\u002Fastro",{"title":214,"path":215,"stem":216},"cli","\u002Fapi\u002Fpackages\u002Fcli","api\u002Fpackages\u002Fcli",{"title":218,"path":219,"stem":220},"core","\u002Fapi\u002Fpackages\u002Fcore","api\u002Fpackages\u002Fcore",{"title":222,"path":223,"stem":224},"devtools-ui","\u002Fapi\u002Fpackages\u002Fdevtools-ui","api\u002Fpackages\u002Fdevtools-ui",{"title":226,"path":227,"stem":228},"node","\u002Fapi\u002Fpackages\u002Fnode","api\u002Fpackages\u002Fnode",{"title":230,"path":231,"stem":232},"path-strategy","\u002Fapi\u002Fpackages\u002Fpath-strategy","api\u002Fpackages\u002Fpath-strategy",{"title":234,"path":235,"stem":236},"preact","\u002Fapi\u002Fpackages\u002Fpreact","api\u002Fpackages\u002Fpreact",{"title":238,"path":239,"stem":240},"react","\u002Fapi\u002Fpackages\u002Freact","api\u002Fpackages\u002Freact",{"title":242,"path":243,"stem":244},"route-strategy","\u002Fapi\u002Fpackages\u002Froute-strategy","api\u002Fpackages\u002Froute-strategy",{"title":246,"path":247,"stem":248},"runtime","\u002Fapi\u002Fpackages\u002Fruntime","api\u002Fpackages\u002Fruntime",{"title":250,"path":251,"stem":252},"solid","\u002Fapi\u002Fpackages\u002Fsolid","api\u002Fpackages\u002Fsolid",{"title":254,"path":255,"stem":256},"test-utils","\u002Fapi\u002Fpackages\u002Ftest-utils","api\u002Fpackages\u002Ftest-utils",{"title":258,"path":259,"stem":260},"types","\u002Fapi\u002Fpackages\u002Ftypes","api\u002Fpackages\u002Ftypes",{"title":262,"path":263,"stem":264},"types-generator","\u002Fapi\u002Fpackages\u002Ftypes-generator","api\u002Fpackages\u002Ftypes-generator",{"title":266,"path":267,"stem":268},"utils","\u002Fapi\u002Fpackages\u002Futils","api\u002Fpackages\u002Futils",{"title":270,"path":271,"stem":272},"vitepress","\u002Fapi\u002Fpackages\u002Fvitepress","api\u002Fpackages\u002Fvitepress",{"title":274,"path":275,"stem":276},"vue","\u002Fapi\u002Fpackages\u002Fvue","api\u002Fpackages\u002Fvue",{"title":278,"order":28,"path":279,"stem":280,"children":281,"page":129},"Composables","\u002Fcomposables","composables",[282,286,290,294],{"title":283,"path":284,"stem":285,"order":6},"useI18n","\u002Fcomposables\u002FuseI18n","composables\u002FuseI18n",{"title":287,"path":288,"stem":289,"order":18},"useI18nLocale","\u002Fcomposables\u002FuseI18nLocale","composables\u002FuseI18nLocale",{"title":291,"path":292,"stem":293,"order":23},"useI18nHead","\u002Fcomposables\u002FuseI18nHead","composables\u002FuseI18nHead",{"title":295,"path":296,"stem":297,"order":28},"useLocaleHead","\u002Fcomposables\u002FuseLocaleHead","composables\u002FuseLocaleHead",{"title":299,"order":33,"path":300,"stem":301,"children":302,"page":129},"Components","\u002Fcomponents","components",[303,307,311,315],{"title":304,"path":305,"stem":306,"order":6},"\u003Ci18n-t>","\u002Fcomponents\u002Fi18n-t","components\u002Fi18n-t",{"title":308,"path":309,"stem":310,"order":18},"\u003Ci18n-link>","\u002Fcomponents\u002Fi18n-link","components\u002Fi18n-link",{"title":312,"path":313,"stem":314,"order":23},"\u003Ci18n-switcher>","\u002Fcomponents\u002Fi18n-switcher","components\u002Fi18n-switcher",{"title":316,"path":317,"stem":318,"order":28},"\u003Ci18n-group>","\u002Fcomponents\u002Fi18n-group","components\u002Fi18n-group",{"title":320,"order":39,"path":321,"stem":322,"children":323},"Contributing","\u002Fcontributing","contributing",[324,326,330,334,338,342],{"title":320,"path":321,"stem":325,"order":6},"contributing\u002Findex",{"title":327,"path":328,"stem":329,"order":18},"Architecture","\u002Fcontributing\u002Farchitecture","contributing\u002Farchitecture",{"title":331,"path":332,"stem":333,"order":23},"Testing the module","\u002Fcontributing\u002Ftesting","contributing\u002Ftesting",{"title":335,"path":336,"stem":337,"order":28},"Maintenance commands","\u002Fcontributing\u002Fmaintenance-commands","contributing\u002Fmaintenance-commands",{"title":339,"path":340,"stem":341,"order":33},"Release smoke checks","\u002Fcontributing\u002Frelease-smoke","contributing\u002Frelease-smoke",{"title":343,"path":344,"stem":345,"order":39},"Benchmark methodology","\u002Fcontributing\u002Fperformance-methodology","contributing\u002Fperformance-methodology",{"title":347,"path":348,"stem":349,"children":350,"order":44},"News","\u002Fnews","news\u002Findex",[351,354,358,362,366,370,374,378,382,386,390,394,398,402],{"title":352,"path":348,"stem":349,"order":353},"News & Releases",1,{"title":355,"path":356,"stem":357,"order":6},"v4.0.0","\u002Fnews\u002Fv4.0.0","news\u002Fv4.0.0",{"title":359,"path":360,"stem":361,"order":18},"v3.24.0","\u002Fnews\u002Fv3.24.0","news\u002Fv3.24.0",{"title":363,"path":364,"stem":365,"order":23},"v3.22.0","\u002Fnews\u002Fv3.22.0","news\u002Fv3.22.0",{"title":367,"path":368,"stem":369,"order":28},"v3.21.0","\u002Fnews\u002Fv3.21.0","news\u002Fv3.21.0",{"title":371,"path":372,"stem":373,"order":33},"v3.20.0","\u002Fnews\u002Fv3.20.0","news\u002Fv3.20.0",{"title":375,"path":376,"stem":377,"order":39},"v3.19.0","\u002Fnews\u002Fv3.19.0","news\u002Fv3.19.0",{"title":379,"path":380,"stem":381,"order":44},"v3.0.0","\u002Fnews\u002Fv3.0.0","news\u002Fv3.0.0",{"title":383,"path":384,"stem":385,"order":49},"v2.14.1","\u002Fnews\u002Fv2.14.1","news\u002Fv2.14.1",{"title":387,"path":388,"stem":389,"order":54},"v2.0.0","\u002Fnews\u002Fv2.0.0","news\u002Fv2.0.0",{"title":391,"path":392,"stem":393,"order":60},"v1.73.0","\u002Fnews\u002Fv1.73.0","news\u002Fv1.73.0",{"title":395,"path":396,"stem":397,"order":65},"v1.65.0","\u002Fnews\u002Fv1.65.0","news\u002Fv1.65.0",{"title":399,"path":400,"stem":401,"order":70},"v1.58.0","\u002Fnews\u002Fv1.58.0","news\u002Fv1.58.0",{"title":403,"path":404,"stem":405,"order":75},"v1.1.0","\u002Fnews\u002Fv1.1.0","news\u002Fv1.1.0",[407],{"title":408,"path":409,"stem":410,"children":411},"V3","\u002Fv3","v3",[412,415,552,598,691,712,729],{"title":136,"path":409,"stem":413,"order":414},"v3\u002Findex",0,{"title":5,"order":6,"path":416,"stem":417,"children":418,"page":129},"\u002Fv3\u002Fguide","v3\u002Fguide",[419,424,428,432,436,441,445,449,453,457,461,465,469,473,478,482,487,491,495,499,503,507,511,514,518,522,527,533,538,542,547],{"title":420,"path":421,"stem":422,"order":6,"group":423},"Getting Started","\u002Fv3\u002Fguide\u002Fgetting-started","v3\u002Fguide\u002Fgetting-started","Basics",{"title":425,"path":426,"stem":427,"order":18,"group":423},"Configuration","\u002Fv3\u002Fguide\u002Fconfiguration","v3\u002Fguide\u002Fconfiguration",{"title":429,"path":430,"stem":431,"order":23,"group":423},"Folder Structure","\u002Fv3\u002Fguide\u002Ffolder-structure","v3\u002Fguide\u002Ffolder-structure",{"title":433,"path":434,"stem":435,"order":28,"group":423},"Routing Strategy","\u002Fv3\u002Fguide\u002Fstrategy","v3\u002Fguide\u002Fstrategy",{"title":437,"path":438,"stem":439,"order":33,"group":440},"Translating Content","\u002Fv3\u002Fguide\u002Fusing","v3\u002Fguide\u002Fusing","Usage",{"title":442,"path":443,"stem":444,"order":39,"group":440},"Per Component Translations","\u002Fv3\u002Fguide\u002Fper-component-translations","v3\u002Fguide\u002Fper-component-translations",{"title":446,"path":447,"stem":448,"order":44,"group":440},"Custom Localized Routes","\u002Fv3\u002Fguide\u002Fcustom-locale-routes","v3\u002Fguide\u002Fcustom-locale-routes",{"title":450,"path":451,"stem":452,"order":49,"group":440},"Custom Auto Detect","\u002Fv3\u002Fguide\u002Fcustom-auto-detect","v3\u002Fguide\u002Fcustom-auto-detect",{"title":454,"path":455,"stem":456,"order":54,"group":440},"Runtime Overrides","\u002Fv3\u002Fguide\u002Fruntime-overrides","v3\u002Fguide\u002Fruntime-overrides",{"title":458,"path":459,"stem":460,"order":60,"group":440},"Layers","\u002Fv3\u002Fguide\u002Flayers","v3\u002Fguide\u002Flayers",{"title":77,"path":462,"stem":463,"order":65,"group":464},"\u002Fv3\u002Fguide\u002Fseo","v3\u002Fguide\u002Fseo","SEO & URLs",{"title":466,"path":467,"stem":468,"order":70,"group":464},"Multi Domain Locales","\u002Fv3\u002Fguide\u002Fmulti-domain-locales","v3\u002Fguide\u002Fmulti-domain-locales",{"title":470,"path":471,"stem":472,"order":75,"group":464},"Excluding Static Files","\u002Fv3\u002Fguide\u002Fexcluding-static-files","v3\u002Fguide\u002Fexcluding-static-files",{"title":474,"path":475,"stem":476,"order":80,"group":477},"Performance","\u002Fv3\u002Fguide\u002Fperformance","v3\u002Fguide\u002Fperformance","Performance & Deployment",{"title":479,"path":480,"stem":481,"order":86,"group":477},"Benchmark Results","\u002Fv3\u002Fguide\u002Fperformance-results","v3\u002Fguide\u002Fperformance-results",{"title":483,"path":484,"stem":485,"order":486,"group":477},"Performance methodology","\u002Fv3\u002Fguide\u002Fperformance-methodology","v3\u002Fguide\u002Fperformance-methodology",155,{"title":488,"path":489,"stem":490,"order":91,"group":477},"Server Side Translations","\u002Fv3\u002Fguide\u002Fserver-side-translations","v3\u002Fguide\u002Fserver-side-translations",{"title":492,"path":493,"stem":494,"order":97,"group":477},"Firebase Deployment","\u002Fv3\u002Fguide\u002Ffirebase","v3\u002Fguide\u002Ffirebase",{"title":496,"path":497,"stem":498,"order":102,"group":477},"Release Smoke Checks","\u002Fv3\u002Fguide\u002Frelease-smoke","v3\u002Fguide\u002Frelease-smoke",{"title":500,"path":501,"stem":502,"order":107,"group":477},"Preset local testing","\u002Fv3\u002Fguide\u002Fpreset-local-testing","v3\u002Fguide\u002Fpreset-local-testing",{"title":504,"path":505,"stem":506,"order":113,"group":477},"Maintenance Commands","\u002Fv3\u002Fguide\u002Fmaintenance-commands","v3\u002Fguide\u002Fmaintenance-commands",{"title":508,"path":509,"stem":510,"order":118,"group":108},"CLI Tool","\u002Fv3\u002Fguide\u002Fcli","v3\u002Fguide\u002Fcli",{"title":104,"path":512,"stem":513,"order":123,"group":108},"\u002Fv3\u002Fguide\u002Fdevtools","v3\u002Fguide\u002Fdevtools",{"title":515,"path":516,"stem":517,"order":128,"group":108},"Testing Your App","\u002Fv3\u002Fguide\u002Ftesting","v3\u002Fguide\u002Ftesting",{"title":120,"path":519,"stem":520,"order":521,"group":108},"\u002Fv3\u002Fguide\u002Fstorybook","v3\u002Fguide\u002Fstorybook",240,{"title":523,"path":524,"stem":525,"order":526,"group":108},"Crowdin Integration","\u002Fv3\u002Fguide\u002Fcrowdin","v3\u002Fguide\u002Fcrowdin",250,{"title":528,"path":529,"stem":530,"order":531,"group":532},"Migration from nuxt-i18n","\u002Fv3\u002Fguide\u002Fmigration","v3\u002Fguide\u002Fmigration",260,"Migration & Help",{"title":534,"path":535,"stem":536,"order":537,"group":532},"Upgrade to v3","\u002Fv3\u002Fguide\u002Fv3-upgrade","v3\u002Fguide\u002Fv3-upgrade",270,{"title":25,"path":539,"stem":540,"order":541,"group":532},"\u002Fv3\u002Fguide\u002Ffaq","v3\u002Fguide\u002Ffaq",280,{"title":543,"path":544,"stem":545,"order":546,"group":532},"Contribution","\u002Fv3\u002Fguide\u002Fcontribution","v3\u002Fguide\u002Fcontribution",290,{"title":548,"path":549,"stem":550,"order":551,"group":532},"Testing the Module","\u002Fv3\u002Fguide\u002Ftesting-strategies","v3\u002Fguide\u002Ftesting-strategies",300,{"title":553,"order":18,"path":554,"stem":555,"children":556},"Integrations","\u002Fv3\u002Fintegrations","v3\u002Fintegrations\u002Findex",[557,558,562,566,570,574,578,582,586,590,594],{"title":136,"path":554,"stem":555,"order":6},{"title":559,"path":560,"stem":561,"order":18},"Vue Package","\u002Fv3\u002Fintegrations\u002Fvue-package","v3\u002Fintegrations\u002Fvue-package",{"title":563,"path":564,"stem":565,"order":23},"React Package","\u002Fv3\u002Fintegrations\u002Freact-package","v3\u002Fintegrations\u002Freact-package",{"title":567,"path":568,"stem":569,"order":28},"Preact Package","\u002Fv3\u002Fintegrations\u002Fpreact-package","v3\u002Fintegrations\u002Fpreact-package",{"title":571,"path":572,"stem":573,"order":33},"Solid Package","\u002Fv3\u002Fintegrations\u002Fsolid-package","v3\u002Fintegrations\u002Fsolid-package",{"title":575,"path":576,"stem":577,"order":39},"Astro Package","\u002Fv3\u002Fintegrations\u002Fastro-package","v3\u002Fintegrations\u002Fastro-package",{"title":579,"path":580,"stem":581,"order":44},"VitePress Package","\u002Fv3\u002Fintegrations\u002Fvitepress-package","v3\u002Fintegrations\u002Fvitepress-package",{"title":583,"path":584,"stem":585,"order":49},"Runtime Package","\u002Fv3\u002Fintegrations\u002Fruntime-package","v3\u002Fintegrations\u002Fruntime-package",{"title":587,"path":588,"stem":589,"order":54},"Node.js Package","\u002Fv3\u002Fintegrations\u002Fnodejs-package","v3\u002Fintegrations\u002Fnodejs-package",{"title":591,"path":592,"stem":593,"order":60},"Types Generator","\u002Fv3\u002Fintegrations\u002Ftypes-generator","v3\u002Fintegrations\u002Ftypes-generator",{"title":595,"path":596,"stem":597,"order":65},"Devtools Package","\u002Fv3\u002Fintegrations\u002Fdevtools-ui-package","v3\u002Fintegrations\u002Fdevtools-ui-package",{"title":181,"order":23,"path":599,"stem":600,"children":601},"\u002Fv3\u002Fapi","v3\u002Fapi\u002Findex",[602,603,607,611,615,619],{"title":136,"path":599,"stem":600,"order":6},{"title":604,"path":605,"stem":606,"order":18},"Methods","\u002Fv3\u002Fapi\u002Fmethods","v3\u002Fapi\u002Fmethods",{"title":608,"path":609,"stem":610,"order":23},"Events","\u002Fv3\u002Fapi\u002Fevents","v3\u002Fapi\u002Fevents",{"title":612,"path":613,"stem":614,"order":28},"Translations and Cache","\u002Fv3\u002Fapi\u002Fi18n-cache-api","v3\u002Fapi\u002Fi18n-cache-api",{"title":616,"path":617,"stem":618,"order":33},"Module Options","\u002Fv3\u002Fapi\u002Fmodule-options","v3\u002Fapi\u002Fmodule-options",{"title":205,"path":620,"stem":621,"children":622,"order":39},"\u002Fv3\u002Fapi\u002Fpackages","v3\u002Fapi\u002Fpackages",[623,627,631,635,639,643,647,651,655,659,663,667,671,675,679,683,687],{"title":624,"path":625,"stem":626},"@i18n-micro\u002Fastro","\u002Fv3\u002Fapi\u002Fpackages\u002Fastro","v3\u002Fapi\u002Fpackages\u002Fastro",{"title":628,"path":629,"stem":630},"@i18n-micro\u002Fcore","\u002Fv3\u002Fapi\u002Fpackages\u002Fcore","v3\u002Fapi\u002Fpackages\u002Fcore",{"title":632,"path":633,"stem":634},"@i18n-micro\u002Fdevtools-ui","\u002Fv3\u002Fapi\u002Fpackages\u002Fdevtools-ui","v3\u002Fapi\u002Fpackages\u002Fdevtools-ui",{"title":636,"path":637,"stem":638},"@i18n-micro\u002Fhmr","\u002Fv3\u002Fapi\u002Fpackages\u002Fhmr","v3\u002Fapi\u002Fpackages\u002Fhmr",{"title":640,"path":641,"stem":642},"@i18n-micro\u002Fnode","\u002Fv3\u002Fapi\u002Fpackages\u002Fnode","v3\u002Fapi\u002Fpackages\u002Fnode",{"title":644,"path":645,"stem":646},"@i18n-micro\u002Fpath-strategy","\u002Fv3\u002Fapi\u002Fpackages\u002Fpath-strategy","v3\u002Fapi\u002Fpackages\u002Fpath-strategy",{"title":648,"path":649,"stem":650},"@i18n-micro\u002Fpreact","\u002Fv3\u002Fapi\u002Fpackages\u002Fpreact","v3\u002Fapi\u002Fpackages\u002Fpreact",{"title":652,"path":653,"stem":654},"@i18n-micro\u002Freact","\u002Fv3\u002Fapi\u002Fpackages\u002Freact","v3\u002Fapi\u002Fpackages\u002Freact",{"title":656,"path":657,"stem":658},"@i18n-micro\u002Froute-strategy","\u002Fv3\u002Fapi\u002Fpackages\u002Froute-strategy","v3\u002Fapi\u002Fpackages\u002Froute-strategy",{"title":660,"path":661,"stem":662},"@i18n-micro\u002Fruntime","\u002Fv3\u002Fapi\u002Fpackages\u002Fruntime","v3\u002Fapi\u002Fpackages\u002Fruntime",{"title":664,"path":665,"stem":666},"@i18n-micro\u002Fsolid","\u002Fv3\u002Fapi\u002Fpackages\u002Fsolid","v3\u002Fapi\u002Fpackages\u002Fsolid",{"title":668,"path":669,"stem":670},"@i18n-micro\u002Ftest-utils","\u002Fv3\u002Fapi\u002Fpackages\u002Ftest-utils","v3\u002Fapi\u002Fpackages\u002Ftest-utils",{"title":672,"path":673,"stem":674},"@i18n-micro\u002Ftypes","\u002Fv3\u002Fapi\u002Fpackages\u002Ftypes","v3\u002Fapi\u002Fpackages\u002Ftypes",{"title":676,"path":677,"stem":678},"@i18n-micro\u002Ftypes-generator","\u002Fv3\u002Fapi\u002Fpackages\u002Ftypes-generator","v3\u002Fapi\u002Fpackages\u002Ftypes-generator",{"title":680,"path":681,"stem":682},"@i18n-micro\u002Futils","\u002Fv3\u002Fapi\u002Fpackages\u002Futils","v3\u002Fapi\u002Fpackages\u002Futils",{"title":684,"path":685,"stem":686},"@i18n-micro\u002Fvitepress","\u002Fv3\u002Fapi\u002Fpackages\u002Fvitepress","v3\u002Fapi\u002Fpackages\u002Fvitepress",{"title":688,"path":689,"stem":690},"@i18n-micro\u002Fvue","\u002Fv3\u002Fapi\u002Fpackages\u002Fvue","v3\u002Fapi\u002Fpackages\u002Fvue",{"title":299,"order":28,"path":692,"stem":693,"children":694},"\u002Fv3\u002Fcomponents","v3\u002Fcomponents\u002Findex",[695,696,700,704,708],{"title":136,"path":692,"stem":693,"order":6},{"title":697,"path":698,"stem":699,"order":18},"i18n-t","\u002Fv3\u002Fcomponents\u002Fi18n-t","v3\u002Fcomponents\u002Fi18n-t",{"title":701,"path":702,"stem":703,"order":23},"i18n-switcher","\u002Fv3\u002Fcomponents\u002Fi18n-switcher","v3\u002Fcomponents\u002Fi18n-switcher",{"title":705,"path":706,"stem":707,"order":28},"i18n-link","\u002Fv3\u002Fcomponents\u002Fi18n-link","v3\u002Fcomponents\u002Fi18n-link",{"title":709,"path":710,"stem":711,"order":33},"i18n-group","\u002Fv3\u002Fcomponents\u002Fi18n-group","v3\u002Fcomponents\u002Fi18n-group",{"title":278,"path":713,"stem":714,"children":715,"order":33},"\u002Fv3\u002Fcomposables","v3\u002Fcomposables\u002Findex",[716,717,720,723,726],{"title":136,"path":713,"stem":714,"order":6},{"title":283,"path":718,"stem":719,"order":18},"\u002Fv3\u002Fcomposables\u002FuseI18n","v3\u002Fcomposables\u002FuseI18n",{"title":295,"path":721,"stem":722,"order":23},"\u002Fv3\u002Fcomposables\u002FuseLocaleHead","v3\u002Fcomposables\u002FuseLocaleHead",{"title":291,"path":724,"stem":725,"order":28},"\u002Fv3\u002Fcomposables\u002FuseI18nHead","v3\u002Fcomposables\u002FuseI18nHead",{"title":287,"path":727,"stem":728,"order":33},"\u002Fv3\u002Fcomposables\u002FuseI18nLocale","v3\u002Fcomposables\u002FuseI18nLocale",{"title":730,"path":731,"stem":732,"order":39},"Examples","\u002Fv3\u002Fexamples","v3\u002Fexamples",{"id":734,"title":320,"body":735,"description":1417,"extension":1418,"lastUpdated":1419,"links":1420,"meta":1421,"navigation":1423,"path":321,"seo":1424,"stem":325,"__hash__":1425},"docs\u002Fcontributing\u002Findex.md",{"type":736,"value":737,"toc":1408},"minimark",[738,741,745,750,776,779,783,794,914,961,975,989,996,1000,1134,1144,1148,1247,1269,1273,1284,1313,1337,1341,1385,1389,1404],[739,740,320],"h1",{"id":322},[742,743,744],"p",{},"This page takes you from a fresh clone to a pull request. Read it before your first change: the build order and the package versioning rules are easy to get wrong. The other pages in this section cover the architecture, the test suites, the maintenance commands and the release checks.",[746,747,749],"h2",{"id":748},"prerequisites","Prerequisites",[751,752,753,761],"ul",{},[754,755,756,760],"li",{},[757,758,759],"strong",{},"Node.js 22"," — CI runs 22; Vitest needs ≥ 22.12.",[754,762,763,766,767,771,772,775],{},[757,764,765],{},"pnpm 9.14.2"," — the version in ",[768,769,770],"code",{},"packageManager","; ",[768,773,774],{},"corepack enable"," picks it up. Do not use npm or yarn in the workspace.",[742,777,778],{},"No database, Docker or external service is needed: integration and e2e tests start their own Nuxt servers.",[746,780,782],{"id":781},"setup","Setup",[742,784,785,786,789,790,793],{},"Fork the repository, then run these steps ",[757,787,788],{},"in this order"," (the same order as ",[768,791,792],{},".github\u002Fworkflows\u002Fci.yml","):",[795,796,801],"pre",{"className":797,"code":798,"language":799,"meta":800,"style":800},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git clone https:\u002F\u002Fgithub.com\u002F\u003Cyou>\u002Fnuxt-i18n-micro.git\ncd nuxt-i18n-micro\npnpm install\npnpm --filter \".\u002Fpackages\u002F**\" --filter \"!.\u002Fpackages\u002F*\u002Fplayground\" run build\npnpm run dev:prepare\npnpm --filter \".\u002Fpackages\u002F*\u002Fplayground\" run build\n","bash","",[768,802,803,835,845,854,886,896],{"__ignoreMap":800},[804,805,807,811,815,818,822,825,829,832],"span",{"class":806,"line":353},"line",[804,808,810],{"class":809},"sBMFI","git",[804,812,814],{"class":813},"sfazB"," clone",[804,816,817],{"class":813}," https:\u002F\u002Fgithub.com\u002F",[804,819,821],{"class":820},"sMK4o","\u003C",[804,823,824],{"class":813},"yo",[804,826,828],{"class":827},"sTEyZ","u",[804,830,831],{"class":820},">",[804,833,834],{"class":813},"\u002Fnuxt-i18n-micro.git\n",[804,836,838,842],{"class":806,"line":837},2,[804,839,841],{"class":840},"s2Zo4","cd",[804,843,844],{"class":813}," nuxt-i18n-micro\n",[804,846,848,851],{"class":806,"line":847},3,[804,849,850],{"class":809},"pnpm",[804,852,853],{"class":813}," install\n",[804,855,857,859,862,865,868,871,873,875,878,880,883],{"class":806,"line":856},4,[804,858,850],{"class":809},[804,860,861],{"class":813}," --filter",[804,863,864],{"class":820}," \"",[804,866,867],{"class":813},".\u002Fpackages\u002F**",[804,869,870],{"class":820},"\"",[804,872,861],{"class":813},[804,874,864],{"class":820},[804,876,877],{"class":813},"!.\u002Fpackages\u002F*\u002Fplayground",[804,879,870],{"class":820},[804,881,882],{"class":813}," run",[804,884,885],{"class":813}," build\n",[804,887,889,891,893],{"class":806,"line":888},5,[804,890,850],{"class":809},[804,892,882],{"class":813},[804,894,895],{"class":813}," dev:prepare\n",[804,897,899,901,903,905,908,910,912],{"class":806,"line":898},6,[804,900,850],{"class":809},[804,902,861],{"class":813},[804,904,864],{"class":820},[804,906,907],{"class":813},".\u002Fpackages\u002F*\u002Fplayground",[804,909,870],{"class":820},[804,911,882],{"class":813},[804,913,885],{"class":813},[751,915,916,942],{},[754,917,918,921,922,925,926,929,930,933,934,937,938,941],{},[768,919,920],{},"dev:prepare"," loads ",[768,923,924],{},"src\u002Fmodule.ts",", which imports ",[768,927,928],{},"@i18n-micro\u002F*"," from their ",[768,931,932],{},"dist\u002F",", so the packages must be built first. It also writes ",[768,935,936],{},".nuxt\u002Ftsconfig.json",", which the root ",[768,939,940],{},"tsconfig.json"," extends.",[754,943,944,945,948,949,952,953,956,957,960],{},"The package playground build generates the ",[768,946,947],{},"virtual:i18n-micro\u002Fconfig"," declaration that the Astro playground needs. Skip it and ",[768,950,951],{},"pnpm run test:unit"," \u002F ",[768,954,955],{},"pnpm run typecheck"," fail with ",[768,958,959],{},"Cannot find module 'virtual:i18n-micro\u002Fconfig'",".",[742,962,963,964,967,968,971,972,793],{},"Then start the playground at ",[768,965,966],{},"http:\u002F\u002Flocalhost:3000"," (",[768,969,970],{},"\u002F"," redirects to ",[768,973,974],{},"\u002Fen",[795,976,978],{"className":797,"code":977,"language":799,"meta":800,"style":800},"pnpm run dev\n",[768,979,980],{"__ignoreMap":800},[804,981,982,984,986],{"class":806,"line":353},[804,983,850],{"class":809},[804,985,882],{"class":813},[804,987,988],{"class":813}," dev\n",[742,990,991,992,995],{},"Warnings about ",[768,993,994],{},"localeCookie"," and large translation payloads at startup are expected.",[746,997,999],{"id":998},"where-to-change-what","Where to change what",[1001,1002,1003,1016],"table",{},[1004,1005,1006],"thead",{},[1007,1008,1009,1013],"tr",{},[1010,1011,1012],"th",{},"Goal",[1010,1014,1015],{},"Location",[1017,1018,1019,1029,1039,1049,1060,1070,1083,1106,1121],"tbody",{},[1007,1020,1021,1025],{},[1022,1023,1024],"td",{},"Module options, build hooks",[1022,1026,1027],{},[768,1028,924],{},[1007,1030,1031,1034],{},[1022,1032,1033],{},"Nuxt runtime (plugins, composables, middleware, server)",[1022,1035,1036],{},[768,1037,1038],{},"src\u002Fruntime\u002F",[1007,1040,1041,1044],{},[1022,1042,1043],{},"Shared types",[1022,1045,1046],{},[768,1047,1048],{},"packages\u002Ftypes\u002Fsrc\u002F",[1007,1050,1051,1054],{},[1022,1052,1053],{},"Framework-agnostic helpers",[1022,1055,1056,1059],{},[768,1057,1058],{},"packages\u002Futils\u002Fsrc\u002F"," (subpath exports)",[1007,1061,1062,1065],{},[1022,1063,1064],{},"Translation, plural, formatting",[1022,1066,1067],{},[768,1068,1069],{},"packages\u002Fcore\u002Fsrc\u002F",[1007,1071,1072,1075],{},[1022,1073,1074],{},"Route generation \u002F runtime paths",[1022,1076,1077,952,1080],{},[768,1078,1079],{},"packages\u002Froute-strategy\u002F",[768,1081,1082],{},"packages\u002Fpath-strategy\u002F",[1007,1084,1085,1088],{},[1022,1086,1087],{},"Framework bindings",[1022,1089,1090,1093,1094,1093,1096,1093,1098,1093,1100,1093,1102,1093,1104],{},[768,1091,1092],{},"packages\u002Fvue",", ",[768,1095,238],{},[768,1097,234],{},[768,1099,250],{},[768,1101,210],{},[768,1103,226],{},[768,1105,270],{},[1007,1107,1108,1111],{},[1022,1109,1110],{},"Docs",[1022,1112,1113,1116,1117,1120],{},[768,1114,1115],{},"docs\u002F"," — never ",[768,1118,1119],{},"docs\u002Fnews\u002F"," unless a maintainer asks",[1007,1122,1123,1126],{},[1022,1124,1125],{},"E2E tests and fixtures",[1022,1127,1128,1093,1131],{},[768,1129,1130],{},"test\u002F",[768,1132,1133],{},"test\u002Ffixtures\u002F",[742,1135,1136,1137,1139,1140,1143],{},"Work in this order: types, utils, core, then the Nuxt runtime or framework package, then docs and tests. Reuse ",[768,1138,680],{}," and core instead of copying logic into a framework package. ",[1141,1142,327],"a",{"href":328}," explains how the pieces fit.",[746,1145,1147],{"id":1146},"checks","Checks",[1001,1149,1150,1160],{},[1004,1151,1152],{},[1007,1153,1154,1157],{},[1010,1155,1156],{},"Command",[1010,1158,1159],{},"What it does",[1017,1161,1162,1175,1185,1194,1203,1213,1227,1237],{},[1007,1163,1164,1172],{},[1022,1165,1166,952,1169],{},[768,1167,1168],{},"pnpm run lint",[768,1170,1171],{},"pnpm run lint:fix",[1022,1173,1174],{},"Oxlint",[1007,1176,1177,1182],{},[1022,1178,1179],{},[768,1180,1181],{},"pnpm run format",[1022,1183,1184],{},"Oxfmt",[1007,1186,1187,1191],{},[1022,1188,1189],{},[768,1190,955],{},[1022,1192,1193],{},"Root, playground, scripts, packages, package playgrounds",[1007,1195,1196,1200],{},[1022,1197,1198],{},[768,1199,951],{},[1022,1201,1202],{},"Fast unit tests, no builds",[1007,1204,1205,1210],{},[1022,1206,1207],{},[768,1208,1209],{},"pnpm run test",[1022,1211,1212],{},"Everything: unit, integration, packages, e2e",[1007,1214,1215,1220],{},[1022,1216,1217],{},[768,1218,1219],{},"pnpm run test:e2e",[1022,1221,1222,1223,1226],{},"Browser journeys (",[768,1224,1225],{},"pnpm exec playwright install chromium"," once first)",[1007,1228,1229,1234],{},[1022,1230,1231],{},[768,1232,1233],{},"pnpm run docs:generate",[1022,1235,1236],{},"Regenerate the generated docs regions after changing JSDoc, options or exports",[1007,1238,1239,1244],{},[1022,1240,1241],{},[768,1242,1243],{},"pnpm run docs:dev",[1022,1245,1246],{},"Docs site with hot reload",[742,1248,1249,1250,1093,1253,1256,1257,1260,1261,1263,1264,1266,1267,960],{},"Run at least ",[768,1251,1252],{},"lint",[768,1254,1255],{},"typecheck"," and ",[768,1258,1259],{},"test:unit"," before you push; run the full ",[768,1262,1209],{}," when you touch runtime or routing. Test layout and how to add a test: ",[1141,1265,331],{"href":332},". Every maintenance command: ",[1141,1268,335],{"href":336},[746,1270,1272],{"id":1271},"changing-a-package","Changing a package",[742,1274,1275,1276,1279,1280,1283],{},"Packages under ",[768,1277,1278],{},"packages\u002F*"," are versioned by hand; the release scripts bump only the root. ",[768,1281,1282],{},"pnpm publish -r"," silently skips a version that is already on npm, so a missing bump leaves the package stale.",[1285,1286,1287,1294,1303],"ol",{},[754,1288,1289,1290,1293],{},"Bump every changed package once per pull request (not per commit): ",[768,1291,1292],{},"pnpm run bump --level patch --packages \u003Cnames>",". Use a patch unless a maintainer decides on minor or major.",[754,1295,1296,1297,1299,1300,960],{},"Rebuild it so ",[768,1298,932],{}," matches the source: ",[768,1301,1302],{},"pnpm --filter @i18n-micro\u002F\u003Cname> build",[754,1304,1305,1306,1308,1309,1312],{},"Commit source and version together. ",[768,1307,932],{}," is gitignored; ",[768,1310,1311],{},"prepack"," rebuilds it for a release.",[742,1314,1315,1316,1319,1320,1323,1324,1327,1328,1331,1332,1336],{},"CI runs ",[768,1317,1318],{},"pnpm run check:versions"," against the merge base; changes to tests, docs and playgrounds do not count. ",[757,1321,1322],{},"Never"," edit the root ",[768,1325,1326],{},"version"," or ",[768,1329,1330],{},"CHANGELOG.md"," by hand: only the release scripts change them. ",[1141,1333,1335],{"href":1334},"\u002Fcontributing\u002Fmaintenance-commands#publishing","Publishing"," lists the commands.",[746,1338,1340],{"id":1339},"commits-and-pull-requests","Commits and pull requests",[751,1342,1343,1358,1361,1372,1375],{},[754,1344,1345,1346,1093,1349,1093,1352,1093,1355,960],{},"Conventional Commits: ",[768,1347,1348],{},"feat(scope): …",[768,1350,1351],{},"fix(scope): …",[768,1353,1354],{},"docs(scope): …",[768,1356,1357],{},"test(scope): …",[754,1359,1360],{},"Follow-ups are new commits; do not amend or force-push a branch under review.",[754,1362,1363,1364,1367,1368,1371],{},"Target ",[768,1365,1366],{},"main"," of ",[768,1369,1370],{},"s00d\u002Fnuxt-i18n-micro",", fill in the pull request template, link the issue.",[754,1373,1374],{},"Update docs when you change a public API or an exports map; add or adjust tests next to the change.",[754,1376,1377,1378,1384],{},"Bugs and feature requests go through the ",[1141,1379,1383],{"href":1380,"rel":1381},"https:\u002F\u002Fgithub.com\u002Fs00d\u002Fnuxt-i18n-micro\u002Fissues\u002Fnew\u002Fchoose",[1382],"nofollow","issue templates","; include a reproduction.",[746,1386,1388],{"id":1387},"related","Related",[1390,1391,1392,1396,1398,1400,1402],"card-group",{},[1393,1394],"card",{"icon":1395,"title":327,"to":328},"i-lucide-git-pull-request",[1393,1397],{"icon":1395,"title":331,"to":332},[1393,1399],{"icon":1395,"title":335,"to":336},[1393,1401],{"icon":1395,"title":339,"to":340},[1393,1403],{"icon":1395,"title":343,"to":344},[1405,1406,1407],"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 pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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":800,"searchDepth":837,"depth":837,"links":1409},[1410,1411,1412,1413,1414,1415,1416],{"id":748,"depth":837,"text":749},{"id":781,"depth":837,"text":782},{"id":998,"depth":837,"text":999},{"id":1146,"depth":837,"text":1147},{"id":1271,"depth":837,"text":1272},{"id":1339,"depth":837,"text":1340},{"id":1387,"depth":837,"text":1388},"Set up the nuxt-i18n-micro monorepo, run the playground and the checks, version packages and open a pull request.","md","2026-11-04T00:40:16+04:00",null,{"outline":1422},[837,847],{"order":6},{"title":320,"description":1417},"iJD8fsXl5leS3OTHhSm8Gn1b5T11dQchTGEGJKLHj_s",[1420,1427],{"title":327,"path":328,"description":1428},"How the Nuxt module builds, stores, serves and loads translation payloads, and where each part lives in the source.",1793786008890]