Files
Cli-Proxy-API-Management-Ce…/src/stores/useLanguageStore.ts

40 lines
928 B
TypeScript

/**
* 语言状态管理
* 从原项目 src/modules/language.js 迁移
*/
import { create } from 'zustand';
import { persist } from 'zustand/middleware';
import type { Language } from '@/types';
import { STORAGE_KEY_LANGUAGE } from '@/utils/constants';
import i18n from '@/i18n';
interface LanguageState {
language: Language;
setLanguage: (language: Language) => void;
toggleLanguage: () => void;
}
export const useLanguageStore = create<LanguageState>()(
persist(
(set, get) => ({
language: 'zh-CN',
setLanguage: (language) => {
// 切换 i18next 语言
i18n.changeLanguage(language);
set({ language });
},
toggleLanguage: () => {
const { language, setLanguage } = get();
const newLanguage: Language = language === 'zh-CN' ? 'en' : 'zh-CN';
setLanguage(newLanguage);
}
}),
{
name: STORAGE_KEY_LANGUAGE
}
)
);