i18n.ts 652 Bytes
import { createI18n } from 'vue-i18n'
import en from '../locales/en'
import zh from '../locales/zh'

function getStoredLocale() {
  try {
    if (typeof uni !== 'undefined' && uni.getStorageSync) {
      return uni.getStorageSync('language') || 'en'
    }
  } catch (_) {}
  return 'en'
}

const i18n = createI18n({
  legacy: false,
  locale: getStoredLocale(),
  fallbackLocale: 'en',
  messages: { en, zh },
})

export function getLocale(): string {
  return uni.getStorageSync('language') || 'en'
}

export function setLocale(locale: 'en' | 'zh') {
  uni.setStorageSync('language', locale)
  i18n.global.locale.value = locale
}

export default i18n