@jupri-lab/i18n-core
Version:
Speak Easy. Effortless Internationalization for Your JavaScript Apps
46 lines (40 loc) • 1.1 kB
text/typescript
export 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;
}
export type TNestedKeyOf<T extends object> = {
[Key in keyof T]: T[Key] extends object ? TNestedKeyOf<T[Key]> : Key;
};
export type ILooseObject = Record<string, any>;
export interface IEventListener<T extends any[]> {
(...args: T): void;
}
export 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;
}
export type TEvents = "language_changed";