{ "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." } }