47 lines
1.0 KiB
JavaScript
Raw Normal View History

2025-06-30 09:38:03 +08:00
import {
getLangJson
} from '@/api/common';
import {
i18n
} from './setupI18n';
import messages from './index'
export function useLocale() {
function getBackLocale(locale) {
const backLocale = locale || uni.getLocale()
if (backLocale === 'zh-Hans') return 'zh-CN'
if (backLocale === 'zh-Hant') return 'zh-TW'
if (backLocale === 'en') return 'en-US'
return backLocale
}
async function changeLocale(locale) {
const defaultMessage = messages[locale] || {}
const res = await getLangJson(getBackLocale(locale));
if (!res || !res.data) return setLocale(locale, defaultMessage);
const message = JSON.parse(res.data);
setLocale(locale, {
...defaultMessage,
...message
})
return locale;
}
async function initLocale() {
const locale = uni.getLocale()
changeLocale(locale)
}
function setLocale(locale, message) {
const globalI18n = i18n.global;
globalI18n.setLocaleMessage(locale, message);
globalI18n.locale = locale
uni.setLocale(locale)
}
return {
changeLocale,
initLocale,
setLocale,
getBackLocale,
};
}