[{"data":1,"prerenderedAt":277},["ShallowReactive",2],{"docs:page:\u002Fen\u002Fdocs\u002Fconcepts\u002Fcontent-and-locales":3,"docs:navigation:en":184,"docs:section-descriptions:\u002Fen\u002Fdocs\u002Fconcepts\u002Fcontent-and-locales":271,"docs:translations:\u002Fen\u002Fdocs\u002Fconcepts\u002Fcontent-and-locales":272,"docs:surroundings:\u002Fen\u002Fdocs\u002Fconcepts\u002Fcontent-and-locales":274},{"id":4,"title":5,"body":6,"description":176,"extension":177,"meta":178,"navigation":179,"path":180,"seo":181,"stem":182,"__hash__":183},"docs\u002Fen\u002Fdocs\u002F2.concepts\u002Fcontent-and-locales.md","Content and Locales",{"type":7,"value":8,"toc":168},"minimark",[9,13,22,27,35,45,52,56,63,69,76,83,87,90,96,100,107,111,138,149,152],[10,11,5],"h1",{"id":12},"content-and-locales",[14,15,16,17,21],"p",{},"Documentation content is ",[18,19,20],"strong",{},"localized at the source",": every page exists in each\nlocale, and the content path maps directly to the public route.",[23,24,26],"h2",{"id":25},"localized-content","Localized content",[14,28,29,30,34],{},"The docs content lives in ",[31,32,33],"code",{},"apps\u002Fhome\u002Fcontent",":",[36,37,43],"pre",{"className":38,"code":40,"language":41,"meta":42},[39],"language-text","content\u002F\n├── en\u002F\n│   └── docs\u002F\n│       └── getting-started\u002F\n│           └── installation.md\n└── vi\u002F\n    └── docs\u002F\n        └── getting-started\u002F\n            └── installation.md\n","text","",[31,44,40],{"__ignoreMap":42},[14,46,47,48,51],{},"Each locale has its ",[18,49,50],{},"own copy"," of every page, written to read naturally in\nthat language — not a machine translation of the other.",[23,53,55],{"id":54},"content-path-public-route","Content path → public route",[14,57,58,59,62],{},"The file path under ",[31,60,61],{},"content\u002F\u003Clocale>"," becomes the public pathname exactly:",[36,64,67],{"className":65,"code":66,"language":41,"meta":42},[39],"content\u002Fen\u002Fdocs\u002Fgetting-started\u002Finstallation.md\n                  ↓\n\u002Fen\u002Fdocs\u002Fgetting-started\u002Finstallation\n\ncontent\u002Fvi\u002Fdocs\u002Fgetting-started\u002Finstallation.md\n                  ↓\n\u002Fvi\u002Fdocs\u002Fgetting-started\u002Finstallation\n",[31,68,66],{"__ignoreMap":42},[14,70,71,72,75],{},"There is ",[18,73,74],{},"no per-page locale mapping"," — the directory is the route.",[14,77,78],{},[79,80],"img",{"alt":81,"src":82},"One resource, two locale URLs: the Installation page maps to \u002Fen\u002Fdocs\u002Fgetting-started\u002Finstallation and \u002Fvi\u002Fdocs\u002Fgetting-started\u002Finstallation, linked by reciprocal hreflang en and vi-VN","\u002Fen\u002Fdocs\u002Fconcepts\u002Fcontent-locales-map.svg",[23,84,86],{"id":85},"self-contained-urls","Self-contained URLs",[14,88,89],{},"Because the locale is part of the URL, every document has a self-contained\ncanonical address. Links within the documentation stay inside the current\nlocale:",[36,91,94],{"className":92,"code":93,"language":41,"meta":42},[39],"\u002Fen\u002Fdocs\u002Fconcepts\u002Fpublic-web   ← English reader's link\n\u002Fvi\u002Fdocs\u002Fconcepts\u002Fpublic-web   ← Vietnamese reader's link\n",[31,95,93],{"__ignoreMap":42},[23,97,99],{"id":98},"locale-aware-navigation","Locale-aware navigation",[14,101,102,103,106],{},"The docs sidebar, breadcrumbs and previous\u002Fnext navigation are derived from the\ncontent tree ",[18,104,105],{},"filtered to the current locale",". An English reader sees only the\nEnglish tree; the Vietnamese tree never leaks in, and prev\u002Fnext never jumps\nacross locales.",[23,108,110],{"id":109},"telling-search-engines-about-the-twin","Telling search engines about the twin",[14,112,113,114,117,118,121,122,125,126,129,130,133,134,137],{},"Because a resource and its translations live at different URLs, each page\ndeclares its twins with ",[31,115,116],{},"rel=\"alternate\""," ",[31,119,120],{},"hreflang"," links. The registry in\n",[31,123,124],{},"app\u002Fi18n"," defines the BCP-47 tags — ",[31,127,128],{},"en"," for English, ",[31,131,132],{},"vi-VN"," for\nVietnamese — and the docs app emits an alternate link for every locale that\n",[18,135,136],{},"actually has"," the same document. A page that exists only in English\nadvertises no Vietnamese alternate, so search engines are never pointed at a 404.",[14,139,140,141,144,145,148],{},"The same registry drives the language switcher in the header: switching locale\nkeeps the current resource and swaps only the first URL segment, so\n",[31,142,143],{},"\u002Fen\u002Fdocs\u002Fgetting-started\u002Finstallation"," becomes\n",[31,146,147],{},"\u002Fvi\u002Fdocs\u002Fgetting-started\u002Finstallation"," — never the docs home.",[150,151],"hr",{},[14,153,154],{},[155,156,157,158,163,164],"em",{},"Previous: ",[159,160,162],"a",{"href":161},"\u002Fen\u002Fdocs\u002Fconcepts\u002Fpublic-web","Public Web"," · Next: ",[159,165,167],{"href":166},"\u002Fen\u002Fdocs\u002Fguides","Guides",{"title":42,"searchDepth":169,"depth":169,"links":170},2,[171,172,173,174,175],{"id":25,"depth":169,"text":26},{"id":54,"depth":169,"text":55},{"id":85,"depth":169,"text":86},{"id":98,"depth":169,"text":99},{"id":109,"depth":169,"text":110},"How documentation content is localized and how content paths map to public routes.","md",{},true,"\u002Fen\u002Fdocs\u002Fconcepts\u002Fcontent-and-locales",{"title":5,"description":176},"en\u002Fdocs\u002F2.concepts\u002Fcontent-and-locales","gFjWeV3Gep004cyI6pM_XCLuchgR5PLCdxoxbcRWb3M",[185],{"title":186,"path":187,"stem":128,"children":188,"page":230},"En","\u002Fen",[189,231],{"title":190,"path":191,"stem":192,"children":193,"page":230},"Blog","\u002Fen\u002Fblog","en\u002Fblog",[194,200,206,212,218,224],{"title":195,"path":196,"stem":197,"children":198},"One URL model for every public page","\u002Fen\u002Fblog\u002Furl-model","en\u002Fblog\u002F1.url-model\u002Findex",[199],{"title":195,"path":196,"stem":197},{"title":201,"path":202,"stem":203,"children":204},"Content is resolved at build time","\u002Fen\u002Fblog\u002Fbuild-time-content","en\u002Fblog\u002F2.build-time-content\u002Findex",[205],{"title":201,"path":202,"stem":203},{"title":207,"path":208,"stem":209,"children":210},"Locale switching that never lies","\u002Fen\u002Fblog\u002Flocale-switching","en\u002Fblog\u002F3.locale-switching\u002Findex",[211],{"title":207,"path":208,"stem":209},{"title":213,"path":214,"stem":215,"children":216},"Deploying a blog as static assets","\u002Fen\u002Fblog\u002Fstatic-deployment","en\u002Fblog\u002F4.static-deployment\u002Findex",[217],{"title":213,"path":214,"stem":215},{"title":219,"path":220,"stem":221,"children":222},"A reading page is not a documentation page","\u002Fen\u002Fblog\u002Freading-first-design","en\u002Fblog\u002F5.reading-first-design\u002Findex",[223],{"title":219,"path":220,"stem":221},{"title":225,"path":226,"stem":227,"children":228},"What this blog is (and is not)","\u002Fen\u002Fblog\u002Fdemo-content-note","en\u002Fblog\u002F6.demo-content-note\u002Findex",[229],{"title":225,"path":226,"stem":227},false,{"title":232,"path":233,"stem":234,"children":235},"Overview","\u002Fen\u002Fdocs","en\u002Fdocs\u002Findex",[236,237,250,259],{"title":232,"path":233,"stem":234},{"title":238,"path":239,"stem":240,"children":241},"Getting Started","\u002Fen\u002Fdocs\u002Fgetting-started","en\u002Fdocs\u002F1.getting-started\u002Findex",[242,243,247],{"title":238,"path":239,"stem":240},{"title":244,"path":245,"stem":246},"First Steps","\u002Fen\u002Fdocs\u002Fgetting-started\u002Ffirst-steps","en\u002Fdocs\u002F1.getting-started\u002Ffirst-steps",{"title":248,"path":143,"stem":249},"Installation","en\u002Fdocs\u002F1.getting-started\u002Finstallation",{"title":251,"path":252,"stem":253,"children":254},"Concepts","\u002Fen\u002Fdocs\u002Fconcepts","en\u002Fdocs\u002F2.concepts\u002Findex",[255,256,257],{"title":251,"path":252,"stem":253},{"title":5,"path":180,"stem":182},{"title":162,"path":161,"stem":258},"en\u002Fdocs\u002F2.concepts\u002Fpublic-web",{"title":167,"path":166,"stem":260,"children":261},"en\u002Fdocs\u002F3.guides\u002Findex",[262,263,267],{"title":167,"path":166,"stem":260},{"title":264,"path":265,"stem":266},"Building a Public Page","\u002Fen\u002Fdocs\u002Fguides\u002Fbuilding-a-public-page","en\u002Fdocs\u002F3.guides\u002Fbuilding-a-public-page",{"title":268,"path":269,"stem":270},"Local Development","\u002Fen\u002Fdocs\u002Fguides\u002Flocal-development","en\u002Fdocs\u002F3.guides\u002Flocal-development",{},[128,273],"vi",[275,276],{"title":251,"path":252,"stem":253,"children":-1},{"title":162,"path":161,"stem":258,"children":-1},1791809693960]