多语言兼容

This commit is contained in:
tangly
2022-11-07 19:01:32 +08:00
parent 8e395ab4ee
commit efcc350bcb

View File

@@ -3,7 +3,7 @@ import enUS from './lang/en-US'
import zhHK from './lang/zh-HK' import zhHK from './lang/zh-HK'
import zhTW from './lang/zh-TW' import zhTW from './lang/zh-TW'
import frFR from '@/lib/lang/fr-FR' import frFR from '@/lib/lang/fr-FR'
import { isBrowser, mergeDeep } from './utils' import { getQueryVariable, isBrowser, mergeDeep } from './utils'
const lang = { const lang = {
'en-US': enUS, 'en-US': enUS,
@@ -21,27 +21,23 @@ export default lang
*/ */
export function generateLocaleDict(langString) { export function generateLocaleDict(langString) {
let userLocale = lang['en-US'] let userLocale = lang['en-US']
if (!langString) {
return userLocale switch (langString.toLowerCase()) {
} case 'zh-cn':
if (langString.slice(0, 2).toLowerCase() === 'zh') { case 'zh-sg':
switch (langString.toLowerCase()) { userLocale = lang['zh-CN']
case 'zh-cn': break
case 'zh-sg': case 'zh-hk':
userLocale = lang['zh-CN'] userLocale = lang['zh-HK']
break break
case 'zh-hk': case 'zh-tw':
userLocale = lang['zh-HK'] userLocale = lang['zh-TW']
break break
case 'zh-tw': case 'fr-fr':
userLocale = lang['zh-TW'] userLocale = lang['fr-FR']
break break
case 'fr-fr': default:
userLocale = lang['fr-FR'] userLocale = lang['en-US']
break
default:
userLocale = lang['zh-CN']
}
} }
return mergeDeep({}, lang['en-US'], userLocale) return mergeDeep({}, lang['en-US'], userLocale)
} }
@@ -52,7 +48,9 @@ export function generateLocaleDict(langString) {
*/ */
export function initLocale(locale, changeLocale) { export function initLocale(locale, changeLocale) {
if (isBrowser()) { 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)) { if (JSON.stringify(locale) !== JSON.stringify(targetLocale)) {
changeLocale(targetLocale) changeLocale(targetLocale)
} }