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) }