[{"data":1,"prerenderedAt":1616},["ShallowReactive",2],{"navigation_docs":3,"-guides-i18n":101,"-guides-i18n-surround":1611},[4,55,73,91],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":54},"Guides","i-lucide-book-open","\u002Fguides","1.guides",[10,14,18,22,26,30,34,38,42,46,50],{"title":11,"path":12,"stem":13},"Introduction","\u002Fguides\u002Fintroduction","1.guides\u002F0.introduction",{"title":15,"path":16,"stem":17},"Data","\u002Fguides\u002Fdata","1.guides\u002F1.data",{"title":19,"path":20,"stem":21},"Forms","\u002Fguides\u002Fform","1.guides\u002F2.form",{"title":23,"path":24,"stem":25},"List","\u002Fguides\u002Flist","1.guides\u002F3.list",{"title":27,"path":28,"stem":29},"Authentication","\u002Fguides\u002Fauthentication","1.guides\u002F4.authentication",{"title":31,"path":32,"stem":33},"Authorization","\u002Fguides\u002Fauthorization","1.guides\u002F5.authorization",{"title":35,"path":36,"stem":37},"Notifications","\u002Fguides\u002Fnotifications","1.guides\u002F6.notifications",{"title":39,"path":40,"stem":41},"Realtime","\u002Fguides\u002Frealtime","1.guides\u002F7.realtime",{"title":43,"path":44,"stem":45},"Router","\u002Fguides\u002Frouter","1.guides\u002F8.router",{"title":47,"path":48,"stem":49},"I18n","\u002Fguides\u002Fi18n","1.guides\u002F9.i18n",{"title":51,"path":52,"stem":53},"Resources","\u002Fguides\u002Fresources","1.guides\u002F99.resources",false,{"title":56,"icon":57,"path":58,"stem":59,"children":60,"page":54},"Integrations","i-lucide-blocks","\u002Fintegrations","2.integrations",[61,65,69],{"title":62,"path":63,"stem":64},"Vue","\u002Fintegrations\u002Fvue","2.integrations\u002F0.vue",{"title":66,"path":67,"stem":68},"Nuxt","\u002Fintegrations\u002Fnuxt","2.integrations\u002F1.nuxt",{"title":70,"path":71,"stem":72},"Svelte","\u002Fintegrations\u002Fsvelte","2.integrations\u002F2.svelte",{"title":74,"icon":75,"path":76,"stem":77,"children":78,"page":54},"Backend","i-lucide-server","\u002Fbackend","3.backend",[79,83,87],{"title":80,"path":81,"stem":82},"Directus","\u002Fbackend\u002Fdirectus","3.backend\u002F0.directus",{"title":84,"path":85,"stem":86},"Supabase","\u002Fbackend\u002Fsupabase","3.backend\u002F1.supabase",{"title":88,"path":89,"stem":90},"RESTful API","\u002Fbackend\u002Frest-api","3.backend\u002F9.rest-api",{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":54},"AI","i-lucide-sparkles","\u002Fai","4.ai",[97],{"title":98,"path":99,"stem":100},"Agent Skills","\u002Fai\u002Fskills","4.ai\u002F0.skills",{"id":102,"title":47,"body":103,"description":1605,"extension":1606,"links":1607,"meta":1608,"navigation":483,"path":48,"seo":1609,"stem":49,"__hash__":1610},"docs\u002F1.guides\u002F9.i18n.md",{"type":104,"value":105,"toc":1596},"minimark",[106,110,113,118,121,126,325,329,393,509,512,518,521,524,1072,1075,1078,1084,1099,1102,1143,1564,1570,1574,1577,1592],[107,108,109],"p",{},"Ginjou can work with any i18n tool.",[107,111,112],{},"This layer gives Ginjou one shared i18n contract for translation and locale changes.",[114,115,117],"h2",{"id":116},"i18n-context","I18n Context",[107,119,120],{},"I18n context is the shared entry point for translation and locale state.",[122,123,125],"h3",{"id":124},"interface","Interface",[127,128,129],"code-group",{},[130,131,136],"pre",{"className":132,"code":133,"filename":47,"language":134,"meta":135,"style":135},"language-ts shiki shiki-themes material-theme-lighter github-light github-dark monokai","interface I18n {\n    translate: (key: string, params?: Record\u003Cany, any>) => string | undefined\n    getLocale?: () => string\n    setLocale?: (locale: string, options?: any) => void | Promise\u003Cvoid>\n    onChangeLocale?: (handler: (locale: string) => void) => () => void\n}\n","ts","",[137,138,139,155,216,232,279,319],"code",{"__ignoreMap":135},[140,141,144,147,151],"span",{"class":142,"line":143},"line",1,[140,145,124],{"class":146},"srJo8",[140,148,150],{"class":149},"sKvfc"," I18n",[140,152,154],{"class":153},"swvn1"," {\n",[140,156,158,162,166,169,173,175,179,182,185,188,191,194,197,199,202,205,208,210,213],{"class":142,"line":157},2,[140,159,161],{"class":160},"sY_X6","    translate",[140,163,165],{"class":164},"sGXK2",":",[140,167,168],{"class":153}," (",[140,170,172],{"class":171},"sQgqH","key",[140,174,165],{"class":164},[140,176,178],{"class":177},"s_MOj"," string",[140,180,181],{"class":153},",",[140,183,184],{"class":171}," params",[140,186,187],{"class":164},"?:",[140,189,190],{"class":149}," Record",[140,192,193],{"class":153},"\u003C",[140,195,196],{"class":177},"any",[140,198,181],{"class":153},[140,200,201],{"class":177}," any",[140,203,204],{"class":153},">)",[140,206,207],{"class":146}," =>",[140,209,178],{"class":177},[140,211,212],{"class":164}," |",[140,214,215],{"class":177}," undefined\n",[140,217,219,222,224,227,229],{"class":142,"line":218},3,[140,220,221],{"class":160},"    getLocale",[140,223,187],{"class":164},[140,225,226],{"class":153}," ()",[140,228,207],{"class":146},[140,230,231],{"class":177}," string\n",[140,233,235,238,240,242,245,247,249,251,254,256,258,261,263,266,268,271,273,276],{"class":142,"line":234},4,[140,236,237],{"class":160},"    setLocale",[140,239,187],{"class":164},[140,241,168],{"class":153},[140,243,244],{"class":171},"locale",[140,246,165],{"class":164},[140,248,178],{"class":177},[140,250,181],{"class":153},[140,252,253],{"class":171}," options",[140,255,187],{"class":164},[140,257,201],{"class":177},[140,259,260],{"class":153},")",[140,262,207],{"class":146},[140,264,265],{"class":177}," void",[140,267,212],{"class":164},[140,269,270],{"class":149}," Promise",[140,272,193],{"class":153},[140,274,275],{"class":177},"void",[140,277,278],{"class":153},">\n",[140,280,282,285,287,289,292,294,296,298,300,302,304,306,308,310,312,314,316],{"class":142,"line":281},5,[140,283,284],{"class":160},"    onChangeLocale",[140,286,187],{"class":164},[140,288,168],{"class":153},[140,290,291],{"class":160},"handler",[140,293,165],{"class":164},[140,295,168],{"class":153},[140,297,244],{"class":171},[140,299,165],{"class":164},[140,301,178],{"class":177},[140,303,260],{"class":153},[140,305,207],{"class":146},[140,307,265],{"class":177},[140,309,260],{"class":153},[140,311,207],{"class":146},[140,313,226],{"class":153},[140,315,207],{"class":146},[140,317,318],{"class":177}," void\n",[140,320,322],{"class":142,"line":321},6,[140,323,324],{"class":153},"}\n",[122,326,328],{"id":327},"methods","Methods",[330,331,332,345],"table",{},[333,334,335],"thead",{},[336,337,338,342],"tr",{},[339,340,341],"th",{},"Method",[339,343,344],{},"What it does",[346,347,348,363,373,383],"tbody",{},[336,349,350,356],{},[351,352,353],"td",{},[137,354,355],{},"translate",[351,357,358,359,362],{},"Translate one key and optionally return ",[137,360,361],{},"undefined"," when a key is missing.",[336,364,365,370],{},[351,366,367],{},[137,368,369],{},"getLocale",[351,371,372],{},"Read the current locale.",[336,374,375,380],{},[351,376,377],{},[137,378,379],{},"setLocale",[351,381,382],{},"Change the current locale.",[336,384,385,390],{},[351,386,387],{},[137,388,389],{},"onChangeLocale",[351,391,392],{},"Subscribe to locale changes and return a cleanup function.",[127,394,395],{},[130,396,400],{"className":397,"code":398,"filename":62,"language":399,"meta":135,"style":135},"language-vue shiki shiki-themes material-theme-lighter github-light github-dark monokai","\u003Cscript setup lang=\"ts\">\nimport { defineI18nContext } from '@ginjou\u002Fvue'\nimport { createI18n } from '@ginjou\u002Fwith-vue-i18n'\n\ndefineI18nContext(createI18n())\n\u003C\u002Fscript>\n","vue",[137,401,402,431,459,479,485,500],{"__ignoreMap":135},[140,403,404,406,410,414,417,420,424,427,429],{"class":142,"line":143},[140,405,193],{"class":153},[140,407,409],{"class":408},"sHsBP","script",[140,411,413],{"class":412},"s_lYk"," setup",[140,415,416],{"class":412}," lang",[140,418,419],{"class":153},"=",[140,421,423],{"class":422},"siCPE","\"",[140,425,134],{"class":426},"sLACW",[140,428,423],{"class":422},[140,430,278],{"class":153},[140,432,433,437,440,444,447,450,453,456],{"class":142,"line":157},[140,434,436],{"class":435},"sRxSC","import",[140,438,439],{"class":153}," {",[140,441,443],{"class":442},"ss--_"," defineI18nContext",[140,445,446],{"class":153}," }",[140,448,449],{"class":435}," from",[140,451,452],{"class":422}," '",[140,454,455],{"class":426},"@ginjou\u002Fvue",[140,457,458],{"class":422},"'\n",[140,460,461,463,465,468,470,472,474,477],{"class":142,"line":218},[140,462,436],{"class":435},[140,464,439],{"class":153},[140,466,467],{"class":442}," createI18n",[140,469,446],{"class":153},[140,471,449],{"class":435},[140,473,452],{"class":422},[140,475,476],{"class":426},"@ginjou\u002Fwith-vue-i18n",[140,478,458],{"class":422},[140,480,481],{"class":142,"line":234},[140,482,484],{"emptyLinePlaceholder":483},true,"\n",[140,486,487,491,494,497],{"class":142,"line":281},[140,488,490],{"class":489},"sD0ED","defineI18nContext",[140,492,493],{"class":442},"(",[140,495,496],{"class":489},"createI18n",[140,498,499],{"class":442},"())\n",[140,501,502,505,507],{"class":142,"line":321},[140,503,504],{"class":153},"\u003C\u002F",[140,506,409],{"class":408},[140,508,278],{"class":153},[114,510,511],{"id":355},"Translate",[107,513,514,517],{},[137,515,516],{},"useTranslate()"," returns one translation function.",[107,519,520],{},"The function accepts a translation key, optional params, and an optional default value.",[107,522,523],{},"If there is no i18n context, or the key is missing, Ginjou falls back to the default value and then to the key itself.",[127,525,527,821],{"sync":526},"guide-example",[130,528,530],{"className":397,"code":529,"filename":62,"language":399,"meta":135,"style":135},"\u003Cscript setup lang=\"ts\">\nimport { useTranslate } from '@ginjou\u002Fvue'\n\nconst t = useTranslate()\n\nconst title = t('posts.title')\nconst greeting = t('posts.greeting', {\n    name: 'Ada',\n})\nconst emptyText = t('posts.empty', undefined, 'No posts yet')\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n    \u003Cdiv>\n        \u003Ch1>{{ title }}\u003C\u002Fh1>\n        \u003Cp>{{ greeting }}\u003C\u002Fp>\n        \u003Cp>{{ emptyText }}\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[137,531,532,552,571,575,592,596,620,645,664,672,710,719,724,734,745,766,784,802,812],{"__ignoreMap":135},[140,533,534,536,538,540,542,544,546,548,550],{"class":142,"line":143},[140,535,193],{"class":153},[140,537,409],{"class":408},[140,539,413],{"class":412},[140,541,416],{"class":412},[140,543,419],{"class":153},[140,545,423],{"class":422},[140,547,134],{"class":426},[140,549,423],{"class":422},[140,551,278],{"class":153},[140,553,554,556,558,561,563,565,567,569],{"class":142,"line":157},[140,555,436],{"class":435},[140,557,439],{"class":153},[140,559,560],{"class":442}," useTranslate",[140,562,446],{"class":153},[140,564,449],{"class":435},[140,566,452],{"class":422},[140,568,455],{"class":426},[140,570,458],{"class":422},[140,572,573],{"class":142,"line":218},[140,574,484],{"emptyLinePlaceholder":483},[140,576,577,580,584,587,589],{"class":142,"line":234},[140,578,579],{"class":146},"const",[140,581,583],{"class":582},"s91G_"," t",[140,585,586],{"class":164}," =",[140,588,560],{"class":489},[140,590,591],{"class":442},"()\n",[140,593,594],{"class":142,"line":281},[140,595,484],{"emptyLinePlaceholder":483},[140,597,598,600,603,605,607,609,612,615,617],{"class":142,"line":321},[140,599,579],{"class":146},[140,601,602],{"class":582}," title",[140,604,586],{"class":164},[140,606,583],{"class":489},[140,608,493],{"class":442},[140,610,611],{"class":422},"'",[140,613,614],{"class":426},"posts.title",[140,616,611],{"class":422},[140,618,619],{"class":442},")\n",[140,621,623,625,628,630,632,634,636,639,641,643],{"class":142,"line":622},7,[140,624,579],{"class":146},[140,626,627],{"class":582}," greeting",[140,629,586],{"class":164},[140,631,583],{"class":489},[140,633,493],{"class":442},[140,635,611],{"class":422},[140,637,638],{"class":426},"posts.greeting",[140,640,611],{"class":422},[140,642,181],{"class":153},[140,644,154],{"class":153},[140,646,648,652,654,656,659,661],{"class":142,"line":647},8,[140,649,651],{"class":650},"squCx","    name",[140,653,165],{"class":153},[140,655,452],{"class":422},[140,657,658],{"class":426},"Ada",[140,660,611],{"class":422},[140,662,663],{"class":153},",\n",[140,665,667,670],{"class":142,"line":666},9,[140,668,669],{"class":153},"}",[140,671,619],{"class":442},[140,673,675,677,680,682,684,686,688,691,693,695,699,701,703,706,708],{"class":142,"line":674},10,[140,676,579],{"class":146},[140,678,679],{"class":582}," emptyText",[140,681,586],{"class":164},[140,683,583],{"class":489},[140,685,493],{"class":442},[140,687,611],{"class":422},[140,689,690],{"class":426},"posts.empty",[140,692,611],{"class":422},[140,694,181],{"class":153},[140,696,698],{"class":697},"sMTiH"," undefined",[140,700,181],{"class":153},[140,702,452],{"class":422},[140,704,705],{"class":426},"No posts yet",[140,707,611],{"class":422},[140,709,619],{"class":442},[140,711,713,715,717],{"class":142,"line":712},11,[140,714,504],{"class":153},[140,716,409],{"class":408},[140,718,278],{"class":153},[140,720,722],{"class":142,"line":721},12,[140,723,484],{"emptyLinePlaceholder":483},[140,725,727,729,732],{"class":142,"line":726},13,[140,728,193],{"class":153},[140,730,731],{"class":408},"template",[140,733,278],{"class":153},[140,735,737,740,743],{"class":142,"line":736},14,[140,738,739],{"class":153},"    \u003C",[140,741,742],{"class":408},"div",[140,744,278],{"class":153},[140,746,748,751,754,757,760,762,764],{"class":142,"line":747},15,[140,749,750],{"class":153},"        \u003C",[140,752,753],{"class":408},"h1",[140,755,756],{"class":153},">",[140,758,759],{"class":442},"{{ title }}",[140,761,504],{"class":153},[140,763,753],{"class":408},[140,765,278],{"class":153},[140,767,769,771,773,775,778,780,782],{"class":142,"line":768},16,[140,770,750],{"class":153},[140,772,107],{"class":408},[140,774,756],{"class":153},[140,776,777],{"class":442},"{{ greeting }}",[140,779,504],{"class":153},[140,781,107],{"class":408},[140,783,278],{"class":153},[140,785,787,789,791,793,796,798,800],{"class":142,"line":786},17,[140,788,750],{"class":153},[140,790,107],{"class":408},[140,792,756],{"class":153},[140,794,795],{"class":442},"{{ emptyText }}",[140,797,504],{"class":153},[140,799,107],{"class":408},[140,801,278],{"class":153},[140,803,805,808,810],{"class":142,"line":804},18,[140,806,807],{"class":153},"    \u003C\u002F",[140,809,742],{"class":408},[140,811,278],{"class":153},[140,813,815,817,819],{"class":142,"line":814},19,[140,816,504],{"class":153},[140,818,731],{"class":408},[140,820,278],{"class":153},[130,822,826],{"className":823,"code":824,"filename":70,"language":825,"meta":135,"style":135},"language-svelte shiki shiki-themes material-theme-lighter github-light github-dark monokai","\u003Cscript lang=\"ts\">\nimport { useTranslate } from '@ginjou\u002Fsvelte'\n\nconst t = useTranslate()\n\nconst title = t('posts.title')\nconst greeting = t('posts.greeting', {\n    name: 'Ada',\n})\nconst emptyText = t('posts.empty', undefined, 'No posts yet')\n\u003C\u002Fscript>\n\n\u003Cdiv>\n    \u003Ch1>{title}\u003C\u002Fh1>\n    \u003Cp>{greeting}\u003C\u002Fp>\n    \u003Cp>{emptyText}\u003C\u002Fp>\n\u003C\u002Fdiv>\n","svelte",[137,827,828,846,865,869,881,885,905,927,941,947,979,987,991,999,1022,1043,1064],{"__ignoreMap":135},[140,829,830,832,834,836,838,840,842,844],{"class":142,"line":143},[140,831,193],{"class":153},[140,833,409],{"class":408},[140,835,416],{"class":412},[140,837,419],{"class":153},[140,839,423],{"class":422},[140,841,134],{"class":426},[140,843,423],{"class":422},[140,845,278],{"class":153},[140,847,848,850,852,854,856,858,860,863],{"class":142,"line":157},[140,849,436],{"class":435},[140,851,439],{"class":153},[140,853,560],{"class":442},[140,855,446],{"class":153},[140,857,449],{"class":435},[140,859,452],{"class":422},[140,861,862],{"class":426},"@ginjou\u002Fsvelte",[140,864,458],{"class":422},[140,866,867],{"class":142,"line":218},[140,868,484],{"emptyLinePlaceholder":483},[140,870,871,873,875,877,879],{"class":142,"line":234},[140,872,579],{"class":146},[140,874,583],{"class":582},[140,876,586],{"class":164},[140,878,560],{"class":489},[140,880,591],{"class":442},[140,882,883],{"class":142,"line":281},[140,884,484],{"emptyLinePlaceholder":483},[140,886,887,889,891,893,895,897,899,901,903],{"class":142,"line":321},[140,888,579],{"class":146},[140,890,602],{"class":582},[140,892,586],{"class":164},[140,894,583],{"class":489},[140,896,493],{"class":442},[140,898,611],{"class":422},[140,900,614],{"class":426},[140,902,611],{"class":422},[140,904,619],{"class":442},[140,906,907,909,911,913,915,917,919,921,923,925],{"class":142,"line":622},[140,908,579],{"class":146},[140,910,627],{"class":582},[140,912,586],{"class":164},[140,914,583],{"class":489},[140,916,493],{"class":442},[140,918,611],{"class":422},[140,920,638],{"class":426},[140,922,611],{"class":422},[140,924,181],{"class":153},[140,926,154],{"class":153},[140,928,929,931,933,935,937,939],{"class":142,"line":647},[140,930,651],{"class":650},[140,932,165],{"class":153},[140,934,452],{"class":422},[140,936,658],{"class":426},[140,938,611],{"class":422},[140,940,663],{"class":153},[140,942,943,945],{"class":142,"line":666},[140,944,669],{"class":153},[140,946,619],{"class":442},[140,948,949,951,953,955,957,959,961,963,965,967,969,971,973,975,977],{"class":142,"line":674},[140,950,579],{"class":146},[140,952,679],{"class":582},[140,954,586],{"class":164},[140,956,583],{"class":489},[140,958,493],{"class":442},[140,960,611],{"class":422},[140,962,690],{"class":426},[140,964,611],{"class":422},[140,966,181],{"class":153},[140,968,698],{"class":697},[140,970,181],{"class":153},[140,972,452],{"class":422},[140,974,705],{"class":426},[140,976,611],{"class":422},[140,978,619],{"class":442},[140,980,981,983,985],{"class":142,"line":712},[140,982,504],{"class":153},[140,984,409],{"class":408},[140,986,278],{"class":153},[140,988,989],{"class":142,"line":721},[140,990,484],{"emptyLinePlaceholder":483},[140,992,993,995,997],{"class":142,"line":726},[140,994,193],{"class":153},[140,996,742],{"class":408},[140,998,278],{"class":153},[140,1000,1001,1003,1005,1007,1011,1014,1016,1018,1020],{"class":142,"line":736},[140,1002,739],{"class":153},[140,1004,753],{"class":408},[140,1006,756],{"class":153},[140,1008,1010],{"class":1009},"sW3yT","{",[140,1012,1013],{"class":442},"title",[140,1015,669],{"class":1009},[140,1017,504],{"class":153},[140,1019,753],{"class":408},[140,1021,278],{"class":153},[140,1023,1024,1026,1028,1030,1032,1035,1037,1039,1041],{"class":142,"line":747},[140,1025,739],{"class":153},[140,1027,107],{"class":408},[140,1029,756],{"class":153},[140,1031,1010],{"class":1009},[140,1033,1034],{"class":442},"greeting",[140,1036,669],{"class":1009},[140,1038,504],{"class":153},[140,1040,107],{"class":408},[140,1042,278],{"class":153},[140,1044,1045,1047,1049,1051,1053,1056,1058,1060,1062],{"class":142,"line":768},[140,1046,739],{"class":153},[140,1048,107],{"class":408},[140,1050,756],{"class":153},[140,1052,1010],{"class":1009},[140,1054,1055],{"class":442},"emptyText",[140,1057,669],{"class":1009},[140,1059,504],{"class":153},[140,1061,107],{"class":408},[140,1063,278],{"class":153},[140,1065,1066,1068,1070],{"class":142,"line":786},[140,1067,504],{"class":153},[140,1069,742],{"class":408},[140,1071,278],{"class":153},[107,1073,1074],{},"This helper is the lowest-level translation entry point for your own components. It is also reused internally by many auth and data composables.",[114,1076,1077],{"id":244},"Locale",[107,1079,1080,1083],{},[137,1081,1082],{},"useLocale()"," reads and updates the current locale.",[107,1085,1086,1087,1090,1091,1094,1095,1098],{},"Reading uses ",[137,1088,1089],{},"getLocale()",". Writing uses ",[137,1092,1093],{},"setLocale()",". External locale changes stay in sync through ",[137,1096,1097],{},"onChangeLocale()",".",[107,1100,1101],{},"This helper only works when the context implements all three locale methods.",[330,1103,1104,1114],{},[333,1105,1106],{},[336,1107,1108,1111],{},[339,1109,1110],{},"Context method",[339,1112,1113],{},"Used for",[346,1115,1116,1125,1134],{},[336,1117,1118,1122],{},[351,1119,1120],{},[137,1121,369],{},[351,1123,1124],{},"Read the current locale when the ref is created.",[336,1126,1127,1131],{},[351,1128,1129],{},[137,1130,379],{},[351,1132,1133],{},"Apply a locale change when the ref is written.",[336,1135,1136,1140],{},[351,1137,1138],{},[137,1139,389],{},[351,1141,1142],{},"Keep the ref in sync when locale changes outside the ref itself.",[127,1144,1145,1359],{"sync":526},[130,1146,1148],{"className":397,"code":1147,"filename":62,"language":399,"meta":135,"style":135},"\u003Cscript setup lang=\"ts\">\nimport { useLocale } from '@ginjou\u002Fvue'\n\nconst locale = useLocale()\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n    \u003Clabel>\n        Locale\n        \u003Cselect v-model=\"locale\">\n            \u003Coption value=\"en-US\">en-US\u003C\u002Foption>\n            \u003Coption value=\"zh-TW\">zh-TW\u003C\u002Foption>\n        \u003C\u002Fselect>\n    \u003C\u002Flabel>\n    \u003Cp>Current locale: {{ locale }}\u003C\u002Fp>\n\u003C\u002Ftemplate>\n",[137,1149,1150,1170,1189,1193,1206,1214,1218,1226,1235,1240,1260,1290,1317,1326,1334,1351],{"__ignoreMap":135},[140,1151,1152,1154,1156,1158,1160,1162,1164,1166,1168],{"class":142,"line":143},[140,1153,193],{"class":153},[140,1155,409],{"class":408},[140,1157,413],{"class":412},[140,1159,416],{"class":412},[140,1161,419],{"class":153},[140,1163,423],{"class":422},[140,1165,134],{"class":426},[140,1167,423],{"class":422},[140,1169,278],{"class":153},[140,1171,1172,1174,1176,1179,1181,1183,1185,1187],{"class":142,"line":157},[140,1173,436],{"class":435},[140,1175,439],{"class":153},[140,1177,1178],{"class":442}," useLocale",[140,1180,446],{"class":153},[140,1182,449],{"class":435},[140,1184,452],{"class":422},[140,1186,455],{"class":426},[140,1188,458],{"class":422},[140,1190,1191],{"class":142,"line":218},[140,1192,484],{"emptyLinePlaceholder":483},[140,1194,1195,1197,1200,1202,1204],{"class":142,"line":234},[140,1196,579],{"class":146},[140,1198,1199],{"class":582}," locale",[140,1201,586],{"class":164},[140,1203,1178],{"class":489},[140,1205,591],{"class":442},[140,1207,1208,1210,1212],{"class":142,"line":281},[140,1209,504],{"class":153},[140,1211,409],{"class":408},[140,1213,278],{"class":153},[140,1215,1216],{"class":142,"line":321},[140,1217,484],{"emptyLinePlaceholder":483},[140,1219,1220,1222,1224],{"class":142,"line":622},[140,1221,193],{"class":153},[140,1223,731],{"class":408},[140,1225,278],{"class":153},[140,1227,1228,1230,1233],{"class":142,"line":647},[140,1229,739],{"class":153},[140,1231,1232],{"class":408},"label",[140,1234,278],{"class":153},[140,1236,1237],{"class":142,"line":666},[140,1238,1239],{"class":442},"        Locale\n",[140,1241,1242,1244,1247,1250,1252,1254,1256,1258],{"class":142,"line":674},[140,1243,750],{"class":153},[140,1245,1246],{"class":408},"select",[140,1248,1249],{"class":412}," v-model",[140,1251,419],{"class":153},[140,1253,423],{"class":422},[140,1255,244],{"class":426},[140,1257,423],{"class":422},[140,1259,278],{"class":153},[140,1261,1262,1265,1268,1271,1273,1275,1278,1280,1282,1284,1286,1288],{"class":142,"line":712},[140,1263,1264],{"class":153},"            \u003C",[140,1266,1267],{"class":408},"option",[140,1269,1270],{"class":412}," value",[140,1272,419],{"class":153},[140,1274,423],{"class":422},[140,1276,1277],{"class":426},"en-US",[140,1279,423],{"class":422},[140,1281,756],{"class":153},[140,1283,1277],{"class":442},[140,1285,504],{"class":153},[140,1287,1267],{"class":408},[140,1289,278],{"class":153},[140,1291,1292,1294,1296,1298,1300,1302,1305,1307,1309,1311,1313,1315],{"class":142,"line":721},[140,1293,1264],{"class":153},[140,1295,1267],{"class":408},[140,1297,1270],{"class":412},[140,1299,419],{"class":153},[140,1301,423],{"class":422},[140,1303,1304],{"class":426},"zh-TW",[140,1306,423],{"class":422},[140,1308,756],{"class":153},[140,1310,1304],{"class":442},[140,1312,504],{"class":153},[140,1314,1267],{"class":408},[140,1316,278],{"class":153},[140,1318,1319,1322,1324],{"class":142,"line":726},[140,1320,1321],{"class":153},"        \u003C\u002F",[140,1323,1246],{"class":408},[140,1325,278],{"class":153},[140,1327,1328,1330,1332],{"class":142,"line":736},[140,1329,807],{"class":153},[140,1331,1232],{"class":408},[140,1333,278],{"class":153},[140,1335,1336,1338,1340,1342,1345,1347,1349],{"class":142,"line":747},[140,1337,739],{"class":153},[140,1339,107],{"class":408},[140,1341,756],{"class":153},[140,1343,1344],{"class":442},"Current locale: {{ locale }}",[140,1346,504],{"class":153},[140,1348,107],{"class":408},[140,1350,278],{"class":153},[140,1352,1353,1355,1357],{"class":142,"line":768},[140,1354,504],{"class":153},[140,1356,731],{"class":408},[140,1358,278],{"class":153},[130,1360,1362],{"className":823,"code":1361,"filename":70,"language":825,"meta":135,"style":135},"\u003Cscript lang=\"ts\">\nimport { useLocale } from '@ginjou\u002Fsvelte'\n\nconst locale = useLocale()\n\u003C\u002Fscript>\n\n\u003Clabel>\n    Locale\n    \u003Cselect bind:value={locale.value}>\n        \u003Coption value=\"en-US\">en-US\u003C\u002Foption>\n        \u003Coption value=\"zh-TW\">zh-TW\u003C\u002Foption>\n    \u003C\u002Fselect>\n\u003C\u002Flabel>\n\u003Cp>Current locale: {locale.value}\u003C\u002Fp>\n",[137,1363,1364,1382,1400,1404,1416,1424,1428,1436,1441,1469,1495,1521,1529,1537],{"__ignoreMap":135},[140,1365,1366,1368,1370,1372,1374,1376,1378,1380],{"class":142,"line":143},[140,1367,193],{"class":153},[140,1369,409],{"class":408},[140,1371,416],{"class":412},[140,1373,419],{"class":153},[140,1375,423],{"class":422},[140,1377,134],{"class":426},[140,1379,423],{"class":422},[140,1381,278],{"class":153},[140,1383,1384,1386,1388,1390,1392,1394,1396,1398],{"class":142,"line":157},[140,1385,436],{"class":435},[140,1387,439],{"class":153},[140,1389,1178],{"class":442},[140,1391,446],{"class":153},[140,1393,449],{"class":435},[140,1395,452],{"class":422},[140,1397,862],{"class":426},[140,1399,458],{"class":422},[140,1401,1402],{"class":142,"line":218},[140,1403,484],{"emptyLinePlaceholder":483},[140,1405,1406,1408,1410,1412,1414],{"class":142,"line":234},[140,1407,579],{"class":146},[140,1409,1199],{"class":582},[140,1411,586],{"class":164},[140,1413,1178],{"class":489},[140,1415,591],{"class":442},[140,1417,1418,1420,1422],{"class":142,"line":281},[140,1419,504],{"class":153},[140,1421,409],{"class":408},[140,1423,278],{"class":153},[140,1425,1426],{"class":142,"line":321},[140,1427,484],{"emptyLinePlaceholder":483},[140,1429,1430,1432,1434],{"class":142,"line":622},[140,1431,193],{"class":153},[140,1433,1232],{"class":408},[140,1435,278],{"class":153},[140,1437,1438],{"class":142,"line":647},[140,1439,1440],{"class":442},"    Locale\n",[140,1442,1443,1445,1447,1450,1452,1455,1457,1459,1461,1463,1465,1467],{"class":142,"line":666},[140,1444,739],{"class":153},[140,1446,1246],{"class":408},[140,1448,1449],{"class":435}," bind",[140,1451,165],{"class":153},[140,1453,1454],{"class":149},"value",[140,1456,419],{"class":153},[140,1458,1010],{"class":1009},[140,1460,244],{"class":442},[140,1462,1098],{"class":153},[140,1464,1454],{"class":442},[140,1466,669],{"class":1009},[140,1468,278],{"class":153},[140,1470,1471,1473,1475,1477,1479,1481,1483,1485,1487,1489,1491,1493],{"class":142,"line":674},[140,1472,750],{"class":153},[140,1474,1267],{"class":408},[140,1476,1270],{"class":412},[140,1478,419],{"class":153},[140,1480,423],{"class":422},[140,1482,1277],{"class":426},[140,1484,423],{"class":422},[140,1486,756],{"class":153},[140,1488,1277],{"class":442},[140,1490,504],{"class":153},[140,1492,1267],{"class":408},[140,1494,278],{"class":153},[140,1496,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1519],{"class":142,"line":712},[140,1498,750],{"class":153},[140,1500,1267],{"class":408},[140,1502,1270],{"class":412},[140,1504,419],{"class":153},[140,1506,423],{"class":422},[140,1508,1304],{"class":426},[140,1510,423],{"class":422},[140,1512,756],{"class":153},[140,1514,1304],{"class":442},[140,1516,504],{"class":153},[140,1518,1267],{"class":408},[140,1520,278],{"class":153},[140,1522,1523,1525,1527],{"class":142,"line":721},[140,1524,807],{"class":153},[140,1526,1246],{"class":408},[140,1528,278],{"class":153},[140,1530,1531,1533,1535],{"class":142,"line":726},[140,1532,504],{"class":153},[140,1534,1232],{"class":408},[140,1536,278],{"class":153},[140,1538,1539,1541,1543,1545,1548,1550,1552,1554,1556,1558,1560,1562],{"class":142,"line":736},[140,1540,193],{"class":153},[140,1542,107],{"class":408},[140,1544,756],{"class":153},[140,1546,1547],{"class":442},"Current locale: ",[140,1549,1010],{"class":1009},[140,1551,244],{"class":442},[140,1553,1098],{"class":153},[140,1555,1454],{"class":442},[140,1557,669],{"class":1009},[140,1559,504],{"class":153},[140,1561,107],{"class":408},[140,1563,278],{"class":153},[107,1565,1566,1567,1569],{},"If one of those locale methods is missing, ",[137,1568,1082],{}," throws instead of trying to guess the behavior.",[114,1571,1573],{"id":1572},"official-adapter","Official Adapter",[107,1575,1576],{},"The repo currently includes one official i18n adapter.",[1578,1579,1580],"card-group",{},[1581,1582,1585,1587,1588,1591],"card",{"icon":1583,"title":1584,"to":63},"i-logos-vue","Vue I18n",[137,1586,476],{}," connects ",[137,1589,1590],{},"vue-i18n"," to Ginjou's i18n contract.",[1593,1594,1595],"style",{},"html pre.shiki code .srJo8, html code.shiki .srJo8{--shiki-light:#9C3EDA;--shiki-light-font-style:inherit;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sKvfc, html code.shiki .sKvfc{--shiki-light:#E2931D;--shiki-light-text-decoration:inherit;--shiki-default:#6F42C1;--shiki-default-text-decoration:inherit;--shiki-dark:#B392F0;--shiki-dark-text-decoration:inherit;--shiki-sepia:#A6E22E;--shiki-sepia-text-decoration:underline}html pre.shiki code .swvn1, html code.shiki .swvn1{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .sY_X6, html code.shiki .sY_X6{--shiki-light:#E53935;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .sGXK2, html code.shiki .sGXK2{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sQgqH, html code.shiki .sQgqH{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit;--shiki-sepia:#FD971F;--shiki-sepia-font-style:italic}html pre.shiki code .s_MOj, html code.shiki .s_MOj{--shiki-light:#E2931D;--shiki-light-font-style:inherit;--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-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 .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html pre.shiki code .sHsBP, html code.shiki .sHsBP{--shiki-light:#E53935;--shiki-default:#22863A;--shiki-dark:#85E89D;--shiki-sepia:#F92672}html pre.shiki code .s_lYk, html code.shiki .s_lYk{--shiki-light:#9C3EDA;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .siCPE, html code.shiki .siCPE{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .sLACW, html code.shiki .sLACW{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .sRxSC, html code.shiki .sRxSC{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#F92672;--shiki-sepia-font-style:inherit}html pre.shiki code .ss--_, html code.shiki .ss--_{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .sD0ED, html code.shiki .sD0ED{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .s91G_, html code.shiki .s91G_{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#F8F8F2}html pre.shiki code .squCx, html code.shiki .squCx{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .sMTiH, html code.shiki .sMTiH{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}html pre.shiki code .sW3yT, html code.shiki .sW3yT{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F92672}",{"title":135,"searchDepth":157,"depth":157,"links":1597},[1598,1602,1603,1604],{"id":116,"depth":157,"text":117,"children":1599},[1600,1601],{"id":124,"depth":218,"text":125},{"id":327,"depth":218,"text":328},{"id":355,"depth":157,"text":511},{"id":244,"depth":157,"text":1077},{"id":1572,"depth":157,"text":1573},"Explain the i18n contract, locale state, and translation composables.","md",null,{},{"title":47,"description":1605},"A164QdZEXw7IcVEUnqNpyu8ZYyZzlM-j_yYBaR5oCCQ",[1612,1614],{"title":43,"path":44,"stem":45,"description":1613,"children":-1},"Explain the router contract, path resolution, and route-aware navigation helpers.",{"title":51,"path":52,"stem":53,"description":1615,"children":-1},"Explain resource definitions, action paths, and the model behind route-aware controllers.",1778513971989]