master
 1// This file was auto-generated by 'typesafe-i18n'. Any manual changes will be overwritten.
 2/* eslint-disable */
 3
 4import { i18n as initI18n, i18nObject as initI18nObject, i18nString as initI18nString } from 'typesafe-i18n'
 5import type { LocaleDetector } from 'typesafe-i18n/detectors'
 6import type { LocaleTranslationFunctions, TranslateByString } from 'typesafe-i18n'
 7import { detectLocale as detectLocaleFn } from 'typesafe-i18n/detectors'
 8import { initExtendDictionary } from 'typesafe-i18n/utils'
 9import type { Formatters, Locales, Namespaces, Translations, TranslationFunctions } from './i18n-types.js'
10
11export const baseLocale: Locales = 'en'
12
13export const locales: Locales[] = [
14	'en',
15	'zh-CN',
16	'zh-TW'
17]
18
19export const namespaces: Namespaces[] = [
20	'cli',
21	'web'
22]
23
24export const isLocale = (locale: string): locale is Locales => locales.includes(locale as Locales)
25
26export const isNamespace = (namespace: string): namespace is Namespaces => namespaces.includes(namespace as Namespaces)
27
28export const loadedLocales: Record<Locales, Translations> = {} as Record<Locales, Translations>
29
30export const loadedFormatters: Record<Locales, Formatters> = {} as Record<Locales, Formatters>
31
32export const extendDictionary = initExtendDictionary<Translations>()
33
34export const i18nString = (locale: Locales): TranslateByString => initI18nString<Locales, Formatters>(locale, loadedFormatters[locale])
35
36export const i18nObject = (locale: Locales): TranslationFunctions =>
37	initI18nObject<Locales, Translations, TranslationFunctions, Formatters>(
38		locale,
39		loadedLocales[locale],
40		loadedFormatters[locale]
41	)
42
43export const i18n = (): LocaleTranslationFunctions<Locales, Translations, TranslationFunctions> =>
44	initI18n<Locales, Translations, TranslationFunctions, Formatters>(loadedLocales, loadedFormatters)
45
46export const detectLocale = (...detectors: LocaleDetector[]): Locales => detectLocaleFn<Locales>(baseLocale, locales, ...detectors)