mirror of
https://github.com/pengzhanbo/vuepress-theme-plume.git
synced 2026-04-23 10:58:13 +08:00
48 lines
1.0 KiB
TypeScript
48 lines
1.0 KiB
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
|
|
}
|
|
|
|
/**
|
|
* Create a translate instance with specified language
|
|
*
|
|
* 创建指定语言的翻译实例
|
|
*
|
|
* @param lang - Language code / 语言代码
|
|
* @returns Translate interface / 翻译接口
|
|
*/
|
|
function createTranslate(lang?: Langs): Translate {
|
|
let current: Langs = lang || 'en-US'
|
|
|
|
return {
|
|
setLang: (lang) => {
|
|
current = lang
|
|
},
|
|
t: key => locales[current][key],
|
|
}
|
|
}
|
|
|
|
const translate = createTranslate()
|
|
|
|
/**
|
|
* Get translated string by key
|
|
*
|
|
* 根据键获取翻译后的字符串
|
|
*
|
|
* @param key - Locale key / 本地化键名
|
|
* @returns Translated string / 翻译后的字符串
|
|
*/
|
|
export const t: Translate['t'] = translate.t
|
|
|
|
/**
|
|
* Set current language
|
|
*
|
|
* 设置当前语言
|
|
*
|
|
* @param lang - Language code to set / 要设置的语言代码
|
|
*/
|
|
export const setLang: Translate['setLang'] = translate.setLang
|