[{"data":1,"prerenderedAt":276},["ShallowReactive",2],{"docs:page:\u002Fvi\u002Fdocs\u002Fconcepts\u002Fcontent-and-locales":3,"docs:navigation:vi":183,"docs:section-descriptions:\u002Fvi\u002Fdocs\u002Fconcepts\u002Fcontent-and-locales":271,"docs:translations:\u002Fvi\u002Fdocs\u002Fconcepts\u002Fcontent-and-locales":272,"docs:surroundings:\u002Fvi\u002Fdocs\u002Fconcepts\u002Fcontent-and-locales":273},{"id":4,"title":5,"body":6,"description":175,"extension":176,"meta":177,"navigation":178,"path":179,"seo":180,"stem":181,"__hash__":182},"docs\u002Fvi\u002Fdocs\u002F2.concepts\u002Fcontent-and-locales.md","Nội dung và ngôn ngữ",{"type":7,"value":8,"toc":167},"minimark",[9,13,22,27,35,45,52,56,63,69,75,82,86,89,95,99,106,110,137,148,151],[10,11,5],"h1",{"id":12},"nội-dung-và-ngôn-ngữ",[14,15,16,17,21],"p",{},"Nội dung tài liệu ",[18,19,20],"strong",{},"bản địa hoá ngay tại nguồn",": mỗi trang tồn tại ở từng\nlocale, và content path ánh xạ trực tiếp sang public route.",[23,24,26],"h2",{"id":25},"nội-dung-bản-địa-hoá","Nội dung bản địa hoá",[14,28,29,30,34],{},"Content của docs nằm trong ",[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],{},"Mỗi locale có ",[18,49,50],{},"bản riêng"," của mọi trang, viết tự nhiên theo ngôn ngữ đó —\nkhông phải bản dịch máy từ ngôn ngữ kia.",[23,53,55],{"id":54},"content-path-public-route","Content path → public route",[14,57,58,59,62],{},"File path dưới ",[31,60,61],{},"content\u002F\u003Clocale>"," trở thành pathname công khai trùng khớp:",[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,74],{},[18,72,73],{},"Không có"," locale mapping thủ công ở từng trang — thư mục chính là route.",[14,76,77],{},[78,79],"img",{"alt":80,"src":81},"Một resource, hai URL theo locale: trang Installation ánh xạ sang \u002Fen\u002Fdocs\u002Fgetting-started\u002Finstallation và \u002Fvi\u002Fdocs\u002Fgetting-started\u002Finstallation, liên kết với nhau bằng hreflang hai chiều en và vi-VN","\u002Fvi\u002Fdocs\u002Fconcepts\u002Fcontent-locales-map.svg",[23,83,85],{"id":84},"url-tự-chứa","URL tự chứa",[14,87,88],{},"Vì locale là một phần của URL, mỗi tài liệu có một địa chỉ canonical tự chứa.\nLiên kết trong tài liệu luôn ở trong locale hiện tại:",[36,90,93],{"className":91,"code":92,"language":41,"meta":42},[39],"\u002Fen\u002Fdocs\u002Fconcepts\u002Fpublic-web   ← liên kết của người đọc tiếng Anh\n\u002Fvi\u002Fdocs\u002Fconcepts\u002Fpublic-web   ← liên kết của người đọc tiếng Việt\n",[31,94,92],{"__ignoreMap":42},[23,96,98],{"id":97},"navigation-theo-ngôn-ngữ","Navigation theo ngôn ngữ",[14,100,101,102,105],{},"Sidebar, breadcrumbs và previous\u002Fnext của docs được sinh từ content tree\n",[18,103,104],{},"lọc theo locale hiện tại",". Người đọc tiếng Anh chỉ thấy cây tiếng Anh; cây\ntiếng Việt không rò rỉ vào, và prev\u002Fnext không bao giờ nhảy qua locale.",[23,107,109],{"id":108},"báo-cho-search-engine-biết-url-chị-em","Báo cho search engine biết URL chị em",[14,111,112,113,116,117,120,121,124,125,128,129,132,133,136],{},"Vì một resource và các bản dịch của nó nằm ở các URL khác nhau, mỗi trang khai\nbáo các URL chị em bằng link ",[31,114,115],{},"rel=\"alternate\""," kèm ",[31,118,119],{},"hreflang",". Registry trong\n",[31,122,123],{},"app\u002Fi18n"," định nghĩa các tag BCP-47 — ",[31,126,127],{},"en"," cho tiếng Anh, ",[31,130,131],{},"vi-VN"," cho\ntiếng Việt — và ứng dụng docs sinh một alternate link cho mọi locale ",[18,134,135],{},"thực sự\ncó"," document đó. Một trang chỉ tồn tại bằng tiếng Anh sẽ không quảng bá\nalternate tiếng Việt nào, nên search engine không bao giờ bị trỏ tới một 404.",[14,138,139,140,143,144,147],{},"Cùng registry đó điều khiển bộ chuyển đổi ngôn ngữ ở header: chuyển locale giữ\nnguyên resource hiện tại và chỉ thay segment đầu của URL, nên\n",[31,141,142],{},"\u002Fen\u002Fdocs\u002Fgetting-started\u002Finstallation"," trở thành\n",[31,145,146],{},"\u002Fvi\u002Fdocs\u002Fgetting-started\u002Finstallation"," — không bao giờ rơi về trang chủ docs.",[149,150],"hr",{},[14,152,153],{},[154,155,156,157,162,163],"em",{},"Trước: ",[158,159,161],"a",{"href":160},"\u002Fvi\u002Fdocs\u002Fconcepts\u002Fpublic-web","Web công khai"," · Tiếp: ",[158,164,166],{"href":165},"\u002Fvi\u002Fdocs\u002Fguides","Hướng dẫn",{"title":42,"searchDepth":168,"depth":168,"links":169},2,[170,171,172,173,174],{"id":25,"depth":168,"text":26},{"id":54,"depth":168,"text":55},{"id":84,"depth":168,"text":85},{"id":97,"depth":168,"text":98},{"id":108,"depth":168,"text":109},"Cách nội dung tài liệu được bản địa hoá và cách content path ánh xạ sang public route.","md",{},true,"\u002Fvi\u002Fdocs\u002Fconcepts\u002Fcontent-and-locales",{"title":5,"description":175},"vi\u002Fdocs\u002F2.concepts\u002Fcontent-and-locales","mzNC4sqWyDwv1PJf95drX4gn0xHfHCVOtKrdvwBJZEs",[184],{"title":185,"path":186,"stem":187,"children":188,"page":230},"Vi","\u002Fvi","vi",[189,231],{"title":190,"path":191,"stem":192,"children":193,"page":230},"Blog","\u002Fvi\u002Fblog","vi\u002Fblog",[194,200,206,212,218,224],{"title":195,"path":196,"stem":197,"children":198},"Một mô hình URL cho mọi trang public","\u002Fvi\u002Fblog\u002Furl-model","vi\u002Fblog\u002F1.url-model\u002Findex",[199],{"title":195,"path":196,"stem":197},{"title":201,"path":202,"stem":203,"children":204},"Content được resolve ở build time","\u002Fvi\u002Fblog\u002Fbuild-time-content","vi\u002Fblog\u002F2.build-time-content\u002Findex",[205],{"title":201,"path":202,"stem":203},{"title":207,"path":208,"stem":209,"children":210},"Locale switching không bao giờ nói dối","\u002Fvi\u002Fblog\u002Flocale-switching","vi\u002Fblog\u002F3.locale-switching\u002Findex",[211],{"title":207,"path":208,"stem":209},{"title":213,"path":214,"stem":215,"children":216},"Deploy một blog như static assets","\u002Fvi\u002Fblog\u002Fstatic-deployment","vi\u002Fblog\u002F4.static-deployment\u002Findex",[217],{"title":213,"path":214,"stem":215},{"title":219,"path":220,"stem":221,"children":222},"Trang đọc bài không phải trang tài liệu","\u002Fvi\u002Fblog\u002Freading-first-design","vi\u002Fblog\u002F5.reading-first-design\u002Findex",[223],{"title":219,"path":220,"stem":221},{"title":225,"path":226,"stem":227,"children":228},"Blog này là gì (và không phải gì)","\u002Fvi\u002Fblog\u002Fdemo-content-note","vi\u002Fblog\u002F6.demo-content-note\u002Findex",[229],{"title":225,"path":226,"stem":227},false,{"title":232,"path":233,"stem":234,"children":235},"Tổng quan","\u002Fvi\u002Fdocs","vi\u002Fdocs\u002Findex",[236,237,250,259],{"title":232,"path":233,"stem":234},{"title":238,"path":239,"stem":240,"children":241},"Bắt đầu","\u002Fvi\u002Fdocs\u002Fgetting-started","vi\u002Fdocs\u002F1.getting-started\u002Findex",[242,243,247],{"title":238,"path":239,"stem":240},{"title":244,"path":245,"stem":246},"Các bước đầu tiên","\u002Fvi\u002Fdocs\u002Fgetting-started\u002Ffirst-steps","vi\u002Fdocs\u002F1.getting-started\u002Ffirst-steps",{"title":248,"path":146,"stem":249},"Cài đặt","vi\u002Fdocs\u002F1.getting-started\u002Finstallation",{"title":251,"path":252,"stem":253,"children":254},"Khái niệm","\u002Fvi\u002Fdocs\u002Fconcepts","vi\u002Fdocs\u002F2.concepts\u002Findex",[255,256,257],{"title":251,"path":252,"stem":253},{"title":5,"path":179,"stem":181},{"title":161,"path":160,"stem":258},"vi\u002Fdocs\u002F2.concepts\u002Fpublic-web",{"title":166,"path":165,"stem":260,"children":261},"vi\u002Fdocs\u002F3.guides\u002Findex",[262,263,267],{"title":166,"path":165,"stem":260},{"title":264,"path":265,"stem":266},"Xây dựng một trang công khai","\u002Fvi\u002Fdocs\u002Fguides\u002Fbuilding-a-public-page","vi\u002Fdocs\u002F3.guides\u002Fbuilding-a-public-page",{"title":268,"path":269,"stem":270},"Phát triển cục bộ","\u002Fvi\u002Fdocs\u002Fguides\u002Flocal-development","vi\u002Fdocs\u002F3.guides\u002Flocal-development",{},[127,187],[274,275],{"title":251,"path":252,"stem":253,"children":-1},{"title":161,"path":160,"stem":258,"children":-1},1791809693998]