{ "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" }, "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" }, "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" } }, "widgets": { "emptyHeading": "No active widgets", "emptyBody": "Click edit to add widgets to your dashboard.", "addWidget": "Add widget", "catalogTitle": "Add widget", "deleteTooltip": "Remove widget", "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" }, "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." }, "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}" }, "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" }, "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.", "deleteError": "Could not delete group. Please try again.", "ldapBind": { "hint": "Choose an AD group from the list to sync membership automatically.", "bound": "Bound to: {ldapDn}", "unbind": "Remove binding", "searchPlaceholder": "Search AD groups...", "discoverError": "Could not load AD groups. Please try again.", "noResults": "No AD groups found." }, "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} members and {grantCount} 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." }, "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" }, "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." }, "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", "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.", "emailSectionTitle": "Email Alerts", "emailSectionBody": "Mailbox that tender portals send their notification emails to — configurable per tenant, separate from the DKV invoice mailbox. Tenders detected from these emails are only visible to your tenant.", "notificationsSectionTitle": "Notifications", "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" } } }