diff --git a/apps/mana/apps/web/src/lib/i18n/locales/broadcast/de.json b/apps/mana/apps/web/src/lib/i18n/locales/broadcast/de.json
new file mode 100644
index 000000000..cc4d2d8e4
--- /dev/null
+++ b/apps/mana/apps/web/src/lib/i18n/locales/broadcast/de.json
@@ -0,0 +1,51 @@
+{
+ "compose_view": {
+ "default_name": "Neue Kampagne",
+ "name_placeholder": "Kampagnen-Name",
+ "name_aria": "Kampagnen-Name",
+ "saved_at": "Gespeichert um {time}",
+ "action_close": "Schließen",
+ "action_save": "Speichern",
+ "action_saving": "Speichert …",
+ "step_recipients": "Empfänger",
+ "step_content": "Inhalt",
+ "step_check": "Check",
+ "step_send": "Senden",
+ "error_save_failed": "Speichern fehlgeschlagen",
+ "error_send_failed": "Versand fehlgeschlagen",
+ "label_subject": "Betreff *",
+ "placeholder_subject": "Neuer Newsletter",
+ "label_preheader": "Preheader",
+ "placeholder_preheader": "Kurzer Vorschautext, erscheint in Gmail neben dem Betreff",
+ "label_from_name": "Absender-Name *",
+ "label_from_email": "Absender-E-Mail *",
+ "editor_placeholder": "Schreib deinen Newsletter. Nutze Bilder, Überschriften und Links.",
+ "preflight_heading": "Vor dem Versand",
+ "check_subject_set": "gesetzt",
+ "check_subject_missing": "fehlt",
+ "check_subject_line": "Betreff {state}",
+ "check_recipients_line": "{n} Empfänger",
+ "check_recipients_no_match": "— kein Empfänger matched die Filter",
+ "check_sender_label": "Absender",
+ "check_legal_label": "Impressum",
+ "check_legal_missing": "— Pflicht laut DSGVO.",
+ "check_legal_link": "In Einstellungen ergänzen →",
+ "loading_settings": "Lade Einstellungen …",
+ "send_idle_heading": "Jetzt senden",
+ "send_idle_message_html": "{n} Empfänger erhalten die Kampagne „{subject}\" von {from}.",
+ "send_idle_hint": "Der Versand läuft synchron und dauert je nach Liste 10–60 Sekunden. Du siehst jede Mail in deinem „Gesendet\"-Ordner (pro Empfänger ein Eintrag).",
+ "send_action_back": "Zurück zum Check",
+ "send_action_send": "Jetzt an {n} Empfänger senden",
+ "confirm_heading": "Sicher?",
+ "confirm_message_html": "Die Kampagne geht an {n} Empfänger. Nach dem Versand kannst du nichts mehr ändern — wenn dir ein Fehler auffällt, musst du eine neue Kampagne als Korrektur schicken.",
+ "confirm_action_cancel": "Abbrechen",
+ "confirm_action_yes": "Ja, {n} Mails senden",
+ "sending_heading": "Versand läuft …",
+ "sending_message": "Wir schicken {n} Mails raus. Bitte Fenster offen lassen.",
+ "done_heading": "Versand abgeschlossen",
+ "done_delivered_html": "{n} Mails versendet",
+ "done_failed_html": "{n} Fehler",
+ "done_error_summary": "Fehler anzeigen ({n})",
+ "done_action_overview": "Zur Übersicht"
+ }
+}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/broadcast/en.json b/apps/mana/apps/web/src/lib/i18n/locales/broadcast/en.json
new file mode 100644
index 000000000..7627a18e5
--- /dev/null
+++ b/apps/mana/apps/web/src/lib/i18n/locales/broadcast/en.json
@@ -0,0 +1,51 @@
+{
+ "compose_view": {
+ "default_name": "New campaign",
+ "name_placeholder": "Campaign name",
+ "name_aria": "Campaign name",
+ "saved_at": "Saved at {time}",
+ "action_close": "Close",
+ "action_save": "Save",
+ "action_saving": "Saving…",
+ "step_recipients": "Recipients",
+ "step_content": "Content",
+ "step_check": "Check",
+ "step_send": "Send",
+ "error_save_failed": "Save failed",
+ "error_send_failed": "Send failed",
+ "label_subject": "Subject *",
+ "placeholder_subject": "New newsletter",
+ "label_preheader": "Preheader",
+ "placeholder_preheader": "Short preview text, appears next to the subject in Gmail",
+ "label_from_name": "From name *",
+ "label_from_email": "From email *",
+ "editor_placeholder": "Write your newsletter. Use images, headings and links.",
+ "preflight_heading": "Before sending",
+ "check_subject_set": "set",
+ "check_subject_missing": "missing",
+ "check_subject_line": "Subject {state}",
+ "check_recipients_line": "{n} recipients",
+ "check_recipients_no_match": "— no recipient matches the filter",
+ "check_sender_label": "Sender",
+ "check_legal_label": "Legal address",
+ "check_legal_missing": "— required by GDPR.",
+ "check_legal_link": "Add in settings →",
+ "loading_settings": "Loading settings…",
+ "send_idle_heading": "Send now",
+ "send_idle_message_html": "{n} recipients will get the campaign \"{subject}\" from {from}.",
+ "send_idle_hint": "Sending runs synchronously and takes 10–60 seconds depending on list size. You'll see every mail in your \"Sent\" folder (one entry per recipient).",
+ "send_action_back": "Back to check",
+ "send_action_send": "Send to {n} recipients now",
+ "confirm_heading": "Are you sure?",
+ "confirm_message_html": "The campaign will go to {n} recipients. You can't change anything after sending — if you spot a mistake, you'll have to send a corrective campaign.",
+ "confirm_action_cancel": "Cancel",
+ "confirm_action_yes": "Yes, send {n} mails",
+ "sending_heading": "Sending…",
+ "sending_message": "Sending {n} mails. Please keep the window open.",
+ "done_heading": "Sending complete",
+ "done_delivered_html": "{n} mails sent",
+ "done_failed_html": "{n} errors",
+ "done_error_summary": "Show errors ({n})",
+ "done_action_overview": "Back to overview"
+ }
+}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/broadcast/es.json b/apps/mana/apps/web/src/lib/i18n/locales/broadcast/es.json
new file mode 100644
index 000000000..776836921
--- /dev/null
+++ b/apps/mana/apps/web/src/lib/i18n/locales/broadcast/es.json
@@ -0,0 +1,51 @@
+{
+ "compose_view": {
+ "default_name": "Nueva campaña",
+ "name_placeholder": "Nombre de la campaña",
+ "name_aria": "Nombre de la campaña",
+ "saved_at": "Guardado a las {time}",
+ "action_close": "Cerrar",
+ "action_save": "Guardar",
+ "action_saving": "Guardando…",
+ "step_recipients": "Destinatarios",
+ "step_content": "Contenido",
+ "step_check": "Verificar",
+ "step_send": "Enviar",
+ "error_save_failed": "Error al guardar",
+ "error_send_failed": "Error al enviar",
+ "label_subject": "Asunto *",
+ "placeholder_subject": "Nuevo boletín",
+ "label_preheader": "Preheader",
+ "placeholder_preheader": "Texto breve de vista previa, aparece junto al asunto en Gmail",
+ "label_from_name": "Nombre del remitente *",
+ "label_from_email": "Correo del remitente *",
+ "editor_placeholder": "Redacta tu boletín. Usa imágenes, títulos y enlaces.",
+ "preflight_heading": "Antes del envío",
+ "check_subject_set": "definido",
+ "check_subject_missing": "falta",
+ "check_subject_line": "Asunto {state}",
+ "check_recipients_line": "{n} destinatarios",
+ "check_recipients_no_match": "— ningún destinatario coincide con el filtro",
+ "check_sender_label": "Remitente",
+ "check_legal_label": "Datos legales",
+ "check_legal_missing": "— obligatorio según RGPD.",
+ "check_legal_link": "Completar en ajustes →",
+ "loading_settings": "Cargando ajustes…",
+ "send_idle_heading": "Enviar ahora",
+ "send_idle_message_html": "{n} destinatarios recibirán la campaña «{subject}» de {from}.",
+ "send_idle_hint": "El envío es síncrono y tarda 10–60 segundos según la lista. Verás cada correo en tu carpeta «Enviados» (una entrada por destinatario).",
+ "send_action_back": "Volver a verificar",
+ "send_action_send": "Enviar ahora a {n} destinatarios",
+ "confirm_heading": "¿Seguro?",
+ "confirm_message_html": "La campaña irá a {n} destinatarios. Tras el envío no podrás cambiar nada — si detectas un error, tendrás que enviar una campaña correctiva.",
+ "confirm_action_cancel": "Cancelar",
+ "confirm_action_yes": "Sí, enviar {n} correos",
+ "sending_heading": "Enviando…",
+ "sending_message": "Enviando {n} correos. Mantén la ventana abierta.",
+ "done_heading": "Envío completado",
+ "done_delivered_html": "{n} correos enviados",
+ "done_failed_html": "{n} errores",
+ "done_error_summary": "Mostrar errores ({n})",
+ "done_action_overview": "A la vista general"
+ }
+}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/broadcast/fr.json b/apps/mana/apps/web/src/lib/i18n/locales/broadcast/fr.json
new file mode 100644
index 000000000..57fbc5878
--- /dev/null
+++ b/apps/mana/apps/web/src/lib/i18n/locales/broadcast/fr.json
@@ -0,0 +1,51 @@
+{
+ "compose_view": {
+ "default_name": "Nouvelle campagne",
+ "name_placeholder": "Nom de la campagne",
+ "name_aria": "Nom de la campagne",
+ "saved_at": "Enregistré à {time}",
+ "action_close": "Fermer",
+ "action_save": "Enregistrer",
+ "action_saving": "Enregistrement…",
+ "step_recipients": "Destinataires",
+ "step_content": "Contenu",
+ "step_check": "Vérification",
+ "step_send": "Envoi",
+ "error_save_failed": "Échec de l'enregistrement",
+ "error_send_failed": "Échec de l'envoi",
+ "label_subject": "Objet *",
+ "placeholder_subject": "Nouvelle newsletter",
+ "label_preheader": "Pré-en-tête",
+ "placeholder_preheader": "Court texte d'aperçu, apparaît à côté de l'objet dans Gmail",
+ "label_from_name": "Nom de l'expéditeur *",
+ "label_from_email": "E-mail de l'expéditeur *",
+ "editor_placeholder": "Rédige ta newsletter. Utilise images, titres et liens.",
+ "preflight_heading": "Avant l'envoi",
+ "check_subject_set": "défini",
+ "check_subject_missing": "manquant",
+ "check_subject_line": "Objet {state}",
+ "check_recipients_line": "{n} destinataires",
+ "check_recipients_no_match": "— aucun destinataire ne correspond au filtre",
+ "check_sender_label": "Expéditeur",
+ "check_legal_label": "Mentions légales",
+ "check_legal_missing": "— obligatoire selon le RGPD.",
+ "check_legal_link": "Compléter dans les paramètres →",
+ "loading_settings": "Chargement des paramètres…",
+ "send_idle_heading": "Envoyer maintenant",
+ "send_idle_message_html": "{n} destinataires recevront la campagne « {subject} » de {from}.",
+ "send_idle_hint": "L'envoi se fait de manière synchrone et prend 10 à 60 secondes selon la liste. Tu verras chaque message dans ton dossier « Envoyés » (une entrée par destinataire).",
+ "send_action_back": "Retour à la vérification",
+ "send_action_send": "Envoyer à {n} destinataires",
+ "confirm_heading": "Vraiment ?",
+ "confirm_message_html": "La campagne ira à {n} destinataires. Après envoi, plus rien n'est modifiable — en cas d'erreur, il faudra envoyer une campagne corrective.",
+ "confirm_action_cancel": "Annuler",
+ "confirm_action_yes": "Oui, envoyer {n} mails",
+ "sending_heading": "Envoi en cours…",
+ "sending_message": "Nous envoyons {n} mails. Garde la fenêtre ouverte.",
+ "done_heading": "Envoi terminé",
+ "done_delivered_html": "{n} mails envoyés",
+ "done_failed_html": "{n} erreurs",
+ "done_error_summary": "Afficher les erreurs ({n})",
+ "done_action_overview": "Retour à la vue d'ensemble"
+ }
+}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/broadcast/it.json b/apps/mana/apps/web/src/lib/i18n/locales/broadcast/it.json
new file mode 100644
index 000000000..4e446f7d1
--- /dev/null
+++ b/apps/mana/apps/web/src/lib/i18n/locales/broadcast/it.json
@@ -0,0 +1,51 @@
+{
+ "compose_view": {
+ "default_name": "Nuova campagna",
+ "name_placeholder": "Nome della campagna",
+ "name_aria": "Nome della campagna",
+ "saved_at": "Salvato alle {time}",
+ "action_close": "Chiudi",
+ "action_save": "Salva",
+ "action_saving": "Salvataggio…",
+ "step_recipients": "Destinatari",
+ "step_content": "Contenuto",
+ "step_check": "Verifica",
+ "step_send": "Invia",
+ "error_save_failed": "Salvataggio non riuscito",
+ "error_send_failed": "Invio non riuscito",
+ "label_subject": "Oggetto *",
+ "placeholder_subject": "Nuova newsletter",
+ "label_preheader": "Preheader",
+ "placeholder_preheader": "Breve testo di anteprima, appare accanto all'oggetto in Gmail",
+ "label_from_name": "Nome mittente *",
+ "label_from_email": "E-mail mittente *",
+ "editor_placeholder": "Scrivi la tua newsletter. Usa immagini, titoli e link.",
+ "preflight_heading": "Prima dell'invio",
+ "check_subject_set": "impostato",
+ "check_subject_missing": "mancante",
+ "check_subject_line": "Oggetto {state}",
+ "check_recipients_line": "{n} destinatari",
+ "check_recipients_no_match": "— nessun destinatario corrisponde al filtro",
+ "check_sender_label": "Mittente",
+ "check_legal_label": "Indirizzo legale",
+ "check_legal_missing": "— obbligatorio per GDPR.",
+ "check_legal_link": "Aggiungi nelle impostazioni →",
+ "loading_settings": "Caricamento impostazioni…",
+ "send_idle_heading": "Invia ora",
+ "send_idle_message_html": "{n} destinatari riceveranno la campagna «{subject}» da {from}.",
+ "send_idle_hint": "L'invio è sincrono e richiede 10–60 secondi a seconda della lista. Vedrai ogni mail nella cartella «Inviati» (una voce per destinatario).",
+ "send_action_back": "Torna alla verifica",
+ "send_action_send": "Invia ora a {n} destinatari",
+ "confirm_heading": "Sicuro?",
+ "confirm_message_html": "La campagna andrà a {n} destinatari. Dopo l'invio non potrai più modificare nulla — se trovi un errore, dovrai inviare una campagna correttiva.",
+ "confirm_action_cancel": "Annulla",
+ "confirm_action_yes": "Sì, invia {n} mail",
+ "sending_heading": "Invio in corso…",
+ "sending_message": "Stiamo inviando {n} mail. Tieni la finestra aperta.",
+ "done_heading": "Invio completato",
+ "done_delivered_html": "{n} mail inviate",
+ "done_failed_html": "{n} errori",
+ "done_error_summary": "Mostra errori ({n})",
+ "done_action_overview": "Torna alla panoramica"
+ }
+}