Files
tessera-ctl/apps/web/src/messages/en.json
T
schalli c3d8e16eb3
Tessera CI/CD / Lint & Type Check (push) Successful in 51s
Tessera CI/CD / Tests (push) Successful in 1m41s
Tessera CI/CD / Build & Publish Images (push) Successful in 3m16s
fix(web): fehlende Uebersetzungen — Kalenderquellen-Formular (18 Schluessel), Kalender-Einstellungen (2), Marktplatz (1) in de/en nachgetragen; Changelog Behoben
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018N9CD3ebPKm1b32bPpBknY
2026-09-16 11:34:09 +02:00

1022 lines
43 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": {
"appName": "Tessera",
"loading": "Loading...",
"save": "Save",
"cancel": "Cancel",
"menu": "Menu",
"confirm": "Confirm",
"delete": "Delete",
"edit": "Edit",
"create": "Create",
"close": "Close",
"yes": "Yes",
"no": "No",
"active": "Active",
"inactive": "Inactive",
"actions": "Actions",
"accessDenied": "Access denied",
"brand": {
"logoAlt": "Tessera logo"
}
},
"auth": {
"login": "Sign In",
"username": "Username",
"password": "Password",
"rememberMe": "Remember me",
"submit": "Sign In",
"forgotPassword": "Forgot password?",
"error": {
"invalidCredentials": "Invalid username or password",
"networkError": "Connection error. Please try again."
},
"branding": {
"tagline": "Modular workflow platform for your organization"
},
"resetPassword": {
"title": "Reset Password",
"email": "Email address",
"submit": "Send Reset Link",
"success": "If an account with this email exists, a reset link has been sent.",
"backToLogin": "Back to Sign In",
"newPasswordTitle": "Set New Password",
"newPassword": "New Password",
"confirmPassword": "Confirm Password",
"submitReset": "Reset Password",
"resetSuccess": "Your password has been reset successfully.",
"redirecting": "You will be redirected to the sign in page in a few seconds...",
"tokenExpired": "This reset link has expired. Please request a new one.",
"tokenUsed": "This reset link has already been used. Please request a new one.",
"tokenInvalid": "This reset link is invalid.",
"passwordMismatch": "Passwords do not match."
},
"changePassword": {
"title": "Change Password",
"currentPassword": "Current Password",
"newPassword": "New Password",
"confirmPassword": "Confirm New Password",
"submit": "Change Password",
"success": "Your password has been changed successfully.",
"forceChangeNotice": "For security reasons, you must change your password before continuing.",
"wrongCurrentPassword": "The current password is incorrect.",
"networkError": "Connection error. Please try again.",
"passwordMismatch": "Passwords do not match."
}
},
"header": {
"search": "Search...",
"userMenu": "User menu",
"breadcrumb": {
"home": "Home"
},
"settings": "Settings",
"logout": "Sign Out",
"admin": {
"label": "Administration",
"users": "Users",
"tenants": "Tenants",
"modules": "Modules",
"ldap": "LDAP",
"smtp": "SMTP",
"groups": "Groups"
},
"role": {
"SUPER_ADMIN": "Super Admin",
"ADMIN": "Admin",
"USER": "User"
}
},
"sidebar": {
"dashboard": "Dashboard",
"marketplace": "Marketplace",
"settings": "Settings",
"collapse": "Collapse",
"expand": "Expand",
"userPlaceholder": "User",
"search": "Search modules...",
"noResults": "No modules found",
"categories": {
"label": "Categories",
"empty": "No modules"
},
"admin": "Administration",
"users": "Users",
"tenants": "Tenants",
"ldap": "LDAP",
"modules": "Modules",
"channel": {
"beta": "Beta",
"live": "Live",
"dev": "Development"
},
"whatsNew": "What's new"
},
"dashboard": {
"title": "Dashboard",
"empty": "No active widgets",
"addWidget": "Add widget"
},
"settings": {
"link": "Settings",
"navLabel": "Settings",
"backToDashboard": "Back to Dashboard",
"categoryDashboard": "Dashboard",
"categoryWidgets": "Widgets",
"categoryCalendar": "Calendar",
"categoryGeneral": "General",
"categoryAccount": "Account",
"categorySmtp": "SMTP",
"account": {
"title": "Account",
"avatarLabel": "Profile Picture",
"avatarHelp": "Allowed formats: PNG, JPEG, WebP. Maximum size: 2 MB.",
"uploadCta": "Upload picture",
"uploadSuccess": "Profile picture updated successfully.",
"uploadError": "Upload failed. Please check the file format and size.",
"ldapManagedNotice": "Your password is managed via the directory (LDAP) and cannot be changed here.",
"passwordSectionTitle": "Change Password",
"accentColorLabel": "Accent Color",
"accentColorHelp": "Customizes the primary color of the interface.",
"accentColorReset": "Reset",
"accentColorSave": "Save color",
"accentColorSuccess": "Accent color saved successfully.",
"accentColorError": "Failed to save color.",
"deleteAvatarCta": "Delete picture",
"deleteAvatarSuccess": "Profile picture deleted successfully.",
"deleteAvatarError": "Failed to delete picture."
},
"sourceDeleteConfirm": "Are you sure you want to delete this calendar source?",
"sourceDeleteCta": "Delete source",
"providerDeleteConfirm": "Are you sure you want to delete this search provider?",
"providerDeleteCta": "Delete provider",
"cancel": "Cancel",
"smtp": {
"title": "SMTP Configuration",
"host": "Host",
"port": "Port",
"encryption": "Encryption",
"username": "Username",
"password": "Password",
"fromAddress": "Sender Address (From)",
"fromAddressHelp": "The email address shown as the sender.",
"save": "Save Settings",
"test": "Test Connection",
"showPassword": "Show password",
"hidePassword": "Hide password",
"testToLabel": "Send test email to",
"testToPlaceholder": "recipient@example.com",
"testToHelp": "Optional — sends a real test email to this address.",
"testTesting": "Testing connection...",
"testSuccess": "Connection successful",
"testFailed": "Connection failed",
"bugReportRecipient": "Bug reports to",
"bugReportRecipientHelp": "Optional – mailbox that receives the reports users send via the \"Report a problem\" button, including the screenshot. Leave empty if the button should not send e-mails."
}
},
"widgets": {
"emptyHeading": "No active widgets",
"emptyBody": "Click edit to add widgets to your dashboard.",
"addWidget": "Add widget",
"catalogTitle": "Add widget",
"deleteTooltip": "Remove widget",
"dragHint": "Drag the tile to move it",
"editMode": "Edit dashboard",
"saveChanges": "Save changes",
"layoutLoadError": "Could not load dashboard. Please reload the page.",
"widgetSaveError": "Could not save changes. Please try again.",
"clock": {
"name": "Clock",
"description": "Shows the current time",
"dateHint": "Show date",
"fontSizeLabel": "Font size of the time (pt)",
"fontSizeAuto": "automatic",
"fontSizeHint": "Leave empty and the time follows the size of the tile. A value between 8 and 200 fixes the font size regardless of the tile size.",
"fontSizeInvalid": "Please enter a number between 8 and 200 or leave the field empty."
},
"search": {
"name": "Search",
"description": "Quick web search",
"placeholder": "Search...",
"providers": "Search Providers",
"addProvider": "Add Custom Provider",
"addProviderButton": "Add Provider"
},
"calendar": {
"name": "Calendar",
"description": "Upcoming events",
"loading": "Loading...",
"emptyNoSources": "No calendar sources configured",
"emptyNoEvents": "No upcoming events",
"connectionSuccess": "Connection successful",
"connectionError": "Connection failed. Please check the URL and credentials.",
"addSource": "Add source",
"sourceEmpty": "No calendar sources configured. Add a source to display events.",
"formFieldName": "Name",
"formFieldType": "Type",
"formFieldExchangeMode": "Exchange connection",
"formFieldDomain": "Domain",
"formFieldDomainHint": "Optional – only needed if your Exchange server expects DOMAIN\\user for sign-in.",
"formFieldUrl": "Address (URL)",
"formFieldUsername": "Username",
"formFieldPassword": "Password",
"formFieldColor": "Color",
"formSave": "Save",
"formSaving": "Saving …",
"formTestConnection": "Test connection",
"formTesting": "Checking connection …",
"formTestSuccess": "Connection successful.",
"formTestFailed": "Connection failed. Please check the address and credentials.",
"formCancel": "Cancel",
"formUrlErrorHttps": "The address must start with https://.",
"formUrlErrorInvalid": "Please enter a valid address.",
"saveSuccess": "Calendar source saved.",
"saveError": "The calendar source could not be saved."
},
"note": {
"name": "Notes",
"description": "Free-text notes with Markdown",
"defaultTitle": "Note",
"autosaveError": "Save failed",
"editMode": "Edit mode",
"viewMode": "Preview mode"
},
"calculator": {
"name": "Calculator",
"description": "Basic arithmetic with keyboard support"
},
"favorites": {
"name": "Favorites",
"description": "Quick-access links",
"loading": "Loading favorites...",
"empty": "No favorites yet.",
"addTitle": "Title",
"addUrl": "URL",
"addButton": "Add",
"listView": "List",
"gridView": "Grid",
"editButton": "Edit favorite",
"deleteButton": "Delete favorite",
"saveButton": "Save",
"cancelButton": "Cancel",
"error": "Error loading favorites"
},
"link": {
"name": "Link",
"description": "Single quick-access link",
"loading": "Loading link...",
"empty": "No link set yet.",
"addTitle": "Title",
"addUrl": "URL",
"addButton": "Add",
"listView": "List",
"gridView": "Tile",
"editButton": "Edit link",
"deleteButton": "Delete link",
"saveButton": "Save",
"cancelButton": "Cancel",
"error": "Error loading link"
},
"stopwatch": {
"name": "Stopwatch",
"description": "Time measurement with lap times",
"start": "Start",
"stop": "Stop",
"reset": "Reset",
"lap": "Lap"
}
},
"admin": {
"users": {
"title": "User Management",
"create": "Create User",
"edit": "Edit User",
"delete": "Delete User",
"deleteConfirm": "Are you sure you want to delete this user?",
"name": "Name",
"username": "Username",
"email": "Email",
"displayName": "Display Name",
"role": "Role",
"status": "Status",
"actions": "Actions",
"password": "Password",
"noUsers": "No users found",
"grants": {
"detailsButton": "Details",
"modalTitle": "{username} — Access",
"groupsSection": "Group Memberships",
"noGroups": "This user is not a member of any group.",
"accessSection": "Module Access",
"moduleColumn": "Module",
"viaGroupsColumn": "Via Group(s)",
"directColumn": "Direct",
"noInheritance": "–",
"noActiveModules": "No modules are activated for this tenant.",
"directCheckboxLabel": "{granted, select, true {Grant} other {Revoke}} {module} directly for {user}",
"saveError": "Could not save grant. Please try again."
}
},
"tenants": {
"title": "Tenant Management",
"create": "Create Tenant",
"edit": "Edit Tenant",
"name": "Name",
"slug": "Slug",
"status": "Status",
"userCount": "Users",
"actions": "Actions",
"noTenants": "No tenants found",
"deleteConfirm": "Are you sure you want to delete this tenant?",
"cannotDeleteActive": "Cannot delete tenants with active users"
},
"ldap": {
"title": "LDAP configuration",
"connectionTitle": "Connection settings",
"serverUrl": "Server URL",
"baseDn": "Base DN",
"baseDnHint": "One DN per line. The base DN(s) define the sync scope.",
"bindDn": "Bind DN",
"bindPassword": "Bind password",
"searchFilter": "Search filter",
"tlsSkip": {
"label": "Skip TLS certificate verification (insecure)",
"hint": "Only needed for ldaps:// when the AD certificate is signed by an internal/self-signed CA (error: 'unable to verify the first certificate'). Disables certificate verification - use only on trusted networks."
},
"save": "Save",
"testConnection": "Test connection",
"testSuccess": "Connection successful",
"testFailed": "Connection failed",
"enable": "Enabled",
"disable": "Disabled",
"fieldMapping": {
"title": "Field mapping",
"add": "Add mapping",
"ldapField": "LDAP field",
"tesseraField": "Tessera field",
"default": "Default",
"remove": "Remove"
},
"sync": {
"title": "Synchronization",
"interval": "Sync interval",
"intervalDisabled": "disabled",
"lastSync": "Last sync",
"neverSynced": "Never synced",
"trigger": "Sync now",
"syncing": "Syncing...",
"result": "Created: {created}, updated: {updated}, deactivated: {deactivated}",
"resultGroupMemberships": "Group memberships: {groupMembershipsAdded} added, {groupMembershipsRemoved} removed",
"resultGroups": "AD groups: {groupsAdopted} newly adopted, {groupsRenamed} renamed, {groupsDeleted} deleted",
"defaultMarkerMoved": "Default-group marker had to be reassigned ({defaultMarkerMoved}×).",
"emailConflictsHeading": "These accounts were created without an email address because the address already belongs to another account. Login and access work fine, only email notifications will not reach them.",
"emailConflictLine": "{account} — address already taken by another account: {email}",
"skippedNoLoginHeading": "Skipped for lacking a login name — normal for contacts and distribution lists in the directory.",
"entryFailuresHeading": "An unexpected error occurred for these entries. The technical details are in the server log.",
"requestError": "The synchronization could not be run."
},
"groupFilter": {
"title": "Import filter (groups/OUs)",
"description": "Optional additional restriction to selected AD groups or organizational units. With no selection, all users under the base DN(s) are synced.",
"discover": "Discover groups/OUs",
"typeOu": "OU",
"typeGroup": "Group",
"noneFound": "No groups or OUs found.",
"searchPlaceholder": "Search groups/OUs...",
"noMatches": "No matches for this search.",
"manualDn": "Add DN manually",
"addDn": "Add",
"selected": "Selected",
"emptyMeansAll": "No selection - all users under the base DN(s) are synced.",
"save": "Save filter"
},
"groupImport": {
"title": "Import AD groups",
"description": "Selected AD groups are created as Tessera groups and kept in sync with every subsequent run — name, membership and deletion in AD carry over automatically.",
"discover": "Search AD groups",
"searchPlaceholder": "Search AD groups...",
"noneFound": "No AD groups found.",
"noMatches": "No matches for this search.",
"alreadyImported": "Already imported",
"importSelected": "Import selected",
"resultSummary": "{imported} imported, {skipped} skipped{errors, plural, =0 {} other {, # errors}}",
"membershipHint": "Memberships are filled in automatically by the next sync run (manual or scheduled).",
"nameCollisionError": "Group \"{name}\" could not be imported: the name is already taken. Rename the existing local group or give it an internal name.",
"discoverError": "AD groups could not be retrieved. Check the LDAP connection and try again.",
"importError": "The import could not be executed. No group was created."
},
"userExclude": {
"title": "Exclude users (denylist)",
"description": "Individual usernames that are never imported - e.g. service accounts like administrator, krbtgt, guest or ldap$. Applies on top of the group/OU filter.",
"username": "Username",
"add": "Add",
"excluded": "Excluded",
"empty": "None excluded - every discovered user is imported.",
"save": "Save exclude list"
},
"userSearch": {
"title": "Search & import individual users",
"description": "Search for individual AD users and import them selectively. Users that already exist are skipped - no duplicate import, even when their department is synced later.",
"placeholder": "Name, username or email...",
"search": "Search",
"noResults": "No users found.",
"alreadyImported": "Already imported",
"import": "Import",
"importSelected": "Import selected",
"created": "imported",
"skipped": "skipped",
"errors": "errors"
}
},
"groups": {
"title": "Groups",
"create": "Create Group",
"edit": "Edit Group",
"delete": "Delete Group",
"noGroups": "No groups yet",
"noGroupsBody": "Create your first group to grant module access selectively.",
"name": "Name",
"ldapBinding": "AD Binding",
"boundBadge": "AD-bound",
"manualBadge": "Manual",
"defaultGroup": "Default Group",
"setDefault": "Set as default group",
"isDefault": "Default group",
"memberCount": "Members",
"actions": "Actions",
"membersButton": "Members",
"saveError": "Could not save group. Please try again.",
"saveErrorNameTaken": "This name is already taken.",
"deleteError": "Could not delete group. Please try again.",
"nameLockedHint": "Taken from the AD group. Updated automatically on the next sync.",
"adDnLabel": "AD DN: {ldapDn}",
"internalName": "Internal Name",
"internalNameHint": "Never changed by the sync. If left empty, the interface shows the AD name instead.",
"createLdapHint": "AD groups are imported in the LDAP area, not created here.",
"goToLdap": "Go to LDAP area",
"members": {
"title": "Members",
"remove": "Remove member",
"ldapManaged": "Managed via AD sync",
"sourceManual": "Manual",
"sourceLdap": "LDAP",
"addTitle": "Add member",
"searchPlaceholder": "Search users...",
"noMembers": "No members yet.",
"addError": "Could not add member. Please try again."
},
"deleteConfirm": {
"title": "Delete Group",
"body": "This group has {memberCount, plural, one {# member} other {# members}} and {grantCount, plural, one {# module grant} other {# module grants}}. Affected users will lose access unless they have it another way. This action cannot be undone."
},
"grants": {
"matrixCheckboxLabel": "{granted, select, true {Grant} other {Revoke}} {module} for group {group}"
}
}
},
"adminModules": {
"title": "Module Management",
"description": "Activate or deactivate modules for your tenant",
"activate": "Activate",
"deactivate": "Deactivate",
"activated": "Activated",
"deactivated": "Deactivated",
"system": "System",
"version": "Version",
"noModules": "No modules available",
"activateSuccess": "Module activated successfully",
"deactivateSuccess": "Module deactivated successfully",
"error": "Error managing module",
"grantsLink": "Grants Matrix",
"grants": {
"title": "Grants Matrix",
"searchPlaceholder": "Search modules or groups...",
"emptyModules": "No modules are activated for this tenant yet. Activate a module under Modules first.",
"emptyModulesLink": "Go to Modules",
"adminNote": "ADMIN and SUPER_ADMIN always have access to all active modules — this matrix only applies to the USER role.",
"saveError": "Could not save grant. Please try again.",
"noSearchResults": "No match for \"{search}\" — neither in the modules nor in the groups."
},
"activationDialog": {
"title": "Activate Module: {module}",
"body": "Should the default group get immediate access to this module, or would you rather configure grants separately?",
"grantNow": "Grant Now",
"configureLater": "Configure Later",
"cancel": "Cancel",
"noDefaultGroupHint": "No default group marked — set one under Groups first or configure access manually."
}
},
"theme": {
"light": "Light",
"dark": "Dark",
"system": "System"
},
"bugReport": {
"button": "Report a problem",
"title": "Report a problem",
"intro": "Tessera has just taken a picture of this page – it shows exactly what you see. The picture, your description, the page, version, browser and the most recent error messages are sent by e-mail to your administrator.",
"screenshotAlt": "Screenshot preview",
"screenshotUnavailable": "No screenshot possible – the report will be sent without a picture.",
"attachScreenshot": "Attach screenshot",
"descriptionLabel": "What happened?",
"descriptionPlaceholder": "Optional: What did you do, what did you expect, what happened instead?",
"send": "Send",
"sending": "Sending…",
"cancel": "Cancel",
"close": "Close",
"sent": "Thank you, your report has been sent.",
"errorNotConfigured": "No mailbox has been set up for bug reports yet.",
"errorNotConfiguredAdminHint": "Set the address under Administrator → SMTP in the field \"Bug reports to\".",
"errorNotConfiguredAdminLink": "Go to the SMTP settings",
"errorTooMany": "Too many reports in a short time. Please try again in a few minutes.",
"errorTooLarge": "The picture is too large. Please send the report without the screenshot.",
"errorSendFailed": "The e-mail could not be sent. Please try again later or contact your administrator.",
"errorGeneric": "The report could not be sent."
},
"changelog": {
"title": "What's new",
"intro": "All changes to Tessera, sorted by version – the current version is at the top.",
"unreleasedHeading": "Not yet released (beta)",
"unreleasedHint": "The items under “Not yet released” are already part of this beta but have not been released as a version yet.",
"empty": "No entries yet."
},
"locale": {
"de": "Deutsch",
"en": "English"
},
"modules": {
"categoryTitle": "Modules: {category}",
"openModule": "Open",
"noModules": "No active modules in this category",
"notFound": "Module not found",
"notFoundDescription": "The requested module does not exist or is not activated.",
"backToCategory": "Back to category",
"allModules": "Modules",
"allModulesDescription": "Available modules for your tenant",
"noActiveModules": "No modules activated. Ask your administrator to enable modules.",
"accessDenied": {
"title": "No Access to This Module",
"body": "You do not have access to this module. Please contact your administrator.",
"backToDashboard": "Back to Dashboard"
}
},
"domaincheck": {
"title": "Domain Check",
"description": "Check if a domain is available",
"inputPlaceholder": "Enter domain (e.g. example.com)",
"suggestions": "Alternatives",
"checkButton": "Check",
"statusAvailable": "Available",
"statusRegistered": "Registered",
"noResults": "Enter a domain name to check availability",
"checking": "Checking...",
"error": "Error checking domain"
},
"dkvFleet": {
"pageTitle": "DKV Invoice",
"checkNow": "Check Now",
"checking": "Checking...",
"lastChecked": "Last checked: {time}",
"neverChecked": "Never checked",
"settingsTitle": "Module Settings",
"historyTitle": "Processing History",
"exportFilesTitle": "Recent Export Files",
"emptyHistory": "No invoices processed yet",
"emptyHistoryBody": "Click 'Check Now' to poll the inbox. New invoices will appear here automatically.",
"emptyExports": "No export files available yet",
"emptyVehicles": "No vehicles configured",
"emptyVehiclesBody": "Add vehicles manually or upload a CSV file.",
"status": {
"processed": "Processed",
"error": "Error",
"sendFailed": "Send Failed"
},
"col": {
"dateTime": "Date/Time",
"invoiceNumber": "Invoice Number",
"vehicles": "Vehicles",
"transactions": "Transactions",
"status": "Status",
"exportFile": "Export File",
"licensePlate": "License Plate",
"brand": "Make",
"model": "Model",
"driver": "Driver",
"actions": "Actions"
},
"addVehicle": "Add Vehicle",
"editVehicle": "Edit Vehicle",
"deleteVehicle": "Delete Vehicle",
"deleteVehicleBody": "Vehicle {plate} will be permanently removed from the master list. This action cannot be undone.",
"importCsv": "Import CSV",
"csvFormatHelp": "CSV format (semicolon): Kennzeichen;Marke;Modell;Fahrer",
"csvFormatExample": "Example: GP-JL 728E;Mercedes;GLC 300;Max Mustermann",
"importMode": "Import Mode",
"importMerge": "Merge — add new vehicles, keep existing",
"importReplace": "Replace — delete all existing vehicles and re-import",
"importReplaceWarning": "All existing vehicles will be replaced.",
"importReplaceConfirmTitle": "Replace Vehicles?",
"importReplaceConfirmBody": "All existing vehicles will be replaced with the CSV data. This action cannot be undone.",
"importReplaceConfirmButton": "Replace",
"importSuccess": "{count} vehicles imported",
"vehicleCount": "{count} vehicles",
"tabs": {
"inbox": "Inbox",
"vehicles": "Vehicles"
},
"form": {
"protocol": "Protocol",
"host": "Host",
"hostExchange": "EWS URL",
"domain": "Domain",
"domainHelp": "Optional — Windows domain (e.g. CONTOSO). Leave blank if not required.",
"port": "Port",
"encryption": "Encryption",
"encryptionNone": "None",
"folder": "Folder / Mailbox",
"folderExchangeHelp": "Common mailboxes: Inbox, SentItems, DeletedItems, Drafts, JunkEmail",
"senderFilter": "Sender Filter",
"pollInterval": "Poll Interval",
"pollIntervalSuffix": "Minutes",
"username": "Username",
"password": "Password",
"exportRecipient": "Export Recipient",
"vehicleFormat": "Vehicle Format String",
"vehicleFormatHelp": "Available placeholders: {Marke}, {Modell}, {Kennzeichen}, {Fahrer}",
"active": "Active",
"testConnection": "Test Connection",
"testTesting": "Testing connection...",
"testSuccess": "Connection successful",
"testFailed": "Connection failed: {error}",
"save": "Save Settings",
"cancel": "Cancel Editing",
"cancelDialog": "Cancel",
"showPassword": "Show password",
"hidePassword": "Hide password",
"exchangeAuthHint": "401 — possible causes:",
"exchangeAuthHint1": "Wrong password or username",
"exchangeAuthHint2": "Domain: Windows short name (e.g. COMPANY, not company.com)",
"exchangeAuthHint3": "Username without domain prefix (e.g. 'max.muster', not 'COMPANY\\max.muster')",
"exchangeAuthHint4": "Office 365 / Exchange Online: EWS basic auth disabled since Oct 2022 — not supported"
},
"errors": {
"pollFailed": "Could not check inbox. Review the configuration under 'Module Settings > Inbox'.",
"smtpFailed": "Export was created but could not be sent. The file is still available for manual download."
}
},
"marketplace": {
"title": "Marketplace",
"subtitle": "Discover and activate modules for your tenant",
"activate": "Activate Module",
"deactivate": "Deactivate",
"searchPlaceholder": "Search modules...",
"statusAll": "All",
"statusActive": "Activated",
"statusAvailable": "Available",
"categoryAll": "All",
"emptyTitle": "No modules available yet",
"emptyBody": "Modules are provided by the system administrator. Check back later.",
"filteredEmptyTitle": "No results",
"filteredEmptyBody": "Try a different search term or adjust your filters.",
"errorLoad": "Could not load modules. Please reload the page.",
"toastActivated": "Module activated successfully",
"toastDeactivated": "Module deactivated successfully",
"toastActivateError": "Activation failed. Please try again.",
"toastDeactivateError": "Deactivation failed. Please try again.",
"deactivateDialogTitle": "Deactivate Module",
"deactivateDialogBody": "Do you want to deactivate {moduleName} for this tenant? The module will be removed from the sidebar.",
"deactivateDialogConfirm": "Deactivate",
"deactivateDialogCancel": "Cancel",
"tenantContextLabel": "Tenant Context",
"backToMarketplace": "Back to Marketplace",
"detailVersion": "Version {version}",
"detailStatusActive": "Activated for this tenant",
"detailStatusInactive": "Not activated",
"accessDenied": "Access denied",
"statusNoAccess": "No Access",
"toastNoAccess": "No access to this module — please contact your administrator.",
"notFound": "This module was not found."
},
"certManager": {
"title": "Certificate Manager",
"description": "Inspect, split, merge and convert certificates.",
"tabs": {
"inspect": "Inspect",
"split": "Split",
"merge": "Merge",
"convert": "Convert"
},
"dropZone": {
"placeholder": "Drag file here or click to browse",
"formats": ".pem, .crt, .cer, .der, .pfx, .p12, .p7b, .p7c"
},
"paste": {
"placeholder": "Paste PEM content (-----BEGIN ...)"
},
"password": {
"label": "Password (PFX/P12)"
},
"or": "or",
"actions": {
"inspect": "Inspect",
"split": "Split",
"merge": "Merge",
"convert": "Convert",
"download": "Download",
"downloadZip": "Download all as ZIP",
"processing": "Processing..."
},
"certRole": {
"root": "Root CA",
"intermediate": "Intermediate CA",
"end-entity": "Certificate"
},
"emptyState": {
"inspect": "No certificate loaded.",
"inspectBody": "Upload a file or paste PEM text.",
"split": "No file loaded.",
"splitBody": "Upload a fullchain or P7B file.",
"merge": "No certificates selected.",
"mergeBody": "Upload at least two files.",
"convert": "No file loaded.",
"convertBody": "Upload a file and select an output format."
},
"error": {
"generic": "Processing failed. Check the file format or password.",
"wrongPassword": "Wrong password. Could not decrypt the PFX/P12 file.",
"unknownFormat": "Unknown format. The file could not be recognized as a certificate."
}
},
"tenderRadar": {
"page": {
"title": "Tender Radar",
"loading": "Loading…",
"settingsTitle": "Settings",
"mySourcesTitle": "My sources",
"pollNow": "Fetch now",
"pollNowTitle": "Fetch due sources now",
"polling": "Fetching…",
"pollError": "The fetch could not be triggered. You may not have the required permissions.",
"pollErrorDismiss": "Dismiss"
},
"results": {
"colTitle": "Title",
"colBuyer": "Contracting Authority",
"colDeadline": "Deadline",
"colValue": "Value",
"colPublished": "Published",
"colTriage": "Triage",
"noValue": "no value stated",
"error": "Could not load tenders.",
"emptyTitle": "No tenders found.",
"emptyBody": "Adjust the filters or disable \"open only\".",
"markUnread": "Mark as unread",
"markRead": "Mark as read",
"readLabel": "Read",
"unreadLabel": "Unread",
"removeFavorite": "Remove favorite",
"setFavorite": "Set favorite",
"favoriteOn": "★ Favorite",
"favoriteOff": "☆ Favorite",
"showingRange": "Showing {from}–{to} of {total}",
"prevPage": "← Back",
"nextPage": "Next →"
},
"filter": {
"sortPublished": "Publication date",
"sortDeadline": "Deadline",
"sortValue": "Estimated value",
"searchLabel": "Search",
"searchPlaceholder": "Title or contracting authority…",
"sortLabel": "Sort by",
"openOnlyLabel": "Open only",
"favOnlyLabel": "Favorites only",
"deadlineFromLabel": "Deadline from",
"deadlineToLabel": "Deadline to",
"plzLabel": "Postal code",
"plzPlaceholder": "e.g. 10",
"bundeslandLabel": "Federal state",
"bundeslandAll": "All federal states",
"cpvLabel": "Sector (CPV)",
"cpvPlaceholder": "e.g. construction, IT, health…",
"cpvRemoveAria": "Remove division {code}",
"valueMinLabel": "Estimated value from (€)",
"valueMinPlaceholder": "min.",
"valueMaxLabel": "Estimated value to (€)",
"valueMaxPlaceholder": "max.",
"includeNullValueLabel": "Include tenders without a stated value",
"bundeslandOptions": {
"DE1": "Baden-Württemberg",
"DE2": "Bavaria",
"DE3": "Berlin",
"DE4": "Brandenburg",
"DE5": "Bremen",
"DE6": "Hamburg",
"DE7": "Hesse",
"DE8": "Mecklenburg-Western Pomerania",
"DE9": "Lower Saxony",
"DEA": "North Rhine-Westphalia",
"DEB": "Rhineland-Palatinate",
"DEC": "Saarland",
"DED": "Saxony",
"DEE": "Saxony-Anhalt",
"DEF": "Schleswig-Holstein",
"DEG": "Thuringia"
},
"cpvDivisions": {
"03": "Agricultural, farming, fishing, forestry and related products",
"09": "Petroleum products, fuel, electricity and other sources of energy",
"14": "Mining, basic metals and related products",
"15": "Food, beverages, tobacco and related products",
"16": "Agricultural machinery",
"18": "Clothing, footwear, luggage articles and accessories",
"19": "Leather and textile fabrics, plastic and rubber materials",
"22": "Printed matter and related products",
"24": "Chemical products",
"30": "Office and computing machinery, equipment and supplies except furniture and software packages",
"31": "Electrical machinery, apparatus, equipment and consumables; lighting",
"32": "Radio, television, communication, telecommunication and related equipment",
"33": "Medical equipment, pharmaceutical products and personal care products",
"34": "Transport equipment and auxiliary products to transportation",
"35": "Security, fire-fighting, police and defence equipment",
"37": "Musical instruments, sport goods, games, toys, handicraft, art materials and accessories",
"38": "Laboratory, optical and precision equipment (excl. glasses)",
"39": "Furniture (including office furniture), furnishings, domestic appliances (excl. lighting) and cleaning products",
"41": "Collected and purified water",
"42": "Industrial machinery",
"43": "Machinery for mining, quarrying, construction equipment",
"44": "Construction structures and materials; auxiliary products to construction",
"45": "Construction work",
"48": "Software package and information systems",
"50": "Repair and maintenance services",
"51": "Installation services (except software)",
"55": "Hotel, restaurant and retail trade services",
"60": "Transport services (excl. waste transport)",
"63": "Supporting and auxiliary transport services; travel agency services",
"64": "Postal and telecommunications services",
"65": "Public utilities",
"66": "Financial and insurance services",
"70": "Real estate services",
"71": "Architectural, construction, engineering and inspection services",
"72": "IT services: consulting, software development, Internet and support",
"73": "Research and development services and related consultancy services",
"75": "Administration, defence and social security services",
"76": "Services related to the oil and gas industry",
"77": "Agricultural, forestry, horticultural, aquacultural and apicultural services",
"79": "Business services: law, marketing, consulting, recruitment, printing and security",
"80": "Education and training services",
"85": "Health and social work services",
"90": "Sewage, refuse, cleaning and environmental services",
"92": "Recreational, cultural and sporting services",
"98": "Other community, social and personal services"
}
},
"savedSearch": {
"title": "Saved Searches",
"saveAsLabel": "Save current filters as",
"namePlaceholder": "Name of the saved search…",
"save": "Save",
"cancel": "Cancel",
"loading": "Loading…",
"empty": "No saved searches yet.",
"loadTitle": "Load saved search",
"instantAlertTitle": "Instant email alert for new matches of this search",
"instantAlertLabel": "Instant alert",
"instantAlertAria": "Instant alert for {name}",
"renameTitle": "Rename",
"renameAria": "Rename {name}",
"renameConfirmAria": "Confirm rename of {name}",
"renameCancelAria": "Cancel rename",
"deleteTitle": "Delete",
"deleteAria": "Delete {name}",
"errorLoad": "Could not load saved searches.",
"errorSave": "Could not save the search.",
"errorRename": "Could not rename the search.",
"errorDelete": "Could not delete the search.",
"errorToggleAlert": "Could not toggle the instant alert."
},
"detail": {
"dialogAria": "Tender details",
"title": "Tender details",
"close": "Close",
"loading": "Loading…",
"error": "Could not load the tender.",
"fieldTitle": "Title",
"fieldBuyer": "Contracting Authority",
"fieldRegion": "Region / Postal code / Federal state",
"fieldCpv": "CPV codes",
"noCpv": "no CPV codes stated",
"fieldDeadline": "Deadline",
"noDeadline": "no deadline stated",
"fieldValue": "Estimated Value",
"noValue": "no value stated",
"fieldProcedureType": "Procedure Type",
"fieldStatus": "Status",
"fieldPublished": "Published",
"mirrorNotice": "Tender documents are not mirrored locally — the link below leads directly to the original on the source portal.",
"sourceLink": "{portal}: View tender on source portal →",
"noSourceLink": "{portal}: No source link available.",
"sourceLinkFallback": "View tender on source portal →",
"noSourceLinkFallback": "No source link available."
},
"coverage": {
"label": "Data coverage:",
"text": "Currently only EU-wide above-threshold tenders from the central DÖE source are ingested. Below-threshold tenders from individual contracting authorities are not yet included — a short result list is therefore not a defect.",
"denylistLabel": "Manual watch:",
"denylistText": "These portals do not permit automated access under their terms of use and must therefore be checked manually:"
},
"settings": {
"title": "Tender Radar — Settings",
"rssSectionTitle": "RSS Feeds",
"rssSectionBody": "Public, platform-wide RSS sources (e.g. service.bund.de or a subreport-elvis municipal feed) — applies equally to all tenants, not configurable per tenant.",
"rssSectionUserNote": "Add personal feeds under \"My sources\".",
"accessDeniedText": "This page manages platform-wide settings and is reserved for administrators.",
"digestIntervalLabel": "Digest Interval",
"digestDaily": "Daily",
"digestWeekly": "Weekly",
"digestOff": "Off",
"digestHelp": "Summarizes new matches from your saved searches in a daily or weekly digest email. \"Off\" disables the digest — instant alerts per saved search remain usable independently.",
"saveSuccess": "Setting saved.",
"errorLoad": "Could not load notification setting",
"errorSave": "Could not save notification setting"
},
"sourceConfig": {
"errorLoad": "Could not load configuration",
"errorSave": "Could not save settings",
"validationError": "Interval must be between {min} and {max} minutes.",
"sourceLabel": "Source",
"lastIngestedLabel": "Last Ingested Day",
"neverIngested": "Not yet ingested",
"pollIntervalLabel": "Poll Interval (Minutes) *",
"minutesSuffix": "min.",
"pollIntervalHelp": "Cron tick frequency ({min}–{max} min.) — the actual DÖE poll is additionally throttled by the day cursor.",
"activeLabel": "Active",
"saving": "Saving...",
"save": "Save",
"saveSuccess": "Settings saved."
},
"rssFeeds": {
"errorLoad": "Could not load RSS feeds",
"errorAdd": "Could not save the RSS feed",
"errorRemove": "Could not remove the RSS feed",
"validationRequired": "URL and label are required.",
"empty": "No RSS feeds configured yet.",
"activeLabel": "active",
"inactiveLabel": "inactive",
"removeAria": "Remove RSS feed \"{label}\"",
"removing": "Removing...",
"remove": "Remove",
"urlLabel": "Feed URL *",
"urlPlaceholder": "https://www.service.bund.de/.../RSSGenerator_Ausschreibungen.xml",
"labelLabel": "Label *",
"labelPlaceholder": "e.g. service-bund",
"adding": "Adding...",
"add": "Add Feed"
},
"emailAlerts": {
"notSaved": "Not yet saved — fill in and save the mailbox configuration.",
"protocolLabel": "Protocol *",
"protocolImap": "IMAP",
"protocolExchange": "Exchange",
"hostLabelExchange": "EWS Endpoint URL",
"hostLabelImap": "IMAP Server",
"hostPlaceholderExchange": "https://mail.company.com/EWS/Exchange.asmx",
"hostPlaceholderImap": "imap.company.com",
"portLabel": "Port *",
"encryptionLabel": "Encryption *",
"encryptionNone": "None",
"encryptionStarttls": "STARTTLS",
"encryptionSslTls": "SSL-TLS",
"folderLabel": "Folder",
"folderPlaceholderExchange": "Inbox",
"folderPlaceholderImap": "INBOX",
"domainLabel": "Windows Domain",
"domainPlaceholder": "CONTOSO",
"senderFilterLabel": "Sender Filter",
"senderFilterPlaceholder": "alerts@tenderportal.com",
"usernameLabel": "Username",
"passwordLabel": "Password",
"passwordPlaceholder": "••••••••",
"showPassword": "Show password",
"hidePassword": "Hide password",
"activeLabel": "Active",
"saving": "Saving...",
"save": "Save",
"saveSuccess": "Settings saved.",
"errorSave": "Could not save settings",
"testConnection": "Test Connection",
"testTesting": "Testing connection...",
"testSuccess": "Connection successful",
"testFailed": "Connection failed: {error}"
},
"mySources": {
"title": "My sources",
"intro": "Tenders that arrive through your mailbox will then appear in the results list for every colleague at your organization — there is no separate visibility per mailbox.",
"mailboxSectionTitle": "My mailbox",
"feedsSectionTitle": "My feeds",
"notificationSectionTitle": "Notification",
"platformFeedsNote": "These feeds are maintained by the administration and apply to everyone."
}
}
}