main
ts 22 lines 675 Bytes
Raw
1 import type { I18nOptions } from "vue-i18n"
2 import type { RecursiveKeyOf } from "@/types/utils"
3 import * as locales from "./locales"
4
5 export type LocaleCodes = keyof typeof locales
6 export type MessageSchema = (typeof locales)[LocaleCodes]
7 export type I18nString = RecursiveKeyOf<MessageSchema>
8
9 export function getI18NConf() {
10 const localesEntries = Object.entries<MessageSchema>(locales)
11
12 const messages = localesEntries.reduce((acc: { [key: string]: MessageSchema }, cur: [string, MessageSchema]) => {
13 acc[cur[0]] = cur[1]
14 return acc
15 }, {}) as { [key in LocaleCodes]: MessageSchema }
16
17 return {
18 legacy: false,
19 locale: "en",
20 messages
21 } satisfies I18nOptions
22 }