1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 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,
- };
- }
|