import { hasLocale } from 'next-intl'; import { getRequestConfig } from 'next-intl/server'; import { routing } from './routing'; async function loadTranslationType(type: string, locale: string) { try { return (await import(`./translations/${type}/${locale}.json`)).default; } catch { return (await import(`./translations/${type}/${routing.defaultLocale}.json`)).default; } } async function loadMessages(locale: string) { const resources = ['messages', 'pages', 'components', 'errors', 'form'].map((type) => { return loadTranslationType(type, locale); }); const loaded = await Promise.all(resources); return Object.assign({}, ...loaded); } export default getRequestConfig(async ({ requestLocale }) => { const requested = await requestLocale; const locale = hasLocale(routing.locales, requested) ? requested : routing.defaultLocale; const messages = await loadMessages(locale); return { locale, messages }; });