// Отдаёт 404 на пути с префиксом локали, которая поддерживается в коде, но // выключена на конкретном сайте (список включённых локалей — из SiteDataService). // Коды поддерживаемых локалей приходят из runtimeConfig.public.locales (задаёт проект). // Чистое решение вынесено в server/utils/is-locale-blocked.ts (покрыто тестами). import { SiteDataService } from '../../services/site-data.service'; import { isLocaleBlocked } from '../utils/is-locale-blocked'; export default defineEventHandler((event) => { const path = event.node.req.url || ''; const { codes, default: defaultCode } = useRuntimeConfig(event).public.locales; const nonDefaultCodes = codes.filter((code: string) => code !== defaultCode); const blocked = isLocaleBlocked( path, nonDefaultCodes, () => SiteDataService.getSiteLanguages().map(lang => lang.iso), ); if (blocked) { throw createError({ statusCode: 404, statusMessage: 'Not Found' }); } });