/** * Translation loader implementations with cache support. * * @module i18n/loader */ import type { TranslationLoader, TranslationNamespace } from './types.js'; /** * Fetch-based translation loader for client-side. * * Features: * - Memory cache with TTL (0ms dev, 1hr prod) * - Cache invalidation support for hot reload * - Concurrent request deduplication * - Proper error handling * * @example * ```typescript * const loader = new FetchTranslationLoader({ * baseUrl: '/locales', * supportedLocales: ['en', 'pt-BR', 'es'] * }); * * const translations = await loader.load('common', 'pt-BR'); * ``` */ export declare class FetchTranslationLoader implements TranslationLoader { private cache; private inflightRequests; private baseUrl; private supportedLocales; constructor(config: { baseUrl: string; supportedLocales: string[]; }); /** * Load a translation namespace for a locale. * Returns null if namespace doesn't exist. */ load(namespace: string, locale: string): Promise; /** * Preload multiple namespaces in parallel. */ preload(namespaces: string[], locale: string): Promise; /** * Invalidate cache for hot reload support. * Can invalidate specific namespace or all namespaces for a locale. */ invalidate(locale?: string, namespace?: string): void; /** * Fetch translations from server. */ private _fetchTranslations; } /** * Bundled translation loader for SSR. * * Uses static imports for bundler compatibility. * All translations are bundled with the application. * * @example * ```typescript * import enCommon from '../locales/en/common.json'; * import ptBRCommon from '../locales/pt-BR/common.json'; * * const loader = new BundledTranslationLoader({ * bundles: { * 'en': { common: enCommon }, * 'pt-BR': { common: ptBRCommon } * } * }); * ``` */ export declare class BundledTranslationLoader implements TranslationLoader { private bundles; constructor(config: { bundles: Record>; }); /** * Load a translation namespace for a locale. * Returns null if namespace doesn't exist. */ load(namespace: string, locale: string): Promise; /** * Preload multiple namespaces in parallel. * For bundled loader, this is a no-op since all translations are already loaded. */ preload(namespaces: string[], locale: string): Promise; } /** * Create a lazy translation loader using import.meta.glob. * * This is an alternative to BundledTranslationLoader that works with Vite's * glob imports for better tree-shaking. * * @example * ```typescript * const translationModules = import.meta.glob('../locales/**\/*.json'); * const loader = createGlobLoader(translationModules, ['en', 'pt-BR', 'es']); * ``` */ export declare function createGlobLoader(modules: Record Promise>, supportedLocales: string[]): TranslationLoader; //# sourceMappingURL=loader.d.ts.map