更新ts类型导入导出语法
This commit is contained in:
+13
-11
@@ -1,22 +1,24 @@
|
||||
import { App, ref } from 'vue'
|
||||
import { messages, Messages, Message } from './index'
|
||||
|
||||
import { messages } from './index'
|
||||
import type { Messages, Message } from './index'
|
||||
|
||||
type TranslateValues = Record<string, string | number | boolean>
|
||||
|
||||
type Langs = keyof Messages
|
||||
|
||||
export declare interface I18n {
|
||||
locale: keyof Messages
|
||||
fallbackLocale: keyof Messages
|
||||
availableLocales: Array<keyof Messages>
|
||||
locale: Langs
|
||||
fallbackLocale: Langs
|
||||
availableLocales: Langs[]
|
||||
messages: Messages
|
||||
message: Message
|
||||
setLanguage: (locale: string) => void
|
||||
setLanguage: (locale: Langs) => void
|
||||
fillMessage: (message: string, val: TranslateValues) => string
|
||||
getMessage: (key: keyof Message, val?: TranslateValues) => string
|
||||
t: (key: keyof Message, val?: TranslateValues) => string
|
||||
}
|
||||
|
||||
const locale = ref('zh-cn')
|
||||
const locale = ref<Langs>('zh-cn')
|
||||
|
||||
let i18n: I18n
|
||||
|
||||
@@ -47,7 +49,7 @@ const useI18n = () => {
|
||||
}
|
||||
}
|
||||
|
||||
const setLanguage = (lang: string) => {
|
||||
const setLanguage = (lang: Langs) => {
|
||||
i18n.setLanguage(lang)
|
||||
}
|
||||
|
||||
@@ -55,10 +57,10 @@ const createI18n = (): I18n => {
|
||||
return i18n = {
|
||||
locale: locale.value,
|
||||
fallbackLocale: 'zh-cn',
|
||||
availableLocales: Object.keys(messages),
|
||||
availableLocales: Object.keys(messages) as Langs[],
|
||||
messages,
|
||||
message: messages[locale.value],
|
||||
setLanguage(_locale: string) {
|
||||
setLanguage(_locale: Langs) {
|
||||
this.locale = _locale
|
||||
this.message = messages[_locale]
|
||||
locale.value = _locale
|
||||
@@ -74,7 +76,7 @@ const createI18n = (): I18n => {
|
||||
return val ? this.fillMessage(targetMessage, val) : targetMessage
|
||||
},
|
||||
t(key: keyof Message, val?: TranslateValues): string {
|
||||
trackReactivityValues()
|
||||
// trackReactivityValues()
|
||||
return this.getMessage(key, val)
|
||||
},
|
||||
}
|
||||
|
||||
+11
-15
@@ -6,20 +6,13 @@ type Message = Record<keyof typeof zh_cn, string>
|
||||
| Record<keyof typeof zh_tw, string>
|
||||
| Record<keyof typeof en_us, string>
|
||||
|
||||
interface Lang {
|
||||
name: string
|
||||
locale: string
|
||||
alternate?: string
|
||||
country: string
|
||||
fallback?: boolean
|
||||
message: Message
|
||||
}
|
||||
type Messages = Record<(typeof langs)[number]['locale'], Message>
|
||||
|
||||
const langs: Lang[] = [
|
||||
const langs = [
|
||||
{
|
||||
name: '简体中文',
|
||||
locale: 'zh-cn',
|
||||
alternate: 'zh-hans',
|
||||
// alternate: 'zh-hans',
|
||||
country: 'cn',
|
||||
fallback: true,
|
||||
message: zh_cn,
|
||||
@@ -27,7 +20,7 @@ const langs: Lang[] = [
|
||||
{
|
||||
name: '繁体中文',
|
||||
locale: 'zh-tw',
|
||||
alternate: 'zh-hk',
|
||||
// alternate: 'zh-hk',
|
||||
country: 'cn',
|
||||
message: zh_tw,
|
||||
},
|
||||
@@ -37,20 +30,20 @@ const langs: Lang[] = [
|
||||
country: 'us',
|
||||
message: en_us,
|
||||
},
|
||||
]
|
||||
] as const
|
||||
|
||||
const langList: Array<{
|
||||
name: string
|
||||
locale: string
|
||||
locale: keyof Messages
|
||||
alternate?: string
|
||||
}> = []
|
||||
type Messages = Record<string, Message>
|
||||
// @ts-expect-error
|
||||
const messages: Messages = {}
|
||||
langs.forEach(item => {
|
||||
langList.push({
|
||||
name: item.name,
|
||||
locale: item.locale,
|
||||
alternate: item.alternate,
|
||||
// alternate: item.alternate,
|
||||
})
|
||||
messages[item.locale] = item.message
|
||||
})
|
||||
@@ -58,6 +51,9 @@ langs.forEach(item => {
|
||||
export {
|
||||
langList,
|
||||
messages,
|
||||
}
|
||||
|
||||
export type {
|
||||
Messages,
|
||||
Message,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user