[{"data":1,"prerenderedAt":1540},["ShallowReactive",2],{"navigation":3,"navigation_docs":214,"-docs-guide-new-features":270,"-docs-guide-new-features-surround":1008,"\u002Fdocs\u002Fguide\u002Fnew-features":1013},[4],{"title":5,"path":6,"stem":7,"children":8,"page":131},"Docs","\u002Fdocs","docs",[9,25,105,132,150,204],{"title":10,"path":11,"stem":12,"children":13,"icon":24},"Getting started","\u002Fdocs\u002Fgetting-started","docs\u002F01.getting-started\u002F01.index",[14,16,20],{"title":15,"path":11,"stem":12},"Installation",{"title":17,"path":18,"stem":19},"Usage","\u002Fdocs\u002Fgetting-started\u002Fusage","docs\u002F01.getting-started\u002F02.usage",{"title":21,"path":22,"stem":23},"Vue I18n Configuration","\u002Fdocs\u002Fgetting-started\u002Fvue-i18n","docs\u002F01.getting-started\u002F03.vue-i18n","i-lucide-square-play",{"title":26,"path":27,"stem":28,"children":29,"icon":104},"Guide","\u002Fdocs\u002Fguide","docs\u002F02.guide\u002F01.index",[30,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100],{"title":31,"path":27,"stem":28},"Routing Strategies",{"title":33,"path":34,"stem":35},"Runtime Hooks","\u002Fdocs\u002Fguide\u002Fruntime-hooks","docs\u002F02.guide\u002F02.runtime-hooks",{"title":37,"path":38,"stem":39},"Custom Route Paths","\u002Fdocs\u002Fguide\u002Fcustom-paths","docs\u002F02.guide\u002F03.custom-paths",{"title":41,"path":42,"stem":43},"Ignoring Localized Routes","\u002Fdocs\u002Fguide\u002Fignoring-localized-routes","docs\u002F02.guide\u002F04.ignoring-localized-routes",{"title":45,"path":46,"stem":47},"Browser language detection","\u002Fdocs\u002Fguide\u002Fbrowser-language-detection","docs\u002F02.guide\u002F05.browser-language-detection",{"title":49,"path":50,"stem":51},"SEO","\u002Fdocs\u002Fguide\u002Fseo","docs\u002F02.guide\u002F06.seo",{"title":53,"path":54,"stem":55},"Lazy-load translations","\u002Fdocs\u002Fguide\u002Flazy-load-translations","docs\u002F02.guide\u002F07.lazy-load-translations",{"title":57,"path":58,"stem":59},"Lang Switcher","\u002Fdocs\u002Fguide\u002Flang-switcher","docs\u002F02.guide\u002F08.lang-switcher",{"title":61,"path":62,"stem":63},"Different Domains","\u002Fdocs\u002Fguide\u002Fdifferent-domains","docs\u002F02.guide\u002F09.different-domains",{"title":65,"path":66,"stem":67},"Multi domain locales","\u002Fdocs\u002Fguide\u002Fmulti-domain-locales","docs\u002F02.guide\u002F10.multi-domain-locales",{"title":69,"path":70,"stem":71},"Locale fallback","\u002Fdocs\u002Fguide\u002Flocale-fallback","docs\u002F02.guide\u002F11.locale-fallback",{"title":73,"path":74,"stem":75},"Per-Component Translations","\u002Fdocs\u002Fguide\u002Fper-component-translations","docs\u002F02.guide\u002F12.per-component-translations",{"title":77,"path":78,"stem":79},"Extending messages hook","\u002Fdocs\u002Fguide\u002Fextend-messages","docs\u002F02.guide\u002F13.extend-messages",{"title":81,"path":82,"stem":83},"Extending pages","\u002Fdocs\u002Fguide\u002Fextend-pages","docs\u002F02.guide\u002F14.extend-pages",{"title":85,"path":86,"stem":87},"Layers","\u002Fdocs\u002Fguide\u002Flayers","docs\u002F02.guide\u002F15.layers",{"title":89,"path":90,"stem":91},"Server-Side Translations","\u002Fdocs\u002Fguide\u002Fserver-side-translations","docs\u002F02.guide\u002F16.server-side-translations",{"title":93,"path":94,"stem":95},"Module integration","\u002Fdocs\u002Fguide\u002Finstall-module","docs\u002F02.guide\u002F17.install-module",{"title":97,"path":98,"stem":99},"Migration Guide","\u002Fdocs\u002Fguide\u002Fmigrating","docs\u002F02.guide\u002F90.migrating",{"title":101,"path":102,"stem":103},"New features","\u002Fdocs\u002Fguide\u002Fnew-features","docs\u002F02.guide\u002F91.new-features","i-heroicons-book-open",{"title":106,"icon":107,"path":108,"stem":109,"children":110,"page":131},"API","i-lucide-square-chart-gantt","\u002Fdocs\u002Fapi","docs\u002F04.api",[111,115,119,123,127],{"title":112,"path":113,"stem":114},"Options","\u002Fdocs\u002Fapi\u002Foptions","docs\u002F04.api\u002F00.options",{"title":116,"path":117,"stem":118},"Vue I18n","\u002Fdocs\u002Fapi\u002Fvue-i18n","docs\u002F04.api\u002F04.vue-i18n",{"title":120,"path":121,"stem":122},"Vue","\u002Fdocs\u002Fapi\u002Fvue","docs\u002F04.api\u002F05.vue",{"title":124,"path":125,"stem":126},"Nuxt","\u002Fdocs\u002Fapi\u002Fnuxt","docs\u002F04.api\u002F06.nuxt",{"title":128,"path":129,"stem":130},"Runtime config","\u002Fdocs\u002Fapi\u002Fruntime-config","docs\u002F04.api\u002F07.runtime-config",false,{"title":133,"icon":134,"path":135,"stem":136,"children":137,"page":131},"Components","i-lucide-square-code","\u002Fdocs\u002Fcomponents","docs\u002F05.components",[138,142,146],{"title":139,"path":140,"stem":141},"\u003CNuxtLinkLocale>","\u002Fdocs\u002Fcomponents\u002Fnuxt-link-locale","docs\u002F05.components\u002F01.nuxt-link-locale",{"title":143,"path":144,"stem":145},"\u003CSwitchLocalePathLink>","\u002Fdocs\u002Fcomponents\u002Fswitch-locale-path-link","docs\u002F05.components\u002F02.switch-locale-path-link",{"title":147,"path":148,"stem":149},"Vue I18n components","\u002Fdocs\u002Fcomponents\u002Fvue-i18n-components","docs\u002F05.components\u002F03.vue-i18n-components",{"title":151,"icon":152,"path":153,"stem":154,"children":155,"page":131},"Composables","i-lucide-square-function","\u002Fdocs\u002Fcomposables","docs\u002F06.composables",[156,160,164,168,172,176,180,184,188,192,196,200],{"title":157,"path":158,"stem":159},"useLocalePath","\u002Fdocs\u002Fcomposables\u002Fuse-locale-path","docs\u002F06.composables\u002F01.use-locale-path",{"title":161,"path":162,"stem":163},"useLocaleRoute","\u002Fdocs\u002Fcomposables\u002Fuse-locale-route","docs\u002F06.composables\u002F02.use-locale-route",{"title":165,"path":166,"stem":167},"useSwitchLocalePath","\u002Fdocs\u002Fcomposables\u002Fuse-switch-locale-path","docs\u002F06.composables\u002F03.use-switch-locale-path",{"title":169,"path":170,"stem":171},"useLocaleHead","\u002Fdocs\u002Fcomposables\u002Fuse-locale-head","docs\u002F06.composables\u002F04.use-locale-head",{"title":173,"path":174,"stem":175},"useSetI18nParams","\u002Fdocs\u002Fcomposables\u002Fuse-set-i18n-params","docs\u002F06.composables\u002F05.use-set-i18n-params",{"title":177,"path":178,"stem":179},"useRouteBaseName","\u002Fdocs\u002Fcomposables\u002Fuse-route-base-name","docs\u002F06.composables\u002F06.use-route-base-name",{"title":181,"path":182,"stem":183},"useBrowserLocale","\u002Fdocs\u002Fcomposables\u002Fuse-browser-locale","docs\u002F06.composables\u002F07.use-browser-locale",{"title":185,"path":186,"stem":187},"useCookieLocale","\u002Fdocs\u002Fcomposables\u002Fuse-cookie-locale","docs\u002F06.composables\u002F08.use-cookie-locale",{"title":189,"path":190,"stem":191},"useTranslation","\u002Fdocs\u002Fcomposables\u002Fuse-translation","docs\u002F06.composables\u002F09.use-translation",{"title":193,"path":194,"stem":195},"defineI18nConfig","\u002Fdocs\u002Fcomposables\u002Fdefine-i18n-config","docs\u002F06.composables\u002F10.define-i18n-config",{"title":197,"path":198,"stem":199},"defineI18nLocale","\u002Fdocs\u002Fcomposables\u002Fdefine-i18n-locale","docs\u002F06.composables\u002F11.define-i18n-locale",{"title":201,"path":202,"stem":203},"defineI18nLocaleDetector","\u002Fdocs\u002Fcomposables\u002Fdefine-i18n-locale-detector","docs\u002F06.composables\u002F12.define-i18n-locale-detector",{"title":205,"icon":206,"path":207,"stem":208,"children":209,"page":131},"Compiler Macros","i-lucide-aperture","\u002Fdocs\u002Fcompiler-macros","docs\u002F07.compiler-macros",[210],{"title":211,"path":212,"stem":213},"defineI18nRoute","\u002Fdocs\u002Fcompiler-macros\u002Fdefine-i18n-route","docs\u002F07.compiler-macros\u002F01.define-i18n-route",[215,220,241,248,253,267],{"title":10,"path":11,"stem":12,"children":216,"icon":24},[217,218,219],{"title":15,"path":11,"stem":12},{"title":17,"path":18,"stem":19},{"title":21,"path":22,"stem":23},{"title":26,"path":27,"stem":28,"children":221,"icon":104},[222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240],{"title":31,"path":27,"stem":28},{"title":33,"path":34,"stem":35},{"title":37,"path":38,"stem":39},{"title":41,"path":42,"stem":43},{"title":45,"path":46,"stem":47},{"title":49,"path":50,"stem":51},{"title":53,"path":54,"stem":55},{"title":57,"path":58,"stem":59},{"title":61,"path":62,"stem":63},{"title":65,"path":66,"stem":67},{"title":69,"path":70,"stem":71},{"title":73,"path":74,"stem":75},{"title":77,"path":78,"stem":79},{"title":81,"path":82,"stem":83},{"title":85,"path":86,"stem":87},{"title":89,"path":90,"stem":91},{"title":93,"path":94,"stem":95},{"title":97,"path":98,"stem":99},{"title":101,"path":102,"stem":103},{"title":106,"icon":107,"path":108,"stem":109,"children":242,"page":131},[243,244,245,246,247],{"title":112,"path":113,"stem":114},{"title":116,"path":117,"stem":118},{"title":120,"path":121,"stem":122},{"title":124,"path":125,"stem":126},{"title":128,"path":129,"stem":130},{"title":133,"icon":134,"path":135,"stem":136,"children":249,"page":131},[250,251,252],{"title":139,"path":140,"stem":141},{"title":143,"path":144,"stem":145},{"title":147,"path":148,"stem":149},{"title":151,"icon":152,"path":153,"stem":154,"children":254,"page":131},[255,256,257,258,259,260,261,262,263,264,265,266],{"title":157,"path":158,"stem":159},{"title":161,"path":162,"stem":163},{"title":165,"path":166,"stem":167},{"title":169,"path":170,"stem":171},{"title":173,"path":174,"stem":175},{"title":177,"path":178,"stem":179},{"title":181,"path":182,"stem":183},{"title":185,"path":186,"stem":187},{"title":189,"path":190,"stem":191},{"title":193,"path":194,"stem":195},{"title":197,"path":198,"stem":199},{"title":201,"path":202,"stem":203},{"title":205,"icon":206,"path":207,"stem":208,"children":268,"page":131},[269],{"title":211,"path":212,"stem":213},{"id":271,"title":101,"body":272,"description":1000,"extension":1001,"links":1002,"meta":1003,"navigation":1005,"path":102,"seo":1006,"stem":103,"__hash__":1007},"docs\u002Fdocs\u002F02.guide\u002F91.new-features.md",{"type":273,"value":274,"toc":992},"minimark",[275,295,321,339,394,415,539,543,546,549,564,568,577,580,642,645,649,657,679,687,693,699,705,767,772,792,797,816,821,824,838,841,846,850,853,864,921,925,945,948,953,958,961,977,988],[276,277,279,280],"h3",{"id":278},"custom-routes-via-definepagemeta","Custom routes via ",[281,282,286,291],"code",{"className":283,"language":284,"style":285},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ts","",[287,288,290],"span",{"class":289},"s2Zo4","definePageMeta",[287,292,294],{"class":293},"sTEyZ","()",[296,297,298,299,305,306,309,310,313,314,320],"p",{},"We have added support for setting custom routes for pages using the ",[281,300,301,303],{"className":283,"language":284,"style":285},[287,302,290],{"class":289},[287,304,294],{"class":293}," API, which is now the recommended way to set custom routes for pages.\nThis method is used in all ",[281,307,308],{},"customRoutes"," modes and takes precedence over custom routes set with the ",[281,311,312],{},"pages"," option or the ",[281,315,316,318],{"className":283,"language":284,"style":285},[287,317,211],{"class":289},[287,319,294],{"class":293}," macro.",[296,322,323,324,330,331,335,336,338],{},"Since v10.5 custom paths set with ",[281,325,326,328],{"className":283,"language":284,"style":285},[287,327,290],{"class":289},[287,329,294],{"class":293}," are used in ",[332,333,334],"strong",{},"all"," ",[281,337,308],{}," modes:",[340,341,342,368,381],"ul",{},[343,344,345,346,367],"li",{},"You no longer need to switch to ",[281,347,350,353,357,360,364],{"className":348,"language":349,"style":285},"language-yml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","yml",[287,351,308],{"class":352},"swJcz",[287,354,356],{"class":355},"sMK4o",":",[287,358,359],{"class":355}," '",[287,361,363],{"class":362},"sfazB","meta",[287,365,366],{"class":355},"'"," to define custom paths in page components.",[343,369,370,371,373,374,380],{},"Migration is incremental — move custom paths from the ",[281,372,312],{}," option or the macro into page components one route at a time; the ",[281,375,376,378],{"className":283,"language":284,"style":285},[287,377,290],{"class":289},[287,379,294],{"class":293}," value takes precedence and a warning is logged during build if a route has paths from multiple sources.",[343,382,383,384,387,388,393],{},"Route meta is the canonical source of custom paths at build time, so projects and modules can set custom paths on routes they add or mutate in the ",[281,385,386],{},"pages:extend"," hook, see ",[389,390,392],"a",{"href":391},"\u002Fdocs\u002Fguide\u002Fcustom-paths#hooks-and-modules","Hooks and modules",".",[296,395,396,397,403,404,410,411,414],{},"To migrate from the ",[281,398,399,401],{"className":283,"language":284,"style":285},[287,400,211],{"class":289},[287,402,294],{"class":293}," macro, you can simply replace it with ",[281,405,406,408],{"className":283,"language":284,"style":285},[287,407,290],{"class":289},[287,409,294],{"class":293}," and set the ",[281,412,413],{},"i18n"," property with the same options:",[416,417,422],"pre",{"className":418,"code":419,"filename":420,"language":421,"meta":285,"style":285},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup>\ndefinePageMeta({\n  i18n: {\n    paths: {\n      en: '\u002Fabout-us',\n      fr: '\u002Fa-propos',\n    }\n  }\n})\n\u003C\u002Fscript>\n","pages\u002Fabout.vue","vue",[281,423,424,441,452,463,473,491,508,514,520,529],{"__ignoreMap":285},[287,425,428,431,434,438],{"class":426,"line":427},"line",1,[287,429,430],{"class":355},"\u003C",[287,432,433],{"class":352},"script",[287,435,437],{"class":436},"spNyl"," setup",[287,439,440],{"class":355},">\n",[287,442,444,446,449],{"class":426,"line":443},2,[287,445,290],{"class":289},[287,447,448],{"class":293},"(",[287,450,451],{"class":355},"{\n",[287,453,455,458,460],{"class":426,"line":454},3,[287,456,457],{"class":352},"  i18n",[287,459,356],{"class":355},[287,461,462],{"class":355}," {\n",[287,464,466,469,471],{"class":426,"line":465},4,[287,467,468],{"class":352},"    paths",[287,470,356],{"class":355},[287,472,462],{"class":355},[287,474,476,479,481,483,486,488],{"class":426,"line":475},5,[287,477,478],{"class":352},"      en",[287,480,356],{"class":355},[287,482,359],{"class":355},[287,484,485],{"class":362},"\u002Fabout-us",[287,487,366],{"class":355},[287,489,490],{"class":355},",\n",[287,492,494,497,499,501,504,506],{"class":426,"line":493},6,[287,495,496],{"class":352},"      fr",[287,498,356],{"class":355},[287,500,359],{"class":355},[287,502,503],{"class":362},"\u002Fa-propos",[287,505,366],{"class":355},[287,507,490],{"class":355},[287,509,511],{"class":426,"line":510},7,[287,512,513],{"class":355},"    }\n",[287,515,517],{"class":426,"line":516},8,[287,518,519],{"class":355},"  }\n",[287,521,523,526],{"class":426,"line":522},9,[287,524,525],{"class":355},"}",[287,527,528],{"class":293},")\n",[287,530,532,535,537],{"class":426,"line":531},10,[287,533,534],{"class":355},"\u003C\u002F",[287,536,433],{"class":352},[287,538,440],{"class":355},[276,540,542],{"id":541},"nitro-side-language-detection-and-redirection","Nitro-side language detection and redirection",[296,544,545],{},"Language detection and redirection has been reimplemented to be handled from the Nitro server, this allows us to redirect requests earlier in the request lifecycle which improves performance.",[296,547,548],{},"The previous implementation did not work correctly when combined with prerendering which this new implementation does.",[296,550,551,552,563],{},"While this change makes detection and redirection more accurate and should better match the documented behavior, if this causes issues in your project it can be disabled by setting ",[281,553,554,557,559],{"className":348,"language":349,"style":285},[287,555,556],{"class":352},"experimental.nitroContextDetection",[287,558,356],{"class":355},[287,560,562],{"class":561},"sfNiH"," false"," in the module options. The option to disable this feature is temporary and will be removed in a future version.",[276,565,567],{"id":566},"experimental-strict-seo-mode","Experimental strict SEO mode",[296,569,570,571,576],{},"We have added a new experimental option ",[281,572,573],{"className":348,"language":349,"style":285},[287,574,575],{"class":362},"strictSeo"," that enables strict SEO mode, which changes the way i18n head tags are handled.",[296,578,579],{},"With strict SEO mode enabled, the i18n head tags are managed internally, this allows for some much requested improvements:",[340,581,582,585,615,625,633],{},[343,583,584],{},"The module will no longer add alternate tags for unsupported locales when setting localized dynamic route params.",[343,586,587,588,598,599,608,609,614],{},"Unsupported locale links used with ",[281,589,590,592,595],{"className":418,"language":421,"style":285},[287,591,430],{"class":355},[287,593,594],{"class":352},"SwitchLocalePathLink",[287,596,597],{"class":355},">"," are disabled, their links will be set to ",[281,600,601,603,606],{"className":283,"language":284,"style":285},[287,602,366],{"class":355},[287,604,605],{"class":362},"#",[287,607,366],{"class":355}," and will have a ",[281,610,611],{"className":418,"language":421,"style":285},[287,612,613],{"class":293},"data-i18n-disabled"," attribute for styling purposes.",[343,616,617,618,624],{},"The ",[281,619,620,622],{"className":283,"language":284,"style":285},[287,621,169],{"class":289},[287,623,294],{"class":293}," is no longer needed in strict SEO mode, i18n tags are automatically set by the module and usage will throw an error.",[343,626,627,628,393],{},"Canonical query parameters are configured globally with ",[281,629,630],{"className":348,"language":349,"style":285},[287,631,632],{"class":362},"experimental.strictSeo.canonicalQueryParams",[343,634,617,635,641],{},[281,636,637,639],{"className":283,"language":284,"style":285},[287,638,173],{"class":289},[287,640,294],{"class":293}," inherits the global canonical query parameter config which can be overridden through its options parameter.",[296,643,644],{},"If this mode proves stable it will become the default in v11, please try it out and report any issues you encounter.",[276,646,648],{"id":647},"compact-routes","Compact routes",[296,650,570,651,656],{},[281,652,653],{"className":348,"language":349,"style":285},[287,654,655],{"class":362},"compactRoutes"," that changes how locale-prefixed routes are generated. Instead of creating a separate route for every locale, eligible routes are compacted into a single route using a regex parameter for the locale segment.",[296,658,659,660,663,664,663,667,670,671,674,675,678],{},"For example, with three locales (",[281,661,662],{},"en",", ",[281,665,666],{},"fr",[281,668,669],{},"ja",") and the ",[281,672,673],{},"prefix"," strategy, the ",[281,676,677],{},"\u002Fabout"," page would normally produce three routes:",[416,680,685],{"className":681,"code":683,"language":684,"meta":285},[682],"language-text","\u002Fen\u002Fabout\n\u002Ffr\u002Fabout\n\u002Fja\u002Fabout\n","text",[281,686,683],{"__ignoreMap":285},[296,688,689,690,692],{},"With ",[281,691,655],{}," enabled, these are compacted into a single route:",[416,694,697],{"className":695,"code":696,"language":684,"meta":285},[682],"\u002F:locale(en|fr|ja)\u002Fabout\n",[281,698,696],{"__ignoreMap":285},[296,700,701,702,356],{},"This can be enabled in ",[281,703,704],{},"nuxt.config.ts",[416,706,708],{"className":283,"code":707,"filename":704,"language":284,"meta":285,"style":285},"export default defineNuxtConfig({\n  i18n: {\n    experimental: {\n      compactRoutes: true\n    }\n  }\n})\n",[281,709,710,726,734,743,753,757,761],{"__ignoreMap":285},[287,711,712,716,719,722,724],{"class":426,"line":427},[287,713,715],{"class":714},"s7zQu","export",[287,717,718],{"class":714}," default",[287,720,721],{"class":289}," defineNuxtConfig",[287,723,448],{"class":293},[287,725,451],{"class":355},[287,727,728,730,732],{"class":426,"line":443},[287,729,457],{"class":352},[287,731,356],{"class":355},[287,733,462],{"class":355},[287,735,736,739,741],{"class":426,"line":454},[287,737,738],{"class":352},"    experimental",[287,740,356],{"class":355},[287,742,462],{"class":355},[287,744,745,748,750],{"class":426,"line":465},[287,746,747],{"class":352},"      compactRoutes",[287,749,356],{"class":355},[287,751,752],{"class":561}," true\n",[287,754,755],{"class":426,"line":475},[287,756,513],{"class":355},[287,758,759],{"class":426,"line":493},[287,760,519],{"class":355},[287,762,763,765],{"class":426,"line":510},[287,764,525],{"class":355},[287,766,528],{"class":293},[296,768,769],{},[332,770,771],{},"Why this is an improvement:",[340,773,774,780,786],{},[343,775,776,779],{},[332,777,778],{},"Fewer routes"," — Applications with many pages and locales can generate a large number of routes (pages × locales). Compact routes significantly reduces this, resulting in a smaller route table and faster route matching.",[343,781,782,785],{},[332,783,784],{},"Smaller bundle size"," — The router configuration shipped to the client is more compact, which reduces the JavaScript payload.",[343,787,788,791],{},[332,789,790],{},"Better scalability"," — The number of routes stays proportional to the number of pages rather than growing multiplicatively with the number of locales.",[296,793,794],{},[332,795,796],{},"How it works with different strategies:",[340,798,799,804,810],{},[343,800,801,803],{},[281,802,673],{}," — All locales are compacted into a single route.",[343,805,806,809],{},[281,807,808],{},"prefix_except_default"," — The default locale keeps its unprefixed route, while all other locales are compacted into a single route.",[343,811,812,815],{},[281,813,814],{},"prefix_and_default"," — The default locale keeps its unprefixed route, and all locales (including the default) are compacted into a single route.",[296,817,818],{},[332,819,820],{},"When routes cannot be compacted:",[296,822,823],{},"Not all routes are eligible for compaction. A route will still be generated per locale when:",[340,825,826,835],{},[343,827,828,829,831,832,834],{},"It has custom per-locale paths defined (e.g., ",[281,830,677],{}," in English but ",[281,833,503],{}," in French).",[343,836,837],{},"It is not available for all configured locales (e.g., a route is disabled for certain locales).",[296,839,840],{},"In these cases, the module automatically falls back to the standard per-locale route generation for that specific route, while still compacting all eligible routes.",[842,843,845],"callout",{"icon":844},"i-heroicons-light-bulb","This option is opt-in for now but is expected to become the default in v11. Please try it out and report any issues you encounter.",[276,847,849],{"id":848},"optimized-message-bundling","Optimized message bundling",[296,851,852],{},"We have changed how locale messages reach server builds. Static locale files (JSON\u002FJSON5\u002FYAML) used to be handed to the bundler, which expands them into modules and generates source maps for them. Since the server compiles messages at runtime either way, this work only slowed the build down. These files are now embedded as raw messages instead, and served to the runtime as Nitro server assets.",[296,854,855,856,861,862,356],{},"This is controlled by ",[281,857,858],{"className":348,"language":349,"style":285},[287,859,860],{"class":362},"optimizeMessageBundling",", which is enabled by default and can be turned off in ",[281,863,704],{},[416,865,867],{"className":283,"code":866,"filename":704,"language":284,"meta":285,"style":285},"export default defineNuxtConfig({\n  i18n: {\n    experimental: {\n      optimizeMessageBundling: false\n    }\n  }\n})\n",[281,868,869,881,889,897,907,911,915],{"__ignoreMap":285},[287,870,871,873,875,877,879],{"class":426,"line":427},[287,872,715],{"class":714},[287,874,718],{"class":714},[287,876,721],{"class":289},[287,878,448],{"class":293},[287,880,451],{"class":355},[287,882,883,885,887],{"class":426,"line":443},[287,884,457],{"class":352},[287,886,356],{"class":355},[287,888,462],{"class":355},[287,890,891,893,895],{"class":426,"line":454},[287,892,738],{"class":352},[287,894,356],{"class":355},[287,896,462],{"class":355},[287,898,899,902,904],{"class":426,"line":465},[287,900,901],{"class":352},"      optimizeMessageBundling",[287,903,356],{"class":355},[287,905,906],{"class":561}," false\n",[287,908,909],{"class":426,"line":475},[287,910,513],{"class":355},[287,912,913],{"class":426,"line":493},[287,914,519],{"class":355},[287,916,917,919],{"class":426,"line":510},[287,918,525],{"class":355},[287,920,528],{"class":293},[296,922,923],{},[332,924,771],{},[340,926,927,933,939],{},[343,928,929,932],{},[332,930,931],{},"Faster builds"," — The bundler no longer parses and generates source maps for the entire message data in server builds, in our benchmarks this cut build time by more than half for projects with large locale files.",[343,934,935,938],{},[332,936,937],{},"Lower memory usage"," — Peak build memory scales with message volume, projects with very large locale files could previously run out of memory during the server build.",[343,940,941,944],{},[332,942,943],{},"Smaller server output"," — Message data is no longer expanded into module declarations, reducing the size of the server bundle.",[296,946,947],{},"The client bundle is unaffected, and messages are compiled at runtime on the server as they were before, so there is no behavioral change for rendered messages.",[296,949,950],{},[332,951,952],{},"When to turn it off:",[340,954,955],{},[343,956,957],{},"A custom Nitro Rollup plugin transforms your locale files — it no longer sees them, since they are not imported into the server graph at all.",[296,959,960],{},"A locale file the module cannot parse is left to the bundler instead of failing the build, so files your bundler accepts keep working — they just miss out on the optimization.",[842,962,963,964,967,968,976],{"icon":844},"New in ",[281,965,966],{},"v10.6.0",". Set ",[281,969,970,972,974],{"className":348,"language":349,"style":285},[287,971,860],{"class":352},[287,973,356],{"class":355},[287,975,562],{"class":561}," if you hit a problem, and please report it.",[842,978,981,982,393],{"icon":979,"color":980},"i-heroicons-exclamation-triangle","warning","Static locale files are read and parsed by the module rather than the bundler. If a locale file contains HTML, it is reported as a build warning — see ",[389,983,985],{"href":984},"\u002Fdocs\u002Fapi\u002Foptions#strictmessage",[281,986,987],{},"compilation.strictMessage",[989,990,991],"style",{},"html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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}",{"title":285,"searchDepth":443,"depth":454,"links":993},[994,996,997,998,999],{"id":278,"depth":454,"text":995},"Custom routes via definePageMeta()",{"id":541,"depth":454,"text":542},{"id":566,"depth":454,"text":567},{"id":647,"depth":454,"text":648},{"id":848,"depth":454,"text":849},"What's new in v10","md",null,{"toc":1004},{"depth":454},true,{"title":101,"description":1000},"GWTYr-dpp0sGx_FJFuAVEXHc65Y2w1xUYO2lc0S9KMM",[1009,1011],{"title":97,"path":98,"stem":99,"description":1010,"children":-1},"Follow this guide to upgrade from v9.x to v10.x",{"title":112,"path":113,"stem":114,"description":1012,"children":-1},"All the options you can use to configure Nuxt I18n.",{"id":271,"title":101,"body":1014,"description":1000,"extension":1001,"links":1002,"meta":1537,"navigation":1005,"path":102,"seo":1539,"stem":103,"__hash__":1007},{"type":273,"value":1015,"toc":1530},[1016,1024,1042,1054,1086,1102,1190,1192,1194,1196,1206,1208,1214,1216,1264,1266,1268,1274,1286,1291,1295,1300,1304,1358,1362,1376,1380,1394,1398,1400,1410,1412,1414,1416,1418,1426,1480,1484,1498,1500,1504,1508,1510,1522,1528],[276,1017,279,1018],{"id":278},[281,1019,1020,1022],{"className":283,"language":284,"style":285},[287,1021,290],{"class":289},[287,1023,294],{"class":293},[296,1025,298,1026,305,1032,309,1034,313,1036,320],{},[281,1027,1028,1030],{"className":283,"language":284,"style":285},[287,1029,290],{"class":289},[287,1031,294],{"class":293},[281,1033,308],{},[281,1035,312],{},[281,1037,1038,1040],{"className":283,"language":284,"style":285},[287,1039,211],{"class":289},[287,1041,294],{"class":293},[296,1043,323,1044,330,1050,335,1052,338],{},[281,1045,1046,1048],{"className":283,"language":284,"style":285},[287,1047,290],{"class":289},[287,1049,294],{"class":293},[332,1051,334],{},[281,1053,308],{},[340,1055,1056,1070,1080],{},[343,1057,345,1058,367],{},[281,1059,1060,1062,1064,1066,1068],{"className":348,"language":349,"style":285},[287,1061,308],{"class":352},[287,1063,356],{"class":355},[287,1065,359],{"class":355},[287,1067,363],{"class":362},[287,1069,366],{"class":355},[343,1071,370,1072,373,1074,380],{},[281,1073,312],{},[281,1075,1076,1078],{"className":283,"language":284,"style":285},[287,1077,290],{"class":289},[287,1079,294],{"class":293},[343,1081,383,1082,387,1084,393],{},[281,1083,386],{},[389,1085,392],{"href":391},[296,1087,396,1088,403,1094,410,1100,414],{},[281,1089,1090,1092],{"className":283,"language":284,"style":285},[287,1091,211],{"class":289},[287,1093,294],{"class":293},[281,1095,1096,1098],{"className":283,"language":284,"style":285},[287,1097,290],{"class":289},[287,1099,294],{"class":293},[281,1101,413],{},[416,1103,1104],{"className":418,"code":419,"filename":420,"language":421,"meta":285,"style":285},[281,1105,1106,1116,1124,1132,1140,1154,1168,1172,1176,1182],{"__ignoreMap":285},[287,1107,1108,1110,1112,1114],{"class":426,"line":427},[287,1109,430],{"class":355},[287,1111,433],{"class":352},[287,1113,437],{"class":436},[287,1115,440],{"class":355},[287,1117,1118,1120,1122],{"class":426,"line":443},[287,1119,290],{"class":289},[287,1121,448],{"class":293},[287,1123,451],{"class":355},[287,1125,1126,1128,1130],{"class":426,"line":454},[287,1127,457],{"class":352},[287,1129,356],{"class":355},[287,1131,462],{"class":355},[287,1133,1134,1136,1138],{"class":426,"line":465},[287,1135,468],{"class":352},[287,1137,356],{"class":355},[287,1139,462],{"class":355},[287,1141,1142,1144,1146,1148,1150,1152],{"class":426,"line":475},[287,1143,478],{"class":352},[287,1145,356],{"class":355},[287,1147,359],{"class":355},[287,1149,485],{"class":362},[287,1151,366],{"class":355},[287,1153,490],{"class":355},[287,1155,1156,1158,1160,1162,1164,1166],{"class":426,"line":493},[287,1157,496],{"class":352},[287,1159,356],{"class":355},[287,1161,359],{"class":355},[287,1163,503],{"class":362},[287,1165,366],{"class":355},[287,1167,490],{"class":355},[287,1169,1170],{"class":426,"line":510},[287,1171,513],{"class":355},[287,1173,1174],{"class":426,"line":516},[287,1175,519],{"class":355},[287,1177,1178,1180],{"class":426,"line":522},[287,1179,525],{"class":355},[287,1181,528],{"class":293},[287,1183,1184,1186,1188],{"class":426,"line":531},[287,1185,534],{"class":355},[287,1187,433],{"class":352},[287,1189,440],{"class":355},[276,1191,542],{"id":541},[296,1193,545],{},[296,1195,548],{},[296,1197,551,1198,563],{},[281,1199,1200,1202,1204],{"className":348,"language":349,"style":285},[287,1201,556],{"class":352},[287,1203,356],{"class":355},[287,1205,562],{"class":561},[276,1207,567],{"id":566},[296,1209,570,1210,576],{},[281,1211,1212],{"className":348,"language":349,"style":285},[287,1213,575],{"class":362},[296,1215,579],{},[340,1217,1218,1220,1242,1250,1256],{},[343,1219,584],{},[343,1221,587,1222,598,1230,608,1238,614],{},[281,1223,1224,1226,1228],{"className":418,"language":421,"style":285},[287,1225,430],{"class":355},[287,1227,594],{"class":352},[287,1229,597],{"class":355},[281,1231,1232,1234,1236],{"className":283,"language":284,"style":285},[287,1233,366],{"class":355},[287,1235,605],{"class":362},[287,1237,366],{"class":355},[281,1239,1240],{"className":418,"language":421,"style":285},[287,1241,613],{"class":293},[343,1243,617,1244,624],{},[281,1245,1246,1248],{"className":283,"language":284,"style":285},[287,1247,169],{"class":289},[287,1249,294],{"class":293},[343,1251,627,1252,393],{},[281,1253,1254],{"className":348,"language":349,"style":285},[287,1255,632],{"class":362},[343,1257,617,1258,641],{},[281,1259,1260,1262],{"className":283,"language":284,"style":285},[287,1261,173],{"class":289},[287,1263,294],{"class":293},[296,1265,644],{},[276,1267,648],{"id":647},[296,1269,570,1270,656],{},[281,1271,1272],{"className":348,"language":349,"style":285},[287,1273,655],{"class":362},[296,1275,659,1276,663,1278,663,1280,670,1282,674,1284,678],{},[281,1277,662],{},[281,1279,666],{},[281,1281,669],{},[281,1283,673],{},[281,1285,677],{},[416,1287,1289],{"className":1288,"code":683,"language":684,"meta":285},[682],[281,1290,683],{"__ignoreMap":285},[296,1292,689,1293,692],{},[281,1294,655],{},[416,1296,1298],{"className":1297,"code":696,"language":684,"meta":285},[682],[281,1299,696],{"__ignoreMap":285},[296,1301,701,1302,356],{},[281,1303,704],{},[416,1305,1306],{"className":283,"code":707,"filename":704,"language":284,"meta":285,"style":285},[281,1307,1308,1320,1328,1336,1344,1348,1352],{"__ignoreMap":285},[287,1309,1310,1312,1314,1316,1318],{"class":426,"line":427},[287,1311,715],{"class":714},[287,1313,718],{"class":714},[287,1315,721],{"class":289},[287,1317,448],{"class":293},[287,1319,451],{"class":355},[287,1321,1322,1324,1326],{"class":426,"line":443},[287,1323,457],{"class":352},[287,1325,356],{"class":355},[287,1327,462],{"class":355},[287,1329,1330,1332,1334],{"class":426,"line":454},[287,1331,738],{"class":352},[287,1333,356],{"class":355},[287,1335,462],{"class":355},[287,1337,1338,1340,1342],{"class":426,"line":465},[287,1339,747],{"class":352},[287,1341,356],{"class":355},[287,1343,752],{"class":561},[287,1345,1346],{"class":426,"line":475},[287,1347,513],{"class":355},[287,1349,1350],{"class":426,"line":493},[287,1351,519],{"class":355},[287,1353,1354,1356],{"class":426,"line":510},[287,1355,525],{"class":355},[287,1357,528],{"class":293},[296,1359,1360],{},[332,1361,771],{},[340,1363,1364,1368,1372],{},[343,1365,1366,779],{},[332,1367,778],{},[343,1369,1370,785],{},[332,1371,784],{},[343,1373,1374,791],{},[332,1375,790],{},[296,1377,1378],{},[332,1379,796],{},[340,1381,1382,1386,1390],{},[343,1383,1384,803],{},[281,1385,673],{},[343,1387,1388,809],{},[281,1389,808],{},[343,1391,1392,815],{},[281,1393,814],{},[296,1395,1396],{},[332,1397,820],{},[296,1399,823],{},[340,1401,1402,1408],{},[343,1403,828,1404,831,1406,834],{},[281,1405,677],{},[281,1407,503],{},[343,1409,837],{},[296,1411,840],{},[842,1413,845],{"icon":844},[276,1415,849],{"id":848},[296,1417,852],{},[296,1419,855,1420,861,1424,356],{},[281,1421,1422],{"className":348,"language":349,"style":285},[287,1423,860],{"class":362},[281,1425,704],{},[416,1427,1428],{"className":283,"code":866,"filename":704,"language":284,"meta":285,"style":285},[281,1429,1430,1442,1450,1458,1466,1470,1474],{"__ignoreMap":285},[287,1431,1432,1434,1436,1438,1440],{"class":426,"line":427},[287,1433,715],{"class":714},[287,1435,718],{"class":714},[287,1437,721],{"class":289},[287,1439,448],{"class":293},[287,1441,451],{"class":355},[287,1443,1444,1446,1448],{"class":426,"line":443},[287,1445,457],{"class":352},[287,1447,356],{"class":355},[287,1449,462],{"class":355},[287,1451,1452,1454,1456],{"class":426,"line":454},[287,1453,738],{"class":352},[287,1455,356],{"class":355},[287,1457,462],{"class":355},[287,1459,1460,1462,1464],{"class":426,"line":465},[287,1461,901],{"class":352},[287,1463,356],{"class":355},[287,1465,906],{"class":561},[287,1467,1468],{"class":426,"line":475},[287,1469,513],{"class":355},[287,1471,1472],{"class":426,"line":493},[287,1473,519],{"class":355},[287,1475,1476,1478],{"class":426,"line":510},[287,1477,525],{"class":355},[287,1479,528],{"class":293},[296,1481,1482],{},[332,1483,771],{},[340,1485,1486,1490,1494],{},[343,1487,1488,932],{},[332,1489,931],{},[343,1491,1492,938],{},[332,1493,937],{},[343,1495,1496,944],{},[332,1497,943],{},[296,1499,947],{},[296,1501,1502],{},[332,1503,952],{},[340,1505,1506],{},[343,1507,957],{},[296,1509,960],{},[842,1511,963,1512,967,1514,976],{"icon":844},[281,1513,966],{},[281,1515,1516,1518,1520],{"className":348,"language":349,"style":285},[287,1517,860],{"class":352},[287,1519,356],{"class":355},[287,1521,562],{"class":561},[842,1523,981,1524,393],{"icon":979,"color":980},[389,1525,1526],{"href":984},[281,1527,987],{},[989,1529,991],{},{"title":285,"searchDepth":443,"depth":454,"links":1531},[1532,1533,1534,1535,1536],{"id":278,"depth":454,"text":995},{"id":541,"depth":454,"text":542},{"id":566,"depth":454,"text":567},{"id":647,"depth":454,"text":648},{"id":848,"depth":454,"text":849},{"toc":1538},{"depth":454},{"title":101,"description":1000},1793045125795]