更新ts类型导入导出语法

This commit is contained in:
lyswhut
2022-11-25 23:01:39 +08:00
parent 5e9b3a16fa
commit 77ea6d3748
19 changed files with 527 additions and 513 deletions
+13 -11
View File
@@ -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
View File
@@ -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,
}