UNPKG

@infomaximum/localization

Version:
46 lines (45 loc) 1.8 kB
export declare enum ELanguages { ru = "ru", en = "en" } interface ICommonLocParams { capitalized?: boolean; lang?: ELanguages; } interface ITemplateLocParams<T> extends ICommonLocParams { templateData?: T; } interface IPluralLocParams extends ICommonLocParams { count: number; } export type TExtractLocalizationParams<T extends TLocalizationDescription> = T extends { [K in ELanguages]: (...args: infer P) => string; } ? ITemplateLocParams<P[0]> : T extends { [K in ELanguages]: TLocalizationPluralDescription; } ? IPluralLocParams : ICommonLocParams; export type TLocalizationFunctionalDescription = (...args: any[]) => string | TLocalizationPluralDescription; type TLocalizationPluralDescription = { s: string; p1: string; p2?: string; }; export type TLocalizationDescription = Record<ELanguages, string | TLocalizationFunctionalDescription | TLocalizationPluralDescription>; export type TLocalizationParams = { language: ELanguages; }; export interface ILocalizationProps extends Partial<ITemplateLocParams<unknown>>, Partial<IPluralLocParams> { } export declare class Localization { static Language: typeof ELanguages; private static PluralType; private static GetPlurableEn; private static GetPlurableRu; private language; constructor(params: TLocalizationParams); static getLocalizedTextSafe: <L extends TLocalizationDescription, P extends ILocalizationProps = TExtractLocalizationParams<L>>(language: ELanguages, locObj: L, props?: P | undefined) => string; getLanguage(): ELanguages; getBrowserLanguage(): ELanguages; getLocalized<L extends TLocalizationDescription, P extends ILocalizationProps = TExtractLocalizationParams<L>>(loc: L, props?: P): string; private getMaybeCapitalized; } export {};