From 748709d402cdfbee4148a22a8fff9ee292901b76 Mon Sep 17 00:00:00 2001 From: hejin Date: Mon, 28 Jul 2025 23:52:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=B4=E9=83=A8=E5=AF=BC=E8=88=AA=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=B8=AD=E8=8B=B1=E6=96=87=E5=88=87=E6=8D=A2=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/image/icon/language.png | Bin 0 -> 1619 bytes components/header.vue | 6 ++++++ locales/en.json | 3 ++- locales/zh.json | 3 ++- middleware/i18n.js | 4 +++- store/index.js | 1 + 6 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 assets/image/icon/language.png diff --git a/assets/image/icon/language.png b/assets/image/icon/language.png new file mode 100644 index 0000000000000000000000000000000000000000..288a43b56184912966f9ae6f9d56e1c8b92f1455 GIT binary patch literal 1619 zcmV-Z2CVssP)Px*4M{{nRCr$PTYIP!RT%$$GouMTQFqq+M+8z~5k1TvrchF1M$yjR3W{D*s0CJ# zSYePxg=8ifruHC7OlZ41TUK(#=muFzNLi_b6{4lhEQ%zAboZPuX0P|&-PyU$nQ?aS z-s{evbH3;AJLfy!c@YA>5$*0(Leg~vc_jl=2y|Hx-C+J>@Gk^xWoSR@8gK9JFn@?+ z5BZr4%YBK#PXjb6j=;g;;o}5aRqKo1TY;1Q5Q?OQ&nK2=t$G90P{@%&a2VM{GceL z*QwY-BioN$E@bH&0B2V*5N#2}kE6rft0HJnXxiP2bf&k!?2q^{T{EWs*D?C1FuO>z z+$RWlqneOc3p@Q-7<03<>z1<$pt)7{FlLE@xi-v3(k*8lK==0%GX4=7O+Y?%D2%yj z+Ox$r9sCCveKQvUFRRQ7WLU*L44zN{K&L2}w>FJ)iiQ|g@mB_4+)vIMgq^-GjGc7L zYm^&DVi4pok^u;JC$UV?T2 zh4k;r3^54nngjH9_coGP&Ok+$jclbYY%?2~OOc_z09fuj03KDeWk51b%Imv78MpmZ z3~KH^*WQVHyGe@OojV`zy|bQD`&(UBqIsst=_RBlaRU_AgcX zICKpMK&8rx<49bd76A1uh2x^D5>3N$r!vt3W{d~RkG*w>o^c-rFcBJ^UzQ>H0DzsM zV7@ny%(ylxtp$RFN6G=fJ`~#a4KRIu0br)r#-Lq9{5=>R0JR^ZQ%HUYpQasuW1|63 z32rqFVXerUvjPmST8)Ma4xUY#9{>Ov$;sXMaoZ}L^e@IvwB?w2H)(VM7hu1Wu<&-{*VJe*k;W^ zOh6CVENpXz&$(m1UQn~y(dZ%2#mrx;b^{`9udq|=2S|dUJ5nmnsn7)Jk39<{RS2nU z$f!7{Ws6S{^YUINnXpji%~!&LG;9Fy9MvuNBLH^;*aV`LBA@#Fv;rW^*gbhC%&(RT>1PrG!1)lMd&7iez&w`CDKylyPS=(F6^0Tggs;S3^^wUuWJFw6Ur(Ok&Rhv7Bx&QwxB4?g%wFn6cEg zdcbh+0Y=uDA|<91(TykRB31VT2BahGgAh3}^53mWg;1kT4V}c^fqP&`8 zXaJCP)_`et;sAJ?uqw59(u$+XOKMAQ$kqWt05GtF0B@_T@(arWSNrcnl4dzSSKS6D zDu{f_iW;SQ()$7M&JU!Ws=C3hG7aik_kI7FgLhAGH9&JJ95^a8T-!`HM3tOVm3beYU|~&E2*-(OKZ6fOiP)*rYHtdAY`#}ca1x|l1TIEOf`n_p zII{+T6CgCzV+jT?kal{hXIovT!Rl_*RF5Y5PJe=u*QxiivV^YMqpF_A6Dw=p4xJA@P}@Q5ypRXr!}A=~9_0gLJh3NGbw@EvMB36iVUN5C}k^ zl>-KQ>?WoEw9f(lRV@S0N!wf!2Jo;M0-mE<)}2R;6$D;hBI9-B$NU)v!2hhqhi*fs RC7}QS002ovPDHLkV1kgP*XaNN literal 0 HcmV?d00001 diff --git a/components/header.vue b/components/header.vue index db205f1..8ab3096 100644 --- a/components/header.vue +++ b/components/header.vue @@ -16,6 +16,9 @@ @keydown.enter="search" > + + + @@ -37,6 +40,9 @@ :alt="$t('common.menu')" @click="$refs.menuDrawerRef.drawer=true" /> + + + diff --git a/locales/en.json b/locales/en.json index af81e30..5d92806 100644 --- a/locales/en.json +++ b/locales/en.json @@ -31,7 +31,8 @@ "next": "Next", "prev": "Prev", "submitSuccess": "Submit success", - "fulltextsearch": "Full text search" + "fulltextsearch": "Full text search", + "language": "Language" }, "menu": { "Home": "Home", diff --git a/locales/zh.json b/locales/zh.json index 7818660..1f3d120 100644 --- a/locales/zh.json +++ b/locales/zh.json @@ -31,7 +31,8 @@ "next": "下一个", "prev": "上一个", "submitSuccess": "提交成功", - "fulltextsearch": "全站搜索" + "fulltextsearch": "全站搜索", + "language": "语言" }, "menu": { "Home": "首页", diff --git a/middleware/i18n.js b/middleware/i18n.js index 4a86ec3..64c0ac9 100644 --- a/middleware/i18n.js +++ b/middleware/i18n.js @@ -4,10 +4,11 @@ export default function ({ store, route, query, + $cookies, error, redirect }) { - const defaultLocale = app.i18n.fallbackLocale + const defaultLocale = $cookies.get('lang') || app.i18n.fallbackLocale if (isHMR) { return } @@ -15,6 +16,7 @@ export default function ({ if (!store.state.locales.includes(locale)) { return error({ message: 'This page could not be found.', statusCode: 404 }) } + store.commit('SET_LANG', locale) app.i18n.locale = store.state.locale diff --git a/store/index.js b/store/index.js index 4d6e24f..e87214d 100644 --- a/store/index.js +++ b/store/index.js @@ -16,6 +16,7 @@ export const mutations = { SET_LANG (state, locale) { if (state.locales.includes(locale)) { state.locale = locale + this.$cookies.set('lang', locale) } }, SET_FOOTER_INFO (state, info) {