From efcc350bcb2990cb5f04c2a3da3d8d0a3e51f325 Mon Sep 17 00:00:00 2001 From: tangly Date: Mon, 7 Nov 2022 19:01:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/lang.js | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/lib/lang.js b/lib/lang.js index ea78fc2c..a3a2a65d 100644 --- a/lib/lang.js +++ b/lib/lang.js @@ -3,7 +3,7 @@ import enUS from './lang/en-US' import zhHK from './lang/zh-HK' import zhTW from './lang/zh-TW' import frFR from '@/lib/lang/fr-FR' -import { isBrowser, mergeDeep } from './utils' +import { getQueryVariable, isBrowser, mergeDeep } from './utils' const lang = { 'en-US': enUS, @@ -21,27 +21,23 @@ export default lang */ export function generateLocaleDict(langString) { let userLocale = lang['en-US'] - if (!langString) { - return userLocale - } - if (langString.slice(0, 2).toLowerCase() === 'zh') { - switch (langString.toLowerCase()) { - case 'zh-cn': - case 'zh-sg': - userLocale = lang['zh-CN'] - break - case 'zh-hk': - userLocale = lang['zh-HK'] - break - case 'zh-tw': - userLocale = lang['zh-TW'] - break - case 'fr-fr': - userLocale = lang['fr-FR'] - break - default: - userLocale = lang['zh-CN'] - } + + switch (langString.toLowerCase()) { + case 'zh-cn': + case 'zh-sg': + userLocale = lang['zh-CN'] + break + case 'zh-hk': + userLocale = lang['zh-HK'] + break + case 'zh-tw': + userLocale = lang['zh-TW'] + break + case 'fr-fr': + userLocale = lang['fr-FR'] + break + default: + userLocale = lang['en-US'] } return mergeDeep({}, lang['en-US'], userLocale) } @@ -52,7 +48,9 @@ export function generateLocaleDict(langString) { */ export function initLocale(locale, changeLocale) { if (isBrowser()) { - const targetLocale = generateLocaleDict(window.navigator.language) + const browserLocale = window.navigator.language + const queryLocale = getQueryVariable('lang') + const targetLocale = generateLocaleDict(queryLocale || browserLocale) if (JSON.stringify(locale) !== JSON.stringify(targetLocale)) { changeLocale(targetLocale) }