import { normalizeLocale, LOCALE_EN } from '../helpers/i18n/index' import { isFn } from 'uni-shared' export function getLocale () { // 优先使用 $locale if (isFn(getApp)) { const app = getApp({ allowDefault: true }) if (app && app.$vm) { return app.$vm.$locale } } return normalizeLocale(__GLOBAL__.getSystemInfoSync().language) || LOCALE_EN } export function setLocale (locale) { const app = isFn(getApp) ? getApp() : false if (!app) { return false } const oldLocale = app.$vm.$locale if (oldLocale !== locale) { app.$vm.$locale = locale onLocaleChangeCallbacks.forEach((fn) => fn({ locale })) return true } return false } const onLocaleChangeCallbacks = [] export function onLocaleChange (fn) { if (onLocaleChangeCallbacks.indexOf(fn) === -1) { onLocaleChangeCallbacks.push(fn) } } if (typeof global !== 'undefined') { global.getLocale = getLocale }