From b99dd60ad01b89b888e0d84347999db46562496c Mon Sep 17 00:00:00 2001 From: Till JS Date: Mon, 27 Apr 2026 18:38:06 +0200 Subject: [PATCH] i18n(cards+finance+mood): translate 3 list/detail views via $_() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - cards/views/DetailView: route through cards.detail.* (deck-name fallback, prop labels, meta, confirm/toast strings) - finance/ListView: route through finance.page.* (re-uses existing page namespace) + finance.list_view.empty_no_tx; drops unused Transaction + FinanceCategory type imports - mood/ListView: route through mood.list_view.* (new namespace) Baseline 899 → 881 (-18). --- .../lib/modules/cards/views/DetailView.svelte | 35 ++++++++++------- .../src/lib/modules/finance/ListView.svelte | 19 ++++----- .../web/src/lib/modules/mood/ListView.svelte | 39 ++++++++++++------- scripts/i18n-hardcoded-baseline.json | 3 -- 4 files changed, 56 insertions(+), 40 deletions(-) diff --git a/apps/mana/apps/web/src/lib/modules/cards/views/DetailView.svelte b/apps/mana/apps/web/src/lib/modules/cards/views/DetailView.svelte index 74ddc3433..f3746c84b 100644 --- a/apps/mana/apps/web/src/lib/modules/cards/views/DetailView.svelte +++ b/apps/mana/apps/web/src/lib/modules/cards/views/DetailView.svelte @@ -12,6 +12,7 @@ import { VisibilityPicker, type VisibilityLevel } from '@mana/shared-privacy'; import type { ViewProps } from '$lib/app-registry'; import type { LocalDeck, LocalCard } from '../types'; + import { _ } from 'svelte-i18n'; let { params, goBack }: ViewProps = $props(); let deckId = $derived(params.deckId as string); @@ -48,7 +49,7 @@ async function saveField() { detail.blur(); await deckStore.updateDeck(deckId, { - title: editName.trim() || detail.entity?.name || 'Unbenannt', + title: editName.trim() || detail.entity?.name || $_('cards.detail.name_fallback'), description: editDescription.trim() || undefined, }); // Color is not in UpdateDeckInput, update directly @@ -61,14 +62,14 @@ detail.deleteWithUndo({ - label: 'Deck gelöscht', + label: $_('cards.detail.toast_deleted'), delete: () => deckStore.deleteDeck(deckId), goBack, })} @@ -79,12 +80,12 @@ bind:value={editName} onfocus={detail.focus} onblur={saveField} - placeholder="Deck-Name..." + placeholder={$_('cards.detail.placeholder_name')} />
- Farbe + {$_('cards.detail.prop_color')}
- Sichtbarkeit + {$_('cards.detail.prop_visibility')} deckStore.setVisibility(deckId, next)} @@ -104,34 +105,42 @@
- Karten + {$_('cards.detail.prop_cards')} {cardCount}
{#if deck.lastStudied}
- Zuletzt gelernt + {$_('cards.detail.prop_last_studied')} {formatDate(new Date(deck.lastStudied))}
{/if}
- +
- Erstellt: {formatDate(new Date(deck.createdAt ?? ''))} + {$_('cards.detail.meta_created', { + values: { date: formatDate(new Date(deck.createdAt ?? '')) }, + })} {#if deck.updatedAt} - Bearbeitet: {formatDate(new Date(deck.updatedAt))} + {$_('cards.detail.meta_updated', { + values: { date: formatDate(new Date(deck.updatedAt)) }, + })} {/if}
{/snippet} diff --git a/apps/mana/apps/web/src/lib/modules/finance/ListView.svelte b/apps/mana/apps/web/src/lib/modules/finance/ListView.svelte index cba993073..01c814a90 100644 --- a/apps/mana/apps/web/src/lib/modules/finance/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/finance/ListView.svelte @@ -15,8 +15,9 @@ groupByDate, } from './queries'; import { financeStore } from './stores/finance.svelte'; - import type { Transaction, FinanceCategory, TransactionType } from './types'; + import type { TransactionType } from './types'; import type { ViewProps } from '$lib/app-registry'; + import { _ } from 'svelte-i18n'; let { navigate, goBack, params }: ViewProps = $props(); @@ -75,7 +76,7 @@ onclick={() => { addType = 'expense'; addCatId = null; - }}>Ausgabe{$_('finance.page.type_expense')} {$_('finance.page.type_income')}
@@ -92,7 +93,7 @@ class="amount-input" type="text" inputmode="decimal" - placeholder="0,00" + placeholder={$_('finance.page.placeholder_amount')} bind:value={addAmount} onkeydown={handleKeydown} /> @@ -100,7 +101,7 @@ @@ -123,17 +124,17 @@
+{formatCurrency(income)} - Einnahmen + {$_('finance.page.summary_income')}
-{formatCurrency(expenses)} - Ausgaben + {$_('finance.page.summary_expenses')}
= 0} class:expense={balance < 0}> {balance >= 0 ? '+' : ''}{formatCurrency(balance)} - Bilanz + {$_('finance.page.summary_balance')}
@@ -161,7 +162,7 @@ {/each} {#if recentTxs.length === 0} -

Noch keine Transaktionen diesen Monat.

+

{$_('finance.list_view.empty_no_tx')}

{/if}
diff --git a/apps/mana/apps/web/src/lib/modules/mood/ListView.svelte b/apps/mana/apps/web/src/lib/modules/mood/ListView.svelte index 9d51074d2..b6c6a0c33 100644 --- a/apps/mana/apps/web/src/lib/modules/mood/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/mood/ListView.svelte @@ -19,6 +19,7 @@ } from './queries'; import { EMOTION_META, ACTIVITY_LABELS } from './types'; import QuickLog from './components/QuickLog.svelte'; + import { _ } from 'svelte-i18n'; const entriesQuery = useAllMoodEntries(); const settingsQuery = useMoodSettings(); @@ -63,9 +64,11 @@ 😊 {/if} - Wie geht es dir? + {$_('mood.list_view.cta_question')} - {todayEntries.length}/{settings.dailyTarget} Check-ins heute + {$_('mood.list_view.cta_count', { + values: { n: todayEntries.length, target: settings.dailyTarget }, + })} {/if} @@ -73,7 +76,7 @@ {#if todayEntries.length > 0}
- +
{#each todayEntries as entry (entry.id)}
@@ -93,22 +96,22 @@
{avgLevel7 || '—'} - Ø 7 Tage + {$_('mood.list_view.stat_avg_7')}
{avgLevel30 || '—'} - Ø 30 Tage + {$_('mood.list_view.stat_avg_30')}
{streak} - Streak + {$_('mood.list_view.stat_streak')}
{#if weekData.some((d) => d.avgLevel > 0)}
- +
{#each weekData as day}
@@ -136,15 +139,19 @@ {#if entries.length >= 5}
- +
- {valence.positive}% positiv - {valence.negative}% negativ + {$_('mood.list_view.valence_positive', { values: { n: valence.positive } })} + {$_('mood.list_view.valence_negative', { values: { n: valence.negative } })}
{/if} @@ -152,7 +159,7 @@ {#if distribution.length > 0}
- +
{#each distribution.slice(0, 5) as item}
@@ -175,7 +182,7 @@ {#if weekdayPattern.some((d) => d.avgLevel > 0)}
- +
{#each weekdayPattern as day}
@@ -196,15 +203,17 @@ {#if activityInsights.length >= 2}
- + {#each activityInsights.slice(0, 4) as insight}
{ACTIVITY_LABELS[insight.activity]?.emoji ?? ''} {ACTIVITY_LABELS[insight.activity]?.de ?? insight.activity} Ø {insight.avgLevel}{$_('mood.list_view.insight_avg', { values: { n: insight.avgLevel } })} + {$_('mood.list_view.insight_count', { values: { n: insight.count } })} - ({insight.count}×)
{/each}
diff --git a/scripts/i18n-hardcoded-baseline.json b/scripts/i18n-hardcoded-baseline.json index 7a10295dd..f780e03fb 100644 --- a/scripts/i18n-hardcoded-baseline.json +++ b/scripts/i18n-hardcoded-baseline.json @@ -68,7 +68,6 @@ "apps/mana/apps/web/src/lib/modules/broadcast/widgets/BroadcastsWidget.svelte": 3, "apps/mana/apps/web/src/lib/modules/calc/ListView.svelte": 1, "apps/mana/apps/web/src/lib/modules/cards/components/CreateDeckModal.svelte": 3, - "apps/mana/apps/web/src/lib/modules/cards/views/DetailView.svelte": 6, "apps/mana/apps/web/src/lib/modules/chat/ListView.svelte": 1, "apps/mana/apps/web/src/lib/modules/chat/views/DetailView.svelte": 1, "apps/mana/apps/web/src/lib/modules/citycorners/views/DetailView.svelte": 3, @@ -111,7 +110,6 @@ "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/finance/ListView.svelte": 6, "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, @@ -130,7 +128,6 @@ "apps/mana/apps/web/src/lib/modules/meditate/components/StatsOverview.svelte": 3, "apps/mana/apps/web/src/lib/modules/meditate/ListView.svelte": 1, "apps/mana/apps/web/src/lib/modules/mood/components/QuickLog.svelte": 6, - "apps/mana/apps/web/src/lib/modules/mood/ListView.svelte": 6, "apps/mana/apps/web/src/lib/modules/moodlit/components/mood/CreateMoodDialog.svelte": 3, "apps/mana/apps/web/src/lib/modules/music/ListView.svelte": 3, "apps/mana/apps/web/src/lib/modules/music/views/DetailView.svelte": 6,