UNPKG

@jupri-lab/i18n-core

Version:

Speak Easy. Effortless Internationalization for Your JavaScript Apps

51 lines (48 loc) 1.69 kB
interface Ii18nConfigs<TLanguage extends string, TResources extends object> { /** * Flag to enable adding query params for current language */ enableQueryParams?: boolean; /** * An array of languages that wants to be supported */ languages: TLanguage[]; /** * To read current language through query param */ queryParam?: string; resources: Record<TLanguage, TResources> | undefined; } type TNestedKeyOf<T extends object> = { [Key in keyof T]: T[Key] extends object ? TNestedKeyOf<T[Key]> : Key; }; type ILooseObject = Record<string, any>; interface IEventListener<T extends any[]> { (...args: T): void; } interface ITranslateOptions extends ILooseObject { escapeHTML?: boolean; /** * To add interpolation to you translation. * * @example * en: { * greeting: "Good [time]" * } * * translate("greeting", { interpolation: { time: "Morning" } }) // Good Morning */ interpolation?: ILooseObject; } type TEvents = "language_changed"; declare class i18n<TLanguage extends string, TResources extends object, TPredefinedEvents extends string = TEvents> { private languageManager; private eventManager; private translationManager; constructor(configs: Ii18nConfigs<TLanguage, TResources>); getCurrentLanguage(): TLanguage; getChangeLanguageHandler(language?: TLanguage): void; translate(identifier: string, data?: ITranslateOptions): any; on(eventName: TPredefinedEvents, callback: () => any): void; } export { type IEventListener, type ILooseObject, type ITranslateOptions, type Ii18nConfigs, type TEvents, type TNestedKeyOf, i18n as default };