From 98a9bc4dc5526fd47496f5d078226aa84981c384 Mon Sep 17 00:00:00 2001 From: Till JS Date: Mon, 27 Apr 2026 17:58:15 +0200 Subject: [PATCH] i18n(agents/templates): translate /agents/templates +page.svelte via $_() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds agents.templates namespace covering page title + back link, header sub copy, 2 section headings + descriptions, 4 chip variants (Agent/ Scene/Mission/Seeds with one/other plurals), detail no-agent role, 3 preview section headings (Scene-Layout/Starter-Missionen/Seeds), seed hint + count plurals + unnamed fallback, 5 cadence variants (manual/ daily/weekly/interval/cron) with interpolation, options section + 4 checkbox labels, result strings (existing/new agent + scene + mission active/paused + seed summary with/without failed), error fallback, apply-button states (applying / "Template „{label}" anwenden"). Baselines: hardcoded 968 → 961 (7 cleared); missing-keys baseline unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../web/src/lib/i18n/locales/agents/de.json | 49 ++++++ .../web/src/lib/i18n/locales/agents/en.json | 49 ++++++ .../web/src/lib/i18n/locales/agents/es.json | 49 ++++++ .../web/src/lib/i18n/locales/agents/fr.json | 49 ++++++ .../web/src/lib/i18n/locales/agents/it.json | 49 ++++++ .../(app)/agents/templates/+page.svelte | 152 ++++++++++++------ scripts/i18n-hardcoded-baseline.json | 1 - 7 files changed, 349 insertions(+), 49 deletions(-) create mode 100644 apps/mana/apps/web/src/lib/i18n/locales/agents/de.json create mode 100644 apps/mana/apps/web/src/lib/i18n/locales/agents/en.json create mode 100644 apps/mana/apps/web/src/lib/i18n/locales/agents/es.json create mode 100644 apps/mana/apps/web/src/lib/i18n/locales/agents/fr.json create mode 100644 apps/mana/apps/web/src/lib/i18n/locales/agents/it.json diff --git a/apps/mana/apps/web/src/lib/i18n/locales/agents/de.json b/apps/mana/apps/web/src/lib/i18n/locales/agents/de.json new file mode 100644 index 000000000..0f356952d --- /dev/null +++ b/apps/mana/apps/web/src/lib/i18n/locales/agents/de.json @@ -0,0 +1,49 @@ +{ + "templates": { + "page_title_html": "Templates — Mana", + "back": "Zurück zum Workbench", + "title": "Templates", + "sub": "Vorgefertigte Setups für deinen Workbench. Wähle ein Template und du hast in einem Klick eine passende Scene, optionale AI-Agenten und erste Daten in den richtigen Modulen.", + "section_agent_title": "🤖 Agent-Templates", + "section_agent_desc": "Benannte AI-Personas mit eigener Policy, Memory und Starter-Mission.", + "section_workbench_title": "🎨 Workbench-Templates", + "section_workbench_desc": "Starter-Kits ohne AI — Scene-Layout + vor-gefüllte Habits, Goals und Module-Daten. Du arbeitest selbst, das Template nimmt dir die Einrichtung ab.", + "chip_agent": "Agent", + "chip_scene": "Scene", + "chip_mission_one": "{n} Mission", + "chip_mission_other": "{n} Missionen", + "chip_seed_one": "{n} Seed", + "chip_seed_other": "{n} Seeds", + "detail_no_agent_role": "Workbench-Setup ohne AI-Agent", + "section_scene": "Scene-Layout", + "section_missions": "Starter-Missionen", + "section_seeds": "Seeds", + "seed_hint": "Vorgefüllte Einträge in deinen Modulen. Werden als neue Records angelegt; bestehende Einträge mit gleicher Seed-ID werden übersprungen (idempotent).", + "seed_count_one": "{n} Eintrag", + "seed_count_other": "{n} Einträge", + "seed_unnamed": "(unbenannt)", + "cadence_manual": "manuell auslösen", + "cadence_daily": "täglich {h}:{m}", + "cadence_weekly": "wöchentlich, Tag {day} um {h}:00", + "cadence_interval": "alle {n} Minuten", + "cadence_cron": "cron: {expression}", + "section_options": "Optionen", + "opt_create_scene": "Scene „{name}\" anlegen und direkt öffnen", + "opt_create_missions": "Starter-Mission(en) mit anlegen", + "opt_start_active": "Mission(en) sofort aktivieren (Standard: pausiert)", + "opt_apply_seeds": "Seed-Daten in Module einpflegen", + "result_existing_agent": "„{name}\" existierte schon — wiederverwendet.", + "result_new_agent": "Agent „{name}\" angelegt.", + "result_template_applied": "Template angewendet.", + "result_scene_created": "Scene angelegt + aktiviert.", + "result_missions_active": "{n} Mission{n, plural, one {} other {en}} aktiviert.", + "result_missions_paused": "{n} Mission{n, plural, one {} other {en}} pausiert angelegt.", + "result_seeds_summary_no_failed": "{created} Seed{created, plural, one {} other {s}} neu, {skipped} bereits vorhanden.", + "result_seeds_summary_with_failed": "{created} Seed{created, plural, one {} other {s}} neu, {skipped} bereits vorhanden, {failed} fehlgeschlagen.", + "result_action_pick_other": "Weiteres Template auswählen", + "result_action_workbench": "Zum Workbench", + "err_apply_failed": "Konnte Template nicht anwenden", + "action_applying": "Lege an…", + "action_apply_template": "Template „{label}\" anwenden" + } +} diff --git a/apps/mana/apps/web/src/lib/i18n/locales/agents/en.json b/apps/mana/apps/web/src/lib/i18n/locales/agents/en.json new file mode 100644 index 000000000..c9073ab45 --- /dev/null +++ b/apps/mana/apps/web/src/lib/i18n/locales/agents/en.json @@ -0,0 +1,49 @@ +{ + "templates": { + "page_title_html": "Templates — Mana", + "back": "Back to workbench", + "title": "Templates", + "sub": "Pre-configured setups for your workbench. Pick a template and you'll get a matching scene, optional AI agents, and starter data in the right modules — all in one click.", + "section_agent_title": "🤖 Agent templates", + "section_agent_desc": "Named AI personas with their own policy, memory, and starter mission.", + "section_workbench_title": "🎨 Workbench templates", + "section_workbench_desc": "Starter kits without AI — scene layout + pre-filled habits, goals, and module data. You work; the template handles the setup.", + "chip_agent": "Agent", + "chip_scene": "Scene", + "chip_mission_one": "{n} mission", + "chip_mission_other": "{n} missions", + "chip_seed_one": "{n} seed", + "chip_seed_other": "{n} seeds", + "detail_no_agent_role": "Workbench setup without AI agent", + "section_scene": "Scene layout", + "section_missions": "Starter missions", + "section_seeds": "Seeds", + "seed_hint": "Pre-filled entries in your modules. Created as new records; existing entries with the same seed ID are skipped (idempotent).", + "seed_count_one": "{n} entry", + "seed_count_other": "{n} entries", + "seed_unnamed": "(unnamed)", + "cadence_manual": "manual trigger", + "cadence_daily": "daily {h}:{m}", + "cadence_weekly": "weekly, day {day} at {h}:00", + "cadence_interval": "every {n} minutes", + "cadence_cron": "cron: {expression}", + "section_options": "Options", + "opt_create_scene": "Create scene \"{name}\" and open it", + "opt_create_missions": "Also create starter mission(s)", + "opt_start_active": "Activate mission(s) immediately (default: paused)", + "opt_apply_seeds": "Insert seed data into modules", + "result_existing_agent": "\"{name}\" already existed — reused.", + "result_new_agent": "Agent \"{name}\" created.", + "result_template_applied": "Template applied.", + "result_scene_created": "Scene created + activated.", + "result_missions_active": "{n} mission{n, plural, one {} other {s}} activated.", + "result_missions_paused": "{n} mission{n, plural, one {} other {s}} created (paused).", + "result_seeds_summary_no_failed": "{created} seed{created, plural, one {} other {s}} new, {skipped} already present.", + "result_seeds_summary_with_failed": "{created} seed{created, plural, one {} other {s}} new, {skipped} already present, {failed} failed.", + "result_action_pick_other": "Pick another template", + "result_action_workbench": "To workbench", + "err_apply_failed": "Couldn't apply template", + "action_applying": "Creating…", + "action_apply_template": "Apply template \"{label}\"" + } +} diff --git a/apps/mana/apps/web/src/lib/i18n/locales/agents/es.json b/apps/mana/apps/web/src/lib/i18n/locales/agents/es.json new file mode 100644 index 000000000..f21c8a40d --- /dev/null +++ b/apps/mana/apps/web/src/lib/i18n/locales/agents/es.json @@ -0,0 +1,49 @@ +{ + "templates": { + "page_title_html": "Templates — Mana", + "back": "Volver al workbench", + "title": "Templates", + "sub": "Configuraciones preestablecidas para tu workbench. Elige un template y obtén con un clic una escena adecuada, agentes IA opcionales y datos iniciales en los módulos correctos.", + "section_agent_title": "🤖 Templates de agente", + "section_agent_desc": "Personas IA con nombre, con su propia policy, memoria y mission inicial.", + "section_workbench_title": "🎨 Templates de workbench", + "section_workbench_desc": "Kits iniciales sin IA — layout de escena + habits, goals y datos de módulo preconfigurados. Tú trabajas, el template se encarga de la configuración.", + "chip_agent": "Agent", + "chip_scene": "Escena", + "chip_mission_one": "{n} mission", + "chip_mission_other": "{n} missions", + "chip_seed_one": "{n} seed", + "chip_seed_other": "{n} seeds", + "detail_no_agent_role": "Configuración de workbench sin agente IA", + "section_scene": "Layout de escena", + "section_missions": "Missions iniciales", + "section_seeds": "Seeds", + "seed_hint": "Entradas preconfiguradas en tus módulos. Se crean como nuevos registros; las entradas existentes con el mismo seed-ID se omiten (idempotente).", + "seed_count_one": "{n} entrada", + "seed_count_other": "{n} entradas", + "seed_unnamed": "(sin nombre)", + "cadence_manual": "disparador manual", + "cadence_daily": "diario {h}:{m}", + "cadence_weekly": "semanal, día {day} a las {h}:00", + "cadence_interval": "cada {n} minutos", + "cadence_cron": "cron: {expression}", + "section_options": "Opciones", + "opt_create_scene": "Crear escena «{name}» y abrirla", + "opt_create_missions": "Crear también mission(s) iniciales", + "opt_start_active": "Activar mission(s) de inmediato (por defecto: en pausa)", + "opt_apply_seeds": "Insertar datos seed en los módulos", + "result_existing_agent": "«{name}» ya existía — reutilizado.", + "result_new_agent": "Agent «{name}» creado.", + "result_template_applied": "Template aplicado.", + "result_scene_created": "Escena creada + activada.", + "result_missions_active": "{n} mission(s) activada(s).", + "result_missions_paused": "{n} mission(s) creada(s) en pausa.", + "result_seeds_summary_no_failed": "{created} seed{created, plural, one {} other {s}} nuevo(s), {skipped} ya presente(s).", + "result_seeds_summary_with_failed": "{created} seed{created, plural, one {} other {s}} nuevo(s), {skipped} ya presente(s), {failed} fallido(s).", + "result_action_pick_other": "Elegir otro template", + "result_action_workbench": "Al workbench", + "err_apply_failed": "No se pudo aplicar el template", + "action_applying": "Creando…", + "action_apply_template": "Aplicar template «{label}»" + } +} diff --git a/apps/mana/apps/web/src/lib/i18n/locales/agents/fr.json b/apps/mana/apps/web/src/lib/i18n/locales/agents/fr.json new file mode 100644 index 000000000..44b8b8f5b --- /dev/null +++ b/apps/mana/apps/web/src/lib/i18n/locales/agents/fr.json @@ -0,0 +1,49 @@ +{ + "templates": { + "page_title_html": "Templates — Mana", + "back": "Retour au workbench", + "title": "Templates", + "sub": "Configurations prêtes à l'emploi pour ton workbench. Choisis un template et obtiens en un clic une scène adaptée, des agents IA optionnels et des données initiales dans les bons modules.", + "section_agent_title": "🤖 Templates d'agent", + "section_agent_desc": "Personas IA nommés avec leur propre policy, mémoire et mission de départ.", + "section_workbench_title": "🎨 Templates de workbench", + "section_workbench_desc": "Kits de démarrage sans IA — scène + habitudes, objectifs et données de modules pré-remplis. Tu travailles toi-même, le template prend en charge la configuration.", + "chip_agent": "Agent", + "chip_scene": "Scène", + "chip_mission_one": "{n} mission", + "chip_mission_other": "{n} missions", + "chip_seed_one": "{n} seed", + "chip_seed_other": "{n} seeds", + "detail_no_agent_role": "Configuration de workbench sans agent IA", + "section_scene": "Mise en page de la scène", + "section_missions": "Missions de départ", + "section_seeds": "Seeds", + "seed_hint": "Entrées pré-remplies dans tes modules. Créées comme nouveaux enregistrements ; les entrées existantes avec le même seed-ID sont ignorées (idempotent).", + "seed_count_one": "{n} entrée", + "seed_count_other": "{n} entrées", + "seed_unnamed": "(sans nom)", + "cadence_manual": "déclenchement manuel", + "cadence_daily": "quotidien {h}:{m}", + "cadence_weekly": "hebdomadaire, jour {day} à {h}:00", + "cadence_interval": "toutes les {n} minutes", + "cadence_cron": "cron : {expression}", + "section_options": "Options", + "opt_create_scene": "Créer la scène « {name} » et l'ouvrir", + "opt_create_missions": "Créer aussi la/les mission(s) de départ", + "opt_start_active": "Activer la/les mission(s) tout de suite (défaut : en pause)", + "opt_apply_seeds": "Insérer les données seed dans les modules", + "result_existing_agent": "« {name} » existait déjà — réutilisé.", + "result_new_agent": "Agent « {name} » créé.", + "result_template_applied": "Template appliqué.", + "result_scene_created": "Scène créée + activée.", + "result_missions_active": "{n} mission{n, plural, one {} other {s}} activée(s).", + "result_missions_paused": "{n} mission{n, plural, one {} other {s}} créée(s) en pause.", + "result_seeds_summary_no_failed": "{created} seed{created, plural, one {} other {s}} nouvelle(s), {skipped} déjà présente(s).", + "result_seeds_summary_with_failed": "{created} seed{created, plural, one {} other {s}} nouvelle(s), {skipped} déjà présente(s), {failed} échec(s).", + "result_action_pick_other": "Choisir un autre template", + "result_action_workbench": "Vers le workbench", + "err_apply_failed": "Impossible d'appliquer le template", + "action_applying": "Création…", + "action_apply_template": "Appliquer le template « {label} »" + } +} diff --git a/apps/mana/apps/web/src/lib/i18n/locales/agents/it.json b/apps/mana/apps/web/src/lib/i18n/locales/agents/it.json new file mode 100644 index 000000000..0fdc61bf7 --- /dev/null +++ b/apps/mana/apps/web/src/lib/i18n/locales/agents/it.json @@ -0,0 +1,49 @@ +{ + "templates": { + "page_title_html": "Templates — Mana", + "back": "Torna al workbench", + "title": "Templates", + "sub": "Setup preconfigurati per il tuo workbench. Scegli un template e ottieni con un clic una scena adatta, agenti AI opzionali e dati iniziali nei moduli giusti.", + "section_agent_title": "🤖 Template Agent", + "section_agent_desc": "Persone AI con nome con policy, memoria e mission di partenza propria.", + "section_workbench_title": "🎨 Template Workbench", + "section_workbench_desc": "Kit iniziali senza AI — layout di scena + habits, goals e dati modulo precompilati. Lavori tu, il template si occupa della configurazione.", + "chip_agent": "Agent", + "chip_scene": "Scene", + "chip_mission_one": "{n} mission", + "chip_mission_other": "{n} mission", + "chip_seed_one": "{n} seed", + "chip_seed_other": "{n} seeds", + "detail_no_agent_role": "Setup workbench senza AI agent", + "section_scene": "Layout scena", + "section_missions": "Mission iniziali", + "section_seeds": "Seeds", + "seed_hint": "Voci precompilate nei tuoi moduli. Create come nuovi record; le voci esistenti con lo stesso seed-ID vengono saltate (idempotente).", + "seed_count_one": "{n} voce", + "seed_count_other": "{n} voci", + "seed_unnamed": "(senza nome)", + "cadence_manual": "trigger manuale", + "cadence_daily": "ogni giorno {h}:{m}", + "cadence_weekly": "settimanale, giorno {day} alle {h}:00", + "cadence_interval": "ogni {n} minuti", + "cadence_cron": "cron: {expression}", + "section_options": "Opzioni", + "opt_create_scene": "Crea la scena «{name}» e aprila", + "opt_create_missions": "Crea anche la/e mission iniziale/i", + "opt_start_active": "Attiva subito la/e mission (default: in pausa)", + "opt_apply_seeds": "Inserisci i dati seed nei moduli", + "result_existing_agent": "«{name}» esisteva già — riutilizzato.", + "result_new_agent": "Agent «{name}» creato.", + "result_template_applied": "Template applicato.", + "result_scene_created": "Scena creata + attivata.", + "result_missions_active": "{n} mission attivate.", + "result_missions_paused": "{n} mission create in pausa.", + "result_seeds_summary_no_failed": "{created} seed{created, plural, one {} other {s}} nuovi, {skipped} già presenti.", + "result_seeds_summary_with_failed": "{created} seed{created, plural, one {} other {s}} nuovi, {skipped} già presenti, {failed} falliti.", + "result_action_pick_other": "Scegli un altro template", + "result_action_workbench": "Al workbench", + "err_apply_failed": "Impossibile applicare il template", + "action_applying": "Creazione…", + "action_apply_template": "Applica template «{label}»" + } +} diff --git a/apps/mana/apps/web/src/routes/(app)/agents/templates/+page.svelte b/apps/mana/apps/web/src/routes/(app)/agents/templates/+page.svelte index 9e58c0158..d7b6cd510 100644 --- a/apps/mana/apps/web/src/routes/(app)/agents/templates/+page.svelte +++ b/apps/mana/apps/web/src/routes/(app)/agents/templates/+page.svelte @@ -14,6 +14,7 @@ import { ALL_TEMPLATES, type AgentTemplate } from '@mana/shared-ai'; import { applyTemplate } from '$lib/data/ai/agents/apply-template'; import { RoutePage } from '$lib/components/shell'; + import { _ } from 'svelte-i18n'; let selected = $state(null); const agentTemplates = ALL_TEMPLATES.filter( @@ -101,7 +102,7 @@ - Templates — Mana + {$_('agents.templates.page_title_html')} {#snippet templateCard(t: AgentTemplate)} @@ -116,14 +117,24 @@ {t.label} {t.tagline} - {#if t.agent}Agent{/if} - {#if t.scene}Scene{/if} + {#if t.agent}{$_('agents.templates.chip_agent')}{/if} + {#if t.scene}{$_('agents.templates.chip_scene')}{/if} {#if t.missions && t.missions.length > 0} - {t.missions.length} Mission{t.missions.length !== 1 ? 'en' : ''} + {t.missions.length === 1 + ? $_('agents.templates.chip_mission_one', { values: { n: t.missions.length } }) + : $_('agents.templates.chip_mission_other', { + values: { n: t.missions.length }, + })} {/if} {#if t.seeds} {@const total = Object.values(t.seeds).reduce((s, items) => s + items.length, 0)} - {total} Seed{total !== 1 ? 's' : ''} + {total === 1 + ? $_('agents.templates.chip_seed_one', { values: { n: total } }) + : $_('agents.templates.chip_seed_other', { values: { n: total } })} {/if} @@ -133,19 +144,18 @@
-

Templates

+

{$_('agents.templates.title')}

- Vorgefertigte Setups für deinen Workbench. Wähle ein Template und du hast in einem Klick - eine passende Scene, optionale AI-Agenten und erste Daten in den richtigen Modulen. + {$_('agents.templates.sub')}

-

🤖 Agent-Templates

-

Benannte AI-Personas mit eigener Policy, Memory und Starter-Mission.

+

{$_('agents.templates.section_agent_title')}

+

{$_('agents.templates.section_agent_desc')}

{#each agentTemplates as t (t.id)} @@ -156,10 +166,9 @@
-

🎨 Workbench-Templates

+

{$_('agents.templates.section_workbench_title')}

- Starter-Kits ohne AI — Scene-Layout + vor-gefüllte Habits, Goals und Module-Daten. Du - arbeitest selbst, das Template nimmt dir die Einrichtung ab. + {$_('agents.templates.section_workbench_desc')}

@@ -178,7 +187,7 @@ {#if selected.agent}

{selected.agent.role}

{:else} -

Workbench-Setup ohne AI-Agent

+

{$_('agents.templates.detail_no_agent_role')}

{/if}
@@ -187,7 +196,7 @@ {#if selected.scene}
-

Scene-Layout

+

{$_('agents.templates.section_scene')}

{selected.scene.name} {#if selected.scene.description} @@ -206,21 +215,32 @@ {#if selected.missions && selected.missions.length > 0}

-

Starter-Missionen

+

{$_('agents.templates.section_missions')}

    {#each selected.missions as m}
  • {m.title}

    {m.objective}

    - {#if m.cadence.kind === 'manual'}manuell auslösen - {:else if m.cadence.kind === 'daily'}täglich {m.cadence.atHour}:{String( - m.cadence.atMinute - ).padStart(2, '0')} - {:else if m.cadence.kind === 'weekly'}wöchentlich, Tag {m.cadence.dayOfWeek} um {m - .cadence.atHour}:00 - {:else if m.cadence.kind === 'interval'}alle {m.cadence.everyMinutes} Minuten - {:else}cron: {m.cadence.expression} + {#if m.cadence.kind === 'manual'}{$_('agents.templates.cadence_manual')} + {:else if m.cadence.kind === 'daily'}{$_('agents.templates.cadence_daily', { + values: { + h: m.cadence.atHour, + m: String(m.cadence.atMinute).padStart(2, '0'), + }, + })} + {:else if m.cadence.kind === 'weekly'}{$_('agents.templates.cadence_weekly', { + values: { day: m.cadence.dayOfWeek, h: m.cadence.atHour }, + })} + {:else if m.cadence.kind === 'interval'}{$_( + 'agents.templates.cadence_interval', + { + values: { n: m.cadence.everyMinutes }, + } + )} + {:else}{$_('agents.templates.cadence_cron', { + values: { expression: m.cadence.expression }, + })} {/if}
  • @@ -231,22 +251,28 @@ {#if selected.seeds && Object.keys(selected.seeds).length > 0}
    -

    Seeds

    +

    {$_('agents.templates.section_seeds')}

    - Vorgefüllte Einträge in deinen Modulen. Werden als neue Records angelegt; bestehende - Einträge mit gleicher Seed-ID werden übersprungen (idempotent). + {$_('agents.templates.seed_hint')}

      {#each Object.entries(selected.seeds) as [moduleName, items]}
    • {moduleName} - {items.length} Eintr{items.length !== 1 ? 'äge' : 'ag'} + {items.length === 1 + ? $_('agents.templates.seed_count_one', { values: { n: items.length } }) + : $_('agents.templates.seed_count_other', { + values: { n: items.length }, + })}
        {#each items as item}
      • - {(item.data as { name?: string }).name ?? '(unbenannt)'} + {(item.data as { name?: string }).name ?? + $_('agents.templates.seed_unnamed')}
      • {/each}
      @@ -257,27 +283,31 @@ {/if}
      -

      Optionen

      +

      {$_('agents.templates.section_options')}

      {#if selected.scene} {/if} {#if selected.missions && selected.missions.length > 0} {/if} {#if selected.seeds && Object.keys(selected.seeds).length > 0} {/if}
      @@ -289,22 +319,42 @@ {#if result.agentName} {result.wasExistingAgent - ? `„${result.agentName}" existierte schon — wiederverwendet.` - : `Agent „${result.agentName}" angelegt.`} + ? $_('agents.templates.result_existing_agent', { + values: { name: result.agentName }, + }) + : $_('agents.templates.result_new_agent', { + values: { name: result.agentName }, + })} {:else} - Template angewendet. + {$_('agents.templates.result_template_applied')} {/if}

      - {#if result.sceneCreated}Scene angelegt + aktiviert.{/if} + {#if result.sceneCreated}{$_('agents.templates.result_scene_created')}{/if} {#if result.missionCount > 0} - {result.missionCount} Mission{result.missionCount !== 1 ? 'en' : ''} - {optStartActive ? 'aktiviert' : 'pausiert angelegt'}. + {optStartActive + ? $_('agents.templates.result_missions_active', { + values: { n: result.missionCount }, + }) + : $_('agents.templates.result_missions_paused', { + values: { n: result.missionCount }, + })} {/if} {#if result.seedCreated + result.seedSkipped + result.seedFailed > 0} - {result.seedCreated} Seed{result.seedCreated !== 1 ? 's' : ''} neu, - {result.seedSkipped} bereits vorhanden{#if result.seedFailed > 0}, {result.seedFailed} - fehlgeschlagen{/if}. + {result.seedFailed > 0 + ? $_('agents.templates.result_seeds_summary_with_failed', { + values: { + created: result.seedCreated, + skipped: result.seedSkipped, + failed: result.seedFailed, + }, + }) + : $_('agents.templates.result_seeds_summary_no_failed', { + values: { + created: result.seedCreated, + skipped: result.seedSkipped, + }, + })} {/if}

      {#if result.warnings.length > 0} @@ -318,23 +368,29 @@
{:else} {#if error}
- Konnte Template nicht anwenden + {$_('agents.templates.err_apply_failed')}

{error}

{/if}
{/if} diff --git a/scripts/i18n-hardcoded-baseline.json b/scripts/i18n-hardcoded-baseline.json index dbed7f27c..9992a20a7 100644 --- a/scripts/i18n-hardcoded-baseline.json +++ b/scripts/i18n-hardcoded-baseline.json @@ -201,7 +201,6 @@ "apps/mana/apps/web/src/routes/(app)/+page.svelte": 1, "apps/mana/apps/web/src/routes/(app)/admin/+layout.svelte": 1, "apps/mana/apps/web/src/routes/(app)/admin/user-data/[userId]/+page.svelte": 19, - "apps/mana/apps/web/src/routes/(app)/agents/templates/+page.svelte": 7, "apps/mana/apps/web/src/routes/(app)/articles/settings/+page.svelte": 3, "apps/mana/apps/web/src/routes/(app)/broadcasts/[id]/+page.svelte": 2, "apps/mana/apps/web/src/routes/(app)/broadcasts/[id]/edit/+page.svelte": 4,