| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /**
- * index
- * @author: oldj
- * @homepage: https://oldj.net
- */
- import en from './languages/en'
- import zh from './languages/zh'
- import fr from './languages/fr'
- import de from './languages/de'
- import { LanguageDict, LanguageKey } from '@root/common/types'
- export const languages = {
- en,
- zh,
- cn: zh,
- 'zh-CN': zh,
- fr,
- de,
- }
- export type LocaleName = keyof typeof languages
- export class I18N {
- locale: LocaleName
- lang: LanguageDict
- constructor(locale: LocaleName = 'en') {
- this.locale = locale
- const _this = this
- this.lang = new Proxy(
- {},
- {
- get(obj, key: LanguageKey) {
- return _this.trans(key)
- },
- },
- ) as LanguageDict
- }
- trans(key: LanguageKey, words?: string[]) {
- let lang = languages[this.locale]
- let s: string = ''
- if (key in lang) {
- s = lang[key].toString()
- }
- if (words) {
- words.map((w, idx) => {
- let reg = new RegExp(`\{\s*${idx}\s*}`)
- s = s.replace(reg, w)
- })
- }
- return s
- }
- }
|