[{"data":1,"prerenderedAt":343},["ShallowReactive",2],{"navigation":3,"\u002Fi18n":60,"\u002Fi18n-surround":338},[4,23,40,45,50,55],{"title":5,"path":6,"stem":7,"children":8,"icon":22},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Icons","\u002Fgetting-started\u002Ficons","1.getting-started\u002F3.icons","i-lucide-sparkles","i-lucide-rocket",{"title":24,"icon":25,"path":26,"stem":27,"children":28,"page":39},"Packages","i-lucide-package","\u002Fpackages","2.packages",[29,34],{"title":30,"path":31,"stem":32,"icon":33},"@vyui\u002Fcore","\u002Fpackages\u002Fcore","2.packages\u002F1.core","i-lucide-box",{"title":35,"path":36,"stem":37,"icon":38},"@vyui\u002Fkit","\u002Fpackages\u002Fkit","2.packages\u002F2.kit","i-lucide-layers",false,{"title":41,"path":42,"stem":43,"icon":44},"Theming","\u002Ftheming","3.theming","i-lucide-palette",{"title":46,"path":47,"stem":48,"icon":49},"Accessibility","\u002Faccessibility","4.accessibility","i-lucide-accessibility",{"title":51,"path":52,"stem":53,"icon":54},"i18n","\u002Fi18n","5.i18n","i-lucide-languages",{"title":56,"path":57,"stem":58,"icon":59},"Roadmap","\u002Froadmap","6.roadmap","i-lucide-map",{"id":61,"title":51,"body":62,"description":331,"extension":332,"links":333,"meta":334,"navigation":335,"path":52,"seo":336,"stem":53,"__hash__":337},"docs\u002F5.i18n.md",{"type":63,"value":64,"toc":325},"minimark",[65,79,86,91,115,119,164,168,174,310,314,321],[66,67,70],"callout",{"color":68,"icon":69},"warning","i-lucide-flask-conical",[71,72,73,74,78],"p",{},"This page is forward-looking. Internationalization isn't built yet — it's ",[75,76,77],"a",{"href":57},"on the roadmap",". The shape below is the intended direction, not a current API.",[71,80,81,82,85],{},"Vy UI components render their own text in only a few places — a close button's label, \"Next Page\" in pagination, the default screen-reader names covered in ",[75,83,84],{"href":47},"a11y",". Everything else is content you pass in, so most translation lives in your app, not the library. The goal for i18n is to make the few library-owned strings overridable and to format locale-sensitive values correctly.",[87,88,90],"h2",{"id":89},"what-translation-covers-on-lynx","What translation covers on Lynx",[71,92,93,94,98,99,102,103,102,106,109,110,114],{},"Lynx runs your JavaScript on a real engine, so the standard ",[95,96,97],"code",{},"Intl"," APIs — ",[95,100,101],{},"Intl.NumberFormat",", ",[95,104,105],{},"Intl.DateTimeFormat",[95,107,108],{},"Intl.Collator"," — are available for formatting numbers, dates, and sorting. What Lynx does ",[111,112,113],"strong",{},"not"," give you is a built-in message catalog or a layout direction primitive, so those are the parts a UI library has to make easy.",[87,116,118],{"id":117},"the-planned-approach","The planned approach",[120,121,122,129,146,158],"ul",{},[123,124,125,128],"li",{},[111,126,127],{},"Overridable built-in strings"," — every library-owned label (close, pagination, clear) resolves through a small message map you can replace per locale, so a French app gets \"Suivant\" instead of \"Next Page\".",[123,130,131,134,135,138,139,145],{},[111,132,133],{},"A locale provider"," — set the active locale once near the root; components and the ",[95,136,137],{},"accessibility-label"," defaults read from it reactively, the same way ",[75,140,142],{"href":141},"\u002Faccessibility#building-your-own-component",[95,143,144],{},"useA11y"," reads state.",[123,147,148,151,152,154,155,157],{},[111,149,150],{},"Formatting helpers"," — thin wrappers over ",[95,153,97],{}," so a price or date is formatted for the active locale without each component reaching for ",[95,156,97],{}," itself.",[123,159,160,163],{},[111,161,162],{},"RTL"," — direction-aware layout for Arabic, Hebrew, and similar, so start\u002Fend spacing and icon flipping resolve from locale rather than hard-coded left\u002Fright.",[87,165,167],{"id":166},"what-you-do-today","What you do today",[71,169,170,171,173],{},"Until this lands, translate at the app level: pass already-localized text into components, and override the handful of built-in labels with the ",[95,172,137],{}," and slot props each component exposes.",[175,176,181],"pre",{"className":177,"code":178,"language":179,"meta":180,"style":180},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Ctemplate>\n  \u003C!-- your text, your translation layer -->\n  \u003CVyButton>{{ t('cart.checkout') }}\u003C\u002FVyButton>\n\n  \u003C!-- override a built-in label per locale -->\n  \u003CVyButton :accessibility-label=\"t('a11y.addToFavorites')\">\n    \u003CIcon name=\"heart\" \u002F>\n  \u003C\u002FVyButton>\n\u003C\u002Ftemplate>\n","vue","",[95,182,183,199,206,229,236,242,267,291,301],{"__ignoreMap":180},[184,185,188,192,196],"span",{"class":186,"line":187},"line",1,[184,189,191],{"class":190},"sMK4o","\u003C",[184,193,195],{"class":194},"swJcz","template",[184,197,198],{"class":190},">\n",[184,200,202],{"class":186,"line":201},2,[184,203,205],{"class":204},"sHwdD","  \u003C!-- your text, your translation layer -->\n",[184,207,209,212,215,218,222,225,227],{"class":186,"line":208},3,[184,210,211],{"class":190},"  \u003C",[184,213,214],{"class":194},"VyButton",[184,216,217],{"class":190},">",[184,219,221],{"class":220},"sTEyZ","{{ t('cart.checkout') }}",[184,223,224],{"class":190},"\u003C\u002F",[184,226,214],{"class":194},[184,228,198],{"class":190},[184,230,232],{"class":186,"line":231},4,[184,233,235],{"emptyLinePlaceholder":234},true,"\n",[184,237,239],{"class":186,"line":238},5,[184,240,241],{"class":204},"  \u003C!-- override a built-in label per locale -->\n",[184,243,245,247,249,253,256,259,263,265],{"class":186,"line":244},6,[184,246,211],{"class":190},[184,248,214],{"class":194},[184,250,252],{"class":251},"spNyl"," :accessibility-label",[184,254,255],{"class":190},"=",[184,257,258],{"class":190},"\"",[184,260,262],{"class":261},"sfazB","t('a11y.addToFavorites')",[184,264,258],{"class":190},[184,266,198],{"class":190},[184,268,270,273,276,279,281,283,286,288],{"class":186,"line":269},7,[184,271,272],{"class":190},"    \u003C",[184,274,275],{"class":194},"Icon",[184,277,278],{"class":251}," name",[184,280,255],{"class":190},[184,282,258],{"class":190},[184,284,285],{"class":261},"heart",[184,287,258],{"class":190},[184,289,290],{"class":190}," \u002F>\n",[184,292,294,297,299],{"class":186,"line":293},8,[184,295,296],{"class":190},"  \u003C\u002F",[184,298,214],{"class":194},[184,300,198],{"class":190},[184,302,304,306,308],{"class":186,"line":303},9,[184,305,224],{"class":190},[184,307,195],{"class":194},[184,309,198],{"class":190},[87,311,313],{"id":312},"on-the-roadmap","On the roadmap",[71,315,316,317,320],{},"The locale provider, overridable string map, formatting helpers, and RTL support are all planned — see the ",[75,318,319],{"href":57},"roadmap",".",[322,323,324],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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":180,"searchDepth":187,"depth":201,"links":326},[327,328,329,330],{"id":89,"depth":201,"text":90},{"id":117,"depth":201,"text":118},{"id":166,"depth":201,"text":167},{"id":312,"depth":201,"text":313},"How Vy UI plans to handle internationalization on Lynx — locale-aware text, formatting, and RTL. Forward-looking; not shipped yet.","md",null,{},{"icon":54},{"title":51,"description":331},"eQ3vdVEdjt50ZMWD6RJtR-DRtx3W2FXSRR9bdPMI31Q",[339,341],{"title":46,"path":47,"stem":48,"description":340,"icon":49,"children":-1},"Vy UI components ship with native Lynx accessibility built in — what you get for free and the one thing you add.",{"title":56,"path":57,"stem":58,"description":342,"icon":59,"children":-1},"Upcoming components, features, and milestones for Vy UI — where the project is headed and what ships next.",1780388088856]