UNPKG

@catchphrase/core

Version:

Functional i18n library for the web

30 lines (29 loc) 1.04 kB
export type LanguageCode = string | number | symbol; export type TranslationThunk<L extends LanguageCode, K extends object> = () => { [language in L]: K; }; export type CreateTranslationReturn<L extends LanguageCode, K extends object> = { /** * Returns the translations for the given language. */ selectLanguage: (languageCode: L) => K; /** * Returns all language codes. */ getLanguageCodes: () => L[]; /** * Returns the translations. */ getTranslations: () => K; }; export type Catchphrase<L extends LanguageCode> = { createTranslation: <K extends object>(translationThunk: TranslationThunk<L, K>) => CreateTranslationReturn<L, K>; getLanguage: () => LanguageCode; }; export type LanguageSelector<L extends LanguageCode> = () => L; export type CatchphraseConfig<L extends LanguageCode> = { languageSelector: LanguageSelector<L>; }; export type CreateTranslationConfig<L extends LanguageCode> = { languageSelector: LanguageSelector<L>; };