feat: Phase 1 – Konten, Kategorien, Transaktionen, EZB-Währungsumrechnung
Backend: - Modelle + Migration 0002: accounts, account_identifiers, category_groups, categories, transactions, exchange_rates (alle owner-gescoped). - EZB-Kursdienst (90-Tage/Historie) + Backfill-Skript; Umrechnung EUR<->CHF zum Buchungsdatum mit lokalem Cache und manueller Übersteuerung; EUR-Pivot (amount_eur_cents) eingefroren. - Kontostände + Netto-Vermögen (Umrechnung in Hauptwährung). - Router: accounts (inkl. IBAN-Identifikatoren), categories (Gruppen+Kategorien), transactions (Ausgabe/Einnahme/Transfer, cross-currency), rates. - Gruppierte Standard-Kategorien je Nutzer beim Anlegen. - pytest-Suite: Währung, Salden, Cross-Currency-Transfer, Nutzer-Isolation. Frontend: - Seiten Konten, Kategorien, Buchungen; Icon-Chip, Geldbetrag mit Umrechnung, Icon-/Farbwähler, Modal; erweitertes SVG-Icon-Set (Konto-/Kategorie-Icons). - Währungs-/Datumsformatierung (EUR de-DE, CHF de-CH), i18n DE/EN erweitert. - Live-Umrechnungs-Vorschau im Transfer-Formular. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -81,5 +81,75 @@
|
||||
"server": {
|
||||
"unreachable": "Server unreachable.",
|
||||
"sessionKept": "Your session is still valid – once the server responds again, it will continue."
|
||||
},
|
||||
"accounts": {
|
||||
"title": "Accounts",
|
||||
"new": "New account",
|
||||
"edit": "Edit account",
|
||||
"name": "Name",
|
||||
"type": "Type",
|
||||
"currency": "Currency",
|
||||
"icon": "Icon",
|
||||
"color": "Color",
|
||||
"openingBalance": "Opening balance",
|
||||
"openingDate": "As of",
|
||||
"identifiers": "Identifiers (IBAN etc.)",
|
||||
"addIdentifier": "Add identifier",
|
||||
"identShort": "id(s)",
|
||||
"total": "Total",
|
||||
"empty": "No accounts yet. Create your first account.",
|
||||
"deleteConfirm": "Delete this account and all its transactions?"
|
||||
},
|
||||
"accountTypes": {
|
||||
"girokonto": "Checking",
|
||||
"sparkonto": "Savings",
|
||||
"bargeld": "Cash",
|
||||
"kreditkarte": "Credit card",
|
||||
"depot": "Brokerage / Investment",
|
||||
"sonstiges": "Other"
|
||||
},
|
||||
"identifierKinds": {
|
||||
"iban": "IBAN",
|
||||
"account_no": "Account number",
|
||||
"card_no": "Card number"
|
||||
},
|
||||
"categories": {
|
||||
"title": "Categories",
|
||||
"newGroup": "New group",
|
||||
"editGroup": "Edit group",
|
||||
"newCategory": "New category",
|
||||
"editCategory": "Edit category",
|
||||
"name": "Name",
|
||||
"kind": "Kind",
|
||||
"income": "Income",
|
||||
"expense": "Expense",
|
||||
"emptyGroup": "No categories in this group.",
|
||||
"deleteConfirm": "Delete this category?",
|
||||
"deleteGroupConfirm": "Delete this group and all its categories?"
|
||||
},
|
||||
"transactions": {
|
||||
"title": "Transactions",
|
||||
"new": "New transaction",
|
||||
"edit": "Edit transaction",
|
||||
"expense": "Expense",
|
||||
"income": "Income",
|
||||
"transfer": "Transfer",
|
||||
"date": "Date",
|
||||
"account": "Account",
|
||||
"fromAccount": "From account",
|
||||
"toAccount": "To account",
|
||||
"category": "Category",
|
||||
"amount": "Amount",
|
||||
"toAmount": "Credited",
|
||||
"payee": "Payee",
|
||||
"description": "Description",
|
||||
"uncategorized": "Uncategorized",
|
||||
"empty": "No transactions yet.",
|
||||
"needAccount": "Create an account first to record transactions.",
|
||||
"allAccounts": "All accounts",
|
||||
"allTypes": "All types",
|
||||
"deleteConfirm": "Delete this transaction?",
|
||||
"amountRequired": "Please enter an amount.",
|
||||
"accountRequired": "Please choose an account."
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user