import {Formats, hasLocale} from 'next-intl'
import {getRequestConfig} from 'next-intl/server'

import {routing} from './routing'

export const formats = {
	dateTime: {
		short: {
			day: 'numeric',
			month: 'short',
			year: 'numeric'
		}
	},
	number: {
		precise: {
			maximumFractionDigits: 2
		}
	},
	list: {
		enumeration: {
			style: 'long',
			type: 'conjunction'
		}
	}
} satisfies Formats

export default getRequestConfig(async ({requestLocale}) => {
	// Typically corresponds to the `[locale]` segment
	const requested = await requestLocale
	const locale = hasLocale(routing.locales, requested)
		? requested
		: routing.defaultLocale

	/**
	 * https://dev.to/hpouyanmehr/split-your-translations-in-next-intl-in-a-nice-way-4jof
	 * Split your translations in `next-intl` in a nice way!
	 */
	return {
		locale,
		messages: (await import(`../messages/${locale}.json`)).default
	}
})
