24 lines
532 B
TypeScript
24 lines
532 B
TypeScript
import type { Langs, Locale } from './types.js'
|
|
import { locales } from './locales/index.js'
|
|
|
|
interface Translate {
|
|
setLang: (lang: Langs) => void
|
|
t: (key: keyof Locale) => string
|
|
}
|
|
|
|
function createTranslate(lang?: Langs): Translate {
|
|
let current: Langs = lang || 'en-US'
|
|
|
|
return {
|
|
setLang: (lang) => {
|
|
current = lang
|
|
},
|
|
t: key => locales[current][key],
|
|
}
|
|
}
|
|
|
|
const translate = createTranslate()
|
|
|
|
export const t: Translate['t'] = translate.t
|
|
export const setLang: Translate['setLang'] = translate.setLang
|