import { createI18n } from 'vue-i18n'
|
import zhHans from './locale/zh-Hans'
|
import zhHant from './locale/zh-Hant'
|
import pt from './locale/pt'
|
|
const i18n = createI18n({
|
legacy: false,
|
globalInjection: true,
|
locale: uni.getStorageSync('language') || 'zh-Hans',
|
fallbackLocale: 'zh-Hans',
|
messages: {
|
'zh-Hans': zhHans,
|
'zh-Hant': zhHant,
|
'pt': pt
|
},
|
missing: (locale, key) => {
|
console.warn(`[i18n] Missing translation key: "${key}" for locale: "${locale}"`)
|
return key
|
},
|
fallbackWarn: false,
|
missingWarn: process.env.NODE_ENV === 'development'
|
})
|
|
export function setLanguage(locale) {
|
i18n.global.locale.value = locale
|
uni.setStorageSync('language', locale)
|
|
const tabBarTexts = [
|
i18n.global.t('tabbar.home'),
|
i18n.global.t('tabbar.appointment'),
|
i18n.global.t('tabbar.my')
|
]
|
|
tabBarTexts.forEach((text, index) => {
|
uni.setTabBarItem({
|
index,
|
text
|
})
|
})
|
|
const pages = getCurrentPages()
|
const currentPage = pages[pages.length - 1]
|
if (currentPage?.route) {
|
const titleKey = currentPage.$page?.navigationBarTitleText
|
if (titleKey) {
|
uni.setNavigationBarTitle({
|
title: i18n.global.t(titleKey)
|
})
|
}
|
}
|
}
|
|
export default i18n
|