30 lines
1.7 KiB
TypeScript
30 lines
1.7 KiB
TypeScript
export type Kind = "string" | "boolean" | "integer" | "number";
|
|
export interface Pattern { text?: string; literal?: boolean; select?: string; plural?: string; cases?: Record<string, Pattern>; }
|
|
export interface Message { params?: Record<string, Kind>; value: Pattern; }
|
|
export interface Document { version: 1; namespace: string; locale: string; messages: Record<string, Message>; }
|
|
export interface Configuration { sourceLocale: string; defaultLocale: string; locales: string[]; fallbacks?: Record<string, string[]>; }
|
|
export interface Pack {
|
|
version: 1;
|
|
locale: string;
|
|
config: Configuration;
|
|
documents: Document[];
|
|
ruleVersion: "cldr-46.1";
|
|
pluralRules: Record<string, Partial<Record<"zero" | "one" | "two" | "few" | "many", string>>>;
|
|
license?: string;
|
|
}
|
|
export interface Rendered { text: string; locale: string; requested: string; fallback: boolean; }
|
|
export interface Localizer {
|
|
readonly locale: string;
|
|
readonly locales: readonly string[];
|
|
render(namespace: string, key: string, params?: Record<string, unknown>): Rendered;
|
|
t(namespace: string, key: string, params?: Record<string, unknown>): string;
|
|
}
|
|
export class MessageError extends Error { readonly kind: string; constructor(kind: string, problem: string); }
|
|
export function createLocalizer(pack: Pack): Localizer;
|
|
export function overlayPack(pack: Pack, overrides: Document[]): Pack;
|
|
export function createLanguageController(initialPack: Pack, loadPack: (locale: string) => Promise<Pack>): {
|
|
readonly current: Localizer;
|
|
setLanguage(locale: string): Promise<boolean>;
|
|
};
|
|
export function fetchPack(url: string | URL, options?: { signal?: AbortSignal; fetch?: typeof globalThis.fetch }): Promise<Pack>;
|