Files
certain/web/src/locales/en.json
T
GuidoandClaude Opus 5 bf656dc957 feat: Oberflaeche fuer die Schnellerfassung
- "Mein Konto": Geraetemarken anlegen und widerrufen. Der Klartext ist
  nur einmal zu sehen, daneben steht eine Bauanleitung fuer den
  Kurzbefehl mit kopierfertiger Adresse und Kopfzeile. Ein fertiger
  Download geht nicht: seit iOS 15 muessen Kurzbefehl-Dateien signiert
  sein, und signieren kann nur ein Mac mit Apple-Konto.
- Neue Seite "Eingang": was unterwegs erfasst wurde, mit
  Kategorie-Auswahl und Verwerfen.
- Die Import-Pruefliste unterscheidet jetzt, WARUM eine Zeile
  uebersprungen wird: "schon erfasst" mit Erklaerung statt nur
  "Duplikat".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 19:39:31 +02:00

498 lines
22 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",
"open": "Open bookings",
"inbox": "Captured"
},
"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.",
"shortIdentWarning": "Short match texts hit unrelated bookings: “Euro” also occurs in “Europa-Park” or “PayPal Europe”, turning those into transfers by mistake. Prefer something unique such as the IBAN.",
"moveUp": "Move up",
"moveDown": "Move down"
},
"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": "The balance doesn't add up. The file ends at {{file}}, but the rows add up to {{app}} – {{diff}} missing or too much.",
"reconFirst": "They start to diverge on {{date}} at “{{payee}}”: the file's balance column moves by {{expected}}, while the row itself states {{actual}}.",
"reconOpening": "Before the first row the file stood at {{value}}. Enter that as the account's opening balance, dated the day before.",
"needsTarget": "pick account",
"filterColumn": "Only rows from column",
"filterValue": "with value",
"filterValuePlaceholder": "e.g. Current",
"filterNone": "— no filter —",
"filterHint": "Revolut puts every product (current, savings, investment …) into ONE file, each with its own balance. Pick one here and import the others separately into their own accounts – otherwise the movements count twice.",
"removeEntry": "Remove entry",
"removeEntryConfirm": "Remove the history entry “{{file}}”? Its transactions have already been undone.",
"reconMixedHint": "Does the file hold several accounts or products? Revolut puts current, savings and investment into ONE file, each with its own balance column. The check only works once you set the row filter above (e.g. Product = Current) and import the other products separately.",
"filterTitle": "This file holds several accounts",
"filterValueOption": "{{value}} ({{count}} rows)",
"removeAllUndone": "Remove undone entries",
"removeAllUndoneConfirm": "Remove {{n}} undone entries from the history? The bookings are already gone; only the entry disappears.",
"dupInbox": "already captured",
"dupInboxHint": "You recorded this payment on the go via shortcut – same amount, nearby date. It is already booked, so it is skipped. If these really are two separate payments, tick the row by hand."
},
"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."
},
"open": {
"title": "Bookings without a category",
"subtitle": "{{n}} left to sort – oldest first.",
"allDone": "Everything sorted.",
"choose": "Pick a category …",
"noText": "No text",
"rememberKeyword": "Remember the text as a keyword so the next matching booking is categorised on import",
"copy": "Copy text",
"copied": "Copied",
"copyFailed": "Copying failed – but the text can be selected now."
},
"tokens": {
"title": "Quick capture via shortcut",
"intro": "A device token lets an iOS shortcut send payments to Certain, so you can record what a purchase was for while you still remember. The token may only record: it cannot read bookings, change anything, or export.",
"name": "Device name",
"namePlaceholder": "e.g. iPhone",
"defaultAccount": "Default account",
"create": "Create token",
"onceOnly": "This token is shown only now. Copy it before you move on.",
"copy": "Copy",
"copied": "Copied",
"copyFailed": "Copying failed – but the text can be selected.",
"hide": "Done, hide",
"guideTitle": "How to build the shortcut",
"guideNoDownload": "I cannot offer it as a download: since iOS 15 shortcut files must be signed, and only a Mac with an Apple account can sign them. Rebuilding it takes two minutes.",
"step1": "“Ask for Input” – prompt: Amount, input type Number",
"step2": "“Ask for Input” – prompt: What for?",
"step3": "“Choose from List” for the account (or omit it to use the default account)",
"step4": "“Get Contents of URL” – method POST, request body JSON with the fields amount and payee:",
"step5": "“Show Notification” with the result, so you see the confirmation",
"guideHomeScreen": "Then use Share → “Add to Home Screen” so it is a single tap.",
"guideAutomation": "If your Shortcuts app offers the “Transaction” automation, you can attach the same shortcut to it: steps 1 and 2 fall away, amount and merchant come from there instead.",
"revoke": "Revoke",
"revokeConfirm": "Revoke token “{{name}}”? The shortcut on that device will stop working. Bookings already recorded stay.",
"noDefault": "no default account",
"lastUsed": "used before",
"neverUsed": "never used"
},
"inbox": {
"title": "Captured",
"intro": "Payments you recorded on the go. They are already booked – assign a category here at your leisure. The entries stay so the later statement recognises them and nothing gets booked twice.",
"empty": "Nothing captured. Set up a device token under “My account” to record payments from your phone via shortcut.",
"noText": "no text",
"viaShortcut": "via shortcut",
"discard": "Discard",
"discardConfirm": "Discard this capture? The booking is deleted. The entry stays marked as discarded so the statement still recognises the payment later."
}
}