20260903173038
This commit is contained in:
1 parent
c8940f6e03
commit
0faf44cffc
55 files changed
+3278
-208
No files matched your search
@@ -0,0 +1,37 @@
|
||||
import { computed, readonly, ref } from 'vue'
|
||||
|
||||
// 翻译目录独立于 Pinia:组件、服务和非组件代码都可以复用,切换目录时保持响应式。
|
||||
const localeRef = ref('zh-CN')
|
||||
const messagesRef = ref({})
|
||||
|
||||
export function translate(key, fallback = '') {
|
||||
const normalizedKey = String(key || '')
|
||||
const value = messagesRef.value[normalizedKey]
|
||||
if (value !== undefined && value !== null && String(value) !== '') return String(value)
|
||||
return fallback || normalizedKey
|
||||
}
|
||||
|
||||
export function setLocale(locale) {
|
||||
localeRef.value = String(locale || '')
|
||||
}
|
||||
|
||||
export function setMessages(messages, locale = undefined) {
|
||||
messagesRef.value = messages && typeof messages === 'object' ? { ...messages } : {}
|
||||
if (locale !== undefined) setLocale(locale)
|
||||
}
|
||||
|
||||
export function clearMessages() {
|
||||
messagesRef.value = {}
|
||||
}
|
||||
|
||||
export function useI18n() {
|
||||
return {
|
||||
locale: readonly(localeRef),
|
||||
messages: readonly(messagesRef),
|
||||
t: translate,
|
||||
setLocale,
|
||||
setMessages,
|
||||
clearMessages,
|
||||
localeValue: computed(() => localeRef.value),
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user