diff --git a/apps/mana/apps/web/src/lib/modules/drink/ListView.svelte b/apps/mana/apps/web/src/lib/modules/drink/ListView.svelte index 6f955f49e..b44d555a9 100644 --- a/apps/mana/apps/web/src/lib/modules/drink/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/drink/ListView.svelte @@ -25,6 +25,7 @@ import { DynamicIcon } from '@mana/shared-ui/atoms'; import { IconPicker } from '@mana/shared-ui/molecules'; import { Trash, Pause, Play } from '@mana/shared-icons'; + import { _ } from 'svelte-i18n'; let entries$ = useAllDrinkEntries(); let presets$ = useAllDrinkPresets(); @@ -84,7 +85,9 @@ ? [ { id: 'archive', - label: ctxMenuPreset.state.target.isArchived ? 'Aktivieren' : 'Archivieren', + label: ctxMenuPreset.state.target.isArchived + ? $_('drink.list_view.ctx_activate') + : $_('drink.list_view.ctx_archive'), icon: ctxMenuPreset.state.target.isArchived ? Play : Pause, action: () => { const target = ctxMenuPreset.state.target; @@ -94,7 +97,7 @@ { id: 'div', label: '', type: 'divider' as const }, { id: 'delete', - label: 'Löschen', + label: $_('drink.list_view.ctx_delete'), icon: Trash, variant: 'danger' as const, action: () => { @@ -112,7 +115,7 @@ ? [ { id: 'delete', - label: 'Löschen', + label: $_('drink.list_view.ctx_delete'), icon: Trash, variant: 'danger' as const, action: () => { @@ -171,7 +174,7 @@
- Heute + {$_('drink.list_view.section_today')} {formatMl(todayTotalMl)} / {formatMl(DEFAULT_DAILY_GOAL_ML)} @@ -206,7 +209,7 @@ {#if !showCreate} {/if}
@@ -228,7 +231,7 @@ @@ -271,9 +274,11 @@ onclick={() => { showCreate = false; showIconPicker = false; - }}>Abbrechen{$_('drink.list_view.action_cancel')} + -
{/if} @@ -281,7 +286,7 @@ {#if todayEntries.length > 0}
-
Verlauf
+
{$_('drink.list_view.section_log')}
{#each todayEntries as entry (entry.id)} {#if editingId === entry.id} @@ -328,9 +333,9 @@ {#if activePresets.length === 0 && !showCreate}
-

Noch keine Getränke-Presets.

+

{$_('drink.list_view.empty_title')}

{$_('drink.list_view.empty_action')}
{/if} diff --git a/apps/mana/apps/web/src/lib/modules/habits/ListView.svelte b/apps/mana/apps/web/src/lib/modules/habits/ListView.svelte index edce193a0..e1dc1acb4 100644 --- a/apps/mana/apps/web/src/lib/modules/habits/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/habits/ListView.svelte @@ -19,8 +19,9 @@ import { toastStore } from '@mana/shared-ui/toast'; import { DynamicIcon } from '@mana/shared-ui/atoms'; import { IconPicker } from '@mana/shared-ui/molecules'; - import { PencilSimple, Trash, Pause, Play } from '@mana/shared-icons'; + import { Trash, Pause, Play } from '@mana/shared-icons'; import VoiceCaptureBar from '$lib/components/voice/VoiceCaptureBar.svelte'; + import { _ } from 'svelte-i18n'; let { navigate, goBack, params }: ViewProps = $props(); @@ -70,10 +71,12 @@ async function handleVoiceComplete(blob: Blob, durationMs: number) { const result = await habitsStore.logFromVoice(blob, durationMs, 'de'); if (!result) { - toastStore.error('Routine nicht erkannt. Versuche den Namen direkt zu sagen, z.B. "Kaffee".'); + toastStore.error($_('habits.list_view.voice_error_unrecognized')); return; } - toastStore.success(`${result.habitTitle} geloggt`); + toastStore.success( + $_('habits.list_view.voice_logged', { values: { title: result.habitTitle } }) + ); // Reuse the existing pulse animation by finding the matching habit id const matched = habits.find((h) => h.title === result.habitTitle); if (matched) { @@ -103,7 +106,7 @@ ? [ { id: 'log', - label: 'Loggen', + label: $_('habits.list_view.ctx_log'), icon: Play, action: () => { const target = ctxMenu.state.target; @@ -112,7 +115,9 @@ }, { id: 'archive', - label: ctxMenu.state.target.isArchived ? 'Aktivieren' : 'Archivieren', + label: ctxMenu.state.target.isArchived + ? $_('habits.list_view.ctx_activate') + : $_('habits.list_view.ctx_archive'), icon: ctxMenu.state.target.isArchived ? Play : Pause, action: () => { const target = ctxMenu.state.target; @@ -125,7 +130,7 @@ { id: 'div', label: '', type: 'divider' as const }, { id: 'delete', - label: 'Löschen', + label: $_('habits.list_view.ctx_delete'), icon: Trash, variant: 'danger' as const, action: () => { @@ -152,9 +157,9 @@
@@ -185,7 +190,7 @@ {#if !showCreate} {/if}
@@ -207,7 +212,7 @@ @@ -243,9 +248,11 @@ onclick={() => { showCreate = false; showIconPicker = false; - }}>Abbrechen{$_('habits.list_view.action_cancel')} + -
{/if} @@ -253,7 +260,7 @@ {#if todayLogs.length > 0}
-
Heute
+
{$_('habits.list_view.section_today')}
{#each todayLogs as log (log.id)} {@const habit = habitMap.get(log.habitId)} {#if habit} @@ -279,9 +286,9 @@ {#if activeHabits.length === 0 && !showCreate}
-

Noch keine Routinen angelegt.

+

{$_('habits.list_view.empty_title')}

{$_('habits.list_view.empty_action')}
{/if} diff --git a/apps/mana/apps/web/src/lib/modules/picture/ListView.svelte b/apps/mana/apps/web/src/lib/modules/picture/ListView.svelte index ebcd33118..9e270ac6f 100644 --- a/apps/mana/apps/web/src/lib/modules/picture/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/picture/ListView.svelte @@ -34,6 +34,7 @@ getImagesByTags, } from './queries'; import type { Image, LocalImage } from './types'; + import { _ } from 'svelte-i18n'; const MEDIA_URL = import.meta.env.PUBLIC_MANA_MEDIA_URL || 'http://localhost:3015'; @@ -240,7 +241,7 @@ {#if dragActive}
- Bilder ablegen + {$_('picture.list_view.drop_overlay')}
{/if} @@ -250,15 +251,19 @@ type="button" class="action-btn action-btn-upload" onclick={() => fileInput?.click()} - title="Bilder hochladen" + title={$_('picture.list_view.action_upload_title')} > - Upload + {$_('picture.list_view.action_upload')} - + - Generieren + {$_('picture.list_view.action_generate')} @@ -281,7 +286,7 @@ onclick={() => pictureViewStore.setViewMode('single')} class="view-btn" class:active={pictureViewStore.viewMode === 'single'} - title="Liste" + title={$_('picture.list_view.view_list_title')} > @@ -289,7 +294,7 @@ onclick={() => pictureViewStore.setViewMode('grid3')} class="view-btn" class:active={pictureViewStore.viewMode === 'grid3'} - title="Mittel" + title={$_('picture.list_view.view_medium_title')} > @@ -297,7 +302,7 @@ onclick={() => pictureViewStore.setViewMode('grid5')} class="view-btn" class:active={pictureViewStore.viewMode === 'grid5'} - title="Klein" + title={$_('picture.list_view.view_small_title')} > @@ -314,7 +319,7 @@
@@ -359,14 +364,19 @@ {#if filteredImages.length === 0}
-

{allImages.length === 0 ? 'Noch keine Bilder' : 'Keine Ergebnisse'}

+

+ {allImages.length === 0 + ? $_('picture.list_view.empty_no_images') + : $_('picture.list_view.empty_no_results')} +

{allImages.length === 0 - ? 'Generiere dein erstes Bild mit KI oder lade welche hoch' - : 'Passe deine Filter an'} + ? $_('picture.list_view.empty_hint_no_images') + : $_('picture.list_view.empty_hint_no_results')}

{#if allImages.length === 0} - Erstes Bild generieren + {$_('picture.list_view.empty_cta_first')} {/if}
{:else} @@ -409,7 +419,9 @@ weight={selectedImage.isFavorite ? 'fill' : 'regular'} class={selectedImage.isFavorite ? 'text-red-500' : 'text-muted-foreground'} /> - {selectedImage.isFavorite ? 'Entfernen' : 'Favorit'} + {selectedImage.isFavorite + ? $_('picture.list_view.action_unfavorite') + : $_('picture.list_view.action_favorite')} {/if} {/snippet} diff --git a/scripts/i18n-hardcoded-baseline.json b/scripts/i18n-hardcoded-baseline.json index 02a845228..f4f869927 100644 --- a/scripts/i18n-hardcoded-baseline.json +++ b/scripts/i18n-hardcoded-baseline.json @@ -106,12 +106,10 @@ "apps/mana/apps/web/src/lib/modules/core/widgets/RecentContactsWidget.svelte": 2, "apps/mana/apps/web/src/lib/modules/core/widgets/TasksTodayWidget.svelte": 1, "apps/mana/apps/web/src/lib/modules/core/widgets/UpcomingEventsWidget.svelte": 1, - "apps/mana/apps/web/src/lib/modules/drink/ListView.svelte": 5, "apps/mana/apps/web/src/lib/modules/goals/ListView.svelte": 1, "apps/mana/apps/web/src/lib/modules/guides/ListView.svelte": 1, "apps/mana/apps/web/src/lib/modules/habits/components/HabitDetail.svelte": 5, "apps/mana/apps/web/src/lib/modules/habits/components/HabitForm.svelte": 3, - "apps/mana/apps/web/src/lib/modules/habits/ListView.svelte": 5, "apps/mana/apps/web/src/lib/modules/inventory/ListView.svelte": 1, "apps/mana/apps/web/src/lib/modules/inventory/views/DetailView.svelte": 5, "apps/mana/apps/web/src/lib/modules/journal/ListView.svelte": 6, @@ -133,7 +131,6 @@ "apps/mana/apps/web/src/lib/modules/photos/ListView.svelte": 4, "apps/mana/apps/web/src/lib/modules/picture/components/ImageLightbox.svelte": 3, "apps/mana/apps/web/src/lib/modules/picture/components/ReferenceImagePicker.svelte": 1, - "apps/mana/apps/web/src/lib/modules/picture/ListView.svelte": 5, "apps/mana/apps/web/src/lib/modules/places/ListView.svelte": 2, "apps/mana/apps/web/src/lib/modules/plants/views/DetailView.svelte": 1, "apps/mana/apps/web/src/lib/modules/playground/ListView.svelte": 2,