'f'
mh-two-thousand-and-two
2024-04-12 26f2711ef9461961fb953e2b497bd314ef95e345
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import {
  invoke
} from 'uni-core/service/bridge'
import {
  i18n
} from 'uni-helpers/i18n'
import {
  UNI_STORAGE_LOCALE
} from 'uni-helpers/constants'
 
export function getLocale () {
  // 优先使用 $locale
  const app = getApp({
    allowDefault: true
  })
  if (app && app.$vm) {
    return app.$vm.$locale
  }
  return i18n.getLocale()
}
 
export function setLocale (locale) {
  const oldLocale = getApp().$vm.$locale
  if (oldLocale !== locale) {
    getApp().$vm.$locale = locale
    if (__PLATFORM__ === 'app-plus') {
      const pages = getCurrentPages()
      pages.forEach((page) => {
        UniServiceJSBridge.publishHandler(
          'setLocale',
          locale,
          page.$page.id
        )
      })
      weex.requireModule('plus').setLanguage(locale)
    }
    if (__PLATFORM__ === 'h5') {
      navigator.cookieEnabled && window.localStorage && (localStorage[UNI_STORAGE_LOCALE] = locale)
    }
    callbacks.forEach(callbackId => {
      invoke(callbackId, { locale })
    })
    return true
  }
  return false
}
const callbacks = []
export function onLocaleChange (callbackId) {
  callbacks.push(callbackId)
}