UNPKG

@infomaximum/localization

Version:
45 lines (44 loc) 1.6 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); getLanguage(): ELanguages; getBrowserLanguage(): ELanguages; getLocalized<L extends TLocalizationDescription, P extends ILocalizationProps = TExtractLocalizationParams<L>>(loc: L, props?: P): string; private getMaybeCapitalized; } export {};