UNPKG

pretur.i18n

Version:
38 lines (37 loc) 1.39 kB
export interface Bundle<K extends string = string, D = any> { key: K; data?: D; } export interface StringBuilder<D = any> { (data?: D): string; } export interface StringBuilders { constant(str: string): StringBuilder<undefined>; callback<D>(callback: (data?: D) => string): StringBuilder<D>; messageFormat<D>(formatString: string): StringBuilder<D>; } export declare type Definition<T> = { [P in keyof T]: StringBuilder<T[P]>; }; export interface Locale<T> { locale: string; definition: (builders: StringBuilders) => Definition<T>; } export declare function buildLocale<T>(locale: string, definition: (stringBuilders: StringBuilders) => Definition<T>): Locale<T>; export declare type Keys<T> = { [P in keyof T]: P; }; export interface Bundler<T> { <K extends keyof T>(key: K, data?: T[K]): Bundle<K, T[K]>; } export interface Formatter<T> { <K extends keyof T>(key: K, data?: T[K]): string; <K extends keyof T>(bundle: Bundle<K, T[K]>): string; } export interface Internationalization<T> { keys: Keys<T>; bundle: Bundler<T>; buildFormatter(locale: string): Formatter<T>; } export declare function internationalize<T>(main: Locale<T>, ...alts: Locale<Partial<T>>[]): Internationalization<T>; export declare function combine<T1, T2>(i18n1: Internationalization<T1>, i18n2: Internationalization<T2>): Internationalization<T1 & T2>;