wangzhibo
2026-08-30 c8515170fd399b4d2dfaebb59128d4674e58915e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import type { Ref } from 'vue'
import { defineStore } from 'pinia'
import { ref } from 'vue'
 
// 支持的语言类型
export type Language = 'zh_CN' | 'en' | 'zh_TW' | 'de' | 'vi' | 'pt_BR'
 
export interface LangStore {
  currentLang: Ref<Language>
  changeLang: (lang: Language) => void
}
 
export const useLangStore = defineStore(
  'lang',
  (): LangStore => {
    // 从本地存储获取语言设置,如果没有则使用默认值
    const savedLang = uni.getStorageSync('app_language') as Language | null
    const currentLang = ref<Language>(savedLang || 'zh_CN')
 
    // 切换语言
    const changeLang = (lang: Language) => {
      currentLang.value = lang
      // 将语言设置保存到本地存储
      uni.setStorageSync('app_language', lang)
    }
 
    return {
      currentLang,
      changeLang,
    }
  },
  {
    persist: {
      key: 'lang',
      serializer: {
        serialize: state => JSON.stringify(state.currentLang),
        deserialize: value => ({ currentLang: JSON.parse(value) }),
      },
    },
  },
)