[{"data":1,"prerenderedAt":2903},["ShallowReactive",2],{"navigation":3,"v3-navigation":411,"\u002Fintegrations\u002Fastro-package":738,"\u002Fintegrations\u002Fastro-package-surround":2898},[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,359,363,367,371,375,379,383,387,391,395,399,403,407],{"title":352,"path":348,"stem":349,"order":353},"News & Releases",1,{"title":355,"path":356,"stem":357,"order":358},"v4.1.0","\u002Fnews\u002Fv4.1.0","news\u002Fv4.1.0",9,{"title":360,"path":361,"stem":362,"order":6},"v4.0.0","\u002Fnews\u002Fv4.0.0","news\u002Fv4.0.0",{"title":364,"path":365,"stem":366,"order":18},"v3.24.0","\u002Fnews\u002Fv3.24.0","news\u002Fv3.24.0",{"title":368,"path":369,"stem":370,"order":23},"v3.22.0","\u002Fnews\u002Fv3.22.0","news\u002Fv3.22.0",{"title":372,"path":373,"stem":374,"order":28},"v3.21.0","\u002Fnews\u002Fv3.21.0","news\u002Fv3.21.0",{"title":376,"path":377,"stem":378,"order":33},"v3.20.0","\u002Fnews\u002Fv3.20.0","news\u002Fv3.20.0",{"title":380,"path":381,"stem":382,"order":39},"v3.19.0","\u002Fnews\u002Fv3.19.0","news\u002Fv3.19.0",{"title":384,"path":385,"stem":386,"order":44},"v3.0.0","\u002Fnews\u002Fv3.0.0","news\u002Fv3.0.0",{"title":388,"path":389,"stem":390,"order":49},"v2.14.1","\u002Fnews\u002Fv2.14.1","news\u002Fv2.14.1",{"title":392,"path":393,"stem":394,"order":54},"v2.0.0","\u002Fnews\u002Fv2.0.0","news\u002Fv2.0.0",{"title":396,"path":397,"stem":398,"order":60},"v1.73.0","\u002Fnews\u002Fv1.73.0","news\u002Fv1.73.0",{"title":400,"path":401,"stem":402,"order":65},"v1.65.0","\u002Fnews\u002Fv1.65.0","news\u002Fv1.65.0",{"title":404,"path":405,"stem":406,"order":70},"v1.58.0","\u002Fnews\u002Fv1.58.0","news\u002Fv1.58.0",{"title":408,"path":409,"stem":410,"order":75},"v1.1.0","\u002Fnews\u002Fv1.1.0","news\u002Fv1.1.0",[412],{"title":413,"path":414,"stem":415,"children":416},"V3","\u002Fv3","v3",[417,420,557,603,696,717,734],{"title":136,"path":414,"stem":418,"order":419},"v3\u002Findex",0,{"title":5,"order":6,"path":421,"stem":422,"children":423,"page":129},"\u002Fv3\u002Fguide","v3\u002Fguide",[424,429,433,437,441,446,450,454,458,462,466,470,474,478,483,487,492,496,500,504,508,512,516,519,523,527,532,538,543,547,552],{"title":425,"path":426,"stem":427,"order":6,"group":428},"Getting Started","\u002Fv3\u002Fguide\u002Fgetting-started","v3\u002Fguide\u002Fgetting-started","Basics",{"title":430,"path":431,"stem":432,"order":18,"group":428},"Configuration","\u002Fv3\u002Fguide\u002Fconfiguration","v3\u002Fguide\u002Fconfiguration",{"title":434,"path":435,"stem":436,"order":23,"group":428},"Folder Structure","\u002Fv3\u002Fguide\u002Ffolder-structure","v3\u002Fguide\u002Ffolder-structure",{"title":438,"path":439,"stem":440,"order":28,"group":428},"Routing Strategy","\u002Fv3\u002Fguide\u002Fstrategy","v3\u002Fguide\u002Fstrategy",{"title":442,"path":443,"stem":444,"order":33,"group":445},"Translating Content","\u002Fv3\u002Fguide\u002Fusing","v3\u002Fguide\u002Fusing","Usage",{"title":447,"path":448,"stem":449,"order":39,"group":445},"Per Component Translations","\u002Fv3\u002Fguide\u002Fper-component-translations","v3\u002Fguide\u002Fper-component-translations",{"title":451,"path":452,"stem":453,"order":44,"group":445},"Custom Localized Routes","\u002Fv3\u002Fguide\u002Fcustom-locale-routes","v3\u002Fguide\u002Fcustom-locale-routes",{"title":455,"path":456,"stem":457,"order":49,"group":445},"Custom Auto Detect","\u002Fv3\u002Fguide\u002Fcustom-auto-detect","v3\u002Fguide\u002Fcustom-auto-detect",{"title":459,"path":460,"stem":461,"order":54,"group":445},"Runtime Overrides","\u002Fv3\u002Fguide\u002Fruntime-overrides","v3\u002Fguide\u002Fruntime-overrides",{"title":463,"path":464,"stem":465,"order":60,"group":445},"Layers","\u002Fv3\u002Fguide\u002Flayers","v3\u002Fguide\u002Flayers",{"title":77,"path":467,"stem":468,"order":65,"group":469},"\u002Fv3\u002Fguide\u002Fseo","v3\u002Fguide\u002Fseo","SEO & URLs",{"title":471,"path":472,"stem":473,"order":70,"group":469},"Multi Domain Locales","\u002Fv3\u002Fguide\u002Fmulti-domain-locales","v3\u002Fguide\u002Fmulti-domain-locales",{"title":475,"path":476,"stem":477,"order":75,"group":469},"Excluding Static Files","\u002Fv3\u002Fguide\u002Fexcluding-static-files","v3\u002Fguide\u002Fexcluding-static-files",{"title":479,"path":480,"stem":481,"order":80,"group":482},"Performance","\u002Fv3\u002Fguide\u002Fperformance","v3\u002Fguide\u002Fperformance","Performance & Deployment",{"title":484,"path":485,"stem":486,"order":86,"group":482},"Benchmark Results","\u002Fv3\u002Fguide\u002Fperformance-results","v3\u002Fguide\u002Fperformance-results",{"title":488,"path":489,"stem":490,"order":491,"group":482},"Performance methodology","\u002Fv3\u002Fguide\u002Fperformance-methodology","v3\u002Fguide\u002Fperformance-methodology",155,{"title":493,"path":494,"stem":495,"order":91,"group":482},"Server Side Translations","\u002Fv3\u002Fguide\u002Fserver-side-translations","v3\u002Fguide\u002Fserver-side-translations",{"title":497,"path":498,"stem":499,"order":97,"group":482},"Firebase Deployment","\u002Fv3\u002Fguide\u002Ffirebase","v3\u002Fguide\u002Ffirebase",{"title":501,"path":502,"stem":503,"order":102,"group":482},"Release Smoke Checks","\u002Fv3\u002Fguide\u002Frelease-smoke","v3\u002Fguide\u002Frelease-smoke",{"title":505,"path":506,"stem":507,"order":107,"group":482},"Preset local testing","\u002Fv3\u002Fguide\u002Fpreset-local-testing","v3\u002Fguide\u002Fpreset-local-testing",{"title":509,"path":510,"stem":511,"order":113,"group":482},"Maintenance Commands","\u002Fv3\u002Fguide\u002Fmaintenance-commands","v3\u002Fguide\u002Fmaintenance-commands",{"title":513,"path":514,"stem":515,"order":118,"group":108},"CLI Tool","\u002Fv3\u002Fguide\u002Fcli","v3\u002Fguide\u002Fcli",{"title":104,"path":517,"stem":518,"order":123,"group":108},"\u002Fv3\u002Fguide\u002Fdevtools","v3\u002Fguide\u002Fdevtools",{"title":520,"path":521,"stem":522,"order":128,"group":108},"Testing Your App","\u002Fv3\u002Fguide\u002Ftesting","v3\u002Fguide\u002Ftesting",{"title":120,"path":524,"stem":525,"order":526,"group":108},"\u002Fv3\u002Fguide\u002Fstorybook","v3\u002Fguide\u002Fstorybook",240,{"title":528,"path":529,"stem":530,"order":531,"group":108},"Crowdin Integration","\u002Fv3\u002Fguide\u002Fcrowdin","v3\u002Fguide\u002Fcrowdin",250,{"title":533,"path":534,"stem":535,"order":536,"group":537},"Migration from nuxt-i18n","\u002Fv3\u002Fguide\u002Fmigration","v3\u002Fguide\u002Fmigration",260,"Migration & Help",{"title":539,"path":540,"stem":541,"order":542,"group":537},"Upgrade to v3","\u002Fv3\u002Fguide\u002Fv3-upgrade","v3\u002Fguide\u002Fv3-upgrade",270,{"title":25,"path":544,"stem":545,"order":546,"group":537},"\u002Fv3\u002Fguide\u002Ffaq","v3\u002Fguide\u002Ffaq",280,{"title":548,"path":549,"stem":550,"order":551,"group":537},"Contribution","\u002Fv3\u002Fguide\u002Fcontribution","v3\u002Fguide\u002Fcontribution",290,{"title":553,"path":554,"stem":555,"order":556,"group":537},"Testing the Module","\u002Fv3\u002Fguide\u002Ftesting-strategies","v3\u002Fguide\u002Ftesting-strategies",300,{"title":558,"order":18,"path":559,"stem":560,"children":561},"Integrations","\u002Fv3\u002Fintegrations","v3\u002Fintegrations\u002Findex",[562,563,567,571,575,579,583,587,591,595,599],{"title":136,"path":559,"stem":560,"order":6},{"title":564,"path":565,"stem":566,"order":18},"Vue Package","\u002Fv3\u002Fintegrations\u002Fvue-package","v3\u002Fintegrations\u002Fvue-package",{"title":568,"path":569,"stem":570,"order":23},"React Package","\u002Fv3\u002Fintegrations\u002Freact-package","v3\u002Fintegrations\u002Freact-package",{"title":572,"path":573,"stem":574,"order":28},"Preact Package","\u002Fv3\u002Fintegrations\u002Fpreact-package","v3\u002Fintegrations\u002Fpreact-package",{"title":576,"path":577,"stem":578,"order":33},"Solid Package","\u002Fv3\u002Fintegrations\u002Fsolid-package","v3\u002Fintegrations\u002Fsolid-package",{"title":580,"path":581,"stem":582,"order":39},"Astro Package","\u002Fv3\u002Fintegrations\u002Fastro-package","v3\u002Fintegrations\u002Fastro-package",{"title":584,"path":585,"stem":586,"order":44},"VitePress Package","\u002Fv3\u002Fintegrations\u002Fvitepress-package","v3\u002Fintegrations\u002Fvitepress-package",{"title":588,"path":589,"stem":590,"order":49},"Runtime Package","\u002Fv3\u002Fintegrations\u002Fruntime-package","v3\u002Fintegrations\u002Fruntime-package",{"title":592,"path":593,"stem":594,"order":54},"Node.js Package","\u002Fv3\u002Fintegrations\u002Fnodejs-package","v3\u002Fintegrations\u002Fnodejs-package",{"title":596,"path":597,"stem":598,"order":60},"Types Generator","\u002Fv3\u002Fintegrations\u002Ftypes-generator","v3\u002Fintegrations\u002Ftypes-generator",{"title":600,"path":601,"stem":602,"order":65},"Devtools Package","\u002Fv3\u002Fintegrations\u002Fdevtools-ui-package","v3\u002Fintegrations\u002Fdevtools-ui-package",{"title":181,"order":23,"path":604,"stem":605,"children":606},"\u002Fv3\u002Fapi","v3\u002Fapi\u002Findex",[607,608,612,616,620,624],{"title":136,"path":604,"stem":605,"order":6},{"title":609,"path":610,"stem":611,"order":18},"Methods","\u002Fv3\u002Fapi\u002Fmethods","v3\u002Fapi\u002Fmethods",{"title":613,"path":614,"stem":615,"order":23},"Events","\u002Fv3\u002Fapi\u002Fevents","v3\u002Fapi\u002Fevents",{"title":617,"path":618,"stem":619,"order":28},"Translations and Cache","\u002Fv3\u002Fapi\u002Fi18n-cache-api","v3\u002Fapi\u002Fi18n-cache-api",{"title":621,"path":622,"stem":623,"order":33},"Module Options","\u002Fv3\u002Fapi\u002Fmodule-options","v3\u002Fapi\u002Fmodule-options",{"title":205,"path":625,"stem":626,"children":627,"order":39},"\u002Fv3\u002Fapi\u002Fpackages","v3\u002Fapi\u002Fpackages",[628,632,636,640,644,648,652,656,660,664,668,672,676,680,684,688,692],{"title":629,"path":630,"stem":631},"@i18n-micro\u002Fastro","\u002Fv3\u002Fapi\u002Fpackages\u002Fastro","v3\u002Fapi\u002Fpackages\u002Fastro",{"title":633,"path":634,"stem":635},"@i18n-micro\u002Fcore","\u002Fv3\u002Fapi\u002Fpackages\u002Fcore","v3\u002Fapi\u002Fpackages\u002Fcore",{"title":637,"path":638,"stem":639},"@i18n-micro\u002Fdevtools-ui","\u002Fv3\u002Fapi\u002Fpackages\u002Fdevtools-ui","v3\u002Fapi\u002Fpackages\u002Fdevtools-ui",{"title":641,"path":642,"stem":643},"@i18n-micro\u002Fhmr","\u002Fv3\u002Fapi\u002Fpackages\u002Fhmr","v3\u002Fapi\u002Fpackages\u002Fhmr",{"title":645,"path":646,"stem":647},"@i18n-micro\u002Fnode","\u002Fv3\u002Fapi\u002Fpackages\u002Fnode","v3\u002Fapi\u002Fpackages\u002Fnode",{"title":649,"path":650,"stem":651},"@i18n-micro\u002Fpath-strategy","\u002Fv3\u002Fapi\u002Fpackages\u002Fpath-strategy","v3\u002Fapi\u002Fpackages\u002Fpath-strategy",{"title":653,"path":654,"stem":655},"@i18n-micro\u002Fpreact","\u002Fv3\u002Fapi\u002Fpackages\u002Fpreact","v3\u002Fapi\u002Fpackages\u002Fpreact",{"title":657,"path":658,"stem":659},"@i18n-micro\u002Freact","\u002Fv3\u002Fapi\u002Fpackages\u002Freact","v3\u002Fapi\u002Fpackages\u002Freact",{"title":661,"path":662,"stem":663},"@i18n-micro\u002Froute-strategy","\u002Fv3\u002Fapi\u002Fpackages\u002Froute-strategy","v3\u002Fapi\u002Fpackages\u002Froute-strategy",{"title":665,"path":666,"stem":667},"@i18n-micro\u002Fruntime","\u002Fv3\u002Fapi\u002Fpackages\u002Fruntime","v3\u002Fapi\u002Fpackages\u002Fruntime",{"title":669,"path":670,"stem":671},"@i18n-micro\u002Fsolid","\u002Fv3\u002Fapi\u002Fpackages\u002Fsolid","v3\u002Fapi\u002Fpackages\u002Fsolid",{"title":673,"path":674,"stem":675},"@i18n-micro\u002Ftest-utils","\u002Fv3\u002Fapi\u002Fpackages\u002Ftest-utils","v3\u002Fapi\u002Fpackages\u002Ftest-utils",{"title":677,"path":678,"stem":679},"@i18n-micro\u002Ftypes","\u002Fv3\u002Fapi\u002Fpackages\u002Ftypes","v3\u002Fapi\u002Fpackages\u002Ftypes",{"title":681,"path":682,"stem":683},"@i18n-micro\u002Ftypes-generator","\u002Fv3\u002Fapi\u002Fpackages\u002Ftypes-generator","v3\u002Fapi\u002Fpackages\u002Ftypes-generator",{"title":685,"path":686,"stem":687},"@i18n-micro\u002Futils","\u002Fv3\u002Fapi\u002Fpackages\u002Futils","v3\u002Fapi\u002Fpackages\u002Futils",{"title":689,"path":690,"stem":691},"@i18n-micro\u002Fvitepress","\u002Fv3\u002Fapi\u002Fpackages\u002Fvitepress","v3\u002Fapi\u002Fpackages\u002Fvitepress",{"title":693,"path":694,"stem":695},"@i18n-micro\u002Fvue","\u002Fv3\u002Fapi\u002Fpackages\u002Fvue","v3\u002Fapi\u002Fpackages\u002Fvue",{"title":299,"order":28,"path":697,"stem":698,"children":699},"\u002Fv3\u002Fcomponents","v3\u002Fcomponents\u002Findex",[700,701,705,709,713],{"title":136,"path":697,"stem":698,"order":6},{"title":702,"path":703,"stem":704,"order":18},"i18n-t","\u002Fv3\u002Fcomponents\u002Fi18n-t","v3\u002Fcomponents\u002Fi18n-t",{"title":706,"path":707,"stem":708,"order":23},"i18n-switcher","\u002Fv3\u002Fcomponents\u002Fi18n-switcher","v3\u002Fcomponents\u002Fi18n-switcher",{"title":710,"path":711,"stem":712,"order":28},"i18n-link","\u002Fv3\u002Fcomponents\u002Fi18n-link","v3\u002Fcomponents\u002Fi18n-link",{"title":714,"path":715,"stem":716,"order":33},"i18n-group","\u002Fv3\u002Fcomponents\u002Fi18n-group","v3\u002Fcomponents\u002Fi18n-group",{"title":278,"path":718,"stem":719,"children":720,"order":33},"\u002Fv3\u002Fcomposables","v3\u002Fcomposables\u002Findex",[721,722,725,728,731],{"title":136,"path":718,"stem":719,"order":6},{"title":283,"path":723,"stem":724,"order":18},"\u002Fv3\u002Fcomposables\u002FuseI18n","v3\u002Fcomposables\u002FuseI18n",{"title":295,"path":726,"stem":727,"order":23},"\u002Fv3\u002Fcomposables\u002FuseLocaleHead","v3\u002Fcomposables\u002FuseLocaleHead",{"title":291,"path":729,"stem":730,"order":28},"\u002Fv3\u002Fcomposables\u002FuseI18nHead","v3\u002Fcomposables\u002FuseI18nHead",{"title":287,"path":732,"stem":733,"order":33},"\u002Fv3\u002Fcomposables\u002FuseI18nLocale","v3\u002Fcomposables\u002FuseI18nLocale",{"title":735,"path":736,"stem":737,"order":39},"Examples","\u002Fv3\u002Fexamples","v3\u002Fexamples",{"id":739,"title":152,"body":740,"description":2889,"extension":2890,"lastUpdated":2891,"links":2892,"meta":2893,"navigation":2895,"path":153,"seo":2896,"stem":154,"__hash__":2897},"docs\u002Fintegrations\u002Fastro-package.md",{"type":741,"value":742,"toc":2873},"minimark",[743,746,783,788,844,878,882,889,1301,1308,1313,1507,1528,1532,1561,1936,1950,1954,2095,2109,2113,2176,2254,2300,2302,2313,2434,2438,2448,2456,2498,2523,2526,2529,2560,2565,2624,2630,2647,2671,2675,2713,2716,2787,2845,2849,2869],[744,745,152],"h1",{"id":210},[747,748,749,752,753,756,757,760,761,764,765,768,769,772,773,776,777,782],"p",{},[750,751,629],"code",{}," translates Astro pages on the server: a middleware picks the locale from the URL and puts a per-request instance in ",[750,754,755],{},"Astro.locals",", and ",[750,758,759],{},"useI18n(Astro)"," reads it. Use it in an Astro site that needs locale-prefixed URLs (",[750,762,763],{},"\u002Fabout",", ",[750,766,767],{},"\u002Ffr\u002Fabout",") and shared JSON dictionaries. You get ",[750,770,771],{},".astro"," components, a home-page redirect to the visitor's language, ",[750,774,775],{},"hreflang"," tags, and props for ",[778,779,781],"a",{"href":780},".\u002Fastro-islands","islands",".",[784,785,787],"h2",{"id":786},"install","Install",[789,790,791,815,830],"code-group",{},[792,793,799],"pre",{"className":794,"code":795,"filename":796,"language":797,"meta":798,"style":798},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add @i18n-micro\u002Fastro\n","pnpm","bash","",[750,800,801],{"__ignoreMap":798},[802,803,805,808,812],"span",{"class":804,"line":353},"line",[802,806,796],{"class":807},"sBMFI",[802,809,811],{"class":810},"sfazB"," add",[802,813,814],{"class":810}," @i18n-micro\u002Fastro\n",[792,816,819],{"className":794,"code":817,"filename":818,"language":797,"meta":798,"style":798},"npm install @i18n-micro\u002Fastro\n","npm",[750,820,821],{"__ignoreMap":798},[802,822,823,825,828],{"class":804,"line":353},[802,824,818],{"class":807},[802,826,827],{"class":810}," install",[802,829,814],{"class":810},[792,831,834],{"className":794,"code":832,"filename":833,"language":797,"meta":798,"style":798},"yarn add @i18n-micro\u002Fastro\n","yarn",[750,835,836],{"__ignoreMap":798},[802,837,838,840,842],{"class":804,"line":353},[802,839,833],{"class":807},[802,841,811],{"class":810},[802,843,814],{"class":810},[747,845,846,847,849,850,853,854,856,857,849,859,764,862,849,864,764,867,849,869,764,872,849,875,782],{},"Peer dependencies: ",[750,848,210],{}," ",[750,851,852],{},"^5.0.0 || ^6.0.0 || ^7.0.0",". Optional, only for ",[778,855,781],{"href":780},": ",[750,858,274],{},[750,860,861],{},"^3.3.0",[750,863,238],{},[750,865,866],{},"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",[750,868,234],{},[750,870,871],{},"^10.0.0 || ^11.0.0",[750,873,874],{},"svelte",[750,876,877],{},"^4.0.0 || ^5.0.0",[784,879,881],{"id":880},"setup","Setup",[747,883,884,885,888],{},"Add the integration. It bundles your dictionaries into the server and installs the middleware, so no ",[750,886,887],{},"src\u002Fmiddleware.ts"," is needed:",[792,890,894],{"className":891,"code":892,"language":893,"meta":798,"style":798},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F astro.config.mjs\nimport { defineConfig } from 'astro\u002Fconfig'\nimport node from '@astrojs\u002Fnode'\nimport { i18nIntegration } from '@i18n-micro\u002Fastro'\n\nexport default defineConfig({\n  output: 'server',\n  adapter: node({ mode: 'standalone' }),\n  integrations: [\n    i18nIntegration({\n      locale: 'en',\n      fallbackLocale: 'en',\n      locales: [\n        { code: 'en', iso: 'en-US', displayName: 'English' },\n        { code: 'de', iso: 'de-DE', displayName: 'Deutsch' },\n        { code: 'fr', iso: 'fr-FR', displayName: 'Français' },\n      ],\n      translationDir: 'src\u002Flocales',\n    }),\n  ],\n})\n","ts",[750,895,896,902,932,950,970,977,995,1016,1051,1061,1070,1087,1103,1113,1162,1206,1250,1258,1275,1285,1292],{"__ignoreMap":798},[802,897,898],{"class":804,"line":353},[802,899,901],{"class":900},"sHwdD","\u002F\u002F astro.config.mjs\n",[802,903,905,909,913,917,920,923,926,929],{"class":804,"line":904},2,[802,906,908],{"class":907},"s7zQu","import",[802,910,912],{"class":911},"sMK4o"," {",[802,914,916],{"class":915},"sTEyZ"," defineConfig",[802,918,919],{"class":911}," }",[802,921,922],{"class":907}," from",[802,924,925],{"class":911}," '",[802,927,928],{"class":810},"astro\u002Fconfig",[802,930,931],{"class":911},"'\n",[802,933,935,937,940,943,945,948],{"class":804,"line":934},3,[802,936,908],{"class":907},[802,938,939],{"class":915}," node ",[802,941,942],{"class":907},"from",[802,944,925],{"class":911},[802,946,947],{"class":810},"@astrojs\u002Fnode",[802,949,931],{"class":911},[802,951,953,955,957,960,962,964,966,968],{"class":804,"line":952},4,[802,954,908],{"class":907},[802,956,912],{"class":911},[802,958,959],{"class":915}," i18nIntegration",[802,961,919],{"class":911},[802,963,922],{"class":907},[802,965,925],{"class":911},[802,967,629],{"class":810},[802,969,931],{"class":911},[802,971,973],{"class":804,"line":972},5,[802,974,976],{"emptyLinePlaceholder":975},true,"\n",[802,978,980,983,986,989,992],{"class":804,"line":979},6,[802,981,982],{"class":907},"export",[802,984,985],{"class":907}," default",[802,987,916],{"class":988},"s2Zo4",[802,990,991],{"class":915},"(",[802,993,994],{"class":911},"{\n",[802,996,998,1002,1005,1007,1010,1013],{"class":804,"line":997},7,[802,999,1001],{"class":1000},"swJcz","  output",[802,1003,1004],{"class":911},":",[802,1006,925],{"class":911},[802,1008,1009],{"class":810},"server",[802,1011,1012],{"class":911},"'",[802,1014,1015],{"class":911},",\n",[802,1017,1019,1022,1024,1027,1029,1032,1035,1037,1039,1042,1044,1046,1049],{"class":804,"line":1018},8,[802,1020,1021],{"class":1000},"  adapter",[802,1023,1004],{"class":911},[802,1025,1026],{"class":988}," node",[802,1028,991],{"class":915},[802,1030,1031],{"class":911},"{",[802,1033,1034],{"class":1000}," mode",[802,1036,1004],{"class":911},[802,1038,925],{"class":911},[802,1040,1041],{"class":810},"standalone",[802,1043,1012],{"class":911},[802,1045,919],{"class":911},[802,1047,1048],{"class":915},")",[802,1050,1015],{"class":911},[802,1052,1053,1056,1058],{"class":804,"line":358},[802,1054,1055],{"class":1000},"  integrations",[802,1057,1004],{"class":911},[802,1059,1060],{"class":915}," [\n",[802,1062,1063,1066,1068],{"class":804,"line":6},[802,1064,1065],{"class":988},"    i18nIntegration",[802,1067,991],{"class":915},[802,1069,994],{"class":911},[802,1071,1073,1076,1078,1080,1083,1085],{"class":804,"line":1072},11,[802,1074,1075],{"class":1000},"      locale",[802,1077,1004],{"class":911},[802,1079,925],{"class":911},[802,1081,1082],{"class":810},"en",[802,1084,1012],{"class":911},[802,1086,1015],{"class":911},[802,1088,1090,1093,1095,1097,1099,1101],{"class":804,"line":1089},12,[802,1091,1092],{"class":1000},"      fallbackLocale",[802,1094,1004],{"class":911},[802,1096,925],{"class":911},[802,1098,1082],{"class":810},[802,1100,1012],{"class":911},[802,1102,1015],{"class":911},[802,1104,1106,1109,1111],{"class":804,"line":1105},13,[802,1107,1108],{"class":1000},"      locales",[802,1110,1004],{"class":911},[802,1112,1060],{"class":915},[802,1114,1116,1119,1122,1124,1126,1128,1130,1133,1136,1138,1140,1143,1145,1147,1150,1152,1154,1157,1159],{"class":804,"line":1115},14,[802,1117,1118],{"class":911},"        {",[802,1120,1121],{"class":1000}," code",[802,1123,1004],{"class":911},[802,1125,925],{"class":911},[802,1127,1082],{"class":810},[802,1129,1012],{"class":911},[802,1131,1132],{"class":911},",",[802,1134,1135],{"class":1000}," iso",[802,1137,1004],{"class":911},[802,1139,925],{"class":911},[802,1141,1142],{"class":810},"en-US",[802,1144,1012],{"class":911},[802,1146,1132],{"class":911},[802,1148,1149],{"class":1000}," displayName",[802,1151,1004],{"class":911},[802,1153,925],{"class":911},[802,1155,1156],{"class":810},"English",[802,1158,1012],{"class":911},[802,1160,1161],{"class":911}," },\n",[802,1163,1165,1167,1169,1171,1173,1176,1178,1180,1182,1184,1186,1189,1191,1193,1195,1197,1199,1202,1204],{"class":804,"line":1164},15,[802,1166,1118],{"class":911},[802,1168,1121],{"class":1000},[802,1170,1004],{"class":911},[802,1172,925],{"class":911},[802,1174,1175],{"class":810},"de",[802,1177,1012],{"class":911},[802,1179,1132],{"class":911},[802,1181,1135],{"class":1000},[802,1183,1004],{"class":911},[802,1185,925],{"class":911},[802,1187,1188],{"class":810},"de-DE",[802,1190,1012],{"class":911},[802,1192,1132],{"class":911},[802,1194,1149],{"class":1000},[802,1196,1004],{"class":911},[802,1198,925],{"class":911},[802,1200,1201],{"class":810},"Deutsch",[802,1203,1012],{"class":911},[802,1205,1161],{"class":911},[802,1207,1209,1211,1213,1215,1217,1220,1222,1224,1226,1228,1230,1233,1235,1237,1239,1241,1243,1246,1248],{"class":804,"line":1208},16,[802,1210,1118],{"class":911},[802,1212,1121],{"class":1000},[802,1214,1004],{"class":911},[802,1216,925],{"class":911},[802,1218,1219],{"class":810},"fr",[802,1221,1012],{"class":911},[802,1223,1132],{"class":911},[802,1225,1135],{"class":1000},[802,1227,1004],{"class":911},[802,1229,925],{"class":911},[802,1231,1232],{"class":810},"fr-FR",[802,1234,1012],{"class":911},[802,1236,1132],{"class":911},[802,1238,1149],{"class":1000},[802,1240,1004],{"class":911},[802,1242,925],{"class":911},[802,1244,1245],{"class":810},"Français",[802,1247,1012],{"class":911},[802,1249,1161],{"class":911},[802,1251,1253,1256],{"class":804,"line":1252},17,[802,1254,1255],{"class":915},"      ]",[802,1257,1015],{"class":911},[802,1259,1261,1264,1266,1268,1271,1273],{"class":804,"line":1260},18,[802,1262,1263],{"class":1000},"      translationDir",[802,1265,1004],{"class":911},[802,1267,925],{"class":911},[802,1269,1270],{"class":810},"src\u002Flocales",[802,1272,1012],{"class":911},[802,1274,1015],{"class":911},[802,1276,1278,1281,1283],{"class":804,"line":1277},19,[802,1279,1280],{"class":911},"    }",[802,1282,1048],{"class":915},[802,1284,1015],{"class":911},[802,1286,1287,1290],{"class":804,"line":18},[802,1288,1289],{"class":915},"  ]",[802,1291,1015],{"class":911},[802,1293,1295,1298],{"class":804,"line":1294},21,[802,1296,1297],{"class":911},"}",[802,1299,1300],{"class":915},")\n",[747,1302,1303,1304,1307],{},"The dictionaries become code at build time: the server reads no disk, so it runs on the edge (Cloudflare, Vercel Edge) too. In ",[750,1305,1306],{},"astro dev"," an edit to a file applies on the next request.",[1309,1310,1312],"h3",{"id":1311},"integration-options","Integration options",[1314,1315,1316,1332],"table",{},[1317,1318,1319],"thead",{},[1320,1321,1322,1326,1329],"tr",{},[1323,1324,1325],"th",{},"Option",[1323,1327,1328],{},"Default",[1323,1330,1331],{},"Notes",[1333,1334,1335,1349,1362,1397,1410,1425,1443,1460,1478,1491],"tbody",{},[1320,1336,1337,1343,1346],{},[1338,1339,1340],"td",{},[750,1341,1342],{},"locale",[1338,1344,1345],{},"required",[1338,1347,1348],{},"Default locale.",[1320,1350,1351,1356,1360],{},[1338,1352,1353],{},[750,1354,1355],{},"fallbackLocale",[1338,1357,1358],{},[750,1359,1342],{},[1338,1361],{},[1320,1363,1364,1369,1374],{},[1338,1365,1366],{},[750,1367,1368],{},"locales",[1338,1370,1371],{},[750,1372,1373],{},"[]",[1338,1375,1376,1377,1380,1381,1384,1385,1388,1389,1392,1393,1396],{},"Full ",[750,1378,1379],{},"Locale"," objects. A ",[750,1382,1383],{},"disabled"," one is no URL's locale and no redirect target. ",[750,1386,1387],{},"iso"," is the tag plurals go by when the code is not one (",[750,1390,1391],{},"ua"," → ",[750,1394,1395],{},"uk-UA",").",[1320,1398,1399,1404,1407],{},[1338,1400,1401],{},[750,1402,1403],{},"translationDir",[1338,1405,1406],{},"none",[1338,1408,1409],{},"Folder bundled into the server, relative to the project root.",[1320,1411,1412,1417,1422],{},[1338,1413,1414],{},[750,1415,1416],{},"disablePageLocales",[1338,1418,1419],{},[750,1420,1421],{},"false",[1338,1423,1424],{},"Page files count as root translations.",[1320,1426,1427,1432,1437],{},[1338,1428,1429],{},[750,1430,1431],{},"autoDetect",[1338,1433,1434],{},[750,1435,1436],{},"true",[1338,1438,1439,1440,782],{},"Home-page redirect, see ",[778,1441,57],{"href":1442},"#locale-detection",[1320,1444,1445,1450,1454],{},[1338,1446,1447],{},[750,1448,1449],{},"redirectToDefault",[1338,1451,1452],{},[750,1453,1421],{},[1338,1455,1456,1459],{},[750,1457,1458],{},"\u002F"," also redirects when nothing prefers another locale.",[1320,1461,1462,1467,1472],{},[1338,1463,1464],{},[750,1465,1466],{},"localeCookie",[1338,1468,1469],{},[750,1470,1471],{},"'i18n-locale'",[1338,1473,1474,1477],{},[750,1475,1476],{},"null"," disables the cookie.",[1320,1479,1480,1485,1489],{},[1338,1481,1482],{},[750,1483,1484],{},"missingWarn",[1338,1486,1487],{},[750,1488,1421],{},[1338,1490],{},[1320,1492,1493,1498,1502],{},[1338,1494,1495],{},[750,1496,1497],{},"middleware",[1338,1499,1500],{},[750,1501,1436],{},[1338,1503,1504,1506],{},[750,1505,1421],{},": write the middleware yourself, see below.",[747,1508,1509,1510,1513,1514,1517,1518,764,1521,1524,1525,782],{},"The runtime settings are published in ",[750,1511,1512],{},"virtual:i18n-micro\u002Fconfig"," (",[750,1515,1516],{},"config.base"," is Astro's ",[750,1519,1520],{},"base",[750,1522,1523],{},"config.localeCodes"," the enabled codes), the dictionaries in ",[750,1526,1527],{},"virtual:i18n-micro\u002Fmessages",[1309,1529,1531],{"id":1530},"your-own-middleware","Your own middleware",[747,1533,1534,1535,1538,1539,1541,1542,1545,1546,1549,1550,1553,1554,1557,1558,1560],{},"A plural rule, a missing-key handler and a router adapter cannot cross from the config process to the server bundle. For those, pass ",[750,1536,1537],{},"middleware: false"," and write ",[750,1540,887],{},". Astro's ",[750,1543,1544],{},"i18n"," config is then set for you with ",[750,1547,1548],{},"routing: 'manual'",", so ",[750,1551,1552],{},"Astro.currentLocale"," and ",[750,1555,1556],{},"astro:i18n"," work. Astro does not allow that setting without a ",[750,1559,887],{},", so with the integration's own middleware they do not.",[792,1562,1564],{"className":891,"code":1563,"language":893,"meta":798,"style":798},"\u002F\u002F src\u002Fmiddleware.ts\nimport { config } from 'virtual:i18n-micro\u002Fconfig'\nimport { messages } from 'virtual:i18n-micro\u002Fmessages'\nimport { createAstroRouterAdapter, createI18n, createI18nMiddleware, localeIsoMap } from '@i18n-micro\u002Fastro'\n\nconst i18n = createI18n({\n  locale: config.defaultLocale,\n  fallbackLocale: config.fallbackLocale,\n  localeIso: localeIsoMap(config.locales),\n  messages: messages.root,\n  routeMessages: messages.routes,\n  plural: myPluralRule,\n})\n\nexport const onRequest = createI18nMiddleware({\n  i18n,\n  defaultLocale: config.defaultLocale,\n  locales: config.localeCodes,\n  localeObjects: config.locales,\n  autoDetect: config.autoDetect,\n  redirectToDefault: config.redirectToDefault,\n  localeCookie: config.localeCookie,\n  base: config.base,\n  routingStrategy: createAstroRouterAdapter(config.locales, config.defaultLocale),\n})\n",[750,1565,1566,1571,1590,1609,1643,1647,1665,1681,1696,1715,1731,1747,1759,1765,1769,1787,1794,1809,1825,1840,1855,1870,1886,1902,1929],{"__ignoreMap":798},[802,1567,1568],{"class":804,"line":353},[802,1569,1570],{"class":900},"\u002F\u002F src\u002Fmiddleware.ts\n",[802,1572,1573,1575,1577,1580,1582,1584,1586,1588],{"class":804,"line":904},[802,1574,908],{"class":907},[802,1576,912],{"class":911},[802,1578,1579],{"class":915}," config",[802,1581,919],{"class":911},[802,1583,922],{"class":907},[802,1585,925],{"class":911},[802,1587,1512],{"class":810},[802,1589,931],{"class":911},[802,1591,1592,1594,1596,1599,1601,1603,1605,1607],{"class":804,"line":934},[802,1593,908],{"class":907},[802,1595,912],{"class":911},[802,1597,1598],{"class":915}," messages",[802,1600,919],{"class":911},[802,1602,922],{"class":907},[802,1604,925],{"class":911},[802,1606,1527],{"class":810},[802,1608,931],{"class":911},[802,1610,1611,1613,1615,1618,1620,1623,1625,1628,1630,1633,1635,1637,1639,1641],{"class":804,"line":952},[802,1612,908],{"class":907},[802,1614,912],{"class":911},[802,1616,1617],{"class":915}," createAstroRouterAdapter",[802,1619,1132],{"class":911},[802,1621,1622],{"class":915}," createI18n",[802,1624,1132],{"class":911},[802,1626,1627],{"class":915}," createI18nMiddleware",[802,1629,1132],{"class":911},[802,1631,1632],{"class":915}," localeIsoMap",[802,1634,919],{"class":911},[802,1636,922],{"class":907},[802,1638,925],{"class":911},[802,1640,629],{"class":810},[802,1642,931],{"class":911},[802,1644,1645],{"class":804,"line":972},[802,1646,976],{"emptyLinePlaceholder":975},[802,1648,1649,1653,1656,1659,1661,1663],{"class":804,"line":979},[802,1650,1652],{"class":1651},"spNyl","const",[802,1654,1655],{"class":915}," i18n ",[802,1657,1658],{"class":911},"=",[802,1660,1622],{"class":988},[802,1662,991],{"class":915},[802,1664,994],{"class":911},[802,1666,1667,1670,1672,1674,1676,1679],{"class":804,"line":997},[802,1668,1669],{"class":1000},"  locale",[802,1671,1004],{"class":911},[802,1673,1579],{"class":915},[802,1675,782],{"class":911},[802,1677,1678],{"class":915},"defaultLocale",[802,1680,1015],{"class":911},[802,1682,1683,1686,1688,1690,1692,1694],{"class":804,"line":1018},[802,1684,1685],{"class":1000},"  fallbackLocale",[802,1687,1004],{"class":911},[802,1689,1579],{"class":915},[802,1691,782],{"class":911},[802,1693,1355],{"class":915},[802,1695,1015],{"class":911},[802,1697,1698,1701,1703,1705,1708,1710,1713],{"class":804,"line":358},[802,1699,1700],{"class":1000},"  localeIso",[802,1702,1004],{"class":911},[802,1704,1632],{"class":988},[802,1706,1707],{"class":915},"(config",[802,1709,782],{"class":911},[802,1711,1712],{"class":915},"locales)",[802,1714,1015],{"class":911},[802,1716,1717,1720,1722,1724,1726,1729],{"class":804,"line":6},[802,1718,1719],{"class":1000},"  messages",[802,1721,1004],{"class":911},[802,1723,1598],{"class":915},[802,1725,782],{"class":911},[802,1727,1728],{"class":915},"root",[802,1730,1015],{"class":911},[802,1732,1733,1736,1738,1740,1742,1745],{"class":804,"line":1072},[802,1734,1735],{"class":1000},"  routeMessages",[802,1737,1004],{"class":911},[802,1739,1598],{"class":915},[802,1741,782],{"class":911},[802,1743,1744],{"class":915},"routes",[802,1746,1015],{"class":911},[802,1748,1749,1752,1754,1757],{"class":804,"line":1089},[802,1750,1751],{"class":1000},"  plural",[802,1753,1004],{"class":911},[802,1755,1756],{"class":915}," myPluralRule",[802,1758,1015],{"class":911},[802,1760,1761,1763],{"class":804,"line":1105},[802,1762,1297],{"class":911},[802,1764,1300],{"class":915},[802,1766,1767],{"class":804,"line":1115},[802,1768,976],{"emptyLinePlaceholder":975},[802,1770,1771,1773,1776,1779,1781,1783,1785],{"class":804,"line":1164},[802,1772,982],{"class":907},[802,1774,1775],{"class":1651}," const",[802,1777,1778],{"class":915}," onRequest ",[802,1780,1658],{"class":911},[802,1782,1627],{"class":988},[802,1784,991],{"class":915},[802,1786,994],{"class":911},[802,1788,1789,1792],{"class":804,"line":1208},[802,1790,1791],{"class":915},"  i18n",[802,1793,1015],{"class":911},[802,1795,1796,1799,1801,1803,1805,1807],{"class":804,"line":1252},[802,1797,1798],{"class":1000},"  defaultLocale",[802,1800,1004],{"class":911},[802,1802,1579],{"class":915},[802,1804,782],{"class":911},[802,1806,1678],{"class":915},[802,1808,1015],{"class":911},[802,1810,1811,1814,1816,1818,1820,1823],{"class":804,"line":1260},[802,1812,1813],{"class":1000},"  locales",[802,1815,1004],{"class":911},[802,1817,1579],{"class":915},[802,1819,782],{"class":911},[802,1821,1822],{"class":915},"localeCodes",[802,1824,1015],{"class":911},[802,1826,1827,1830,1832,1834,1836,1838],{"class":804,"line":1277},[802,1828,1829],{"class":1000},"  localeObjects",[802,1831,1004],{"class":911},[802,1833,1579],{"class":915},[802,1835,782],{"class":911},[802,1837,1368],{"class":915},[802,1839,1015],{"class":911},[802,1841,1842,1845,1847,1849,1851,1853],{"class":804,"line":18},[802,1843,1844],{"class":1000},"  autoDetect",[802,1846,1004],{"class":911},[802,1848,1579],{"class":915},[802,1850,782],{"class":911},[802,1852,1431],{"class":915},[802,1854,1015],{"class":911},[802,1856,1857,1860,1862,1864,1866,1868],{"class":804,"line":1294},[802,1858,1859],{"class":1000},"  redirectToDefault",[802,1861,1004],{"class":911},[802,1863,1579],{"class":915},[802,1865,782],{"class":911},[802,1867,1449],{"class":915},[802,1869,1015],{"class":911},[802,1871,1873,1876,1878,1880,1882,1884],{"class":804,"line":1872},22,[802,1874,1875],{"class":1000},"  localeCookie",[802,1877,1004],{"class":911},[802,1879,1579],{"class":915},[802,1881,782],{"class":911},[802,1883,1466],{"class":915},[802,1885,1015],{"class":911},[802,1887,1889,1892,1894,1896,1898,1900],{"class":804,"line":1888},23,[802,1890,1891],{"class":1000},"  base",[802,1893,1004],{"class":911},[802,1895,1579],{"class":915},[802,1897,782],{"class":911},[802,1899,1520],{"class":915},[802,1901,1015],{"class":911},[802,1903,1905,1908,1910,1912,1914,1916,1918,1920,1922,1924,1927],{"class":804,"line":1904},24,[802,1906,1907],{"class":1000},"  routingStrategy",[802,1909,1004],{"class":911},[802,1911,1617],{"class":988},[802,1913,1707],{"class":915},[802,1915,782],{"class":911},[802,1917,1368],{"class":915},[802,1919,1132],{"class":911},[802,1921,1579],{"class":915},[802,1923,782],{"class":911},[802,1925,1926],{"class":915},"defaultLocale)",[802,1928,1015],{"class":911},[802,1930,1932,1934],{"class":804,"line":1931},25,[802,1933,1297],{"class":911},[802,1935,1300],{"class":915},[747,1937,1938,1939,1553,1942,1945,1946,1949],{},"To read the folder at runtime instead, ",[750,1940,1941],{},"loadTranslationsFromDir",[750,1943,1944],{},"loadTranslationsIntoI18n"," are in ",[750,1947,1948],{},"@i18n-micro\u002Fastro\u002Fnode"," (Node only).",[1309,1951,1953],{"id":1952},"middleware-options","Middleware options",[1314,1955,1956,1966],{},[1317,1957,1958],{},[1320,1959,1960,1962,1964],{},[1323,1961,1325],{},[1323,1963,1328],{},[1323,1965,1331],{},[1333,1967,1968,1983,1993,2004,2024,2038,2053,2067,2080],{},[1320,1969,1970,1974,1976],{},[1338,1971,1972],{},[750,1973,1544],{},[1338,1975,1345],{},[1338,1977,1978,1979,1982],{},"Global instance; each request gets ",[750,1980,1981],{},"i18n.fork(locale)",", which costs the same however many dictionaries there are.",[1320,1984,1985,1989,1991],{},[1338,1986,1987],{},[750,1988,1678],{},[1338,1990,1345],{},[1338,1992],{},[1320,1994,1995,1999,2001],{},[1338,1996,1997],{},[750,1998,1368],{},[1338,2000,1345],{},[1338,2002,2003],{},"Locale codes.",[1320,2005,2006,2011,2019],{},[1338,2007,2008],{},[750,2009,2010],{},"localeObjects",[1338,2012,2013,2015,2016],{},[750,2014,1368],{}," as ",[750,2017,2018],{},"{ code }",[1338,2020,1376,2021,2023],{},[750,2022,1379],{}," objects for components and SEO.",[1320,2025,2026,2030,2034],{},[1338,2027,2028],{},[750,2029,1431],{},[1338,2031,2032],{},[750,2033,1436],{},[1338,2035,1439,2036,782],{},[778,2037,57],{"href":1442},[1320,2039,2040,2044,2048],{},[1338,2041,2042],{},[750,2043,1449],{},[1338,2045,2046],{},[750,2047,1421],{},[1338,2049,2050,2052],{},[750,2051,1458],{}," also redirects when nothing prefers another locale, to the default locale's home as the routing strategy resolves it.",[1320,2054,2055,2059,2063],{},[1338,2056,2057],{},[750,2058,1466],{},[1338,2060,2061],{},[750,2062,1471],{},[1338,2064,2065,1477],{},[750,2066,1476],{},[1320,2068,2069,2074,2077],{},[1338,2070,2071],{},[750,2072,2073],{},"routingStrategy",[1338,2075,2076],{},"prefix except default",[1338,2078,2079],{},"Router adapter. Methods it leaves out come from the default adapter.",[1320,2081,2082,2086,2088],{},[1338,2083,2084],{},[750,2085,1520],{},[1338,2087,1406],{},[1338,2089,2090,2091,856,2093,782],{},"Astro's ",[750,2092,1520],{},[750,2094,1516],{},[747,2096,2097,2098,2101,2102,2105,2106,782],{},"Page files (",[750,2099,2100],{},"src\u002Flocales\u002Fpages\u002Fblog\u002Fpost\u002Fde.json",") are the route ",[750,2103,2104],{},"blog-post",": the page path joined with ",[750,2107,2108],{},"-",[784,2110,2112],{"id":2111},"translate","Translate",[792,2114,2117],{"className":2115,"code":2116,"language":210,"meta":798,"style":798},"language-astro shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\n\u002F\u002F src\u002Fpages\u002Findex.astro\nimport { useI18n } from '@i18n-micro\u002Fastro'\nimport I18nT from '@i18n-micro\u002Fastro\u002Fi18n-t'\n\nconst { t, tc, locale } = useI18n(Astro)\n---\n\n\u003Ch1>{t('greeting', { name: 'Ada' })}\u003C\u002Fh1>\n\u003Cp>{tc('apples', 3)}\u003C\u002Fp>\n\u003CI18nT keypath=\"welcome\" tag=\"p\" \u002F>\n\u003Cp>{locale}\u003C\u002Fp>\n",[750,2118,2119,2124,2129,2134,2139,2143,2148,2152,2156,2161,2166,2171],{"__ignoreMap":798},[802,2120,2121],{"class":804,"line":353},[802,2122,2123],{},"---\n",[802,2125,2126],{"class":804,"line":904},[802,2127,2128],{},"\u002F\u002F src\u002Fpages\u002Findex.astro\n",[802,2130,2131],{"class":804,"line":934},[802,2132,2133],{},"import { useI18n } from '@i18n-micro\u002Fastro'\n",[802,2135,2136],{"class":804,"line":952},[802,2137,2138],{},"import I18nT from '@i18n-micro\u002Fastro\u002Fi18n-t'\n",[802,2140,2141],{"class":804,"line":972},[802,2142,976],{"emptyLinePlaceholder":975},[802,2144,2145],{"class":804,"line":979},[802,2146,2147],{},"const { t, tc, locale } = useI18n(Astro)\n",[802,2149,2150],{"class":804,"line":997},[802,2151,2123],{},[802,2153,2154],{"class":804,"line":1018},[802,2155,976],{"emptyLinePlaceholder":975},[802,2157,2158],{"class":804,"line":358},[802,2159,2160],{},"\u003Ch1>{t('greeting', { name: 'Ada' })}\u003C\u002Fh1>\n",[802,2162,2163],{"class":804,"line":6},[802,2164,2165],{},"\u003Cp>{tc('apples', 3)}\u003C\u002Fp>\n",[802,2167,2168],{"class":804,"line":1072},[802,2169,2170],{},"\u003CI18nT keypath=\"welcome\" tag=\"p\" \u002F>\n",[802,2172,2173],{"class":804,"line":1089},[802,2174,2175],{},"\u003Cp>{locale}\u003C\u002Fp>\n",[747,2177,2178,2180,2181,764,2183,764,2185,764,2187,764,2190,764,2192,764,2195,764,2198,764,2200,764,2203,764,2206,764,2209,764,2212,764,2215,764,2218,764,2221,764,2224,764,2227,764,2230,764,2233,1553,2236,2239,2240,764,2242,764,2245,1553,2248,2251,2252,782],{},[750,2179,759],{}," returns ",[750,2182,1342],{},[750,2184,1678],{},[750,2186,1368],{},[750,2188,2189],{},"t",[750,2191,893],{},[750,2193,2194],{},"tc",[750,2196,2197],{},"tn",[750,2199,1338],{},[750,2201,2202],{},"tdr",[750,2204,2205],{},"has",[750,2207,2208],{},"getRoute",[750,2210,2211],{},"getRouteName(path?)",[750,2213,2214],{},"getLocaleFromPath(path?)",[750,2216,2217],{},"switchLocalePath(locale)",[750,2219,2220],{},"localizePath(path, locale?)",[750,2222,2223],{},"getBasePath(url?)",[750,2225,2226],{},"getI18n",[750,2228,2229],{},"addTranslations",[750,2231,2232],{},"addRouteTranslations",[750,2234,2235],{},"mergeTranslations",[750,2237,2238],{},"clearCache",". It throws when the middleware did not run. Helpers ",[750,2241,2226],{},[750,2243,2244],{},"getLocale",[750,2246,2247],{},"getDefaultLocale",[750,2249,2250],{},"getLocales"," read the same ",[750,2253,755],{},[747,2255,2256,2257,1392,2260,2262,2263,1392,2266,2269,2270,2273,2274,2277,2278,2281,2282,2284,2285,1553,2288,2291,2292,2295,2296,2299],{},"The route name comes from the route without its locale: ",[750,2258,2259],{},"\u002Ffr\u002Fblog\u002Fpost",[750,2261,2104],{},", and every URL of ",[750,2264,2265],{},"src\u002Fpages\u002Fblog\u002F[slug].astro",[750,2267,2268],{},"blog-slug",", so one folder ",[750,2271,2272],{},"locales\u002Fpages\u002Fblog-slug\u002F"," serves them all. ",[750,2275,2276],{},"[...path]"," is ",[750,2279,2280],{},"path",". Under Astro's ",[750,2283,1520],{}," the helpers take and return URLs of the site: ",[750,2286,2287],{},"switchLocalePath",[750,2289,2290],{},"localizePath"," include it, ",[750,2293,2294],{},"getBasePath"," does not, because ",[750,2297,2298],{},"Astro.rewrite"," takes the path without it.",[1309,2301,299],{"id":301},[747,2303,2304,2305,2308,2309,2312],{},"Import them from ",[750,2306,2307],{},"@i18n-micro\u002Fastro\u002F\u003Cname>"," (or ",[750,2310,2311],{},"@i18n-micro\u002Fastro\u002Fcomponents\u002F\u003Cname>.astro","):",[1314,2314,2315,2325],{},[1317,2316,2317],{},[1320,2318,2319,2322],{},[1323,2320,2321],{},"Component",[1323,2323,2324],{},"Props",[1333,2326,2327,2375,2400,2421],{},[1320,2328,2329,2333],{},[1338,2330,2331],{},[750,2332,702],{},[1338,2334,2335,764,2338,764,2341,764,2344,764,2347,764,2350,764,2353,1513,2356,2358,2359,764,2362,764,2365,2368,2369,2371,2372,2374],{},[750,2336,2337],{},"keypath",[750,2339,2340],{},"params",[750,2342,2343],{},"plural",[750,2345,2346],{},"number",[750,2348,2349],{},"date",[750,2351,2352],{},"relativeDate",[750,2354,2355],{},"tag",[750,2357,802],{},", any tag), ",[750,2360,2361],{},"html",[750,2363,2364],{},"hideIfEmpty",[750,2366,2367],{},"defaultValue","; other attributes pass through. With ",[750,2370,2361],{}," the result of every branch is rendered as HTML and ",[750,2373,2340],{}," are escaped. There are no slots",[1320,2376,2377,2381],{},[1338,2378,2379],{},[750,2380,710],{},[1338,2382,2383,764,2386,2388,2389,2392,2393,1553,2396,2399],{},[750,2384,2385],{},"href",[750,2387,1342],{}," (target locale, default current), ",[750,2390,2391],{},"class","; other attributes pass through. External URLs, ",[750,2394,2395],{},"#hash",[750,2397,2398],{},"?query"," stay as written; a route keeps its query, hash and trailing slash",[1320,2401,2402,2406],{},[1338,2403,2404],{},[750,2405,706],{},[1338,2407,2408,764,2410,1513,2413,2416,2417,2420],{},[750,2409,2391],{},[750,2411,2412],{},"activeClass",[750,2414,2415],{},"'active'","), ",[750,2418,2419],{},"customLabels","; renders links to the current page in each enabled locale, with its query",[1320,2422,2423,2427],{},[1338,2424,2425],{},[750,2426,714],{},[1338,2428,2429,2430,2433],{},"none that change output: a ",[750,2431,2432],{},"\u003Cdiv>"," around its slot, no prefix",[784,2435,2437],{"id":2436},"locale-prefixed-routes","Locale-prefixed routes",[747,2439,2440,2441,2444,2445,1004],{},"Keep one page per route in ",[750,2442,2443],{},"src\u002Fpages\u002F"," and add thin rewrite stubs under ",[750,2446,2447],{},"src\u002Fpages\u002F[locale]\u002F",[792,2449,2454],{"className":2450,"code":2452,"language":2453},[2451],"language-text","src\u002Fpages\u002F\n  index.astro\n  about.astro\n  [locale]\u002F\n    index.astro\n    about.astro\n","text",[750,2455,2452],{"__ignoreMap":798},[792,2457,2459],{"className":2115,"code":2458,"language":210,"meta":798,"style":798},"---\n\u002F\u002F src\u002Fpages\u002F[locale]\u002Fabout.astro\nimport { prepareLocaleRewrite } from '@i18n-micro\u002Fastro'\n\nconst target = prepareLocaleRewrite(Astro)\nif (target instanceof Response) return target\nreturn Astro.rewrite(target)\n---\n",[750,2460,2461,2465,2470,2475,2479,2484,2489,2494],{"__ignoreMap":798},[802,2462,2463],{"class":804,"line":353},[802,2464,2123],{},[802,2466,2467],{"class":804,"line":904},[802,2468,2469],{},"\u002F\u002F src\u002Fpages\u002F[locale]\u002Fabout.astro\n",[802,2471,2472],{"class":804,"line":934},[802,2473,2474],{},"import { prepareLocaleRewrite } from '@i18n-micro\u002Fastro'\n",[802,2476,2477],{"class":804,"line":952},[802,2478,976],{"emptyLinePlaceholder":975},[802,2480,2481],{"class":804,"line":972},[802,2482,2483],{},"const target = prepareLocaleRewrite(Astro)\n",[802,2485,2486],{"class":804,"line":979},[802,2487,2488],{},"if (target instanceof Response) return target\n",[802,2490,2491],{"class":804,"line":997},[802,2492,2493],{},"return Astro.rewrite(target)\n",[802,2495,2496],{"class":804,"line":1018},[802,2497,2123],{},[747,2499,2500,2503,2504,2507,2508,2511,2512,2514,2515,2518,2519,2522],{},[750,2501,2502],{},"prepareLocaleRewrite"," returns a ",[750,2505,2506],{},"404"," response for an unknown ",[750,2509,2510],{},":locale",", otherwise sets the locale on ",[750,2513,755],{}," and returns the path without the prefix. The middleware keeps a locale already in ",[750,2516,2517],{},"locals",", so the rewritten page renders in it. ",[750,2520,2521],{},"getLocaleRewritePath(Astro)"," returns only the path, when you validate the locale yourself.",[784,2524,57],{"id":2525},"locale-detection",[747,2527,2528],{},"The URL decides the page's locale:",[2530,2531,2532,2547,2554],"ol",{},[2533,2534,2535,2536,1392,2538,2540,2541,2277,2544,2546],"li",{},"A locale prefix (",[750,2537,767],{},[750,2539,1219],{},"; ",[750,2542,2543],{},"\u002Fen\u002Fabout",[750,2545,1082],{}," too).",[2533,2548,2549,2550,2553],{},"Otherwise what the router adapter's ",[750,2551,2552],{},"getLocaleFromPath"," returns, if it is not the default.",[2533,2555,2556,2557,2559],{},"Otherwise the default locale. ",[750,2558,763],{}," is always the default locale's page, whatever the cookie says.",[747,2561,2562,2564],{},[750,2563,1431],{}," is a redirect hint on the home page only:",[2566,2567,2568,2597,2605,2621],"ul",{},[2533,2569,2570,2571,2573,2574,2577,2578,2581,2582,2585,2586,2588,2589,2591,2592,2588,2594,2596],{},"A request for ",[750,2572,1458],{}," whose cookie or ",[750,2575,2576],{},"Accept-Language"," prefers another locale gets a ",[750,2579,2580],{},"302"," to that locale's home (",[750,2583,2584],{},"\u002Fde","). q-weights are honoured; ",[750,2587,1188],{}," matches a ",[750,2590,1175],{}," locale, and ",[750,2593,1175],{},[750,2595,1188],{}," one.",[2533,2598,2599,2600,764,2602,2604],{},"With ",[750,2601,1449],{},[750,2603,1458],{}," always redirects: to the preferred locale's home, else the default locale's.",[2533,2606,2607,2608,2610,2611,1513,2614,2616,2617,2277,2619,1396],{},"The ",[750,2609,1458],{}," response carries ",[750,2612,2613],{},"Vary: Cookie, Accept-Language",[750,2615,2576],{}," only when ",[750,2618,1466],{},[750,2620,1476],{},[2533,2622,2623],{},"Prerendered pages never redirect.",[747,2625,2626,2629],{},[750,2627,2628],{},"detectLocale(pathname, cookies, headers, defaultLocale, locales, localeCookie?, routingStrategy?, autoDetect?)"," returns the same preferred locale for your own logic.",[747,2631,2632,2633,2635,2636,2639,2640,2643,2644,782],{},"The cookie remembers a choice. A page view that comes from a same-origin page of another locale is a visitor switching, whatever link took them there: the HTML response sets the cookie to the new locale, and ",[750,2634,1458],{}," does not redirect, so a switcher reaches the default locale's home. An endpoint, an image, a 404, a form post and a prefetch change nothing. \"Same origin\" is what the browser says in ",[750,2637,2638],{},"Sec-Fetch-Site","; without that header the ",[750,2641,2642],{},"Referer","'s host is compared with the request's, so behind a proxy set Astro's ",[750,2645,2646],{},"security.allowedDomains",[747,2648,2649,2650,2656,2657,2659,2660,2663,2664,2666,2667,2670],{},"A ",[778,2651,2655],{"href":2652,"rel":2653},"https:\u002F\u002Fdocs.astro.build\u002Fen\u002Fguides\u002Fserver-islands\u002F",[2654],"nofollow","server island"," or an action has no locale in its URL. It is rendered for the page that asked, read from the ",[750,2658,2642],{},", whose path is all that counts, so a proxy in front of the server changes nothing, and it never redirects. Its response carries ",[750,2661,2662],{},"Vary: Referer",". Without a ",[750,2665,2642],{}," (a ",[750,2668,2669],{},"no-referrer"," policy) it is in the default locale, and on a dynamic page its route comes from the URL, so page dictionaries do not reach it.",[784,2672,2674],{"id":2673},"router-adapter","Router adapter",[747,2676,2677,2680,2681,2684,2685,764,2688,764,2690,764,2692,764,2694,764,2697,2700,2701,764,2704,764,2707,2709,2710,782],{},[750,2678,2679],{},"createAstroRouterAdapter(locales, defaultLocale)"," prefixes every locale except the default. An Astro adapter needs only ",[750,2682,2683],{},"getCurrentPath","; the other members are optional and fall back to the default adapter: ",[750,2686,2687],{},"getRouteName(path, locales, routePattern?)",[750,2689,2552],{},[750,2691,2287],{},[750,2693,2290],{},[750,2695,2696],{},"removeLocaleFromPath",[750,2698,2699],{},"resolvePath"," (home redirect target), ",[750,2702,2703],{},"push",[750,2705,2706],{},"replace",[750,2708,2208],{},". Write your own for subdomain or suffix URLs and pass it to ",[750,2711,2712],{},"createI18nMiddleware",[784,2714,77],{"id":2715},"seo",[792,2717,2719],{"className":2115,"code":2718,"language":210,"meta":798,"style":798},"---\n\u002F\u002F src\u002Flayouts\u002FLayout.astro\nimport { useLocaleHead } from '@i18n-micro\u002Fastro'\n\nconst head = useLocaleHead(Astro, { baseUrl: 'https:\u002F\u002Fexample.com' })\n---\n\n\u003Chtml lang={head.htmlAttrs.lang} dir={head.htmlAttrs.dir}>\n  \u003Chead>\n    {head.link.map((l) => \u003Clink rel={l.rel} href={l.href} hreflang={l.hreflang} \u002F>)}\n    {head.meta.map((m) => \u003Cmeta property={m.property} content={m.content} \u002F>)}\n  \u003C\u002Fhead>\n  \u003Cbody>\u003Cslot \u002F>\u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[750,2720,2721,2725,2730,2735,2739,2744,2748,2752,2757,2762,2767,2772,2777,2782],{"__ignoreMap":798},[802,2722,2723],{"class":804,"line":353},[802,2724,2123],{},[802,2726,2727],{"class":804,"line":904},[802,2728,2729],{},"\u002F\u002F src\u002Flayouts\u002FLayout.astro\n",[802,2731,2732],{"class":804,"line":934},[802,2733,2734],{},"import { useLocaleHead } from '@i18n-micro\u002Fastro'\n",[802,2736,2737],{"class":804,"line":952},[802,2738,976],{"emptyLinePlaceholder":975},[802,2740,2741],{"class":804,"line":972},[802,2742,2743],{},"const head = useLocaleHead(Astro, { baseUrl: 'https:\u002F\u002Fexample.com' })\n",[802,2745,2746],{"class":804,"line":979},[802,2747,2123],{},[802,2749,2750],{"class":804,"line":997},[802,2751,976],{"emptyLinePlaceholder":975},[802,2753,2754],{"class":804,"line":1018},[802,2755,2756],{},"\u003Chtml lang={head.htmlAttrs.lang} dir={head.htmlAttrs.dir}>\n",[802,2758,2759],{"class":804,"line":358},[802,2760,2761],{},"  \u003Chead>\n",[802,2763,2764],{"class":804,"line":6},[802,2765,2766],{},"    {head.link.map((l) => \u003Clink rel={l.rel} href={l.href} hreflang={l.hreflang} \u002F>)}\n",[802,2768,2769],{"class":804,"line":1072},[802,2770,2771],{},"    {head.meta.map((m) => \u003Cmeta property={m.property} content={m.content} \u002F>)}\n",[802,2773,2774],{"class":804,"line":1089},[802,2775,2776],{},"  \u003C\u002Fhead>\n",[802,2778,2779],{"class":804,"line":1105},[802,2780,2781],{},"  \u003Cbody>\u003Cslot \u002F>\u003C\u002Fbody>\n",[802,2783,2784],{"class":804,"line":1115},[802,2785,2786],{},"\u003C\u002Fhtml>\n",[747,2788,2789,2790,1513,2793,2796,2797,764,2799,2802,2803,2805,2806,2809,2810,764,2813,764,2816,1553,2819,2822,2823,1513,2826,2829,2830,1513,2833,2416,2835,1513,2838,2416,2840,1513,2843,1396],{},"It returns ",[750,2791,2792],{},"htmlAttrs",[750,2794,2795],{},"lang"," from ",[750,2798,1387],{},[750,2800,2801],{},"dir","), a canonical link (path without query), ",[750,2804,775],{}," alternates for every enabled locale with ",[750,2807,2808],{},"seo !== false"," plus ",[750,2811,2812],{},"x-default",[750,2814,2815],{},"og:locale",[750,2817,2818],{},"og:locale:alternate",[750,2820,2821],{},"og:url",". Options: ",[750,2824,2825],{},"baseUrl",[750,2827,2828],{},"site"," from the Astro config, else root-relative URLs), ",[750,2831,2832],{},"addDirAttribute",[750,2834,1436],{},[750,2836,2837],{},"addSeoAttributes",[750,2839,1436],{},[750,2841,2842],{},"hreflangBaseLanguage",[750,2844,1421],{},[784,2846,2848],{"id":2847},"related","Related",[2850,2851,2852,2859,2865],"card-group",{},[2853,2854,2856],"card",{"icon":2855,"title":156,"to":780},"i-lucide-book-open",[747,2857,2858],{},"Translations inside Vue, React, Preact and Svelte islands",[2853,2860,2862],{"icon":2855,"title":131,"to":2861},".\u002F",[747,2863,2864],{},"Instance options and formatting",[2853,2866],{"icon":2867,"title":2868,"to":211},"i-lucide-braces","Package reference",[2870,2871,2872],"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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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 .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 pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":798,"searchDepth":904,"depth":904,"links":2874},[2875,2876,2881,2884,2885,2886,2887,2888],{"id":786,"depth":904,"text":787},{"id":880,"depth":904,"text":881,"children":2877},[2878,2879,2880],{"id":1311,"depth":934,"text":1312},{"id":1530,"depth":934,"text":1531},{"id":1952,"depth":934,"text":1953},{"id":2111,"depth":904,"text":2112,"children":2882},[2883],{"id":301,"depth":934,"text":299},{"id":2436,"depth":904,"text":2437},{"id":2525,"depth":904,"text":57},{"id":2673,"depth":904,"text":2674},{"id":2715,"depth":904,"text":77},{"id":2847,"depth":904,"text":2848},"Server-side translations, locale-prefixed routes, home-page detection and SEO tags for Astro with @i18n-micro\u002Fastro.","md","2026-11-04T00:40:16+04:00",null,{"outline":2894},"deep",{"order":33,"group":142},{"title":152,"description":2889},"G2efB2HOTvRHHAh-p1CAgeLTC8qZX9khvFi4uRs6gD0",[2899,2901],{"title":148,"path":149,"description":2900},"Translations, locale switching and @solidjs\u002Frouter integration for SolidJS apps with @i18n-micro\u002Fsolid.",{"title":156,"path":157,"description":2902},"Translations inside Vue, React, Preact and Svelte islands with @i18n-micro\u002Fastro.",1794131150112]