[{"data":1,"prerenderedAt":667},["ShallowReactive",2],{"navigation":3,"navigation_docs":210,"-docs-getting-started-vue-i18n":265,"-docs-getting-started-vue-i18n-surround":516,"\u002Fdocs\u002Fgetting-started\u002Fvue-i18n":521},[4],{"title":5,"path":6,"stem":7,"children":8,"page":131},"Docs","\u002Fdocs","docs",[9,25,105,132,146,200],{"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],{"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,"icon":148,"path":149,"stem":150,"children":151,"page":131},"Composables","i-lucide-square-function","\u002Fdocs\u002Fcomposables","docs\u002F06.composables",[152,156,160,164,168,172,176,180,184,188,192,196],{"title":153,"path":154,"stem":155},"useLocalePath","\u002Fdocs\u002Fcomposables\u002Fuse-locale-path","docs\u002F06.composables\u002F01.use-locale-path",{"title":157,"path":158,"stem":159},"useLocaleRoute","\u002Fdocs\u002Fcomposables\u002Fuse-locale-route","docs\u002F06.composables\u002F02.use-locale-route",{"title":161,"path":162,"stem":163},"useSwitchLocalePath","\u002Fdocs\u002Fcomposables\u002Fuse-switch-locale-path","docs\u002F06.composables\u002F03.use-switch-locale-path",{"title":165,"path":166,"stem":167},"useLocaleHead","\u002Fdocs\u002Fcomposables\u002Fuse-locale-head","docs\u002F06.composables\u002F04.use-locale-head",{"title":169,"path":170,"stem":171},"useSetI18nParams","\u002Fdocs\u002Fcomposables\u002Fuse-set-i18n-params","docs\u002F06.composables\u002F05.use-set-i18n-params",{"title":173,"path":174,"stem":175},"useRouteBaseName","\u002Fdocs\u002Fcomposables\u002Fuse-route-base-name","docs\u002F06.composables\u002F06.use-route-base-name",{"title":177,"path":178,"stem":179},"useBrowserLocale","\u002Fdocs\u002Fcomposables\u002Fuse-browser-locale","docs\u002F06.composables\u002F07.use-browser-locale",{"title":181,"path":182,"stem":183},"useCookieLocale","\u002Fdocs\u002Fcomposables\u002Fuse-cookie-locale","docs\u002F06.composables\u002F08.use-cookie-locale",{"title":185,"path":186,"stem":187},"useTranslation","\u002Fdocs\u002Fcomposables\u002Fuse-translation","docs\u002F06.composables\u002F09.use-translation",{"title":189,"path":190,"stem":191},"defineI18nConfig","\u002Fdocs\u002Fcomposables\u002Fdefine-i18n-config","docs\u002F06.composables\u002F10.define-i18n-config",{"title":193,"path":194,"stem":195},"defineI18nLocale","\u002Fdocs\u002Fcomposables\u002Fdefine-i18n-locale","docs\u002F06.composables\u002F11.define-i18n-locale",{"title":197,"path":198,"stem":199},"defineI18nLocaleDetector","\u002Fdocs\u002Fcomposables\u002Fdefine-i18n-locale-detector","docs\u002F06.composables\u002F12.define-i18n-locale-detector",{"title":201,"icon":202,"path":203,"stem":204,"children":205,"page":131},"Compiler Macros","i-lucide-aperture","\u002Fdocs\u002Fcompiler-macros","docs\u002F07.compiler-macros",[206],{"title":207,"path":208,"stem":209},"defineI18nRoute","\u002Fdocs\u002Fcompiler-macros\u002Fdefine-i18n-route","docs\u002F07.compiler-macros\u002F01.define-i18n-route",[211,216,237,244,248,262],{"title":10,"path":11,"stem":12,"children":212,"icon":24},[213,214,215],{"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":217,"icon":104},[218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236],{"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":238,"page":131},[239,240,241,242,243],{"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":245,"page":131},[246,247],{"title":139,"path":140,"stem":141},{"title":143,"path":144,"stem":145},{"title":147,"icon":148,"path":149,"stem":150,"children":249,"page":131},[250,251,252,253,254,255,256,257,258,259,260,261],{"title":153,"path":154,"stem":155},{"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,"icon":202,"path":203,"stem":204,"children":263,"page":131},[264],{"title":207,"path":208,"stem":209},{"id":266,"title":21,"body":267,"description":509,"extension":510,"links":511,"meta":512,"navigation":513,"path":22,"seo":514,"stem":23,"__hash__":515},"docs\u002Fdocs\u002F01.getting-started\u002F03.vue-i18n.md",{"type":268,"value":269,"toc":503},"minimark",[270,274,278,316,327,334,338,349,355,426,440,444,450,461,465,490,496,499],[271,272,21],"h2",{"id":273},"vue-i18n-configuration",[275,276,277],"p",{},"While some options are shared between Nuxt I18n and Vue I18n, there is a range of options which are specific to Vue I18n, for example:",[279,280,281,289,295,301,307,313],"ul",{},[282,283,284,288],"li",{},[285,286,287],"code",{},"fallbackWarn",": To control fallback warnings.",[282,290,291,294],{},[285,292,293],{},"missingWarn",": To control missing localization warnings.",[282,296,297,300],{},[285,298,299],{},"formatter",": To provide a custom message formatting function.",[282,302,303,306],{},[285,304,305],{},"numberFormats",": To configure custom number formatting.",[282,308,309,312],{},[285,310,311],{},"datetimeFormats",": To configure custom date time formatting.",[282,314,315],{},"... more!",[275,317,318,319,326],{},"These are just a few examples of the runtime options available in Vue I18n, please check out ",[320,321,325],"a",{"href":322,"rel":323},"https:\u002F\u002Fvue-i18n.intlify.dev\u002F",[324],"nofollow","the documentation of Vue I18n"," to explore the full range of available options.",[275,328,329,330,333],{},"Vue I18n specific options cannot be configured in ",[285,331,332],{},"nuxt.config"," and have no overlap with the features used by or provided by Nuxt I18n.",[271,335,337],{"id":336},"adding-a-vue-i18n-config-file","Adding a Vue I18n config file",[275,339,340,341,344,345,348],{},"To configure the options you can create a ",[285,342,343],{},"i18n.config.ts"," file in the ",[285,346,347],{},"\u003CrootDir>\u002Fi18n"," directory, this file should have a default export with a function returning the Vue I18n options.",[275,350,351,352,354],{},"Nuxt I18n provides a macro function ",[285,353,189],{}," to improve the types, but a plain function would suffice too:",[356,357,363],"pre",{"className":358,"code":359,"filename":360,"language":361,"meta":362,"style":362},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineI18nConfig(() => {\n  return {\n    \u002F\u002F vue-i18n options\n  }\n})\n","i18n\u002Fi18n.config.ts","ts","",[285,364,365,396,404,411,417],{"__ignoreMap":362},[366,367,370,374,377,381,385,389,393],"span",{"class":368,"line":369},"line",1,[366,371,373],{"class":372},"s7zQu","export",[366,375,376],{"class":372}," default",[366,378,380],{"class":379},"s2Zo4"," defineI18nConfig",[366,382,384],{"class":383},"sTEyZ","(",[366,386,388],{"class":387},"sMK4o","()",[366,390,392],{"class":391},"spNyl"," =>",[366,394,395],{"class":387}," {\n",[366,397,399,402],{"class":368,"line":398},2,[366,400,401],{"class":372},"  return",[366,403,395],{"class":387},[366,405,407],{"class":368,"line":406},3,[366,408,410],{"class":409},"sHwdD","    \u002F\u002F vue-i18n options\n",[366,412,414],{"class":368,"line":413},4,[366,415,416],{"class":387},"  }\n",[366,418,420,423],{"class":368,"line":419},5,[366,421,422],{"class":387},"}",[366,424,425],{"class":383},")\n",[275,427,428,429,431,432,435,436,439],{},"The config file is resolved from ",[285,430,347],{},", and automatically looks for and loads the config file using the default filename of ",[285,433,434],{},"i18n.config",". This can be configured using the ",[285,437,438],{},"vueI18n"," options.",[271,441,443],{"id":442},"when-to-use","When to use",[275,445,446,447,449],{},"Use ",[285,448,343],{}," when you need to configure Vue I18n options that involve runtime functions or data that cannot be serialized for build-time processing. This is often the case when:",[279,451,452,455,458],{},[282,453,454],{},"You need to dynamically load or manipulate localization data based on user input or external APIs.",[282,456,457],{},"You are using custom formatting functions or other non-serializable options.",[282,459,460],{},"You need to use Vue I18n options that are not supported by Nuxt I18n's build-time configuration.",[271,462,464],{"id":463},"nuxt-config-benefits","Nuxt config benefits",[275,466,467,468,470,471,474,475,478,479,482,483,486,487,489],{},"While it is possible to configure the same (or functionally the same) options configurable in ",[285,469,343],{}," (",[285,472,473],{},"messages"," - instead of ",[285,476,477],{},"locales",", ",[285,480,481],{},"defaultLocale",", etc.) it is recommended to keep as much of the configuration as Nuxt I18n supports on the ",[285,484,485],{},"i18n"," key inside ",[285,488,332],{},".",[275,491,492,493,489],{},"Nuxt I18n will use these options during the build step and can configure and optimize functionalities by integrating with other libraries such as ",[285,494,495],{},"@intlify\u002Funplugin-vue-i18n",[275,497,498],{},"The Vue I18n config file will be loaded at runtime on each request which can increase server response times, especially in high-traffic applications. This is because the server needs to parse and process the configuration for every incoming request and merge them with those set by Nuxt I18n, rather than doing it once at build time.",[500,501,502],"style",{},"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 .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 pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":362,"searchDepth":398,"depth":398,"links":504},[505,506,507,508],{"id":273,"depth":398,"text":21},{"id":336,"depth":398,"text":337},{"id":442,"depth":398,"text":443},{"id":463,"depth":398,"text":464},"Configuring runtime options for Vue I18n","md",null,{},true,{"title":21,"description":509},"rr6g9Zy35ViYGOnjgVHYxuLbpJKJ7Pftu0z0MPciJzA",[517,519],{"title":17,"path":18,"stem":19,"description":518,"children":-1},"The basics to get started with the Nuxt i18n module",{"title":31,"path":27,"stem":28,"description":520,"children":-1},"Nuxt i18n module overrides Nuxt default routes to add locale prefixes to every URL with routing strategies.",{"id":266,"title":21,"body":522,"description":509,"extension":510,"links":511,"meta":665,"navigation":513,"path":22,"seo":666,"stem":23,"__hash__":515},{"type":268,"value":523,"toc":659},[524,526,528,552,557,561,563,569,573,613,621,623,627,635,637,651,655,657],[271,525,21],{"id":273},[275,527,277],{},[279,529,530,534,538,542,546,550],{},[282,531,532,288],{},[285,533,287],{},[282,535,536,294],{},[285,537,293],{},[282,539,540,300],{},[285,541,299],{},[282,543,544,306],{},[285,545,305],{},[282,547,548,312],{},[285,549,311],{},[282,551,315],{},[275,553,318,554,326],{},[320,555,325],{"href":322,"rel":556},[324],[275,558,329,559,333],{},[285,560,332],{},[271,562,337],{"id":336},[275,564,340,565,344,567,348],{},[285,566,343],{},[285,568,347],{},[275,570,351,571,354],{},[285,572,189],{},[356,574,575],{"className":358,"code":359,"filename":360,"language":361,"meta":362,"style":362},[285,576,577,593,599,603,607],{"__ignoreMap":362},[366,578,579,581,583,585,587,589,591],{"class":368,"line":369},[366,580,373],{"class":372},[366,582,376],{"class":372},[366,584,380],{"class":379},[366,586,384],{"class":383},[366,588,388],{"class":387},[366,590,392],{"class":391},[366,592,395],{"class":387},[366,594,595,597],{"class":368,"line":398},[366,596,401],{"class":372},[366,598,395],{"class":387},[366,600,601],{"class":368,"line":406},[366,602,410],{"class":409},[366,604,605],{"class":368,"line":413},[366,606,416],{"class":387},[366,608,609,611],{"class":368,"line":419},[366,610,422],{"class":387},[366,612,425],{"class":383},[275,614,428,615,431,617,435,619,439],{},[285,616,347],{},[285,618,434],{},[285,620,438],{},[271,622,443],{"id":442},[275,624,446,625,449],{},[285,626,343],{},[279,628,629,631,633],{},[282,630,454],{},[282,632,457],{},[282,634,460],{},[271,636,464],{"id":463},[275,638,467,639,470,641,474,643,478,645,482,647,486,649,489],{},[285,640,343],{},[285,642,473],{},[285,644,477],{},[285,646,481],{},[285,648,485],{},[285,650,332],{},[275,652,492,653,489],{},[285,654,495],{},[275,656,498],{},[500,658,502],{},{"title":362,"searchDepth":398,"depth":398,"links":660},[661,662,663,664],{"id":273,"depth":398,"text":21},{"id":336,"depth":398,"text":337},{"id":442,"depth":398,"text":443},{"id":463,"depth":398,"text":464},{},{"title":21,"description":509},1778786012306]