Files
ipal-kit/dist/modules/i18n/validation.js
T
2026-07-31 23:21:51 +02:00

30 lines
1.2 KiB
JavaScript

const LOCALE_CODE_PATTERN = /^[a-z]{2,3}(-[A-Z]{2})?$/;
/**
* Validates i18n config at plugin initialization.
* Throws descriptive errors — fail fast, no silent defaults.
*/ export function validateI18nConfig(config) {
const { defaultLocale, locales } = config;
if (!locales?.length) {
throw new Error('[ipal] i18n: "locales" must contain at least one locale.');
}
const codes = new Set();
for (const locale of locales){
if (!locale.code || !locale.label) {
throw new Error(`[ipal] i18n: Every locale must have "code" and "label". Received: ${JSON.stringify(locale)}`);
}
if (!LOCALE_CODE_PATTERN.test(locale.code)) {
throw new Error(`[ipal] i18n: Invalid locale code "${locale.code}". Expected format: "pl", "en", "pt-BR".`);
}
if (codes.has(locale.code)) {
throw new Error(`[ipal] i18n: Duplicate locale code "${locale.code}".`);
}
codes.add(locale.code);
}
if (!codes.has(defaultLocale)) {
throw new Error(`[ipal] i18n: defaultLocale "${defaultLocale}" not found in locales [${[
...codes
].join(', ')}].`);
}
}
//# sourceMappingURL=validation.js.map