import { getLocalizedMessage } from '@/lib/i18n-loader'; import type { NavTranslations, FooterTranslations, ContactTranslations, ConsentTranslations, } from '@/types/translations'; /** * Lädt alle Translations für eine Section aus Directus * Nutzt optimierte Batch-Abfragen wo möglich */ export async function getNavTranslations(locale: string): Promise { const [home, about, projects, contact] = await Promise.all([ getLocalizedMessage('nav.home', locale), getLocalizedMessage('nav.about', locale), getLocalizedMessage('nav.projects', locale), getLocalizedMessage('nav.contact', locale), ]); return { home, about, projects, contact }; } export async function getFooterTranslations(locale: string): Promise { const [ role, madeIn, legalNotice, privacyPolicy, privacySettings, privacySettingsTitle, builtWith ] = await Promise.all([ getLocalizedMessage('footer.role', locale), getLocalizedMessage('footer.madeIn', locale), getLocalizedMessage('footer.legalNotice', locale), getLocalizedMessage('footer.privacyPolicy', locale), getLocalizedMessage('footer.privacySettings', locale), getLocalizedMessage('footer.privacySettingsTitle', locale), getLocalizedMessage('footer.builtWith', locale), ]); return { role, madeIn, legalNotice, privacyPolicy, privacySettings, privacySettingsTitle, builtWith, }; } export async function getContactTranslations(locale: string): Promise { const keys = [ 'home.contact.title', 'home.contact.subtitle', 'home.contact.getInTouch', 'home.contact.getInTouchBody', 'home.contact.form.title', 'home.contact.form.sending', 'home.contact.form.send', 'home.contact.form.placeholders.name', 'home.contact.form.placeholders.email', 'home.contact.form.placeholders.subject', 'home.contact.form.placeholders.message', 'home.contact.form.errors.nameRequired', 'home.contact.form.errors.nameMin', 'home.contact.form.errors.emailRequired', 'home.contact.form.errors.emailInvalid', 'home.contact.form.errors.subjectRequired', 'home.contact.form.errors.subjectMin', 'home.contact.form.errors.messageRequired', 'home.contact.form.errors.messageMin', 'home.contact.form.characters', 'home.contact.info.email', 'home.contact.info.location', 'home.contact.info.locationValue', ]; const values = await Promise.all(keys.map(key => getLocalizedMessage(key, locale))); return { title: values[0], subtitle: values[1], getInTouch: values[2], getInTouchBody: values[3], form: { title: values[4], sending: values[5], send: values[6], placeholders: { name: values[7], email: values[8], subject: values[9], message: values[10], }, errors: { nameRequired: values[11], nameMin: values[12], emailRequired: values[13], emailInvalid: values[14], subjectRequired: values[15], subjectMin: values[16], messageRequired: values[17], messageMin: values[18], }, characters: values[19], }, info: { email: values[20], location: values[21], locationValue: values[22], }, }; } export async function getConsentTranslations(locale: string): Promise { const [title, description, accept, decline] = await Promise.all([ getLocalizedMessage('consent.title', locale), getLocalizedMessage('consent.description', locale), getLocalizedMessage('consent.accept', locale), getLocalizedMessage('consent.decline', locale), ]); return { title, description, accept, decline }; }