[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation_en":3,"/docs/features/languages-data":144},[4,16,91,117,127],{"title":5,"path":6,"stem":7,"children":8,"icon":15},"Getting Started","/docs/get-started","docs/1.get-started/1.index",[9,11],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Setup","/docs/get-started/setup","docs/1.get-started/2.setup","mage:fast-forward-fill",{"title":17,"icon":18,"path":19,"stem":20,"children":21,"page":90},"Features","ic:baseline-cable","/docs/features","docs/2.features",[22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86],{"title":23,"path":24,"stem":25},"Database","/docs/features/database","docs/2.features/01.database",{"title":27,"path":28,"stem":29},"Authentication","/docs/features/auth","docs/2.features/02.auth",{"title":31,"path":32,"stem":33},"Payments","/docs/features/payments","docs/2.features/03.payments",{"title":35,"path":36,"stem":37},"Admin Panel","/docs/features/admin-panel","docs/2.features/04.admin-panel",{"title":39,"path":40,"stem":41},"AI","/docs/features/ai","docs/2.features/05.ai",{"title":43,"path":44,"stem":45},"Customization","/docs/features/customization","docs/2.features/06.customization",{"title":47,"path":48,"stem":49},"Storage","/docs/features/storage","docs/2.features/07.storage",{"title":51,"path":52,"stem":53},"Email","/docs/features/email","docs/2.features/08.email",{"title":55,"path":56,"stem":57},"Languages","/docs/features/languages","docs/2.features/09.languages",{"title":59,"path":60,"stem":61},"SEO","/docs/features/seo","docs/2.features/10.seo",{"title":63,"path":64,"stem":65},"Blogs","/docs/features/blogs","docs/2.features/11.blogs",{"title":67,"path":68,"stem":69},"Documentation","/docs/features/documentation","docs/2.features/12.documentation",{"title":71,"path":72,"stem":73},"Cron Jobs","/docs/features/cron-jobs","docs/2.features/13.cron-jobs",{"title":75,"path":76,"stem":77},"Error Handling","/docs/features/error-handling","docs/2.features/14.error-handling",{"title":79,"path":80,"stem":81},"Analytics","/docs/features/analytics","docs/2.features/15.analytics",{"title":83,"path":84,"stem":85},"PWA","/docs/features/pwa","docs/2.features/15.pwa",{"title":87,"path":88,"stem":89},"Customer Support","/docs/features/customer-support","docs/2.features/16.customer-support",false,{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":90},"Tutorials","ic:baseline-library-books","/docs/tutorials","docs/3.tutorials",[97,101,105,109,113],{"title":98,"path":99,"stem":100},"Project Structure","/docs/tutorials/project-structure","docs/3.tutorials/1.project-structure",{"title":102,"path":103,"stem":104},"Page Routes","/docs/tutorials/page-routes","docs/3.tutorials/2.page-routes",{"title":106,"path":107,"stem":108},"API Calls","/docs/tutorials/api-calls","docs/3.tutorials/3.api-calls",{"title":110,"path":111,"stem":112},"State Management","/docs/tutorials/state-management","docs/3.tutorials/4.state-management",{"title":114,"path":115,"stem":116},"Legal Pages by GPT","/docs/tutorials/legal-pages-by-gpt","docs/3.tutorials/5.legal-pages-by-gpt",{"title":118,"icon":119,"path":120,"stem":121,"children":122,"page":90},"Formatting & Linting","ic:baseline-format-align-left","/docs/formatting-and-linting","docs/4.formatting-and-linting",[123],{"title":124,"path":125,"stem":126},"Overview","/docs/formatting-and-linting/overview","docs/4.formatting-and-linting/1.overview",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":90},"Deployment","ic:baseline-rocket-launch","/docs/deployment","docs/5.deployment",[133,136,140],{"title":124,"path":134,"stem":135},"/docs/deployment/overview","docs/5.deployment/1.overview",{"title":137,"path":138,"stem":139},"Vercel","/docs/deployment/vercel","docs/5.deployment/2.vercel",{"title":141,"path":142,"stem":143},"Cloudflare Workers","/docs/deployment/cloudflare","docs/5.deployment/3.cloudflare",{"page":145,"surround":744},{"id":146,"title":55,"body":147,"description":736,"extension":737,"head":738,"meta":739,"navigation":740,"ogImage":738,"path":56,"robots":738,"schemaOrg":738,"seo":741,"sitemap":742,"stem":57,"__hash__":743},"docs_en/docs/2.features/09.languages.md",{"type":148,"value":149,"toc":731},"minimark",[150,155,171,174,183,602,606,727],[151,152,154],"h2",{"id":153},"tools","Tools",[156,157,158],"ul",{},[159,160,161,170],"li",{},[162,163,164],"strong",{},[165,166,169],"a",{"href":167,"target":168},"https://i18n.nuxtjs.org","_blank","Nuxt I18n"," – Locale and translation management",[151,172,12],{"id":173},"setup",[175,176,177,178,182],"p",{},"English (",[179,180,181],"code",{},"en",") is enabled by default. To add another language:",[184,185,186,394,480],"ol",{},[159,187,188,194,197,198],{},[162,189,190,191],{},"Register the new locale in ",[179,192,193],{},"shared/config.ts",[195,196],"br",{},"\nThis tells the app that the language exists and can be used.",[199,200,205],"pre",{"className":201,"code":202,"filename":193,"language":203,"meta":204,"style":204},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","i18n: {\n  defaultLocale: 'en',\n  locales: [\n    { code: 'en', language: 'en-US', file: 'en.json', name: 'English' },\n    { code: 'es', language: 'es-ES', file: 'es.json', name: 'Spanish' }, // New\n  ],\n}\n","ts","",[179,206,207,223,243,255,318,380,388],{"__ignoreMap":204},[208,209,212,216,220],"span",{"class":210,"line":211},"line",1,[208,213,215],{"class":214},"sBMFI","i18n",[208,217,219],{"class":218},"sMK4o",":",[208,221,222],{"class":218}," {\n",[208,224,226,229,231,234,237,240],{"class":210,"line":225},2,[208,227,228],{"class":214},"  defaultLocale",[208,230,219],{"class":218},[208,232,233],{"class":218}," '",[208,235,181],{"class":236},"sfazB",[208,238,239],{"class":218},"'",[208,241,242],{"class":218},",\n",[208,244,246,249,251],{"class":210,"line":245},3,[208,247,248],{"class":214},"  locales",[208,250,219],{"class":218},[208,252,254],{"class":253},"swJcz"," [\n",[208,256,258,261,264,266,268,270,272,275,278,280,282,285,287,289,292,294,296,299,301,303,306,308,310,313,315],{"class":210,"line":257},4,[208,259,260],{"class":218},"    {",[208,262,263],{"class":253}," code",[208,265,219],{"class":218},[208,267,233],{"class":218},[208,269,181],{"class":236},[208,271,239],{"class":218},[208,273,274],{"class":218},",",[208,276,277],{"class":253}," language",[208,279,219],{"class":218},[208,281,233],{"class":218},[208,283,284],{"class":236},"en-US",[208,286,239],{"class":218},[208,288,274],{"class":218},[208,290,291],{"class":253}," file",[208,293,219],{"class":218},[208,295,233],{"class":218},[208,297,298],{"class":236},"en.json",[208,300,239],{"class":218},[208,302,274],{"class":218},[208,304,305],{"class":253}," name",[208,307,219],{"class":218},[208,309,233],{"class":218},[208,311,312],{"class":236},"English",[208,314,239],{"class":218},[208,316,317],{"class":218}," },\n",[208,319,321,323,325,327,329,332,334,336,338,340,342,345,347,349,351,353,355,358,360,362,364,366,368,371,373,376],{"class":210,"line":320},5,[208,322,260],{"class":218},[208,324,263],{"class":253},[208,326,219],{"class":218},[208,328,233],{"class":218},[208,330,331],{"class":236},"es",[208,333,239],{"class":218},[208,335,274],{"class":218},[208,337,277],{"class":253},[208,339,219],{"class":218},[208,341,233],{"class":218},[208,343,344],{"class":236},"es-ES",[208,346,239],{"class":218},[208,348,274],{"class":218},[208,350,291],{"class":253},[208,352,219],{"class":218},[208,354,233],{"class":218},[208,356,357],{"class":236},"es.json",[208,359,239],{"class":218},[208,361,274],{"class":218},[208,363,305],{"class":253},[208,365,219],{"class":218},[208,367,233],{"class":218},[208,369,370],{"class":236},"Spanish",[208,372,239],{"class":218},[208,374,375],{"class":218}," },",[208,377,379],{"class":378},"sHwdD"," // New\n",[208,381,383,386],{"class":210,"line":382},6,[208,384,385],{"class":253},"  ]",[208,387,242],{"class":218},[208,389,391],{"class":210,"line":390},7,[208,392,393],{"class":218},"}\n",[159,395,396,399,400],{},[162,397,398],{},"Create the translation file for that locale","\nEvery key in this file should match the keys used in your app.",[199,401,406],{"className":402,"code":403,"filename":404,"language":405,"meta":204,"style":204},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n    \"pages.home.title\": \"Bienvenidos a ShipAhead\",\n    \"common.siteTagline\": \"Tu Boilerplate SaaS\",\n    \"common.siteDescription\": \"Una solución poderosa para tu proyecto.\"\n}\n","locales/es.json","json",[179,407,408,413,437,457,476],{"__ignoreMap":204},[208,409,410],{"class":210,"line":211},[208,411,412],{"class":218},"{\n",[208,414,415,418,422,425,427,430,433,435],{"class":210,"line":225},[208,416,417],{"class":218},"    \"",[208,419,421],{"class":420},"spNyl","pages.home.title",[208,423,424],{"class":218},"\"",[208,426,219],{"class":218},[208,428,429],{"class":218}," \"",[208,431,432],{"class":236},"Bienvenidos a ShipAhead",[208,434,424],{"class":218},[208,436,242],{"class":218},[208,438,439,441,444,446,448,450,453,455],{"class":210,"line":245},[208,440,417],{"class":218},[208,442,443],{"class":420},"common.siteTagline",[208,445,424],{"class":218},[208,447,219],{"class":218},[208,449,429],{"class":218},[208,451,452],{"class":236},"Tu Boilerplate SaaS",[208,454,424],{"class":218},[208,456,242],{"class":218},[208,458,459,461,464,466,468,470,473],{"class":210,"line":257},[208,460,417],{"class":218},[208,462,463],{"class":420},"common.siteDescription",[208,465,424],{"class":218},[208,467,219],{"class":218},[208,469,429],{"class":218},[208,471,472],{"class":236},"Una solución poderosa para tu proyecto.",[208,474,475],{"class":218},"\"\n",[208,477,478],{"class":210,"line":320},[208,479,393],{"class":218},[159,481,482,488,489,492,493],{},[162,483,484,485],{},"(Optional) Configure routing and language detection in ",[179,486,487],{},"nuxt.config.ts","\nDo this if you want URL prefixes (for example ",[179,490,491],{},"/es/...",") or automatic language switching based on the user’s browser.",[199,494,496],{"className":201,"code":495,"language":203,"meta":204,"style":204},"i18n: {\n  strategy: 'prefix_except_default', // /es/about but / for default locale\n  detectBrowserLanguage: {\n    useCookie: true,\n    cookieKey: 'shipahead_language',\n    fallbackLocale: 'en'\n  },\n  langDir: 'locales'\n}\n",[179,497,498,506,525,534,547,563,577,582,597],{"__ignoreMap":204},[208,499,500,502,504],{"class":210,"line":211},[208,501,215],{"class":214},[208,503,219],{"class":218},[208,505,222],{"class":218},[208,507,508,511,513,515,518,520,522],{"class":210,"line":225},[208,509,510],{"class":214},"  strategy",[208,512,219],{"class":218},[208,514,233],{"class":218},[208,516,517],{"class":236},"prefix_except_default",[208,519,239],{"class":218},[208,521,274],{"class":218},[208,523,524],{"class":378}," // /es/about but / for default locale\n",[208,526,527,530,532],{"class":210,"line":245},[208,528,529],{"class":214},"  detectBrowserLanguage",[208,531,219],{"class":218},[208,533,222],{"class":218},[208,535,536,539,541,545],{"class":210,"line":257},[208,537,538],{"class":214},"    useCookie",[208,540,219],{"class":218},[208,542,544],{"class":543},"sfNiH"," true",[208,546,242],{"class":218},[208,548,549,552,554,556,559,561],{"class":210,"line":320},[208,550,551],{"class":214},"    cookieKey",[208,553,219],{"class":218},[208,555,233],{"class":218},[208,557,558],{"class":236},"shipahead_language",[208,560,239],{"class":218},[208,562,242],{"class":218},[208,564,565,568,570,572,574],{"class":210,"line":382},[208,566,567],{"class":214},"    fallbackLocale",[208,569,219],{"class":218},[208,571,233],{"class":218},[208,573,181],{"class":236},[208,575,576],{"class":218},"'\n",[208,578,579],{"class":210,"line":390},[208,580,581],{"class":218},"  },\n",[208,583,585,588,590,592,595],{"class":210,"line":584},8,[208,586,587],{"class":214},"  langDir",[208,589,219],{"class":218},[208,591,233],{"class":218},[208,593,594],{"class":236},"locales",[208,596,576],{"class":218},[208,598,600],{"class":210,"line":599},9,[208,601,393],{"class":218},[151,603,605],{"id":604},"usage","Usage",[156,607,608,632,683,698,711],{},[159,609,610,613,615,616,619,620],{},[162,611,612],{},"Translate text",[195,614],{},"\nUse ",[179,617,618],{},"useI18n()"," and reference your translation keys.",[199,621,625],{"className":622,"code":623,"language":624,"meta":204,"style":204},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const { t } = useI18n(); console.log(t('pages.home.title')); // \"Welcome to ShipAhead\" (en) // \"Bienvenidos a ShipAhead\" (es)\n","vue",[179,626,627],{"__ignoreMap":204},[208,628,629],{"class":210,"line":211},[208,630,623],{"class":631},"sTEyZ",[159,633,634,637,639,640,643,644,680,682],{},[162,635,636],{},"Switch languages",[195,638],{},"\nUse the built-in ",[179,641,642],{},"LocaleToggler"," component so users can change language from the UI.",[199,645,648],{"className":622,"code":646,"filename":647,"language":624,"meta":204,"style":204},"\u003Ctemplate>\n    \u003CLocaleToggler />\n\u003C/template>\n","index.vue",[179,649,650,661,671],{"__ignoreMap":204},[208,651,652,655,658],{"class":210,"line":211},[208,653,654],{"class":218},"\u003C",[208,656,657],{"class":253},"template",[208,659,660],{"class":218},">\n",[208,662,663,666,668],{"class":210,"line":225},[208,664,665],{"class":218},"    \u003C",[208,667,642],{"class":253},[208,669,670],{"class":218}," />\n",[208,672,673,676,678],{"class":210,"line":245},[208,674,675],{"class":218},"\u003C/",[208,677,657],{"class":253},[208,679,660],{"class":218},[195,681],{},"When a language is selected, the site updates immediately.",[159,684,685,688,690,691,693,694,697],{},[162,686,687],{},"Default behavior",[195,689],{},"\nEnglish is pre-configured. To support another language, add it in ",[179,692,193],{}," and create a matching JSON file in ",[179,695,696],{},"locales/",".",[159,699,700,703],{},[162,701,702],{},"Browser detection",[156,704,705,708],{},[159,706,707],{},"If enabled, the app tries to match the user’s browser language.",[159,709,710],{},"If no match exists, it falls back to the default locale.",[159,712,713,716,718,719,722,723,726],{},[162,714,715],{},"Tip",[195,717],{},"\nKeep translation keys consistent (for example ",[179,720,721],{},"buttons.save",", ",[179,724,725],{},"errors.required",") so they are easier to maintain across languages.",[728,729,730],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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);}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":204,"searchDepth":225,"depth":225,"links":732},[733,734,735],{"id":153,"depth":225,"text":154},{"id":173,"depth":225,"text":12},{"id":604,"depth":225,"text":605},"Enable multi-language support in your app using Nuxt I18n so your app can support users around the world","md",null,{},true,{"title":55,"description":736},{"loc":56},"3Dsh42rVDn97BMb7f97OLL69s5lrubHCokr0K_AUnYA",[745,747],{"title":51,"path":52,"stem":53,"description":746,"children":-1},"Set up email in your app to send transactional emails like password resets and verification links.",{"title":59,"path":60,"stem":61,"description":748,"children":-1},"Make your app visible on search engines and ready for social sharing."]