From c5890bd5f23177ab7493b35cb2544292ea50e76a Mon Sep 17 00:00:00 2001 From: Julian Freeman Date: Wed, 25 Mar 2026 12:28:12 -0400 Subject: [PATCH] combine gender and tone with srclang --- src/stores/settings.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/stores/settings.ts b/src/stores/settings.ts index 6e5bbee..5d09a22 100644 --- a/src/stores/settings.ts +++ b/src/stores/settings.ts @@ -1,4 +1,4 @@ -import { ref } from 'vue'; +import { ref, computed } from 'vue'; import { defineStore } from 'pinia'; import { useLocalStorage } from '@vueuse/core'; @@ -131,8 +131,19 @@ export const useSettingsStore = defineStore('settings', () => { const sourceLang = useLocalStorage('source-lang-v2', LANGUAGES[0]); const targetLang = useLocalStorage('target-lang-v2', LANGUAGES[4]); - const speakerIdentity = useLocalStorage('speaker-identity', SPEAKER_IDENTITY_OPTIONS[0].value); - const toneRegister = useLocalStorage('tone-register', TONE_REGISTER_OPTIONS[2].value); + // 按源语言分别存储身份和语气,实现基于语言自动切换 + const speakerIdentityMap = useLocalStorage>('speaker-identity-map', {}); + const toneRegisterMap = useLocalStorage>('tone-register-map', {}); + + const speakerIdentity = computed({ + get: () => speakerIdentityMap.value[sourceLang.value.code] || SPEAKER_IDENTITY_OPTIONS[0].value, + set: (val) => { speakerIdentityMap.value[sourceLang.value.code] = val; } + }); + + const toneRegister = computed({ + get: () => toneRegisterMap.value[sourceLang.value.code] || TONE_REGISTER_OPTIONS[2].value, + set: (val) => { toneRegisterMap.value[sourceLang.value.code] = val; } + }); const logs = ref<{ timestamp: string; type: 'request' | 'response' | 'error'; content: any }[]>([]);