yyzone
Version:
yyzone vue components and utils
60 lines (56 loc) • 1.78 kB
JavaScript
import yDiwork from './diwork'
export function getNavigatorLang() {
const navigatorLang = {
'zh': 'zhs',
'zh-cn': 'zhs',
'zh-tw': 'zht',
'zh-hk': 'zht',
'zh-mo': 'zht',
'zh-chs': 'zht',
'zh-sg': 'zht',
'zh-cht': 'zht',
'default': 'en'
}
const lang = (navigator.language || navigator.userLanguage || 'zh').toLocaleLowerCase()
return navigatorLang[lang] || navigatorLang.default
}
export function getMobileLang() {
const navigatorLang = getNavigatorLang()
const mobileLang = {
tw: 'zht',
en: 'en',
zh: 'zhs',
default: navigatorLang || 'zhs'
}
const ua = navigator.userAgent
const uaLanguage = ua.match(/youZoneLanguage=(\w*)/)
return mobileLang[uaLanguage && uaLanguage[1] || 'default'] || mobileLang.default
}
export function getWebLang(callback) {
const navigatorLang = getNavigatorLang()
const webLang = {
'zh_tw': 'zht',
'zh_cn': 'zhs',
'en': 'en',
'en_us': 'en',
'default': navigatorLang || 'zhs'
}
return new Promise(resolve => {
try {
yDiwork().getContext(function (res) {
if(res && res.locale) {
const yDiworkLang = res.locale || ''
const lang = webLang[yDiworkLang.toLocaleLowerCase() || 'default'] || webLang.default
callback && callback(lang)
resolve(lang)
} else {
callback && callback(webLang.default)
resolve(webLang.default)
}
})
} catch (error) {
callback && callback(webLang.default)
resolve(webLang.default)
}
})
}