[{"data":1,"prerenderedAt":1096},["ShallowReactive",2],{"toc-zh-\u002Fguide\u002Fuse-locale":3,"page-zh-\u002Fguide\u002Fuse-locale":647},{"id":4,"title":5,"body":6,"description":640,"extension":641,"meta":642,"navigation":392,"path":643,"seo":644,"stem":645,"__hash__":646},"content_zh\u002Fguide\u002Fuse-locale.md","useLocale",{"type":7,"value":8,"toc":630},"minimark",[9,17,22,35,38,127,130,201,204,460,463,470,503,513,517,549,559,562,577,595,598,626],[10,11,12,16],"p",{},[13,14,15],"strong",{},"本章目标","：学会获取和切换当前语言，理解语言变更后字典数据如何自动刷新。",[18,19,21],"h2",{"id":20},"什么时候需要这个功能","什么时候需要这个功能？",[23,24,25,29,32],"ul",{},[26,27,28],"li",{},"应用需要支持中英文切换",[26,30,31],{},"用户切换语言后，下拉框的选项文字跟着变成目标语言",[26,33,34],{},"需要语言切换按钮",[18,36,37],{"id":37},"完整签名",[39,40,45],"pre",{"className":41,"code":42,"language":43,"meta":44,"style":44},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","useLocale(): {\n  locale: Ref\u003Cstring>\n  setLocale: (newLocale: string) => void\n  locales: string[]\n}\n","ts","",[46,47,48,64,86,115,121],"code",{"__ignoreMap":44},[49,50,53,56,60],"span",{"class":51,"line":52},"line",1,[49,54,5],{"class":55},"s2Zo4",[49,57,59],{"class":58},"sTEyZ","(): ",[49,61,63],{"class":62},"sMK4o","{\n",[49,65,67,71,74,77,80,83],{"class":51,"line":66},2,[49,68,70],{"class":69},"swJcz","  locale",[49,72,73],{"class":62},":",[49,75,76],{"class":58}," Ref",[49,78,79],{"class":62},"\u003C",[49,81,82],{"class":58},"string",[49,84,85],{"class":62},">\n",[49,87,89,92,95,99,101,105,108,112],{"class":51,"line":88},3,[49,90,91],{"class":58},"  setLocale: ",[49,93,94],{"class":62},"(",[49,96,98],{"class":97},"sHdIc","newLocale",[49,100,73],{"class":62},[49,102,104],{"class":103},"sBMFI"," string",[49,106,107],{"class":62},")",[49,109,111],{"class":110},"spNyl"," =>",[49,113,114],{"class":62}," void\n",[49,116,118],{"class":51,"line":117},4,[49,119,120],{"class":58},"  locales: string[]\n",[49,122,124],{"class":51,"line":123},5,[49,125,126],{"class":62},"}\n",[18,128,129],{"id":129},"返回值",[131,132,133,149],"table",{},[134,135,136],"thead",{},[137,138,139,143,146],"tr",{},[140,141,142],"th",{},"属性",[140,144,145],{},"类型",[140,147,148],{},"说明",[150,151,152,171,186],"tbody",{},[137,153,154,160,165],{},[155,156,157],"td",{},[46,158,159],{},"locale",[155,161,162],{},[46,163,164],{},"Ref\u003Cstring>",[155,166,167,168],{},"当前语言代码，如 ",[46,169,170],{},"'zh-CN'",[137,172,173,178,183],{},[155,174,175],{},[46,176,177],{},"setLocale",[155,179,180],{},[46,181,182],{},"(newLocale: string) => void",[155,184,185],{},"切换语言，更新 Cookie 并清空字典缓存",[137,187,188,193,198],{},[155,189,190],{},[46,191,192],{},"locales",[155,194,195],{},[46,196,197],{},"string[]",[155,199,200],{},"支持的语言列表",[18,202,203],{"id":203},"基础示例",[39,205,209],{"className":206,"code":207,"language":208,"meta":44,"style":44},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Ctemplate>\n  \u003Cdiv>\n    \u003Cp>当前语言：{{ locale }}\u003C\u002Fp>\n    \u003Cbutton\n      @click=\"setLocale('zh-CN')\"\n      :style=\"{ fontWeight: locale === 'zh-CN' ? 'bold' : 'normal' }\"\n    >\n      中文\n    \u003C\u002Fbutton>\n    \u003Cbutton\n      @click=\"setLocale('en-US')\"\n      :style=\"{ fontWeight: locale === 'en-US' ? 'bold' : 'normal' }\"\n    >\n      English\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup lang=\"ts\">\nconst { locale, setLocale } = useLocale();\n\u003C\u002Fscript>\n","vue",[46,210,211,220,230,250,257,275,290,296,302,313,320,334,348,353,359,368,378,387,394,418,451],{"__ignoreMap":44},[49,212,213,215,218],{"class":51,"line":52},[49,214,79],{"class":62},[49,216,217],{"class":69},"template",[49,219,85],{"class":62},[49,221,222,225,228],{"class":51,"line":66},[49,223,224],{"class":62},"  \u003C",[49,226,227],{"class":69},"div",[49,229,85],{"class":62},[49,231,232,235,237,240,243,246,248],{"class":51,"line":88},[49,233,234],{"class":62},"    \u003C",[49,236,10],{"class":69},[49,238,239],{"class":62},">",[49,241,242],{"class":58},"当前语言：{{ locale }}",[49,244,245],{"class":62},"\u003C\u002F",[49,247,10],{"class":69},[49,249,85],{"class":62},[49,251,252,254],{"class":51,"line":117},[49,253,234],{"class":62},[49,255,256],{"class":69},"button\n",[49,258,259,262,265,268,272],{"class":51,"line":123},[49,260,261],{"class":110},"      @click",[49,263,264],{"class":62},"=",[49,266,267],{"class":62},"\"",[49,269,271],{"class":270},"sfazB","setLocale('zh-CN')",[49,273,274],{"class":62},"\"\n",[49,276,278,281,283,285,288],{"class":51,"line":277},6,[49,279,280],{"class":110},"      :style",[49,282,264],{"class":62},[49,284,267],{"class":62},[49,286,287],{"class":270},"{ fontWeight: locale === 'zh-CN' ? 'bold' : 'normal' }",[49,289,274],{"class":62},[49,291,293],{"class":51,"line":292},7,[49,294,295],{"class":62},"    >\n",[49,297,299],{"class":51,"line":298},8,[49,300,301],{"class":58},"      中文\n",[49,303,305,308,311],{"class":51,"line":304},9,[49,306,307],{"class":62},"    \u003C\u002F",[49,309,310],{"class":69},"button",[49,312,85],{"class":62},[49,314,316,318],{"class":51,"line":315},10,[49,317,234],{"class":62},[49,319,256],{"class":69},[49,321,323,325,327,329,332],{"class":51,"line":322},11,[49,324,261],{"class":110},[49,326,264],{"class":62},[49,328,267],{"class":62},[49,330,331],{"class":270},"setLocale('en-US')",[49,333,274],{"class":62},[49,335,337,339,341,343,346],{"class":51,"line":336},12,[49,338,280],{"class":110},[49,340,264],{"class":62},[49,342,267],{"class":62},[49,344,345],{"class":270},"{ fontWeight: locale === 'en-US' ? 'bold' : 'normal' }",[49,347,274],{"class":62},[49,349,351],{"class":51,"line":350},13,[49,352,295],{"class":62},[49,354,356],{"class":51,"line":355},14,[49,357,358],{"class":58},"      English\n",[49,360,362,364,366],{"class":51,"line":361},15,[49,363,307],{"class":62},[49,365,310],{"class":69},[49,367,85],{"class":62},[49,369,371,374,376],{"class":51,"line":370},16,[49,372,373],{"class":62},"  \u003C\u002F",[49,375,227],{"class":69},[49,377,85],{"class":62},[49,379,381,383,385],{"class":51,"line":380},17,[49,382,245],{"class":62},[49,384,217],{"class":69},[49,386,85],{"class":62},[49,388,390],{"class":51,"line":389},18,[49,391,393],{"emptyLinePlaceholder":392},true,"\n",[49,395,397,399,402,405,408,410,412,414,416],{"class":51,"line":396},19,[49,398,79],{"class":62},[49,400,401],{"class":69},"script",[49,403,404],{"class":110}," setup",[49,406,407],{"class":110}," lang",[49,409,264],{"class":62},[49,411,267],{"class":62},[49,413,43],{"class":270},[49,415,267],{"class":62},[49,417,85],{"class":62},[49,419,421,424,427,430,433,436,439,442,445,448],{"class":51,"line":420},20,[49,422,423],{"class":110},"const",[49,425,426],{"class":62}," {",[49,428,429],{"class":58}," locale",[49,431,432],{"class":62},",",[49,434,435],{"class":58}," setLocale ",[49,437,438],{"class":62},"}",[49,440,441],{"class":62}," =",[49,443,444],{"class":55}," useLocale",[49,446,447],{"class":58},"()",[49,449,450],{"class":62},";\n",[49,452,454,456,458],{"class":51,"line":453},21,[49,455,245],{"class":62},[49,457,401],{"class":69},[49,459,85],{"class":62},[18,461,462],{"id":462},"语言检测机制",[10,464,465,466,469],{},"配置 ",[46,467,468],{},"dict.locale.source"," 定义语言来源：",[23,471,472,484,492],{},[26,473,474,480,481],{},[13,475,476,479],{},[46,477,478],{},"'cookie'","（默认）"," — 从 cookie 读取，默认 key 为 ",[46,482,483],{},"i18n_redirected",[26,485,486,491],{},[13,487,488],{},[46,489,490],{},"'header'"," — 从请求头读取（仅服务端）",[26,493,494,499,500],{},[13,495,496],{},[46,497,498],{},"'query'"," — 从 URL 参数读取，默认 key 为 ",[46,501,502],{},"lang",[10,504,505,506,509,510,512],{},"如果检测不到，使用 ",[46,507,508],{},"locale.default","（默认 ",[46,511,170],{},"）。",[18,514,516],{"id":515},"切换语言后发生了什么","切换语言后发生了什么？",[518,519,520,525,528,534],"ol",{},[26,521,522,524],{},[46,523,159],{}," 值更新",[26,526,527],{},"Cookie 同步更新",[26,529,530,533],{},[13,531,532],{},"所有字典的内存缓存被清空","（不同语言数据不同）",[26,535,536,537,540,541,544,545,548],{},"使用 ",[46,538,539],{},"useDict"," \u002F ",[46,542,543],{},"useDictTree"," 的组件",[13,546,547],{},"自动重新加载","对应语言的字典数据",[550,551,552],"blockquote",{},[10,553,554,555,558],{},"不需要手动刷新字典！组件检测到数据变成 ",[46,556,557],{},"null"," 后会自动发起新请求。",[18,560,561],{"id":561},"注意事项",[550,563,564],{},[10,565,566,567,540,569,540,571,544,573,576],{},"语言切换后，使用 ",[46,568,539],{},[46,570,543],{},[46,572,539],{},[13,574,575],{},"会自动重取","对应语言的字典数据，无需手动刷新或额外写 watch 代码。",[550,578,579],{},[10,580,581,582,585,586,588,589,594],{},"如果你使用的是 ",[46,583,584],{},"@nuxtjs\u002Fi18n","，两个模块通过共享同一个 cookie（默认 ",[46,587,483],{},"）自动同步语言。详见 ",[590,591,593],"a",{"href":592},"\u002Fintegration\u002Fi18n","i18n 国际化","。",[18,596,597],{"id":597},"本章你学会了",[23,599,602,614,620],{"className":600},[601],"contains-task-list",[26,603,606,610,611,613],{"className":604},[605],"task-list-item",[607,608],"input",{"disabled":392,"type":609},"checkbox"," 用 ",[46,612,5],{}," 获取和切换当前语言",[26,615,617,619],{"className":616},[605],[607,618],{"disabled":392,"type":609}," 理解三种语言检测来源",[26,621,623,625],{"className":622},[605],[607,624],{"disabled":392,"type":609}," 知道语言切换后字典缓存自动清空",[627,628,629],"style",{},"html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":44,"searchDepth":66,"depth":66,"links":631},[632,633,634,635,636,637,638,639],{"id":20,"depth":66,"text":21},{"id":37,"depth":66,"text":37},{"id":129,"depth":66,"text":129},{"id":203,"depth":66,"text":203},{"id":462,"depth":66,"text":462},{"id":515,"depth":66,"text":516},{"id":561,"depth":66,"text":561},{"id":597,"depth":66,"text":597},"多语言管理 —— 获取当前语言、切换语言并持久化到 Cookie。","md",{},"\u002Fguide\u002Fuse-locale",{"title":5,"description":640},"guide\u002Fuse-locale","ERKASsbjy4tMB877yYKLxKIvHRouESoUVGWIH3mFeqg",{"id":4,"title":5,"body":648,"description":640,"extension":641,"meta":1094,"navigation":392,"path":643,"seo":1095,"stem":645,"__hash__":646},{"type":7,"value":649,"toc":1084},[650,654,656,664,666,718,720,772,774,972,974,978,1002,1008,1010,1030,1036,1038,1050,1060,1062,1082],[10,651,652,16],{},[13,653,15],{},[18,655,21],{"id":20},[23,657,658,660,662],{},[26,659,28],{},[26,661,31],{},[26,663,34],{},[18,665,37],{"id":37},[39,667,668],{"className":41,"code":42,"language":43,"meta":44,"style":44},[46,669,670,678,692,710,714],{"__ignoreMap":44},[49,671,672,674,676],{"class":51,"line":52},[49,673,5],{"class":55},[49,675,59],{"class":58},[49,677,63],{"class":62},[49,679,680,682,684,686,688,690],{"class":51,"line":66},[49,681,70],{"class":69},[49,683,73],{"class":62},[49,685,76],{"class":58},[49,687,79],{"class":62},[49,689,82],{"class":58},[49,691,85],{"class":62},[49,693,694,696,698,700,702,704,706,708],{"class":51,"line":88},[49,695,91],{"class":58},[49,697,94],{"class":62},[49,699,98],{"class":97},[49,701,73],{"class":62},[49,703,104],{"class":103},[49,705,107],{"class":62},[49,707,111],{"class":110},[49,709,114],{"class":62},[49,711,712],{"class":51,"line":117},[49,713,120],{"class":58},[49,715,716],{"class":51,"line":123},[49,717,126],{"class":62},[18,719,129],{"id":129},[131,721,722,732],{},[134,723,724],{},[137,725,726,728,730],{},[140,727,142],{},[140,729,145],{},[140,731,148],{},[150,733,734,748,760],{},[137,735,736,740,744],{},[155,737,738],{},[46,739,159],{},[155,741,742],{},[46,743,164],{},[155,745,167,746],{},[46,747,170],{},[137,749,750,754,758],{},[155,751,752],{},[46,753,177],{},[155,755,756],{},[46,757,182],{},[155,759,185],{},[137,761,762,766,770],{},[155,763,764],{},[46,765,192],{},[155,767,768],{},[46,769,197],{},[155,771,200],{},[18,773,203],{"id":203},[39,775,776],{"className":206,"code":207,"language":208,"meta":44,"style":44},[46,777,778,786,794,810,816,828,840,844,848,856,862,874,886,890,894,902,910,918,922,942,964],{"__ignoreMap":44},[49,779,780,782,784],{"class":51,"line":52},[49,781,79],{"class":62},[49,783,217],{"class":69},[49,785,85],{"class":62},[49,787,788,790,792],{"class":51,"line":66},[49,789,224],{"class":62},[49,791,227],{"class":69},[49,793,85],{"class":62},[49,795,796,798,800,802,804,806,808],{"class":51,"line":88},[49,797,234],{"class":62},[49,799,10],{"class":69},[49,801,239],{"class":62},[49,803,242],{"class":58},[49,805,245],{"class":62},[49,807,10],{"class":69},[49,809,85],{"class":62},[49,811,812,814],{"class":51,"line":117},[49,813,234],{"class":62},[49,815,256],{"class":69},[49,817,818,820,822,824,826],{"class":51,"line":123},[49,819,261],{"class":110},[49,821,264],{"class":62},[49,823,267],{"class":62},[49,825,271],{"class":270},[49,827,274],{"class":62},[49,829,830,832,834,836,838],{"class":51,"line":277},[49,831,280],{"class":110},[49,833,264],{"class":62},[49,835,267],{"class":62},[49,837,287],{"class":270},[49,839,274],{"class":62},[49,841,842],{"class":51,"line":292},[49,843,295],{"class":62},[49,845,846],{"class":51,"line":298},[49,847,301],{"class":58},[49,849,850,852,854],{"class":51,"line":304},[49,851,307],{"class":62},[49,853,310],{"class":69},[49,855,85],{"class":62},[49,857,858,860],{"class":51,"line":315},[49,859,234],{"class":62},[49,861,256],{"class":69},[49,863,864,866,868,870,872],{"class":51,"line":322},[49,865,261],{"class":110},[49,867,264],{"class":62},[49,869,267],{"class":62},[49,871,331],{"class":270},[49,873,274],{"class":62},[49,875,876,878,880,882,884],{"class":51,"line":336},[49,877,280],{"class":110},[49,879,264],{"class":62},[49,881,267],{"class":62},[49,883,345],{"class":270},[49,885,274],{"class":62},[49,887,888],{"class":51,"line":350},[49,889,295],{"class":62},[49,891,892],{"class":51,"line":355},[49,893,358],{"class":58},[49,895,896,898,900],{"class":51,"line":361},[49,897,307],{"class":62},[49,899,310],{"class":69},[49,901,85],{"class":62},[49,903,904,906,908],{"class":51,"line":370},[49,905,373],{"class":62},[49,907,227],{"class":69},[49,909,85],{"class":62},[49,911,912,914,916],{"class":51,"line":380},[49,913,245],{"class":62},[49,915,217],{"class":69},[49,917,85],{"class":62},[49,919,920],{"class":51,"line":389},[49,921,393],{"emptyLinePlaceholder":392},[49,923,924,926,928,930,932,934,936,938,940],{"class":51,"line":396},[49,925,79],{"class":62},[49,927,401],{"class":69},[49,929,404],{"class":110},[49,931,407],{"class":110},[49,933,264],{"class":62},[49,935,267],{"class":62},[49,937,43],{"class":270},[49,939,267],{"class":62},[49,941,85],{"class":62},[49,943,944,946,948,950,952,954,956,958,960,962],{"class":51,"line":420},[49,945,423],{"class":110},[49,947,426],{"class":62},[49,949,429],{"class":58},[49,951,432],{"class":62},[49,953,435],{"class":58},[49,955,438],{"class":62},[49,957,441],{"class":62},[49,959,444],{"class":55},[49,961,447],{"class":58},[49,963,450],{"class":62},[49,965,966,968,970],{"class":51,"line":453},[49,967,245],{"class":62},[49,969,401],{"class":69},[49,971,85],{"class":62},[18,973,462],{"id":462},[10,975,465,976,469],{},[46,977,468],{},[23,979,980,988,994],{},[26,981,982,480,986],{},[13,983,984,479],{},[46,985,478],{},[46,987,483],{},[26,989,990,491],{},[13,991,992],{},[46,993,490],{},[26,995,996,499,1000],{},[13,997,998],{},[46,999,498],{},[46,1001,502],{},[10,1003,505,1004,509,1006,512],{},[46,1005,508],{},[46,1007,170],{},[18,1009,516],{"id":515},[518,1011,1012,1016,1018,1022],{},[26,1013,1014,524],{},[46,1015,159],{},[26,1017,527],{},[26,1019,1020,533],{},[13,1021,532],{},[26,1023,536,1024,540,1026,544,1028,548],{},[46,1025,539],{},[46,1027,543],{},[13,1029,547],{},[550,1031,1032],{},[10,1033,554,1034,558],{},[46,1035,557],{},[18,1037,561],{"id":561},[550,1039,1040],{},[10,1041,566,1042,540,1044,540,1046,544,1048,576],{},[46,1043,539],{},[46,1045,543],{},[46,1047,539],{},[13,1049,575],{},[550,1051,1052],{},[10,1053,581,1054,585,1056,588,1058,594],{},[46,1055,584],{},[46,1057,483],{},[590,1059,593],{"href":592},[18,1061,597],{"id":597},[23,1063,1065,1072,1077],{"className":1064},[601],[26,1066,1068,610,1070,613],{"className":1067},[605],[607,1069],{"disabled":392,"type":609},[46,1071,5],{},[26,1073,1075,619],{"className":1074},[605],[607,1076],{"disabled":392,"type":609},[26,1078,1080,625],{"className":1079},[605],[607,1081],{"disabled":392,"type":609},[627,1083,629],{},{"title":44,"searchDepth":66,"depth":66,"links":1085},[1086,1087,1088,1089,1090,1091,1092,1093],{"id":20,"depth":66,"text":21},{"id":37,"depth":66,"text":37},{"id":129,"depth":66,"text":129},{"id":203,"depth":66,"text":203},{"id":462,"depth":66,"text":462},{"id":515,"depth":66,"text":516},{"id":561,"depth":66,"text":561},{"id":597,"depth":66,"text":597},{},{"title":5,"description":640},1782551379290]