UNPKG

@shelchin/svelte-i18n

Version:

The last Svelte i18n library you'll ever need. Type-safe, AI-powered, zero-config.

64 lines (63 loc) 2.09 kB
/** * Global configuration manager for i18n * Allows packages to inherit configuration from the main app */ class ConfigManager { configs = new Map(); mainConfig = null; /** * Register a configuration * @param namespace - The namespace (use 'app' for main application) * @param config - The i18n configuration * @param isMain - Whether this is the main app configuration */ register(namespace, config, isMain = false) { this.configs.set(namespace, config); if (isMain || namespace === 'app') { this.mainConfig = config; } } /** * Get configuration for a namespace * Packages will inherit from main app config if available */ getConfig(namespace) { // If requesting package config and main app exists, merge configs if (namespace !== 'app' && this.mainConfig) { const packageConfig = this.configs.get(namespace); if (packageConfig) { // Merge with main config (main config takes precedence for shared settings) return { ...packageConfig, defaultLocale: this.mainConfig.defaultLocale, fallbackLocale: this.mainConfig.fallbackLocale, interpolation: this.mainConfig.interpolation || packageConfig.interpolation, formats: this.mainConfig.formats || packageConfig.formats, // Keep package namespace namespace: packageConfig.namespace }; } } return this.configs.get(namespace) || null; } /** * Get the main app configuration */ getMainConfig() { return this.mainConfig; } /** * Check if a namespace is registered */ has(namespace) { return this.configs.has(namespace); } /** * Clear all configurations (useful for testing) */ clear() { this.configs.clear(); this.mainConfig = null; } } export const configManager = new ConfigManager();