import { ref } from 'vue' import { useI18n } from 'vue-i18n' // 创建全局状态,记录语言切换是否正在进行中 const isChangingLanguage = ref(false) export function useLanguageTransition() { const { locale } = useI18n() // 平滑切换语言的函数 function smoothSwitchLanguage(newLocale: string) { if (locale.value === newLocale) return // 标记切换开始 isChangingLanguage.value = true // // 保存当前滚动位置 // const scrollPosition = window.scrollY // 添加切换中的标记到body元素 document.body.setAttribute('i18n-in-progress', 'true') // 延迟执行实际的语言切换,让淡出动画有时间执行 setTimeout(() => { // 切换语言 locale.value = newLocale // 延迟恢复,让新语言内容有时间渲染 setTimeout(() => { // 移除切换中的标记 document.body.removeAttribute('i18n-in-progress') // // 恢复滚动位置 // window.scrollTo({ // top: scrollPosition, // behavior: 'auto' // }) // 标记切换结束 isChangingLanguage.value = false }, 50) // 调整此值以适应渲染速度 }, 300) // 与CSS过渡时间匹配 } return { isChangingLanguage, smoothSwitchLanguage } }