Files
certain/web/src/locales/en.json
T
GuidoandClaude Opus 5 5dbfd6abc4 fix: Anfangssaldo gilt ab dem Stichtag
Der Stichtag eines Kontos wurde gespeichert und angezeigt, von der
Saldo-Berechnung aber ignoriert: sie addierte jede Buchung des Kontos,
auch die aus der Zeit vor dem Stichtag. Damit lief jeder Saldo um die
gesamte Vorgeschichte daneben.

Der Anfangssaldo beschreibt jetzt den Stand am ENDE des Stichtags – so
steht er auf dem Auszug. Buchungen bis einschliesslich dieses Tages
zaehlen nicht mehr zum Kontostand, bleiben aber in Liste und
Auswertungen. Beim Uebertrag wird jede Seite an ihrem eigenen Stichtag
gemessen; der Vermoegensverlauf folgt derselben Regel. Ohne Stichtag
zaehlt weiterhin alles.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 15:26:21 +02:00

439 lines
18 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"common": {
"save": "Save",
"cancel": "Cancel",
"delete": "Delete",
"create": "Create",
"edit": "Edit",
"loading": "Loading…",
"logout": "Log out",
"admin": "Administrator",
"user": "User",
"close": "Close",
"retry": "Try again",
"actions": "Actions"
},
"nav": {
"overview": "Overview",
"accounts": "Accounts",
"categories": "Categories",
"transactions": "Transactions",
"budget": "Budget",
"import": "Import",
"system": "System",
"users": "Users",
"settings": "Settings"
},
"login": {
"subtitle": "Please sign in",
"username": "Username",
"password": "Password",
"submit": "Sign in",
"error": "Wrong username or password",
"expired": "Your session has expired. Please sign in again."
},
"changepw": {
"title": "Change password",
"forcedHint": "Please set your own password before continuing.",
"current": "Current password",
"new": "New password",
"repeat": "Repeat new password",
"submit": "Save password",
"mismatch": "The new passwords do not match.",
"saved": "Password changed.",
"policyHint": "The password policy has changed. Your current password no longer meets it – please choose a new one."
},
"users": {
"title": "Users",
"new": "New user",
"username": "Username",
"displayName": "Display name",
"password": "Temporary password",
"passwordHint": "The user will be asked to change it on first login.",
"role": "Role",
"status": "Status",
"active": "Active",
"inactive": "Disabled",
"resetPassword": "Reset password",
"deleteConfirm": "Really delete this user?",
"created": "User created.",
"you": "(you)",
"twoFactor": "Two-factor",
"resetTwoFactor": "Reset two-factor",
"resetTwoFactorConfirm": "Turn off two-factor for “{{name}}”? Only needed if both device and recovery codes are lost.",
"twoFactorReset": "Two-factor reset.",
"generatePassword": "Generate password"
},
"account": {
"title": "My account",
"password": "Change password",
"twoFactor": "Two-factor authentication",
"manage2fa": "Manage 2FA"
},
"settings": {
"title": "Settings",
"general": "Appearance & language",
"baseCurrency": "Base currency",
"baseCurrencyHint": "Currency for budget totals and dashboard aggregates.",
"locale": "Language",
"theme": "Appearance",
"themeSystem": "Automatic (system)",
"themeLight": "Light",
"themeDark": "Dark",
"budgetStartDay": "Budget month starts on",
"budgetStartDayHint": "Day your budget month starts (e.g. the 25th).",
"dateFormat": "Date format",
"saved": "Saved.",
"languageDe": "German",
"languageEn": "English",
"backup": "Backup & export",
"exportHint": "For reading and further processing, e.g. in a spreadsheet. These files cannot be restored.",
"exportTxnCsv": "Transactions (CSV)",
"exportTxnJson": "Transactions (JSON)",
"exportAll": "Data overview (JSON)",
"dbBackup": "Download full DB backup",
"dbBackupHint": "Complete database of all users (admin only) — keep it for restore.",
"keywordReview": "Review keywords",
"keywordReviewHint": "These keywords keep getting corrected away — maybe they no longer fit?",
"keywordCorrected": "{{overridden}} of {{applied}} transactions corrected",
"keep": "Keep",
"remove": "Remove",
"security": "Security",
"securityHint": "Two-factor authentication for your own account.",
"twoFactor": "Manage two-factor",
"backupHint": "The full backup contains all of your data and can be restored below.",
"exportBackup": "Full backup (JSON)",
"systemBackup": "System-wide full backup (JSON)",
"systemBackupWarning": "The system-wide backup contains password hashes and two-factor secrets of every user. Treat the file like a password."
},
"dashboard": {
"title": "Overview",
"emptyCards": "No cards. Click “Arrange” and add some.",
"edit": "Arrange",
"done": "Done",
"addCard": "Add card",
"reset": "Reset",
"resetConfirm": "Reset the dashboard to the default layout?"
},
"cards": {
"balances": "Account balances",
"budgetDonut": "Budget",
"netWorth": "Net worth",
"budgetProgress": "Budget progress",
"incomeExpense": "Income & expenses",
"recent": "Recent transactions",
"total": "Total",
"planned": "planned",
"spent": "spent",
"assets": "Net worth",
"income": "Income",
"expense": "Expenses",
"net": "Balance",
"noBudget": "No budget for this month yet.",
"breakdown": "Breakdown",
"byGroup": "Groups",
"byCategory": "Categories",
"expenseShare": "Expense share",
"noExpenses": "No expenses this month yet.",
"display": "Display",
"asList": "List",
"asPie": "Pie",
"range": "Range",
"days30": "30 d",
"days90": "90 d",
"days180": "6 m",
"days365": "1 y"
},
"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",
"textIdentPlaceholder": "e.g. Savings, Deposit",
"identShort": "id(s)",
"total": "Total",
"empty": "No accounts yet. Create your first account.",
"deleteConfirm": "Delete this account and all its transactions?",
"openingDateHint": "Balance at the end of that day. Bookings up to then don't count toward the balance but stay in the list and reports. Without a date, everything counts."
},
"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",
"text": "Text (detection)"
},
"transferRules": {
"title": "Transfer detection",
"hint": "Transactions whose text contains one of these words (e.g. “Revolut”) are set as a transfer. Pick a fixed target account – or let it be guessed automatically from the booking text (via each account's detection texts: edit account, kind “Text”).",
"wordPlaceholder": "Word (e.g. Transfer)",
"autoTarget": "automatic",
"empty": "No transfer keywords yet."
},
"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?",
"keywordsBtn": "Keywords",
"keywordsCount_one": "{{count}} keyword set",
"keywordsCount_other": "{{count}} keywords set",
"keywordsTitle": "Keywords – {{name}}",
"keywordsHint": "Transactions whose payee or description contains one of these words are automatically assigned to this category on future imports.",
"keywordAdd": "Type a word and press Enter",
"keywordAmount": "Amount (optional)",
"keywordEmpty": "No keywords yet.",
"keywordAddBtn": "Add",
"keywordEditHint": "Double-click a keyword to load it, with its amount, into the row above.",
"keywordEditing": "Editing an existing keyword – press Escape to cancel.",
"searchPlaceholder": "Search category …",
"excludedFromStats": "Exclude from reports",
"excludedHint": "For transfers between your own accounts: the balance still changes, but budget, dashboard and statistics leave these out – the money was not spent.",
"excludedShort": "neutral"
},
"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.",
"budgetAsSavings": "Count as savings in the budget",
"budgetCategory": "Budget category"
},
"budget": {
"title": "Budget",
"monthMode": "Month",
"templateMode": "Standard budget",
"income": "Income",
"expenses": "Expenses",
"planned": "Planned",
"totalIncome": "Total income",
"totalExpense": "Total expenses",
"reset": "Reset to standard",
"resetTitle": "Reset month",
"resetConfirm": "Reset this month to the standard budget? This month's adjustments will be lost.",
"templateHint": "The standard budget applies to every month until you adjust a month individually.",
"prevMonth": "Previous month",
"nextMonth": "Next month",
"monthsShown": "Months:",
"setAsTemplate": "Set as standard",
"setAsTemplateConfirm": "Use this month's amounts as the new standard budget? The current template is replaced (planned income stays).",
"copyFromTemplate": "Apply standard",
"copyFromTemplateConfirm": "Overwrite this month with the standard budget? This month's adjustments will be lost.",
"addIncome": "Planned income",
"editIncome": "Edit income",
"noIncome": "No planned income yet.",
"deleteIncomeConfirm": "Delete this planned income?",
"incomeLabel": "Label",
"incomeCategory": "Category",
"targetAccount": "Target account"
},
"import": {
"title": "Import",
"modeCsv": "CSV",
"modeDoc": "PDF · Image",
"readDoc": "Read document",
"docHint": "PDF/image recognition is best-effort — please check and fix every row.",
"extractedText": "Extracted text (for reference)",
"step1": "1 · Account & file",
"step2": "2 · Format",
"step3": "3 · Map columns",
"step4": "4 · Review & import",
"account": "Target account",
"file": "File",
"preset": "Bank preset",
"template": "My template",
"templateAny": "Template",
"presetGroup": "Bank templates",
"ownGroup": "My templates",
"templateManual": "Configure manually",
"overwriteConfirm": "Overwrite template “{{name}}” with the current settings?",
"autoPreviewNote": "The column preview appears automatically once the file and format are set.",
"moreColumns": "More columns (optional)",
"ibanHint": "Counterparty IBAN – only needed if your export has a column with the other account's IBAN; used for automatic transfer detection.",
"belegPreview": "Document",
"delimiter": "Delimiter",
"decimal": "Decimal separator",
"dateFormat": "Date format",
"encoding": "Encoding",
"amountMode": "Amount columns",
"skipRows": "Skip rows",
"hasHeader": "First row is a header",
"modeSigned": "Single amount (signed)",
"modeDebitCredit": "Separate debit/credit columns",
"modeAbsExpense": "Single amount (always expense)",
"readFile": "Read file",
"makePreview": "Build preview",
"saveTemplate": "Save as template",
"templateName": "Template name",
"colDate": "Date",
"colAmount": "Amount",
"colDebit": "Debit (out)",
"colCredit": "Credit (in)",
"colPayee": "Payee",
"colPurpose": "Purpose",
"colIban": "Counterparty IBAN",
"makePreviewHint": "Map at least date and amount.",
"rawHint": "Only the first rows – just for mapping the columns.",
"makePreviewNote": "“Build preview” then shows ALL transactions to review and import.",
"summary": "{{total}} rows detected · {{n}} will be imported (duplicates/invalid excluded).",
"noneValid": "No valid transaction detected. Check date format, decimal separator and column mapping – easiest is to pick the matching bank preset above.",
"commit": "Import {{n}} transactions",
"imported": "Imported {{n}} transactions.",
"importedCount": "{{n}} imported",
"typeCol": "Type",
"payeeCol": "Payee / purpose",
"badDate": "Date?",
"duplicate": "Duplicate",
"counterpart": "Counterpart",
"chooseAccount": "Choose account",
"history": "Import history",
"undo": "Undo",
"undoConfirm": "Remove all transactions from {{file}}?",
"undone": "undone",
"needFile": "Please choose a CSV file first.",
"needFileAccount": "Please choose an account and a file.",
"colFee": "Fee",
"colCurrency": "Currency",
"colState": "State",
"extraColsHint": "The fee is deducted from the amount. Rows whose state is not COMPLETED (e.g. reverted) and rows in a currency other than the target account are not imported.",
"skipState": "reverted",
"skipCurrency": "other currency",
"colBalance": "Balance (running)",
"reconOk": "Balance check passes: all {{n}} steps match the file's balance column.",
"reconDiff": "Balance check failed. Per file: {{file}} · computed: {{app}} · difference: {{diff}}.",
"reconFirst": "First mismatch on {{date}} at “{{payee}}”: bank {{expected}}, detected {{actual}}.",
"reconOpening": "Opening balance per file: {{value}} (enter it on the account so the balance matches).",
"needsTarget": "pick account",
"filterColumn": "Only rows from column",
"filterValue": "with value",
"filterValuePlaceholder": "e.g. Current",
"filterNone": "— no filter —",
"filterHint": "Revolut puts every pocket (Current, Savings, Investments …) into ONE file, each with its own balance. Filter to one product here and create separate accounts for the others – otherwise pocket movements are counted twice.",
"removeEntry": "Remove entry",
"removeEntryConfirm": "Remove the history entry “{{file}}”? Its transactions have already been undone."
},
"password": {
"show": "Show password",
"hide": "Hide password",
"met": "(met)",
"unmet": "(not met)",
"ruleLength": "At least {{n}} characters",
"ruleUpper": "At least one uppercase letter",
"ruleLower": "At least one lowercase letter",
"ruleDigit": "At least one digit",
"ruleSpecial": "At least one special character"
},
"twofactor": {
"title": "Two-factor authentication",
"intro": "A one-time code from an authenticator app on top of your password. Knowing your password alone is no longer enough.",
"on": "Active",
"off": "Not set up",
"start": "Set up",
"scan": "Scan the code with your authenticator app (e.g. Aegis, 1Password, Google Authenticator).",
"qrAlt": "QR code for setting up the authenticator app",
"manual": "If scanning does not work, enter this key manually:",
"code": "Code from the app",
"codeHint": "Enter the six-digit code from your authenticator app.",
"activate": "Activate",
"verify": "Confirm",
"useRecovery": "Use a recovery code",
"useApp": "Use the app code instead",
"recoveryCode": "Recovery code",
"recoveryHint": "Enter one of your recovery codes. Each one works only once.",
"codesTitle": "Recovery codes",
"codesHint": "Keep these codes somewhere safe – printed, for example. They are the only way back in if you lose your device. Each code works exactly once and they are shown here only this one time.",
"codesSaved": "I have saved them",
"codesLeft": "{{n}} unused recovery codes left.",
"copy": "Copy",
"copied": "Copied to clipboard.",
"download": "Save as file",
"newCodes": "Generate new codes",
"newCodesTitle": "New recovery codes",
"newCodesHint": "The previous codes stop working. Enter your password to confirm.",
"disable": "Turn off two-factor",
"disableTitle": "Turn off two-factor",
"disableHint": "Your password alone will be enough again. Enter your password to confirm.",
"disabled": "Two-factor turned off.",
"requiredHint": "The policy requires two-factor. The rest of the application stays locked until you set it up."
},
"policy": {
"title": "Password policy",
"hint": "Applies to every user of this instance.",
"minLength": "Minimum length",
"require_upper": "Require an uppercase letter",
"require_lower": "Require a lowercase letter",
"require_digit": "Require a digit",
"require_special": "Require a special character",
"mfaRequired": "Require two-factor for everyone",
"mfaHint": "Users without a second factor must set one up at their next sign-in.",
"tightenWarning": "Tightening: users whose password no longer meets the policy will have to change it at their next sign-in.",
"mfaWarning": "Every user without two-factor will be taken to the setup at their next sign-in – including you."
},
"restore": {
"title": "Restore a backup",
"hint": "Pick a backup file. It is only inspected first; nothing is written until you confirm.",
"file": "Backup file",
"empty": "The file contains no data.",
"scopeUser": "Backup of the data of “{{name}}”.",
"scopeSystem": "System-wide backup with {{n}} users.",
"exportedAt": "Created on {{when}}",
"mode": "How to proceed",
"modeReplace": "Replace",
"modeMerge": "Add missing",
"modeReplaceHint": "Existing data is deleted and replaced by the backup. The server writes a database snapshot beforehand.",
"modeMergeHint": "Nothing is deleted. Only missing entries are added; budget, rules and settings stay untouched if anything is already there.",
"start": "Restore",
"confirmTitle": "Really restore?",
"confirmReplace": "All your accounts, transactions, categories and settings will be deleted and replaced by the backup.",
"confirmSystem": "All users and their data will be deleted and replaced by the backup. Every session ends afterwards.",
"done": "Restore finished.",
"doneSystem": "Restore finished. Please sign in again."
}
}