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 @@
@@ -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,