{"openSourceLicences":{"title":"Open-source licences","intro":"Uhrwerk.AI is built with open-source software. The components of the web app are listed below. The complete licence texts and notices are in the third-party notices file, and the full component inventory is in the CycloneDX software bill of materials (SBOM).","downloadsLabel":"Notice files","noticesLink":"Third-party notices (text)","sbomLink":"Software bill of materials (CycloneDX JSON)","serverHeading":"Server software (on-premises installations)","serverBody":"Uhrwerk.AI server images (API, Agent, Web server and Sandbox) are built to contain, in the directory /licenses/, a list of all third-party software they include (THIRD_PARTY_NOTICES.txt), a software bill of materials (sbom.cdx.json) and a written offer (WRITTEN_OFFER.md). The offer provides, for at least three years, the complete corresponding source code of every component licensed under the GPL (any version, with or without an exception), LGPL, AGPL, MPL, EPL, CDDL, EUPL or any other licence that requires the source code to be made available, including the Debian operating-system packages of the base images.","sourceRequest":"Requests:","freetypeCredit":"Credits that a licence requires, such as the FreeType Project credit, are part of the notices file.","componentsHeading":"Components of the web app","componentsScope":"The list covers the production dependencies of the web app and the build tools bundled into it. It may include packages that run only on the server.","filterLabel":"Filter components","filterPlaceholder":"Search by name or licence","resultCount":"{shown} of {total} components","resultCountOne":"{shown} of 1 component","loading":"Loading components…","notGenerated":"Notices are generated during the production build.","loadFailed":"The component list could not be loaded.","retry":"Try again","empty":"No components match this filter.","columnName":"Component","columnVersion":"Version","columnLicence":"Licence","columnHomepage":"Homepage","homepageLink":"Homepage of {name} (opens in a new tab)","backToApp":"Back to the app"},"processPermissions":{"sections":"Access settings sections","taskInformation":"Information visible to this team","previewLimited":"This shows task or requester access only. A person with broader process permissions may see more.","dataAccessShortcut":"Looking for submission fields or who can see information? Configure requester and team access in People & access.","draftSaved":"Draft saved","draftUnsaved":"Draft changes not saved","saveDraft":"Save draft","editData":"Add or manage fields in Case information","disclosureBoundary":"These selections describe task and requester access. People with access to all cases can see more. Saving updates the draft; publication applies it to new cases. Existing cases keep their version unless migrated.","teamAccessHint":"Members of this group handle this step. They receive the information selected below for their task and its completed history, without needing access to every case.","stepSummary":"Visible values: {fields} · With source documents: {documents}","coverage":"{connected} of {members} members of {group} are connected to {system}.","coverageNoCountTeam":"No count for {group} and {system}. A count is shown for teams of 3 to 200 members.","coverageNoCountNotShared":"No count for {group} and {system}. The connection is not shared with the workspace.","coverageTruncated":"Counts are shown for the first 25 pairs of team and system only.","requesterSummary":"Form fields: {inputs} · Result fields: {results} · With source documents: {documents}","requesterHint":"They can follow their own case and see what they submitted. Choose the form fields first, then any additional results they should receive.","appliesOnPublish":"Applies after publication","informationHint":"Open the requester or a step below. Set the submission form, assign a responsible team, and choose the values and original documents they may see.","informationTitle":"Who sees which information?","sharingSaved":"Access settings saved","sharingUnsaved":"Access changes not saved","discard":"Discard access changes","legacyStartHint":"Responsible teams from the published process may still start cases. The audience selected above is additional. Remove this existing rule only if starting should depend on the audience above alone.","legacySummary":"Plus responsible teams under the existing start rule","unknownGroup":"Unavailable group ({id})","casesInherited":"Also includes people granted both Edit and Start.","readInherited":"Also includes people allowed to edit or start cases.","publishingAccess":"Publishing & live tests:","alwaysFullAccess":"Always full access:","appliesImmediately":"Applies when saved","actionHint":"Choose an action to set who can use it. Responsible teams are assigned below.","actionTitle":"Who can do what?","selectedTeams":"Selected groups","creatorOnly":"Creator & admins only","taskTextShared":"Task instructions and choice labels are visible to this team.","taskTextPrivate":"Task instructions and choice labels are hidden from this team.","viewDefinitionHint":"View steps, teams and shared information","interactionText":"Share task instructions and choice labels","interactionTextHint":"The responsible team can see task instructions and answer choices. These texts may contain workflow values. Review them before publishing.","taskTextHidden":"The answer choices have not been shared with your team. Ask a process editor to enable task text sharing for this step.","accessRefreshing":"Refreshing access. You will be taken to an available view.","accessUnavailable":"This process is no longer available to you. Previously displayed data has been closed.","viewDefinition":"View process","boundedRunHint":"Only the run status and information shared with this task are shown. Task results appear in the case history.","title":"People & access","privateHint":"Only the creator and workspace administrators.","ownerHint":"The creator and workspace admins. Only they can change these permissions and hold, cancel or undo cases.","readonly":"You can view sharing. Only the creator and workspace administrators can change it.","read":"View the process","readHint":"See how the process is built, without access to case data.","write":"Edit the process","writeHint":"Edit and validate the definition. This also allows viewing the process.","execute":"Start cases","executeHint":"Submit a case through the published entry point. This also allows viewing the process.","readCases":"View all cases","readCasesHint":"See all cases. This does not permit editing the process or answering another team’s tasks.","inherited":"Anyone granted both Edit and Start can also publish, run live tests and view all cases. Documents and linked workflows keep their own access checks.","retireLegacy":"Remove the existing team start rule","saved":"Access saved.","reload":"Reload current access","preview":"Check a perspective","perspective":"Perspective","requester":"People submitting a case","synthetic":"Synthetic preview using your draft’s field selections. No real case data or impersonation.","sampleValue":"Example value","documentAllowed":"Source document allowed","noFields":"Only basic case status is visible. No fields or documents are shared.","publishSummary":"Audience and information sharing","taskSummary":"{count} steps share selected fields with their responsible team.","visibleFields":"Information this team can see","visibleHint":"These fields are visible for this task and remain in its completed history.","documentFields":"Source documents this team can open","documentHint":"Select only documents the team needs. Sharing an extracted value does not share its source document.","inputFields":"Fields on the submission form","inputHint":"Requesters can submit only these fields.","resultFields":"Results visible to the requester","resultHint":"Additional fields the requester can see after submission.","requesterDocuments":"Source documents visible to the requester","accessChanged":"Your access has changed. Open the process again to see what is available."},"indexDestination":{"indexedFor":"Indexed for: {audience}","audienceWorkspace":"Everyone in the workspace","audienceOnlyYou":"Only you","audienceOnlyOwner":"Only {owner}","audienceGroupUnknown":"A workspace group","ownerFallback":"the connection owner","reasonShared":"This connection is shared.","reasonSharedMailbox":"Shared mailbox of {owner}.","reasonPrivateConnection":"This connection is not shared.","reasonAlwaysPrivate":"This connector always indexes privately.","reasonWorkspaceDefault":"Workspace default.","reasonYourPrimaryGroup":"Your primary group (workspace default).","reasonOwnerPrimaryGroup":"{owner}'s primary group (workspace default).","reasonPrimaryGroupMissing":"The workspace default is the primary group, but no primary group is set.","existingRealigned":"Already indexed items are updated to match.","existingPreserved":"Already indexed items keep their current audience.","loading":"Checking where indexed items go…"},"visibilityWarning":{"label":"Warning:","fileDefaultOrgOnly":"Everyone in this workspace can read items created this way.","fileDefaultPrimaryGroup":"Members of the responsible person's primary group can read items created this way.","emailIngestionPrivate":"Only you can read the emails and attachments ingested from this mailbox.","emailIngestionOrgOnly":"Everyone in this workspace can read the emails and attachments ingested from this mailbox.","emailIngestionPrivateNoPrimaryGroup":"Only you can read the emails and attachments ingested from this mailbox: the workspace shares them with your primary group, and you have none.","emailIngestionGroup":"Members of {group}, your primary group, can read the emails and attachments ingested from this mailbox.","emailIngestionUnknown":"Workspace admins choose who can read ingested emails and attachments. They may be readable by your whole workspace or your primary group.","knowledgeItemOrgOnly":"Everyone in this workspace can find and read this item.","knowledgeItemGroup":"Members of the selected groups can find and read this item."},"workflowFiles":{"loading":"Loading file…","unavailable":"File unavailable","deleted":"This file is no longer available.","pending":"Preparing preview…","previewFailed":"Preview unavailable. You can still download the file.","noPreview":"No preview is available for this file type.","download":"Download {filename}","expand":"Expand preview of {filename}","open":"Preview {filename}","close":"Close preview","retry":"Try again","zoomIn":"Zoom in","zoomOut":"Zoom out","resetZoom":"Reset zoom","pages":"{count} pages","pageNumber":"Page number","previousPage":"Previous page","nextPage":"Next page","showFields":"Show field labels","fieldsOnPage":"Fields on this page","sourceHighlight":"Source of {field}","page":"{filename}, page {page}","actionFailed":"Could not open the file. Try again."},"emailViewer":{"from":"From","to":"To","cc":"Cc","replyTo":"Reply to","date":"Date","subject":"Subject","noSubject":"(no subject)","noText":"This email has no text.","truncated":"The email is longer than the preview shows. Download the file to read all of it.","attachments":"Attachments","openAttachment":"Open {filename}","photos":"Photos","downloadAttachment":"Download {filename}","openInMailbox":"Open in mailbox"},"appChat":{"offset":"Row offset","pageSize":"Page size","filters":"Filters","sort":"Sort","hiddenYears":"Hidden overlay years","run":"Run","from":"From","to":"To","pools":"Pools","ask":"Ask AI","context":"App context","remove":"Remove context","waitForView":"Wait for the current view to finish loading.","captureFailed":"This view could not be attached. Reduce the selection and try again.","unknown":"Unknown","captured":"Captured","readAt":"Read at","sourceAsOf":"Source as of","dataset":"Dataset","datasets":"Datasets","knowledgeItem":"Knowledge Item","knowledgeItems":"Knowledge Items","visibleExcerpt":"Visible excerpt","visibleRows":"Visible rows","excerptHelp":"This is a captured excerpt, not the full dataset. Chat can use authorized tools to read more or check current data.","truncated":"Some rows or text are omitted. This excerpt may be incomplete.","stale":"This capture has expired. Return to the app to capture the current view, or remove the context.","unavailable":"This app context is unavailable or belongs to another workspace. Remove it or capture the view again.","returnToApp":"Return to app"},"datasetPermissions":{"title":"People & access","owner":"Owner","alwaysAdmitted":"The owner and current workspace owners and administrators always have full access and can change these settings.","read":"Who can view","write":"Who can change","effective":"Effective view access:","processOwned":"Access follows the process that owns this dataset.","private":"Private","privateDescription":"Only the dataset owner and workspace administrators.","workspace":"Whole workspace","workspaceDescription":"All current members of this workspace.","groups":"Groups","groupsDescription":"Members of the selected groups.","label":"Audience","selectedGroups":"Selected groups","noGroups":"No groups available.","groupRequired":"Select at least one group (maximum 100).","save":"Save access","saving":"Saving access…","failed":"Access could not be saved. Your selections are preserved.","conflict":"Access changed elsewhere. Review the current settings and make your selections again.","loading":"Loading access…","loadFailed":"Access settings could not be loaded.","retry":"Retry","saved":"Access saved.","readonly":"You can view these settings. Only the owner or a workspace administrator can change them.","appendOnly":"Append-only","appendOnlyDescription":"Rows can be added but not changed or deleted.","appendOnlyFailed":"The append-only setting could not be saved."},"workflowPermissions":{"title":"Permissions","read":"Read","write":"Write","execute":"Execute","owner":"The workflow owner and current workspace owners and administrators always have full access and can manage permissions.","inherited":"Read includes everyone granted Write or Execute. The direct Read selection stays independent.","effective":"Effective Read:","private":"Private","privateDescription":"Only the workflow owner and workspace administrators.","workspace":"Whole workspace","workspaceDescription":"All current members of this workspace.","groups":"Groups","groupsDescription":"Members of the selected groups.","label":"Audience","selectedGroups":"Selected groups","noGroups":"No groups available.","groupRequired":"Select at least one group (maximum 100).","save":"Save permissions","saving":"Saving permissions…","failed":"Permissions could not be saved. Your selections are preserved.","conflict":"Permissions changed elsewhere. Review the current policy and make your selections again.","loading":"Loading permissions…","loadFailed":"Permissions could not be loaded.","retry":"Retry","saved":"Permissions saved.","readonly":"You can view these permissions. Only the workflow owner or a workspace administrator can change them."},"emailPreferences":{"eyebrow":"Inbox reminders","title":"Email preferences","description":"Choose whether this workspace sends you a scheduled Inbox digest.","loadingAria":"Loading email preferences","workspaceLabel":"Sending workspace","controlLabel":"Inbox digest reminders","controlDescription":"Receive scheduled email reminders when this workspace has new Inbox notifications.","essentialUnaffected":"Essential account, security, invitation, and billing emails are not affected.","deliveryPausedTitle":"Email delivery is paused","deliveryPaused":"Email delivery is paused because of a delivery problem or complaint. The pause may be temporary. Turning reminders on will not clear it.","saving":"Saving your preference…","saved":"Preference saved.","saveFailed":"Your preference could not be saved. Try again.","loadFailed":"This link could not be opened. Try again, or manage notifications after signing in.","unavailable":"This link is invalid, expired, or unavailable.","retry":"Try again","settingsLink":"Open notification settings"},"apps":{"configured":{"element":{"formulaError":"This element could not be shown because its formula failed ({code}).","renderError":"This element could not be shown."},"data":{"loading":"Loading data…","invalid":"This element's data no longer matches its dataset: the field \"{field}\" is missing or has changed.","invalidUnknown":"This element's data no longer matches its dataset.","denied":"You do not have access to this data.","failed":"The data could not be loaded.","empty":"No data yet.","truncated":"Showing the first {count} rows"},"input":{"required":"This field is required.","invalid":"Check this value."},"action":{"failed":"The action could not be run.","forbidden":"You cannot run this action."},"confirm":{"title":"Confirm the changes","description":"This action makes the following changes.","confirm":"Confirm","cancel":"Cancel","pending":"Working…","insert":"Add rows to {dataset}","upsert":"Add or update rows in {dataset}","workflow":"Run the workflow {workflow}","other":"Step {step}","grantAccess":"With the access this app was granted","viewerAccess":"With your access","moreRows":"+{count} more rows","matchOn":"Matched on: {columns}","noInputs":"No inputs","empty":"empty","invalid":"The confirmation expired or something changed. Run the action again.","partial":"{message} Earlier steps may already have been applied."},"run":{"notStarted":"Not run yet.","loadFailed":"The run status could not be loaded.","running":"Running","waiting":"Waiting for an answer","succeeded":"Finished","failed":"Failed","canceled":"Canceled","cancel":"Cancel run","noFiles":"No files yet.","answerElsewhere":"Answer this request on the workflow's Runs page.","approve":"Approve","reject":"Reject","submit":"Submit","answerFailed":"The answer could not be sent."},"result":{"copy":"Copy","copied":"Copied"},"stat":{"up":"Up","down":"Down","flat":"No change"},"table":{"empty":"No rows to show","range":"{from}–{to} of {total}","previous":"Previous page","next":"Next page","open":"Open {name}"},"chart":{"loadFailed":"The chart could not be loaded.","retry":"Try again","label":"Chart: {series}"},"page":{"loading":"Loading the app…","unavailableTitle":"Configured apps are not available","unavailable":"Configured apps are not switched on for this workspace.","deniedTitle":"No access","denied":"This app does not exist or you do not have access to it.","disabledTitle":"App switched off","disabled":"A manager switched this app off.","notPublishedTitle":"Not published yet","notPublished":"This app has no published version yet.","loadFailed":"The app could not be loaded.","retry":"Try again","browse":"Browse apps","draftNotice":"You are viewing the draft. Viewers see the published version.","screens":"Screens"},"manage":{"open":"Manage","title":"Manage app","description":"Versions, availability, sharing and data access of this app."},"versions":{"title":"Versions","version":"Version {version}","published":"Published {date}","restoredFrom":"Restored from version {version}","current":"Current","restore":"Restore","restored":"Version {version} is now published.","restoreFailed":"The version could not be restored.","empty":"No published versions yet.","loadFailed":"The versions could not be loaded."},"status":{"title":"Availability","enabled":"App switched on","description":"When the app is switched off, nobody can open or run it.","failed":"The status could not be changed."},"sharing":{"title":"Sharing","description":"Who may use, edit and manage this app. Editing includes using; managing covers publishing, sharing and data access.","use":"Use","edit":"Edit","manage":"Manage","save":"Save sharing","saving":"Saving…","saved":"Sharing saved.","failed":"Sharing could not be saved.","conflict":"Someone else changed the sharing. Reload the latest settings and try again.","reload":"Reload","loadFailed":"The sharing settings could not be loaded.","private":"Only managers","privateDescription":"Only the people who manage this app.","workspace":"Workspace","workspaceDescription":"Every member of this workspace.","groups":"Groups","groupsDescription":"Members of the selected groups.","label":"Audience","selectedGroups":"Selected groups","noGroups":"No groups yet.","groupRequired":"Choose at least one group."},"access":{"title":"Screen and action access"},"grants":{"title":"Data access","description":"Let the app read or write a dataset on behalf of its users. You can grant only access you hold yourself.","dataset":"Dataset","permission":"Access","read":"Read","write":"Write","add":"Grant access","adding":"Granting…","revoke":"Revoke","revokeGrant":"Revoke {permission} access to {dataset}","empty":"This app has no data access yet.","noDatasets":"No datasets you can read.","unknownDataset":"Dataset {id}","failed":"The data access could not be changed.","loadFailed":"The data access could not be loaded."},"admin":{"name":"Configured apps","description":"Apps that members build in Uhrwerk.AI from screens, data views and actions."},"settings":{"title":"Configured apps","description":"Switch the apps you manage on or off.","empty":"No configured apps you can edit.","enable":"Switch {name} on","open":"Open {name}","failed":"The app could not be switched.","loadFailed":"The configured apps could not be loaded."}},"admin":{"title":"Enabled apps","description":"Choose which apps this organisation can use. Each app also requires access to its underlying capabilities and data.","custom":"App availability is managed directly for this organisation.","package":"App availability follows the assigned package and explicit exceptions.","capabilityMissing":"Needs {features}, switched on in the Features tab. Enabling the app does not switch it on.","loadFailed":"App settings could not be loaded.","saveFailed":"The app setting could not be saved. The current settings have been refreshed.","retry":"Try again","loading":"Loading app settings…","archived":"Archived organisations cannot be changed."},"access":{"title":"View access","description":"Choose who can open each view. Views only control what the app shows; the data stays protected by its datasets' own access.","default":"Default","defaultHint":"Not changed from the app's built-in setting.","cancel":"Cancel","summaryView":"{count} view","summaryViews":"{count} views","summaryGroups":"{count} for groups","summaryAdmins":"{count} administrators only","summaryWorkspace":"all open to the whole workspace","private":"Administrators only","privateDescription":"Only workspace owners and administrators.","workspace":"Whole workspace","workspaceDescription":"All current members of this workspace.","groups":"Groups","groupsDescription":"Members of the selected groups.","label":"Audience","selectedGroups":"Selected groups","noGroups":"No groups available.","groupRequired":"Select at least one group (maximum 100).","save":"Save","saving":"Saving…","saved":"Access saved.","failed":"Access could not be saved. Your selections are preserved.","conflict":"Access changed elsewhere. Review the current settings and make your selections again.","loading":"Loading view access…","loadFailed":"View access could not be loaded.","retry":"Retry"},"historyAction":"History","historyDescription":"Reopen saved work in this workspace.","closeHistory":"Close history","dropHint":"Drop a file here or choose one.","oneFileOnly":"Choose one file at a time.","research":{"new":"New research","showExcerpt":"Show excerpt","exampleQuestion":"What are practical ways to reduce energy use in an office?","more":"Load older research","noAnswer":"No answer was completed. You can run this research again.","name":"Research","description":"A question or a public URL. An answer with sources.","mode":"Research input","question":"Question","url":"Public URL","questionLabel":"Your question","urlLabel":"Page URL","questionPlaceholder":"What would you like to find out?","urlPlaceholder":"https://…","scope":"Ordinary web research using the sources available to this workspace.","submit":"Research","working":"Researching…","loading":"Loading research…","loadFailed":"Research could not be loaded.","submitFailed":"Research could not be started. Try again to safely recover the request.","invalidUrl":"Enter a public HTTPS URL without credentials.","invalidQuestion":"Enter a question of up to 4,000 characters.","background":"Research continues in the background. You can reopen this result from your history.","stop":"Stop research","stopFailed":"Research could not be stopped. Please try again.","failed":"Research failed. The source or research service may be unavailable.","answer":"Answer","sources":"Sources","noSources":"No readable sources were retrieved.","copy":"Copy answer","copied":"Copied","copyFailed":"The answer could not be copied. You can download it instead.","download":"Download Markdown","empty":"Ask a focused question or read a specific page to begin.","history":"Recent research","emptyHistory":"Your research will appear here."},"emailDrafter":{"name":"Email Drafter","description":"Replies, outreach and follow-ups that follow your saved rules.","new":"New email","history":"Recent drafts","loading":"Loading…","noHistory":"Your drafts will appear here.","loadMore":"Load older drafts","historyLoadError":"Older drafts could not be loaded. Try again.","retry":"Retry","refreshStatus":"Refresh status","statusUnavailable":"The draft status could not be loaded. Refresh to check the result.","compose":"Compose email","scenario":"Type of email","groups":{"general":"General","sales":"Sales","recruiting":"Recruiting","service":"Service"},"scenarios":{"reply":"Reply to an email","new":"New email","follow_up":"Follow-up","meeting_request":"Meeting request","thank_you":"Thank you","introduction":"Introduction","status_update":"Status update","cold_outreach":"Cold outreach","demo_follow_up":"Demo follow-up","quote_follow_up":"Quote follow-up","re_engagement":"Re-engage a contact","candidate_outreach":"Candidate outreach","interview_invitation":"Interview invitation","candidate_rejection":"Candidate rejection","offer_email":"Job offer","complaint_response":"Response to a complaint"},"incomingProminent":"Email you are replying to","incomingOptional":"Add the original email (optional)","incomingEmail":"Original email","incomingPlaceholder":"Paste the email you received…","instructions":"What should the email say?","instructionsPlaceholder":"Key points, facts and the outcome you want, for example: confirm Thursday, 10:00, ask for the signed contract…","recipient":"Recipient (optional)","recipientName":"Name","recipientRole":"Role","recipientCompany":"Company","tone":"Tone","tones":{"professional":"Professional","friendly":"Friendly","formal":"Formal","direct":"Direct","persuasive":"Persuasive","empathetic":"Empathetic"},"length":"Length","lengths":{"short":"Short","medium":"Medium","long":"Long"},"language":"Language","sameAsInput":"Same as input","addressForm":"Form of address","addressForms":{"auto":"Automatic","formal":"Formal (Sie)","informal":"Informal (Du)"},"variants":"Number of drafts","variantOne":"1 draft","variantMany":"{count} drafts","rulesTitle":"Your writing rules","manageRules":"Manage rules","manageRulesItem":"Manage rules…","ruleSet":"Rule set","noRules":"No rules","ruleSetsUnavailable":"Saving rule sets is not available right now. You can still add rules for this email below.","ruleSetsError":"Your rule sets could not be loaded.","rulesForEmail":"Rules and signature for this email","rulesCopiedFrom":"Copied from","rulesCopiedHint":"Changes here apply to this email only.","rulesOneOffHint":"These rules apply to this email only. Save them as a rule set to reuse them.","rulesLabel":"Rules","rulesPlaceholder":"For example: Never use exclamation marks. Always propose two time slots.","signatureLabel":"Signature","signaturePlaceholder":"Sign-off and signature, added exactly as written","invalid":"Add what the email should say or paste the email you are replying to.","failed":"The draft could not be completed. Your input is retained. Retry, or check your workspace access.","endedWithoutResult":"This draft ended without a result. Your input is retained.","needsInput":"Describe the email or paste the one you are replying to.","draft":"Draft email","stop":"Stop","result":"Drafts","processing":"Drafting…","background":"Once submitted, you can leave and reopen this draft from history.","empty":"Your drafts appear here","emptyHint":"Choose the type of email, add your key points, and draft. Refine any result until it fits.","draftN":"Draft","draftSingle":"Draft","earlierDrafts":"Earlier drafts","subject":"Subject","copied":"Copied","copyEmail":"Copy email","copyBody":"Copy body","openInMail":"Open in email app","refine":"Refine","mailtoTruncated":"Long drafts are shortened in the email app link. Use Copy for the full text.","copyError":"The text could not be copied. Select it and copy manually.","refineChips":{"shorter":"Shorter","moreFormal":"More formal","friendlier":"Friendlier","morePersuasive":"More persuasive","callToAction":"Add a clear call to action","grammar":"Fix grammar only"},"refineInput":"Describe a change","refinePlaceholder":"Or describe your own change…","applyRefine":"Refine","close":"Close","manageTitle":"Rule sets","manageDescription":"Save your writing rules, signature and defaults once and reuse them for every email.","newRuleSet":"New rule set","editRuleSet":"Edit rule set","duplicateRuleSet":"Duplicate rule set","deleteRuleSet":"Delete rule set","ruleSetName":"Name","nameRequired":"Enter a name.","nameTaken":"A rule set with this name already exists.","defaultsHint":"Defaults are applied to the form when you choose this rule set.","keepCurrent":"Keep current","ruleSetSaveError":"The rule set could not be saved. Please try again.","saveRuleSet":"Save rule set","cancel":"Cancel","startersTitle":"Start from an example","startersHint":"Examples are only suggestions. Nothing is saved until you save it.","starters":{"general":{"name":"General business","rules":"Be clear and polite. Lead with the main point. Use short paragraphs. Never use exclamation marks.","signature":"Kind regards"},"sales":{"name":"Sales","rules":"Keep it short and personal. Open with something relevant to the recipient. End with one clear next step and offer two time slots. No pressure, no buzzwords.","signature":"Best regards"},"recruiting":{"name":"Recruiting","rules":"Be warm, respectful and transparent. Mention the role and the next step. Never give reasons that could be discriminatory. Answer within a clear time frame.","signature":"Kind regards"}},"savedRuleSets":"Your rule sets","noRuleSets":"You have no saved rule sets yet.","copySuffix":"copy","deleteTitle":"Delete this rule set?","deleteDescription":"Emails already drafted are not affected.","deleteConfirm":"Delete"},"documentGenerator":{"name":"Document Generator","description":"New documents, or Word files filled, revised or reused.","history":"Recent documents","loading":"Loading…","retry":"Try again","noHistory":"Your documents will appear here.","historyLoadError":"Older documents could not be loaded. Try again.","loadMore":"Load older documents","new":"New document","setup":"Document","mode":"What would you like to do?","modeCreate":"New document","modeFill":"Fill a template","modeRevise":"Revise a document","modeReuse":"Reuse a layout","help_create":"Describe the document and get a finished Word or PDF file.","help_fill":"Upload a Word template and the empty fields and placeholders are filled in for you.","help_revise":"Upload a Word document and change its wording while the formatting stays as it is.","help_reuse":"Turn last month's offer into a new one with the same look.","documentType":"Document type","type_offer":"Offer","type_letter":"Letter","type_report":"Report","type_proposal":"Proposal","type_meeting_minutes":"Meeting minutes","type_job_description":"Job description","type_job_reference":"Job reference","type_contract_draft":"Contract draft","type_cover_letter":"Cover letter","type_one_pager":"One-pager","type_press_release":"Press release","type_process_description":"Process description","type_other":"Other","instructions_create":"What should the document contain?","instructions_fill":"Which information should be filled in?","instructions_revise":"What should change?","instructions_reuse":"What is the new document about?","placeholder_offer":"Customer, products or services, quantities and prices, delivery time, validity of the offer…","placeholder_letter":"Recipient, subject, the key message and what you expect in return…","placeholder_report":"Topic, period, key findings, figures and the conclusions to draw…","placeholder_proposal":"Client, the problem to solve, your approach, schedule and budget…","placeholder_meeting_minutes":"Date, attendees, topics discussed, decisions and open tasks with owners…","placeholder_job_description":"Position, team, responsibilities, requirements and what you offer…","placeholder_job_reference":"Name, position, period of employment, tasks, performance and conduct…","placeholder_contract_draft":"Parties, subject of the contract, term, remuneration and special terms…","placeholder_cover_letter":"Position and company, your relevant experience and why you are a fit…","placeholder_one_pager":"Topic, audience, three key points and a call to action…","placeholder_press_release":"Announcement, who is involved, date, quotes and contact for enquiries…","placeholder_process_description":"Process name, purpose, steps in order, roles and tools involved…","placeholder_other":"Describe what the document should contain…","placeholder_fill":"For example: customer name, address, date and the amounts to enter…","placeholder_revise":"For example: replace the old product name, shorten the introduction, update the date…","placeholder_reuse":"For example: the same offer for a new customer, with these items and prices…","chooseTemplate":"Choose Word document","templateHint":"Word documents (.docx) up to 10 MB.","retained":"This Word document is kept from your last run. Choose another to replace it.","formatError":"Only Word documents (.docx) are supported.","sizeError":"This file is larger than 10 MB.","templateRequired":"Choose a Word document to continue.","sourceMaterial":"Source material (optional)","sourceHint":"Paste notes, an email thread or a transcript the document should draw on.","docTitle":"Title (optional)","titlePlaceholder":"Leave empty to let the title follow the content","language":"Language","languageAuto":"Detect automatically","tone":"Tone","length":"Length","outputFormat":"File format","tone_professional":"Professional","tone_friendly":"Friendly","tone_formal":"Formal","tone_direct":"Direct","tone_persuasive":"Persuasive","tone_empathetic":"Empathetic","length_short":"Short","length_medium":"Medium","length_long":"Long","format_docx":"Word","format_pdf":"PDF","format_both":"Both","styleRules":"Style rules","styleNone":"No saved style rules","manageStyles":"Manage","styleRulesInline":"Style rules for this document","styleRulesExample":"For example: Company: ACME GmbH. Always formal address. DIN 5008 letter structure. Currency EUR.","stylesUnavailable":"Saving style rules is not available here, so they apply to this document only.","stylesTitle":"Style rules","stylesDescription":"Saved house rules you can apply to any document. They are private to you.","styleName":"Name","styleNamePlaceholder":"For example: Company letters","addStyle":"New style rules","noStyles":"No style rules saved yet.","edit":"Edit","delete":"Delete","save":"Save","cancel":"Cancel","styleSaveError":"The style rules could not be saved. Try again.","generate":"Create document","stop":"Stop","processing":"Preparing your document…","uploading":"Uploading","background":"This can take a moment. You can stop it at any time.","failed":"The document could not be created. Check your input and try again.","endedWithoutResult":"The run ended without a document. Try again with more detail.","statusUnavailable":"The status of this run is unavailable right now.","refreshStatus":"Refresh status","result":"Result","empty":"Your document will appear here","emptyHint":"Choose what to create, add your details and start.","download":"Download","downloadError":"The files could not be downloaded. Try again.","reloadDownloads":"Reload files","useAsTemplate":"Use as template","startNew":"Start new"},"translator":{"formatDetails":"Document formatting","fixGlossary":"Check incomplete or duplicate terms","loadMore":"Load older translations","historyLoadError":"Older translations could not be loaded. Try again.","refreshStatus":"Refresh status","statusUnavailable":"Translation status could not be loaded. Refresh to check the result.","reloadDownloads":"Reload downloads","endedWithoutResult":"This translation ended without a result. Your input is retained.","name":"Translator","description":"Text, documents and terminology — ready to share onward.","new":"New translation","sourceLanguage":"Source language","targetLanguage":"Target language","detect":"Detect automatically","source":"Original","text":"Text","document":"Document","sourceText":"Source text","placeholder":"Paste the text you want to translate…","characters":"characters","chooseDocument":"Choose document","formats":"TXT, Markdown (.md) and DOCX · up to 5 MiB and 120,000 characters · UTF-8 text files.","structure":"Documents download in their original format. DOCX keeps paragraph and table structure; translated paragraphs use their first text style. Pagination and inline formatting can change. Text in images is not translated. Font-specific symbols, equations, embedded chart text, tracked deletions and embedded documents are rejected. PDF is not supported.","reselect":"The saved document will be reused. Choose another file to replace it.","result":"Translation","translatedText":"Translated text","uploading":"Uploading","processing":"Translating…","background":"All text is processed. Once submitted, you can leave and reopen this translation from history.","empty":"Ready for another language","emptyHint":"Add text or a document, choose your language, and translate.","glossary":"Your terminology","glossaryHint":"Up to 100 exact, case-sensitive terms. Longer matches take priority. Each source term must be unique.","addTerm":"Add term","sourceTerm":"Source term","targetTerm":"Target term","removeTerm":"Remove term","formatError":"Choose a TXT, Markdown (.md) or DOCX file. PDF is not supported.","sizeError":"Choose a document no larger than 5 MiB.","copyError":"The text could not be copied. Select it in the result and copy manually.","downloadError":"The download could not be prepared. Please try again.","failed":"Translation could not be completed. Your input is retained. Retry, or check the document format and workspace access.","retry":"Retry","translate":"Translate","stop":"Stop","copy":"Copy text","copied":"Copied","download":"Download","history":"Recent translations","loading":"Loading translations…","noHistory":"Your completed and running translations will appear here."},"imageGenerator":{"examplePrompt":"A simple illustration for a team workshop","tryExample":"Try a description","stop":"Stop generation","stopFailed":"Could not stop this generation. Please try again.","more":"Load older images","name":"Image Generator","description":"Describe an image, add a reference, and explore your variations.","new":"New image","prompt":"Description","placeholder":"A quiet lakeside cabin at sunrise, soft watercolor textures…","reference":"Reference image (optional)","referenceHint":"PNG, JPEG or WebP · up to 50 MB. The reference is used when editing the image.","savedReference":"Saved reference image","removeReference":"Remove reference","invalidFile":"Choose a PNG, JPEG or WebP image up to 50 MB.","generate":"Generate image","retrySubmission":"Retry submission","submitFailed":"The request could not be confirmed. Retry to check the same submission.","personal":"Your history and images are private to you in this workspace.","history":"History","loading":"Loading…","loadFailed":"Could not load your images.","noHistory":"Your image sessions will appear here.","results":"Images and variations","working":"Generating your image. You can return to this app later.","generationFailed":"This generation failed. Earlier images remain available. Reuse the input to try again.","emptyTitle":"Your next image starts here","emptyDescription":"Describe what you have in mind. Each generation creates one image and keeps it in your history.","reuse":"Reuse input","variationHint":"Generate again to create another variation.","preview":"Preview image","download":"Download","fileFailed":"This image could not be opened."},"meetings":{"billingDenied":"Processing is paused by the workspace billing limit. Try again after the limit is resolved.","previous":"Previous meetings","next":"Next meetings","uploadIncomplete":"The upload was not completed. Return to New meeting to upload your file.","name":"Meetings","description":"Audio, video or a live recording — your transcript and summary in one place.","record":"Record a meeting","recording":"Recording","requesting":"Waiting for microphone permission…","results":"Meeting results","stop":"Stop recording","cancel":"Cancel recording","recordHint":"Microphone only · up to 60 minutes. Upload before leaving this page to save your recording.","permission":"Allow microphone access in your browser, then try again.","microphoneError":"The microphone could not be opened. Check the selected input device and browser permissions.","unsupported":"Microphone recording requires a supported browser and a secure connection.","tooShort":"Record at least one second before stopping.","tooLarge":"This recording is too large. Please use a shorter recording.","newMeeting":"New meeting","upload":"Choose audio or video","start":"Create transcript and summary","limits":"MP3, M4A, WAV, OGG, WebM, MP4 and MOV. Up to 75 MiB on cloud storage; 25 MiB on other storage. Long media is processed in parts within the server’s configured limits.","selected":"Selected file","remove":"Remove file","recent":"Recent meetings","empty":"Your saved meetings will appear here.","transcript":"Transcript","summary":"Summary","copy":"Copy","copied":"Copied","download":"Download","copyFailed":"Could not copy. Use Download instead.","retry":"Try again","loading":"Loading meeting…","uploading":"Uploading: {progress}%","processing":"Processing your meeting…","saved":"The upload is saved. Processing continues if you leave this page.","failed":"This meeting could not be processed.","loadFailed":"Meetings could not be loaded. Please try again.","invalidFile":"Choose a supported audio or video file within the upload limit.","noSpeech":"No transcript was produced. Check that the recording contains audible speech.","summaryUnavailable":"A summary could not be created. Your transcript is still available.","status":{"pending":"Queued","processing":"Processing","processed":"Ready","failed":"Failed"},"stage":{"downloading":"Preparing media","probing":"Checking media","compressing":"Preparing audio","transcribing":"Transcribing","summarizing":"Summarizing"},"parts":"Part {current} of {total}"},"fleetKpi":{"name":"Fleet KPI","description":"Monthly fleet and pool evaluation from the analysis datasets.","intro":"Every figure comes from the invoice lines of one analysis run. Each invoice line is matched through its plate to a vehicle and that vehicle’s pool. Start at a company’s total and open it up step by step – by pool, customer, article or vehicle – down to the single invoice lines.","loading":"Loading fleet data…","states":{"deniedTitle":"No access to the fleet datasets","denied":"The datasets could not be read with your current access. Ask a workspace owner or admin, then retry.","failedTitle":"Fleet data could not be loaded","failed":"The request failed, so no figures are shown. Please retry.","notConfiguredTitle":"Fleet datasets are not set up","notConfigured":"These datasets are missing in this workspace. Create them; the analysis team then pushes the run.","notConfiguredMember":"These datasets are missing in this workspace. A workspace owner or admin can create them.","provisioningTitle":"Datasets are being prepared","provisioning":"The following datasets are still being provisioned. This view refreshes automatically.","failedDatasetsTitle":"Some fleet datasets are unusable","failedDatasets":"These datasets reported an error or are being removed. Contact a workspace owner or admin; the app cannot repair them.","noRunTitle":"No run loaded yet","noRun":"The datasets exist but contain no analysis run yet. The evaluation appears here once a run has been pushed.","emptyTitle":"Nothing for this filter","empty":"The run has no invoice lines for the selected company, months and pools.","chartUnavailable":"The chart could not be rendered."},"setup":{"action":"Create datasets","done":"Fleet datasets created. They are being provisioned.","failed":"Creating the fleet datasets failed. Already created datasets are kept."},"run":{"label":"Analysis run","id":"Run","rules":"Rule set version","dataUntil":"Data until","createdAt":"Run produced","note":"As of the analysis run, not the time you opened the page"},"filters":{"company":"Company","gesamt":"Combined","months":"Months","poolsAll":"All pools","poolsSelected":"{count} pools","reset":"Reset filters","day":"Day: {day}","clearDay":"Clear the day filter"},"tabs":{"pools":"Pools","residual":"Excluded from evaluation","explorer":"Explorer","history":"History","kalkulation":"Calculation"},"views":{"pools":"Pools","residual":"Excluded from evaluation","explorer":"Explorer","history":"History"},"noViewsTitle":"No views available","noViews":"You don't have access to any Fleet KPI views.","frame":{"pools":"Revenue of the company's own fleet — the vehicles it owns.","residual":"Revenue the company invoiced – whoever’s vehicle did the work."},"export":"Export to Excel","exportMore":"More export formats","exportCsv":"Export as CSV","exportTruncated":"Export stopped at {limit} of {total} invoice lines. Narrow the period for a complete export.","exportFailed":"The export failed. Retry, or narrow the filter.","tiles":{"revenue":"Revenue","vehicleDays":"Vehicle-days","utilisation":"Utilisation","revenuePerVehicleWorkday":"Revenue per vehicle-workday","grossHint":"Revenue {revenue} · usage time {hours}","netHint":"Toll {toll}","kmHint":"{km} km","vehicleDaysHint":"{days} vehicle-days"},"chart":{"title":"Trend per pool","summary":"Monthly {metric} per pool for the selected filter","metric":{"revenue_eur":"Revenue","utilisation":"Utilisation","revenue_per_vehicle_workday":"Revenue per vehicle-workday","revenue_per_hour":"€/h net"},"subcontractors":"Subcontractors","reference":{"utilisation":"Full utilisation","target":"Target {value}"}},"table":{"group":{"vehicles":"{count} vehicles"},"useHoursBilled":"{share} on days with an invoice","useHoursMeasured":"Hours basis {share} measured","columns":{"company":"Company","pool":"Pool","month":"Month","monthsActive":"Months","vehicleDays":"Vehicle-days","vehiclesBasis":"Vehicles","utilisation":"Utilisation","idleDays":"Idle days","weekendDays":"Weekend days","weekendShare":"Weekend share","revenuePerVehicleWorkday":"Rev./vehicle-workday","targetRatio":"Target","revenuePerTonne":"Revenue per tonne","tonnageCoverage":"Tonnage coverage","revenuePerHour":"Rev./hour","hours":"Hours","km":"km","revenuePerKm":"Rev./km","unbilledDays":"Movement days without invoice","unbilledKm":"km without invoice","linesHours":"Hours (allocated)","linesKm":"km (allocated)","hoursBasis":"Hours basis","ampel":"Ampel","rankRevenue":"Rank revenue/vehicle","rankDays":"Rank days/vehicle","rankScore":"Rank sum (guide)","change":"vs. previous month","trend":"Trend","plate":"Plate","serviceDate":"Service date","docType":"Type","docNo":"Document","customer":"Customer","article":"Article","description":"Description","quantity":"Quantity","unit":"Unit","tonnage":"Tonnage","listEurT":"Price list €/t","listDriveTime":"Price list driving time","listKm":"Price list km","listTollKm":"Price list toll km","revenue":"Revenue","reason":"Reason","reasonCode":"Reason code","lineCount":"Lines","siteLoading":"Loading site","siteUnloading":"Unloading site","vehicleDay":"Vehicle-day"}},"lines":{"exportScope":"The export holds every invoice line of the filter at the top and of the selected scope; column filters apply to the table only.","visibleSum":"Sum of the visible invoice lines: {revenue} · {tonnage} t ({shown} of {total})","filterByDocument":"Filter the table by this document","vehicleDay":"{no} of {lines} · {hours} of {dayHours} h","vehicleDayOthers":"Other invoice lines of the vehicle-day","copy":"Copy","copied":"Copied","exportColumns":{"lineId":"Line ID","invoicingCompany":"Company (invoice)","ownerCompany":"Company (vehicle)","customerNo":"Customer number","trailer":"Trailer","plateKind":"Plate kind","inKpi":"In the evaluation","customerGroup":"Customer group","isFreight":"Freight article","templateMatched":"In the price list","tours":"Tours","modelHours":"Price-list hours","revenueWithHours":"Revenue with hours","realHours":"Measured hours","revenueWithRealHours":"Revenue with measured hours","calcRevenue":"Price-list revenue","calcModelHours":"Price-list hours (for €/h price list)","sourceFile":"Source file","sourceRow":"Source row"}},"residual":{"summary":"Revenue not in the evaluation, grouped","lines":"Invoice lines outside the pool evaluation","linesHint":"These invoice lines belong to no pool vehicle – subcontractors, own trailers, special vehicles and lines without a plate – so they cannot be measured against the fleet.","tiles":{"total":"Total revenue","totalHint":"every invoice line of the period","in":"In the evaluation","inShare":"{share} of revenue","out":"Not in the evaluation","outParts":"of which trips without a pool vehicle {trips}, intercompany {intercompany}, no trip revenue {other}"},"shareTitle":"Where the revenue goes","segments":{"in":"In the evaluation","trips":"Trips without a pool vehicle","intercompany":"Intercompany","other":"No trip revenue"},"shareClick":"Click: filter the page to these reasons","shareClear":"Click: clear the filter","noPlate":"without a plate","noCustomer":"no customer","mainCustomer":"Main customer","lastDate":"Last date","pickFilter":"{group} {value}","clearPick":"Clear selection","search":"Search the list and the invoice lines","searchPlaceholder":"Plate, customer, article, document or text"},"excluded":{"title":"Revenue not in the evaluation, by month","subtitle":"These reasons lie outside the pool evaluation under rule set version {version}. A plate listed in several pools would appear here as a reason of its own.","summary":"Monthly revenue outside the evaluation, stacked by reason and company","other":"Other reasons","reasonFilter":"Reason {reason}","clearReason":"Clear reason filter","segmentFilter":"Segment {segment}","clearSegment":"Clear segment filter"},"explorer":{"root":"Explorer","backToOverview":"Back to overview","breadcrumb":"Explorer path","view":"View","dimensions":{"customers":"Customers","articles":"Articles","loading_sites":"Loading sites","unloading_sites":"Unloading sites","pools":"Pools","vehicles":"Vehicles","belege":"Documents"},"types":{"customer":"Customer","article":"Article","loading_site":"Loading site","unloading_site":"Unloading site","pool":"Pool","vehicle":"Vehicle"},"stationNone":{"loading":"No loading site","unloading":"No unloading site"},"stationArticles":"{count} articles","vehicleType":{"silo":"Silo","kipper":"Tipper"},"loadLines":"{type} · {count} invoice lines with tonnage","fewHours":"only {hours}","fewHoursHint":"Under 5 hours: the figure is not reliable.","stationsUnavailable":"Loading and unloading sites are missing for this run: the article list with loading sites was not pushed or could not be loaded.","sort":"Sort","order":"Order","filter":"Filter","groupedBy":"Grouped by","item":"Entry","priceListCoverage":"Revenue by the price list: {share} of invoiced revenue","tonnageCoverage":"{share} of revenue billed in tonnes","shown":"{shown} of {total}","showMore":"Load more","concentration":"Top 3: {top3} of revenue · Top 10: {top10}","withoutValue":"(not specified)","empty":"No invoice lines in the selected scope. Widen the company, period or pool filters.","includeResidual":"Include lines outside the pools","includeResidualPoolFiltered":"Lines outside the pools (clear the pool filter to include them)","search":"Find a customer, article, loading or unloading site, pool or plate","searchPlaceholder":"At least two characters; several words in any order…","noMatches":"No matches","searchResults":"Search results","truncated":"Showing the first {count} entries; more exist but were not loaded.","lastLevel":"Deepest level: these entries do not open further.","crumbShare":"({share})","scope":{"share":"{share} of {parent}","frameOwner":"Fleet owned by {company}","frameOwnerGesamt":"Fleet owned by both companies","frameInvoiced":"Invoiced by {company}","frameInvoicedGesamt":"Invoiced by both companies"},"tiles":{"shareOfScope":"{share} of the scope","hoursUncovered":"{share} of revenue without hours","tollHint":"Toll deducted: {rate} €/h · from the price list","tollHintMeasured":"Toll deducted: {rate} €/h · {share} from Toll Collect","loadedLines":"{count} invoice lines with tonnage","loadedLinesSplit":"{silo} silo and {kipper} tipper invoice lines with tonnage"},"chart":{"title":"Trend","tabs":{"revenue":"Revenue","tours":"Tours","vehicles":"Vehicles"},"grain":"Resolution","grains":{"day":"Day","month":"Month","year":"Year (later)"},"hintDay":"Click a day to filter to it, scroll to zoom","hintMonth":"Click a month to filter like its month chip","resetZoom":"Reset zoom","legend":{"day":{"revenue":"Revenue per day","tours":"Tours per day","vehicles":"Vehicles with at least one tour per day","eurhNet":"€/h net per day"},"month":{"revenue":"Revenue per month","tours":"Tours per month","vehicles":"Avg vehicles per working day","eurhNet":"€/h net per month"},"offDay":"Weekend, holiday","avg":"Avg of the last 20 working days","few":"under 5 hours, not reliable"},"target":"Target {target} €/h","avg":"Avg 20 working days: {value}","noLines":"no documents","clickDay":"Click: filter to this day","clickClear":"Click: clear the day filter","clickMonth":"Click: filter like the month chip"},"lines":"Invoice lines","askAi":"Ask the AI (coming soon)"},"history":{"search":"Find a customer or article","searchPlaceholder":"Type to search…","searchResults":"Search results","noMatches":"No matches","subject":{"label":"Subject","all":"Whole business","customers":"Customers","articles":"Articles"},"measure":{"label":"Measure","revenue_eur":"Revenue","tonnes":"Tonnage","eur_per_tonne":"€ per tonne","avg_load":"Avg. load"},"years":"Years in the overlay","noYears":"No years selected. Pick at least one year for the overlay.","noHistory":"{item} has no revenue history.","noHistoryForCompany":"{item} has no revenue history for {company}.","unavailableTitle":"History is not available yet","unavailable":"The revenue history has not been pushed yet. This tab becomes active once these datasets exist:","views":{"overlay":"Every year over Jan–Dec","overlaySummary":"Monthly {measure} of the selected subject, one line per year over the twelve months","share":"Year totals and share","shareSummary":"{measure} per year, split into the selected subject and everything else","profile":"Seasonal profile","profileNote":"Each month’s share of its year, averaged over the complete years, against this year’s own shares.","profileSummary":"Each month's mean share of the year, with the running year's own shares over it","profileIndex":"Seasonal price index","profileIndexNote":"Each month's € per tonne against its own year's average price — 100 % is that year's average, not a share of the year.","profileIndexSummary":"Each month's mean price index against the year's average price, with the running year's own index over it","profileLoadIndex":"Seasonal load index","profileLoadIndexNote":"Each month's average load against its own year's average — 100 % is that year's average, not a share of the year.","profileLoadIndexSummary":"Each month's mean load index against the year's average load, with the running year's own index over it"},"rest":"Everything else","total":"Total","profile":{"mean":"Usual share","explanation":"Each bar is the share of the full year this calendar month usually takes, averaged over {years}. The line is {year}’s own shares — a point above the bar means that month ran stronger than usual, below it weaker.","partial":"{year} scaled from {months} months to a full year","partialIndex":"{year} so far: {months} months","unavailable":"A seasonal profile needs at least two complete years."}},"kalkulation":{"open":"Calculate ›","affects":{"price":"Acts on the revenue and so on every result.","load":"Acts on the revenue and so on every result.","drive":"Acts on the time per tour.","factor":"Acts on the time, km and toll per tour.","load_min":"Acts on the time per tour.","unload_min":"Acts on the time per tour.","km":"Acts on the km per tour.","tollkm":"Acts on the toll per tour.","tollrate":"Acts on the toll per tour.","driver":"Acts on the contribution margin and the profit.","vehkm":"Acts on the contribution margin and the profit.","target":"Acts on the freight price for the target.","fix":"Acts on the estimated profit only."},"relation":"Choose a relation","relationSearch":"Search article, relation or customer…","noRelation":"No relation found","moreRelations":"… more matches, refine the search","newRelation":"New relation · {type}","newMeta":"No tours yet · template values for {type} · enter driving time, km and price","typeFromPool":"{type} per pool","months":"Actual values from {months} · run {run}","badges":{"tours":"{tours} tours {months}","measured":"Measured share {share}","eurh":"€/h net per the Explorer {value}","none":"no actual values"},"reset":"Reset all values","print":"Calculation as PDF","printed":"Run {run} · Printed {date}","page":"Page","of":"of","inputs":"Inputs","groups":{"priceLoad":"Price and quantity","time":"Time per tour","route":"Distance and toll","costs":"Costs per tour · assumptions"},"own":"Reset own value","ownDelta":"{delta} vs. {source}","blockDelta":"{delta} from the building blocks","tags":{"ist":"Actual","list":"List","tpl":"Template","ann":"Assumption","own":"own"},"stepDown":"− {step}","stepUp":"+ {step}","units":{"price":"€/t","load":"t","drive":"min","factor":"","load_min":"min","unload_min":"min","time":"h","km":"km","kmtour":"km","tollkm":"km","tollrate":"€/km","toll":"€","driver":"€/h","vehkm":"€/km","target":"€/h","fix":"€/h"},"info":"About {name}","cover":"Cover per tour","eurhHint":"Target {target} · {time} h per tour","dbCovers":"covers driver and vehicle","dbShort":"does not cover driver and vehicle","eurkmHint":"Revenue per km driven","chart":{"revenue":"Revenue","costs":"Costs","toll":"Toll","driver":"Driver","vehicle":"Vehicle","fix":"Fixed costs","fixLegend":"Fixed costs (estimate)","target":"for {target} €/h: {amount}","over":"Surplus {amount}","under":"Shortfall {amount}","covers":"Covers driver and vehicle · CM {amount}","short":"Does not cover driver and vehicle · CM {amount}","gain":"≈ Profit {amount} (estimate)"},"lines":{"revenue":"Revenue","toll":"− Toll","net":"= Net revenue","driver":"− Driver","vehicle":"− Vehicle","db":"= Contribution margin","dbh":"= Contribution margin per hour"},"prices":{"title":"Which freight price is enough?","today":"today","covers":"covers driver and vehicle"},"projection":{"title":"Projected","db":"Contribution margin over {tours} tours ({months})","perEuro":"per 1 €/t more","none":"No tours yet, so no projection."},"estimate":{"title":"Profit per tour","tag":"Estimate","db":"Contribution margin per tour","fix":"− Fixed costs","overTours":"over {tours} tours ({months})","note":"A rough guide only. Fixed, driver and vehicle costs are assumptions from the model of 27 Oct 2026, not figures from the books. The profit becomes reliable only with the costs from the BWA and the diesel per vehicle."},"how":{"title":"How it is calculated","defaults":"Every value comes from the best source the relation has. “Actual” is the average of the billed and measured tours of the selected months, else the list price (“List”) or the customer's calculation (“Template”) applies, for the costs the “Assumption”. The values beside it are the other sources. One click takes one over. A value changes by dragging it left or right (one step per 4 pixels, ten with Shift), with ‹ › or the arrow keys, or by clicking it and typing. A value changed so is an own value.","depends":"Every calculated field names in its (i) the fields it depends on, every input what it acts on. An own value in a calculated field suspends its calculation until ↺ resets it.","measured":"Time, distance and toll per tour are measured when the relation has tours. The building blocks above them come from the template. Changing a block changes the chosen value by exactly that difference. Without a measurement the template alone applies.","margin":"Contribution margin = revenue − toll − driver − vehicle. It shows whether the tour covers its direct costs. Profit = contribution margin − fixed costs, kept apart as an estimate."},"fields":{"price":{"label":"Freight price","unit":"€/t"},"load":{"label":"Load","unit":"t per tour"},"drive":{"label":"Driving time one way","unit":"min"},"factor":{"label":"Return factor","unit":"2 = back empty, 1 = back loaded"},"load_min":{"label":"Loading","unit":"min"},"unload_min":{"label":"Unloading","unit":"min"},"time":{"label":"Time per tour","unit":"h · calculated"},"km":{"label":"Km one way","unit":"km"},"kmtour":{"label":"Km per tour","unit":"km · calculated"},"tollkm":{"label":"Toll km one way","unit":"km"},"tollrate":{"label":"Toll per km","unit":"€"},"toll":{"label":"Toll per tour","unit":"€ · calculated"},"driver":{"label":"Driver","unit":"€ per hour"},"vehkm":{"label":"Vehicle","unit":"€ per km"},"target":{"label":"Target","unit":"€/h net"},"fix":{"label":"Fixed costs","unit":"€ per hour"}},"sources":{"ist":"Actual Ø","istMeasured":"Actual measured","istToll":"Actual Toll Collect","list":"List","tpl":"Template","ann":"Assumption","annSilo":"Assumption silo","annKipper":"Assumption tipper","uniform":"uniform"},"explain":{"from":"Starting point: {source} {value}","overTours":"(Ø over {tours} tours)","overMeasured":"(Ø per measured tour, {measured} of {tours} tours measured)","tollMeasured":"(Ø per tour, {share} from Toll Collect, the rest from the template)","changed":"{delta} from changed building blocks:","unchanged":"The building blocks are unchanged.","kmApprox":"An approximation: on days with several documents the km are spread over them by model hours.","own":"Own value {value}: the calculation is suspended. Changes to these fields have no effect here. ↺ restores it.","dependsOn":"Depends on: {fields}."},"results":{"eurh":"€/h net","db":"Contribution margin per tour","dbh":"Contribution margin per hour","eurkm":"€ per km","priceTarget":"for {target} €/h net","priceDb0":"for a contribution margin of 0","priceGain0":"Freight price for a profit of 0","gain":"Profit per tour"},"formulas":{"eurh":"(Revenue − toll) ÷ time per tour","db":"Revenue − toll − driver − vehicle","dbh":"Contribution margin ÷ time per tour","eurkm":"Revenue ÷ km per tour","priceTarget":"(Target × time per tour + toll per tour) ÷ load","priceDb0":"(Driver + vehicle + toll per tour) ÷ load","priceGain0":"(Driver + vehicle + fixed costs + toll per tour) ÷ load","gain":"Contribution margin − fixed costs × time per tour"}},"trendValues":{"steigend":"rising","stabil":"stable","fallend":"falling"},"basis":{"label":"Hours basis: {share}","measuredShare":"{share} measured","priceListOnly":"price list only","mostlyPriceList":"mostly price list","rate":"{rate} €/h","title":"Hours basis","measured":"Measured by Webfleet · {hours} h","priceList":"Price list · {hours} h","explanation":"Measured means Webfleet recorded the day, and that day’s usage time counts. On days without Webfleet, the hours the price list sets for the tour count.","footer":"Below 50 % measured the bar turns red: the value then rests mostly on the price list.","toll":{"title":"Toll deduction","toll":"Toll","value":"{rate} €/h · {share}","basis":"Toll estimated from the price list (Kunden-Templates), not measured by Toll Collect","measured":"Toll measured by the Toll Collect journey list","partial":"Toll measured by Toll Collect for {share} of the revenue with hours · estimated from the price list for the remaining revenue"}},"score":{"label":"Score {score}","band":{"top":"Score {top} or above","mid":"Score {critical} to below {top}","critical":"Score below {critical}"},"price":"Price","utilisation":"Utilisation","priceContext":"{net} €/h net ÷ {target} €/h target","measured":"{share} of the hours measured by Webfleet","utilisationContext":"{days} vehicle days ÷ {capacity} possible working days","formula":"Score = ({price} + {utilisation}) ÷ 2 × 10 = {score}","capped":"{score} (capped)","bands":"Tick = target 100 % · green from {top} · amber {critical} to below {top} · red below {critical}","tileHint":"Price {price} · Utilisation {utilisation}"},"source":"Source","formula":"Formula","definitionFor":"Definition of {metric}","metrics":{"revenue":{"label":"Revenue","name":"Revenue","explanation":"The invoiced amount of the invoice lines. Credit notes are deducted.","formula":"Sum of “Gesamtpreis bereinigt” over the invoice lines","sources":"Selectline revenue export"},"share":{"label":"Share","name":"Share of revenue","explanation":"Which part of the revenue of the level above falls to this entry. The violet bar under the name shows the same.","formula":"Revenue of the entry ÷ revenue of the level above","sources":"Selectline revenue export"},"tonnage":{"label":"Tonnage","name":"Tonnage","explanation":"The tonnes of the invoice lines billed in tonnes. Credit notes are deducted. A price supplement on a tour counts no tonnes, so the tour does not count twice.","formula":"Sum of the tonnes of the invoice lines in tonnes","sources":"Selectline revenue export"},"avgLoad":{"label":"Avg. tonnage loaded","name":"Average tonnage loaded","explanation":"How many tonnes an invoice line bills on average, i.e. how full the vehicles run on average. Only invoice lines with a tonnage above 0 count; credit notes, price supplements and lines without tonnes do not. Silo and tipper are shown apart: silo means the vehicles of the DE-CEM pools, tipper those of the DE-AGG pools. A type appears only where there are invoice lines of it with tonnage. The column sorts by the average over both.","formula":"Tonnage of the invoice lines with tonnage ÷ the number of these invoice lines, per vehicle type","sources":"Selectline revenue export"},"eurT":{"label":"€/t","name":"Revenue per tonne","explanation":"The average price per tonne. Only invoice lines billed in tonnes count. The hint on hover shows which part of the revenue that is.","formula":"Revenue of the invoice lines in tonnes ÷ the tonnes of these invoice lines","sources":"Selectline revenue export"},"eurh":{"label":"€/h gross","name":"Revenue per hour including toll","explanation":"What a vehicle earns per hour, toll included.\nRevenue: the freight revenue of the invoice lines.\nHours: how long the vehicle was in use according to Webfleet (first start to last stop), else the time from the price list.\nIf a vehicle runs several tours a day, they share the hours.\nUnder 5 hours the figure is grey (“only … h”), because a few hours make it swing widely.","formula":"Revenue ÷ hours","sources":"Selectline revenue export, Webfleet, Kunden-Templates"},"eurhNet":{"label":"€/h net","name":"Revenue per hour net of toll","explanation":"What a vehicle earns per hour, without toll.\nRevenue: the freight revenue of the invoice lines.\nToll: what Toll Collect charges for the vehicle on that day, else the toll from the price list.\nHours: how long the vehicle was in use according to Webfleet (first start to last stop), else the time from the price list.\nIf a vehicle runs several tours a day, they share the toll and the hours.\nTarget: 85 €/h. Under 5 hours the figure is grey (“only … h”), because a few hours make it swing widely.","formula":"(Revenue − toll) ÷ hours","sources":"Selectline revenue export, Webfleet, Kunden-Templates, Toll Collect journey list"},"eurhDrive":{"label":"€/h driving","name":"Revenue per driving hour net of toll","explanation":"What the vehicles earn per hour of pure driving time, toll deducted. Webfleet measures the driving time; only days Webfleet recorded count. A day’s driving time is split across the invoice lines like the day’s hours. Loading, unloading and standing time do not count, so the figure is well above €/h net and is not compared with the target. If the figure rests on fewer than 5 hours of driving time, the Explorer greys it out with “only … h” and sorts it last: a few minutes of Webfleet time can make it arbitrarily large.","formula":"(Revenue − toll) of the measured invoice lines ÷ the driving time of these invoice lines","sources":"Selectline revenue export, Webfleet, Kunden-Templates, Toll Collect journey list"},"calcEurh":{"label":"€/h price list","name":"Revenue per hour by the price list","explanation":"What the price list, the in-house freight price calculation per customer and article, provides per hour: calculated with the tonnage actually loaded and without toll. Counts only for invoice lines in tonnes whose article is in the price list.","formula":"(“€/t aktuell” − “Maut €/t neu”) × tonnage ÷ “Zeit gesamt” of the tour","sources":"Selectline revenue export, Kunden-Templates"},"priceDev":{"label":"Price vs. list","name":"Price against the price list","explanation":"How far the invoiced price deviates from the price by the price list, both without toll. Plus means above the price list. Only invoice lines for which the price list has a price.","formula":"(Revenue − toll) ÷ revenue by the price list − 1","sources":"Selectline revenue export, Kunden-Templates, Toll Collect journey list"},"timeDev":{"label":"Time vs. list","name":"Time against the price list","explanation":"How much more or less time the tours took than the price list assumes. Plus means longer than calculated. Only days with Webfleet can deviate; without Webfleet the price list’s hours apply.","formula":"Hours ÷ hours by the price list − 1","sources":"Selectline revenue export, Webfleet, Kunden-Templates"},"noHoursShare":{"label":"Revenue without hours","name":"Revenue without hours","explanation":"The part of the revenue that no €/h includes: invoice lines for which neither Webfleet nor the price list supplies hours, plus credit notes and reversals. Because credit notes reduce revenue, the share can drop to 0 %.","formula":"1 − revenue of the invoice lines with hours ÷ revenue, at least 0","sources":"Selectline revenue export, Webfleet, Kunden-Templates"},"vehicleDays":{"label":"Vehicle-days","name":"Vehicle-days","explanation":"Days on which a vehicle has at least one invoice. Weekends and public holidays count. If a vehicle drove for two customers on one day, the day counts for each customer, but only once in the total.","formula":"Number of distinct days per plate","sources":"Selectline revenue export"},"utilisation":{"label":"Utilisation","name":"Utilisation","explanation":"How many of the possible working days the vehicles were in operation. Working days are Monday to Friday without public holidays. Operations on weekends and public holidays still count and can lift utilisation above 100 %. For a single vehicle, the working days run from its first to its last month with an invoice.","formula":"Vehicle-days ÷ (vehicles × working days)","sources":"Selectline revenue export, Fixed vehicle count, Holiday calendar"},"rpvw":{"label":"Rev./vehicle-workday","name":"Revenue per vehicle and working day","explanation":"What a vehicle brings in on average per possible working day; days without work are included.","formula":"Revenue ÷ (vehicles × working days)","sources":"Selectline revenue export, Fixed vehicle count, Holiday calendar"},"eurKm":{"label":"€/km","name":"Revenue per kilometre","explanation":"What a vehicle earns per kilometre driven, toll included.\nRevenue: the freight revenue of the invoice lines on the days Webfleet measured kilometres for.\nKilometres: what Webfleet measured for the vehicle on that day.\nIf a vehicle runs several tours a day, they share the kilometres.","formula":"Revenue ÷ kilometres","sources":"Selectline revenue export, Webfleet"},"km":{"label":"km","name":"Kilometres","explanation":"The kilometres Webfleet measured on days with an invoice. Only for pools and vehicles, because a day’s kilometres cannot be split reliably across customers.","formula":"Sum of the Webfleet kilometres","sources":"Webfleet"},"weekendDays":{"label":"Weekend/holiday days","name":"Vehicle-days on weekends and public holidays","explanation":"Vehicle-days on Saturdays, Sundays and public holidays.","formula":"Number of vehicle-days on these days","sources":"Selectline revenue export, Holiday calendar"},"idleDays":{"label":"Idle days","name":"Idle days","explanation":"Possible working days on which the vehicles have no invoice. Work on weekends and public holidays is offset and reduces them.","formula":"Vehicles × working days − vehicle-days, at least 0","sources":"Selectline revenue export, Fixed vehicle count, Holiday calendar"},"score":{"label":"Score","name":"Score from price and utilisation","explanation":"Combines price and utilisation in one number from 0 to 10; each counts for half. 10 means 85 €/h net and work on every working day. Green from 8.0, amber from 7.0 to below 8.0, red below 7.0. The Score is capped at 10.","formula":"(€/h net ÷ 85 + utilisation) ÷ 2 × 10","sources":"Selectline revenue export, Webfleet, Kunden-Templates, Toll Collect journey list, Fixed vehicle count, Holiday calendar, Rule set"},"vehiclesBasis":{"label":"Vehicles","name":"Vehicles (basis)","explanation":"The pool’s fixed vehicle count from the “Fixe Fahrzeuganzahl” file. Where the month is missing there, such as July and August, the highest count the file gives for the pool applies. Where the file does not list the pool at all, the pool’s plates with invoices in that month count.","formula":"Mean of the monthly values in the period, rounded","sources":"Selectline revenue export, Fixed vehicle count"},"unbilledDays":{"label":"Days without invoice","name":"Movement days without invoice","explanation":"Days on which Webfleet saw a vehicle drive but no invoice exists for it on that day, such as empty runs, workshop visits or an invoice on the neighbouring day.","formula":"Webfleet days with kilometres and no invoice","sources":"Selectline revenue export, Webfleet"},"lines":{"label":"Invoice lines","name":"Invoice lines","explanation":"Number of invoice lines, i.e. the single items on the invoices.","formula":"Count","sources":"Selectline revenue export"},"monthsActive":{"label":"Months","name":"Months with values","explanation":"How many months of the period the pool has values for.","formula":"Number of months","sources":"Selectline revenue export"},"weekendShare":{"label":"Weekend share","name":"Share of weekend/holiday days","explanation":"Which part of the vehicle-days falls on weekends and public holidays.","formula":"Weekend/holiday days ÷ vehicle-days","sources":"Selectline revenue export, Holiday calendar"},"targetRatio":{"label":"Target attainment","name":"Target attainment","explanation":"€/h net relative to the 85 €/h target.","formula":"€/h net ÷ 85","sources":"Selectline revenue export, Webfleet, Kunden-Templates, Toll Collect journey list, Rule set"},"tonnageCoverage":{"label":"Tonnage coverage","name":"Tonnage coverage","explanation":"Which part of the revenue sits on invoice lines in tonnes and is therefore in the €/t.","formula":"Revenue of the invoice lines in t ÷ revenue","sources":"Selectline revenue export"},"hours":{"label":"Hours","name":"Measured hours","explanation":"The usage time Webfleet measured on the vehicle-days with an invoice, from the first start to the last stop of the day.","formula":"Sum of the usage time","sources":"Webfleet"},"useHours":{"label":"Usage time","name":"Usage time by Webfleet","explanation":"How long the vehicles were in use by Webfleet, from the first start to the last stop of each day, on days with and without an invoice. Vehicles without Webfleet do not count. Below it: which part falls on days with an invoice, and how much of the €/h hours basis is measured. Where that part is small, Webfleet is missing for many vehicles and the usage time is incomplete.","formula":"Usage time of the Webfleet days with an invoice + usage time of the Webfleet days without one","sources":"Selectline revenue export, Webfleet"},"hoursPerDay":{"label":"Avg hours per vehicle-day","name":"Average hours per vehicle-day","explanation":"Blended hours (usage time by Webfleet, else model hours) divided by the vehicle-days.","formula":"Hours of the €/h ÷ vehicle-days","sources":"Selectline revenue export, Webfleet, Kunden-Templates"},"unbilledKm":{"label":"km without invoice","name":"Kilometres without invoice","explanation":"The kilometres of the days without an invoice.","formula":"Sum of the Webfleet kilometres of these days","sources":"Selectline revenue export, Webfleet"},"unbilledToll":{"label":"Toll without invoice","name":"Measured toll on days without an invoice","explanation":"Toll that Toll Collect charged for a vehicle on a day on which the vehicle has no invoice, such as empty runs, trips to the workshop or an invoice on the neighbouring day. This toll is deducted from no invoice line. It counts, per month, for the pool the vehicle runs in most often.","formula":"Sum of the toll by the journey list on the vehicle's days without an invoice","sources":"Selectline revenue export, Toll Collect journey list"},"rankRevenue":{"label":"Rank revenue/vehicle","name":"Rank by revenue per vehicle","explanation":"The pool’s place by revenue per vehicle; 1 is the best.","formula":"Rank of revenue ÷ vehicles","sources":"Selectline revenue export, Fixed vehicle count, Evaluation guide"},"rankDays":{"label":"Rank days/vehicle","name":"Rank by vehicle-days per vehicle","explanation":"The pool’s place by vehicle-days per vehicle; 1 is the best.","formula":"Rank of vehicle-days ÷ vehicles","sources":"Selectline revenue export, Fixed vehicle count, Evaluation guide"},"rankScore":{"label":"Rank sum (guide)","name":"Rank sum per the evaluation guide","explanation":"The rank sum of the original evaluation guide; lower is better. Replaced by the Score in the evaluation.","formula":"Rank revenue/vehicle + rank days/vehicle","sources":"Selectline revenue export, Fixed vehicle count, Evaluation guide"},"change":{"label":"vs. previous month","name":"Change from the previous month","explanation":"How revenue per vehicle and working day changed against the previous month.","formula":"Value of the month ÷ value of the previous month − 1","sources":"Selectline revenue export, Fixed vehicle count, Holiday calendar"},"trend":{"label":"Trend","name":"Trend","explanation":"Rising, stable or falling, by revenue per vehicle and working day. Up to ±5 % against the previous month counts as stable.","formula":"Classification of “vs. previous month”","sources":"Selectline revenue export, Fixed vehicle count, Holiday calendar"},"lineRates":{"label":"€/h gross, €/h net, €/h price list, €/km","name":"Figures of one invoice line","explanation":"The same figures for a single invoice line, with the hours and kilometres that fall to it.","formula":"Revenue of the invoice line ÷ the hours of the invoice line; likewise for the others","sources":"Selectline revenue export, Webfleet, Kunden-Templates, Toll Collect journey list"},"listFacts":{"label":"Price list values","name":"Values from the price list","explanation":"What the price list sets for the invoice line's article: the current freight price per tonne (€/t aktuell), the driving time one way, the kilometres and the toll kilometres. The price list of the company that invoiced the line applies. Empty where the article is not in it.","formula":"none","sources":"Kunden-Templates"},"sites":{"label":"Loading and unloading site","name":"Loading and unloading site by the article list","explanation":"Where the invoice line’s article is loaded and unloaded, by the article list with loading sites: the name and town of the loading and of the unloading site. The list of the company that invoiced the line applies. A dash where the list names no site.","formula":"none","sources":"Article list with loading sites"},"lineHours":{"label":"Hours (allocated)","name":"Hours of the invoice line","explanation":"The hours that fall to this invoice line. On days with Webfleet the day’s measured hours are split: by the hours the price list sets for the tour, and for invoice lines without a price list by their share of the day’s revenue. Without Webfleet the price list’s hours apply. Credit notes get no hours.","formula":"Hours of the day × share of the invoice line","sources":"Selectline revenue export, Webfleet, Kunden-Templates"},"lineKm":{"label":"km (allocated)","name":"Kilometres of the invoice line","explanation":"The day’s kilometres, split across the invoice lines in the same proportion as the hours.","formula":"Kilometres of the day × share of the invoice line","sources":"Selectline revenue export, Webfleet, Kunden-Templates"},"hoursBasis":{"label":"Hours basis","name":"Origin of the hours","explanation":"MESSUNG: Webfleet recorded the day, the hours are measured. MODELL: no Webfleet that day, the price list’s hours apply. STORNOPAAR: a line with negative revenue and its counter-booking on the same day for the same customer, both without hours. KORREKTUR: any other line with negative revenue, whatever its Belegtyp, without hours. OHNE ZEITMODELL: neither Webfleet nor the price list supplies hours, for instance for waiting time.","formula":"none","sources":"Selectline revenue export, Webfleet, Kunden-Templates"},"toll":{"label":"Toll","name":"Toll of the invoice line","explanation":"The toll deducted from the invoice line. In months in which Toll Collect charges the vehicle's trips, it is the day's measured toll, shared among the vehicle's invoice lines of that day by the toll the price list sets for each. If the vehicle drives no toll road on such a day, the toll is 0. In the other months the toll by the price list applies. An invoice line that bills only toll, such as “Maut pauschal”, takes its share like any other on measured days; on the other days it counts entirely as toll.","formula":"Measured: the vehicle-day's toll × the invoice line's price-list toll ÷ the price-list toll of all invoice lines of that vehicle-day; otherwise tonnage × “Maut €/t neu”; when billed per tour: tours × “To” × “Maut €/t neu”","sources":"Selectline revenue export, Kunden-Templates, Toll Collect journey list"},"basisBar":{"label":"Bar under €/h","name":"Share of measured hours","explanation":"The bar shows which part of the hours Webfleet measured. The price list sets the rest. Below 50 % measured it turns red.","formula":"Measured hours ÷ all hours","sources":"Webfleet, Kunden-Templates"},"scoreCard":{"label":"Score on hover","name":"Score breakdown","explanation":"Shows the two parts of the Score: price as €/h net against the 85 €/h target, with how much of the hours Webfleet measured, and utilisation as vehicle-days against the possible working days. Only the Score is capped at 10; the two parts can exceed 100 %.","formula":"Score = (price + utilisation) ÷ 2 × 10","sources":"Selectline revenue export, Webfleet, Kunden-Templates, Toll Collect journey list, Fixed vehicle count, Holiday calendar, Rule set"}}},"disponentenVorschau":{"name":"Dispatcher preview","description":"Estimated revenue per vehicle and tour from the Zonda plan, before the tours are assigned.","loading":"Loading model data…","noViewsTitle":"No access","noViews":"You have no access to this app. An administrator can grant it.","states":{"deniedTitle":"No access to the model data","denied":"Your account may not read the model data of this app.","failedTitle":"Could not load","failed":"The model data could not be loaded.","noDataTitle":"No model data yet","noData":"The preview's datasets have not been pushed to this organisation yet.","provisioningTitle":"Preparing","provisioning":"The model data are being prepared.","failedDatasetsTitle":"Model data unavailable","failedDatasets":"These datasets failed to provision:","noRunTitle":"No model data yet","noRun":"The preview's datasets hold no run yet."},"upload":{"label":"Drop a Zonda tour plan or choose a file","hint":"Excel (.xlsx) or CSV, unchanged from Zonda","basis":"Data basis: run {run}","lookup":"Relations from Zonda data up to {day}: {count} known","nothingStored":"Nothing is stored: when you leave this page, the upload is gone.","other":"Other file","reading":"Reading the file…"},"errors":{"unreadable":"The file could not be read as xlsx or CSV.","tooLarge":"The file is larger than 5 MB.","tooManyRows":"The file has {rows} rows; the limit is 5,000.","missingColumns":"Columns missing: {columns}","quantity":"Quantities outside 0–60 t or 0–5 trucks, or turned into a date, in rows {rows}. Upload the file as Zonda exports it.","empty":"The file holds no tours."},"day":"Delivery day","dayOption":"{day} · {tours} tours","pool":"Pool","allPools":"All","tiles":{"toursHint":"{estimated} estimated ({share})","revenueHint":"net {net} after toll","rateHint":"target {target} €/h · {share}","openHint":"without a vehicle · {revenue}"},"search":"Search plate, loading or unloading point, or article","noHits":"No matches for “{query}”.","tabs":{"vehicles":"Vehicles ({count})","open":"Open orders ({count})","unmatched":"Not matched ({count})"},"columns":{"toll":"Toll","hours":"Hours"},"metrics":{"plate":{"label":"Plate","name":"Plate","explanation":"The vehicle according to the tour plan, written as in the evaluation: without the “HSG” prefix and spaces; for a tractor and trailer the tractor counts. “unknown vehicle”: the plate has no invoice in the period.","formula":"Column “LKW Kennzeichen”, normalised","sources":"Zonda tour plan"},"pool":{"label":"Pool","name":"Pool of the vehicle","explanation":"The pool in which the vehicle last invoiced.","formula":"Pool of the plate’s latest invoice line","sources":"Invoicing (Selectline), Vehicle list"},"tours":{"label":"Tours (usual)","name":"Estimated and planned tours, usual tours per day","explanation":"How many of the day’s planned tours have an estimate, and in brackets how many tours the vehicle drives on an average working day.","formula":"Matched of planned tours; in brackets tours ÷ vehicle-days in the period","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline)"},"revenue":{"label":"Estimated revenue","name":"Estimated revenue of the day","explanation":"What the day’s matched tours are expected to bring in, toll included. With a price per tonne the loaded quantity counts, else the ordered one, else the article’s usual one; with a price per tour the number of trucks. Tours not matched are missing from the sum.","formula":"Per tour: quantity × revenue ÷ tonnage of the article, or trucks × revenue ÷ tours of the article; sum of the matched tours","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline)"},"dayRevenue":{"label":"Day revenue","name":"Estimated day revenue in comparison","explanation":"The delivery day’s estimated revenue with toll, against the vehicle’s usual day revenues (purple, middle half {period}); the line, the delivery day, is red below and green above that band, dark within it. Hovering shows the card, with the pool’s usual band in grey.","formula":"“Usual” = 25th to 75th percentile of the vehicle’s day revenues; the pool likewise over the working days of the vehicles of the same pool and company","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline), Vehicle list"},"dayHours":{"label":"Hours","name":"Estimated hours of the day","explanation":"How many hours the vehicle’s planned tours are expected to take on the delivery day, with the return trip, loading and waiting. Purple: the vehicle’s usual day (middle half of the vehicle’s working days {period}, from the first start to the last stop); the bar is red below and green above that band, dark within it. Hatched: tours without an estimate, their hours are missing. Hovering shows the card, with the pool’s usual band in grey.","formula":"Sum of the hours of the matched tours, per tour hours ÷ tours of the relation × trucks; “usual” = 25th to 75th percentile of the vehicle’s daily hours","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline), Vehicle data (Webfleet), Costing per article"},"rate":{"label":"€/h net","name":"Estimated revenue per hour net of toll","explanation":"What the delivery day’s tours are expected to earn per working hour, without toll. A tour’s hours are how long a tour of this relation has taken on average so far, with the return trip, loading and waiting. Below, small: the vehicle’s average {period}. ▼ ● ▲: below, within, above the vehicle’s usual day. Green from 85 €/h, red below 64 €/h. Hovering shows the card with the pool: there the vehicle’s usual band is purple, the pool’s grey.","formula":"(Revenue − toll) of the tours with hours ÷ their hours; “usual” = 25th to 75th percentile of the €/h net of the vehicle’s working days","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline), Vehicle data (Webfleet), Costing per article"},"vehicleRate":{"label":"Vehicle avg.","name":"The vehicle’s revenue per hour net of toll, {period}","explanation":"What the vehicle earned per working hour on average {period}, without toll, from the invoiced tours and the measured hours. For comparison with the delivery day; not an estimate.","formula":"(Revenue − toll) of the invoice lines with hours ÷ their hours","sources":"Invoicing (Selectline), Vehicle data (Webfleet), Costing per article"},"tourRate":{"label":"€/h net","name":"Estimated revenue per hour net of toll of the tour","explanation":"What the tour is expected to earn per working hour, without toll. A tour’s hours are how long a tour of this relation has taken on average so far, with the return trip, loading and waiting. Green from 85 €/h, red below 64 €/h.","formula":"(Revenue − toll) of the tour ÷ its hours","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline), Vehicle data (Webfleet), Costing per article"},"order":{"label":"Order","name":"Order number","explanation":"Order number and position from the plan.","formula":"Columns “Auftragsnummer” and “Auftragsposition Nr.”","sources":"Zonda tour plan"},"relation":{"label":"Loading → unloading","name":"Relation","explanation":"Loading and unloading point of the tour, as written in the plan.","formula":"Columns “Versand-/Empfangsstelle” and “Versand an”","sources":"Zonda tour plan"},"article":{"label":"Article","name":"Matched article","explanation":"The article this relation is invoiced under, learned from the Zonda exports and the invoices of the same vehicle-days. “without the vehicle’s company”: matched by the relation alone, because the vehicle is unknown or the relation has no article for the vehicle’s company. “company from the plan”: the vehicle is unknown or missing, the company comes from the known vehicles of the same pool in the plan.","formula":"Most frequent article of the relation and vehicle company, at least 80 % of its orders","sources":"Zonda exports, Invoicing (Selectline)"},"freightPrice":{"label":"Freight price","name":"Freight price billed for the article","explanation":"What the article was billed on average in the period, per tonne or, with a price per tour, per tour. Where the list price differs, it stands small below (“List …”).","formula":"Revenue ÷ tonnage of the article’s invoice lines; with a price per tour revenue ÷ tours. List: the article’s list price","sources":"Invoicing (Selectline), Costing per article"},"basis":{"label":"Quantity basis","name":"Quantity of the estimate","explanation":"Which quantity the estimate takes: loaded if the truck has already loaded, else ordered, else the usual quantity of a tour of the article.","formula":"Loaded quantity, else ordered quantity, else tonnage ÷ tours of the article × trucks","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline)"},"tourAmounts":{"label":"Revenue / toll / hours","name":"Estimated revenue, toll and hours of the tour","explanation":"Revenue and toll in proportion of the quantity to the article’s average. The hours: how long a tour of this relation has taken on average so far, with the return trip, loading and waiting.","formula":"As estimated revenue; toll and hours likewise from the article’s sums","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline), Vehicle data (Webfleet), Costing per article"},"reason":{"label":"Reason","name":"Why not matched","explanation":"“relation not known”: there is no learned article yet for this loading and unloading point. “plate without an invoice in the period, relation also not known without a company”: the plate has no invoice in the period, and without a company the relation is not known either. “no delivery day”: the plan names no day.","formula":"—","sources":"Zonda tour plan, Zonda exports"},"tileTours":{"label":"Tours with a vehicle","name":"Tours with a vehicle","explanation":"The day’s tours already assigned to a vehicle, and how many of them have an estimate.","formula":"Number of trucks with a plate; of which matched","sources":"Zonda tour plan, Zonda exports"},"tileRevenue":{"label":"Estimated revenue","name":"Estimated revenue of the day","explanation":"Sum of the estimates of all vehicles of the day (in the selected pool), toll included; below it net after toll.","formula":"Sum of estimated revenue","sources":"as Estimated revenue"},"tileRate":{"label":"€/h net","name":"Estimated revenue per hour net of toll, all vehicles","explanation":"Like €/h net of the vehicle table, over all vehicles of the day.","formula":"(Revenue − toll) of the tours with hours ÷ their hours","sources":"as €/h net"},"tileOpen":{"label":"Open orders","name":"Open orders","explanation":"The day’s tours without a vehicle, i.e. not yet assigned, or with a placeholder such as “DIVERSE”; below it their estimated revenue.","formula":"Number of trucks without a plate","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline)"}},"price":{"t":"{price} €/t","tour":"{price} €/tour"},"listPrice":"List {price}","toursValue":"{estimated} of {planned}","unknownVehicle":"unknown vehicle","toggleTours":"Tours of {plate}","basis":{"loaded":"loaded {tonnes} t","ordered":"ordered {tonnes} t","average":"avg. {tonnes} t"},"status":{"matched":"matched","matchedPlanCompany":"matched, company from the plan","matchedNoCompany":"matched without the vehicle's company","unmatched":"not matched"},"reasons":{"relationUnknown":"relation not known","vehicleUnknown":"plate without an invoice in the period, relation also not known without a company","noDay":"no delivery day"},"verdict":{"up":"above usual","mid":"usual","down":"below usual"},"dayCompare":{"metric":{"revenue":"Day revenue","hours":"Hours","rate":"€/h net"},"aria":"{metric} {plate}: {value}, {verdict}","none":"no comparison","title":"{metric} · {plate} · delivery day {day}","day":"Delivery day","estimated":"estimated · {estimated} of {planned} tours","vehicle":"Vehicle usual","pool":"Pool usual","avg":"avg. {value}","verdict":{"up":"{distance} above the vehicle’s usual day","mid":"within the vehicle’s usual range","down":"{distance} below the vehicle’s usual day"},"partial":"{missing} of {planned} tours without an estimate: their revenue and hours are missing from the delivery day.","usual":"“Usual” = middle half of the invoiced days {period}. Avg. = average over all these days."},"hoursUsual":"usual {from}–{to} h","withoutEstimate":"+{count} tours without an estimate","withoutEstimateOne":"+1 tour without an estimate","avgLine":"Veh. avg. {rate}","lookupNote":"Relations from Zonda data up to {day}","fleetLink":"Open in Fleet KPI","emptyDay":"No tours with a vehicle on this day.","emptyOpen":"No open orders on this day.","emptyUnmatched":"Every tour of this day is matched.","export":"Export Excel","exportFailed":"The export failed.","sheet":"Preview","exportColumns":{"article":"Artikel","label":"Bezeichnung","match":"Zuordnung","basis":"Mengenbasis","tonnes":"Menge t","revenue":"Umsatz €","toll":"Maut €","net":"Netto €","hours":"Stunden","rate":"€/h netto","vsVehicle":"ggü. Fzg.-Tag","vsPool":"ggü. Pool-Tag","verdictVehicle":"Urteil Fzg.","verdictPool":"Urteil Pool","dayHours":"Stunden Fzg.-Tag","verdictHours":"Urteil Stunden","dayRate":"€/h netto Fzg.-Tag","verdictRate":"Urteil €/h"}},"vonSaldernPruefung":{"name":"von Saldern · Review","description":"Review and decide working time, places and diesel","loading":"Loading data…","noViewsTitle":"No access","noViews":"You have no access to this app. An administrator can grant it.","states":{"deniedTitle":"No access to the review data","denied":"Your account may not read the review data of this app.","failedTitle":"Could not load","failed":"The review data could not be loaded.","noDataTitle":"No review data yet","noData":"These datasets do not exist in this organisation yet:","provisioningTitle":"Preparing","provisioning":"The review data are being prepared:","failedDatasetsTitle":"Review data unavailable","failedDatasets":"These datasets failed to provision:","noRunTitle":"No run yet","noRun":"The review data hold no run yet.","truncated":"Not every row was loaded; the figures are incomplete."},"month":"Month","wholePeriod":"Whole period","thePeriod":"the period","currentRun":"current run: ","runStamp":"Run {date}","areas":{"orte":"Places","arbeitszeit":"Working time","zuordnung":"Mapping","diesel":"Diesel"},"lists":{"standstill":"Standstills","dwell":"Dwell times","shift":"Clock in/out","drivers":"Per driver","places":"Places","events":"Findings","vehicle_no":"Vehicle numbers","wagen":"Fuel cards","pin":"Fuel PINs","vehicles":"Vehicles"},"chains":{"arbeitszeit":"Working-time check","diesel":"Diesel check"},"scopes":{"orte":{"blocking":"With cases in {month}","open":"To decide","all":"All"}},"layouts":{"list":"List","map":"Map"},"levels":{"uncertain":"uncertain","one_route":"one source"},"atLeast":"at least","unknownDriver":"Driver unknown","unknownDriverVehicle":"Driver unknown (vehicle {vehicle})","banners":{"waiting":"Waiting for a place decision: {waiting} of {standstills} standstills ({share} of the minutes) · places to decide: {places}.","waitingLink":"Decide the places ›","unconfirmed":"{unconfirmed} of {open} findings rest on a fill whose vehicle is not confirmed. Their {keys} keys are in the mapping; a decision there takes effect from the next run.","unconfirmedLink":"Check the mapping first ›","changed":"{count} findings hang on mappings changed since the run; the next run re-evaluates them.","placesStanding":"Places apply across months","noArbeitszeitMonth":"There is no working-time check for {month} yet.","noDieselMonth":"There is no diesel run for {month}; the run covers {from} – {to}."},"card":{"title":"Decision","placeTitle":"Decision on the place","proposalTag":"Proposal","system":"System: {answer}","systemNone":"System: no proposal","saveNext":"Save & next: {answer}","saveAndNext":"Save & next ›","saveOnly":"Save","note":"Note without a decision","commentOptional":"Comment (optional)","commentAgainst":"Reason · required, as it goes against the proposal","commentRequired":"Reason · required","reasonPlaceholder":"Reason …","requiredTag":"required","missing":"{field} missing","radiusRange":"Radius 75–3,000 m","keys":"{keys} choose · ↵ save & next · ↑ ↓ switch case","decided":"Decided: {answer}","provisionalShort":"provisional","provisional":"provisional, until the next run takes the decision over","undo":"Undo ({seconds} s)","reopen":"Reopen","openPlace":"Open the place (map, radius, name) ›","extend":"Extend {place}: radius {from} →","newPlace":"a new place at this position","radius":"New radius (m)","extendEffect":"Effect: {cases} cases in {month} go provisionally ({vehicles} vehicles, {minutes} min of work).","extendEffectOne":"Effect: 1 case in {month} goes, provisionally ({minutes} min of work).","newPlaceEffect":"Effect: this case goes; the {cases} cases at this spot wait, after the next places build, for the decision on the place it suggests there.","where":"Which work place","placeChanged":"{place} changed since the run: the next run re-evaluates this case, a decision now applies to the old state."},"compact":{"count":{"standstillOne":"1 standstill","dwellOne":"1 dwell","shiftOne":"1 shift","placesOne":"1 place","eventsOne":"1 finding","standstill":"{n} standstills","dwell":"{n} dwells","shift":"{n} shifts","places":"{n} places","events":"{n} findings"},"filters":{"open":"open","decided":"decided","provisional":"provisionally gone","all":"all"},"goneReason":"{place} {change} on {day}","waits":"place","noPlace":"no place","near":"no place · {place} {km} km","usual":"usual {minutes}","sides":{"activityBefore":"Activity before clock-in","kommenBefore":"Clock-in before first activity","activityAfter":"Activity after clock-out","gehenAfter":"Clock-out after last activity"},"kommen":"Clock in {kommen}, first {first}","gehen":"Clock out {gehen}, last {last}","part":"Part of the period","eventsFoot":"{events} findings, {parts} parts · {position}","placeChanged":"Place changed · re-evaluated","parts":{"morgens":"morning","abends":"evening","nachts":"night"},"daytime":"daytime","logged":"{minutes} logged · {part}","calc":{"morgens":"Work before the first trip, logged: {work} min","abends":"Work after the last trip, logged: {work} min","rounded":"rounded to the quarter hour: {rounded} min","allowed":{"morgens":"allowed (departure check): − {allowed} min","abends":"allowed (paperwork): − {allowed} min"},"beyond":"over the tolerance: {beyond} min","whole":"{work} min logged, all count: {part} has no tolerance and no rounding"}},"effects":{"standstill":{"explained":"There is a reason. The {minutes} min do not count for the driver.","anomaly":"Not right. The {minutes} min count for the driver in {month}.","work_place":"Work is done here. The position becomes a work place; its cases go."},"dwell":{"explained":"There is a reason, a queue for instance. The {minutes} min over usual leave „dwell time over usual“.","anomaly":"Not right. The {minutes} min over usual stay as a deviation."},"shift":{"explained":"There is a reason. The deviation of {minutes} min counts as settled.","anomaly":"Not right. The deviation of {minutes} min stays as a deviation."},"place":{"yes":"Work is done here. The {cases} standstills in {month} go; {counted} min do not count for the drivers{logged}.","yesOne":"Work is done here. The standstill in {month} goes; {counted} min do not count for the driver{logged}.","no":"No work is done here. The {cases} standstills in {month} count, {counted} min{logged}, and are decided one by one.","noOne":"No work is done here. The standstill in {month} counts, {counted} min{logged}, and is decided on its own.","logged":" (logged were {logged}, of which {allowed} within the tolerance in the morning and evening)"},"diesel":{"explained":"There is a reason. The {litres} l count as settled.","anomaly":"Not right. The {litres} l stay in question.","misbooking":"The fill went into another vehicle; from the next run it counts there."}},"method":{"title":"How this comes about","more":"More details ›"},"rules":{"open":"Rules","title":"Rules","heading":"The review's rules","intro":"When a case arises, what is not one, what a decision does, where the data come from and what is not checked, for all four areas. The rules are written in German."},"metrics":{"tileOutside":{"label":"Time outside work places","name":"Time outside work places, after free minutes","explanation":"How much time the drivers logged as work in the month while standing outside a work place (other work or availability on the driver card), after 5 free minutes per working day. Every such standstill counts, also under 15 min. Before the first and after the last trip of the day, only what lies over 15 min after rounding to the quarter hour counts. Cases decided explained or work place drop out, standstills at suggested places wait for the place. Below it „before deduction“: the same time without the deduction.","formula":"Sum over drivers and days: the day's minutes − 5 on a working day, at least 0","sources":"Webfleet driver card, Webfleet stops, Place list, Rule set, Decisions"},"tileDriversOver":{"label":"Drivers over the limit","name":"Drivers over the monthly limit","explanation":"How many drivers are more than 120 min over the free minutes in the month, of all drivers with standstills outside work places. A vehicle whose driver card Webfleet could not match to a driver counts as an entry of its own.","formula":"Number of drivers with time after free minutes over 120 min","sources":"Webfleet driver card, Webfleet stops, Place list, Rule set, Decisions"},"tileShift":{"label":"Clock in/out outside tolerance","name":"Clock in and out outside the tolerance","explanation":"Open shifts in which clock-in or clock-out per ATOS differs by more than 15 min from the driver's first or last activity. The tile counts the larger of the two deviations per shift; below it shifts and persons.","formula":"Sum over open cases: the larger deviation of clock-in and clock-out, each only when over 15 min","sources":"ATOS time records, Webfleet driver card, Webfleet trips, Rule set, Decisions"},"tileDwell":{"label":"Dwell time over usual","name":"Dwell time over the usual","explanation":"How much longer work went on at loading and unloading points than is usual there, summed over the open cases; below it halts and places. Usual is the median of this place and role over the twelve months before the month. This time does not count in the drivers' monthly limit.","formula":"Sum over open cases: work time at the place − usual median","sources":"Webfleet driver card, Webfleet stops, Place list, Selectline revenue export, Article lists, Rule set, Decisions"},"tileWaiting":{"label":"Waiting for a place decision","name":"Waiting for a place decision","explanation":"Standstill cases at suggested places nobody has decided yet; below it cases and places, a click opens Places. Their minutes do not count for the drivers yet: if the place becomes a work place the cases go; if not, they are decided one by one.","formula":"Sum of the min. work of the standstill cases at suggested places","sources":"Webfleet driver card, Webfleet stops, Place list, Decisions"},"tileToDecide":{"label":"Places to decide","name":"Places to decide","explanation":"Suggested places and automatically recognised rest stops with at least one standstill case in the month that nobody has decided yet. Only these places move the month's result.","formula":"Number of such places; below it suggested · rest stops","sources":"Webfleet driver card, Webfleet stops, Place list, Decisions"},"tileOpenCases":{"label":"Cases at open places","name":"Cases at open places","explanation":"The month's cases at these places. At suggested places they wait for the place; at rest stops they count already and are decided one by one, unless the rest stop is declared a work place.","formula":"Sum of the month's cases at the open places","sources":"Webfleet driver card, Webfleet stops, Place list, Decisions"},"tileConfirmed":{"label":"Standstills at confirmed work places","name":"Share of standstills at confirmed work places","explanation":"Which part of all standstills since January, of all vehicles, lies within a confirmed work place; there standing without a break counts as work. Confirmed are places from the Webfleet address book, stations with a clear role and work places decided here.","formula":"Standstills in confirmed work places ÷ all standstills","sources":"Webfleet stops, Place list"},"tileOutsideAll":{"label":"Outside every place","name":"Share of standstills outside every place","explanation":"Standstills at spots stood at too rarely to be a place (under 3 days and only one vehicle; without a known address under 5 days). Minutes logged as work there always count for the driver. Since January, all vehicles.","formula":"Standstills without a place ÷ all standstills","sources":"Webfleet stops, Place list, Rule set"},"tileAtStake":{"label":"Litres in question","name":"Litres in question","explanation":"The litres at stake in the month's open findings. A fill that is also part of an open period counts once, in the period.","formula":"Sum of „litres in question“ of the open findings","sources":"Fuel statements, Webfleet trips, Webfleet refuel events, Webfleet vehicle data, Mapping, Rule set, Decisions"},"tileLargest":{"label":"Largest single case","name":"Largest single case","explanation":"The open finding with the most litres in question; a click opens it.","formula":"Largest „litres in question“ of the open findings","sources":"Fuel statements, Webfleet trips, Webfleet refuel events, Webfleet vehicle data, Mapping, Rule set, Decisions"},"tileUnconfirmed":{"label":"Vehicle not confirmed","name":"Vehicle not confirmed","explanation":"Open findings with at least one fill without a confirmed vehicle: the sources contradict each other, or only one source names the vehicle. Such findings are often settled through their key in the mapping; a click opens the keys concerned there.","formula":"Number of open findings with a fill „uncertain“ or „one source“, of all open ones","sources":"Fuel statements, Station vehicle list, PIN and card list, Webfleet trips, Webfleet refuel events, Mapping"},"tileCoverage":{"label":"Coverage","name":"Coverage with a confirmed vehicle","explanation":"Which part of the billed diesel litres falls on fills whose vehicle at least two sources name alike and none contradicts. Fills whose vehicle only one source names do not count. Over the whole run (its period is below), both companies.","formula":"Litres of confirmed fills ÷ all diesel litres","sources":"Fuel statements, Station vehicle list, PIN and card list, Webfleet trips, Webfleet refuel events, Mapping"},"bannerWaiting":{"label":"Waiting standstills","name":"—","formula":"—","sources":"—","explanation":"Counted are the month's open standstill cases and of them those waiting at suggested places for the place decision (cases at rest stops do not count among them); the share is their share of the min. work. The link opens Places on „with cases in the month“."},"bannerUnconfirmed":{"label":"Findings with an unconfirmed vehicle","name":"—","formula":"—","sources":"—","explanation":"Counted are the month's open findings and of them those with a fill „uncertain“ or „one source“; the link opens the mapping's vehicles with open findings."},"dependsOnPlace":{"label":"Depends on the place","name":"—","formula":"—","sources":"—","explanation":"The standstill lies at a place still to be decided; the decision there applies to all its cases of the month."},"rescored":{"label":"Rescored","name":"—","formula":"—","sources":"—","explanation":"A decision in the mapping changes the fills' vehicles only in the next run."},"provisional":{"label":"Provisional","name":"—","formula":"—","sources":"—","explanation":"The app computes lists, sums and tiles at once with the decisions since the last run. Counted are the cases, places, findings and mappings they change, and of them those with a decision of their own; the others are cases a place decision moved along. The next run takes them over: decisions stand, places go into the next places build, mappings into the vehicles of the fills; it re-evaluates the cases at a changed place and the findings on a changed mapping, and where the data of a decided case or finding change, its decision opens again."},"reopenedStale":{"label":"Open again","name":"—","formula":"—","sources":"—","explanation":"The finding's statement, litres, plate or checks have changed since the decision."},"placesStanding":{"label":"Places apply across months","name":"—","formula":"—","sources":"—","explanation":"A decided place applies to every month; the month only filters the cases beside it."},"colStart":{"label":"Start","name":"Start of the standstill","explanation":"Day and time the vehicle stopped.","formula":"Start of the stop","sources":"Webfleet stops"},"colDriverPlate":{"label":"Driver · plate","name":"Driver and vehicle","explanation":"The driver whose card was in the vehicle longest during the standstill, the plate below. „Driver unknown“: Webfleet could not match the card to a driver; the case then counts for the vehicle.","formula":"Driver card with the longest overlap","sources":"Webfleet driver card, Webfleet stops, Webfleet vehicle data"},"colPlace":{"label":"Place","name":"Place of the standstill","explanation":"The place within whose circle the vehicle stood; „no place“ when the spot belongs to no place. Below it a hint, such as „at a suggested place“ or the nearest work place with its distance.","formula":"—","sources":"Webfleet stops, Place list"},"colWorkMinutes":{"label":"Counted in min","name":"Minutes counted for the driver","explanation":"In bold the minutes that count for the driver. Under them, small, the minutes logged as work while standing, other work or availability on the card, and the part of the standstill. Break, driving and time without a card do not count. In the daytime and at night every logged minute counts, and a case arises from 15 min. Before the first trip of the day and after the last, the minutes are rounded to the quarter hour and 15 min are allowed. Only what lies beyond counts. A rest over night of at least 3 h splits a standstill into parts, each its own case. Hovering over the figure shows the calculation.","formula":"Daytime and night: the logged minutes of other work and availability of this card, at most the standstill's duration. Morning and evening: the same minutes rounded to the quarter hour, less 15 min","sources":"Webfleet driver card, Webfleet stops, Rule set"},"colProposal":{"label":"Proposal","name":"The system's proposal","explanation":"The first check: what the system proposes. For standstills it is always deviation today; the case names the reason, such as the nearest work place.","formula":"—","sources":"Place list, Rule set"},"colStatus":{"label":"State","name":"State of the case","explanation":"open · waits for place · explained, deviation or work place (decided) · „provisional“ until the next run takes the decision over · provisionally gone (the place became a work place) · gone (a new run no longer finds the case, with its reason).","formula":"—","sources":"Decisions"},"filterHideWaiting":{"label":"Hide waiting","name":"Hide cases without a place decision","explanation":"Hides standstills at suggested places; they are decided through the place.","formula":"—","sources":"Place list"},"colPlaceRole":{"label":"Place (role)","name":"Place and role of the halt","explanation":"The loading or unloading point and whether loading or unloading happened here. At plants that are both, the day's statements decide: is the place the loading point of the billed articles, loading; their unloading point, unloading; otherwise there is no case. Own sites (von Saldern, HSG, Gleimius) are not checked for dwell time.","formula":"—","sources":"Place list, Selectline revenue export, Article lists, Rule set"},"colWorkAtPlace":{"label":"Min. at place","name":"Work time at the place","explanation":"How long during the halt no break was logged in the vehicle, on every card, driving included; below it the usual value. A case arises above this place's 95 % value and at least 30 min over the median.","formula":"Minutes of every card other than break during the halt, together at most its duration","sources":"Webfleet driver card, Webfleet stops, Rule set"},"colUsual":{"label":"usual","name":"Usual work time at this place","explanation":"The median of this place's and role's halts with at least 2 min of work, from the twelve months before the month; only for places with at least 20 such halts. A later data pull no longer changes it.","formula":"Median, in the case also the 95 % value","sources":"Webfleet driver card, Webfleet stops, Place list, Rule set"},"colDwellProposal":{"label":"Proposal","name":"The system's proposal","explanation":"„explained: queue at the place (n more vehicles)“ when other vehicles worked there as long at the same time (median + 30 min); else deviation.","formula":"—","sources":"Webfleet driver card, Webfleet stops, Place list, Rule set"},"colStatusNoPlace":{"label":"State","name":"State of the case","explanation":"open · explained or deviation (decided) · „provisional“ until the next run takes the decision over · gone (a new run no longer finds the case, with its reason).","formula":"—","sources":"Decisions"},"colByPlaceCases":{"label":"Cases","name":"Dwell cases at the place","explanation":"Every dwell case of the month at this place, queues and decided ones included.","formula":"Number","sources":"Webfleet driver card, Webfleet stops, Rule set"},"colByPlaceQueues":{"label":"of them queues","name":"of them proposed as a queue","explanation":"Cases in which other vehicles waited there at the same time.","formula":"Number","sources":"Webfleet driver card, Webfleet stops, Rule set"},"colByPlaceExcess":{"label":"Sum over usual (min)","name":"Sum over the usual","explanation":"How much longer than usual work went on at this place, over all cases; shows where plants keep vehicles waiting.","formula":"Sum (work time at the place − median)","sources":"Webfleet driver card, Webfleet stops, Rule set"},"colDay":{"label":"Day","name":"Day of the shift","explanation":"The day the shift starts per ATOS; it may end the next day.","formula":"—","sources":"ATOS time records"},"colPerson":{"label":"Person","name":"Person per ATOS","explanation":"The person from ATOS, matched to a Webfleet driver by name.","formula":"—","sources":"ATOS time records, Webfleet driver card"},"colKommen":{"label":"Clock in","name":"Clock-in and first activity","explanation":"Clock-in per ATOS, below it the first activity: driving, other work or availability on the card, or a trip of the vehicle without another card that joins the own card. Searched from 3 h before clock-in.","formula":"—","sources":"ATOS time records, Webfleet driver card, Webfleet trips"},"colGehen":{"label":"Clock out","name":"Clock-out and last activity","explanation":"Clock-out per ATOS, below it the last activity, searched up to 3 h after clock-out.","formula":"—","sources":"ATOS time records, Webfleet driver card, Webfleet trips"},"capped":{"label":"at least","name":"Lower bound","explanation":"The check looks for activity up to 3 hours before clock-in and after clock-out. The actual deviation may be larger.","formula":"at most 3 h before clock-in and after clock-out, at most up to the midpoint before the next shift","sources":"ATOS time records, Webfleet driver card, Webfleet trips, Rule set"},"colDeviation":{"label":"Over the tolerance in min","name":"Minutes over the tolerance","explanation":"Clock-in, clock-out, the first and the last activity are rounded to the quarter hour, 7.5 minutes up. Where a side then deviates by more than 15 min, what lies over 15 min counts. Where both sides deviate, both count together. The case says which side: clock-in before the first activity, activity before clock-in, clock-out after the last activity or activity after clock-out.","formula":"Per side rounded (first activity − clock-in) and (clock-out − last activity), by amount, where over 15 min: less 15 min, added up","sources":"ATOS time records, Webfleet driver card, Webfleet trips, Rule set"},"colDriver":{"label":"Driver","name":"Driver","explanation":"The Webfleet driver; „Driver unknown (vehicle …)“ where Webfleet could not match the card. Unfolding shows the days and the months.","formula":"—","sources":"Webfleet driver card"},"colWorkingDays":{"label":"Working days","name":"Working days","explanation":"Days of the month with driving, other work or availability on the card.","formula":"Number of days with card activity","sources":"Webfleet driver card"},"colRawMinutes":{"label":"Min. outside (total)","name":"Minutes outside work places, total","explanation":"Every minute of the month logged as work while standing outside a work place, also from standstills under 15 min, before the free minutes are deducted. Before the first and after the last trip of the day, only what lies over 15 min after rounding to the quarter hour counts. Cases decided explained or work place are left out.","formula":"Sum of the min. work of every counting standstill","sources":"Webfleet driver card, Webfleet stops, Place list, Decisions"},"colOverMinutes":{"label":"over free minutes","name":"Minutes over the free minutes","explanation":"The same minutes after deducting 5 free minutes per working day; a day does not go below zero.","formula":"Sum per day: minutes − 5 on a working day, at least 0","sources":"Webfleet driver card, Webfleet stops, Place list, Rule set, Decisions"},"colAgainstLimit":{"label":"against limit","name":"Standing against the monthly limit","explanation":"The bar fills up to 120 min; beyond it the driver is over the limit.","formula":"Minutes over free minutes ÷ 120","sources":"Rule set"},"colCaseCounts":{"label":"Cases open / deviation / explained","name":"The driver's standstill cases","explanation":"Still open (also waiting for a place) · decided as deviation · decided as explained or work place.","formula":"Number per state","sources":"Decisions"},"colDays":{"label":"Minutes per day","name":"Minutes per day","explanation":"One bar per day with the counted minutes; the line is the 5 free minutes.","formula":"—","sources":"Webfleet driver card, Webfleet stops, Place list, Decisions"},"scopeBlocking":{"label":"With cases in the month","name":"Places with cases in the month","explanation":"Places still to decide (suggested places and automatic rest stops) with cases in the chosen month, the most first.","formula":"—","sources":"Webfleet driver card, Webfleet stops, Place list"},"scopeOpen":{"label":"To decide","name":"Every open place","explanation":"Every suggested place and every automatic rest stop, also without a case in the month.","formula":"—","sources":"Place list"},"scopeAll":{"label":"All","name":"Every place","explanation":"Every place, also confirmed and decided ones.","formula":"—","sources":"Place list"},"layout":{"label":"List · map","name":"View","explanation":"The same places as a list or on the map, coloured by state.","formula":"—","sources":"Place list"},"colPlaceName":{"label":"Place","name":"Name of the place","explanation":"Name from the Webfleet address book, the article lists or the address; below it why the place is suggested so, such as „94 % der gebuchten Zeit Pause“ (94 % of the logged time break).","formula":"—","sources":"Place list"},"colPlaceProposal":{"label":"Proposal","name":"Proposal with kind and role","explanation":"A suggested place is proposed as a work place, with kind (loading/unloading point, depot, workshop, filling station, other work place) and role; an automatically recognised rest stop as no work place, of the kind rest stop.","formula":"—","sources":"Place list"},"colPlaceCases":{"label":"Cases in the month","name":"Cases at this place in the month","explanation":"Standstill and dwell cases of the chosen month at this place.","formula":"Number","sources":"Webfleet driver card, Webfleet stops, Place list"},"colPlaceVehicles":{"label":"Vehicles (since January)","name":"Vehicles at this place since January","explanation":"How many different vehicles stood here since January, all vehicles.","formula":"Number of vehicles","sources":"Webfleet stops, Place list"},"colPlaceMinutes":{"label":"Min. work","name":"Minutes of the cases logged as work","explanation":"Sum of the min. work of these cases in the month; this much the decision on the place moves.","formula":"Sum of min. work","sources":"Webfleet driver card, Webfleet stops, Place list"},"colPlaceStatus":{"label":"State","name":"State of the place","explanation":"to decide · work place · no work place; „provisional“ until the next places build takes the decision over.","formula":"—","sources":"Place list, Decisions"},"colWhen":{"label":"When","name":"Time","explanation":"Time of the fill, for two fills of one finding both („12:30 + 14:35“); a period as a month or days („July“, „16–31/07“). A period is listed in every month it touches; its fills are listed under it.","formula":"—","sources":"Fuel statements"},"colPlateDriver":{"label":"Plate · driver","name":"Vehicle and driver","explanation":"The vehicle the fill is placed on; below it the driver per Webfleet at the fill time, else the holder of the PIN or card, marked „(per PIN)“ or „(per card)“.","formula":"—","sources":"Fuel statements, PIN and card list, Webfleet trips, Mapping"},"colCheck":{"label":"Check","name":"Which check fired","explanation":"One of the four checks; below it a line on what happened, and for a proposed misbooking the other vehicle.","formula":"—","sources":"Rule set"},"colLevel":{"label":"Vehicle","name":"How certain the vehicle is","explanation":"„uncertain“: the sources contradict each other, or only the vehicle list or only the refuel event names the vehicle. „one source“: only PIN and driver or only the fuel card names it. No mark: two sources confirm the vehicle, or a confirmed pairing or a decided misbooking fixes it. With several fills the weakest counts.","formula":"—","sources":"Fuel statements, Station vehicle list, PIN and card list, Webfleet trips, Webfleet refuel events, Mapping"},"colAtStake":{"label":"Litres in question","name":"Litres in question","explanation":"The litres at stake, per check. Where several checks fire, the largest amount counts, not the sum. A fill that stands out only as part of a period carries its own gap.","formula":"Largest amount of the checks that fired","sources":"Fuel statements, Webfleet trips, Webfleet refuel events, Webfleet vehicle data, Mapping, Rule set"},"colBefundStatus":{"label":"State","name":"State of the finding","explanation":"open · open again (the data changed since the decision, or it was reopened) · explained, deviation or „misbooking → <plate>“ · „provisional“ until the next run takes over · gone (a new run no longer finds the finding).","formula":"—","sources":"Decisions"},"checkNotAtPump":{"label":"Not at the pump","name":"Vehicle not at the pump","explanation":"Own stations only, from 16 Jul 2026. The vehicle was more than 2 km from the station at the fill time, and no refuel event of the vehicle lay there. Or: there is no refuel event of the vehicle for the fill, but another vehicle had a refuel event there within 30 min after without a fill of its own that fits the amount; the system then proposes a misbooking to that vehicle, and the finding's subtitle reads „another vehicle fuelled“.","formula":"Distance over 2 km without an own refuel event there, or another vehicle's refuel event 0–30 min after with litres ÷ k within ±25 %; in question: the billed litres","sources":"Fuel statements, Station vehicle list, Webfleet trips, Webfleet refuel events, Mapping, Rule set"},"checkTankShort":{"label":"Less in the tank","name":"Less arrived in the tank than billed","explanation":"The fill's refuel event shows, converted with k, at least 25 % and at least 50 l less than billed. Only vehicles with a reliable k and fills whose vehicle is clear also without the refuel event. No case when the refuel events from 3 h before to 4 h after the fill suffice together, or when the vehicle's telematics hardly report in the month.","formula":"Billed − refuel event ÷ k","sources":"Fuel statements, Webfleet trips, Webfleet refuel events, Mapping, Rule set"},"checkOverTank":{"label":"More than fits","name":"More fuelled than the tank holds","explanation":"A fill, or all of the vehicle's fills within 3 h together, lie more than 5 % above the tank volume. Tank volume per Webfleet, or Webfleet ÷ k where that differs by more than 15 % and k is reliable. No check with an unreliable tank gauge.","formula":"Sum of the fills − tank volume","sources":"Fuel statements, Webfleet refuel events, Webfleet vehicle data, Mapping, Rule set"},"checkBoughtBurned":{"label":"Bought more than burned","name":"Bought more than burned (period)","explanation":"Per vehicle and month more billed than 1.05 × the consumption per Webfleet plus one tank. Then what arrived in the tank per refuel events ÷ k counts: where the bill is at most 15 % above it, the diesel arrived and there is no case; else „fuelled but not arrived in the tank“, with every fill with a gap of its own of 25 l or more as a part. Without refuel events or a reliable k: „bought more than the consumption explains“. Only months with consumption on 90 % of the kilometres; vehicles with a 170 l tank (LNG) excluded.","formula":"With refuel events: billed − refuel events ÷ k; without: billed − (1.05 × consumption + tank)","sources":"Fuel statements, Webfleet trips, Webfleet refuel events, Webfleet vehicle data, Mapping, Rule set"},"k":{"label":"Factor k","name":"Factor k of the tank gauge","explanation":"Webfleet recognises a fill by the rise of the tank gauge and reports it as a refuel event in litres. The gauge measures differently per vehicle, depending on sender, tank shape and stored tank volume, but fairly evenly: at k 1.063 Webfleet reports about 6 % more than was billed. k is learned per vehicle from its own certain fills (from 50 l, vehicle clear also without the refuel event, sources without contradiction) as the median of refuel event over billed litres; for the fill checked, without itself. „Rise ÷ k“ is then what arrived in the tank. Reliable means: at least 5 such fills, and the middle half of their ratios lies at most 0.2 apart. No reliable factor: fewer than 5 such fills, or they scatter more. Then the app shows the rise raw, „less in the tank“ does not check the vehicle, „bought more than burned“ compares with the consumption only, the mapping through refuel events compares raw litres, and with a strongly scattering gauge „more than fits“ is dropped too.","formula":"k = median (refuel event ÷ billed litres) over at least 5 certain fills from 50 l; reliable when 75th − 25th percentile ≤ 0.2; arrived = refuel event ÷ k; tank volume ÷ k replaces the Webfleet tank volume where it differs by more than 15 %","sources":"Fuel statements, Station vehicle list, PIN and card list, Webfleet trips, Webfleet refuel events, Webfleet vehicle data, Mapping, Rule set"}},"diesel":{"period":"{from} – {to}","runStamp":"Run {run}","oldFormatTitle":"Diesel data in the old format","oldFormat":"The Diesel data are still in the old format; the next run updates them.","missingTitle":"Diesel data missing","missing":"These datasets of the diesel check do not exist in this organisation yet:","tiles":{"atStake":"Litres in question","atStakeHint":"{month} · in {count} open findings","largest":"Largest single case","largestHint":"{month} · {plate} · {when}","unconfirmed":"Vehicle not confirmed","unconfirmedValue":"{count} of {total}","unconfirmedHint":"{month} · → mapping","coverage":"Coverage","coverageHint":"in the run {from}–{to} · of the litres with a confirmed vehicle"},"status":{"open":"open","reopened":"reopened","decided":"decided","provisionallyGone":"provisionally gone","gone":"gone"},"checks":{"not_at_pump":"Not at the pump","tank_short":"Less in the tank","over_tank":"More than fits","bought_burned":"Bought more than burned"},"misbookingTo":"Misbooking → {plate}","changed":"Mapping changed","changedLong":"Mapping changed · re-evaluated","goneReason":"{key} assigned to {value} on {day}","keyTypes":{"vehicle_no":"Vehicle no.","wagen":"Wagen-Nr.","wagenOf":"Wagen-Nr. {number} ({company})","card":"Card","pin":"PIN"},"columns":{"time":"When","kind":"Check","level":"Vehicle","atStake":"Litres (in question)","status":"State","actions":"Action","plateDriver":"Plate · driver"},"filters":{"kind":"Check","vehicle":"Vehicle","driver":"Driver","unconfirmed":"Vehicle not confirmed"},"actions":{"pdf":"Finding as PDF"},"record":{"atStake":"{litres} l in question","difference":"{litres} l difference","cases":"Case {cases}","fuelledBy":"fuelled by","pickVehicle":"Pick a vehicle","glance":"At a glance","tank":"Tank","who":"Who","month":"Month","span":"Period","partOf":"Part of {period}","consumed":"since the last fill ~{litres} l used (Webfleet)","loading":"Loading the references…","refs":"References","history":"History","staleNote":"The decision “{answer}” was taken on older data; the finding is open again.","keyChanged":"Mapping of {key} changed on {day}{to}. The next run re-evaluates this finding; a decision now applies to the old state.","keyTo":" (→ {plate})","keyDrops":"Provisionally gone: {key} assigned to {value} on {day}. The run calculated this in advance.","keyStays":"{key} assigned to {value} on {day}. The finding stays, as the run calculated in advance.","outcomeReason":"{reason}.","keyChangedBar":"{key} changed since the run: if the next run changes this finding, the decision opens again.","unconfirmed":"Vehicle not confirmed for the fill at {time}.","keyLink":"{key} in the mapping ›"},"facts":{"station":"Station","company":"Company","source":"Source"},"glance":{"abweichung":"speaks for a discrepancy","dagegen":"speaks against it","fehlbuchung":"speaks for a misbooking (other vehicle)"},"tank":{"billed":"billed","rise":"rise per Webfleet","suggested":"{plate} (proposal)","tankLine":"Tank {litres} l","over":"+{litres} l over the tank","litres":"litres","question":"{litres} l in question","questionOver":"{litres} l in question · over the tank","questionWhole":"{litres} l in question: the whole fill","raw":"raw {raw} l · ÷ k {k}","uncalibrated":"raw, no k","noEvent":"no refuel event","otherNote":"{time} · raw {raw} l · ÷ k {k}","otherRaw":"raw · {time} · k unknown","noTank":"Tank volume unknown – no tank outline","tankUnknown":"tank unknown","noK":"No reliable factor k (sensor: {sensor}): the rise is raw.","none":"No litres billed.","legend":{"tank":"Tank volume","billed":"billed (statement)","over":"more than the tank holds","rise":"rise per Webfleet, calibrated (÷ k)","riseRaw":"rise per Webfleet, raw","other":"the other vehicle's refuel event","namedTank":"the named vehicle's tank","question":"in question","why":{"tank_short":"billed, did not arrive in the tank","over_tank":"more than the tank holds","not_at_pump":"the whole fill"}}},"sensor":{"reliable":"reliable","unreliable":"unreliable","none":"none"},"who":{"pinCard":"PIN / card","pin":"{fills} fills on {vehicles} vehicles, {own} of them on this one","pinAll":"{fills} fills, all on this vehicle","pinAllOne":"1 fill, for this vehicle","driver":"Driver","other":"Refuel event {time}, {litres} l raw · {booked}","notBooked":"no booking of its own","noEvents":"reports no refuel events this month"},"eventTypes":{"fill":"Fill","period":"Period"},"refs":{"lines":"Statement lines","sha":"File checksum","listEntry":"Vehicle list","wfEvents":"Webfleet refuel events","wfTrip":"Webfleet trip","pulls":"Pulls","run":"Run","rules":"Rules version","cases":"Cases","checks":"Checks","hash":"Data state","fills":"Fills"},"mapping":{"vehicle":"Vehicle"},"history":{"runNote":"Run: {note}","misbooking":" → {plate}"},"empty":"Nothing for this selection."},"dieselRecord":{"facts":{"title":"Facts","vehicle":"Vehicle","vehicleValue":"{plate} · Webfleet object {vehicle}","tank":"Tank","tankValue":"{litres} l · k {k} ({sensor})","tankNoK":"{litres} l · no reliable factor k (sensor: {sensor})"},"sources":{"tank":"Fuel statements, Webfleet refuel events, Webfleet vehicle data","fills":"Fuel statements, Station vehicle list, PIN and card list, Webfleet trips, Webfleet stops, Webfleet refuel events, Mapping","map":"Webfleet trips, Webfleet stops, Webfleet refuel events","period":"Fuel statements, Webfleet refuel events, Mapping"},"fills":{"title":"The fills one by one","columns":{"position":"Position at the time"},"confirmed":"✓ {plate}","sourcesOf":"{n} of 4 sources","or":"or","noVehicle":"no vehicle","toggle":"Sources","barLabel":"Sources: {list}","reasons":{"listNo":"{key} per the station's list","listCard":"{key} per the card list","listPlate":"plate on the statement","holder":"the driver of {key} drove this vehicle","card":"most fills of this card","event":"fits by time and quantity","eventAfter":"{min} min later at the station, ~{litres} l","eventBefore":"{min} min earlier at the station, ~{litres} l","mapping":"confirmed mapping","correction":"decided misbooking"},"resolve":{"differ":"The sources name different vehicles.","label":"Resolve:","inMapping":"in the mapping","orHere":"or here „Misbooking“ → {plate}"},"atPump":"at the pump, {km} km","away":"{km} km away","awayState":"{km} km away, {state}","moving":"driving","standing":"standing","where":"where the vehicle was at {time}","movingAt":"driving {speed} km/h","lastStop":"last stop {time}","noPosition":"no position","others":"At the pump: {list}","other":"{plate} {km} km {time}","moved":"Misbooking → {plate}"},"routes":{"list":"Vehicle list","holder":"PIN and driver","card":"Fuel card","event":"Refuel event","mapping":"Mapping","correction":"Misbooking","decision":"Reconciliation"},"why":{"not_listed":"not on the list","no_vehicle":"no vehicle for it","no_holder":"no holder known","not_road":"at own stations without a card","no_usual":"no usual vehicle","no_event":"no refuel event","several":"refuel events of several vehicles","none":"no vote"},"reason":{"says":{"list":"the vehicle list assigns {key} to {plate}","holder":"{holder} belongs to the driver of {plate}","card":"the card usually fuels {plate}","event":"the refuel event reports {plate}","mapping":"the mapping names {plate}","correction":"the misbooking names {plate}"},"but":{"list":"but the vehicle list assigns {key} to {plate}","holder":"but {holder} belongs to the driver of {plate}","card":"but the card usually fuels {plate}","event":"but the refuel event reports {plate}","mapping":"but the mapping names {plate}","correction":"but the misbooking names {plate}"},"holder":{"pin":"the PIN","card":"the card"},"fill":"the fill","conflict":"{says}, {but}.","single":"{says}; no second source confirms it.","none":"No source names a vehicle.","short":{"conflict":"{route}: {plate}","single":"{route} only","none":"no source"}},"map":{"title":"Map","none":"No position of the station or the vehicle at the time of the fill.","oneFill":"fill {list}","fills":"fills {list}","fill":"{time} · {litres} l","and":" and ","at":"at {time}","km":"{km} km from the pump","atPump":"at the pump · {km} km · {time}","line":"Distance to the pump","notAtPump":"Not at the pump from {km} km","pumpRadius":"{km} km: at the pump","inCorner":"in the corner map","inset":"at the pump · {from}–{to}","per":"per {sources}"},"period":{"arrived":"Fuelled, but not arrived in the tank","consumption":"More fuelled than the consumption explains","counts":"{fills} fills, {events} refuel events","panel":"Fills, refuel events and their sum","billedAxis":"Invoice","billedUnit":"↑ litres","eventsAxis":"Webfleet","eventsUnit":"↓ litres ÷ k","sumAxis":"Sum","sumSince":"since {day}","after":"→ {time} · {litres} l","summary":"{fills} fills, billed {billed} l; arrived in the tank {arrived} l; difference {difference} l","summaryBilled":"{fills} fills, billed {billed} l","legendTop":"Top, per fill:","legendBottom":"Bottom, summed up:","legend":{"withEvent":"invoice with event","withoutEvent":"invoice without event","unconfirmed":"vehicle not confirmed","eventWithFill":"Webfleet event with invoice","eventWithoutFill":"Webfleet event without invoice","late":"event later, the vehicle stood until then","billed":"billed {litres} l","arrived":"arrived in the tank (Webfleet ÷ k) {litres} l","gap":"gap at the end = difference"},"table":"Row by row","columns":{"time":"Time","billed":"Invoice","key":"Key","event":"Webfleet event (÷ k)","difference":"Difference","hint":"Note"},"sum":"Sum","hints":{"fits":"fits","noEvent":"no refuel event","far":"vehicle {km} km away","late":"event later, the vehicle stood until then","after":"event after the period","loose":"without a fill","raw":"raw, no k","part":"own finding ›"},"offBy":"The rows differ from the difference in the header by {litres} l.","consumptionNote":"Without refuel events or a reliable k the check compares with the consumption; the rows show the invoice."},"variant":{"receiver":"Another vehicle took the fuel"},"card":{"misbookingMany":"One or more fills went into another vehicle; from the next run on they count there.","replacesMisbooking":"Note: a new decision replaces the misbooking; the fill then moves back at the next run.","stays":"stays with {plate}","staysShort":"stays","suggested":"suggested","fill":"{time} · {litres} l","moved":"{moved} of {total} moved"},"metrics":{"tankVolume":{"label":"Tank volume","name":"Tank volume","explanation":"The outline is the vehicle's tank volume: per Webfleet, or Webfleet ÷ k where that differs by more than 15 % and k is reliable. „Tank volume unknown“: no outline.","formula":"—","sources":"Webfleet vehicle data, Webfleet refuel events"},"tankBilled":{"label":"billed","name":"Billed, per fill","explanation":"Each fill a segment with its time and litres; hatched, what goes beyond the tank volume.","formula":"Sum of the fills","sources":"Fuel statements"},"tankRise":{"label":"Rise per Webfleet (÷ k)","name":"Arrived in the tank per Webfleet","explanation":"What the refuel events of these fills measured, converted with the vehicle's factor k; below it raw and k. „no refuel event“: Webfleet reported no rise for any of these fills.","formula":"Sum of refuel events ÷ k","sources":"Webfleet refuel events"},"tankOther":{"label":"other vehicle","name":"Refuel event of another vehicle","explanation":"A refuel event of the suggested vehicle at the same time at the same station, without a fill of its own, ÷ its k.","formula":"Refuel event ÷ k","sources":"Webfleet refuel events"},"fillRoutes":{"label":"Confirmed vehicle","name":"When a vehicle is confirmed","explanation":"A vehicle is confirmed when at least two sources name it and none contradicts. The bar has one segment per source: green where it names the confirmed vehicle, amber where sources name different vehicles, light green where it alone names a vehicle, grey without a result. „Sources“ shows what each source says.","formula":"at least 2 sources name the vehicle, none another","sources":"—"},"fillPosition":{"label":"Position at the time","name":"Where the vehicle was","explanation":"Distance to the station and whether the vehicle was driving or standing, from the GPS track ±10 min, else the last stop. Other vehicles standing within 0.3 km ±15 min with no fill of their own within ±30 min, the three nearest, with time and distance.","formula":"Distance vehicle – station","sources":"Webfleet trips, Webfleet stops, Webfleet refuel events"},"routeList":{"label":"Vehicle list","name":"Source „vehicle list“","explanation":"The station's vehicle list (number → plate), a plate on the DKV statement or a card that belongs to a vehicle per the card list. Where the list names a plate no vehicle carries that day, the Webfleet vehicle of that name counts.","formula":"exactly one vehicle with this plate that day","sources":"—"},"routeHolder":{"label":"PIN and driver","name":"Source „PIN and driver“","explanation":"The holder of the PIN or card, matched by name to a Webfleet driver, and the vehicle he drove closest to the fill; else a vehicle named after him in Webfleet.","formula":"at most 3 h between trip and fill","sources":"—"},"routeCard":{"label":"Fuel card","name":"Source „fuel card“","explanation":"The vehicle the card's other fills mostly belong to, if it was driving around the time of the fill. DKV and Hoyer only.","formula":"at least 2 fills, at least 80 % on this vehicle, a trip within 3 h","sources":"—"},"routeEvent":{"label":"Refuel event","name":"Source „refuel event“","explanation":"A refuel event at this station at a fitting time and amount. No vote where refuel events of several vehicles fit.","formula":"own stations −10 to +45 min, on the road −5 to +20 min (later where the vehicle stood until then, at most 7 days); within 1 km of the station; litres ÷ k within ±25 %","sources":"—"},"routeDecision":{"label":"Reconciliation","name":"Reconciling the sources","explanation":"The vehicle list holds unless two other sources agree on another vehicle; without a vehicle list the most votes, on a tie PIN and driver before refuel event before fuel card. A confirmed pairing holds before every source, a decided misbooking fixes the fill.","formula":"—","sources":"—"},"weakFill":{"label":"Vehicle not confirmed","name":"—","explanation":"Names the finding's weakest fill and why, e.g. „The list assigns No. 3028 to H-SG872, but the PIN belongs to the driver of H-SG382.“","formula":"—","sources":"—"},"periodHead":{"label":"Difference","name":"Difference in the period","explanation":"In the header „Fuelled, but not arrived in the tank“, the company, the number of fills and refuel events, and the difference large. A period is a calendar month, cut to the run's period.","formula":"Σ billed − Σ refuel events ÷ k","sources":"Fuel statements, Webfleet refuel events, Mapping"},"periodTop":{"label":"Top, per fill","name":"Fills and refuel events","explanation":"Each fill a bar up at its time (dark with a refuel event, red without, outlined where the vehicle is not confirmed); each refuel event ÷ k a bar down, linked to its fill or marked „without a fill“. Weekends grey.","formula":"—","sources":"Fuel statements, Webfleet refuel events"},"periodBottom":{"label":"Bottom, summed up","name":"Billed and arrived, summed up","explanation":"Two lines since the start of the period: billed and arrived in the tank (Webfleet ÷ k). The gap at the end is the difference.","formula":"running sums","sources":"Fuel statements, Webfleet refuel events"},"periodTable":{"label":"Row by row","name":"Table","explanation":"One row per fill and per refuel event without a fill: time, billed, key with level, refuel event (time, litres ÷ k), difference, note. The sum gives the figures in the header.","formula":"Row difference = billed − refuel event ÷ k; without a fill negative","sources":"Fuel statements, Webfleet refuel events, Mapping"},"periodOffBy":{"label":"Discrepancy","name":"—","explanation":"Shows only where the sum of the rows does not give the difference in the header (a data error).","formula":"—","sources":"—"}}},"zuordnung":{"tabs":{"vehicle_no":"Vehicle numbers","wagen":"Fuel cards","pin":"Fuel PINs","vehicles":"Vehicles"},"filterName":"Filter","moreFilters":"More filters","filters":{"anomalous":"Anomalous","red":"Red fills","amber":"Amber fills","open":"Open findings","unclear":"No clear proposal","unconfirmed":"Unconfirmed","renamed":"Plate changed","all":"All"},"count":"{n} entries","countOne":"1 entry","columns":{"key":"Key","current":"Mapping","data":"From the data","fills":"Fills","cases":"Findings","status":"State","vehicle":"Vehicle","numbers":"Vehicle numbers","wagen":"Fuel cards","drivers":"Drivers from the data (PIN)"},"colours":{"green":"green","red":"red","amber":"amber","grey":"grey"},"pending":"Vehicle found by the next run","driver":"Driver {no}","until":"until {to} {plate}","more":{"vehicles":"+{n} more vehicles","vehiclesOne":"+1 more vehicle","drivers":"+{n} more drivers","driversOne":"+1 more driver"},"current":{"confirmed":"confirmed","from":"from {from}","range":"{from} – {to}","shared":"no fixed vehicle","list":"per the list, unconfirmed","pinList":"per the PIN list, unconfirmed","none":"none","noList":"no list","holder":"List: holder {name}","pinMissing":"PIN missing from the PIN list","pinUnknown":"List: {name} · name not in Webfleet"},"states":{"confirmed":"confirmed","shared":"no fixed vehicle","same":"all the same","renamed":"Plate changed","dataOnly":"from the data only","other":"The data name another vehicle","otherPin":"The data name another driver","unclear":"No clear proposal"},"stateSubs":{"same":"Saving confirms","renamed":"same truck","suggestion":"Proposal {value}","share":"{n} of {total}"},"vehicle":{"object":"Object {vehicle}","tank":"Tank {litres} l","red":"{n} fills with {plate} per the data","redOne":"1 fill with {plate} per the data","amber":"Data disagree","none":"no data","keys":"Keys of this vehicle","open":"open ›","noDecision":"A vehicle has no decision of its own. It changes in the key, so every mapping has exactly one place."},"kinds":{"vehicle_no":"Vehicle number","wagen":"Fuel card","pin":"Fuel PIN","vehicles":"Vehicle"},"sources":{"vehicle_no":"own stations · the stations' vehicle list","wagen":"Hoyer and DKV · card list per Wagen-Nr.","pin":"own stations · PIN list, drivers from Webfleet"},"record":{"fills":"Fills {n}","red":"red {n}","findings":"Findings {cases}","findingsOne":"Finding {cases}"},"timeline":{"title":"Timeline","guideTitle":"How to read the timeline","label":"Timeline of {fills} fills","labelOne":"Timeline of 1 fill","fills":"Fills","zuordnung":"Mapping","zuordnungSub":"per the list or confirmed","zuordnungPinSub":"PIN list or confirmed","data":"From the data","dataSub":"driver, refuel event, card","dataPinSub":"driver of the fuelled vehicle","drivers":"From the data","driversSub":"drivers per Webfleet","keyFills":"{n} fills here","keyFillsOne":"1 fill here","none":"no mapping","noData":"the data name nothing","noKeys":"no key","renamed":"same truck, new plate","renamedTo":"new plate {plate}","booked":"booked to {plate}","dataSays":"from the data {plate}","and":"and","finding":"Finding {cases} · {checks} ›","colour":{"green":"The data name the same vehicle","red":"The data name another vehicle","amber":"The data sources disagree","grey":"No data source"},"legend":{"green":"Data: same vehicle","red":"Data: another vehicle","amber":"Data disagree","grey":"No data source","ring":"Part of a finding","circle":"Circle = own station","square":"Square = fuel card","confirmed":"Mapping confirmed","list":"Mapping per the list, unconfirmed","data":"recognised from the data"},"guide":{"zuordnungTitle":"Mapping.","zuordnung":"What the key belongs to, as the matching uses it today. Blue: someone confirmed it in the app, with “valid from” and “until”. Dashed: so the client's list says, nobody confirmed it. It changes only through the decision below.","dataTitle":"From the data.","data":"Which vehicle the fills themselves suggest, without the list. Sources: which vehicle the PIN's or card's driver drove per Webfleet, which vehicle had a refuel event at the pump, the learned card. For a PIN the driver stands here.","fillsTitle":"Fills.","fills":"Every fill at its day and time. The colour compares where the fill is booked with what the data say: same {green} ({share} %), another {red}, data disagree {amber}, no data {grey}. A red ring means: part of a finding. The colour belongs to the fill, not to the record.","whoTitle":"Who books a fill?","who":"A confirmed mapping before anything else. Otherwise the list, unless two data sources name another vehicle together. Without a list the majority."}},"list":{"title":"Fills as a list ({n})","forPrint":"for print and export","time":"When","station":"Station","litres":"Litres","keys":"Keys","booked":"booked to","data":"from the data","colour":"Colour","cases":"Findings"},"history":{"saved":"before: {before} · now: {after}","run":"Run {run}: {state}","first":"First fill in the period. List: {list}.","firstVehicle":"First fill in the period."},"decision":{"title":"Decision","vehicle":"Vehicle","driver":"Driver","from":"valid from","to":"until","reason":"Reason","save":"Save","pickVehicle":"Pick a vehicle","pickDriver":"Pick a driver","fromData":"from the data","allVehicles":"every vehicle","allDrivers":"every driver in Webfleet","shared":"no fixed vehicle","fills":"{n} fills","fillsOne":"1 fill","tags":{"suggestion":"Proposal","changed":"changed"},"reasonOptional":"only needed where you deviate from the proposal","reasonDeviates":"Please give a reason, you deviate from the proposal.","reasonNone":"Please give a reason, there is no proposal.","missingVehicle":"Please pick a vehicle.","missingDriver":"Please pick a driver.","missingFrom":"Please give “valid from”.","endBeforeStart":"“until” lies before “valid from”.","keyNames":{"vehicle_no":"Number {key}","pin":"PIN {key}"},"sentence":{"vehicle":"{key} belongs, confirmed, to {value} from {from}.","vehicleUntil":"{key} belongs, confirmed, to {value} from {from} until {to}.","shared":"{key} counts as no fixed vehicle from {from} and no longer votes.","sharedUntil":"{key} counts as no fixed vehicle from {from} until {to} and does not vote then.","pin":"{key} belongs, confirmed, to {driver}. Every fill of this PIN finds its vehicle through the driver's trips.","pinMissing":"The PIN is missing from the PIN list, please add it there.","ends":"{old} ends on {day}.","starts":"{old} applies again from {day}.","gone":"{old} goes.","split":"{stay}, {move}.","stay":"{n} fills stay with {old}","stayOne":"1 fill stays with {old}","go":"{n} go to {value}","goOne":"1 goes to {value}","moving":"{n} fills go to {value}.","movingOne":"1 fill goes to {value}.","staying":"No fill changes its vehicle.","findings":"The next run re-evaluates the findings {cases}.","findingsOne":"The next run re-evaluates the finding {cases}.","green":"{n} fills turn green.","greenOne":"1 fill turns green.","red":"{n} fills turn red.","redOne":"1 fill turns red.","pending":"The next run finds the vehicle of {n} fills.","pendingOne":"The next run finds the vehicle of 1 fill.","drops":"The findings {cases} go provisionally.","dropsOne":"The finding {cases} goes provisionally.","stays":"The findings {cases} stay.","staysOne":"The finding {cases} stays.","reason":"{cases}: {reason}."}},"search":{"label":"PIN, driver name, plate, number, card …","hits":"Hits in every tab","none":"No hit in any tab."},"export":{"button":"Mappings as Excel","explanation":"Explanation","until":"until","kinds":{"confirmed":"confirmed","shared":"no fixed vehicle","list":"per the list","none":"none"},"columns":{"vehicle_no":"Number","wagen":"Wagen-Nr.","pin":"PIN","company":"Company","cards":"Cards","value":"Mapping","driver":"Driver","kind":"Kind","from":"valid from","to":"until","by":"confirmed by","at":"confirmed on","list":"Per the list","data":"From the data","fills":"Fills","red":"of them red","cases":"Findings","state":"State","plate":"Vehicle","object":"Webfleet object","earlier":"earlier plates","numbers":"Vehicle numbers","wagens":"Fuel cards","drivers":"Drivers from the data"},"lines":{"e1":"The state now, every row, not only the filtered ones. One sheet per tab, the columns as in the app.","e2":"A confirmed period is a row of its own, with “confirmed by” and “confirmed on”. “Per the list” is the client's list: the stations' vehicle list, the card list, the PIN list.","e3":"“From the data” is the vehicle the fills name themselves, without the list. For a PIN it is the driver.","e4":"A fill's colour compares where it is booked with the data: “of them red” counts the fills the data place in another vehicle.","e5":"The Fuel PINs sheet holds drivers' names. Only who may see the review gets the file."}}},"recordPage":{"back":"Back to the overview","backTo":"Back to {target}","crumbs":"Breadcrumb","keys":"↑ ↓ switch case · Esc back","list":"List","filter":"Filter","filterCount":"Filter · {n}","panel":"as in the overview","active":"Active filters","remove":"Remove {filter}","reset":"reset all","done":"Done","hidden":"The open case does not match the filters.","missing":"This entry is not (or no longer) in the data."},"tileLinks":{"outside":"See per driver ›","driversOver":"Show drivers over the limit ›","shift":"Open clock in/out ›","dwell":"Open dwell times ›","waiting":"Settle in Places ›","toDecide":"Show places with cases ›","cases":"Show places with cases ›","confirmed":"Show on the map ›","outsideAll":"Show standstills without a place ›","atStake":"Show open findings ›","largest":"Open the finding ›","unconfirmed":"Settle in the mapping ›","coverage":"Show uncertain mappings ›"},"statusFilter":{"open":"Open","decided":"Decided","provisional":"Provisionally gone","all":"All"},"filters":{"driver":"Driver","vehicle":"Vehicle","day":"Day","place":"Place","search":"Search…","any":"all","hideWaiting":"Hide waiting","byPlace":"per place","byCase":"per case","overLimit":"Over the limit","allDrivers":"All","kind":"Kind","placeStatus":"Status"},"tiles":{"outside":"Time outside work places","outsideHint":"{month} · {current}after {allowance} free minutes per working day · before deduction {raw}","driversOver":"Drivers over the limit","driversOverValue":"{count} of {total}","driversOverHint":"{month} · more than {limit} min over the free minutes","driversOverHintAll":"Driver-months in the period · {current}more than {limit} min over the free minutes","shift":"Clock in/out outside tolerance","shiftHint":"{month} · {cases} shifts of {persons} persons","dwell":"Dwell time over usual","dwellHint":"{month} · {cases} halts at {places} places · not in the monthly limit","waiting":"Waiting for a place decision","waitingHint":"{month} · {cases} cases at {places} places → Places","toDecide":"Places to decide","toDecideHint":"{month} · {suggested} suggested · {rest} rest stops","cases":"Cases at open places","casesHint":"{month} · {suggested} at suggested places, {rest} at rest stops","confirmed":"Standstills at confirmed work places","confirmedHint":"since January, all vehicles · {count} work places","outsideAll":"Outside every place","outsideAllHint":"since January, all vehicles · always count for the driver","provisional":" · provisional"},"provisionalNote":"provisional: {count} changes since the last run ({decisions} of them decisions)","answers":{"explained":"explained","anomaly":"Deviation","work_place":"Work place","misbooking":"Misbooking"},"placeAnswers":{"yes":"Work place","no":"No work place"},"status":{"open":"open","reopened":"reopened","waiting":"waits for place","decided":"decided","provisionallyGone":"provisionally gone","gone":"gone"},"kinds":{"station":"Loading/unloading point","depot":"Depot","workshop":"Workshop","filling_station":"Filling station","work_site":"Other work place","rest_stop":"Rest stop"},"roles":{"load":"Loading point","unload":"Unloading point","both":"Loading and unloading point"},"checks":{"standstill":"Standstill outside a work place","dwell":"Dwell time over usual","shift":"Clock in/out outside tolerance"},"parts":{"morgens":"in the morning before the first trip","abends":"in the evening after the last trip","nachts":"at night"},"queue":"explained: queue at the place","noPlace":"– no place –","automatic":"automatic","actions":{"takeProposal":"✓ Proposal","more":"More actions","open":"Open","pdf":"Case as PDF","refs":"References","openPlace":"Open place","reopen":"reopen","saveNext":"Save & next","saveNote":"Save note","undo":"Undo","saved":"Saved","saveFailed":"Saving failed","cases":"Cases ▸","confirmPlace":"✓ Work place","rejectPlace":"No work place","takePlaceProposal":"✓ {answer}","save":"Save","cancel":"Cancel"},"comment":{"label":"Comment","required":"Comment (required for this answer)","optional":"Comment (optional)","note":"Note (does not change the state)"},"columns":{"start":"Start","driver":"Driver","driverPlate":"Driver · plate","place":"Place","workMinutes":"Min. work","counted":"Counted in min","proposal":"Proposal","status":"State","actions":"Action","workAtPlace":"Min. at place","usualValue":"usual {minutes}","day":"Day","person":"Person","kommen":"Clock in","firstAt":"first {time}","lastAt":"last {time}","gehen":"Clock out","deviation":"Over the tolerance in min","workingDays":"Working days","rawMinutes":"Min. outside (total)","overMinutes":"over free minutes","againstLimit":"against limit","caseCounts":"Cases open / deviation / explained","month":"Month","events":"Cases","queues":"of them queues","excess":"Sum over usual (min)","cases":"Cases","minutes":"Minutes","kind":"Kind","role":"Role","placeRole":"Place (role)","casesIn":"Cases in {month}","vehiclesSince":"Vehicles (since January)","workMinutesShort":"Min."},"record":{"title":"Case","labels":{"arbeitszeit":"Case","orte":"Place","zuordnung":"Key","vehicle":"Vehicle","diesel":"Finding"},"position":"{n} of {total}","prev":"Previous","next":"Next","figure":"{minutes} min","figureNote":{"standstill":"logged as work · {stop} min standstill","dwell":"work at the place · usual {usual} min","shift":"deviation"},"pauseAfterKommen":"Break after clock-in: {minutes} min","pauseBeforeGehen":"Break before clock-out: {minutes} min","beyond":"{minutes} min over the tolerance","sideTimes":"{times}: {gap} min apart{unrounded} − {tolerance} allowed = {beyond} over the tolerance","unrounded":" (unrounded {minutes})","edge":{"morgens":"Work before the first trip{when}: {work} min logged → {rounded} rounded − {allowed} allowed (departure check) = {beyond} over the tolerance","abends":"Work after the last trip{when}: {work} min logged → {rounded} rounded − {allowed} allowed (paperwork) = {beyond} over the tolerance"},"otherPart":"Another part of this standstill, split by a rest over night: {parts}","otherParts":"The other parts of this standstill, split by rests over night: {parts}","partOver":"{part} {range}: {work} min logged, its own case with {minutes} min over the tolerance","partCase":"{part} {range}: {work} min logged, its own case","partNone":"{part} {range}: {work} min logged, no case","dependsOnPlace":"Depends on the place {name} ({status}). {count} cases are decided with it.","openPlaceLink":"Open the place ›","source":"Source: {sources}","goneAtPlace":"Provisionally gone: {place} {change} on {day}.","goneInCircle":"Provisionally gone: {place} {change} on {day}; this standstill now lies inside it.","goneDecided":"With the next run the decision “{answer}” goes too.","placeChanged":"Place changed: {place} {change} on {day}. The next run re-evaluates this case; a decision now applies to the old state.","openNamedPlace":"Open {place} ›","changes":{"yes":"decided a work place","no":"decided no work place","open":"reopened","grown":"extended ({from} → {to} m)","shrunk":"made smaller ({from} → {to} m)","kind":"kind: {kind}","role":"role: {role}"},"staleNote":"The decision “{answer}” was taken on older data; the case is open again.","explanation":"Proposal: {answer}.","noProposal":"No proposal.","decision":"Decision","workPlaceAsk":"This is a work place: the position goes into the next places build.","noPosition":"Work place needs the standstill's position, which this case lacks.","waitsForPlace":"This standstill is decided through its place.","timeline":"Course of the day","ownPlace":"This standstill's place","why":"Why","atPlace":"At the place: {name}","roleHere":"Role here","dwellMonth":"{cases} dwell cases · {minutes} min","person":{"title":"This person in {month} · {count} shifts with a case","titleAll":"This person in {month} · {count} shifts","day":"Day","note":"Minutes; red: over {tolerance} min tolerance.","sources":"ATOS time records, Webfleet driver card, Webfleet trips"},"refs":"References","history":"History","close":"Close"},"facts":{"vehicle":"Vehicle","objectno":"Webfleet object","driver":"Driver","atosNo":"ATOS personnel number","driverNo":"Webfleet driver","start":"Start","end":"End","position":"Position","mapLink":"Map ↗","address":"Webfleet address","kommenGehen":"ATOS clock in · out"},"refs":{"stop":"Webfleet stop","segments":"Segments","trips":"Trips","pullDate":"Pulled","run":"Run","rules":"Rules version"},"tagesverlauf":{"loading":"Loading the course of the day…","none":"No course of the day for this case.","sources":"ATOS time records, Webfleet driver card, Webfleet stops, Webfleet trips, Place list","whole":"Shift {range}","zoomed":"Window {range} · double-click: whole shift","chart":"Course of the day {range}","overview":"Overview","overviewHelp":"Overview: drag the window or its edges; a click moves it there","hint":"The mouse wheel over the chart zooms around the pointer, dragging pans, a double-click shows the whole shift again; the overview below shows the window.","lanes":{"atos":"ATOS","card":"Driver card","vehicle":"Vehicle"},"states":{"drive":"Driving","work":"Other work","standby":"Availability","pause":"Break","unknown":"Unknown"},"noActivity":"no activity","kommen":"Clock-in {time}","gehen":"Clock-out {time}","atosBar":"ATOS clock-in to clock-out {range}","first":"first activity {time}","last":"last activity {time}","atosFollows":"ATOS {day} to follow","atosFollowsShort":"to follow","atosNone":"no ATOS times","trip":"Trip (ignition on) {range} · {duration}","stop":"Stop {place} · {range} · {duration}","noPlace":"outside every place","thisCase":"this case","gap":"without activity","gapTip":"{duration} without activity, {range}","piece":"{state} {range} · {minutes} min · {counts}","legend":{"case":"Case","atos":"Clock-in to clock-out","trip":"Trip (ignition on)","stop":"Stop","caseStop":"This case's standstill","band":"The case's time","counts":"counts"},"how":"How the {minutes} min come about","cols":{"time":"Time","state":"State","minutes":"Min.","counts":"counts"},"shiftRows":{"kommen":"Clock-in → first activity","gehen":"last activity → clock-out"},"reasons":{"work":"yes: {state} while standing","at_place":"yes: work at the place","pause":"no: break","drive":"no: driving","driveArrival":"no: driving (arrival)","driveDeparture":"no: driving (departure)","other_card":"no: another card","none":"no: no activity","shiftYes":"yes: more than {tolerance} min","shiftNo":"no: within the tolerance","otherPart":"no: another part of the standstill"},"sum":{"standstill":"Sum","dwell":"Sum","shift":"Counted: the larger","shiftBeyond":"Over the tolerance: each side beyond {tolerance} min, together"},"info":{"atos":{"label":"ATOS","name":"ATOS clock-in to clock-out","explanation":"A bar from clock-in to clock-out as ATOS records them, both times on it; the driver's first and last activity marked beneath. „ATOS 01.09. to follow“: this month's ATOS export is not loaded yet.","formula":"—","sources":"ATOS time records, Webfleet driver card, Webfleet trips"},"card":{"label":"Driver card","name":"Driver card","explanation":"What the driver's card reports: driving, other work, availability, break. Empty means no card inserted. More than 2 h without activity (only break or no card) while the vehicle stands show as a narrow gap with its length („14 h 00 without activity“).","formula":"—","sources":"Webfleet driver card"},"vehicle":{"label":"Vehicle","name":"Vehicle","explanation":"Trips with the ignition on, stops with their place's name, and this case's standstill, for the case's vehicle only: where the driver drove another one in between, its trips are not shown here.","formula":"—","sources":"Webfleet trips, Webfleet stops, Place list"},"band":{"label":"Case","name":"The case and what counts","explanation":"The light band is the case's time across all lanes; only the minutes that count are outlined and labelled.","formula":"—","sources":"—"},"colTime":{"label":"Time","name":"From–to","explanation":"A piece of the case's time, with the date across midnight.","formula":"—","sources":"—"},"colState":{"label":"State","name":"State on the driver card","explanation":"Driving, other work, availability, break or „no activity“.","formula":"—","sources":"—"},"colMinutes":{"label":"Min.","name":"Minutes","explanation":"The piece's length.","formula":"—","sources":"—"},"colCounts":{"label":"counts","name":"Does it count?","explanation":"„yes“ or „no“ with the reason, by the check's rule.","formula":"—","sources":"—"},"sumStandstill":{"label":"Sum","name":"Sum of the counting minutes","explanation":"Gives the figure in the case's header. Other work and availability count on the card of the driver whose card was in longest during the standstill; not break, driving, time without activity, other cards or another part of the standstill. For a part before the first or after the last trip the header shows only what lies over 15 min after rounding to the quarter hour.","formula":"Minutes of other work and availability of this card in the standstill, at most its duration","sources":"Webfleet driver card, Webfleet stops, Rule set"},"sumDwell":{"label":"Sum","name":"Sum of the counting minutes","explanation":"Gives the figure in the case's header. The minutes of every card except break count during the stop, driving included; the header shows the usual time and the minutes over it beside them.","formula":"Minutes of every card except break during the stop, together at most its duration","sources":"Webfleet driver card, Webfleet stops, Rule set"},"sumShiftBeyond":{"label":"Over the tolerance","name":"Minutes over the tolerance","explanation":"Gives the figure in the case's header. Clock-in is compared with the first activity and the last activity with clock-out, all rounded to the quarter hour. Where a side deviates by more than 15 min, what lies beyond counts. Where both sides deviate, both count together.","formula":"Per side the rounded deviation − 15 min, where over 15 min, added up","sources":"ATOS time records, Webfleet driver card, Webfleet trips, Rule set"},"sumShift":{"label":"Counted","name":"The larger deviation","explanation":"Gives the figure in the case's header: clock-in → first activity and last activity → clock-out; a deviation counts beyond 15 min, else it lies within the tolerance.","formula":"The larger of the two deviations","sources":"ATOS time records, Webfleet driver card, Webfleet trips, Rule set"}}},"usual":{"title":"How usual is this halt?","sentence":"This halt: {minutes} min, longer than 95% of the halts with work here{role}. Usual is {p25}–{p75} min (median {median}); a case from {from} min (95% up to {p95}, median + {excess}).","role":{"load":" when loading","unload":" when unloading"},"median":"median {minutes}","p95":"95% up to {minutes}","fromMark":"case from {minutes} min","thisMark":"this halt {minutes} min","legendUsual":"usual half of the halts with work here (25–75%), 12 months before","legendThis":"this halt","legendOthers":"more cases here in {month}{role}"},"placeDwell":{"title":"How long do halts take here?","window":"usual: {from} – {to}","note":"cases in {month} as red dots; a click opens the case","legendUsual":"usual half of the halts with work (25–75%)","legendCases":"cases in {month}","roles":{"load":"Loading","unload":"Unloading","site":"No role"}},"articles":{"title":"What the vehicles billed on the days here","stopDays":"{n} stop-days","stopDaysOne":"1 stop-day","vehicles":"{n} vehicles","vehiclesOne":"1 vehicle","withoutLine":"{share} without a freight line","articles":"{n} articles","articlesOne":"1 article","columns":{"article":"Article","customer":"Customer","days":"Days","vehicles":"Veh.","tonnes":"Tonnes","station":"Station"},"share":"{share} of the stop-days","tonnes":"{tonnes} t","km":"{km} km","here":{"L":"Loading point here","E":"Unloading point here"},"role":{"load":"loading point","unload":"unloading point","both":"loading and unloading point"},"hint":{"station":"Points to a {role}: {n} of {of} articles load or unload here.","stationOne":"Points to a {role}: 1 of {of} articles loads or unloads here.","routine":"One vehicle, mostly article {article}: a routine.","parking":"No article loads or unloads here: points to a parking place."},"hintLabel":"Hint","listed":"The first {n} of {total} articles, by days","listedAll":"{n} articles, by days","listedAllOne":"1 article, by days","showAll":"Show all {n} articles","showLess":"Show less","sources":"Webfleet stops, Place list, Selectline revenue export, Article lists","none":"No billing for these days yet.","noLines":"No freight line on these days.","info":{"summary":{"label":"Stop-days","name":"How this comes about","explanation":"A stop-day is a vehicle (plate) on a day with a halt at this place, within the period of the revenue export; a halt overnight counts every day it touches. To these come the billing's freight lines with the same plate and day (Selectline dates a line on the delivery day), without credits and price supplements. Vehicles: the vehicles behind these stop-days; articles: every article billed on them, the table shows the first 10, 4 at first. Per article: on how many stop-days it occurs, with how many vehicles, how many tonnes. “Loading point here”: the article's loading or unloading point by the article list lies in this place; otherwise the distance to the nearer one. The months run from the first to the last day with a line in the list.","formula":"without a freight line = stop-days without a freight line ÷ stop-days","sources":"Webfleet stops, Place list, Selectline revenue export, Article lists"}},"hintInfo":{"station":{"label":"Hint","name":"—","formula":"—","sources":"—","explanation":"A hint from the billing, not a decision. Rule: at least one article of the list loads or unloads here (its loading or unloading point lies in this place). A hint only from 10 stop-days with a freight line."},"routine":{"label":"Hint","name":"—","formula":"—","sources":"—","explanation":"A hint from the billing, not a decision. Rule: no article of the list loads or unloads here, and on more than half of the stop-days with a freight line one vehicle drove the same article. A hint only from 10 stop-days with a freight line."},"parking":{"label":"Hint","name":"—","formula":"—","sources":"—","explanation":"A hint from the billing, not a decision. Rule: no article of the list loads or unloads here, and no vehicle drove the same article on more than half of the stop-days with a freight line. A hint only from 10 stop-days with a freight line."}}},"nearPlace":{"title":"Nearest work place","head":"{name} · {km} km","line":"{km} km","kind":"Kind","radius":"Radius","since":"Since January","spot":"At this spot","confirmed":", confirmed","provisional":", provisional","radiusValue":"{radius} m","sinceValue":"{stops} stops · {vehicles} vehicles","spotValue":"{cases} cases · {vehicles} vehicles · {time}","hint":"→ in the decision: „Work place“, extend {place}","info":{"head":{"label":"Nearest work place","name":"Nearest work place","explanation":"The nearest confirmed work place and the distance to its centre; on the map both, with a line.","formula":"Distance standstill – centre of the place","sources":"Webfleet stops, Place list"},"kind":{"label":"Kind","name":"Kind and state","explanation":"For example „Work place, confirmed (Depot)“.","formula":"—","sources":"Place list"},"radius":{"label":"Radius","name":"Radius","explanation":"How far the place reaches; standing outside it counts as a standstill outside a work place.","formula":"—","sources":"Place list"},"since":{"label":"Since January","name":"Activity at the place","explanation":"Stops and vehicles at this place since January, all vehicles.","formula":"Count","sources":"Webfleet stops, Place list"},"spot":{"label":"At this spot","name":"Cases at the same spot","explanation":"How many cases of the month lie at the same spot as this one, with vehicles and hours; extending the place would take them all in.","formula":"Count and sum of the work minutes of the open standstills outside every place up to 150 m from this one, the distance within which the place list joins stops into one place","sources":"Webfleet driver card, Webfleet stops, Place list"}}},"history":{"system":"System","detected":"detected (run {run}) · proposal: {answer}","decided":"decided: {answer}","proposalTaken":" (proposal taken)","note":"Note","reopened":"reopened","undo":"Undo","undone":"taken back","runDecision":"Decision the run knows: {answer}","gone":"gone: {reason}"},"place":{"why":"Why suggested","facts":"Facts","id":"Place","proposal":"Proposal","monthValue":"{cases} cases · {minutes} min","mapSync":"⇄ in sync with the map","stop":"Standstill","overFrom":"over “case from”","rolePart":"Role · part","logged":"Logged","counted":"Counted","sum":"Standstills, total","cases":"Cases at this place ({month})","mapHint":"Drag the circle's edge = radius · the value also stands in the bar below","proposedRadius":"suggested {radius} m","affects":"affects {count} cases (provisionally at once)","name":"Name","kind":"Kind of place","groups":{"yes":"● Work place","no":"○ No work place"},"other":"Other","role":"Role","radius":"Radius (m)","stats":"{stops} standstills, {vehicles} vehicles, {days} days since January","radiusInRecord":"Radius outside {min}–{max} m: set it in the place's record","noCases":"No cases at this place this month.","status":{"toDecide":"to decide","work":"Work place","none":"No work place"}},"drivers":{"limitLine":"{current}{allowance} free minutes per working day · limit {limit} min a month","chart":"Minutes outside per day, the line is the free minutes","months":"Months","overLimit":"over the limit","rawNote":"before deduction {raw} min","calc":"How the sum comes about: {logged} min logged − {allowed} allowed in the morning and evening = {counted} counted − {free} free minutes = {over} over the free minutes · limit {limit} min","calcCounted":"How the sum comes about: {counted} min counted − {free} free minutes = {over} over the free minutes · limit {limit} min","day":"{day}: {logged} min logged · {counted} min counted","chartLogged":"Counted minutes outside per day, the logged ones light behind them. The line marks the free minutes."},"map":{"loading":"Loading map…","failed":"The map could not be loaded.","label":"Map","circle":"{name} · {status} · {radius} m","stop":"{time} · {minutes} min","legend":"Legend","outside":"outside the map","more":"+ {n} more","stops":"{n} stops at this spot","median":"median {d}","thisStandstill":"this standstill","thisHalt":"this halt","spot":"more cases at this spot","halts":"more halts of {plate} here on {day}","toNearest":"to the nearest work place","extended":"{place} extended","placeRadius":"{name} {radius} m","thisPlace":"this place","caseStop":"standstill with a case","otherStop":"other standstill","since":"since January","nearest":"nearest place","chip":"{name} · {status} · {km} km","overviewHint":"Dots: the centre of each place; from zoom level 12 circles with their radius · a click opens the place"},"export":{"button":"Export Excel","failed":"The export failed.","yes":"yes","no":"no","capped":{"start":"Start","end":"End","both":"Start and end"},"columns":{"start":"Start","end":"End","driver":"Driver","atosNo":"ATOS no.","plate":"Plate","objectno":"Webfleet object","place":"Place","detail":"Note","minutes":"Minutes","workMinutes":"Min. work","counted":"Counted in min","part":"Part","role":"Role","usualMedian":"usual (median)","usualP95":"usual (p95)","day":"Day","person":"Person","kommen":"Clock in","firstActivity":"first activity","lastActivity":"last activity","gehen":"Clock out","diffStart":"Dev. start (min)","diffEnd":"Dev. end (min)","capped":"at least (cut at 3 h)","flag":"Note","proposal":"Proposal","proposalReason":"Reason","status":"State","decision":"Decision","comment":"Comment","decidedBy":"by","decidedAt":"at","key":"Key","month":"Month","workingDays":"Working days","rawMinutes":"Min. outside (total)","overMinutes":"over free minutes","overLimit":"over the limit","open":"open","anomaly":"Deviation","explained":"explained","kind":"Kind","reason":"Reason","cases":"Cases","radius":"Radius (m)","lat":"Latitude","lon":"Longitude","placeId":"Place id","time":"Date","company":"Company","source":"Source","station":"Station","pinCard":"PIN/card","litres":"Litres invoiced","atStake":"Litres in question","checks":"Checks","explanation":"Explanation","suggestedPlate":"Proposed vehicle","correctedPlate":"fuelled by","eventType":"Finding type","periodStart":"Period from","periodEnd":"Period to","arrived":"Litres arrived (÷ k)","restFills":"Rest fills","restLitres":"Rest litres","unmatchedLitres":"Refuel events without a fill (l, ÷ k)","glance":"At a glance","pinFills":"Fills of the PIN/card","pinVehicles":"Vehicles of the PIN/card","pinOnVehicle":"of them on this one","consumedSinceLast":"used since the last fill (l)","parent":"Part of (key)"}},"print":{"printed":"Printed {date}","page":"Page","of":"of","button":"{label} as PDF","state":"State","decided":"decided","provisional":"decided, provisional until the next run","undecided":"Not decided yet","answer":"Answer","comment":"Comment","by":"Decided by","at":"Decided on"},"empty":"No cases for this selection."},"title":"Apps","description":"Open an app or pin it to your sidebar. Workspace pins are shared with your team.","browse":"Browse apps","open":"Open","openApp":"Open {name}","pinForMe":"Pin for me","unpinForMe":"Unpin for me","pinForWorkspace":"Pin for workspace","unpinForWorkspace":"Unpin for workspace","pinAppForMe":"Pin {name} for me","unpinAppForMe":"Unpin {name} for me","pinAppForWorkspace":"Pin {name} for workspace","unpinAppForWorkspace":"Unpin {name} for workspace","workspacePinned":"Pinned for workspace","emptyTitle":"No apps available yet","emptyDescription":"Apps will appear here when they are available for your workspace.","noPins":"Use + to find and pin apps.","loadingPins":"Loading pinned apps…","pinsLoadFailed":"Pinned apps could not be loaded.","pinSaveFailed":"Your pin could not be saved. Please try again.","retry":"Try again","unavailableTitle":"App unavailable","unavailable":"This app requires a feature that is not enabled for your workspace.","checkingAvailability":"Checking app availability…"},"selfServiceBilling":{"includedTotal":"Of {amount} included this period","saveBeforePayment":"Save or discard your billing changes before continuing to payment.","features":{"agent:knowledge":"Knowledge Base","agent:workflows":"Workflows","agent:email":"Email","agent:research":"Research","agent:file":"Files","agent:mcp":"Connected tools","agent:integrations":"Integrations","agent:code_execution":"Code execution","agent:dataset":"Datasets","agent:feedback_capture":"Feedback"},"title":"Plan and usage credits","included":"Included credits","purchased":"Purchased credits","available":"Available","reserved":"Reserved for work in progress: {amount}","allowanceOrder":"Included credits are used first at the provider’s base rate. Further usage uses purchased credits at your package’s usage rate.","carryForward":"Purchased credits carry forward. They do not renew your monthly subscription.","resets":"Current included allowance expires on {date}. Renewal requires a successful monthly payment.","loadFailed":"Payment status could not be loaded. Try again before making a purchase.","sessionRefreshFailed":"Payment is confirmed, but your session could not be refreshed. Refresh the page to continue.","accountChanged":"The active account changed. Open billing again in the account you want to use.","profileRequired":"Complete and save your billing details before continuing to payment.","taxUnavailable":"We cannot confirm the tax details for this payment yet. Check your billing details and try again later.","actionFailed":"The payment request could not be completed. You can retry safely.","stale":"Payment information could not be refreshed. Refresh the status before making changes.","waiting":"Waiting for payment confirmation. If Checkout was not completed, choose a package again. You can safely return later.","paymentApplied":"Payment confirmed. Your workspace balance is being refreshed.","paymentFailed":"This payment was not completed. You can start again below.","orderFailed":"This payment could not be checked for the current workspace. Refresh its status or return to billing.","paidThrough":"Current paid period ends on {date}.","cancelsAt":"Your subscription ends on {date}. It will not renew.","memberGuidance":"Ask a workspace owner or admin to manage payments and usage credits.","paymentMethod":"Manage payment method","cancelSubscription":"Cancel subscription","billingDetails":"Billing details","offersFailed":"Available purchase options could not be loaded. Please try again.","noOffers":"No purchase options are available right now.","monthlyNet":"per month, excluding tax","oneTimeNet":"one-time, excluding tax","offerIncluded":"Includes {amount} for monthly usage.","offerCredit":"Adds {amount} to your purchased balance.","seats":"Up to {count} members","choose":"Choose {name}","buy":"Buy {name}","refresh":"Refresh payment status","cancelTitle":"Cancel monthly renewal?","cancelDescription":"Your paid package remains available until {date}. Purchased credits stay in your workspace and can be used with an active subscription.","keepSubscription":"Keep subscription","confirmCancellation":"Cancel renewal","status":{"disabled":"Online payment is currently unavailable. You can sign out and return later.","pending_payment":"Choose a monthly package to activate your workspace.","processing":"We are processing your payment. Your workspace will become available after confirmation.","active":"Your subscription is active.","past_due":"Your renewal payment needs attention. Update your payment method to restore access.","ended":"Your monthly subscription has ended. Choose a package to continue. Your purchased credits are retained."},"reason":{"disabled":"Online payment is currently unavailable.","payment_required":"A paid monthly package is required to continue.","payment_processing":"Payment is still being confirmed.","payment_past_due":"Your renewal payment needs attention.","subscription_ended":"Your monthly subscription has ended.","allowance_exhausted":"Your included and purchased credits are exhausted. Buy a top-up to continue.","capacity_reserved":"Available credits are reserved for work in progress. Wait for it to finish or add credits.","funding_reversed":"A payment needs investigation. Contact support before continuing.","usage_reconciliation":"Usage needs investigation. Contact support before continuing."},"shelfTitle":"Usage credits","shelfManage":"Manage usage credits","blockedPlaceholder":"Payment or usage credits are required to continue…","errors":{"paymentRequired":"Payment is required. Open Plan & statements or ask a workspace owner or admin to restore access.","exhausted":"Usage credits are exhausted. Open Plan & statements or ask a workspace owner or admin to add credits.","reserved":"Usage credits are reserved for work in progress. Wait for it to finish and try again.","unavailable":"Paid usage is temporarily unavailable. Your work has not been started; try again later."}},"meta":{"title":"Uhrwerk.AI","description":"Chat-first workspace"},"packageBuilder":{"seats":{"minimumPrepaid":"Minimum prepaid seats","minimumPrepaidHelp":"This is the minimum paid quantity. Fewer members may be assigned; only the maximum limits invitations.","includedThenPaid":"{count} seats included in the base price, then {price} per additional seat"}},"language":{"label":"Language","english":"English","german":"German","short":{"en":"EN","de":"DE"},"updateFailed":"Failed to update language preference."},"common":{"open":"Open","download":"Download","attachedFile":"Attached file","noLinkAvailable":"No link available","notAvailable":"N/A","cancel":"Cancel","loading":"Loading…","remove":"Remove","rename":"Rename","save":"Save","dismiss":"Dismiss","optional":"optional","breadcrumbRoot":"Workspace"},"accountTransition":{"switchingTitle":"Switching account","starting":"Preparing a safe account switch…","activating":"Activating the selected account…","validating":"Verifying the active account…","completing":"Finishing the account switch…","waitingForPeer":"Waiting for the other tab to finish…","recovering":"Recovering your account session…","failedTitle":"Account switch needs attention","retry":"Retry target account","chooseAccount":"Choose another account","returnPrevious":"Return to previous account","signIn":"Sign in","phaseLabel":"Phase","referenceLabel":"Transition reference","requestIdLabel":"Request ID"},"dataTable":{"noResults":"No results.","resizeColumn":"Resize column","columns":{"button":"Columns","heading":"Toggle columns","reset":"Reset"},"filterBar":{"and":"and","addFilter":"Add filter","clearAll":"Clear all","apply":"Apply","valuePlaceholder":"Value…"},"boolean":{"true":"True","false":"False"},"operators":{"text":{"contains":"contains","notContains":"not contains","equals":"equals","notEqual":"not equal","startsWith":"starts with","endsWith":"ends with"},"number":{"equals":"=","notEqual":"!=","greaterThan":">","greaterThanOrEqual":">=","lessThan":"<","lessThanOrEqual":"<="},"date":{"equals":"=","greaterThan":"after","lessThan":"before"},"boolean":{"equals":"is"},"select":{"equals":"is"}},"pagination":{"rowsPerPage":"Rows per page","ofTotal":"of {total}","pageOf":"Page {page} of {total}","rowCount":{"one":"{count} row","other":"{count} rows"}}},"sidebar":{"brandName":"Uhrwerk.AI","brandSubtitle":"Workspace","expandSidebar":"Expand sidebar","collapseSidebar":"Collapse sidebar","newChat":"New chat","searchChats":"Search chats","chatsHeading":"Chats","pinnedChatsHeading":"Chats","searchChatsPlaceholder":"Search chats...","loadMoreChats":"Load more chats","loadingMoreChats":"Loading more chats...","nav":{"inbox":"Inbox","workflows":"Workflows","myTasks":"My tasks","processes":"Processes","knowledge":"Knowledge","tools":"Tools","manageWorkspace":"Manage Workspace","myProfile":"My Profile","workspaceSettings":"Workspace settings"},"loadingConversations":"Loading conversations...","noConversations":"No conversations yet.","groups":{"today":"Today","yesterday":"Yesterday","previous7Days":"Previous 7 Days","previous30Days":"Previous 30 Days","older":"Older","pinned":"Pinned"},"sessionStatus":{"processing":"Processing","failed":"Failed","ready":"Ready","archived":"Archived","success":"Completed","inputRequired":"Input required","approvalRequired":"Approval required","awaitingExternalApproval":"Awaiting external approval"},"marker":{"needsYou":"Needs you","working":"Working…","ready":"Ready","couldntFinish":"Couldn't finish"},"contentLabels":{"workflow":"Workflow","files":"Files","knowledge":"Knowledge","tools":"Tools"},"menu":{"sessionActions":"Conversation actions","rename":"Rename","delete":"Delete","pin":"Pin","unpin":"Unpin"},"deleteConfirm":{"title":"Delete conversation","description":"This conversation will be permanently deleted. This action cannot be undone."},"errors":{"renameFailed":"Failed to rename conversation.","deleteFailed":"Failed to delete conversation."},"account":{"label":"Account","loading":"Loading account...","fallback":"No email available","menuLabel":"Account options","switchAccount":"Switch account","currentAccount":"Current account","addAccount":"Add account","showPet":"Show pet","hidePet":"Hide pet","signInAgain":"Sign in again","removeFromBrowser":"Remove from this browser","logoutCurrent":"Log out","limitReached":"Remove an account before adding another.","activationFailed":"Could not switch accounts. Try again.","identityRefreshFailed":"Switched accounts. Refreshing current identity failed.","switchOrg":"Switch organization","platformAdmin":"Platform Admin","settings":"Settings","logout":"Logout","loggingOut":"Logging out..."}},"chat":{"capacity":{"usage":"Usage left","buttonLabel":"Usage left {usage}","usageCaption":"{scope} · resets {date}","scopes":{"user":"Personal limit","group":"Group limit","org":"Workspace limit"},"noUsage":"Usage unavailable","unlimited":"No monthly limit","usageStale":"Couldn’t refresh usage. Showing the last reading."},"budgetShelf":{"scopes":{"user":"Personal monthly budget","group":"Group monthly budget","org":"Workspace monthly budget"},"left":"{percent}% left","resets":"resets {date}","runningLow":"Running low.","limitReached":"Limit reached.","memberGuidance":"Contact your workspace admin to increase the limit.","adminGuidance":"Review the limit in Usage & billing.","reviewLimit":"Review limit","disabledPlaceholder":"Usage limit reached","announcement":"{scope}. {remaining}% left. {used}% used. {status} {guidance}"},"approvalItems":{"header":"{count} actions need approval","headerSingular":"{count} action needs approval","legend":"Choose the actions to approve","selectedCount":"{selected} of {total} selected","approveSelected":"Approve selected ({count})","approveAll":"Approve all","rejectAll":"Reject all","rejectAllReason":"Reason for rejecting all actions","showParameters":"Show parameters","resultsHeading":"Actions","status":{"done":"Done","failed":"Failed","notApproved":"Not approved","inProgress":"In progress","approved":"Approved"}},"approvalChanges":{"badgePrefix":"Approval","calendarScopeLabel":"Scope","calendarSeriesLabel":"Series","calendarEffectLabel":"Effect","calendarScopeSeriesCount":"Entire series — all {count} events","calendarScopeSeriesMore":"Entire series — more than {count} events","calendarScopeSeriesUnavailable":"Entire series — event count unavailable","calendarScopeSingle":"Only this event","calendarEffectCancel":"Cancellation, can be undone","calendarEffectDelete":"Permanent deletion, cannot be undone","calendarEffectChange":"Change, not undone automatically","calendarGuestListLabel":"Guest list","calendarGuestListKept":"{count} attendees, unchanged apart from your answer","calendarInviteAddedLabel":"Adding","calendarInviteKept":"{count} guests already invited, all kept","calendarRsvpAccountLabel":"Connected account","calendarRsvpResponseLabel":"Response","calendarRsvpAccepted":"Accepted","calendarRsvpDeclined":"Declined","calendarRsvpTentative":"Tentative","calendarRsvpNeedsAction":"Needs action","calendarScopeUnknown":"Scope could not be determined","calendarAlreadyCancelled":"This event is already cancelled in Google Calendar.","trigger":"Request changes","humanApprovalRequired":"Human approval required","reviewAction":"Review action","reviewCount":"Review {count} actions","reviewCountSingular":"Review {count} action","showFullDetails":"Show full details","approve":"Approve","approveCount":"Approve {count} actions","approveCountSingular":"Approve {count} action","approving":"Approving…","approved":"Approved","decline":"Decline","declineAction":"Decline action","declined":"Declined","requestChanges":"Request changes","submittingRequest":"Submitting request…","submitRejection":"Submit rejection","submittingRejection":"Submitting rejection…","batchCancellationReason":"Batch cancellation reason","processing":"Processing","actionDetails":"Action details","technicalDetails":"Technical details","externalDataProcessing":"External data processing","processor":"Processor","dataShared":"Data shared","acknowledgeExternalProcessing":"I acknowledge this action sends the listed data to {processorName}","invalidExternalProcessingTitle":"External processing details unavailable","invalidExternalProcessingDescription":"The external data-processing disclosure is invalid. Decline or request changes; this action cannot be approved.","showBoundedJson":"Show bounded preview","showCompleteJson":"Show complete JSON","completeJsonUnavailable":"Complete JSON could not be displayed safely.","showFewerFields":"Show fewer fields","additionalFieldOmitted":"{count} additional field omitted from preview. Show all","additionalFieldsOmitted":"{count} additional fields omitted from preview. Show all","fieldWithoutValueHidden":"{count} field without a value is hidden ({names}). Show all","fieldsWithoutValueHidden":"{count} fields without a value are hidden ({names}). Show all","fullBody":"Full body","bodyPreview":"Body preview","truncatedBodyOnly":"The source provided only a truncated body preview.","gmailReviewUnavailable":"Complete Gmail send review is unavailable. Approval is disabled.","requestInput":"Request input","decisionContext":"Decision context","workflowGraph":"Workflow preview","resolved":"Changes requested","noLongerPending":"No longer pending","instructionHeading":"Requested changes","textareaLabel":"Change request","help":"Describe what should be revised before this action can be approved.","validation":"Enter a change request before submitting.","cancel":"Cancel","submit":"Submit request","retryError":"The change request could not be submitted. Your draft is saved; try again.","sizeError":"This request is too large to submit. Shorten it and try again."},"home":{"recentlyFinished":"Recently finished","recentDocuments":"Recent documents","recentWorkflows":"Recent workflows","runState":{"completed":"Completed","failed":"Failed","cancelled":"Cancelled","pending":"Running","resuming":"Resuming"},"attentionToast":"{count} chats need your attention","seeAll":"See all ({count})","seeLess":"Show less","templatesHeading":"Templates","templates":{"summarizeDoc":{"title":"Summarize a document","prompt":"Summarize this document: "},"compareFiles":{"title":"Compare two files","prompt":"Compare these two files and list the key differences: "},"statusUpdate":{"title":"Draft a status update","prompt":"Draft a short status update about: "}}},"outcome":{"documentGenerated":"Document generated","workflowCompleted":"Workflow completed","workflowFailed":"Workflow failed","calculationCompleted":"Calculation completed","calculationFailed":"Calculation failed","processCompleted":"Completed","processFailed":"Process failed"},"header":{"newChat":"New chat","retryStream":"Retry stream","continueStream":"Continue","breadcrumbRoot":"Chats"},"errors":{"waitForStreamingBeforeAttachments":"Please wait for the current response before sending attachments.","failedToUploadAttachments":"Failed to upload one or more attachments. Please retry.","failedToSendMessage":"Failed to send message","steerUnavailable":"The response cannot accept a steer right now. The message remains queued.","liveUpdatesStopped":"Live updates stopped because this page is out of date. Reload the page to continue.","processAttachedFiles":"Please process attached files.","byokFallbackConfirm":"Tenant provider failed ({reasonCode}). Use platform fallback for this one request?","billingLimitReached":"The monthly usage limit has been reached, so this message was not sent. An owner or admin can raise it under Settings → Usage & limits; otherwise the allowance resets at the start of the next billing period.","billingLimitChanged":"The usage budget was being updated while sending. Please try again.","billingReservationInvalid":"Usage accounting for this message could not be verified, so it was not sent. Please try again.","billingCapacityExceeded":"Too many requests are in flight right now, so this message was not sent. Please try again in a moment."},"notSent":{"messageNotice":"Your message wasn't sent. Check your connection and try again.","retry":"Retry","checkFailed":"Couldn't check whether your message arrived. Check your connection and try again.","deliveryUnknown":"Connection lost while sending. Your message may still be delivered — we'll update this chat when it arrives.","firstMessageNotice":"No messages were saved in this chat. If you sent one, it didn't arrive — please send it again."},"welcome":{"subtitle":"What do you want to figure out today?","greeting":{"morning":"Good morning","afternoon":"Good afternoon","evening":"Good evening"},"suggestionCards":{"searchKnowledgeBase":{"title":"Search knowledge base","description":"Find answers from your connected documents","query":"Search my knowledge base for "},"researchTopic":{"title":"Research a topic","description":"Deep dive into any subject with web research","query":"Research "},"buildWorkflow":{"title":"Build a workflow","description":"Create an automated multi-step process","query":"Help me create a workflow that "},"draftEmail":{"title":"Draft an email","description":"Compose and send professional emails","query":"Draft an email to "}}},"input":{"placeholder":"Ask something...","actionsMenu":"Files, people, and shortcuts","menuAttach":"Attach file","menuReferenceFile":"Reference a file or folder","menuMentionTeammate":"Mention a teammate","menuRunShortcut":"Run a shortcut","menuUseSkill":"Use a skill","menuSaveShortcut":"Save chat as skill","menuBack":"Back","menuSearchFiles":"Search files and folders…","menuSearchTeammates":"Search teammates…","menuSearchShortcuts":"Search shortcuts…","menuSearchSkills":"Search skills…","loadingConversation":"Loading conversation...","waitingApprovals":"Waiting for required decisions...","uploadingAttachments":"Uploading attachments...","typeToQueue":"Type to queue...","queued":"Queued","clearAll":"Clear all","sendQueuedNow":"Send queued message now","steerQueued":"Steer active response","steerTextOnly":"Only text-only queued messages can steer","editQueued":"Edit queued message","removeQueued":"Remove queued message","queuedWaitingForTurn":"Waiting for the current response to finish...","queuedAttachments":{"one":"{count} attachment","other":"{count} attachments"},"disclaimer":"Results can contain generated content. Validate before execution.","sendMessage":"Send message","stopGenerating":"Stop generating","counterOverCap":"too long to send","sendDisabledOverCap":"Message exceeds {max} characters","petCommandHelp":"Use /pet, /pet show, /pet hide, or /pet reset."},"mentions":{"loadFailed":"Could not load these choices. Close and reopen the menu to try again.","noMatches":"No files match.","loading":"Loading files...","groupKnowledge":"Files","groupFolders":"Folders","groupWorkspaceGroups":"Workspace Groups","groupPeople":"People","groupMemberCountOne":"{count} member","groupMemberCountMany":"{count} members","findSponsor":"Find someone with the right access","folderLimit":"You can reference up to {max} folders in one message.","fallback":{"upload":"Uploaded file","onedrive":"OneDrive item","googledrive":"Google Drive item","notion":"Notion page","onenote":"OneNote page","unknown":"Knowledge item"}},"voice":{"record":"Record voice input","microphone":"Microphone","microphoneDefault":"System default","microphoneChoose":"Choose microphone","microphoneCurrent":"Microphone: {name}","microphoneFallbackLabel":"Microphone {n}","microphonePermissionHint":"Start a recording once to allow microphone access, then your microphones appear here.","microphoneUnavailable":"Selected microphone unavailable — using the system default","stop":"Stop recording","cancel":"Cancel recording","uploading":"Uploading recording...","transcribing":"Transcribing...","completed":"Transcription complete.","transcriptAttached":"The transcript was too long for the message and was attached as a text file.","transcriptTooLongError":"The transcript is too long for the message and could not be attached.","noSpeech":"No speech detected. Please try again.","micDenied":"Microphone permission denied","micUnsupported":"Microphone not supported in this browser","error":"Transcription failed. Please try again."},"message":{"steering":"Steering…","processing":"Processing...","routing":"Thinking...","documents":"Searching documents...","context":"Synthesizing context...","toolCall":"Executing tools...","answer":"Generating answer...","activity":{"searching":"Searching","searchingKnowledge":"Searching knowledge","reading":"Reading","running":"Running code","charting":"Building a chart","analyzing":"Analyzing data","researching":"Researching","sending":"Sending","validating":"Validating","usingTools":"Using tools","datasets":"Working with datasets","email":"Working on email","files":"Working with files","workflows":"Working on workflows","integrations":"Working on integrations","systems":"Accessing systems","working":"Working"},"toolUnitOne":"tool","toolUnitOther":"tools","viewSources":"View Sources ({count})","suggestedQueries":"Suggested queries","usedToolsOne":"Used 1 tool","usedToolsOther":"Used {count} tools","viewReasoning":"View reasoning","reasoningLabel":"Reasoning","liveReasoningLabel":"Live reasoning","actionCopy":"Copy","actionCopied":"Copied","actionHelpful":"Helpful","actionNotHelpful":"Not helpful","actionFeedback":"Feedback","feedbackModalTitle":"Send feedback","feedbackTextLabel":"Comment","feedbackTextPlaceholder":"Add a short note...","feedbackCategoryLabel":"Category","feedbackSharingNotice":"When you submit, workspace admins and platform admins can see your name and email, this chat's title, the message this feedback is about, and your comment.","feedbackCancel":"Cancel","feedbackSubmit":"Submit","feedbackEmptyError":"Add a note before submitting.","feedbackSubmitted":"Feedback submitted","feedbackAlreadySubmitted":"Feedback already submitted","feedbackSubmitFailed":"Couldn't send feedback.","memoryUpdated":"Updated memory","memoryTooltip":"What the assistant learned to improve future chats."},"sources":{"title":"Knowledge Sources","description":"References and context used to generate this response.","tabs":{"documents":"Documents ({count})","quotes":"Quotes ({count})","synthesis":"Synthesis"},"contextSynthesis":"Context Synthesis","documentFallbackTitle":"Document {index}","types":{"chatHistory":"Past chat"},"chatHistory":{"roles":{"user":"You","assistant":"Assistant"},"metadataSeparator":"·"},"empty":{"documents":"No documents were returned for this answer.","quotes":"No extracted quotes were returned.","synthesis":"No synthesis text was returned."}},"messageContent":{"longResponseNotice":"Long response ({size} KB). Only the beginning is shown.","showAll":"Show all","showLess":"Show less"},"attachments":{"attachedFiles":"Attached files","generatedFiles":"Generated files","downloadFailed":"Failed to download file","extractionPending":"Extraction queued","extractionProcessing":"Extraction in progress","extractionProcessed":"Extraction ready","extractionFailed":"Extraction failed","processingAttachments":"Processing attachments…","indexingProgress":"Indexing {done} of {total} files","filePendingProcessing":"{filename} is still processing…","filePendingReady":"{filename} is ready — Continue","filePendingFailed":"{filename} — extraction failed","transcribingPending":"Transcription queued","transcribing":"Transcribing…","transcriptReady":"Transcript ready","transcriptionFailed":"Transcription failed","compressing":"Compressing…","transcribingPart":"Transcribing part {current} of {total}…","mediaNoAudioTrack":"This file has no audio track to transcribe","mediaNormalizationFailed":"The file could not be decoded","mediaTooLong":"The recording is too long to transcribe","mediaToolingUnavailable":"Transcription is temporarily unavailable","mediaNormalizationTimeout":"Processing took too long, retrying…","pdfPasswordRequired":"This PDF is password-protected. A workspace admin can add its password under Settings → Data privacy.","transcript":"Transcript","transcriptDialogTitle":"Transcript","openImagePreview":"Open image preview for {filename}"},"secretInput":{"submitButton":"Submit","submittedBadge":"Secret provided","placeholder":"Paste the value","transmittedSecurely":"Sent securely and never shown in the chat.","emptyError":"Please enter a value.","usedFor":"Used for: {target} ({field})","neverSeen":"Sent securely. The assistant never sees the value.","targets":{"mcp_server":"MCP server at {host}","connected_api":"Connected API at {host}","connected_api_provider":"API provider at {host}","connector":"{name}","connectorAt":"{name} at {host}","connector_template":"{name} ({type} connector template)","connector_templateAt":"{name} ({type} connector template) at {host}"},"fields":{"bearerToken":"bearer token","header":"header {name}","query":"query parameter {name}","apiKey":"API key","password":"password","clientId":"client ID","clientSecret":"client secret"},"storeFailed":"The value could not be stored. Please enter it again."},"userPrompt":{"somethingElse":"Something else","customAnswerLabel":"Your answer","waitingReason":"The chat is waiting for your answer before it can continue.","answerHint":"You can edit this answer. Submit answer sends the text shown here and continues the chat.","submitting":"Submitting answer…","submitButton":"Submit answer","submittedBadge":"Answer sent","placeholder":"Enter your answer...","emptyError":"Please enter a value."},"saveShortcut":{"title":"Save as workflow shortcut","description":"Choose the steps to include.","cancel":"Cancel","save":"Save shortcut","saving":"Saving…","saved":"Shortcut saved","cancelled":"Shortcut not saved"},"structuredCards":{"chart":{"loading":"Loading chart…","retry":"Retry chart","viewData":"View data","hideData":"Hide data","summary":"{chartType} with {categoryCount} categories and {seriesCount} series ({seriesNames}). Ranges: {seriesRanges}.","scatterSummary":"{chartType} with {pointCount} points across {seriesCount} series ({seriesNames}). X range: {xRange}. Y range: {yRange}.","source":"Source","category":"Category","series":"Series","xValue":"X","yValue":"Y","types":{"bar":"Bar chart","line":"Line chart","area":"Area chart","pie":"Pie chart","doughnut":"Doughnut chart","horizontal_bar":"Horizontal bar chart","stacked_bar":"Stacked bar chart","stacked_area":"Stacked area chart","combo":"Combo chart","scatter":"Scatter plot"}},"chartPreview":"Preview","previewFailed":"Preview unavailable.","externalImage":"External image: {label}","connectionReauth":"Connection Sign-In","connectionReauthButton":"Reauthenticate","manageConnection":"Manage connection","connectionReauthExpired":"The sign-in session for this connection has expired.","connectionReauthFailed":"Could not start reauthentication. Please try again.","fileDownload":"File Download","tableOutput":"Table Output","previews":"Previews"},"deepResearch":{"planTitle":"Deep research plan","sources":"Sources","success":"Success","scope":"Scope","budget":"Budget","approvePlan":"Approve plan","requestEdits":"Request edits","startPlanning":"Start planning","planEditPlaceholder":"Ask for a plan change","clarificationDetailsPlaceholder":"Add details"},"toolCard":{"searchingPrefix":"Searching","pastChats":{"searching":"Searching past chats for: {query}","recent":"Looking through recent chats","reading":"Reading a past chat","readingTitle":"Reading past chat: {title}"},"status":{"building":"Building...","ready":"Ready","running":"Running","done":"Done","error":"Error","unknown":"Unknown"},"aria":{"collapseDetails":"Collapse details","expandDetails":"Expand details"},"sections":{"input":"Input","parameters":"Parameters","request":"Request","response":"Response","result":"Result","error":"Error"}},"planning":{"title":"Planning"},"summarizer":{"title":"Generating response","description":"Summarizing results into a final response."},"suggestions":{"title":"Generating suggestions","description":"Generating follow-up suggestions based on the conversation."},"fileUpload":{"attachFiles":"Attach files","attach":"Attach","dropFiles":"Drop files to attach"}},"archiveDrop":{"summaryOne":"{count} file, {size}","summaryOther":"{count} files, {size}","folderNameLabel":"Folder name","destinationInto":"Uploads into “{folderName}”","visibleTo":"Visible to: {audience}","audiencePrivate":"only you","audiencePrimaryGroup":"your primary group","audienceOrgOnly":"everyone in the workspace","workspaceDefaultAudience":"the workspace default for uploads","skippedHeading":"Skipped {count}","upload":"Upload to Knowledge Hub","inspecting":"Reading archive…","dialogLabel":"Archive drop","uploadingCount":"Uploading {done} of {total}","indexingCount":"Indexing {done} of {total}","entry":{"indexing":"Indexing","indexed":"Ready","failed":"Failed"},"chip":{"readyOne":"1 file","readyOther":"{count} files","indexing":"indexing {done}/{total}","partial":"{done}/{total} ready","remove":"Remove {folderName}"},"skipReason":{"directory":"Folder entry","empty":"Empty file","unsafePath":"Unsafe path","symlink":"Symbolic link","nestedArchive":"Archive inside an archive","unsupportedType":"Unsupported file type","entryTooLarge":"File too large"},"error":{"tooManyEntries":"This archive contains too many files to unpack here.","totalTooLarge":"The contents of this archive exceed the size limit.","ratioExceeded":"This archive expands too much to be processed safely.","archiveTooLarge":"This archive file is too large to unpack here.","unreadable":"The archive could not be read.","unknownFormat":"Only ZIP, TAR and TAR.GZ archives can be unpacked here.","inspectFailed":"The archive could not be inspected.","folderNotCreated":"The folder could not be created, so nothing was uploaded.","uploadIncomplete":"The folder \"{folderName}\" was created and some files may already have been uploaded. Check the folder in the Knowledge Hub before retrying.","oneAtATimeOne":"Drop one archive at a time. {name} was skipped.","oneAtATimeOther":"Drop one archive at a time. {name} and {count} more were skipped."}},"inboxPage":{"filtersLabel":"Filters","backToList":"Back to approvals","errors":{"listTitle":"Approval requests could not be loaded","detailTitle":"Approval details could not be loaded"},"search":{"placeholder":"Search approvals","ariaLabel":"Search approval requests","clear":"Clear search"},"statusFilters":{"pending":"Pending","all":"All","approved":"Approved","denied":"Denied","expired":"Expired"},"list":{"previousPage":"Previous page","nextPage":"Next page","empty":{"title":"No approvals in this view","description":"Requests from chats and workflows will appear here."}},"request":{"status":{"pending":"Pending","approved":"Approved","denied":"Denied","expired":"Expired","executed":"Executed","executing":"Executing","consumed":"Consumed","failed_after_approval":"Failed after approval"},"source":{"chatThread":"Chat thread {threadId}","workflowRun":"Workflow run #{workflowRunId}"}},"toasts":{"approvalAllowed":"Approval allowed","approvalDenied":"Approval denied","submitFailed":"Failed to submit approval decision"},"emptyState":{"title":"Select an approval","description":"Open a request to review the requested action, affected systems, and optional decision history."},"notFound":{"title":"Approval not found","description":"This request may no longer be assigned to you or may have been removed."},"notifications":{"loading":"Loading Inbox","search":{"label":"Search notifications","placeholder":"Search title or message"},"moreActions":"More actions","markAllRead":"Mark all as read","views":{"label":"View","needsYou":"Needs you","inbox":"Inbox","archived":"Archived"},"unreadOnly":"Unread only","unreadOnlyUnavailable":"Only available in Inbox","sort":{"label":"Sort","newest":"Newest","oldest":"Oldest"},"date":{"label":"Date","from":"From","to":"To","invalidRange":"The end date must be after the start date."},"kinds":{"label":"Notification type","notifications":"Notifications","workflows":"Workflows","mentions":"Mentions","remove":"Remove filter {kind}"},"groups":{"today":"Today","yesterday":"Yesterday","thisWeek":"This week","earlier":"Earlier"},"recipient":{"user":"Direct notification","groupNamed":"{name} group","groupFallback":"Group {groupId}","sharedGroupState":"Shared for everyone in this group."},"category":{"workflow_step_approval":"Needs approval","workflow_step_input":"Needs input","workflow_run_failed":"Run failed","workflow_run_triggered":"Workflow triggered","sponsor_approval":"Approval requested","chat_mention":"Mentioned you in chat","mail_relevance_review":"Mail needs a decision","mail_relevance_accepted":"Mail entered the process"},"workflowRun":{"triggeredBy":"This workflow was triggered by \"{trigger}\".","stepWaitingInput":"Step \"{step}\" is waiting for your input.","stepWaitingApproval":"Step \"{step}\" is waiting for your approval.","stepWaitingSponsor":"Step \"{step}\" is waiting for a colleague's approval.","stepFailed":"Step \"{step}\" failed.","resolvedAt":"Resolved {time}","resolved":"Resolved","viewWorkflow":"View workflow","openRun":"Open run","unavailable":"This run is no longer available.","process":{"openInProcess":"Open in process","decideInProcess":"Decide this step in its process task.","decidedBy":"{decision} by {person} at {time}","you":"you"}},"mailReview":{"heading":"Does this mail belong to the process?","unavailable":"This mail review is no longer available.","from":"From","subject":"Subject","noSubject":"(no subject)","received":"Received","modelGuess":"Model guess","modelGuessValue":"{category}, {confidence}% sure","modelGuessUnclassified":"The model could not classify this mail.","explainOwner":"The model could not decide. Only you see this mail. Approve it to hand it to the process, or reject it to keep it private. Decide by {deadline}; afterwards the workspace admins are asked.","explainOwnerNoEscalation":"The model could not decide. Only you see this mail. Approve it to hand it to the process, or reject it to keep it private. Decide by {deadline}; afterwards the mail is discarded and nobody else sees it.","explainOwnerEscalated":"The model could not decide. The workspace admins have been asked as well. Approve it to hand it to the process, or reject it to keep it private. Decide by {deadline}; afterwards the mail is discarded.","explainAdmin":"The mailbox owner has not decided. You see only sender, subject and date. Decide by {deadline}; afterwards the mail is discarded.","approve":"Belongs to the process","reject":"Private, discard","decidedAt":"Decided {date} by {decider}","decider":{"owner":"the mailbox owner","admin":"a workspace admin","deadline":"the deadline"},"status":{"pending":"Waiting for the mailbox owner","escalated":"Waiting for a workspace admin","approving":"Fetching the mail…","approved":"Handed to the process","rejected":"Rejected, kept private","expired":"Discarded after the deadline","gone":"The mail is no longer in the mailbox"},"toasts":{"approved":"The mail was handed to the process.","rejected":"The mail stays private.","failed":"The decision could not be saved."}},"sponsorApproval":{"heading":"Approval requested","approvedAtBy":"Approved at {date} by {user}","deniedAtBy":"Denied at {date} by {user}","userFallback":"User #{userId}","unavailable":"This approval request is no longer available.","reason":"Reason (optional)","reasonLabel":"Reason","optional":"Optional","approve":"Approve","deny":"Deny","approveConfirmation":"This approval will be recorded and the action may proceed. Continue?","denyConfirmation":"This action will be denied and your decision recorded. Continue?","details":{"scope":"Scope","targetSystem":"Target system","operation":"Operation","resolvedInput":"Resolved input","sequence":"Approval sequence","riskReasons":"Risk reasons","borrowedConnectors":"Borrowed connectors","evidence":"Evidence","thirdPartyProcessing":"Third-party processing","decisionHistory":"Decision history","noDecisions":"No decision recorded yet.","approved":"Approved","denied":"Denied"},"toasts":{"allowed":"Approval allowed","denied":"Approval denied","failed":"Failed to submit approval decision"}},"list":{"empty":{"title":"No notifications in this view","description":"Notifications matching this filter will appear here."},"emptyNeedsYou":{"title":"Nothing needs you right now","description":"Approvals, inputs and actions waiting on you appear here."},"emptyArchived":{"title":"No archived notifications","description":"Archived notifications appear here."},"unread":"Unread","actionCountOne":"{count} action","actionCountMany":"{count} actions","hasAttachments":"Includes attachments","hasAction":"Includes an action","loadMore":"Load more","loadingMore":"Loading more…","verbs":{"approve":"Approve","answer":"Answer","act":"Action needed"}},"actions":{"markRead":"Mark as read","markUnread":"Mark as unread","archive":"Archive","restore":"Restore","more":"More actions"},"backToList":"Back to notifications","emptyState":{"title":"Select a notification","description":"Open a trusted action to review its context and choose the next step."},"notFound":{"title":"Notification not found","description":"This notification may have been archived, removed, or assigned elsewhere."},"errors":{"listTitle":"Notifications could not be loaded","listDescription":"Try loading the notification list again.","detailTitle":"Notification details could not be loaded","detailDescription":"Try loading this notification again.","loadMore":"More notifications could not be loaded","retry":"Try again"},"detail":{"attachments":"Attachments","actions":"Actions","knowledgeItem":"Knowledge item {itemId}","from":"From:","workflow":"Workflow:","nextActions":"Next actions","waitingForYou":"Waiting for you"},"actionReview":{"technicalDetails":"Details","actionDetails":"Action Details","requestedBy":"Requested by","technicalSource":"Source","viewRun":"View run","type":"Type","risk":"Risk","executionScope":"Execution scope","expires":"Expires","types":{"acknowledgement":"Acknowledgement","continueInChat":"Continue in chat","openWorkspacePage":"Open workspace page","openBrowserExtension":"Open browser extension","runWorkflow":"Run workflow","retiredAutomation":"Retired automation"},"risks":{"passive":"Records a confirmation only","handoff":"Opens another workspace","navigation":"Opens a page","execution":"Starts automated work"},"scopes":{"firstGroupMember":"First group member only","eachRecipient":"Each recipient separately"},"acknowledge":"Acknowledge","acknowledgementWarning":"This acknowledgement will be recorded and it's irreversible. Continue?","acknowledgedAtBy":"Acknowledged at {date} by {user}","workflow":"Workflow","input":"Input","runWorkflow":"Run Workflow","workflowWarning":"This action will be recorded and it's irreversible. Continue?","workflowRanByAt":"Workflow ran by {user} at {date}","sendToChat":"Send to chat","chatHandoffWarning":"The message below will be sent to the AI Chat, and this action will be recorded. Continue?","chatHandoffMessageLabel":"Prompt","chatHandoffSent":"Message was sent to chat at {date} by {user}","byYou":"you","yes":"Yes","no":"No","draftPrompt":"Draft prompt","attachments":"Attachments","none":"None","sourceContext":"Source context","messages":"messages","registeredRoute":"Registered route","registeredCommand":"Registered command","fallbackRoute":"Fallback route","pinnedTarget":"Pinned target","revision":"Revision","targetDigest":"Target digest","safeInputPreview":"Safe input preview","redactions":"Redactions","exactPrompt":"Exact prompt","writeImpact":"Write impact","capabilities":"Capabilities","workspace":"workspace","external":"external","confirmDescription":"Confirm only after reviewing the exact server-prepared action.","cancel":"Cancel","confirmAction":"Confirm action","revoked":"Revoked","execution":"Execution","claimedBy":"claimed by"},"execution":{"handoffUnavailable":"This Inbox chat handoff is unavailable.","title":"Execution status","actor":"Actor","scope":"Scope","attempts":"Attempts","updated":"Updated","claimant":"Claimant","nextAttempt":"Next attempt","acknowledged":"Acknowledged","continueChat":"Continue in chat","openDestination":"Open destination","openExtension":"Open extension","workflowRunLinked":"Workflow run linked","workflowStarting":"Starting workflow…","workflowRunning":"Workflow is running.","workflowLaunchFailed":"Could not start the workflow.","workflowFailed":"The workflow run failed.","workflowCancelled":"Workflow action cancelled.","retiredDestination":"This destination is no longer available.","retiredAction":"This legacy action is retired and cannot be opened.","retry":"Retry","release":"Release claim","history":"Execution history","earlierEvents":"Earlier events are retained on the server."},"severity":{"info":"Info","success":"Success","warning":"Warning","error":"Error"},"source":{"system":"System notification","api":"API notification","workflow":"Workflow notification","agent":"Assistant notification","chat":"Chat notification","extension":"Extension notification","other":"Notification"},"actionResult":{"in_progress":"Running","succeeded":"Completed","failed":"Failed"},"toasts":{"actionCompleted":"Action completed","actionFailed":"Action failed","markedRead":"Notification marked as read","markedUnread":"Notification marked as unread","archived":"Notification archived","restored":"Notification restored","markedAllRead":"Matching notifications marked as read","deliveryUpdateFailed":"Notification could not be updated","extensionNoFallback":"The extension is unavailable and no reviewed fallback is available.","extensionFailureReportFailed":"The extension failure could not be recorded. Try again."}}},"workflows":{"pageTitle":"Workflows","runErrors":{"service_unavailable":"A service this workflow uses was briefly unavailable. Your inputs are saved — try again.","timeout":"A step took too long to answer. Your inputs are saved — try again.","rate_limited":"A service this workflow uses is getting too many requests right now. Try again in a minute.","invalid_input":"Something in the input didn't fit this step. Check your inputs and try again.","permission_denied":"You or the connected account lacks access to something this workflow needs. Ask an admin.","not_found":"Something this workflow needs no longer exists. Ask the workflow owner to check it.","unknown":"The workflow stopped because of an error."},"runFailure":{"title":"{workflowName} failed","showRawDetails":"Show raw details","hideDetails":"Hide details","dismiss":"Dismiss","dismissLabel":"Dismiss shortcut error","retry":"Retry","retrying":"Retrying…","retryFailed":"The retry could not be started.","genericError":"The operation returned an error."},"runCard":{"status":{"needsInput":"Needs input","running":"Running","completed":"Completed","failed":"Failed","cancelled":"Cancelled"},"expandSteps":"Expand steps","collapseSteps":"Collapse steps"},"extensionApprovalExecutor":"Executor","extensionApprovalIdentityUnavailable":"Approval unavailable: the destination identity is missing or invalid. Cancel this run and try again.","extensionApprovalConnectedApiDestination":"Connected API destination","approval":{"nodeNeedsApproval":"Node \"{node}\" needs approval","headline":"Approve step \"{step}\"?","wantsTo":"is paused and wants to: {action}","why":"Your workspace policy requires approval for this step.","whyDestructive":"This step deletes or overwrites data. Your workspace policy requires approval.","showDetails":"Show details ({count})","hideDetails":"Hide details","makeChanges":"Edit","doneEditing":"Done","destination":"Destination","approve":"Approve","approving":"Approving…","accept":"Accept","accepting":"Accepting…","rejectWithFeedback":"Reject with feedback","feedbackHint":"Feedback will be sent to \"{node}\" and the workflow will continue from there","feedbackDiscardsEdits":"Any edits to the input will be discarded.","feedbackLabel":"Feedback","feedbackPlaceholder":"What should be different?","sendFeedback":"Send feedback","sendingFeedback":"Sending…","cancelRun":"Cancel run","cancelling":"Cancelling…","cancelConfirm":"This stops the whole run.","cancelYes":"Yes, cancel run","cancelNo":"Keep waiting","callApi":"call {method} {host}","itemCountOne":"1 item","itemsCount":"{count} items","credentialAmbiguous":"You have more than one connection to {system}. Remove one before you can approve.","credentialManage":"Open your connections","credentialOwn":"Approving writes to {system} with your sign-in{account}.","credentialConnect":"Connect your {system} sign-in","credentialReconnect":"Your sign-in for {system} has to be renewed before you can approve.","credentialBusy":"Your sign-in for {system} is being renewed. Try again in a moment.","credentialChanged":"Your connection changed. Check the card and approve again.","credentialRechecked":"Your connection is checked now. The card shows what to do next.","credentialLoading":"Loading the connection for this approval.","credentialUnchecked":"Your connection for this step could not be checked. If you approve, it is checked again. You then approve a second time, or you see why the step cannot write.","credentialPersonalDisabled":"Each person's own connection is switched off for this workspace. An owner or admin can switch it on in the workspace settings."},"userInput":{"nodeNeedsInput":"Node \"{node}\" needs input","headline":"\"{step}\" needs a choice","wantsOption":"is paused and wants an option","pickOne":"Pick one","filterPlaceholder":"Type to filter…","noMatches":"No matches.","noItems":"No items available","chooseAny":"Select the options that apply","commentOptionalLabel":"Comment (optional)","commentRequiredLabel":"Comment (required)","commentHint":{"always":"This answer needs a comment.","whenNotAll":"Not every option is selected: please explain briefly in the comment."}},"capturedPage":{"label":"Captured page"},"continueWithoutFile":"Continue without file","continuingWithoutFile":"Continuing…","pageDescription":"Mocked workflow implementation UI with builder, runs, and settings.","libraryTitle":"Workflow Library","workflowsCount":"{count} workflows","new":"New","searchPlaceholder":"Search workflows...","noWorkflowsFound":"No workflows found","noWorkflowsHint":"Try a different query or create a new workflow.","updatedLabel":"Updated {value}","selectWorkflowTitle":"Select a workflow to start editing","selectWorkflowDescription":"Choose one from the library or create a new workflow.","ownerAndUpdated":"Owner: {owner} • Updated {updated}","actions":{"pause":"Pause","activate":"Activate","duplicate":"Duplicate","runTest":"Run test","addStep":"Add step","simulateRun":"Simulate Run"},"stats":{"totalRuns":"Total Runs","successRate":"Success Rate","connectedIntegrations":"Connected Integrations"},"tabs":{"builder":"Builder","runs":"Runs","settings":"Settings"},"graph":{"title":"Workflow Graph","description":"Mocked node flow for frontend implementation."},"executionPolicy":{"title":"Execution Policy","retries":"Retries","retriesValue":"3 attempts","timeout":"Timeout","timeoutValue":"45 seconds","approvalMode":"Approval Mode","approvalModeValue":"High-risk only"},"test":{"title":"Test Playground","description":"Paste sample payload and run a mocked execution.","outputTitle":"Simulation output","defaultOutput":"Ready to test. Run simulation to generate structured workflow output.","successOutput":"Simulation completed. Classified as Billing and routed to Tier-1 queue.","failedOutput":"Simulation failed at integration step: temporary upstream timeout."},"integrations":{"title":"Connected Integrations","connected":"Connected"},"runs":{"title":"Run History","description":"Latest executions for this workflow.","noRuns":"No runs yet","noRunsHint":"Use \"Run test\" to generate a mock execution.","table":{"run":"Run","status":"Status","duration":"Duration","started":"Started","tokens":"Tokens"},"detailTitle":"Run Detail","detailHint":"Select a run to inspect input and output previews.","input":"Input","output":"Output","duration":"Duration","tokens":"Tokens"},"settings":{"variablesTitle":"Environment Variables","variablesDescription":"Mocked configuration values for this workflow.","noVariables":"No variables defined yet.","secretValue":"Secret value","governanceTitle":"Governance","governance":{"requireApproval":"Require approval","requireApprovalHint":"For high-risk branches","automaticRetries":"Automatic retries","automaticRetriesHint":"Up to 3 attempts","executionLogging":"Execution logging","executionLoggingHint":"Store input/output snapshots"}},"status":{"active":"active","draft":"draft","paused":"paused","success":"success","running":"running","failed":"failed","waiting":"waiting"},"kinds":{"trigger":"Trigger","ai":"AI","integration":"Integration","approval":"Approval","output":"Output"},"relative":{"minutesAgo":"{count}m ago","hoursAgo":"{count}h ago","daysAgo":"{count}d ago","inMinutes":"in {count}m","inHours":"in {count}h","inDays":"in {count}d"},"newWorkflow":{"name":"New Workflow","description":"Describe your automation intent and wire steps in the builder.","owner":"Unassigned","triggerLabel":"Manual","schedule":"On demand","integrationNone":"None","stepTitle":"Define trigger","stepDetail":"Add the event, webhook, or schedule that starts this workflow."},"duplicateSuffix":"Copy"},"workflowsBuilder":{"pageTitle":"Workflow Builder","pageDescription":"Canvas-based automation studio for audit-grade workflow design, validation, and simulation.","retry":"Retry","mainTabs":{"build":"Build","runs":"Runs","settings":"Settings"},"library":{"title":"Workflow Library","popoverTitle":"Workflows","searchPlaceholder":"Search workflows...","create":"Create","loading":"Loading workflows...","empty":"No workflows found.","showAttention":"Show workflows needing attention","showAll":"Show all workflows","attentionEmpty":"No matching workflows need attention.","attentionOne":"{count} run needs your attention","attentionMany":"{count} runs need your attention"},"toolbar":{"askAi":"Ask AI","runNow":"Run Now","runNowPending":"Running","setActive":"Set workflow active","setInactive":"Set workflow inactive","switching":"Switching workflow…","newNode":"New Node","issues":"Issues","publishToChat":"Publish to chat…","publishAsExtensionShortcut":"Publish as extension shortcut…","dirty":"Unsaved changes","saved":"Saved","save":"Save","saving":"Saving...","undo":"Undo","redo":"Redo","validate":"Validate","validating":"Validating...","run":"Run","running":"Running...","simulate":"Simulate","simulating":"Simulating...","duplicate":"Duplicate","archive":"Archive","delete":"Delete","moreActions":"More workflow actions","exportPackage":"Export package","exportPackageRequiresSaved":"Save changes before export","importPackage":"Import package","importPackageRequiresSaved":"Save changes before import","deleted":"Workflow deleted","deleteFailed":"Couldn't delete the workflow"},"triggerHealth":{"title":"Connector trigger","showDetails":"Show trigger details","labels":{"active":"Trigger active","inactive":"Trigger inactive","paused":"Trigger paused","error":"Trigger error","unavailable":"Trigger unavailable","notConfigured":"Trigger not configured","loading":"Checking trigger","requestError":"Trigger status unavailable"},"descriptions":{"subscriptionActive":"The saved trigger subscription is active and ready to receive new events.","workflowInactive":"The saved workflow is inactive, so its connector trigger is not listening.","subscriptionPaused":"The trigger subscription is paused and will not start new workflow runs.","subscriptionError":"The trigger subscription has an error and is not listening for new events.","subscriptionMissing":"No subscription matches the connector trigger in the saved workflow.","triggerConfigIncomplete":"The saved connector trigger configuration is incomplete or cannot be resolved.","notConfigured":"The saved workflow does not contain a connector trigger.","loading":"Checking the saved trigger subscription…","requestError":"Trigger health could not be loaded. It will retry automatically."},"fields":{"workflow":"Saved workflow","subscription":"Subscription","lastSucceeded":"Last successful poll","lastPolled":"Last poll attempt","lastError":"Last known error","schedule":"Schedule","nextRun":"Next run"},"schedule":{"title":"Schedule trigger","descriptions":{"subscriptionActive":"The saved schedule is active. The next run starts at the time shown below.","workflowInactive":"The saved workflow is inactive, so its schedule will not start runs.","subscriptionPaused":"The schedule is paused and will not start new workflow runs.","subscriptionError":"The schedule stopped after a run could not be started. Save the workflow again to resume it.","subscriptionMissing":"No schedule exists for the saved workflow yet.","triggerConfigIncomplete":"The saved schedule is incomplete, so no runs are planned.","notConfigured":"The saved workflow does not contain a schedule trigger."}},"statuses":{"draft":"Inactive","active":"Active","archived":"Archived","paused":"Paused","error":"Error"},"notYet":"Not yet","none":"None","unsavedNote":"Showing the last saved configuration. Save changes to refresh trigger health."},"deleteDialog":{"title":"Delete workflow?","description":"\"{name}\" will be removed from your workspace and its triggers will stop. You can't undo this here.","cancel":"Cancel","confirm":"Delete"},"archiveDialog":{"title":"Archive workflow?","description":"\"{name}\" will stop appearing as runnable. Workflows that use it can no longer start new runs.","cancel":"Cancel","confirm":"Archive"},"callersWarning":{"title":"This workflow is currently used by the following workflows:","inaccessible":"{count} additional workflows you cannot view"},"packageDialog":{"export":{"title":"Export workflow package","description":"Prepare a portable workflow package with its graph and dependency manifest.","selectWorkflow":"Select a workflow to export.","preparing":"Preparing package","retry":"Retry export"},"import":{"title":"Import workflow package","description":"Preview a workflow package before importing it as a draft.","chooseFile":"Choose package file","readingFile":"Reading {name}","pasteJson":"Paste package JSON","previewPackage":"Preview package","importedWorkflowName":"Imported workflow name","importedWorkflowDescription":"Description","importedToast":"Workflow imported","alphaplanTitle":"ALPHAPLAN 5 target connections","alphaplanHelp":"Choose a connection for each ALPHAPLAN step. Each change refreshes the preview before import.","alphaplanConnection":"ALPHAPLAN 5 connection for {node}","connectorTitle":"Connector target connections","connectorHelp":"Choose a connection for each group of connector steps. A single ready connection is selected automatically. Each change refreshes the preview before import.","connectorConnection":"{connector} connection for {nodes}","connectorSelectConnection":"Select a connection…","connectorPersonalHint":"Only names the system. Each person uses their own connection to it.","connectorSystemFallbackHint":"Names the system. Each person uses their own connection to it. In a process, a step that allows it writes with this connection when the person who approves has none.","noConnectorConnections":"Connect {connector} in Knowledge sources to use these steps.","noGrantedConnectorConnections":"Reconnect {connector} with write access in Knowledge sources to use these steps.","mcpTitle":"MCP target servers","mcpHelp":"Choose a server for each group of MCP steps. It must offer every tool the steps call. A single matching server is selected automatically. Each change refreshes the preview before import.","mcpServer":"Server for {server} (tools: {tools})","mcpSelectServer":"Select a server…","noMcpServers":"Connect an MCP server that offers {tools} under Tools, and turn on \"Enable for workflows\", to use these steps."},"actions":{"close":"Close","cancel":"Cancel","copied":"Copied","copyJson":"Copy JSON","downloadPackage":"Download package","importAsDraft":"Import as draft"},"summary":{"title":"Package summary","workflowName":"Workflow name","packageSchema":"Package schema","graphVersion":"Graph version","compileStatus":"Compile status","dependencies":"Dependencies","noDependencies":"No dependencies","compileErrors":"Compile errors","diagnostics":"Diagnostics"},"preview":{"title":"Preview summary","suggestedWorkflowName":"Suggested workflow name","resolvedDependencies":"Resolved dependencies","needsSetup":"Needs setup after import","compileErrorBlockers":"Compile-error blockers: {count}"},"compileStatus":{"valid":"Valid","invalid":"Invalid"},"previewStatus":{"ready":"Ready to import","attention":"Needs attention","blocked":"Cannot import"},"metadata":{"severity":"severity","branch":"branch","mapping":"mapping","details":"details"},"dependencyKinds":{"connected_api":"Connected APIs","knowledge_connector":"Knowledge connectors","connector_trigger":"Connector triggers","knowledge_item":"Knowledge items","llm_model":"LLM models","dataset":"Datasets","feature_flag":"Feature flags"},"errors":{"emptyPackageJson":"Enter workflow package JSON.","invalidJson":"Invalid JSON: {message}","invalidPackage":"This file is not a workflow package.","packageTooLarge":"Workflow package is too large. Maximum size is {max}.","exportFailed":"Could not export package.","previewFailed":"Could not preview package.","importFailed":"Could not import package.","fileReadFailed":"Could not read package file."}},"palette":{"title":"Palette","addAfter":"Adds after {label}","addToBranch":"Adds to the {branch} branch of {label}","nodeTypes":"Node Types","tools":"Tool Calls","connectedApis":"Connected APIs","knowledgeConnections":"Knowledge Connections","mcpActions":"MCP Actions","planned":"Planned","dragHint":"Drag nodes/tools to the canvas or click to insert.","addFromTool":"Add","searchPlaceholder":"Search…","showUnavailable":"Show unavailable nodes","newConnectedApiTool":"New Connected REST API tool…","sections":{"triggers":"Triggers","actions":"Actions","controlFlow":"Control Flow","userInputs":"User Inputs","connections":"Connections","mcpServers":"MCP Servers"},"nodeCountOne":"{count} node","nodeCountOther":"{count} nodes","allCategories":"All nodes","backToNode":"Back to node","replaceTitle":"Replace: {label}","backToNodes":"Back to nodes","categories":{"trigger":"Start the workflow by hand, on a schedule or on an event","action":"Use AI, files, datasets, connected apps and MCP tools","control_flow":"Branch, merge, loop or end the flow","user_input":"Ask a person for approval, a choice, text or a file"},"groups":{"ai":"AI","browser":"Browser","datasets":"Datasets","files":"Files","einvoice":"E-Invoicing","inbox":"Inbox","research":"Research","validation":"Validation","exchange_onprem":"Exchange Server","connected_api":"Connected API","gmail":"Gmail","logic":"Logic"}},"nodeTypes":{"start":"Start","end":"End","condition":"Condition","for_each":"For Each","while":"While","tool_call":"Tool Call","send_email":"Send Email","upload_file":"Upload File","call_api":"Call API","delay":"Delay","llm_call":"LLM Call","get_page_context":"Get Page Context","transform":"Transform","generate_document":"Generate Document","user_input_select":"User Input (Select)","user_input_file":"User Input (File)","manual_trigger":"Manual trigger","connector_trigger":"Connector trigger","schedule_trigger":"Schedule trigger","get_page_content":"Get page content","validate_iban":"Validate IBAN","validate_fin":"Validate FIN","validate_address":"Validate address","check_serial_range_coverage":"Check serial range coverage","web_search":"Web search","web_crawl":"Read web page","query_dataset_rows":"Query dataset rows","upsert_dataset_rows":"Upsert dataset rows","notify_me":"Notify me","create_inbox_notification":"Create inbox notification","create_inbox_chat_handoff":"Create inbox chat handoff","create_inbox_route":"Create inbox route","create_inbox_extension_handoff":"Create inbox extension handoff","create_inbox_workflow_trigger":"Create inbox workflow trigger","extract_pdf_form_fields":"Extract PDF form fields","extract_docx_template_fields":"Extract DOCX template fields","validate_xml_against_xsd":"Validate XML against XSD","json_to_xml":"Convert JSON to XML","calculate":"Calculate","extract_document":"Extract document","extract_text":"Extract Text","fill_pdf_form":"Fill PDF form","fill_docx_template":"Fill DOCX template","edit_docx_text":"Edit DOCX text","generate_xml_from_xsd":"Generate XML file","to_text_file":"To text file","to_csv_file":"To CSV file","parse_csv_file":"Parse CSV file","extract_archive":"Extract archive","list_files":"List files","download_file":"Download file","einvoice_create":"Create e-invoice","einvoice_read":"Read e-invoice","einvoice_validate":"Validate e-invoice"},"extractDocument":{"description":"Extract evidence-backed structured data from every page of a PDF, including handwriting and stamps, or from an email (.eml).","file":{"label":"PDF or email file","description":"Map a PDF or email (.eml) file from an earlier workflow step or enter a Knowledge Hub item ID.","placeholder":"{{nodes.upload.output.file}} or Knowledge Hub item ID"},"instructions":{"label":"Instructions","description":"Describe the facts to extract. Workflow variables are supported; only evidence in the document is returned.","placeholder":"Extract the invoice number, total amount, and gross weight…"},"intelligence":{"label":"Intelligence","description":"Choose a fixed quality, latency, and credit usage profile for this extraction.","options":{"fast":"Fast","balanced":"Balanced","high_accuracy":"High accuracy","adaptive":"Adaptive","extreme_accuracy":"Extreme accuracy"},"optionDescriptions":{"fast":"One fast visual pass over every page.","balanced":"Balanced visual extraction with targeted ambiguity checks.","high_accuracy":"Higher-resolution extraction with evidence verification.","adaptive":"Balanced by default, with high-accuracy work where needed.","extreme_accuracy":"Multiple independent passes and strongest verification."},"extremeWarning":"Extreme accuracy runs multiple full-document passes and can be materially slower and more expensive."},"languages":{"label":"Languages","description":"Select the languages expected in the PDF. Keep both selected for mixed-language documents.","options":{"en":"English","de":"German"},"oneRequired":"At least one language must remain selected."},"fields":{"label":"Output fields","description":"Define the top-level values to extract when no advanced response schema is set.","ignored":"Ignored while a response schema is set.","fieldCard":"Output field {count}","name":"Name","namePlaceholder":"invoice_number","type":"Type","descriptionLabel":"Description","descriptionPlaceholder":"What this field contains","required":"Required","add":"Add field","remove":"Remove field","itemType":"Item type","nestedProperties":"Properties of {name}","nestedProperty":"Property {count}","nestedNamePlaceholder":"part_number","addProperty":"Add property","removeProperty":"Remove property"},"responseSchema":{"label":"Response schema","description":"Advanced JSON Schema object. When set, it replaces Output fields.","placeholder":"{\"type\": \"object\", \"properties\": {...}}","invalidJson":"Not applied: enter valid JSON.","nonObject":"Not applied: schema must be a JSON object."}},"alphaplan":{"connection":"ALPHAPLAN 5 connection","selectConnection":"Select a connection…","connectionHelp":"Choose your ALPHAPLAN 5 connection for this operation.","adminHelp":"This operation requires a connection with admin credentials.","noConnections":"Connect an ALPHAPLAN 5 account in Knowledge sources to use this operation.","noAdminConnections":"Connect an ALPHAPLAN 5 account with admin credentials in Knowledge sources to use this operation.","changed":"This connection has changed. Select it again to confirm the current connection before running this node.","unavailable":"The saved connection is unavailable. Select an enabled ALPHAPLAN 5 connection before running this node.","adminRequired":"The saved connection has no admin credentials. Select a connection with admin credentials before running this node."},"mcpTool":{"schemaReview":{"title":"Tool inputs changed","help":"The tool no longer takes these values. Remap each one to an input of the tool, copy it, or remove it.","remap":"Remap","remapLabel":"Remap ({field})","noRemapTarget":"No inputs with the same type ({type})","copy":"Copy","copyLabel":"Copy the value of {field}","copyFailed":"Could not copy the value. Open Edit as JSON to copy it.","remove":"Remove","removeLabel":"Remove {field}","valueDoesNotFit":"This value does not fit the tool's input. Check it against the field."},"savedInput":"Saved input","noInputs":"This tool takes no input parameters.","reselect":"Re-select","binding":{"missing":"This MCP server no longer exists or is no longer shared with you.","off":"{server} is turned off for workflows. Turn it on in its server details.","reconnect":"{server} needs a new sign-in. Reconnect it in its server details.","stale":"{server} was reconnected with another account. Re-select it to run this step with the new account."}},"connectorOperation":{"connection":"{connector} connection","selectConnection":"Select a connection…","connectionHelp":"Choose your own or a shared {connector} connection. The connector determines which account runs the step; some shared targets require your own sign-in.","noConnections":"Connect {connector} in Knowledge sources to use this node.","shared":"Shared","reconnectRequired":"Reconnect required","signInRequired":"Connect your own account first","signInRequiredWarning":"You have not connected your own account to this shared {connector} connection. Connect it on the {connector} card in Knowledge sources, then select the connection here.","grantRequired":"Reconnect with write access","stale":"This connection was reconnected after it was selected. Select it again before this node runs.","reselect":"Re-select","unavailable":"The saved connection can't run this node. Select an available {connector} connection.","loading":"Loading node definition…","connectionUse":"Connection use","modeFixed":"A fixed connection","modePersonal":"Each person's own connection","modeFallback":"If the person has no connection, use the fixed one instead","modeHint":"The step writes with the sign-in of the person who approves it.","modeHookHint":"A step that writes this way has to ask for approval. Steps that only read use the publisher's connection.","modeUnavailable":"This step uses each person's own connection, which is switched off for this workspace.","modeUseFixed":"Use the fixed connection","modeSystem":"System: {system}","modeOwnConnectionHelp":"Pick one of your own connections. It names the system; each person then uses their own connection to it.","modeNoOwnConnection":"You have no connection to {system}. Connect one to change how this step uses its connection.","modeHintOwn":"The step uses the connection of the person who approves it, or of the person the run belongs to when it needs no approval.","modeFallbackOwn":"In a process, if the person who approves has no connection, write with the publisher's connection selected here","modeFallbackOwnHelp":"Outside a process this has no effect: each person needs their own connection.","externalProcessing":{"title":"{processor} processes the data this step sends","required":"This step runs only after you acknowledge it. The acknowledgement is yours and applies to every workflow you run with {processor}.","acknowledge":"Acknowledge","acknowledged":"You have acknowledged {processor}'s third-party processing.","error":"The acknowledgement could not be saved. Try again.","statusError":"Couldn't check your {processor} acknowledgement."},"nestedMode":{"label":"Input mode for {field}","fields":"Fields","mapping":"One mapping","mappingHelp":"One workflow mapping, such as $nodes.<id>.output, supplies the whole object. Entering one replaces the individual fields."},"groups":{"pathParameters":"Path parameters","queryParameters":"Query parameters","payload":"Payload","body":"Request body"}},"scheduleTrigger":{"repeat":{"label":"Repeat","daily":"Daily","weekly":"Weekly","monthly":"Monthly","cron":"Custom"},"cron":{"pattern":"Runs","every":"Every …","atTimes":"At set times","interval":"Interval","minutes":"{count} min","hours":"{count} h","window":"Only between","from":"From","until":"Until","hourList":"Hours","minute":"At minute","expression":"Cron expression","expressionHelp":"Five fields: minute hour day-of-month month weekday, in the selected timezone. Runs must be at least 5 minutes apart.","advanced":"Edit cron expression","unsupported":"This expression can't be shown with the controls. Edit it as text below.","invalid":"Invalid expression","summary":{"everyMinutes":"Every {count} minutes","everyHours":"Every {count} hours","hourly":"Every hour","window":"{first} to {last}","at":"At {times}","timesPerDay":"{count} times a day, {first} to {last}","everyDay":"every day","dayRange":"{first} to {last}","monthDays":"on day {days} of each month","customDays":"on matching dates"}},"days":"Days","monthly":{"mode":"Monthly mode","byDate":"By date","byWeekday":"By weekday","date":"Date","selectDay":"Select a day…","shortMonths":"Shorter months run on their last day.","occurrence":"Occurrence","weekday":"Weekday","select":"Select…"},"weekdays":{"monday":{"short":"Mon","long":"Monday"},"tuesday":{"short":"Tue","long":"Tuesday"},"wednesday":{"short":"Wed","long":"Wednesday"},"thursday":{"short":"Thu","long":"Thursday"},"friday":{"short":"Fri","long":"Friday"},"saturday":{"short":"Sat","long":"Saturday"},"sunday":{"short":"Sun","long":"Sunday"}},"occurrences":{"first":"First","second":"Second","third":"Third","fourth":"Fourth","last":"Last"},"time":{"label":"Time","help":"Local time in the selected timezone, 24-hour clock.","hour":"Hour","minute":"Minute"},"timezone":{"label":"Timezone","help":"Keeps the chosen local time through daylight-saving changes.","placeholder":"Select timezone…","search":"Search timezones…","empty":"No matching timezone."},"nextRuns":{"label":"Next runs","calculating":"Calculating…","fixFields":"Fix the highlighted fields to preview upcoming runs.","unavailable":"Preview unavailable right now.","shownIn":"Times shown in {timezone}.","deviceZone":"Your device is in {deviceZone}."}},"inspector":{"enumField":{"select":"Select…","notSet":"Not set","useMapping":"Use a mapping…","chooseValue":"Choose from the list"},"idPrefix":"id","kinds":{"apiCall":"API Call","mcpToolCall":"MCP Tool Call","connectorAction":"Connector Action"},"facts":{"mcpServer":"Server","tool":"Tool","connector":"Connector","action":"Action","api":"API","approval":"Approval","approvalNeeded":"Approval needed","approvalNeededHelp":"The workflow stops at this step and asks for approval with the Notification Message."},"model":{"label":"Model","default":"{tier} (default)","tiers":{"light":"Instant","flash":"Fast","reasoning":"Balanced","heavy":"Heavy"}},"title":"Node Inspector","noSelection":"Select a node to edit configuration.","nodeId":"Node ID","label":"Label","config":"Configuration","configHelp":"Edit JSON config for this node.","invalidJson":"Invalid JSON format.","name":"Workflow Name","description":"Workflow Description","formView":"Form","advancedJson":"JSON","inbox":{"unavailableReason":"Inbox workflow nodes are disabled for this workspace.","nodes":{"acknowledgement":{"name":"Create inbox acknowledgement","description":"Create an Inbox item with one acknowledgement action."},"chatHandoff":{"name":"Create inbox chat handoff","description":"Continue an Inbox item in chat with reviewed context."},"route":{"name":"Create inbox route","description":"Open a supported workspace destination from Inbox."},"extensionHandoff":{"name":"Create inbox extension handoff","description":"Open a versioned browser-extension command from Inbox."},"workflowTrigger":{"name":"Create inbox workflow trigger","description":"Start a reviewed workflow from Inbox."}},"fields":{"recipient":"Recipient","title":"Title","body":"Body","severity":"Severity","attachments":"Attachments","actionId":"Action id","actionLabel":"Action label","actionDescription":"Action description","requestedExpiry":"Requested expiry","executionScope":"Execution scope","chatPrefill":"Chat prefill","chatAttachmentRefs":"Chat attachment refs","sourceContext":"Chat source context","destination":"Destination","extensionCommand":"Extension command","fallbackDestination":"Fallback destination","workflowTarget":"Workflow target","workflowInput":"Workflow input"},"help":{"attachments":"Ordered Inbox attachments; maximum 20.","chatSourceContext":"Optional reviewed source session and up to 50 ordered source messages.","fallback":"Used only after a durable extension failure has been reported."},"validation":{"positiveId":"Enter a positive numeric id.","uuid":"Enter a canonical UUID.","jsonObject":"Value must be a non-secret JSON object."},"errors":{"invalidJson":"Not applied: enter a valid JSON object.","attachmentLimit":"Inbox items support at most 20 attachments.","sourceMessageLimit":"Chat source context supports at most 50 messages."}},"generateDocument":{"systemPrompt":"System Prompt","model":"Model","contextSources":"Context Sources","pinnedDocuments":"Pinned Documents","knowledgeSearch":"Knowledge Hub Search","searchQuery":"Search Query","scopeData":"Scope Data","tools":"Tools","deepResearch":"Deep Research","template":"Template","output":"Output","outputPath":"Knowledge Hub Folder Path"},"startNode":{"inputParameters":"Input Parameters","inputParametersHelp":"Define inputs that users provide when running this workflow.","key":"Key","label":"Label","type":"Type","required":"Required","defaultValue":"Default Value","placeholder":"Placeholder","description":"Description","acceptFilter":"Accept (MIME filter)","addParameter":"Add Parameter"},"fileInput":{"mapping":"From an earlier step","knowledgeItem":"Or a Knowledge Hub file","search":"Search the Knowledge Hub…"}},"actions":{"replaceNode":"Replace","deleteNode":"Delete"},"simulation":{"inputTitle":"Simulation Input","errorTitle":"Error details","complete":"Simulation complete — {count} step(s)","failed":"Simulation failed","paused":"Simulation paused — it needs input to continue"},"settings":{"metadataTitle":"Metadata","generate":"Generate","generateName":"Generate name","generateDescription":"Generate description","statusTitle":"Status","advanced":"Advanced settings","advancedHelp":"Execution guardrails for this workflow. Empty fields use the platform defaults.","timeout":"Timeout (seconds)","timeoutHelp":"Maximum total runtime in seconds before the run is stopped. Default {default}, maximum {max}.","maxIterations":"Max loop iterations","maxIterationsHelp":"Upper bound for control-flow loop iterations in one run. Default {default}, maximum {max}.","maxExecutedSteps":"Max executed steps","maxExecutedStepsHelp":"Upper bound for total executed node steps in one run. Default {default}, maximum {max}.","exceedsLimit":"Exceeds the platform maximum of {max} — validation will fail until it is lowered."},"validation":{"title":"Validation","noIssuesTitle":"No issues","refreshHint":"Validate or simulate the workflow to refresh this panel.","validationIssuesTitle":"Validation Issues","simulationIssuesTitle":"Simulation Issues","noSimulationIssues":"No simulation issues.","noIssues":"No validation issues.","valid":"No issues found — this workflow is ready to run.","failed":"Couldn't validate workflow","fixWithAi":"Fix with AI"},"trace":{"title":"Run Trace","empty":"No runs yet. Simulate the workflow to generate a trace.","running":"Running"},"graph":{"dropHint":"Drag from palette to canvas"},"run":{"failed":"Workflow run failed.","paused":"Run paused — it needs approval or input to continue"},"runs":{"emptyTitle":"No runs yet","emptyHint":"Run the workflow or wait for an active trigger.","noMatches":"No runs match these filters.","loadMore":"Load more","loadingMore":"Loading…","retryLoadMore":"Try loading more again","selectRun":"Select a run to see its steps.","date":"Date","sortOldestFirst":"Sort runs oldest first","sortNewestFirst":"Sort runs newest first","allStatuses":"All statuses","preview":{"viewDetails":"View details","openWorkflow":"Open in workflows","close":"Close run details","description":"Status, results and steps of this workflow run.","startedAt":"Started {date}","lastStep":"Last step: {step}","currentStep":"Current step: {step}","loading":"Loading run details…","unavailable":"Run details are unavailable. The run may have been removed or you may no longer have access.","reload":"Try again"},"statuses":{"success":"Success","failed":"Failed","cancelled":"Cancelled","running":"Running","queued":"Queued","interrupted":"Interrupted","rejected":"Rejected with feedback","creating":"Creating run","startFailed":"Failed to start","needsInput":"Needs input","waitingApproval":"Waiting approval"},"started":"Started {relative}","simulation":"Simulation","cancelRun":"Cancel run","cancelling":"Cancelling…","runError":"Run error","failedToStartRun":"Failed to start run","openIssuesInBuilder":"View issues in Builder","errorCode":"Code","viewStep":"View step","fixWithAi":"Fix with AI","askAiAboutRun":"Ask AI about this run","stepTimeline":"Step timeline","runViewWorkflow":"Workflow","runViewList":"List","stepWaiting":"Waiting","stepRunning":"Running","loopIterations":"{count} iterations","loopIterationsOne":"1 iteration","stepWaitingBanner":"“{title}” is waiting for you","startInputBanner":"Fill in the inputs to start this run","reviewWaitingStep":"Review","runFinishedBanner":"Workflow finished successfully","viewEndMessage":"View message","stepDialog":{"position":"Step {index}/{count}","close":"Close","iteration":"iteration {iteration} of {count}","previous":"Previous step","next":"Next step","leftLabel":"Show the step's config or input","config":"Config","input":"Input","output":"Output","workflow":"Workflow","noConfig":"This step has no settings.","noInput":"No input recorded.","noOutput":"No output yet."},"collapseAllSteps":"Collapse all steps","expandTimeline":"Expand","notification":"Notification","feedback":"Feedback","chooseRun":"Choose a run","runFiles":"Files","noRunFiles":"There are no saved files for this run","runFilesRetention":"Generated files linked in results or notifications remain available after the run finishes. Other temporary files are deleted.","fileSourceInput":"Input","fileSourceUploaded":"Uploaded at \"{node}\"","fileSourceGenerated":"Generated by \"{node}\"","earlierStepsOmitted":"{count} earlier steps omitted. This run's trace exceeded its storage limit, so only the newest steps are kept.","earlierStepsOmittedOne":"1 earlier step omitted. This run's trace exceeded its storage limit, so only the newest steps are kept.","expandStepIcon":"Expand step icon: {title}","collapseStepIcon":"Collapse step icon: {title}","expandStepDetails":"Expand step details: {title}","collapseStepDetails":"Collapse step details: {title}","stepStatus":"Step status: {status}","openFullInspector":"Open full inspector","input":"Input","output":"Output","steps":"Steps","subWorkflowRun":"Runs {name}","configuration":"Configuration","details":"Details","noResolvedInput":"No resolved input.","cancelledNoOutput":"This step was cancelled before it produced output.","noOutputYet":"No output yet — the step is still running.","noOutput":"No output.","stepDialogDescription":"Input, configuration, and output for this step.","datasetImport":{"reviewButton":"Review import","loading":"Checking import status…","unavailable":"Import status unavailable","status":{"queued":"Import queued","needs_review":"Import needs review","running":"Import running","succeeded":"Import complete","failed":"Import failed"}}},"branches":{"true":"True","false":"False","item":"Item","done":"Done","loop":"Loop","exit":"Exit","reject":"Rejected","approved":"Approved","rejected":"Rejected","partial":"Partially approved","clarification":"Clarification"},"canvas":{"approvalNeeded":"Approval needed","approvalNeededHelp":"The workflow stops at this step and asks for approval with the Notification Message.","addOrJoin":"Add a step, or drag onto a step to connect it","reorderBranch":"Drag sideways to change the branch order","insertStep":"Insert a step","deleteConnection":"Delete the connection","showLoopSteps":"Show the loop steps","hideLoopSteps":"Hide the loop steps","stepsHidden":"{count} steps hidden","stepHidden":"1 step hidden","model":"Model: {model}","check":{"exists":"{left} exists","contains":"{left} contains {right}","repeatWhile":"while {check}"}},"inspectorTabs":{"input":"Input","output":"Output","advanced":"Advanced","editAsJson":"Edit as JSON"},"outputFields":{"treeLabel":"Output fields","item":"item:","oneOf":"One of","valueOne":"1 value","valueMany":"{count} values","moreValues":"and {count} more","copyReference":"Copy reference {reference}","copied":"Copied","expand":"Expand {name}","collapse":"Collapse {name}","noSchema":"This node has no output schema. Use its whole output instead.","onRejection":"On rejection","onRejectionHelp":"These fields only exist if this action is rejected.","onRejectionFields":"On rejection fields","feedbackDescription":"The reviewer's feedback.","rejectedInputDescription":"The input the reviewer rejected.","listOf":"list of {items}","types":{"string":"string","number":"number","integer":"integer","boolean":"boolean","object":"JSON object","list":"list","enum":"one of fixed values","file":"file","any":"any value"},"typesPlural":{"string":"strings","number":"numbers","integer":"integers","boolean":"booleans","object":"JSON objects","list":"lists","enum":"fixed values","file":"files","any":"values"}},"transformFields":{"description":"Description","removeField":"Remove field"},"messageEditor":{"description":"Edit the Markdown or preview its formatting. Pick a run to preview references with that run's data.","runData":"Run data","noRunData":"No run data"},"statuses":{"draft":"Draft","active":"Active","archived":"Archived","completed":"Completed","failed":"Failed"},"tabs":{"palette":"Palette","inspector":"Inspector","settings":"Settings"},"emptyState":{"noWorkflow":"No workflows yet","noWorkflowHint":"Create your first workflow to get started.","noSelection":"No node selected","noSelectionHint":"Click a node on the canvas to inspect it.","createNew":"Create Workflow"},"defaults":{"newWorkflowName":"New Workflow","newWorkflowDescription":"Design your automation flow.","duplicateSuffix":"Copy"}},"auth":{"registration":{"signInRequired":"This identity already has an account or an existing workspace invitation. Sign in to continue.","createAccount":"Create an account","title":"Create your workspace","description":"Verify your identity to create a workspace. Payment is required before you can use it.","workspaceName":"Workspace name","protectionUnavailable":"Signup is temporarily unavailable. Please try again later; existing sign-in is unaffected.","tooManyAttempts":"Too many signup attempts. Please wait before trying again.","loading":"Loading…","disabled":"Public registration is currently unavailable. You can still sign in to an existing account.","policyUnavailable":"Registration cannot be completed right now because the required registration checks are unavailable. Try again later.","expired":"This registration attempt has expired. Start again, or sign in if your account was already created.","failed":"Registration could not be completed. Try again, or sign in to recover an account that was already created.","verifyEmail":"Verify your email address to continue your Microsoft registration.","code":"Verification code","codeSent":"Enter the code sent to","resend":"Send another code","retryCompletion":"Complete registration","processing":"Please wait…","restart":"Start again","signIn":"Sign in to an existing account","paymentRequired":"Payment required","paymentDescription":"Your workspace is registered. Payment is required before you can use chat, workflows, or connected sources.","paymentUnavailable":"Online payment is not available yet. You can sign out and return later.","stateFailed":"We could not load your workspace status. Try again.","signOutFailed":"Sign-out failed. Please try again.","retry":"Try again","signOut":"Sign out"},"otpInput":{"paste":"Paste","noDigits":"The clipboard does not contain a code.","clipboardUnavailable":"Clipboard access is unavailable. Use your device’s paste action on the code field instead."},"legal":{"label":"Legal information","privacy":"Privacy policy","privacyNewTabLabel":"Privacy policy (opens in a new tab)","imprint":"Legal notice","imprintNewTabLabel":"Legal notice (opens in a new tab)","openSource":"Open-source licences","openSourceNewTabLabel":"Open-source licences (opens in a new tab)"},"login":{"brandTag":"EU-hosted · Private Cloud · On-Prem","heroLineOne":"Sovereign AI workflows","heroLineTwo":"that act inside your systems.","heroDescription":"Not just another AI chatbot: Uhrwerk.AI connects your existing systems, orchestrates processes across departments, and turns your request into controlled system actions.","flowStepOne":"Your request","flowStepTwo":"Orchestrator","flowStepThree":"Approval","flowStepFour":"System action","featureOneTitle":"Sovereign in your infrastructure","featureOneText":"EU-hosted, in your cloud, or on-prem: data, permissions, budgets, and credits stay under your control.","featureTwoTitle":"AI-elastic adapters","featureTwoText":"Connects ERP, CRM, DMS, Office, and niche line-of-business systems — no big bang, no migration project.","featureThreeTitle":"Observable workflows","featureThreeText":"Permissions, approvals, logs, credit limits, and audit records surface controlled actions for review.","featureFourTitle":"Four-eyes principle","featureFourText":"You decide what runs automatically and what needs confirmation — with human approval at critical steps.","trustBadgeGdpr":"GDPR compliant","trustBadgeAiAct":"EU AI Act-ready","trustBadgeMadeInGermany":"Made in Germany","badge":"Authentication","title":"Sign in to Uhrwerk.AI","subtitle":"Choose your preferred access method.","checkingSession":"Checking existing session...","redirecting":"Redirecting to your workspace...","emailLabel":"Email","emailPlaceholder":"you@company.com","codeLabel":"6-digit code","otpStepOneLabel":"Step 1 · Request code","otpStepTwoLabel":"Step 2 · Verify code","codeSentTo":"Code sent to {email}","resendOtp":"Resend code","resendCooldown":"Resend in {seconds}s","changeEmail":"Change email","ssoLabel":"Single Sign-On","requestOtp":"Send code","sendingOtp":"Sending code...","verifyOtp":"Verify and continue","verifying":"Verifying...","google":"Continue with Google","microsoft":"Continue with Microsoft","testLogin":"Continue with Test Login","privacyNote":"Authentication tokens stay on this device and are refreshed after successful login.","notices":{"otpSent":"Code sent. Enter the 6-digit code from your email — sign-in starts automatically.","otpLoginSuccess":"Logged in successfully with email code.","testLoginSuccess":"Logged in as test user.","loginSuccess":"Login successful. Redirecting...","reauthMismatch":"Different account signed in.","sessionExpired":"Session expired.","accountSwitchFailed":"Switching to the saved account failed. Sign in again.","removeAccountFailed":"The account could not be removed from this browser."},"savedAccounts":{"title":"Continue as","useAnother":"Use another account","remove":"Remove from this browser","continueAs":"Continue as {label}","signInAgain":"Sign in again"},"addAccountTitle":"Add account","addAccountSubtitle":"Sign in with another account without replacing the current one.","reauthTitle":"Sign in again","reauthSubtitle":"Refresh this account session to keep using it.","securityChangeTitle":"Confirm your identity","securityChangeSubtitle":"Sign in again before changing your security settings.","errors":{"enterEmail":"Enter an email address first.","invalidEmail":"Enter a valid email address.","emailAndCodeRequired":"Email and code are required.","requestOtpFailed":"Failed to request the code.","verifyOtpFailed":"Failed to verify the code.","rateLimited":"Too many code requests. Please wait a moment and try again.","testLoginFailed":"Failed to login as test user.","platformUserMustUseGoogle":"Platform users must sign in with Google.","signInNotAllowed":"This email address can't sign in. Ask a workspace admin for an invitation."}},"mfa":{"title":"Confirm it’s you","description":"Complete your configured second step before this sign-in can continue.","chooseMethod":"Choose a verification method","chooseMethodDescription":"Choose how you want to verify this sign-in.","useSomethingElse":"Use something else","verifyContinue":"Verify and continue","verifying":"Verifying…","trustDevice":"Trust this device for {days} days","method":{"totp":"Authenticator code","passkey":"Passkey"},"totp":{"title":"Authenticator code","description":"Enter the current code from your authenticator app.","codeLabel":"Authenticator code","codeHint":"Enter exactly six digits."},"passkey":{"title":"Passkey","description":"Use a saved passkey, device unlock, or compatible security key.","use":"Use a passkey","waiting":"Waiting for passkey…"},"enrollment":{"title":"Protect your account","description":"Your workspace requires multi-factor authentication. Set up either an authenticator code or passkey to finish signing in.","setUpAuthenticator":"Set up authenticator app","createPasskey":"Create passkey","totpQrAlt":"QR code for authenticator enrollment","manualKey":"Manual setup key","passkeyName":"Passkey name","passkeyNamePlaceholder":"This device"},"errors":{"failed":"Verification could not be completed. Try again.","incomplete":"The verification did not complete the sign-in.","expired":"This verification has expired. Start the sign-in again.","verificationFailed":"That code or passkey wasn't accepted. Try again.","methodUnavailable":"This MFA method is temporarily unavailable. Try another method or try again later.","passkeyNameConflict":"A passkey with that name already exists.","passkeyLimit":"The maximum number of passkeys has been reached.","passkeyCancelled":"Passkey verification was cancelled. You can try again or use another method."}},"guard":{"checkingTitle":"Checking authentication","checkingDescription":"Verifying workspace access before loading this page.","unavailableTitle":"Authentication could not be checked","unavailableDescription":"The service did not respond as expected. You have not been signed out; try again in a moment.","retry":"Try again","signOut":"Sign out","redirecting":"Redirecting to login..."},"callback":{"title":"Auth Callback","processing":"Processing authentication callback...","preparing":"Preparing login callback...","microsoftLink":{"loadingTitle":"Finishing sign-in","processing":"Securely returning you to your workspace…","eyebrow":"One last security check","title":"Check your email","description":"Microsoft sign-in succeeded. Confirm the email address for this workspace to finish securely.","progress":{"label":"Sign-in progress","microsoft":"Microsoft","email":"Email","workspace":"Workspace","complete":"Complete","current":"Current step"},"whyTitle":"Why this extra check?","whyDescription":"This protects your existing workspace account when Microsoft and workspace identities have not been connected before.","codeLabel":"6-digit code","codeHint":"Enter the six digits from the email.","sentTo":"We sent a 6-digit code to {destination}.","verify":"Verify and continue","verifying":"Verifying…","resendPrompt":"Didn't get it?","resend":"Send a new code","resending":"Sending…","resendSuccess":"A new code was sent to {destination}.","restart":"Back to sign in","unableToContinueTitle":"We couldn't continue sign-in","proofVerifiedTitle":"Email confirmed","proofVerified":"Finishing your sign-in. This usually takes a moment.","retryContinue":"Try again","errors":{"invalidCode":"That code isn't right. Check the email and try again.","locked":"For your security, this check is locked after too many attempts. Start sign-in again.","expired":"This security check has expired. Start sign-in again.","deliveryFailed":"We couldn't send a new code. Return to sign-in and try again.","rateLimited":"You've requested several codes. Wait a moment before trying again.","mfaUnavailable":"We couldn't continue to the next security step. Try again.","platformRequiresMfa":"Secure this account with an authenticator app or passkey before connecting Microsoft.","signInNotAllowed":"This account isn't allowed to sign in.","identityConflict":"This Microsoft account is already connected to another account.","statusUnavailable":"This sign-in step is temporarily unavailable. Try again or return to sign in.","generic":"We couldn't continue sign-in. Try again or return to sign in."}},"errors":{"missingTicket":"We couldn't continue sign-in. Start the sign-in again.","conflictingCredentials":"This sign-in request isn't valid. Start the sign-in again.","authenticationFailed":"We couldn't complete sign-in. Try again.","googleLinkRequiresMfa":"Sign in with your existing method, add an authenticator app or passkey in Settings → Security, then try Google again."}}},"oauth":{"processingCallback":"Processing OAuth callback...","missingParams":"Missing OAuth parameters. Please try connecting again.","connectingWorkspace":"Connecting workspace...","connected":"Successfully connected {workspaceName}. Redirecting...","failedConnect":"Failed to connect knowledge source. Please try again.","connectingTitle":"Connecting...","successTitle":"Connection Complete","failedTitle":"Connection Failed"},"feedback":{"card":{"cancelled":"Feedback cancelled","submitted":"Feedback submitted","reviewPrompt":"Please review and edit your feedback below.","textAriaLabel":"Feedback text","textPlaceholder":"Describe your feedback...","categoryAriaLabel":"Feedback category","categoryPlaceholder":"Select a category","cancel":"Cancel","submit":"Submit feedback","emptyTextError":"Please enter your feedback before submitting.","sharingNotice":"When you submit, workspace admins and platform admins can see your name and email, this chat's title, the message this feedback is about, and your comment."},"categories":{"incorrect_answer":"Incorrect answer","missing_info":"Missing info","unhelpful":"Unhelpful","bug":"Bug","other":"Other"}},"knowledge":{"datasetPrint":{"action":"Print","preparing":"Preparing…","failed":"The rows could not be loaded for printing.","printedAt":"Printed {date}","rowCount":"{count} rows","truncated":"Only the first {cap} matching rows are printed. Narrow the filters to print the rest.","noFilters":"All rows","filters":"Filters: {filters}","contains":"{field} contains \"{value}\"","yes":"yes","no":"no","sortedBy":"sorted by {field} ({direction})","asc":"ascending","desc":"descending","defaultSort":"newest first"},"alphaplan":{"title":"Connect ALPHAPLAN 5","description":"Use the full ALPHAPLAN 5 webservice in chat: records, files, inventory, accounting, and administration.","privacy":"This connection is private. Writes, deletions, SQL, and administration require your approval. File and API-key results are delivered as private downloads.","name":"Connection name","url":"Server URL","urlHelp":"Enter the HTTPS webservice base URL approved by your administrator, including its base path.","token":"API key","tokenHelp":"Use an API key without surrounding spaces, with StatusMonitore access for verification and permission for the operations you need. Reconnecting replaces your saved credentials.","adminPassword":"Administration password (optional)","adminHelp":"Enable API-key and user administration with the webservice admin password. Leave empty to connect without administration access; reconnecting without it removes saved administration access.","instructions":"ALPHAPLAN 5 webservice documentation","cancel":"Cancel","connect":"Connect ALPHAPLAN 5","connecting":"Connecting ALPHAPLAN 5…","failure":"Could not connect to ALPHAPLAN 5. Please try again.","connected":"ALPHAPLAN 5 connected"},"alphaplan6":{"title":"Connect ALPHAPLAN 6","description":"Read live ERP data from ALPHAPLAN 6 and approve changes, deletes, document actions, and file or email operations.","privacy":"This connection is private and uses your API key’s permissions. Read results are available in your chat.","name":"Connection name","url":"Server URL","urlHelp":"Enter the ALPHAPLAN 6 HTTPS webservice base URL approved by your administrator, including its base path.","token":"API key","tokenHelp":"Create a new ALPHAPLAN 6 API key. ALPHAPLAN 5 keys cannot be reused. Enter it without surrounding spaces, with StatusMonitore access for verification and permission for the reads and approved actions you need. Reconnecting replaces your saved version 6 key.","instructions":"ALPHAPLAN 6 webservice documentation","cancel":"Cancel","connect":"Connect ALPHAPLAN 6","connecting":"Connecting ALPHAPLAN 6…","failure":"Could not connect to ALPHAPLAN 6. Please try again.","connected":"ALPHAPLAN 6 connected"},"sevdesk":{"title":"Connect sevdesk","description":"Search contacts, invoices, orders, receipts, products, and bank records live.","privacy":"This connection is private and uses the permissions of your sevdesk API token. Contact changes and new invoice or quote drafts require approval. Sending, booking payments, and deleting records are unavailable.","name":"Connection name","token":"API token","tokenHelp":"Enter the 32-character token from sevdesk. Your account needs API access. Reconnecting replaces your saved token.","instructions":"Find your sevdesk API token","cancel":"Cancel","connect":"Connect sevdesk","connecting":"Connecting…","failure":"Could not connect to sevdesk. Please try again.","connected":"sevdesk connected"},"superoffice":{"title":"Connect SuperOffice","description":"Search companies, persons, sales, follow-ups and documents in SuperOffice CRM Online live, and read documents in chat.","privacy":"You sign in with your own SuperOffice user, so the assistant sees exactly what you may see. The connection is private. Creating documents, filing files, new versions, follow-ups and sale changes require your approval.","adminNote":"A SuperOffice administrator must approve the app once for your company before anyone can connect.","connect":"Connect SuperOffice","connecting":"Connecting…","cancel":"Cancel","failure":"Could not start the SuperOffice sign-in. Please try again.","disconnected":"SuperOffice disconnected","connectedAs":"Signed in as {displayName} · {contextId}"},"lexwareOffice":{"title":"Connect Lexware Office","description":"Search contacts, articles, invoices, quotations, open items and payments live.","privacy":"This connection is private and uses the permissions of your Lexware Office API key. New contacts and invoice or quotation drafts require approval. Finalizing, sending and deleting documents are unavailable.","planNote":"The Lexware API requires the Lexware Office XL plan. API keys are valid for at most 24 months; reconnect with a new key when yours expires.","name":"Connection name","token":"API key","tokenHelp":"Create a key in Lexware Office under Einstellungen → Erweiterungen → Public API. Reconnecting replaces your saved key.","instructions":"Create your Lexware Office API key","cancel":"Cancel","connect":"Connect Lexware Office","connecting":"Connecting…","failure":"Could not connect to Lexware Office. Please try again.","connected":"Lexware Office connected"},"copilotEvents":{"title":"Connect co*pilot","description":"Read live events, series, and contacts from co*pilot (copilot.events) event and venue management.","privacy":"This connection is private and uses your API key's permissions. Creating, changing, or deleting records requires your approval.","name":"Connection name","url":"Server URL","urlHelp":"Enter your co*pilot API base URL in the form https://copilot.events/<tenant>/api, replacing <tenant> with your co*pilot tenant name.","token":"API key","tokenHelp":"Enter the API key from your co*pilot account without surrounding spaces. Reconnecting replaces your saved key.","instructions":"Generate an API key in your co*pilot account settings.","cancel":"Cancel","connect":"Connect co*pilot","connecting":"Connecting co*pilot…","failure":"Could not connect to co*pilot. Check that the server URL matches https://copilot.events/<tenant>/api and that the API key is valid, then try again.","connected":"co*pilot connected"},"personio":{"title":"Connect Personio","description":"Read live HR data from Personio — people, employment, absences, attendance, and recruiting — in chat and workflows.","privacy":"This connection is private and uses the permissions of your Personio API credentials. Creating or changing records requires your approval.","name":"Connection name","clientId":"Client ID","clientSecret":"Client secret","credentialFormat":"Enter the value exactly as Personio shows it: at most 1024 characters, without spaces or accented letters.","secretHelp":"Reconnecting replaces your saved credentials.","instructions":"In Personio, open Marketplace > Connected integrations and create a custom integration (requires the Core Pro plan). Enable Read or Write for each area you want to use and select the readable employee attributes; attributes you do not select stay hidden.","helpLink":"How to create Personio API credentials","cancel":"Cancel","connect":"Connect Personio","connecting":"Connecting Personio…","failure":"Could not connect to Personio. Check the client ID and client secret, then try again.","connected":"Personio connected"},"sophos":{"title":"Connect Sophos Central","description":"Read alerts, endpoints, cases, detections and events live from Sophos Central in chat and workflows, and respond to threats after your approval.","privacy":"This connection is private and uses the role of your Sophos Central API credential. Every action requires your approval.","name":"Connection name","clientId":"Client ID","clientSecret":"Client secret","credentialFormat":"Enter the value exactly as Sophos Central shows it: at most 1024 characters, without spaces or accented letters.","secretHelp":"Reconnecting replaces your saved credentials.","instructions":"A Super Admin creates the credential in Sophos Central under Global Settings → API Credentials Management, inside the tenant itself. Sophos partners and resellers connect their partner credential with the separate Sophos Central Partner connector; organization credentials are not supported.","roleHelp":"The role chosen for the API credential decides what it may do: a Read-Only credential can read, but Sophos refuses every action.","helpLink":"How to create a Sophos Central API credential","cancel":"Cancel","connect":"Connect Sophos Central","connecting":"Connecting Sophos Central…","failure":"Could not connect to Sophos Central. Check the client ID and client secret, then try again.","connected":"Sophos Central connected","errors":{"invalidCredentials":"Sophos Central rejected the client ID or client secret. Check the API credential in Sophos Central; expired credentials are deleted by Sophos and must be created again.","tenantCredentialRequired":"This API credential belongs to a partner, organization or distributor account. A partner credential belongs in the separate Sophos Central Partner connector. For this connector, create the credential inside the tenant's own Sophos Central (Global Settings → API Credentials Management) and connect with that one.","dataRegionUnsupported":"Sophos Central named a data region this connector does not support, so nothing was saved.","permissionDenied":"Sophos Central refused the request because the credential's role does not allow it. Create a credential with a suitable role."}},"sophosPartner":{"title":"Connect Sophos Central Partner","description":"For Sophos partners: read your customer tenants, their licences with end dates and usage, firewall licences and the monthly usage billing in chat and workflows, find renewals and over-usage across all customers, and use the Sophos Central API of every customer.","privacy":"This connection is private and uses the role of your Sophos Central Partner API credential, which reaches every one of your customers. Reads need no approval; every change needs your approval and the generic API's changes stay off until a workspace owner or admin turns them on.","name":"Connection name","clientId":"Client ID","clientSecret":"Client secret","credentialFormat":"Enter the value exactly as Sophos Central shows it: at most 1024 characters, without spaces or accented letters.","secretHelp":"Reconnecting replaces your saved credentials. Your Sophos Central tenant connection, if you have one, stays as it is.","instructions":"Create the credential in Sophos Central Partner under Settings & Policies → API Credentials. A tenant's own credential belongs in the Sophos Central connector; organization and distributor credentials are not supported.","roleHelp":"The role chosen for the API credential decides what it may do: a Read-Only credential can read, but Sophos refuses every change.","helpLink":"How to create a Sophos Central Partner API credential","cancel":"Cancel","connect":"Connect Sophos Central Partner","connecting":"Connecting Sophos Central Partner…","failure":"Could not connect to Sophos Central Partner. Check the client ID and client secret, then try again.","connected":"Sophos Central Partner connected","errors":{"invalidCredentials":"Sophos Central rejected the client ID or client secret. Check the API credential in Sophos Central Partner; expired credentials are deleted by Sophos and must be created again.","partnerCredentialRequired":"This API credential is not a partner credential. A tenant's own credential belongs in the Sophos Central connector; organization and distributor credentials are not supported. Create the credential in Sophos Central Partner (Settings & Policies → API Credentials) and connect with that one.","globalHostUnsupported":"Sophos Central named a global API host this connector does not support, so nothing was saved.","permissionDenied":"Sophos Central refused the request because the credential's role does not allow it. Create a credential with a suitable role."}},"egis":{"title":"Connect EGIS","description":"Search the EGIS catalogue from SYNAXON live in chat and workflows: products, distributor purchase prices, stock and datasheets.","privacy":"This connection is private and uses your EGIS Business Connector (EBC) login. Uhrwerk only reads from EGIS and places no orders. Your password is stored encrypted.","name":"Connection name","login":"EBC login","password":"EBC password","passwordHelp":"Reconnecting replaces your saved login.","instructions":"Use the separate EBC login SYNAXON sent you when the EGIS integration was booked (for example SYN12345_EBC), not your EGIS web login. If your ERP already uses EGIS, the login is in its EGIS settings.","cancel":"Cancel","connect":"Connect EGIS","connecting":"Connecting EGIS…","failure":"Could not connect to EGIS. Check the EBC login and password, then try again.","connected":"EGIS connected"},"selectLine":{"title":"Connect SelectLine","reconnectTitle":"Reconnect {name}","description":"Read live ERP data from SelectLine in chat and workflows, and approve every change.","privacy":"This connection is private: you sign in with your own SelectLine user, so your SelectLine permissions apply. Your password and app key are stored encrypted, and changes in SelectLine always need approval.","name":"Connection name","url":"API address","urlHelp":"The HTTPS address of your SelectLine API, for example https://selectline.example.com/slmobileapi. A server on a private network needs a private target approved by your platform administrator.","userName":"User name","password":"Password","appKey":"App key","appKeyHelp":"The application key your SelectLine API expects at sign-in.","certificate":"Self-signed certificate (optional)","certificatePem":"Certificate (PEM)","certificateHelp":"Only needed if your SelectLine API uses a self-signed certificate or one issued by your own certificate authority. Paste the PEM text, including the BEGIN and END lines.","reconnectFixedHint":"Each API address is one connection, so this one stays fixed. To use another SelectLine API, use Add connection instead. If this connection used a certificate, paste it again below.","cancel":"Cancel","connect":"Connect SelectLine","connecting":"Connecting SelectLine…","reconnect":"Reconnect","reconnecting":"Reconnecting…","failure":"Could not connect to SelectLine. Check your details, then try again.","connected":"SelectLine connected","reconnected":"SelectLine reconnected","addConnection":"Add connection","connectionCount":"{count} connections"},"powerBi":{"addConnection":"Add semantic model","connectionCount":"{count} semantic models"},"sapBusinessOne":{"title":"Connect SAP Business One","reconnectTitle":"Reconnect {name}","description":"Read live ERP data from SAP Business One in chat and workflows, and approve every change.","privacy":"This connection is private: you sign in with your own SAP Business One user, so your SAP Business One permissions apply. Your password is stored encrypted, and changes in SAP Business One always need your approval.","name":"Connection name","url":"Service Layer URL","urlHelp":"Enter the HTTPS address of your Service Layer, for example https://b1.example.com:50000. OData v4 (/b1s/v2) is added automatically; /b1s/v1 is not supported.","companyDb":"Company database","companyDbHelp":"The database name of the company (CompanyDB), for example SBODEMODE.","reconnectFixedHint":"To use another Service Layer or company database, use Add company database instead.","userName":"User name","password":"Password","passwordHelp":"Each pair of Service Layer URL and company database is one connection. Connecting again with a pair you already use replaces that connection's saved login.","certificate":"Self-signed certificate (optional)","certificatePem":"Certificate (PEM)","certificateHelp":"Only needed if your Service Layer uses a self-signed certificate or one issued by your own certificate authority. Paste the PEM text, including the BEGIN and END lines.","savedCertificateHint":"This connection used a certificate (SHA-256 {fingerprint}). Paste it again if your Service Layer still uses it.","cancel":"Cancel","connect":"Connect SAP Business One","connecting":"Connecting SAP Business One…","reconnect":"Reconnect","reconnecting":"Reconnecting…","failure":"Could not connect to SAP Business One. Please try again.","connected":"SAP Business One connected","reconnected":"SAP Business One reconnected","addCompanyDb":"Add company database","companyDbCount":"{count} company databases","errors":{"invalidBaseUrl":"This is not a valid Service Layer address. Enter its HTTPS address, for example https://b1.example.com:50000. OData v4 (/b1s/v2) is added automatically; /b1s/v1 is not supported.","targetNotAllowed":"This server can't be used. If it's on a private network, your platform admin can allow it for your organisation; some addresses, such as this platform's own services, can never be allowed.","hostUnresolved":"The server name could not be resolved. Check the Service Layer URL.","unreachable":"The Service Layer could not be reached. Check the address, port, and network access.","tlsUntrusted":"The server’s certificate is not trusted. If your Service Layer uses a self-signed certificate, paste it under “Self-signed certificate”.","tlsHostnameMismatch":"The server's certificate was issued for a different host name. Use the host name the certificate names in the Service Layer URL.","certificateInvalid":"The pasted certificate could not be read. Paste the PEM text, including the BEGIN and END lines.","credentialsRejected":"SAP Business One rejected the company database, user name, or password.","loginFailed":"SAP Business One login failed. Please try again later.","loginEndpointNotFound":"The Service Layer login endpoint was not found. Check the address, including any reverse-proxy prefix, for example https://server:50000 or https://erp.example.com/sl.","loginRedirected":"The Service Layer redirected the login. Check the URL: use the Service Layer's own HTTPS address, for example https://server:50000, or your reverse-proxy address.","validation":"Check your entries: the company database and user name can have up to 100 characters and no control characters, and the password up to 254 characters.","connectorDisabled":"Your administrator has turned off SAP Business One for this workspace."}},"businessCentralYaveon":{"title":"Connect Business Central (Yaveon)","reconnectTitle":"Reconnect {name}","description":"Read Business Central tables through the Yaveon BI service and update single fields after approval, in chat and workflows.","privacy":"Each member signs in with their own Microsoft account, so Business Central applies that person's permissions and records changes as them. Saving here checks your entries only and sends nothing to Microsoft or Business Central.","name":"Connection name","tenantId":"Tenant ID","environment":"Environment","company":"Company","companyHelp":"The company name exactly as Business Central shows it, for example CRONUS AG.","reconnectFixedHint":"Tenant, environment and company identify this connection. To use another company or environment, use Add company instead.","clientId":"Client ID","clientSecret":"Client secret","keepSecretHint":"Leave empty to keep the current secret.","allowedTableNumbers":"Allowed table numbers","allowedTableNumbersHelp":"Comma-separated Business Central table numbers that members may read, for example 18, 27, 36.","allowedEntitySets":"Allowed OData entity sets (optional)","allowedEntitySetsHelp":"Comma-separated published OData pages whose fields members may read and update, for example Items, Customers. Leave empty to turn off field reads and updates.","allowedProcedures":"Allowed codeunit procedures (YAVPowerBIService)","allowedProceduresHelp":"Comma-separated procedures of the YAVPowerBIService codeunit that may be called, for example PostOrder, ReleaseDocument. Each call needs approval. Leave empty to turn off writes through YAVPowerBIService.","cancel":"Cancel","connect":"Connect Business Central","connecting":"Connecting Business Central…","reconnect":"Reconnect","reconnecting":"Reconnecting…","failure":"Could not connect to Business Central. Please try again.","connected":"Business Central (Yaveon) connected","reconnected":"Business Central (Yaveon) reconnected","addCompany":"Add company","companyCount":"{count} companies","managerOnly":"A workspace owner or admin sets up Business Central (Yaveon) for the whole workspace.","redirectUri":"Redirect URI to register","redirectUriHelp":"Add it as a Web redirect URI to the app registration in Microsoft Entra.","redirectUriPending":"The redirect URI to register appears here once the connection is saved.","delegatedPermission":"Permission to grant","delegatedPermissionValue":"Dynamics 365 Business Central: Financials.ReadWrite.All (delegated), with admin consent","removeConnection":"Remove connection","removeConnectionFor":"Remove {name} for all members","removeTitle":"Remove {name}?","removeDescription":"This removes the connection and every member's sign-in to it. To end only your own sign-in, use Disconnect my sign-in instead.","personal":{"connected":"Your Microsoft account: {account}","connectedWithoutName":"Your Microsoft account is connected","notConnected":"Your Microsoft account is not connected yet","reconnectRequired":"Your Microsoft sign-in expired; connect your account again","temporarilyUnavailable":"Your sign-in is being renewed; try again shortly","targetNotReady":"A workspace owner or admin must save this connection again with its client secret before members can sign in.","connect":"Connect my Microsoft account","connectFor":"Connect my Microsoft account for {name}","reconnect":"Reconnect my Microsoft account","reconnectFor":"Reconnect my Microsoft account for {name}","disconnect":"Disconnect my sign-in","disconnectFor":"Disconnect my sign-in for {name}","disconnectHint":"Removes only your own sign-in; the connection stays for everyone.","disconnected":"Your Microsoft sign-in was removed","errors":{"appAuthUnavailable":"Microsoft Entra rejected this connection's app registration. A workspace owner or admin must check its client ID and client secret.","targetNotReady":"This connection is not ready for sign-in. A workspace owner or admin must save it again with its client secret.","notConfigured":"Microsoft sign-in is not configured for this deployment. Ask your administrator.","signInExpired":"This Microsoft sign-in is no longer valid. Start connecting your account again.","signInFailed":"Microsoft did not complete the sign-in. Start connecting your account again.","connectFailure":"Could not start the Microsoft sign-in. Please try again.","disconnectFailure":"Could not remove your sign-in. Please try again."}},"errors":{"tenantId":"Enter the tenant ID as a GUID, for example 00000000-0000-0000-0000-000000000000.","environment":"Enter the environment name: up to 50 letters, digits, hyphens or underscores, starting with a letter or digit.","company":"The company name can have up to 200 characters and no control characters.","companyDots":"The company name cannot consist only of dots.","clientId":"Enter the client ID of the app registration as a GUID.","clientSecret":"The client secret can have up to 512 characters and only plain ASCII characters.","allowedTableNumbers":"Enter 1 to 100 table numbers between 1 and 2000000000, each with up to 10 digits, separated by commas.","allowedEntitySets":"Enter up to 50 different entity set names, separated by commas. Names start with a letter or underscore and contain only letters, digits and underscores.","allowedEntitySetsReserved":"{name} cannot be used as an entity set name.","allowedProcedures":"Enter up to 20 different procedure names, separated by commas. Names start with a letter or underscore and contain only letters, digits and underscores.","allowedProceduresReserved":"{name} cannot be used as a procedure name.","allowedProceduresRead":"{name} cannot be allowed here: reads use the table read.","sharingDisabled":"Connector sharing is turned off for this workspace, so Business Central (Yaveon) cannot be set up.","notManager":"Only workspace owners or admins can connect Business Central (Yaveon).","validation":"Check your entries and try again.","connectorDisabled":"Your administrator has turned off Business Central (Yaveon) for this workspace."}},"pageTitle":"Knowledge Hub","pageDescription":"Connect Notion and import pages into your workspace knowledge base","notices":{"loadedConnectionSuccess":"Successfully connected {connected}.","loadConnectionsFailed":"Failed to load knowledge source connections.","loadKnowledgeFailed":"Failed to load knowledge items.","loadAvailableFailed":"Failed to load available Notion items.","connectionFailed":"Knowledge source connection failed. Please try again.","connectInitFailed":"Failed to initiate Notion connection.","sourceDisconnected":"Source disconnected.","disconnectFailed":"Failed to disconnect source.","importedItems":"Imported {count} item(s) to Files.","importFailed":"Failed to import selected items.","resyncComplete":"Resync complete: {synced} synced, {deprecated} deprecated, {failed} failed.","resyncFailed":"Failed to resync knowledge items.","refreshOpenConnectionFirst":"Open a connection first to refresh available items.","updateVisibilityFailed":"Failed to update item visibility.","removeItemFailed":"Failed to remove knowledge item.","uploadIndexed":"Uploaded and indexed: {filename}","uploadFailed":"Failed to upload file."},"overview":{"connectedSourcesTitle":"Connected Sources","connectedSourcesEmptyHint":"Connect Notion to start importing","connectedSourcesActiveHint":"Active integrations","indexedItemsTitle":"Indexed Items","indexedItemsHint":"Documents available to AI"},"tabs":{"connectors":"Connectors","library":"Library","datasets":"Datasets","generated":"Generated"},"breadcrumb":{"knowledge":"Knowledge Hub"},"subtitle":"Manage your organisation's knowledge sources and library","subtitleWithDatasets":"Manage your organisation's knowledge sources, datasets, and library","typedColumns":{"types":{"text":"Text","number":"Number","boolean":"Boolean","date":"Date","timestamp":"Timestamp","enum":"Enum"},"operators":{"equals":"Equals","notEquals":"Not equals","greaterThan":"Greater than","greaterThanOrEqual":"Greater than or equal to","lessThan":"Less than","lessThanOrEqual":"Less than or equal to","contains":"Contains","hasValue":"Has a value"},"values":{"clear":"Clear","clearColumn":"Clear {column}","noValue":"No value","true":"True","false":"False","saving":"Saving…"},"validation":{"validNumber":"Enter a valid number.","validDate":"Enter a valid date.","validTimestamp":"Enter a valid date and time.","validValue":"Enter a valid value.","validDays":"Enter a whole number of days from 0 to 36500.","saveFailed":"Unable to save this value."},"relative":{"mode":"Value mode","exactDate":"Exact date","exactTimestamp":"Exact time","relativeToToday":"Relative to today","days":"Days","direction":"Direction","past":"days ago","future":"days from now","today":"today","now":"now","daysAgo":"{count} days ago","daysAgoOne":"1 day ago","inDays":"in {count} days","inDaysOne":"in 1 day"},"searchDefault":{"title":"Search default","help":"Applied to Knowledge search for everyone. Items without a value are still shown.","badge":"Search default","none":"No search default","set":"Set search default","edit":"Edit search default","save":"Save default","cancel":"Cancel","remove":"Remove default","operator":"Operator","adminOnly":"Only workspace owners and admins can change the search default.","failed":"The search default could not be saved. Please try again."},"help":{"dateUtc":"Dates are stored as calendar dates in UTC.","timestampUtc":"Timestamps require a timezone and are stored in UTC."},"definition":{"key":"Key","keyPlaceholder":"e.g. review_status","label":"Label","labelPlaceholder":"e.g. Review status","prompt":"Extraction prompt","promptPlaceholder":"Describe what to extract from documents…","type":"Type","enumOptions":"Enum options","enumOptionsPlaceholder":"One option per line, or separated by commas","add":"Add column","save":"Save","validation":{"check":"Check this column definition.","enumRequired":"Enum columns require at least one option","enumUnique":"Enum options must be unique"}},"filters":{"trigger":"Filters","triggerAria":"Filter columns","title":"Column filters","description":"Narrow the items shown in this view.","count":"Clear filters ({count})","clear":"Clear","clearAria":"Clear filters","add":"Add filter","apply":"Apply filters","column":"Column","operator":"Operator","value":"Value","noValueNeeded":"No value needed","selectValue":"Select value","remove":"Remove filter","removeNamed":"Remove filter {filter}","summary":"{column} {operator} {value}","summaryExists":"{column} has a value","containsShort":"contains","missingDefinition":"A filtered column is no longer available. Clear or update the filters."},"migration":{"title":"Migrate {column}","description":"Existing field values are checked before this type change is applied.","newConfiguration":"New configuration","enumConfiguration":"Enum: {options}","checking":"Checking existing values…","totalValues":"{count} values found","totalValuesLabel":"values found","convertibleValues":"{count} can be converted","convertibleValuesLabel":"can be converted","emptyValues":"{count} empty values","emptyValuesLabel":"empty values","invalidValues":"{count} needs attention","invalidValuesLabel":"needs attention","affectedItems":"Affected item IDs:","requiresAdmin":"Changing this column's type converts values across the workspace. Ask a workspace owner or admin to run the migration.","inaccessibleItems":"These counts cover only items you can open. On items you cannot open, this column is handled separately in the background: its value is moved to quarantine and the column re-extracted.","invalidPolicy":"How should invalid values be handled?","failPolicy":"Stop if any value is invalid","clearPolicy":"Clear invalid values without re-extracting","clearAndReextractPolicy":"Clear invalid values and re-extract them","queued":"Migration queued","inProgress":"Migration in progress","progress":"{processed} of {total} values processed","failed":"Migration could not be completed. Try again or contact support.","requestFailed":"The migration request failed. Please try again.","cancelled":"Migration cancelled. No further values will be changed.","completed":"Migration completed.","cancel":"Cancel migration","cancelling":"Cancelling…","close":"Close","start":"Start migration","starting":"Starting…"}},"sourceTypes":{"notion":"Notion","onedrive":"OneDrive","googledrive":"Google Drive","exchange":"Exchange Online","exchange_onprem":"Exchange Server","gmail":"Gmail","upload":"Upload","agent_generated":"AI Generated"},"sources":{"title":"Sources","description":"Connect integrations and import content into Files","adminDisabled":"Disabled by your administrator","operations":{"button":"Tools","buttonLabel":"Manage {name} tools","title":"{name} tools","description":"Choose which of this connector's tools your workspace may use.","note":"Turning a tool off removes it from chat and the workflow palette. Saved workflows that use it fail their check and their runs.","loading":"Loading tools…","loadFailed":"Could not load this connector's tools.","saveFailed":"Could not change this tool.","empty":"This connector has no individual tools.","groups":{"read":"Read","write":"Write","destructive":"Destructive"},"writeSwitches":{"title":"Changes in {name}","description":"Off until an owner or admin turns them on. Each switch covers all tools of its kind; you can still turn single tools off below.","create":"Creating records","update":"Updating records","delete":"Deleting records","administration":"Administration (fields, lists, users, rights, scripts, settings)","partlyOn":"{on} of {total} tools on","partial":"Not every tool of this group could be changed, and switching the others back also failed. Check the tools below."}},"exchangeConnect":{"title":"Connect Microsoft Exchange","description":"Sign in with your Microsoft account. Leave the field empty to use your own mailbox.","targetLabel":"Shared mailbox (optional)","targetHint":"Reads and sends then go to this mailbox instead of your own. Your account needs Full Access to it, and Send As for sending. An administrator must consent to the shared-mailbox permissions once.","folderAccessLabel":"Allow creating folders and moving mail","folderAccessHint":"Lets the assistant file mail into folders, always after your approval. Your Microsoft admin may need to approve this permission once.","cancel":"Cancel","connect":"Continue to Microsoft","failed":"Failed to start Microsoft Exchange authorization","viaAccount":"{mailbox} (via {account})","addTitle":"Add mailbox","addMailbox":"Add mailbox","mailboxCount":"{count} mailboxes","defaultBadge":"Default","needsReconnect":"Needs reconnect","reconnectMailbox":"Reconnect {mailbox}","disconnectMailbox":"Disconnect {mailbox}","disconnectTitle":"Disconnect {mailbox}?","disconnectDescription":"Chats and workflows can no longer read or send from this mailbox. Your other mailboxes stay connected.","disconnectConfirm":"Disconnect","disconnected":"Mailbox disconnected"},"googleCalendarGrantWriteAccess":"Grant write access to Google Calendar","reconnect":"Reconnect","reconnectRequired":{"title":"Reconnect required","description":"{name} can no longer sign in, so chats and workflows cannot use it. Reconnect to restore access."},"reconnectConnection":"Reconnect {name}","integrationsTitle":"Integrations","integrationsDescription":"Connect a source to start importing. Additional integrations will be added soon.","notionCardDescription":"Sync Notion pages into your workspace files","onedriveCardDescription":"Browse OneDrive files and shared libraries","googledriveCardDescription":"Browse Google Drive files from My Drive and shared drives","exchangeCardDescription":"Connect your Microsoft 365 mailbox via Microsoft Graph API","exchangeOnpremCardDescription":"Connect your on-premise Exchange Server mailbox via IMAP/SMTP","gmailCardDescription":"Connect your Gmail mailbox for search, read, and send tools","connectedCount":"{count} connected","connectedWorkspacesTitle":"Connected Workspaces","uploadFile":"Upload File","connectNotion":"Connect Notion","connectOneDrive":"Connect OneDrive","connectGoogleDrive":"Connect Google Drive","connectExchange":"Connect Exchange Online","connectExchangeOnprem":"Connect Exchange Server","connectGmail":"Connect Gmail","disconnectExchange":"Disconnect Exchange Online","disconnectExchangeOnprem":"Disconnect Exchange Server","disconnectGmail":"Disconnect Gmail","connecting":"Connecting...","loadingConnections":"Loading connections...","noConnectionsTitle":"No connections yet","noConnectionsHint":"Connect Notion, OneDrive, Google Drive, Exchange, Gmail, or Exchange Server to add a knowledge source","connectedOn":"{source} • Connected {date}","browse":"Browse","hide":"Hide","availableItemsTitle":"Available Items","availableItemsDescription":"Select items to add to your knowledge base","driveSelectorLabel":"Drive or library","noDrives":"No drives available","breadcrumbsLabel":"Folder path","rootFolder":"Root","searchItemsPlaceholder":"Search items...","searchOneDrivePlaceholder":"Search OneDrive files...","searchGoogleDrivePlaceholder":"Search Google Drive files...","loadingItems":"Loading available items...","noItemsFound":"No items found","folderType":"Folder","fileType":"File","table":{"title":"Title","type":"Type","lastModified":"Last Modified"},"addSelected":"Add {count} to Files"},"folderRail":{"allItems":"All items","newFolder":"New folder","sources":"Sources","root":"Root","treeAriaLabel":"Knowledge folders","expand":"Expand","collapse":"Collapse","folderActions":"Folder actions","newSubfolder":"New subfolder","manageColumns":"Manage columns","edit":"Edit","delete":"Delete","folderNamePlaceholder":"Folder name","noFolderColor":"No folder color","folderColor":"Folder color {color}","save":"Save","cancel":"Cancel","columnsSheet":{"title":"Columns: {folderName}","inherited":"Inherited","from":"from {folderName}","thisFolder":"This folder","noColumnsYet":"No columns yet.","addColumn":"Add column","keyPlaceholder":"key (e.g. department)","labelPlaceholder":"Label","promptPlaceholder":"Extraction prompt: describe what the LLM should extract"},"editDialog":{"title":"Edit folder","description":"Update the folder name, color, parent, and position in the knowledge library.","name":"Name","namePlaceholder":"Folder name","color":"Color","parentFolder":"Parent folder","position":"Position"},"deleteDialog":{"title":"Delete \"{name}\"?","counting":"Counting files…","countError":"Couldn't count this folder's files.","empty":"This folder is empty.","contains":"This folder contains {contents}. Choose what happens to the contents.","contentsBoth":"{files} and {subfolders}","filesOne":"1 file","filesOther":"{count} files","subfoldersOne":"1 subfolder","subfoldersOther":"{count} subfolders","keepFiles":"Keep files","keepFilesHelp":"Files move to the library root; subfolders move up one level.","keepSubfolders":"Keep subfolders","keepSubfoldersHelp":"Subfolders move up one level.","deleteAll":"Delete folder and files","deleteAllSubfolders":"Delete folder and subfolders","deleteAllHelp":"Permanently deletes {contents}.","deleteAllLimit":"Too many files to delete at once (limit {limit}). Delete some files in the library first.","deleteEmpty":"Delete folder","deleting":"Deleting…"}},"library":{"title":"Files","description":"Manage uploaded files and imported source content","uploadFile":"Upload File","uploadFiles":"Upload Files","uploadingFile":"Uploading...","uploadingFiles":"Uploading {current}/{total}...","bulkUploadProgress":"{complete}/{total} complete","bulkUploadFailed":"{failed} failed","uploadComplete":"Uploaded and indexed","retryUpload":"Retry","dismissUploads":"Dismiss","uploadStages":{"pending":"Pending","preparing":"Preparing","uploading":"Uploading","complete":"Complete","error":"Failed"},"resync":"Resync","searchPlaceholder":"Search by title, tags, or summary...","loadingItems":"Loading files...","noItemsTitle":"No files yet","noItemsHint":"Upload a file or import from a source to get started","noSearchMatch":"No files match your search","showingResults":"Showing {filtered} of {total} files","deprecated":"Deprecated","noSummary":"No summary available yet.","lastSynced":"Last synced {date}","downloadOriginal":"Download original file","downloadFailed":"Failed to download original file.","visibility":{"org_only":"Organization Only","private":"Private"},"audience":{"label":"Visibility","private":"Private","privateDescription":"Only you can find and use this item.","workspace":"Workspace","workspaceDescription":"Everyone in the workspace can find and use this item.","groups":"Groups","groupsDescription":"Only members of the selected groups can find and use this item.","selectedGroups":"Selected groups","noGroups":"You do not belong to any groups.","groupRequired":"Select at least one group.","loading":"Loading visibility…","loadFailed":"Visibility could not be loaded."},"fileStage":{"queued":"Queued","preparing":"Preparing","extracting":"Extracting","summarizing":"Summarizing","indexing":"Indexing","processing":"Processing","complete":"Done","failed":"Failed"},"uploadQueue":{"title":"Uploads","status":{"pending":"Waiting","preparing":"Preparing","uploading":"Uploading {progress}%","complete":"Done","error":"Failed"},"retry":"Retry {filename}","remove":"Remove {filename}","summary":{"processing":"Processing {active} of {total} files · {done} done · {failed} failed","processingOne":"Processing {filename}","finished":"{total} files added","finishedOne":"{filename} added","finishedWithFailures":"{done} of {total} files added · {failed} failed","failedOne":"{filename} failed"},"showFiles":"Show files","hideFiles":"Hide files","failedGroup":"Failed ({count})","showError":"Show error","hideError":"Hide error","dismiss":"Dismiss"},"itemsTable":{"headers":{"title":"Title","source":"Source","tags":"Tags","visibility":"Visibility","created":"Created"},"sourceLabels":{"notion":"Notion","onedrive":"OneDrive","googledrive":"Google Drive","upload":"Upload","gmail":"Gmail","exchange":"Exchange","exchange_onprem":"Exchange On-Prem","agent_generated":"AI Generated","email_auto_ingest":"Email Auto-Ingest"},"status":{"processing":"Processing","failed":"Failed","reembedding":"Re-embedding","reembedFailed":"Re-embed failed","partial":"Partial"},"actions":{"edit":"Edit","download":"Download","convertToDataset":"Convert to Dataset","retryProcessing":"Retry processing","delete":"Delete"},"visibility":{"orgOnly":"Org only","private":"Private","groups":"Groups"},"emptyState":{"title":"No items yet","description":"Drag and drop files here to upload to the knowledge base","uploadFiles":"Upload files"},"none":"None","justNow":"Just now","pagesIndexed":"{pagesExtracted} of {pages} pages indexed"},"itemsToolbar":{"searchPlaceholder":"Search items…","allSources":"All sources","allVisibility":"All visibility","view":"View","upload":"Upload","manageColumns":"Manage columns","moreActions":"More actions","reembedding":"Re-embedding: {done}/{total}","reembedFailed":"Re-embedding failed. Please try again. If the problem persists, contact your administrator.","reembed":"Re-embed","reembedWithCount":"Re-embed ({count})","retryFailedWithCount":"Retry {count} failed"}},"generated":{"title":"Generated Files","description":"Files created by the AI assistant during conversations","searchPlaceholder":"Search generated files...","noItemsTitle":"No generated files yet","noItemsHint":"Files created by the assistant will appear here automatically"}},"tools":{"pageTitle":"Tools","pageDescription":"MCP servers and REST APIs the assistant can call in chat. Each one stays private to the person who added it until it is shared with the workspace.","submenu":{"connectedApis":"Connected APIs","mcpServers":"MCP servers"},"notices":{"loadFailed":"Failed to load connected APIs.","created":"Connected API created.","updated":"Connected API updated.","saveFailed":"Failed to save connected API.","deleted":"Connected API deleted.","deleteFailed":"Failed to delete connected API.","removedFromProvider":"API removed from provider.","updateProviderFailed":"Failed to update API provider assignment.","invalidRequired":"Name and endpoint URL are required.","invalidHeaders":"Credential headers must include both key and value, with unique keys.","invalidGetParams":"Default GET params must be valid JSON object.","invalidPostParams":"Default POST params must be valid JSON object.","invalidGetParamsMethod":"Default GET params are allowed only for GET method.","invalidPostParamsMethod":"Default POST params are allowed only for POST/PUT/PATCH/DELETE methods.","invalidQueryParamsSchema":"Parameters schema must be a JSON array of {name, required, description, inferredType, credentialCandidate} objects.","invalidPathParamsSchema":"Path parameters schema must be a JSON array of {name, required, description, inferredType, credentialCandidate} objects.","invalidFilePayloadPolicy":"File payload policy must include valid JSON paths, at least one format, and positive max bytes values.","connectorManaged":"This API belongs to a connection in Knowledge sources and can only be changed there."},"sharing":{"sharedLabel":"Shared with workspace","privateLabel":"Just me","shareAria":"Share connector with workspace","unshareAria":"Unshare connector from workspace","sharedViaProvider":"Shared via provider","shareConfirmTitle":"Share connector with workspace?","shareConfirmDescription":"Sharing makes this connector available to the workspace. Members may be able to browse, sync, index, or use triggers where supported.","shareConfirmOdooDescription":"Sharing gives workspace members live access to Odoo. Shared reads and approved mutations run through the connection owner’s Odoo account, API credential, and Odoo permissions. This live-only source is not available for Knowledge Hub browsing, syncing, or indexing.","sharedOdooExecutionNotice":"This Odoo connection is shared with you. It provides live access only, with no Knowledge Hub browsing, syncing, or indexing. Reads and approved mutations use the connection owner’s Odoo account, API credential, and Odoo permissions.","shareConfirmMailboxDescription":"Sharing the Exchange on-prem mailbox {mailbox} makes mailbox data and actions available to the workspace, including browsing, syncing, indexing, and triggers where supported.","shareConfirmCancel":"Cancel","shareConfirmAction":"Share with workspace","unshareConfirmTitle":"Make connector private?","unshareConfirmDescription":"Only you will be able to use this connector. Other workspace members lose access, and their workflows or chats that use it may stop working.","unshareConfirmNotOwnerDescription":"You don’t own this connector. Making it private removes it from your list and from everyone else’s. Only its owner will still see it and can share it again.","unshareConfirmAction":"Make private","unshareConfirmToolOwner":"Only you will be able to use “{name}”. Other workspace members lose access, and their workflows or chats that use it may stop working.","unshareConfirmToolOther":"You don’t own “{name}”. Making it private means only its owner can use it. Everyone else, including you, loses access.","sharedNotice":"Connector shared with workspace.","privateNotice":"Connector is now private.","updateFailed":"Failed to update connector sharing.","sharingDisabled":"A platform administrator has turned off connector sharing for this workspace. Existing shares can still be removed."},"list":{"clearSearch":"Clear search","owner":{"label":"Owner","all":"Everyone","me":"Only mine","former":"People who left ({count})","people":"People"},"access":{"label":"Access","all":"All","private":"Private","shared":"Shared"},"ownerYou":"You","ownerUnknown":"Unknown","ownerLeft":"Left the workspace","accessPrivate":"Private","accessShared":"Workspace","range":"{from}–{to} of {total}","previousPage":"Previous page","nextPage":"Next page","selection":{"label":"Selection","count":"{count} selected","clear":"Clear","row":"Select {name}"},"status":{"label":"Status","all":"Any status","healthy":"Reachable","unhealthy":"Unreachable","unknown":"Not tested","off":"Off","reconnect":"Reconnect needed"},"columns":{"owner":"Owner","access":"Access","status":"Status","actions":"Actions"},"summary":{"formerOne":"1 owned by someone who left","formerOther":"{count} owned by people who left"},"adminNote":"As an admin you see every tool in this workspace. Private tools work in chat only for the person who added them. Share one to make it available to everyone.","noMatches":"Nothing matches these filters.","clearFilters":"Clear filters","retry":"Try again","rowActions":"Actions for {name}","viewDetails":"View details","makePrivate":"Make private","shareWithWorkspace":"Share with workspace","deleting":"Deleting…","never":"Never","close":"Close","bulk":{"deleted":"Deleted {count}.","failed":"{count} could not be changed."}},"apis":{"intro":"Connected APIs let the assistant call REST endpoints directly. APIs imported from documentation are grouped under their provider.","searchPlaceholder":"Search APIs, providers, URLs or owners","countOne":"1 API","countOther":"{count} APIs","countFiltered":"{count} of {total} APIs","columns":{"api":"API"},"actions":{"add":"Add API"},"selectGroup":"Select all APIs in {name}","shareProvider":"Share provider with workspace","makeProviderPrivate":"Make provider private","connectorManaged":"Managed by its connection in Knowledge sources","authStatus":{"ok":"Connected","missing_connection":"Needs a connection","refresh_failed":"Sign-in expired","provider_removed":"Provider removed","insufficient_scope":"Missing permissions"},"shareConfirm":"Everyone in the workspace will be able to use “{name}” in chat, with its stored credentials.","delete":{"title":"Delete API?","titleMany":"Delete {count} APIs?","single":"“{name}” will be removed and chats can no longer call it.","singleOther":"It belongs to {owner}, who will lose it too.","singleShared":"It is shared with the workspace, so everyone loses access.","many":"{count} APIs will be removed and chats can no longer call them.","manyOthers":"Some of them ({count}) belong to other people, who will lose them too.","manyShared":"{count} are shared with the workspace."}},"carousel":{"title":"Add Cards","description":"Create and configure connected REST APIs for your organisation.","addCardTitle":"Add new API","addCardHint":"Configure method, endpoint, keywords, and credential headers.","addAction":"Open setup form"},"connected":{"title":"Connected APIs","description":"All connected APIs available for keyword-based planner hints in chats.","loading":"Loading connected APIs...","emptyTitle":"No connected APIs","emptyHint":"Connect a REST endpoint so the assistant can look up or change data in another system.","noKeywords":"No keywords configured","headers":"{count} credential header(s)","queryParams":"{count} credential query param(s)","getParams":"{count} GET param(s)","postParams":"{count} POST param(s)","pathParams":"{count} path param(s)","updatedAt":"Updated: {value}"},"exchange":{"title":"Exchange Online (Microsoft 365)","description":"Connect your Microsoft 365/Exchange Online mailbox to enable Graph email tools in chat and workflows.","loading":"Loading Exchange Online connection...","mailboxUnavailable":"No mailbox connected","displayNameUnavailable":"Mailbox identity unavailable","lastRefresh":"Last refresh: {value}","status":{"connected":"Connected","error":"Error","notConnected":"Not connected"},"actions":{"connect":"Connect","reconnect":"Reconnect","disconnect":"Disconnect"},"notices":{"loadFailed":"Failed to load Exchange connection status.","connectFailed":"Failed to start Exchange connection.","connected":"Microsoft Exchange mailbox connected.","connectionFailed":"Failed to connect Microsoft Exchange mailbox.","disconnected":"Microsoft Exchange mailbox disconnected.","disconnectFailed":"Failed to disconnect Microsoft Exchange mailbox."},"oauth":{"processing":"Processing Microsoft Exchange OAuth callback...","missingParams":"Missing OAuth parameters. Please reconnect Microsoft Exchange.","connecting":"Connecting your Microsoft Exchange mailbox...","connected":"Mailbox connected successfully. Redirecting...","failed":"Failed to connect Microsoft Exchange mailbox.","connectingTitle":"Connecting...","successTitle":"Connection Complete","failedTitle":"Connection Failed"}},"exchange_onprem":{"title":"Exchange Server Connector","description":"Connect your on-premise Exchange Server mailbox via IMAP/SMTP for email tools in chat and workflows.","form":{"email":"Email Address","username":"Username (e.g. DOMAIN\\user)","password":"Password","advancedSettings":"Advanced Settings","trustSelfSigned":"Trust self-signed certificates","imapHost":"IMAP Server","imapPort":"IMAP Port","smtpHost":"SMTP Server","smtpPort":"SMTP Port","security":"Security","connecting":"Discovering server settings...","connect":"Connect"},"notices":{"connected":"Exchange Server mailbox connected.","connectionFailed":"Failed to connect Exchange Server mailbox.","autodiscoverFailed":"Could not autodiscover server settings. Please enter them manually.","disconnected":"Exchange Server mailbox disconnected.","disconnectFailed":"Failed to disconnect Exchange Server mailbox."}},"gmail":{"title":"Gmail Connector","description":"Connect your Gmail mailbox to enable search, read, and send tools in chat and workflows.","loading":"Loading Gmail connection...","mailboxUnavailable":"No mailbox connected","displayNameUnavailable":"Mailbox identity unavailable","lastRefresh":"Last refresh: {value}","status":{"connected":"Connected","error":"Error","notConnected":"Not connected"},"actions":{"connect":"Connect","reconnect":"Reconnect","disconnect":"Disconnect"},"notices":{"loadFailed":"Failed to load Gmail connection status.","connectFailed":"Failed to start Gmail connection.","connected":"Gmail mailbox connected.","connectionFailed":"Failed to connect Gmail mailbox.","disconnected":"Gmail mailbox disconnected.","disconnectFailed":"Failed to disconnect Gmail mailbox."}},"providers":{"providerLabel":"Provider","manualLabel":"Manual","manualTitle":"Unassigned APIs","docsIngested":"Docs ingest","apiCount":"{count} API(s)","showApis":"Show APIs","hideApis":"Hide APIs","addApi":"Add API","lastIngestedAt":"Last ingested: {value}"},"dialog":{"createTitle":"Add new API","createDescription":"Only you can use it until you share it with the workspace.","editTitle":"Edit API","editDescription":"Update endpoint, keyword routing, and credential header handling."},"form":{"name":"API name","namePlaceholder":"e.g. CRM Customer Lookup","workflowReference":"Workflow reference: {apiRef}. Renaming the API keeps it.","method":"Method","provider":"Provider","providerNone":"No provider (manual)","providerHelp":"Group this API under a provider or keep it unassigned.","endpoint":"Endpoint URL","endpointPlaceholder":"https://api.example.com/v1/customers/{customerId}","endpointHelp":"Use {name} placeholders for path parameters, e.g. /networks/{network}/tokens/{address}. The assistant fills them at runtime.","keywords":"Keywords (comma separated)","keywordsPlaceholder":"customer, crm, lookup","getParams":"Default GET params (JSON)","getParamsPlaceholder":"{\"include\":\"profile\"}","getParamsHelp":"Optional JSON object merged into query params at runtime.","getParamsDisabledHelp":"Available only when method is GET.","postParams":"Default POST params (JSON)","postParamsPlaceholder":"{\"status\":\"active\"}","postParamsHelp":"Optional JSON object merged into request body at runtime.","postParamsDisabledHelp":"Available only when method is POST/PUT/PATCH/DELETE.","queryParamsSchema":"Parameters schema (JSON)","queryParamsSchemaPlaceholder":"[\n\t{\n\t\t\"name\": \"limit\",\n\t\t\"required\": false,\n\t\t\"description\": \"Max results to return\",\n\t\t\"inferredType\": \"integer\",\n\t\t\"credentialCandidate\": false\n\t}\n]","queryParamsSchemaHelp":"One entry per parameter the endpoint accepts. Each entry: name, required (bool), description, inferredType (string | number | integer | boolean | array | object), credentialCandidate (bool, true if the value is a secret like an API key).","pathParamsSchema":"Path parameters schema (JSON)","pathParamsSchemaPlaceholder":"[\n\t{\n\t\t\"name\": \"network\",\n\t\t\"required\": true,\n\t\t\"description\": \"Chain id, e.g. eth\",\n\t\t\"inferredType\": \"string\",\n\t\t\"credentialCandidate\": false\n\t},\n\t{\n\t\t\"name\": \"address\",\n\t\t\"required\": true,\n\t\t\"description\": \"Token contract address\",\n\t\t\"inferredType\": \"string\",\n\t\t\"credentialCandidate\": false\n\t}\n]","pathParamsSchemaHelp":"One entry per {name} placeholder in the endpoint URL. Same shape as the query parameters schema. Use this to document each path parameter (description, type, required); the assistant uses these hints when calling the API.","filePayloadsSection":"File payloads","filePayloadsHelp":"Allow attached chat files to be inserted only at specific JSON body paths.","filePayloadsEnable":"Allow file payload placeholders","filePayloadsEnableHelp":"Runtime calls still require a matching attached file and user approval before bytes leave the workspace.","filePayloadPath":"JSON path","filePayloadPathPlaceholder":"$.file","filePayloadFormats":"Formats","filePayloadFormat":{"base64":"base64","data_uri":"data URI"},"filePayloadMimeTypes":"MIME types","filePayloadMimeTypesPlaceholder":"image/png, application/pdf","filePayloadMaxBytes":"Max bytes","filePayloadMaxBytesPlaceholder":"5242880","addFilePayloadField":"Add file field","headersSection":"Credential headers","headerWriteOnly":"Header values are write-only. Saved values are never shown again.","existingHeaderKeys":"Configured header keys: {keys}","headerModeLabel":"Header update mode","headerModeKeep":"Keep existing headers","headerModeReplace":"Replace headers","headerModeClear":"Clear all headers","headerKey":"Header key","headerValue":"Header value","addHeader":"Add header"},"actions":{"create":"Create","save":"Save changes","cancel":"Cancel","edit":"Edit","delete":"Delete","removeFromProvider":"Remove from provider"},"mcp":{"callback":{"title_processing":"Connecting MCP server","title_success":"Connected","title_error":"Connection failed","processing":"Finishing the sign-in…","connected":"Connected “{name}”. Opening Tools…","denied":"You declined the sign-in. Start it again from Tools.","providerError":"The server refused the sign-in: {error}","missingCode":"The sign-in answer is incomplete. Start it again from Tools.","failed":"Could not finish the sign-in."},"notices":{"credentialsRequired":"Add headers or a bearer token first.","serverUnauthorized":"The server refused the request. Check the credentials.","reconnectRequired":"The sign-in is no longer valid. Reconnect the server.","serverNotFound":"That MCP server is not in your list.","signInFailed":"Could not start the sign-in.","loadFailed":"Failed to load MCP servers.","created":"MCP server created.","updated":"MCP server updated.","saveFailed":"Failed to save MCP server.","deleted":"MCP server deleted.","deleteFailed":"Failed to delete MCP server.","invalidRequired":"Server name, endpoint URL, and routing condition are required.","replaceHeadersRequired":"Provide headers JSON or choose Keep/Clear header mode.","enabled":"MCP server enabled for everyone.","disabled":"MCP server disabled for everyone.","toggleFailed":"Failed to update MCP server status.","testSuccess":"{name}: successfully connected","testFailed":"Connection test failed: {error}","testFailedUnknown":"Failed to run connection test.","refreshFailed":"Failed to refresh MCP server list after the test.","invalidHeaders":"Headers JSON must be an object of key/value pairs.","endpointPrivateNotAllowed":"This server is on a private network. Ask your platform admin to allow its host for this workspace.","endpointForbidden":"This host can never be used for an MCP server, for example a loopback or cloud metadata address.","endpointUnresolved":"The server's host name could not be resolved. Check the endpoint URL.","endpointHttpsRequired":"Public MCP servers must use https://.","endpointInvalid":"Enter an http:// or https:// URL without a user name or password.","endpointRedirected":"The server redirected to another address. Use the final URL as the endpoint."},"intro":"MCP servers give the assistant extra tools. It uses a server when a request matches that server's routing condition.","searchPlaceholder":"Search servers, URLs or owners","summary":{"totalOne":"1 MCP server","totalOther":"{count} MCP servers","unhealthyOne":"1 unreachable","unhealthyOther":"{count} unreachable","reconnectOne":"1 needs a reconnect","reconnectOther":"{count} need a reconnect"},"sort":{"label":"Sort","added":"Recently added","name":"Name","owner":"Owner","status":"Status"},"enabledForAssistant":"Enabled for AI Assistant","enabledForWorkflows":"Enabled for Workflows","shareConfirm":"Everyone in the workspace will be able to use “{name}” in chat, with its stored credentials.","shareConfirmOAuth":"Everyone in the workspace will be able to use “{name}” in chat with your signed-in account. What they do there runs as you.","shareConfirmOAuthOther":"Everyone in the workspace will be able to use “{name}” in chat with the signed-in account of {owner}. What they do there runs as {owner}.","delete":{"title":"Delete MCP server?","single":"“{name}” will be removed and chats can no longer use it.","singleOther":"It belongs to {owner}, who will lose it too.","singleShared":"It is shared with the workspace, so everyone loses access.","irreversible":"This can't be undone."},"details":{"tabs":{"server":"MCP Server","settings":"Settings","details":"Details","credentials":"Credentials","tools":"Tools"},"website":"Website","discardTitle":"Discard changes?","discardDescription":"Your changes to “{name}” are not saved.","discardConfirm":"Discard","keepEditing":"Keep editing","server":"Server","serverUnknown":"Not reported yet","status":"Status","assistantPrompt":"AI Assistant prompt","assistantPromptHelp":"This prompt helps the AI Assistant know when to use these tools.","enableForAssistant":"Enable for AI Assistant","enableForWorkflows":"Enable for workflows","enableForWorkflowsHelp":"Offers this server's tools as workflow nodes in your workflow builder.","shareWithWorkspace":"Share with workspace","shareHelp":"When enabled, everyone in your workspace can see it. The current settings are applied for other users.","disableForEveryone":"Disable for everyone","disableForEveryoneHelp":"Turns the server off for every member.","tools":{"title":"Tools","countOne":"{count} tool","countOther":"{count} tools","refresh":"Refresh tools","refreshing":"Listing tools…","loading":"Loading tools…","empty":"The server lists no tools.","notListed":"The tools have not been listed yet.","truncated":"The server has more tools. Only the first {count} are shown.","refreshFailed":"Could not list the tools: {error}"},"askOwnerToReconnect":"Ask {owner} to reconnect it. Only the person who signed in can do that.","authOAuth":"Signed in with OAuth as the owner","offHint":"Disabled for everyone. The AI Assistant does not use it.","checkedAt":"Last checked {value}","owner":"Owner","auth":"Authentication","authNone":"None","authBearer":"Bearer token","added":"Added","changed":"Last changed","readOnly":"Only the person who added this server or a workspace admin can change it."},"carousel":{"title":"Available integrations","description":"Connect a tool to make it available to the assistant.","addCardTitle":"Add MCP server","addCardHint":"Configure endpoint, routing condition, and auth headers.","addAction":"Open setup form","status":{"connected":"Connected","needsSetup":"Needs setup","available":"Connect"},"buildYourOwn":{"title":"Build your own","description":"Connect any MCP server with a custom endpoint."}},"connected":{"title":"Connected MCP Servers","description":"All connected servers available for planner routing in chats.","loading":"Loading MCP servers...","emptyTitle":"No MCP servers connected","emptyHint":"Connect an MCP server so the assistant can use its tools in chat.","headers":"{count} header(s)","bearerConfigured":"Bearer token configured","bearerMissing":"No bearer token","checkedAt":"Checked: {value}"},"dialog":{"createTitle":"Add new MCP Server","createDescription":"Only you can use it until you share it with the workspace."},"form":{"oauthRegistrationUnsupported":"Its OAuth sign-in works only with pre-registered apps, which are not supported yet.","credentialsNeeded":"This server needs credentials. Add headers or a bearer token, then check the connection.","prefilled":"Filled in from what the server reports. Change anything before you add it.","transportHttp":"Streamable HTTP","transportSse":"SSE (older servers)","name":"Server name","namePlaceholder":"e.g. Internal Knowledge MCP","description":"Description","descriptionPlaceholder":"Optional context for teammates","transport":"Transport","endpoint":"Endpoint URL","endpointPlaceholder":"https://example.com/mcp","condition":"AI Assistant prompt","conditionPlaceholder":"Use this server for requests about customer support policy and ticket triage.","headers":"Auth headers (JSON)","headersPlaceholder":"{\"X-API-Key\":\"token-value\"}","headersHelp":"Used only when header mode is Replace. Provide a JSON object of key/value pairs.","headersKeepHelp":"Current headers stay unchanged.","headersClearHelp":"All stored headers will be removed when you save.","bearer":"Bearer token","bearerPlaceholder":"Optional bearer token","clearBearerToken":"Clear stored bearer token","sectionAuth":"Credentials","headersKeepKeys":"Keeps the current headers: {keys}","bearerKeepPlaceholder":"Leave empty to keep the current token"},"status":{"enabled":"Enabled","disabled":"Disabled","unknown":"Unknown","healthy":"Healthy","unhealthy":"Unhealthy"},"actions":{"continue":"Continue","checkConnection":"Check connection","changeUrl":"Change","reconnect":"Reconnect","create":"Create","save":"Save changes","cancel":"Cancel","delete":"Delete","enable":"Enable for everyone","disable":"Disable for everyone","test":"Test","add":"Add MCP server","testConnection":"Test connection"}}},"workspace":{"pageTitle":"Manage Workspace","pageDescription":"Invite members, manage roles, and transfer workspace ownership.","loading":"Loading workspace settings...","accessDeniedTitle":"Access denied","accessDeniedDescription":"Only workspace owner or admins can access this page.","sections":{"inviteTitle":"Invite Member","inviteDescription":"Invite a new member or admin to this workspace.","groupsDescription":"Organize members for billing limits and resource access."},"submenu":{"peopleAccess":"People & Access","aiModelProviders":"AI Model Providers","llmDataProtection":"LLM Data Protection","skills":"Skills","userFields":"User Fields","billing":"Billing","audit":"Audit","feedback":"Feedback"},"pendingInvitationsCount":"{count} pending","invite":{"emailLabel":"Email","emailPlaceholder":"name@company.com","roleLabel":"Role","submit":"Send invite","submitting":"Sending..."},"roles":{"owner":"Owner","admin":"Admin","member":"Member"},"actions":{"refresh":"Refresh","saveRole":"Save role","rowActionsAria":"Actions for {email}","roleForMember":"Role for {email}","roleForInvite":"Role for invitation to {email}","revokeInviteFor":"Revoke invitation for {email}","remove":"Remove","removing":"Removing…","transferOwnership":"Transfer ownership","transferring":"Transferring…","revokeInvite":"Revoke","revokingInvite":"Revoking...","createGroup":"Create group","creatingGroup":"Creating...","deleteGroup":"Delete","deletingGroup":"Deleting…","addGroupMember":"Add member","addGroupMemberOne":"Add 1 member","addGroupMembersCount":"Add {count} members","addingGroupMember":"Adding..."},"notices":{"loadFailed":"Failed to load workspace settings.","inviteCreated":"Invitation created.","inviteCreateFailed":"Failed to create invitation.","packageSeatLimitReached":"All {reserved} of {maximum} package seats are reserved. Increase the package seat limit to invite more people.","inviteRoleUpdated":"Invitation role updated.","inviteRoleUpdateFailed":"Failed to update invitation role.","inviteRevoked":"Invitation revoked.","inviteRevokeFailed":"Failed to revoke invitation.","roleUpdated":"Member role updated.","roleUpdateFailed":"Failed to update member role.","primaryGroupUpdated":"Primary group updated.","primaryGroupUpdateFailed":"Failed to update the primary group.","memberRemoved":"Member removed.","memberRemoveFailed":"Failed to remove member.","ownershipTransferred":"Ownership transferred.","ownershipTransferFailed":"Failed to transfer ownership.","groupCreated":"Group created.","groupCreateFailed":"Failed to create group.","groupDeleted":"Group deleted.","groupDeleteFailed":"Failed to delete group.","groupHasAppAccessReferences":"This group still controls access to app views.","groupHasDatasetReferences":"This group still controls access to {count} datasets.","groupMemberAdded":"Group member added.","groupMemberAddFailed":"Failed to add group member.","groupMemberRemoved":"Group member removed.","groupMemberRemoveFailed":"Failed to remove group member."},"groups":{"nameLabel":"Group name","namePlaceholder":"Finance, Support, Engineering...","empty":"No groups yet.","backToList":"Back to groups","selectedEmpty":"No members in this group yet.","noAvailableMembers":"All workspace members are already in this group.","memberPickerLabel":"Add workspace member","memberPickerPlaceholder":"Select a member","memberCount":"{count} members","removeMember":"Remove from group","removeMemberFor":"Remove {email} from group"},"members":{"empty":"No members found.","you":"You","searchPlaceholder":"Search members by email or name","searchEmpty":"No members match \"{search}\".","count":"{shown} of {total} members","primaryGroupDescription":"Primary group controls where new items using the Primary group default are created. If it is not set, those items are private.","primaryGroupFor":"Primary group for {email}","primaryGroupUnset":"Not set","primaryGroupReadOnly":"Primary group: {group}","columns":{"member":"Member","role":"Role","joined":"Joined","actions":"Actions"}},"invitations":{"empty":"No pending invitations.","columns":{"email":"Email","role":"Role","expiresAt":"Expires","actions":"Actions"}},"confirm":{"removeMemberTitle":"Remove member?","removeMember":"Remove {email} from the workspace?","removeMemberConnections":"This also disconnects any Calendly and Cal.com connections they added to this workspace. Workflow steps that use those connections stop working.","transferOwnershipTitle":"Transfer ownership?","transferOwnership":"Transfer ownership to {email}?","deleteGroupTitle":"Delete group?","deleteGroup":"Delete this group? Existing billing attribution on usage logs will stay intact."},"userFields":{"title":"User Fields","description":"Define custom profile fields for workspace members. These fields become available as template variables in workflows.","removeSchema":"Remove Schema","removeSchemaConfirm":"Remove the user field schema? This cannot be undone.","removeSchemaDescription":"Removes the entire member field schema for this workspace.","removingSchema":"Removing…","saveSchema":"Save Schema","saveFailed":"Failed to save the field schema.","emptyLabelError":"Every field needs a label before the schema can be saved.","schemaVersion":"Schema version {version}","lastUpdatedPrefix":"last updated","lastUpdated":"last updated {date}","keyPlaceholder":"key","labelPlaceholder":"Label","typeLabel":"Field type","required":"Required","extensible":"Extensible","expand":"Expand","collapse":"Collapse","removeField":"Remove field","addField":"Add Field","addFieldTo":"Add field to {field}","objectFallback":"object","fieldTypes":{"text":"Text","number":"Number","boolean":"Boolean","date":"Date","object":"Object"}},"skills":{"title":"Skills","description":"Manage custom assistant skills for your workspace.","customSkills":"Custom skills","skillCount":"Skills: {count}","newSkill":"New skill","blueprintTitle":"Skill blueprint","identitySection":"Identity","activationSection":"Activation","contextSection":"Context","invokedBy":"Invoked by","audience":"Audience","contextIncluded":"Context included","triggerCount":"Hints: {count}","toolCount":"Tools: {count}","pinCount":"Pins: {count}","createTitle":"Create skill","editTitle":"Edit skill","editing":"Editing {name}","empty":"No custom skills yet.","emptyTitle":"No custom skills yet","emptyDescription":"Create a skill to teach the assistant something your workspace does often.","backToList":"Back to skills","discard":"Discard","discardConfirmTitle":"Discard changes?","discardConfirm":"You have unsaved changes. Discard them and return to the skills list?","name":"Name","descriptionLabel":"Description","allMembers":"All members","selectedGroups":"Selected groups","advertisedTools":"Advertised tools","pinnedKnowledge":"Pinned Knowledge Hub items","instructions":"Instructions","triggerHints":"Trigger hints","enabled":"Enabled","disabled":"Disabled","save":"Save skill","saveSucceeded":"Skill saved.","saveFailed":"Failed to save skill.","cancel":"Cancel","edit":"Edit skill","delete":"Delete skill","deleteSucceeded":"Skill deleted.","deleteFailed":"Failed to delete skill.","deleteConfirm":"Delete this skill?","deleteConfirmTitle":"Delete skill","deleting":"Deleting…","noGroups":"No groups yet.","noTools":"No tools available.","groupAudienceSummary":"{count} groups","agentScope":"Runs on","agentScopeGeneral":"General (main assistant)","agentScopeElastic":"Live connection / ERP (elastic agent)"},"billing":{"errors":{"loadFailed":"Could not load usage data."},"personalLimits":{"title":"Personal limits","description":"Choose which configured per-person limit applies first.","priorityTitle":"Personal limit priority","priorityDescription":"Drag to reorder. The first configured limit applies to each person.","highest":"Highest priority","checkedFirst":"Checked first","priorityAria":"Personal limit priority","savePriority":"Save priority","saveChanges":"Save changes","saving":"Saving…","resetPriority":"Restore default order","sharedTitle":"Shared credit limits still apply.","sharedDescription":"Personal-limit priority does not override a workspace or group total budget.","saveFailed":"Failed to save personal limits.","savePending":"A save is already in progress.","deleteFailed":"Failed to delete the default.","loadFailed":"Personal limits could not be loaded.","refreshFailed":"The latest personal limits could not be loaded. Your draft is still here.","stalePolicy":"The saved priority changed while you were editing. Load it before saving again.","loadCurrent":"Load current priority","retry":"Retry","moveUp":"Move {source} up","moveDown":"Move {source} down","moved":"{source} moved to priority {position}","skipHelp":"A source with no configured amount is skipped. Zero is a valid limit. For multiple groups, the lowest per-user amount applies.","sources":{"user":{"title":"Specific user limit","description":"An amount set directly for a person"},"workspace_default":{"title":"Workspace default","description":"The workspace default for each person"},"group_default":{"title":"Group default","description":"The lowest default among a person's groups"}},"example":{"label":"Live example","title":"How this applies to Alex","description":"Try a different order and watch the result.","user":"Specific user limit","userAria":"Example specific user limit","workspace":"Workspace default","group":"Group default","result":"Alex's personal monthly limit","from":{"user":"From Alex's specific user setting","workspace_default":"From the workspace per-user setting","group_default":"From the group per-user setting"},"none":"No personal limit is configured","note":"Example amounts in credits only. They are never saved."},"defaults":{"title":"Per-user defaults","description":"Set one workspace default or a default for each group. These amounts apply per person each month.","scope":"Default scope","target":"Default target","chooseGroup":"Select group","amount":"Per-user monthly limit (credits)","placeholder":"Credits / person / month","save":"Save default","invalid":"Enter a valid amount and target.","value":"{amount} / person / month","delete":"Delete {target}","remove":"Delete","deleteTitle":"Delete per-user default?","deleteDescription":"This source will be skipped when no other per-user default is configured for it.","deleteConfirm":"Delete default","deleting":"Deleting…"}},"limits":{"title":"Credit limits","description":"Set hard monthly credit limits for the workspace, groups, or individual users.","effectiveLimit":"Effective limit","currentSpend":"Credits used","reserved":"Reserved","remaining":"Remaining","scopeLabel":"Scope","targetLabel":"Target","targetPlaceholder":"Select target","amountLabel":"Monthly cap (credits)","workspaceTarget":"Workspace","save":"Save limit","delete":"Delete limit","deleting":"Deleting…","configuredTitle":"Configured limits","spendSummaryTitle":"Monthly credits by scope","listTitle":"Credit limits","listDescription":"Credits used per scope against its configured limit.","remainingShort":"{amount} remaining","empty":"No credit limits configured.","spendSummaryEmpty":"No credit usage recorded by scope this month.","monthlyCap":"{amount} per month","remainingOf":"{remaining} remaining of {limit}","invalidLimit":"Enter a valid monthly limit.","missingTarget":"Select a user or group target.","saveSucceeded":"Credit limit saved.","saveFailed":"Failed to save credit limit.","deleteSucceeded":"Credit limit deleted.","deleteFailed":"Failed to delete credit limit.","deleteConfirm":"Delete this credit limit?","scopes":{"org":"Workspace","group":"Group","user":"User"}},"tabs":{"overview":"Overview","usage":"Usage","ariaLabel":"Usage & limits views"},"exports":{"open":"CSV exports","title":"Usage CSV exports","description":"Export up to 366 days of usage. Reports contain at most 100,000 calls and 64 MiB. You can leave this page while an export runs; completed downloads remain available for 24 hours.","selectedPeriod":"Selected period","create":"Create CSV","creating":"Requesting…","history":"Recent exports","refresh":"Refresh","empty":"No exports requested yet.","rows":"{count} calls","requested":"Requested:","expires":"Download expires:","download":"Download CSV","invalidRange":"Select a valid period of no more than 366 days.","forbidden":"You no longer have access to usage exports.","createFailed":"The export request could not be confirmed. Retry with the same period to recover it. If another export is running or the daily limit is reached, wait before retrying.","downloadFailed":"The export could not be downloaded. Refresh the history and try again.","loadFailed":"Export history could not be loaded. Refresh to try again.","status":{"queued":"Queued","processing":"Preparing","ready":"Ready","failed":"Failed","expired":"Expired"},"errors":{"USAGE_EXPORT_ACCESS_CHANGED":"Access changed while this report was being prepared.","USAGE_EXPORT_LIMIT_EXCEEDED":"This report exceeded the export limit. Select a shorter period.","USAGE_EXPORT_DEADLINE_EXCEEDED":"This report took too long. Try a shorter period.","USAGE_EXPORT_FAILED":"This report could not be prepared. Request a new export."}},"usageSection":{"title":"Usage","description":"Credit and token usage over the selected period."},"progressBar":{"monthlyUsage":"Monthly usage"},"dateRange":{"to":"to","days7":"7 days","days30":"30 days"},"summary":{"totalCost":"Total Cost","totalCredits":"Credits used","totalQueries":"Total Queries","inputTokens":"Input Tokens","outputTokens":"Output Tokens","loading":"Loading"},"charts":{"loading":"Loading…","noData":"No usage data for this period","retry":"Retry chart","loadingChart":"Loading chart…","cost":"Cost","credits":"Credits","input":"Input","output":"Output","costByAgent":"Cost by Capability","creditsByAgent":"Credits by capability","costOverTime":"Cost Over Time","creditsOverTime":"Credits over time","tokenUsage":"Token Usage Over Time","creditsSummary":"{count} daily buckets, {total} used. Peak: {peakValue} on {peakDate}.","agentCreditsSummary":"{count} capabilities. Highest usage: {topAgent} at {topCost}.","costSummary":"{count} daily buckets, {total} total cost. Peak: {peakValue} on {peakDate}.","tokenSummary":"{count} daily buckets. {input} input tokens and {output} output tokens.","agentSummary":"{count} capabilities. Highest cost: {topAgent} at {topCost}."},"logs":{"title":"Usage Logs","columns":{"time":"Time","model":"Model","kind":"Kind","agent":"Capability","pricing":"Pricing","in":"In","out":"Out","cost":"Cost","credits":"Credits","duration":"Duration","session":"Session","source":"Source","context":"Context"},"sources":{"chat":"Chat","workflow":"Workflow","knowledge":"Knowledge","dataset":"Dataset","platform":"Platform"},"knowledgeOperations":{"queryEmbedding":"Query embedding","compress":"Compression","extract":"Extraction","summarize":"Summary","embedContent":"Content embedding","embedSummary":"Summary embedding","embedChunks":"Chunk embedding"},"kinds":{"llm":"LLM","embedding":"Embedding","vision":"Vision analysis","imageGeneration":"Image generation","documentGeneration":"Document generation","transcription":"Transcription","webResearch":"Web research","addressValidation":"Address validation"},"none":"None","sessionLabel":"Session #{id}","knowledgeItemLabel":"Item #{id}","workflowRunLabel":"Run #{id}"}},"feedback":{"pageTitle":"Feedback","pageDescription":"Review and triage feedback captured in the workspace.","disabledTitle":"Feedback capture is not enabled","disabledDescription":"Feedback capture is not enabled for this organization.","listDescription":"Review feedback submitted by users about assistant responses.","table":{"date":"Date","user":"From","source":"Source","category":"Category","feedback":"Feedback","session":"Chat","status":"Status"},"sources":{"message_action":"Message rating","agent_tool":"Assistant captured"},"detailTitle":"Feedback detail","detailDescription":"Full feedback text and review actions","detailFrom":"From","detailSession":"Chat","messageContext":"Message this feedback refers to","unknownUser":"Unknown user","untitledSession":"Untitled chat","detailOrganisation":"Organisation","messageDeleted":"The rated message was deleted.","empty":"No feedback matches these filters.","loadFailed":"Could not load feedback","retry":"Retry","previousPage":"Previous","nextPage":"Next","pageStatus":"Page {page} of {pages} ({total} entries)","filters":{"search":"Search feedback or chats…","searchLabel":"Search feedback","rating":"Rating","all":"All","statusLabel":"Status","allStatuses":"All statuses"},"ratings":{"helpful":"Helpful","notHelpful":"Not helpful","unrated":"Without rating"},"reviewedAt":"Reviewed {date}","actions":{"markReviewed":"Mark as reviewed","archive":"Archive"},"statuses":{"submitted":"Submitted","reviewed":"Reviewed","archived":"Archived"},"categories":{"incorrect_answer":"Incorrect answer","missing_info":"Missing info","unhelpful":"Unhelpful","bug":"Bug","other":"Other"},"errors":{"updateStatusFailed":"Failed to update feedback status"}},"llmDataProtection":{"title":"LLM data protection","description":"Control how personal data and secrets are handled before workspace content is sent to model providers.","readOnly":"Only workspace owners and admins can change data protection settings.","personalConnections":{"title":"Personal connections","description":"Instead of one shared connection, a workflow or process step can use the connection of the person who approves it, or of the person the run belongs to when it needs no approval. This is set per step. If you switch it off, workflows and processes with such a step cannot run until you switch it on again.","switchLabel":"Allow steps to use the approver's own connection","unavailable":"Not available for this workspace yet. A platform administrator can make it available.","loading":"Loading personal connections","loadFailed":"The personal connections setting could not be loaded.","saveFailed":"The setting could not be saved. Try again."},"pdfPasswords":{"title":"PDF passwords","description":"Suppliers sometimes send PDFs that need a password to open. File extraction in chats, the Knowledge Hub and workflows tries these passwords when a PDF needs one. Saved passwords cannot be viewed again.","passwordLabel":"Password","nameLabel":"Name (optional)","namePlaceholder":"e.g. Supplier invoices","add":"Add password","count":"{count} of {limit} passwords saved","empty":"No PDF passwords saved yet.","unnamed":"Unnamed password","addedOn":"Added {date}","remove":"Remove {name}","loading":"Loading PDF passwords","loadFailed":"PDF passwords could not be loaded.","notice":{"added":"Password saved.","removed":"Password removed.","addFailed":"The password could not be saved.","limitReached":"The maximum number of PDF passwords is reached. Remove one first.","removeFailed":"The password could not be removed."}},"generatedFiles":{"title":"Future file defaults","description":"Choose who can find future Knowledge Hub items created through each path. Existing items are not changed.","sharingNote":"These settings only control defaults. People can change visibility later in the Knowledge Hub.","private":"Private to creator","orgOnly":"Entire workspace","primaryGroup":"Primary group","primaryGroupNote":"Uses the responsible member's primary group. If none is set, the file is private.","groups":{"created":"Created in the workspace","automations":"Automations","connectedSources":"Connected sources"},"paths":{"agentGenerated":{"label":"Generated chat files","description":"Files created for someone in chat and saved to the Knowledge Hub."},"manualUpload":{"label":"Manual uploads","description":"Files people upload directly to the Knowledge Hub."},"directImport":{"label":"Direct imports","description":"Items imported directly into the Knowledge Hub."},"agentKnowledge":{"label":"Agent knowledge saves","description":"Knowledge items an agent saves for future use."},"workflowOutput":{"label":"Workflow outputs","description":"Files and items produced by workflows."},"datasetImport":{"label":"Dataset imports","description":"Files imported while creating or updating datasets."},"emailAutoIngestion":{"label":"Email auto-ingestion","description":"Email bodies and attachments automatically added from connected mailboxes."},"connectedSourceIndexing":{"label":"OneDrive, OneNote and Google Drive indexing","description":"Items indexed from OneDrive, OneNote and Google Drive connections. Other connectors follow their own rules, listed below."},"cloudDriveCopy":{"label":"Cloud drive copies","description":"Files copied into the Knowledge Hub from a cloud drive."}},"otherConnectors":{"title":"Other connectors","description":"These connectors decide the audience of indexed items themselves. This setting cannot change them.","gmail":{"label":"Gmail","description":"Always private to the mailbox owner."},"ftp":{"label":"FTP","description":"Private to the member who starts the indexing; each member indexes their own copy."},"sharedConnections":{"label":"Exchange Server, Network Drive and Confluence","description":"Everyone in the workspace when the connection is shared, otherwise private to the connection owner."},"existingItemsNote":"Items these connectors already indexed are updated to match on every sync. Items shared with a group keep their audience."},"setAllPrivate":"Set all private","setAllWorkspace":"Set all workspace","setAllPrimaryGroup":"Set all primary group","loading":"Loading file visibility defaults","saving":"Saving…","saved":"File visibility defaults updated.","loadFailed":"File visibility defaults could not be loaded.","saveFailed":"File visibility defaults could not be saved. Try again.","save":"Save file defaults","discard":"Discard changes"},"policy":{"title":"Policy mode","description":"Choose whether detections are only audited, masked before model calls, or blocked entirely.","modeLabel":"Mode"},"modes":{"disabled":"Disabled","log_only":"Log only","mask":"Mask","block":"Block"},"actions":{"save":"Save policy","saving":"Saving...","off":"Off","logOnly":"Log","mask":"Mask","block":"Block","builtinActionLabel":"Action for {name}","customActionLabel":"Action for {name}","logged":"Logged","masked":"Masked","blocked":"Blocked"},"notices":{"loadFailed":"Failed to load the masking policy.","validationFailed":"Check every built-in detector and custom rule action before saving.","updateSuccess":"Masking policy updated.","updateFailed":"Failed to update masking policy."},"detectors":{"title":"Built-in detectors","description":"Choose Off, Log, Mask, or Block independently for each standard personal-data and secret detector.","email":"Email","phone":"Phone","iban":"IBAN","creditCard":"Credit card","jwt":"JWT","apiKey":"API key","privateKey":"Private key","germanTaxId":"German tax ID","germanVatId":"German VAT ID"},"customRules":{"title":"Custom rules","description":"Create workspace-specific detectors directly or ask the assistant for help when built-in detectors are not enough.","empty":"No custom rules configured.","untitled":"Untitled rule","placeholderLabel":"Placeholder label","addManually":"Add rule manually","edit":"Edit","editLabel":"Edit {name}","remove":"Remove","removeLabel":"Remove {name}","enable":"Enable {name}","disable":"Disable {name}","removeConfirmTitle":"Remove custom rule?","removeConfirmDescription":"Remove \"{name}\" from this policy draft? The change takes effect only after you save the policy.","removeConfirmAction":"Remove rule","dialog":{"createTitle":"Add custom rule","editTitle":"Edit custom rule","description":"Define the workspace-specific value this rule should detect. Changes remain a draft until you save the policy.","basic":"Basic details","basicHelp":"Give the rule a clear name and choose the placeholder shown after masking.","name":"Rule name","ruleDescription":"Description","placeholderLabel":"Placeholder label","action":"Action","selectAction":"Select action","advanced":"Advanced","advancedHelp":"Configure the stable rule ID and regular expression.","id":"Rule ID","idHelp":"Used to identify the rule. The ID cannot be changed after the rule is created.","pattern":"Regular expression","patternHelp":"Use regular-expression syntax supported by both JavaScript and Python. Matching runs with a bounded timeout.","cancel":"Cancel","create":"Add rule","save":"Save changes","errors":{"required":"This field is required.","invalid":"Enter a valid value.","invalidRegex":"Enter a valid regular expression.","builtinIdConflict":"This ID is reserved by a built-in detector.","duplicateId":"A custom rule with this ID already exists.","duplicateName":"A custom rule with this name already exists.","ruleLimit":"A policy can contain at most 50 custom rules."}}},"events":{"title":"Recent events","description":"Metadata-only audit trail for recent detections. Raw matched values are never shown.","loadFailed":"Failed to load recent data protection events.","empty":"No masking events recorded yet.","none":"None","session":"Session #{id}","workflow":"Workflow #{id}","workflowRun":"Run #{id}","workflowNode":"Node {id}","request":"Request {id}","columns":{"time":"Time","action":"Action","source":"Source","detectors":"Detectors","matches":"Matches","context":"Context"}}},"serviceProviders":{"title":"Service providers","description":"Deployment services that may process data. Configured means required settings are present; it does not verify credentials. AI routes and model providers are shown above and below.","service":"Service","provider":"Provider","configuration":"Configuration","hosting":{"title":"Hosting & processing","source":"Provider documentation","sourceLabel":"Provider documentation for {provider}","explanation":"Locations describe hosting and processing, not company origin. Only the selected service is shown; unreported regions remain unknown.","area":{"eu":"EU","outsideEu":"Outside EU","global":"Global processing","accountDependent":"Account-dependent","unknown":"Unknown","managed":"Deployment-managed","notApplicable":"Not applicable"},"details":{"langfuseEu":"Ireland · AWS eu-west-1","langfuseUs":"Oregon, US · AWS us-west-2","langfuseJp":"Tokyo, Japan · AWS ap-northeast-1","langsmithEu":"Netherlands · Google Cloud europe-west4","langsmithUs":"United States · cloud region not identified","mailjet":"Germany & Belgium · Google Cloud","linkup":"EU data storage. GDPR compliant. DPA available on request.","googleStorageEu":"Files stored in the EU · Google Cloud","googleHostingEu":"Hosted in the EU · Google Cloud","storage":"Selected storage region not reported.","googleAuthentication":"Sign-in data may be processed worldwide by Google, including outside the EU.","microsoftAuthentication":"Processing depends on your Microsoft account and tenant region. EU/EFTA Entra tenants have EU Data Boundary coverage, with exceptions.","vies":"EU service; processing region not reported.","managed":"Location managed by the deployment operator.","inactive":"No active service.","simulation":"Development simulation.","unavailable":"Location unavailable.","unknown":"Processing region not disclosed by this configuration."}},"observedAt":"Configuration snapshot: {time}","unavailableTitle":"Service details unavailable","unavailableDescription":"Service configuration could not be loaded. You can continue using the other settings.","partial":"Search and tracing details are temporarily unavailable. Other service details are shown.","stale":"Refresh failed. These are the previously loaded service details.","retry":"Retry","status":{"configured":"Configured","needs_setup":"Needs setup","disabled":"Disabled","unavailable":"Unavailable"},"services":{"web_search":{"name":"Web search","purpose":"Search queries and public page retrieval."},"platform_email":{"name":"Platform email","purpose":"Sign-in codes and platform notifications."},"file_storage":{"name":"Default file storage","purpose":"Storage for newly created files. Existing files may use earlier backends."},"hosting":{"name":"Application hosting","purpose":"Infrastructure running this installation."},"google_sign_in":{"name":"Google sign-in","purpose":"Account authentication through Google."},"microsoft_sign_in":{"name":"Microsoft sign-in","purpose":"Account authentication through Microsoft."},"langsmith":{"name":"LangSmith tracing","purpose":"Agent execution traces, which can include prompts and results."},"langfuse":{"name":"Langfuse tracing","purpose":"Agent execution traces, which can include prompts and results."},"audit_storage":{"name":"Audit checkpoint storage","purpose":"Archive target for audit integrity checkpoints."},"vat_validation":{"name":"VAT validation","purpose":"VAT identifier checks for applicable billing profiles."}},"providers":{"exa":"Exa","linkup":"Linkup","mailjet":"Mailjet","smtp":"Custom SMTP — operator not identified","gcs":"Google Cloud Storage","azure":"Azure Blob Storage","s3":"Amazon S3","s3_compatible":"Custom S3-compatible storage","local":"Local to the deployment","stub":"Development simulation","google_cloud":"Google Cloud","deployment_managed":"Deployment-managed","google":"Google","microsoft":"Microsoft","langsmith":"LangSmith Cloud","langfuse":"Langfuse Cloud","vies":"European Commission VIES","custom_vat":"Custom VAT service","none":"None","unknown":"Unknown","exaCustom":"Custom search endpoint (Exa)","linkupCustom":"Custom search endpoint (Linkup)","langsmithCustom":"Custom LangSmith deployment","langfuseCustom":"Custom Langfuse deployment"}},"aiModeConfiguration":{"title":"Platform model routing","description":"Current routes and catalog prices by model and modality.","caption":"Effective platform model assignments, routes, and catalog prices","scopeNote":"Live platform routing for chat modes and specialized capabilities. The preferred route reflects the responding agent process. Workspace provider profiles below are configured separately.","loading":"Loading platform model routing","loadFailed":"Platform model routing could not be loaded.","loadFailedDescription":"Provider management remains available while you retry this diagnostic view.","empty":"No platform model routes are configured.","emptyDescription":"Effective routes will appear here when model routing is available.","unavailable":"Unavailable","blocked":"Blocked","currentlyPreferred":"Currently preferred","residencyDecision":"Residency decision","configurationUnavailable":"Route configuration unavailable","notApplicable":"Not applicable","providerDefault":"Model default","modelsFrom":"Models from:","policy":"Data processing:","policies":{"eu_only":"EEA","azure_eu_data_boundary":"Azure EU Data Boundary"},"agents":"Agents","platformTasks":"Platform tasks","specializedModels":"Specialized models","specialized":"Specialized","specializedUses":"Uses","resolvedModel":"Resolved:","directAzure":"Azure OpenAI (direct)","deployment":"Deployment:","cachedInput":"Cached input","priceSource":"Price source: {sources}","rateVersion":"Rate version:","boundaries":{"eu":"EU geography","eu_data_boundary":"EU Data Boundary"},"columns":{"mode":"Mode / capability","assignments":"Agents / tasks","route":"Route","provider":"Provider","model":"Provider / model","reasoning":"Reasoning","region":"Region","pricing":"Catalog pricing","input":"Input","output":"Output"},"modes":{"light":"Light","flash":"Flash","reasoning":"Reasoning","heavy":"Heavy"},"specializedCapabilities":{"vision_analysis":"Vision analysis","image_generation":"Image generation","voice_dictation":"Voice dictation","long_form_transcription":"Long-form transcription"},"specializedAssignmentLabels":{"image_inspection":"Image inspection","scanned_document_extraction":"Scanned document extraction","document_visual_qa":"Document visual QA","image_generation":"Image generation","microphone_dictation":"Microphone dictation","uploaded_audio_transcription":"Uploaded audio transcription"},"pricingModalities":{"text_input":"Text input","image_input":"Image input","audio_input":"Audio input","text_output":"Text output","image_output":"Image output"},"routes":{"primary":"Primary","fallback":"Fallback {number}"},"thinkingLevels":{"none":"None","minimal":"Minimal","low":"Low","medium":"Medium","high":"High","xhigh":"Extra high","max":"Max"},"agentLabels":{"knowledge_hub":"Knowledge Hub","email":"Email","teams":"Microsoft Teams","elastic":"Elastic","file":"File","research":"Research","data_analysis":"Data analysis","mcp":"MCP","code_execution":"Code execution"},"slotLabels":{"default":"Default","main_agent":"Main agent orchestration","openai_default":"OpenAI default","chat_router":"Chat routing","chat_suggest_queries":"Suggested queries","chat_title":"Chat titles","research_summary":"Research answers","process_step_summary":"Process step summaries","knowledge_summarize":"Knowledge summaries","dataset_extraction":"Dataset extraction","dataset_vocab_suggest":"Dataset vocabulary suggestions","dataset_semantic_kind":"Dataset semantic classification","dataset_import_mapping":"Dataset import mapping","memory_summarizer":"Memory summaries","business_memory":"Business memory","business_memory_reranker":"Business memory reranking","purpose_context":"Purpose context","purpose_context_reranker":"Purpose context reranking","document_agent_test":"Document checks","judge":"Evaluation judge","attachment_summarizer":"Attachment summaries"},"sources":{"requesty":"Requesty catalog","litellm":"LiteLLM catalog","azure_configured":"configured Azure rates","saved_catalog":"saved catalog snapshot"},"unavailableReasons":{"catalog_unavailable":"Pricing catalogs unavailable","model_not_found":"Model not found in catalogs","incomplete_rate":"Incomplete catalog rate"},"priceNote":"Credits per 1M tokens. Direct Azure uses the configured metering rates for AI credits. Other catalog estimates can vary by region, caching, context length, and provider terms. External specialized pricing is not fetched when all chat routes use direct Azure."},"modelProviders":{"editor":{"connectionChecked":"Connection checked","configurationChecked":"Configuration tested","platformDefault":"Platform default","scope":"Choose the models used for workspace chats and their agents.","source":"Model source","platform":"Uhrwerk.AI-provided models","workspace":"Bring your own provider/key","defaultRequired":"Choose a default model or enter its exact deployment ID.","unavailable":"Profile changes are temporarily unavailable. The saved configuration remains in use.","legacy":"This profile keeps its existing behavior. Upgrade it explicitly to use the model picker and test changes before applying them.","upgrade":"Upgrade this profile","upgradePreview":"Review the proposed settings below. Previously unused role choices are not adopted unless you select them.","loadModels":"Load models","azureSuggestions":"These are resource-model suggestions. Enter the exact deployment name and test it before activating.","discoveryHint":"Load available model IDs or enter an exact model manually. Listing a model does not verify a working configuration.","suggestions":"Available models","budgetPending":"Test configuration to see the usable history threshold for the selected models.","advanced":"Advanced","inheritanceHint":"Empty agent choices inherit the default or the relevant parent agent. Explicit choices apply only to that agent.","uses":"Uses {model}","inherits":"Inherits {model}","chooseDefault":"Choose a default model","adoptPrevious":"Use previous selection: {model}","chooseModel":"Choose a model","inheritDefault":"Use inherited model","modelUnavailable":"Unavailable","fallbacks":"Default-model fallbacks","fallbackHint":"Choose up to two ordered EU models from this same account. They are used when the default model is temporarily unavailable. Agent overrides use their own selection.","fallbackNumber":"Fallback {number}","addFallback":"Add fallback model","moveEarlier":"Move earlier","removeFallback":"Remove","limits":"Declared model limits","limitsHint":"Enter a context ceiling where your provider cannot supply one. These are administrator-declared limits and cannot increase a known provider limit.","contextWindow":"Context ceiling (tokens)","maxOutputTokens":"Output ceiling (tokens)","validation":"Configuration test","test":"Test configuration","testing":"Testing configuration…","testCost":"Small test requests can incur provider usage. Tests use synthetic input and do not run your connected tools.","testRequired":"Test this configuration successfully before applying or activating it.","testFailed":"The configuration could not be verified. The saved profile is unchanged.","testExpired":"The draft changed or the test expired. Test again before applying or activating.","tested":"This draft passed the configuration test.","connection":"Connection","modelAccess":"Model access","generation":"Generation & streaming","tools":"Tools","structuredOutput":"Structured output","passed":"Passed","failed":"Failed","not_required":"Not required","unverified":"Unverified","historyThreshold":"Estimated conversation-history threshold: {tokens} tokens. This is a compression threshold, not the full context window.","fallbackOrder":"Fallback order: {models}","save":"Save profile","apply":"Apply changes","saveActivate":"Save & activate","discardTitle":"Discard profile changes?","discardDescription":"Your unsaved model selections and credentials will be discarded.","discard":"Discard changes","keepEditing":"Keep editing"},"catalog":{"euUnverified":"An EU processing location could not be verified.","unsupportedApi":"This model interface is not supported.","retired":"This model has been retired.","manualUnverified":"No catalog details are available for this model or deployment. Test the exact ID to verify it.","unknown":"Unknown","refresh":"Refresh models","loading":"Loading approved models…","stale":"These model details may be out of date. Testing checks the current selection again.","unavailable":"Models could not be loaded. Your selection is preserved.","forbidden":"You no longer have access to these models.","empty":"No approved models are available for this source.","noMatches":"No models match these filters.","search":"Search models","searchPlaceholder":"Model name, provider, or exact ID","provider":"Filter by provider","allProviders":"All providers","filters":"Model filters","eu":"EU location","tools":"Tools","vision":"Vision","reasoning":"Reasoning","structured":"Structured output","jsonSchema":"JSON schema","unknownLocation":"Location unknown","policyUnavailable":"This routing policy has no verifiable model or location details.","notEligible":"This model is unavailable for this configuration.","exactVariant":"Select the exact provider and region variant.","selected":"Selected model","selectedUnavailable":"This selected model is unavailable. Choose an approved model before testing.","inputPrice":"Input / 1M tokens","outputPrice":"Output / 1M tokens","context":"Context window","outputLimit":"Output limit","priceNote":"Provider catalog estimates in credits per million tokens. Actual usage can vary.","priceTier":"Above {tokens} input tokens","supported":"Supported","unsupported":"Not supported"},"sectionTitle":"Model profiles","sectionDescription":"Choose workspace model profiles. Saved provider credentials are never shown.","empty":"No model profiles configured.","providers":{"openai":"OpenAI","azureOpenai":"Azure OpenAI","vertexAi":"Vertex AI","requesty":"Requesty"},"status":{"active":"Active","inactive":"Inactive"},"boolean":{"yes":"Configured","no":"Not set"},"validation":{"healthy":"Healthy","unhealthy":"Unhealthy","unknown":"Unknown","never":"Not tested","nameRequired":"Profile name is required.","credentialsRequired":"Credentials are required for this provider.","endpointRequired":"Azure endpoint is required.","projectIdRequired":"Vertex project ID is required.","locationRequired":"Vertex location is required."},"columns":{"name":"Profile","active":"Active","provider":"Provider","updated":"Updated","lastTest":"Last test","hasCredentials":"Has credentials","actions":"Actions"},"actions":{"create":"Create profile","test":"Test","testing":"Testing...","activate":"Activate","activating":"Activating...","edit":"Edit","delete":"Delete","deleting":"Deleting...","cancel":"Cancel","saving":"Saving...","saveCreate":"Create profile","saveEdit":"Save changes"},"dialog":{"createTitle":"Create model profile","createDescription":"Add an organization model provider profile.","editTitle":"Edit model profile","editDescription":"Update provider settings and default model mappings."},"form":{"nameLabel":"Profile name","providerLabel":"Provider","setActiveOnCreate":"Set this profile as active after save","providerSettingsTitle":"Provider settings","credentialsTitle":"Credentials","credentialsConfiguredHint":"Credentials are already configured. Leave the field blank to keep the current secret.","modelDefaultsTitle":"Model defaults","defaultModelLabel":"Default model","routerModelLabel":"Router model","plannerModelLabel":"Planner model","summarizerModelLabel":"Summarizer model","verifierModelLabel":"Verifier model","knowledgeModelLabel":"Knowledge model","conversationModelLabel":"Conversation model","appAutomationModelLabel":"App automation model","workflowModelLabel":"Workflow model","fileModelLabel":"File model","integrationsModelLabel":"Integrations model","emailModelLabel":"Email model","researchModelLabel":"Research model","codeExecutionModelLabel":"Code execution model","mcpModelLabel":"MCP model","datasetModelLabel":"Dataset model","teamsModelLabel":"Teams model","datasetExtractionModelLabel":"Dataset extraction model","baseUrlLabel":"Base URL","endpointLabel":"Endpoint","apiVersionLabel":"API version","projectIdLabel":"Project ID","locationLabel":"Location","apiKeyLabel":"API key","serviceAccountJsonLabel":"Service-account JSON"},"notices":{"createSuccess":"Model profile created.","createFailed":"Failed to create model profile.","updateSuccess":"Model profile updated.","updateFailed":"Failed to update model profile.","deleteSuccess":"{name} was deleted.","deleteFailed":"Failed to delete {name}.","activateSuccess":"{name} is now active.","activateFailed":"Failed to activate {name}.","testSuccess":"{name} test succeeded.","testFailed":"{name} test failed.","testFailedWithError":"{name} test failed: {error}"},"confirm":{"deleteProfile":"Delete model profile {name}?"}},"agentInstructions":{"sectionTitle":"Assistant Instructions","sectionDescription":"Describe your business model and how the AI assistant should handle requests. These instructions guide routing, knowledge retrieval, and response framing.","form":{"placeholder":"Example: We are a freight shipping company. Our knowledge hub contains rate quotes organized by origin, destination, weight class, and carrier. When users ask about rates, always search the knowledge hub first."},"actions":{"edit":"Edit","save":"Save","saving":"Saving...","cancel":"Cancel"},"notices":{"updateSuccess":"Assistant instructions updated.","updateFailed":"Failed to update assistant instructions."},"empty":"No instructions configured. Add business context to help the assistant understand your domain.","lastUpdated":"Last updated {date}"}},"platform":{"invoiceIssuer":{"title":"Invoice issuer","description":"Activate the complete legal identity used to issue future Uhrwerk.AI invoices.","loading":"Invoice issuer is loading…","loadFailed":"The invoice issuer could not be loaded.","retry":"Retry issuer","activeVersion":"Active immutable version {version}","noActiveVersion":"No active issuer version","futureOnly":"Activation creates an immutable version for future invoices only. Published invoices never change.","ready":"Ready for automatic issuance","blocked":"Automatic issuance is blocked","blockers":"Issuance blockers","numberPreview":"Next-number format preview","activate":"Activate new version","activating":"Activating version…","activated":"Immutable issuer version {version} is now active.","activationFailed":"The issuer version could not be activated. Review the complete legal record and try again.","invalid":"Complete every required issuer field before activation.","groups":{"numbering":"Issuance and numbering","identity":"Legal identity","address":"Registered address","register":"Register disclosures","contact":"Contact","payment":"Payment instructions","branding":"Document footer and branding"},"fields":{"issuerKey":"Issuer key","invoiceNumberPrefix":"Invoice number prefix","domesticVatRate":"Domestic VAT rate (%)","paymentTermDays":"Payment term (days)","legalName":"Legal name","tradingName":"Trading name","legalForm":"Legal form","streetLine1":"Address line 1","streetLine2":"Address line 2","postalCode":"Postal code","city":"City","region":"State or region","countryCode":"Country code","vatId":"VAT ID","taxNumber":"Tax number","registeredOffice":"Registered office","registerCourt":"Register court","registerType":"Register type","registerNumber":"Register number","managingDirectors":"Managing directors","managingDirectorsHelp":"One director per line.","email":"Billing email","phone":"Phone","website":"Website","payeeName":"Payee name","iban":"IBAN","bic":"BIC","paymentTerms":"Payment terms","remittanceText":"Remittance instructions","logoReference":"Logo reference","footerText":"Footer text"}},"legalInvoices":{"title":"Legal invoices","description":"Inspect validation evidence, published revisions, and complete replacements visible to the customer.","loading":"Legal invoices are loading…","loadFailed":"This organisation's legal invoices could not be loaded.","retryLoad":"Retry legal invoices","empty":"No legal invoices have been staged for this organisation.","invoice":"Invoice","issueDate":"Issue date","amount":"Amount due","state":"Generation state","currentRevision":"Current revision","currentPointer":"Current customer-visible revision","replacementStatus":"Replacement {state}","currentRemains":"Revision {revision} remains current.","noCurrent":"No published revision","awaitingNumber":"Awaiting invoice number","view":"View {number}","previous":"Previous","next":"Next","page":"Page {page} of {totalPages} · {total} invoices","close":"Close","detailDescription":"Canonical current payload, validation evidence, and the immutable revision timeline.","detailLoading":"Invoice detail is loading…","detailFailed":"This legal invoice could not be loaded.","sourceStatement":"Source statement {id}","blockers":"Publication blockers","totals":"Published totals","net":"Net","tax":"VAT","gross":"Gross","prepaid":"Prepaid","due":"Due","validation":"ZUGFeRD validation","validationPassed":"Passed","validationFailed":"Failed","validationPending":"Not yet validated","validationEvidence":"Validated ZUGFeRD {version} · generator target ZUGFeRD {targetVersion} / Factur-X {targetFacturx} · {profile} · validator {validator}","timeline":"Immutable revision timeline","revision":"Revision {revision}","compareRevision":"Compare revision {revision}","comparisonTitle":"Revision {revision} compared with current","comparisonDescription":"Only changed fields from the immutable canonical invoice snapshots are shown.","comparisonField":"Field","comparisonSelected":"Selected revision","comparisonCurrent":"Current revision","comparisonEmpty":"The canonical invoice fields are identical.","initial":"Initial issuance","replacement":"Complete replacement","priorCurrent":"Prior current revision","created":"Created {date}","published":"Published {date}","privateReason":"Private reason: {reason}","downloadCurrent":"Download current invoice","downloadRevision":"Download revision {revision}","downloadFailed":"The invoice document could not be downloaded.","retryGeneration":"Retry generation","retrying":"Retrying…","retryFailed":"Generation could not be retried.","overwrite":"Overwrite invoice","states":{"pending":"Pending","blocked":"Blocked","rendering":"Rendering","published":"Published","failed":"Failed"},"overwriteDialog":{"title":"Overwrite invoice","description":"Publish a complete replacement revision. The invoice identity, number, and source statement remain immutable.","privateReason":"Private reason","privateReasonHelp":"Visible only to Platform Admins and retained with the immutable revision.","confirmation":"I confirm that this complete replacement will become the customer-visible revision.","diff":"Current versus draft","noChanges":"No canonical fields changed.","changedFields":"{count} canonical fields changed","current":"Current","draft":"Draft","totalsPreview":"Live totals preview","serverValidation":"The server recomputes and validates every total before publication.","publish":"Publish replacement","publishing":"Publishing replacement…","cancel":"Cancel","stale":"A newer current revision exists. Close this draft, review the latest revision, and start a new replacement.","failed":"The complete replacement was not accepted. Your draft and idempotency key are preserved; try again.","accepted":"Replacement revision {revision} was accepted for generation.","sections":{"parties":"Issuer and recipient","dates":"Dates and tax evidence","lines":"Ordered invoice lines","adjustments":"Allowances and charges","tax":"Tax breakdown","payment":"Payment and prepaid amount","presentation":"Document presentation","notes":"Notes"},"parties":{"issuer":"Issuer","recipient":"Recipient"},"itemField":"{item} — {field}","itemNumber":"{item} {index}","action":"Action","field":"Field","items":{"line":"Line","allowance":"Allowance","charge":"Charge","taxBreakdown":"Tax breakdown","note":"Note"},"fields":{"buyerReference":"Buyer reference","id":"ID","name":"Name","description":"Description","quantity":"Quantity","unitCode":"Unit code","unitNetCents":"Unit net cents","netCents":"Net cents","reason":"Reason","taxCategory":"Tax category","taxRateBasisPoints":"Tax rate basis points","issueDate":"Issue date","supplyStart":"Supply period start","supplyEnd":"Supply period end","taxTreatment":"Tax treatment","taxEvidenceType":"Tax evidence type","viesCheckedAt":"VIES checked at","viesReference":"VIES reference","manualSource":"Manual evidence source","manualVerifiedAt":"Manual evidence verified at","evidenceIssuerVatId":"Evidence issuer VAT ID","evidenceRecipientVatId":"Evidence recipient VAT ID","taxableCents":"Taxable cents","taxCents":"Tax cents","exemptionReason":"Exemption reason","prepaidCents":"Prepaid cents","dueDate":"Due date","paymentIban":"Payment IBAN","paymentBic":"Payment BIC","payeeName":"Payee name","paymentTerms":"Payment terms","remittanceText":"Remittance instructions","logoReference":"Logo reference","footerText":"Footer text"},"evidenceKinds":{"domestic":"Domestic","vies":"VIES","manual":"Manual"},"totals":{"lineNet":"Line net","allowances":"Allowances","charges":"Charges","taxBasis":"Tax basis","vat":"VAT","gross":"Gross","prepaid":"Prepaid","due":"Due"},"addLine":"Add line","removeLine":"Remove line {index}","addAllowance":"Add allowance","removeAllowance":"Remove allowance {index}","addCharge":"Add charge","removeCharge":"Remove charge {index}","addTax":"Add tax breakdown","removeTax":"Remove tax breakdown {index}","addNote":"Add note","removeNote":"Remove note {index}"}},"organisationDiscounts":{"title":"Organisation discounts","description":"Percentage schedules applied before corrections and platform credit.","create":"Create discount","createDescription":"Create an immutable percentage schedule. Ending it later creates a separate ledger event.","scope":"Discount scope","organisationScope":"Entire organisation","componentScope":"One charge","charge":"Charge","selectCharge":"Select a charge","percentage":"Percentage","percentageHint":"Enter 0.01% through 100.00%.","percentageOff":"{percentage}% off","builtInTargets":{"base":"Base price","seats":"Seats","aiUsage":"AI usage"},"start":"Start","currentPeriod":"Current billing period","nextPeriod":"Next billing period","currentPeriodWarning":"The discount applies to the full eligible charge for this period. It is not prorated, even if the period is already underway.","duration":"Duration","permanent":"Permanent","fixedPeriods":"Fixed number of periods","billingPeriods":"Billing periods","customerDescription":"Customer description","privateReason":"Private reason","confirmCreate":"I confirm this discount, its scope, start, and duration.","close":"Close","cancelScheduled":"Cancel scheduled discount","endActive":"End active discount","cancelDescription":"Cancel before it starts. It will never apply to a billing period.","endDescription":"End after the current billing period. It remains eligible through the current boundary.","confirmTermination":"I confirm this termination.","endAfterCurrent":"End after current period","loading":"Loading organisation discounts…","loadFailed":"Could not load this organisation's discounts.","retry":"Retry","configurationUnavailable":"Commerce configuration is unavailable. History remains readable, but commands are paused.","targetsUnavailable":"Charge targets are unavailable. Existing discounts remain manageable.","automationDisabled":"Discount automation is disabled in this deployment. Existing records remain read-only.","archivedReadOnly":"Archived organisations are read-only.","empty":"No organisation discounts yet.","scopeAndTarget":"Scope and target","componentFallback":"Component","unknown":"unknown","starts":"Starts","periodsRemaining":"{remaining} of {total} periods remaining","created":"Created","createdBy":"{date} · user {userId}","customer":"Customer:","private":"Private:","termination":"Termination: {customer} · {privateReason}","terminationDetail":"Effective after {period} · {date} · user {userId}","historyPages":"Discount history pages","previous":"Previous","next":"Next","page":"Page {page} of {totalPages}","states":{"scheduled":"Scheduled","active":"Active","completed":"Completed","cancelled":"Cancelled","ended":"Ended"},"commandFailed":"The discount command failed."},"statementDiscounts":{"total":"Percentage discounts","applications":"Discount applications","privateReason":"Private reason: {reason} · Created by user {userId}","line":"{label}: {amount} factual · {percentage}% · −{discount}","empty":"This statement contains no discount applications.","outcomes":{"applied":"Applied","no_matching_component":"No matching charge","zero_eligible_amount":"Zero eligible amount"},"summaryDiscounts":"{amount} discounts"},"organisationUsage":{"title":"Member activity","description":"Activity in this organisation over the last 30 days. Login is shown separately and applies to the whole account.","coverageNote":"Counts reflect retained, attributable activity. Login tracking starts when this report is introduced; decisions and uploads without recorded attribution are missing.","active7d":"Active in 7 days","active30d":"Active in 30 days","activeCount":"{active} / {total} members","search":"Search members by name or email","member":"Member","lastActivityAt":"Last activity","lastLoginAt":"Last account login","sessions30d":"Sessions (30d)","messages30d":"Messages (30d)","workflowRuns30d":"Workflow runs (30d)","costUsd30d":"Cost (30d)","last30Title":"Last 30 days","cost":"Cost","noActivity":"No activity recorded","noLogin":"No login recorded","user":"User {id}","loading":"Loading activity…","loadFailed":"Could not load member activity.","detailFailed":"Could not load this member’s activity details.","retry":"Try again","empty":"No matching members.","previous":"Previous page","next":"Next page","page":"Page {page} of {pages} · {total} members","close":"Close activity details","detailDescription":"Organisation activity and attributed usage. Metadata and counts only.","joined":"Member since {date}","trend":"Activity over time","days30":"30 days","days90":"90 days","dailyData":"Daily activity data (UTC)","date":"Date","noDailyActivity":"No sessions or messages in this period.","chartLoading":"Loading chart…","chartFailed":"The chart could not be loaded. Daily data is available below.","totalsTitle":"Since joining","sessions":"Sessions","messages":"Messages","workflowRuns":"Workflow runs","inboxDecisions":"Inbox decisions","knowledgeUploads":"Knowledge uploads","credits":"Attributed cost","creditNote":"Only usage attributed to this user is included.","topApps":"Most used apps","topConnectors":"Most used connectors","topAgents":"Most used agents","noUsage":"No usage recorded.","recentEvents":"Recent activity","noEvents":"No recent activity recorded.","sessionLink":"Session #{id}","workflowLink":"Workflow run #{id}","events":{"session_started":"Session started","message_sent":"Message sent","workflow_triggered":"Workflow started","workflow_approved":"Workflow approved","inbox_decision":"Inbox decision","knowledge_uploaded":"Knowledge document uploaded"}},"organisationMembers":{"search":"Search by email…","invalid":"Invalid organisation.","loading":"Loading…","loadFailed":"Could not load members.","email":"Email","role":"Role","mfa":"MFA","joined":"Joined","actions":"Actions","empty":"No members found.","reset":"Reset owner MFA","resetFailed":"Owner recovery was not permitted or could not be completed.","confirmTitle":"Use exceptional owner recovery?","confirmDescription":"This removes {email}'s MFA methods and trusted devices and revokes all active sessions. Use only when the owner cannot recover their account.","status":{"enabled":"Enabled","enrollment_required":"Enrollment required","not_enabled":"Not enabled"}}},"settings":{"nav":{"ariaLabel":"Settings navigation","backToApp":"Back to app","backToList":"Settings"},"groups":{"personal":"Personal","workspace":"Workspace"},"unsaved":{"title":"Unsaved changes","description":"You have unsaved changes on this page. Save them, or discard them and continue?","keepEditing":"Keep editing","discard":"Discard changes","saveAndContinue":"Save & continue","saving":"Saving…"},"saveBar":{"dirty":"You have unsaved changes","saving":"Saving…"},"shell":{"states":{"loading":"Loading…","forbiddenTitle":"You don't have access","forbiddenDescription":"Your role doesn't allow you to view this section. If this changed recently, ask a workspace admin.","errorTitle":"Something went wrong","errorDescription":"We couldn't load this section. Check your connection and try again.","staleDescription":"Couldn't refresh this section, so you're seeing the last version we loaded.","retry":"Retry"}},"sections":{"security":{"label":"Security","description":"Protect your account with an authenticator app or passkey, and manage trusted devices.","actionFailed":"That security change could not be completed. Try again.","managementChallenge":{"title":"Confirm with multi-factor authentication","description":"Use one of your configured methods to continue this change."},"methods":{"title":"Authentication methods","description":"Any configured method can complete MFA. Your last successful method is suggested first.","totp":"Authenticator app","configured":"A time-based code generator is configured.","notConfigured":"Use any standard TOTP authenticator app.","totpUnavailable":"Authenticator enrollment is unavailable in this deployment. Existing authenticators can still be removed.","active":"Active","inactive":"Not configured","add":"Add","replace":"Replace","addPasskey":"Add a passkey","addPasskeyDescription":"Use a device, hardware security key, or password manager.","passkeyUnavailable":"Passkey enrollment is unavailable in this deployment. Existing passkeys can still be renamed or removed.","passkeyDescription":"Passkey or security key","lastUsed":"Last used {date}","neverUsed":"Not used yet","noEmailPhone":"Email and phone codes are not available as MFA methods."},"totp":{"title":"Set up an authenticator app","description":"Scan the locally generated QR code or enter the key, then confirm a six-digit code.","qrAlt":"Authenticator setup QR code","copy":"Copy setup key","copied":"Setup key copied","copyShort":"Copy","copiedShort":"Copied","code":"Six-digit code","verify":"Verify and add","startFailed":"Authenticator setup could not be started.","retry":"Try again"},"passkey":{"title":"Add a passkey","description":"Your browser will ask you to create a passkey only after you continue.","name":"Passkey name","namePlaceholder":"For example, Work laptop","add":"Create passkey"},"remove":{"title":"Remove authentication method?","description":"Make sure another method remains available before removing this one."},"rename":{"title":"Rename passkey"},"devices":{"title":"Trusted devices","description":"Trusted devices can skip MFA until their trust expires.","empty":"No devices are currently trusted.","current":"Current device","created":"Added {date}","lastUsed":"Last used {date}","neverUsed":"Not used yet","expires":"Trust expires {date}","revoke":"Revoke trust","revokeAll":"Revoke all","revokeTitle":"Revoke trust for this device?","revokeAllTitle":"Revoke all trusted devices?","revokeDescription":"MFA will be required again the next time the affected device signs in."},"danger":{"title":"Disable multi-factor authentication","description":"This removes every authenticator and passkey and revokes all trusted devices.","workspaceRequired":"A workspace requires multi-factor authentication for your account, so it cannot be disabled here.","disable":"Disable MFA","confirmTitle":"Disable MFA for your account?","confirmDescription":"All configured methods and trusted devices will be removed. A workspace policy may require immediate enrollment again.","disabled":"Multi-factor authentication was disabled."}},"notifications":{"label":"Notifications","description":"Choose whether you receive attention summaries and let workspace admins set their schedule.","loading":"Loading notification settings…","retry":"Retry","weekdays":{"monday":"Monday","tuesday":"Tuesday","wednesday":"Wednesday","thursday":"Thursday","friday":"Friday","saturday":"Saturday","sunday":"Sunday"},"personal":{"title":"Your email digest","description":"Your personal choice for the workspace's inbox digest.","optIn":"Email me a digest","optInDescription":"Include you when the workspace schedule finds new inbox notifications.","inheritedSchedule":"Workspace schedule","dailySchedule":"Daily at {time} · {timezone}","weeklySchedule":"{weekday} at {time} · {timezone}","scheduleDisabled":"The workspace digest is currently disabled.","loadError":"Your notification preference could not be loaded.","saved":"Notification preference saved","saveFailed":"Notification preference could not be saved","deliveryPausedTitle":"Email delivery is paused","deliveryPaused":"Email delivery is paused because of a delivery problem or complaint. The pause may be temporary. Your saved choice remains unchanged, and turning reminders on will not clear the pause."},"workspace":{"title":"Workspace digest","description":"Set when opted-in members receive summaries of new inbox notifications.","enabled":"Enable workspace digest","enabledDescription":"Members are opted in by default and can opt out individually.","cadence":"Frequency","daily":"Daily","weekly":"Weekly","weekday":"Day","localTime":"Local time","timezone":"Time zone","baseline":"The first digest starts with notifications created after you enable this policy.","emailUnavailable":"Outbound email is not configured. Configure it before enabling email digests.","appUrlUnavailable":"The application URL is not configured. Configure it before enabling email digests.","loadError":"Workspace settings could not be loaded.","save":"Save changes","saving":"Saving…","cancel":"Cancel","dirty":"You have unsaved changes","saved":"Workspace digest saved","saveFailed":"Workspace digest could not be saved"}},"myProfile":{"label":"My profile","description":"Your personal profile fields.","saved":"Profile saved","saveFailed":"Failed to save profile","emptyTitle":"No profile fields yet","emptyDescription":"Your workspace admin hasn't set up any profile fields yet.","form":{"required":"required","fieldRequired":"This field is required","missingRequiredOne":"{count} required field is missing","missingRequiredOther":"{count} required fields are missing","customFields":"Custom fields","keyPlaceholder":"key","valuePlaceholder":"value","removeCustomField":"Remove custom field","addCustomField":"Add custom field","expand":"Expand","collapse":"Collapse","save":"Save","saving":"Saving…"},"learnedContext":{"title":"Learned context","description":"Read-only business learnings from chat history and indexed knowledge.","loading":"Loading learned context","loadError":"Could not load learned context.","retry":"Retry","empty":"No learned context yet.","scopeOrg":"Organization","scopePersonal":"Personal","provenance":"Provenance","sources":"Sources","noSources":"No active sources available","excerptUnavailable":"Excerpt unavailable","provenanceErrorFallback":"Could not load provenance","evidenceCountOne":"{count} evidence","evidenceCountOther":"{count} evidence","sourceCountOne":"{count} source","sourceCountOther":"{count} sources"}},"myAiKnowledge":{"label":"What the AI knows about me","description":"The personal facts the AI has learned about you from your chats."},"apiClients":{"label":"API clients","description":"Manage API clients and one-time keys that run workflows or chats as you.","guide":{"workflowsLoading":"Loading workflows…","workflowsError":"Could not load workflows. The Chat and Inbox guides are still available.","quickstartLabel":"API key quickstart","steps":{"saveTitle":"Save the key","saveBody":"Store the one-time secret as API_KEY on your server. It is shown only once: never commit it to source control or expose it in frontend or browser code. Mint and revoke keys on the client's page under Keys.","workflowTitle":"Choose a workflow","workflowBody":"Choose an accessible workflow for the examples. Your API client must also allow access to this workflow.","runTitle":"Start a run","runBody":"Send this request from a trusted server or automation environment. The API accepts the run asynchronously."},"workflowLabel":"Workflow","workflowPlaceholder":"Select a workflow","workflowOption":"{name} · ID {id}","noWorkflows":"No workflows available.","languageLabel":"Example language","languages":{"curl":"cURL","javascript":"JavaScript","python":"Python"},"snippetLabel":"{language} {endpoint} example","endpointLabels":{"list":"list-workflows","create":"create-run","status":"status","events":"events"},"copy":"Copy {label}","copied":"Copied {label}","copyStatus":"Copied to clipboard","copyFailed":"Could not copy. Select the code and copy it manually.","responseTitle":"202 Accepted response","responseBody":"Use links.self to poll the run and links.events to stream its progress.","referenceTitle":"API reference","referenceDescription":"List startable workflows, create a workflow run, check its status, or stream metadata-only events.","goodToKnowTitle":"Good to know","idempotency":"Reuse an Idempotency-Key only when retrying the same method, route, and request body.","access":"A key can access only workflows allowed by its API client and runner identity.","errors":"401 means the key is missing or invalid, 403 means scope or resource access is missing, and 429 means the per-minute quota was reached.","metadata":"API responses and events expose run metadata, not workflow inputs or outputs.","endpoints":{"list":{"title":"List startable workflows","summary":"Lists the workflows this key may start.","method":"GET","path":"/api/v1/workflows","scope":"workflows:read","scopeLabel":"Required scope","success":"200 OK","successLabel":"Success","details":"Paginate with page and limit (at most 100). Returns metadata such as ID, name, and status, never the workflow graph."},"create":{"title":"Create a workflow run","summary":"Starts one asynchronous run for the selected workflow.","method":"POST","path":"/api/v1/workflows/{workflowId}/runs","scope":"workflow:runs:create","scopeLabel":"Required scope","success":"202 Accepted","successLabel":"Success","details":"Send an input object and a unique Idempotency-Key. Reuse that key only to retry the same request."},"status":{"title":"Get run status","summary":"Returns the current metadata for one workflow run.","method":"GET","path":"/api/v1/workflows/{workflowId}/runs/{runId}","scope":"workflow:runs:read","scopeLabel":"Required scope","success":"200 OK","successLabel":"Success","details":"Status is one of queued, running, requires_action, succeeded, failed, or canceled. A requires_action run waits for an approval or input; answer it through its interactions link or in the web app."},"events":{"title":"Stream run events","summary":"Streams metadata-only progress events for one workflow run.","method":"GET","path":"/api/v1/workflows/{workflowId}/runs/{runId}/events","scope":"workflow:runs:events","scopeLabel":"Required scope","success":"200 OK","successLabel":"Success","details":"The response uses text/event-stream and sends heartbeat keep-alive comments, then closes after a terminal run event."}},"chat":{"quickstartLabel":"Chat API quickstart","steps":{"createTitle":"Create a chat","createBody":"Create an empty chat with a fresh Idempotency-Key and keep the returned chat UUID.","uploadTitle":"Upload and confirm a file","uploadBody":"Request a signed upload, send the bytes directly with the returned headers, then confirm the file UUID with Uhrwerk.AI.","messageTitle":"Queue, stream, and read","messageBody":"Attach the file UUID to a message, stream the separate SSE endpoint, then page through messages and mint a short-lived file download URL."},"endpointLabels":{"completeFlow":"complete-chat-flow","create":"create-chat","files":"file-upload","messages":"create-message","events":"events","read":"read-and-download","list-interactions":"list-interactions","read-interaction":"read-interaction","answer":"answer-question","approve":"approve-interaction","reject":"reject-interaction","request-changes":"request-changes","provide-secret":"provide-secret","cancel":"cancel-turn"},"referenceTitle":"Chat API reference","referenceDescription":"Expand an operation for a focused server-side example. The quickstart above combines the complete flow.","securityTitle":"Secret and signed URL boundaries","signedStorageNotice":"The signed storage request never includes Authorization or API_KEY. Secret responses read WK_SECRET_VALUE from the server environment and send it only in the HTTPS request body, never in a URL or process argument.","operations":{"create":{"method":"POST","title":"Create a chat","path":"/api/v1/chats","summary":"Creates an empty chat and returns its UUID. A fresh Idempotency-Key makes retries safe."},"files":{"method":"POST","title":"Upload and confirm a file","path":"/api/v1/chats/<CHAT_ID>/files/request-upload","summary":"Requests a signed upload, forwards its uploadHeaders to a raw PUT without Uhrwerk.AI auth, and confirms the returned file UUID."},"messages":{"method":"POST","title":"Create a message","path":"/api/v1/chats/<CHAT_ID>/messages","summary":"Queues a message asynchronously with up to twenty attached file UUIDs and a fresh Idempotency-Key."},"events":{"method":"GET","title":"Stream chat events","path":"/api/v1/chats/<CHAT_ID>/events","summary":"Streams curated text/event-stream updates. Heartbeats are comments. Reconnecting may project current durable state; exact Last-Event-ID replay is unsupported. The stream closes after a terminal event."},"read":{"method":"GET","title":"Read messages and files","path":"/api/v1/chats/<CHAT_ID>/messages?page=1&limit=20","summary":"Reads the chat, paginates its messages, lists files, and mints a short-lived signed URL for one file download."},"list-interactions":{"method":"GET","title":"List pending interactions","path":"/api/v1/chats/<CHAT_ID>/interactions","summary":"Lists safe, locally resolvable interactions for the exact paused turn. Use the optional kind query to narrow the result."},"read-interaction":{"method":"GET","title":"Read an interaction","path":"/api/v1/chats/<CHAT_ID>/interactions/<INTERACTION_ID>","summary":"Reads one safe interaction projection. Keep its interactionHash for stale-safe resolution."},"answer":{"method":"POST","title":"Answer a question","path":"/api/v1/chats/<CHAT_ID>/interactions/<INTERACTION_ID>/responses","summary":"Answers a compatible question with its current interactionHash and streams the resumed turn as curated SSE."},"approve":{"method":"POST","title":"Approve an interaction","path":"/api/v1/chats/<CHAT_ID>/interactions/<INTERACTION_ID>/responses","summary":"Approves a compatible approval or plan review with a fresh Idempotency-Key."},"reject":{"method":"POST","title":"Reject an interaction","path":"/api/v1/chats/<CHAT_ID>/interactions/<INTERACTION_ID>/responses","summary":"Rejects a compatible approval. An optional bounded reason may be included."},"request-changes":{"method":"POST","title":"Request changes","path":"/api/v1/chats/<CHAT_ID>/interactions/<INTERACTION_ID>/responses","summary":"Returns bounded change instructions for a compatible approval or plan review."},"provide-secret":{"method":"POST","title":"Provide a secret","path":"/api/v1/chats/<CHAT_ID>/interactions/<INTERACTION_ID>/responses","summary":"Reads WK_SECRET_VALUE from the server environment and sends it in the HTTPS body for encrypted credential persistence."},"cancel":{"method":"POST","title":"Cancel the current turn","path":"/api/v1/chats/<CHAT_ID>/turn/cancel","summary":"Idempotently cancels only the current queued, processing, or paused turn."}}},"inbox":{"overviewTitle":"Use Inbox from a trusted server","overviewBody":"List the current runner's unread Inbox, inspect safe action reviews, and call only actions marked API-executable.","referenceTitle":"Inbox API reference","referenceDescription":"Expand an endpoint for a focused cURL, JavaScript, or Python example.","responseLabel":"Response","idempotencyTitle":"Retry-safe execution","idempotencyBody":"Generate a fresh UUID Idempotency-Key for an execution. Reuse it only when retrying the exact same actionHash request.","browserWarningTitle":"Browser handoff stays in Uhrwerk.AI","browserWarningBody":"Browser-only actions remain visible for review, but apiExecutable is false. Never send them to the execution endpoint.","endpointLabels":{"list":"list-unread","detail":"notification-detail","execute":"execute-action","status":"execution-status","history":"execution-history","retry":"retry-execution","release":"release-execution","delivery":"update-delivery"},"operations":{"list":{"method":"GET","title":"List unread notifications","path":"/api/v1/inbox?status=unread&limit=20","scope":"inbox:read","summary":"Returns a cursor page of unread deliveries for the API client's current runner.","responseNote":"Keep the nextCursor for pagination; summaries contain previews, not full action reviews."},"detail":{"method":"GET","title":"Get notification detail","path":"/api/v1/inbox/<NOTIFICATION_ID>","scope":"inbox:read","summary":"Returns safe review metadata and marks server-supported actions with apiExecutable true.","responseNote":"Select an API-executable action without logging the notification body, review, or actionHash."},"execute":{"method":"POST","title":"Execute a supported action","path":"/api/v1/inbox/<NOTIFICATION_ID>/actions/<ACTION_ID>/executions","scope":"inbox:actions:execute","summary":"Executes the selected immutable action with its actionHash and a generated UUID Idempotency-Key.","responseNote":"The response wraps the execution. Log only its public id and status."},"status":{"method":"GET","title":"Poll execution status","path":"/api/v1/inbox/action-executions/<EXECUTION_ID>","scope":"inbox:action-executions:read","summary":"Returns current execution state, including canRetry and canRelease.","responseNote":"Poll the public execution UUID until the status is terminal."},"history":{"method":"GET","title":"Read execution history","path":"/api/v1/inbox/action-executions/<EXECUTION_ID>/history","scope":"inbox:action-executions:read","summary":"Returns bounded immutable events plus the matching current execution.","responseNote":"The latest event matches the current status; the example logs neither event details nor results."},"retry":{"method":"POST","title":"Retry an execution","path":"/api/v1/inbox/action-executions/<EXECUTION_ID>/retry","scope":"inbox:actions:execute","summary":"Retries the originating action only when the current response says canRetry.","responseNote":"A successful response wraps the updated execution id and status."},"release":{"method":"POST","title":"Release an execution","path":"/api/v1/inbox/action-executions/<EXECUTION_ID>/release","scope":"inbox:actions:execute","summary":"Releases the originating action only when the current response says canRelease.","responseNote":"A successful response wraps the updated execution id and status."},"delivery":{"method":"PATCH","title":"Update delivery","path":"/api/v1/inbox/<NOTIFICATION_ID>/delivery","scope":"inbox:delivery:write","summary":"Marks the runner's delivery read or unread, or archives or restores it.","responseNote":"The updated notification is returned; the example intentionally does not print its full body."}}},"knowledge":{"overviewTitle":"Sync documents with the Knowledge Hub from a trusted server","overviewBody":"Upload through a signed URL, create or replace items with the returned upload token, poll processing, and read items back — always with the runner's own visibility.","referenceTitle":"Knowledge Hub API reference","referenceDescription":"Expand an endpoint for a focused cURL, JavaScript, or Python example.","responseLabel":"Response","tokenTitle":"Upload tokens replace storage paths","tokenBody":"request-upload returns an uploadToken bound to this client. Send the bytes with only the returned upload headers, then create or replace with the token and a fresh Idempotency-Key. A token is consumed once.","replaceTitle":"Replace keeps the item","replaceBody":"PUT …/content swaps the bytes of a settled uploaded item: same id, externalRef, folder, audience and column values; text and embeddings are rebuilt.","endpointLabels":{"upload":"upload-and-create","status":"poll-processing","find":"find-by-external-ref","content":"read-content","download":"download-url","update":"update-metadata","audience":"set-audience","replace":"replace-content","search":"search","folders":"folders-and-move"},"operations":{"upload":{"method":"POST","title":"Upload and create an item","path":"/api/v1/knowledge/items","scope":"knowledge:items:write","summary":"Requests a signed upload, sends the bytes with the returned headers, and creates the item with the upload token.","responseNote":"Keep the item id; processing.status starts at pending."},"status":{"method":"GET","title":"Poll processing","path":"/api/v1/knowledge/items/<ITEM_ID>","scope":"knowledge:items:read","summary":"Reads the item until processing.status is ready or failed.","responseNote":"Extracted text and search results appear once the item is ready."},"find":{"method":"GET","title":"Find by externalRef","path":"/api/v1/knowledge/items?externalRef=<REF>","scope":"knowledge:items:read","summary":"Looks an item up by the reference your system assigned at creation.","responseNote":"Only items the runner can see are returned."},"content":{"method":"GET","title":"Read extracted content","path":"/api/v1/knowledge/items/<ITEM_ID>/content","scope":"knowledge:items:read","summary":"Reads a window of the extracted text.","responseNote":"text is null until processing is ready."},"download":{"method":"GET","title":"Download the file","path":"/api/v1/knowledge/items/<ITEM_ID>/download-url","scope":"knowledge:files:read","summary":"Mints a short-lived signed download URL for a storage-backed item.","responseNote":"Fetch downloadUrl without the API key."},"update":{"method":"PATCH","title":"Update metadata and column values","path":"/api/v1/knowledge/items/<ITEM_ID>","scope":"knowledge:items:write","summary":"Changes title, summary, tags, externalRef and typed column values by definition id.","responseNote":"Discover definitions with GET …/columns first."},"audience":{"method":"PUT","title":"Set the audience","path":"/api/v1/knowledge/items/<ITEM_ID>/audience","scope":"knowledge:audience:write","summary":"Makes an item private, workspace-visible, or visible to selected groups.","responseNote":"Requires the separate audience opt-in on the client."},"replace":{"method":"PUT","title":"Replace content in place","path":"/api/v1/knowledge/items/<ITEM_ID>/content","scope":"knowledge:items:write","summary":"Uploads a new version and swaps it into the existing item.","responseNote":"Same item id; a processing item is 409, a connector item 422."},"search":{"method":"POST","title":"Search","path":"/api/v1/knowledge/search","scope":"knowledge:search","summary":"Runs a semantic search over everything the runner can see.","responseNote":"Each call spends embedding tokens billed to the workspace."},"folders":{"method":"POST","title":"Folders and moves","path":"/api/v1/knowledge/folders","scope":"knowledge:folders:write","summary":"Lists and creates folders and moves items between them.","responseNote":"Moves are all-or-nothing."}}},"datasets":{"overviewTitle":"Keep typed datasets in sync from a trusted server","overviewBody":"Create a dataset with a unique key, wait until it is ready, sync rows with an idempotent upsert, page through them by key, and share it with groups — always with the runner's own access.","referenceTitle":"Datasets API reference","referenceDescription":"Expand an endpoint for a focused cURL, JavaScript, or Python example.","responseLabel":"Response","uniqueKeyTitle":"Upsert on the unique key for exactly-once sync","uniqueKeyBody":"rows/upsert with conflictColumns naming exactly the dataset's uniqueKey updates matching rows and inserts the rest, so a retried batch converges. A plain insert can duplicate rows after a lost response.","sharingTitle":"New datasets are private","sharingBody":"Without permissions only the runner and workspace owners and admins see a new dataset. PUT …/permissions replaces Read and Write together and needs the permissionsVersion you last read.","endpointLabels":{"create":"create-and-wait","query":"query-keyset","upsert":"upsert-sync","permissions":"share-dataset"},"operations":{"create":{"method":"POST","title":"Create a dataset and wait for ready","path":"/api/v1/datasets","scope":"dataset:definitions:write","summary":"Creates a dataset with columns, a unique key and Read/Write audiences, then polls it until a worker has created its table.","responseNote":"201 with status provisioning; the runner must be a workspace owner or admin."},"query":{"method":"POST","title":"Query rows with keyset paging","path":"/api/v1/datasets/<DATASET_ID>/rows/query","scope":"dataset:rows:read","summary":"Pages through every row by id with offset 0, so exports are not capped by the 100,000-row offset window.","responseNote":"{ data, hasMore }; stop on an empty page or hasMore false."},"upsert":{"method":"POST","title":"Sync rows idempotently","path":"/api/v1/datasets/<DATASET_ID>/rows/upsert","scope":"dataset:rows:write","summary":"Upserts the source in batches of up to 1,000 rows matched on the unique key, tagging each row with the current run.","responseNote":"{ inserted, updated }; deleting stale rows also needs the row-deletion opt-in."},"permissions":{"method":"PUT","title":"Share a dataset","path":"/api/v1/datasets/<DATASET_ID>/permissions","scope":"dataset:permissions:write","summary":"Reads the current audiences, then lets every member read and one group write.","responseNote":"Requires the dataset-sharing opt-in and a runner who may manage the dataset."}}},"tools":{"overviewTitle":"Manage MCP servers and Connected APIs from a trusted server","overviewBody":"The key acts as its runner user, exactly like that user on the Tools page. tools:read and tools:write list, create, change and test MCP servers and Connected APIs; deleting needs the separate tools:delete opt-in. The workspace needs the Tools feature (agent:integrations).","referenceTitle":"Tools API reference","referenceDescription":"Expand an endpoint for a focused cURL, JavaScript, or Python example.","responseLabel":"Response","credentialsTitle":"Credentials are write-only","credentialsBody":"Bearer tokens and credential headers can be set but are never returned: responses list only header names and whether a token is stored. A header map replaces the stored one, so resend every header you keep, and change a secret with PATCH rather than by retrying a create.","rulesTitle":"Endpoint and ownership rules","rulesBody":"A public MCP host needs https; a private host needs a private network target approved by a platform administrator. Connected APIs of built-in connectors such as Gmail or Exchange are read-only (403 PUBLIC_API_TOOL_CONNECTOR_MANAGED). Members manage only the tools they created, and deleting needs tools:delete.","endpointLabels":{"listServers":"list-mcp-servers","createServer":"create-mcp-server","testServer":"test-mcp-server","createApi":"create-connected-api"},"operations":{"listServers":{"method":"GET","title":"List MCP servers","path":"/api/v1/tools/mcp-servers","scope":"tools:read","summary":"Lists the MCP servers the runner can see, with their health and whether the runner may manage them.","responseNote":"{ data }, newest first; credentials appear only as header names and hasBearerToken."},"createServer":{"method":"POST","title":"Create an MCP server","path":"/api/v1/tools/mcp-servers","scope":"tools:write","summary":"Registers a remote MCP server with a bearer token read from the server environment and an Idempotency-Key for safe retries.","responseNote":"201 with health unknown; the server stays private to the runner until someone shares it in the app."},"testServer":{"method":"POST","title":"Test an MCP server's connection","path":"/api/v1/tools/mcp-servers/<SERVER_ID>/test","scope":"tools:write","summary":"Sends one request to the stored endpoint with the stored credentials and records the server's health.","responseNote":"200 with ok, statusCode and errorCode, also when the connection fails: read ok, not the HTTP status."},"createApi":{"method":"POST","title":"Create a Connected API","path":"/api/v1/tools/connected-apis","scope":"tools:write","summary":"Creates a manual REST operation with an orderId path parameter and an API key header read from the server environment.","responseNote":"201 with sourceType manual and the refKey that workflows reference (connected_api.<refKey>, derived from the name unless sent); the name must be unused and the endpoint a public https URL."}}},"connectors":{"overviewTitle":"Connect and manage API-key connectors from a trusted server","overviewBody":"The key acts as its runner user, exactly like that user under Knowledge sources in the app. connectors:read and connectors:write list connector types, connect API-key connectors such as sevdesk or SAP Business One and replace their credentials; disconnecting needs the separate connectors:delete opt-in. Responses wrap results in { data }.","referenceTitle":"Connectors API reference","referenceDescription":"Expand an endpoint for a focused cURL, JavaScript, or Python example.","responseLabel":"Response","credentialsTitle":"Credentials are write-only","credentialsBody":"API keys, passwords and secrets can be set but are never returned. Connecting a type you already connected returns 409 PUBLIC_API_CONNECTOR_ALREADY_CONNECTED with the existing connectionId: replace its credentials with PUT instead of connecting again.","rulesTitle":"Which connectors a key can connect","rulesBody":"Only API-key connectors can be connected by key: sevdesk, ALPHAPLAN 5 and 6, co*pilot, Lexware Office, Personio, SAP Business One and Gamma, plus the runner's own Exchange on-prem mailbox through /api/v1/connectors/exchange-onprem. OAuth connectors are connected in the app. A key can list them and disconnect most of them, such as Notion, Google Drive or OneDrive; those with their own disconnect in the app (HubSpot, Linear, Pipedrive, Canva, the calendar connectors, Microsoft Teams, Business Central and Power BI) return 422 PUBLIC_API_CONNECTOR_OPERATION_UNSUPPORTED. A connector your workspace has turned off returns 403 CONNECTOR_DISABLED, and disconnecting needs connectors:delete.","connectorLabel":"Connector","connectorTypes":{"sevdesk":{"label":"sevdesk","hint":"Needs a sevdesk API token from the sevdesk settings."},"alphaplan":{"label":"ALPHAPLAN 5","hint":"The operator must approve the base URL; the administration password is optional."},"alphaplan6":{"label":"ALPHAPLAN 6","hint":"The operator must approve the base URL; version 6 takes no administration password."},"copilot_events":{"label":"co*pilot","hint":"Use your tenant's base URL, https://copilot.events/<tenant>/api, and its API key."},"lexware_office":{"label":"Lexware Office","hint":"Needs a Lexware Office public API key."},"personio":{"label":"Personio","hint":"Needs the client ID and secret of a Personio custom integration."},"sap_business_one":{"label":"SAP Business One","hint":"Each member signs in with their own B1 user; you can connect several company databases, one connection per baseUrl and companyDb."},"gamma":{"label":"Gamma","hint":"Needs a Gamma API key."},"exchange_onprem":{"label":"Exchange on-prem","hint":"Connects your own mailbox through its own endpoint; send explicit IMAP and SMTP hosts."}},"endpointLabels":{"sourceTypes":"list-source-types","connect":"connect-connector","list":"list-connectors","rotate":"replace-credentials","disconnect":"disconnect-connector","exchangeConnect":"connect-exchange-onprem","exchangeRead":"read-exchange-onprem","exchangePassword":"update-exchange-onprem-password","exchangeDisconnect":"disconnect-exchange-onprem"},"operations":{"sourceTypes":{"method":"GET","title":"List connectable types","path":"/api/v1/connectors/source-types","scope":"connectors:read","summary":"Lists the connector types a key can connect, whether each is enabled in the workspace, and the credential fields each needs.","responseNote":"{ data } with sourceType, displayName, enabled, multiplePerUser and credentialFields (name, required, secret)."},"connect":{"method":"POST","title":"Connect {name}","path":"/api/v1/connectors","scope":"connectors:write","summary":"Connects {name} with secrets read from the server environment and an Idempotency-Key for safe retries. The example lists the optional fields in a comment.","responseNote":"201 with { data: connector }; 409 PUBLIC_API_CONNECTOR_ALREADY_CONNECTED returns the existing connectionId."},"list":{"method":"GET","title":"List connectors","path":"/api/v1/connectors?sourceType={sourceType}","scope":"connectors:read","summary":"Lists the connectors the runner can see, here filtered to {name}, with whether the runner may manage them or update their credentials.","responseNote":"{ data } with every visible connector, including OAuth connectors connected in the app."},"rotate":{"method":"PUT","title":"Replace the credentials","path":"/api/v1/connectors/<CONNECTION_ID>","scope":"connectors:write","summary":"Replaces the stored credentials of one connector; send every required field again. The id stays the same and chats use the new credentials, but workflow connector steps pinned to it stop with KNOWLEDGE_CONNECTOR_BINDING_STALE until you reselect the connection in the workflow.","responseNote":"200 with { data: connector }; credentials are never returned."},"disconnect":{"method":"DELETE","title":"Disconnect a connector","path":"/api/v1/connectors/<CONNECTION_ID>","scope":"connectors:delete","summary":"Removes the connection. Chats and workflows that use it stop working.","responseNote":"204 No Content; requires the connectors:delete opt-in."},"exchangeConnect":{"method":"POST","title":"Connect Exchange on-prem","path":"/api/v1/connectors/exchange-onprem","scope":"connectors:write","summary":"Connects the runner's own Exchange mailbox (one per runner) after an IMAP login. Send explicit IMAP and SMTP hosts: the API never autodiscovers them. A private host needs an approved private network target. ","responseNote":"201 with { data: mailbox }; 409 PUBLIC_API_CONNECTOR_ALREADY_CONNECTED if the runner already has a mailbox, 422 EXCHANGE_ONPREM_IMAP_FAILED if the login fails."},"exchangeRead":{"method":"GET","title":"Read the Exchange on-prem mailbox","path":"/api/v1/connectors/exchange-onprem","scope":"connectors:read","summary":"Reads the runner's own mailbox: its hosts, status and bindingGeneration.","responseNote":"200 with { data: mailbox }; the password is never returned."},"exchangePassword":{"method":"PUT","title":"Update Exchange on-prem password","path":"/api/v1/connectors/exchange-onprem","scope":"connectors:write","summary":"Verifies and stores a new mailbox password; omitted fields keep their values. bindingGeneration changes, so reselect the mailbox in workflows pinned to it.","responseNote":"200 with { data: mailbox }; the password is never returned."},"exchangeDisconnect":{"method":"DELETE","title":"Disconnect Exchange on-prem","path":"/api/v1/connectors/exchange-onprem","scope":"connectors:delete","summary":"Removes the runner's mailbox. Chats and workflows that use it stop working.","responseNote":"204 No Content; requires the connectors:delete opt-in."}}},"design":{"overviewTitle":"Design and run workflows from a trusted server","overviewBody":"Cache the node catalog once, create a draft from a JSON graph, validate and simulate it before activating, then read a run's node-level trace.","referenceTitle":"Workflow design API reference","referenceDescription":"Expand an endpoint for a focused cURL, JavaScript, or Python example.","responseLabel":"Response","idempotencyTitle":"Retry-safe workflow creation","idempotencyBody":"Generate a fresh UUID Idempotency-Key when creating a workflow. Reuse it only when retrying the exact same request body.","endpointLabels":{"nodes":"list-nodes","create":"create-workflow","check":"check-workflow","simulate":"simulate-workflow","trace":"read-trace"},"operations":{"nodes":{"method":"GET","title":"List available node types","path":"/api/v1/workflow-nodes","scope":"workflow:definitions:read","summary":"Returns the node catalog this workspace can use, including each node's config, input and output schema.","responseNote":"Cache the response to a file; the catalog changes rarely and every node build reads from it."},"create":{"method":"POST","title":"Create a draft workflow","path":"/api/v1/workflows","scope":"workflow:definitions:write","summary":"Creates a new draft workflow from a graph built against the cached node catalog.","responseNote":"Keep the returned id and graphRevision; every later update to this graph must send the current revision back."},"check":{"method":"POST","title":"Check a workflow","path":"/api/v1/workflows/<WORKFLOW_ID>/check","scope":"workflow:definitions:read","summary":"Compiles the saved graph and reports compile errors, readiness issues, and each node's resolved output shape.","responseNote":"valid is true only once compileErrors and readinessIssues are both empty; activating reruns this check."},"simulate":{"method":"POST","title":"Simulate a run","path":"/api/v1/workflows/<WORKFLOW_ID>/simulations","scope":"workflow:definitions:write","summary":"Runs the workflow with example input without requiring real trigger events, and returns its trace immediately.","responseNote":"The response is a full trace; keep run.id to re-read it later from the trace endpoint."},"trace":{"method":"GET","title":"Read a run's trace","path":"/api/v1/workflows/<WORKFLOW_ID>/runs/<RUN_ID>/trace","scope":"workflow:runs:trace","summary":"Returns every node's start, completion, or interrupt step for one run, in execution order.","responseNote":"Long values are truncated by maxValueChars; valuesTruncated says whether any step was cut."}}}},"view":{"newClient":"New client","loadingSr":"Loading personal API clients","errorTitle":"Could not load API clients","errorBody":"Retry to refresh clients and workflows for this profile.","workflowsErrorBody":"Workflows couldn't be loaded, so workflow names and pickers are unavailable. Your clients and keys still work.","retry":"Retry","emptyTitle":"No personal API clients yet","emptyBody":"Create a client to mint keys for workflows or chats from your profile.","fallbackClientTitle":"API client","tabsLabel":"API clients views","tabs":{"clients":"Clients","reference":"API reference","mcp":"MCP"}},"detail":{"capabilities":"What it can do","attributes":"Attributes","keys":"Keys","webhook":"Webhook","fullReference":"Full API reference","rateLimitValue":"{count} requests per minute, per key","attributeLabels":{"workflows":"Workflows","rateLimit":"Rate limit","expiresAt":"Expires","createdAt":"Created","lastUsedAt":"Last used"},"allWorkflows":"All workflows","noWorkflows":"No workflows","workflowNamesUnavailable":"Workflow names couldn't be loaded.","warningLabel":"Warning","never":"Never","neverUsed":"Never used","showAllScopes":"Show {count} scopes","hideScopes":"Hide scopes","scopeAreas":{"workflows":"Workflow runs","workflowDesign":"Workflow design","processes":"Processes","chats":"Chats","inbox":"Inbox","knowledge":"Knowledge Hub","datasets":"Datasets","tools":"Tools","connectors":"Connectors","connectorTemplates":"Connector templates","apps":"Apps","workspace":"Workspace","audit":"Audit","other":"Other"}},"mcp":{"title":"MCP server","intro":"Connect an AI agent to the Public API through the Model Context Protocol. It uses the same API key, scopes and limits as direct calls.","endpointLabel":"Endpoint","transportLabel":"Transport","transportValue":"Streamable HTTP, stateless · POST only · one JSON-RPC message per request","authLabel":"Authentication","promptIntro":"Paste this into Claude, ChatGPT or your coding agent. It explains how to connect, with or without an MCP client, and how to use the five tools. The key is not included.","copy":"Copy prompt for your agent","copied":"Prompt copied","copyFailed":"Couldn't copy the prompt. Select it below and copy it by hand.","promptLabel":"Prompt for your agent","configTitle":"Client configuration","configIntro":"Set API_KEY in your environment first; the examples read the key from it.","claudeCodeLabel":"Claude Code","cursorLabel":"Cursor (.cursor/mcp.json)"},"reference":{"indexLabel":"API reference sections","groups":{"basics":"Basics","endpoints":"Endpoints","machineReadable":"Machine-readable"},"sections":{"authentication":"Authentication","errors":"Errors","rateLimits":"Rate limits","idempotency":"Idempotency","workflows":"Workflow runs","workflowDesign":"Workflow design","chats":"Chats","inbox":"Inbox","knowledge":"Knowledge Hub","datasets":"Datasets","tools":"Tools","connectors":"Connectors"},"links":{"openapi":"OpenAPI document","docs":"Docs (Markdown)","llms":"llms.txt","newTab":"(opens in a new tab)"},"examples":{"noClients":"Examples use `$API_KEY`. You don't have a client yet.","genericOnly":"Examples use `$API_KEY`.","createClient":"Create a client","fillFor":"Fill examples for","generic":"No client (generic examples)"},"needsScope":"needs `{scope}`","authentication":{"intro":"Every request authenticates with a key of one of your API clients.","headerColumn":"Header","valueColumn":"Value","required":"Required","oneHost":"A key works only in the environment (deployment) it was created in, and it is shown only once, when you mint it.","server":"Keep it on a server, for example in an `API_KEY` environment variable. Never put it in browser code or commit it."},"errors":{"intro":"Every error response is JSON with this envelope:","envelopeLabel":"Error envelope","optional":"`requestId` and `details` are not always present.","branch":"Branch on `error.code` (and on `error.details.code` where present), not on the message. Include `requestId` when you report a problem."},"rateLimits":{"perKey":"Limits apply per key: each key may send as many requests per minute as its client allows.","clientValue":"Each key of {name} may send {count} requests per minute.","retryAfter":"On `429`, wait the number of seconds in the `Retry-After` response header, then retry.","backoff":"Retry other errors only when they say `\"retryable\": true`, with exponential backoff. Don't retry when `retryable` is `false`, even on a `5xx`."},"idempotency":{"send":"Send a fresh UUID in the `Idempotency-Key` header on every POST, PUT or PATCH that changes data.","required":"Several endpoints reject a request without it with a `400 VALIDATION_ERROR` whose `error.details.code` is `PUBLIC_API_IDEMPOTENCY_KEY_REQUIRED`; chat interaction routes return that code as `error.code`.","length":"Most endpoints accept any key of up to 255 characters, but Inbox endpoints accept only a UUID, so a UUID always works.","retry":"Reuse the same key when you retry that request; use a new key for a new request."}},"toasts":{"mintFailed":"Could not mint an API key.","updateFailed":"Could not update the API client.","revokeFailed":"Could not revoke the API key."},"drawer":{"createFailed":"Could not create the API client.","untitledClient":"Untitled API client","title":"Create personal API client","description":"Choose capabilities and allowed workflow targets, then mint the first key.","identity":"Identity","identityHint":"This name appears in audit and key management views.","clientName":"Client name","clientNamePlaceholder":"Webhook runner","descriptionLabel":"Description","descriptionPlaceholder":"Optional purpose or owner note","limits":"Limits and expiry","limitsHint":"Key expiry defaults to the client expiry when left empty.","rateLimit":"Rate limit","clientExpiry":"Client expiry","firstKeyExpiry":"First key expiry","review":"Review","clientCreatedRetry":"Client created. Retry key creation to reveal the key.","retryKeyCreation":"Retry key creation","createAndShow":"Create client and show key"},"access":{"workflowRuns":"Workflow runs","workflowRunsHint":"Start workflow runs, follow their progress, and answer approvals or selections a paused run waits for.","workflowTargets":"Workflow targets","allWorkflows":"All accessible workflows","workflowWarning":"This client can run every workflow your profile can access.","chats":"Chats","chatsHint":"Create and read chats, send messages, stream responses, work with attached files, resolve pending interactions, and cancel turns.","chatSecrets":"Allow secret responses","chatSecretsHint":"Let this client provide values for secret requests. Values are persisted as credentials and require a separate scope.","inbox":"Inbox","inboxHint":"Read Inbox notifications, update delivery, execute supported actions, and inspect execution status and history.","members":"Members and groups","membersHint":"Read the workspace member and group directory, including member email addresses. Listing group members also needs an owner or admin runner.","groupsWrite":"Manage groups","groupsWriteHint":"Create, rename and delete workspace groups and add or remove their members. Needs an owner or admin runner.","profiles":"Profile fields","profilesHint":"Read the workspace's profile field definitions and the runner's own profile values.","profilesWrite":"Edit own profile","profilesWriteHint":"Update the runner's own profile values.","profilesAdmin":"Manage profile fields and members","profilesAdminHint":"Change the profile field definitions and read or update any member's values. Needs an owner or admin runner.","processes":"Processes","processesHint":"Read and change process definitions, check and publish them, start and move items, post events and read views. Needs access to all workflows.","processesTargetWarning":"Processes need access to all workflows.","knowledge":"Knowledge Hub","knowledgeHint":"Upload and replace documents, read items, extracted text and files, search, edit metadata and column values, and manage folders — with this client's runner permissions.","knowledgeDelete":"Allow deleting items","knowledgeDeleteHint":"Let this client delete Knowledge Hub items. Deletion is irreversible and requires a separate scope.","knowledgeAudience":"Allow changing who can see items","knowledgeAudienceHint":"Let this client change an item's visibility or group audience. This can broaden access and requires a separate scope.","datasets":"Datasets","datasetsHint":"Read datasets and their fields, query and write rows, create datasets and change their metadata and schema, and search datasets — with this client's runner permissions. Writes follow each dataset's sharing; only workspace owners and admins can create datasets.","datasetImports":"Allow importing Knowledge Hub files","datasetImportsHint":"Let this client import Knowledge Hub files into datasets or create a dataset from a file. This also lets it download Knowledge Hub files its runner can see. Replace-mode imports also need row deletion.","datasetRowsDelete":"Allow deleting rows","datasetRowsDeleteHint":"Let this client delete rows one by one or in bulk, remove duplicates and set a retention period that deletes old rows. Deleted rows cannot be restored; requires a separate scope.","datasetDefinitionsDelete":"Allow deleting datasets","datasetDefinitionsDeleteHint":"Let this client delete whole datasets, including every row, drop columns and change column types. Deletion is irreversible and requires a separate scope.","datasetPermissions":"Allow changing dataset sharing","auditEvents":"Allow reading its own activity log","auditEventsHint":"Let this client list the activity log of its own API calls (actions, targets, outcomes and request IDs; no IP addresses or request contents). It cannot see other clients' activity; requires a separate scope.","datasetPermissionsHint":"Let this client change who can read and write a dataset. Only datasets the runner may manage (as creator or workspace owner or admin) can be changed; requires a separate scope.","tools":"Tools (MCP servers and Connected APIs)","toolsHint":"List and read MCP servers, Connected APIs and their providers, create and change them, and test MCP server connections — with this client's runner permissions. Credentials can be set but are never returned; members manage only tools they added, workspace owners and admins manage all.","toolsDelete":"Allow deleting tools","toolsDeleteHint":"Let this client delete MCP servers and Connected APIs. Deletion is irreversible and requires a separate scope.","connectors":"Connectors (Knowledge sources)","connectorsHint":"Lets the key list, connect and re-credential API-key connectors such as sevdesk or SAP Business One as the runner. Connectors that need a browser sign-in (OAuth) are connected in the app.","connectorsDelete":"Allow disconnecting connectors","connectorsDeleteHint":"Disconnecting removes the connection and stops chats and workflows that use it.","connectorTemplates":"Allow setting up connector templates","connectorTemplatesHint":"Configure, test, enable and disable the workspace's connector templates. Works only while you are a workspace owner or admin.","apps":"Apps","appsHint":"Lets the key list, create, edit, check, publish and export configured apps as the runner, under each app's own edit and manage audiences. The workspace needs configured apps switched on.","appsRun":"Run apps","appsRunHint":"Read app data views and run app actions as the runner, with the same checks as the app page. Writes and workflow runs still need a confirmation token.","appsDelete":"Delete apps","appsDeleteHint":"Delete configured apps the runner manages. Deleting cannot be undone.","appsPermissions":"Manage app access","appsPermissionsHint":"Change who may use, edit and manage an app, its screen and action audiences, and its delegated dataset grants. Grants also need a workspace owner or admin who holds that dataset access.","workflowDesign":"Design workflows","workflowDesignHint":"Create, read and change workflow definitions, validate and simulate them, and read node-level run traces.","workflowDesignTargetWarning":"Creating workflows needs access to all workflows.","workflowDesignSelfApprovalWarning":"This key can approve write steps in workflows it designs itself. Ask before approving.","workflowPermissions":"Allow changing workflow sharing","workflowPermissionsHint":"Let this client change who can read, change and run a workflow. Only workflows the runner may manage (as creator or workspace owner or admin) can be changed; requires a separate scope."},"editAccess":{"title":"Edit API client access","description":"Change the capabilities available to {name}.","activeKeysWarning":"Changes apply immediately to every active key for this client.","save":"Save access","saving":"Saving access","saveFailed":"Could not update API client access."},"targetPicker":{"allHint":"Applies to every target this profile can access.","allEnabled":"All-access mode is enabled.","searchLabel":"Search {label}","searchPlaceholder":"Search by name or ID","noMatches":"No matching targets.","selectedSummary":"{selected} selected from {total} available","idLabel":"ID {id}"},"receipt":{"allActions":"List, create, read, and stream {target}","allActionsWithResolve":"List, create, read, stream, and answer paused runs of {target}","someActions":"{actions} {target}","actionList":"list","actionCreate":"create","actionRead":"read","actionStream":"stream","actionResolve":"answer paused runs of","targetSelectedWorkflows":"selected workflows","targetAllWorkflows":"all accessible workflows","countWorkflowsZero":"no workflows","countWorkflowsOne":"1 workflow","countWorkflowsOther":"{count} workflows","targetWithLegacy":"{workflows}; legacy automation targets retained (retired)","legacyRetired":"Legacy automation capability is retired","legacyTargets":"no workflows; legacy automation targets retained (retired)","chatAllActions":"Create and read chats, send messages, stream responses, manage files, resolve pending interactions, and cancel turns","chatSomeActions":"Chat access: {actions}","chatActionCreate":"create chats","chatActionRead":"read chats","chatActionMessage":"send messages","chatActionStream":"stream responses","chatActionUpload":"upload files","chatActionDownload":"download files","chatActionInteractionRead":"review pending interactions","chatActionInteractionResolve":"resolve pending interactions","chatActionCancel":"cancel turns","chatSecretsEnabled":"Secret responses are enabled","chatSecretsDisabled":"Secret responses are disabled","inboxAllActions":"Read Inbox notifications, update delivery, execute supported actions, and read execution status and history","inboxSomeActions":"Inbox access: {actions}","membersAccess":"Read workspace members and groups","groupsWriteEnabled":"Create, change and delete workspace groups and their members","profilesRead":"Read profile fields and the runner's own values","profilesWrite":"Read profile fields and update the runner's own values","profilesAdmin":"Manage profile fields and every member's values","processAllActions":"Read and change processes, their items and events, and read process views","processSomeActions":"Partial process access: {scopes}","inboxActionRead":"read notifications","inboxActionDelivery":"update delivery","inboxActionExecute":"execute supported actions","inboxActionExecutionRead":"read execution status and history","knowledgeAllActions":"Upload, replace, read and search Knowledge Hub items, edit metadata, and manage folders","knowledgeSomeActions":"Knowledge Hub access: {actions}","knowledgeActionRead":"read items and content","knowledgeActionWrite":"upload, replace and edit items","knowledgeActionDownload":"download files","knowledgeActionFoldersRead":"read folders","knowledgeActionFoldersWrite":"manage folders","knowledgeActionSearch":"search","knowledgeDeleteEnabled":"Item deletion is enabled","knowledgeDeleteDisabled":"Item deletion is disabled","knowledgeAudienceEnabled":"Audience changes are enabled","knowledgeAudienceDisabled":"Audience changes are disabled","datasetAllActions":"Read and query datasets, write rows, create and change datasets and their schema, and search datasets","datasetSomeActions":"Dataset access: {actions}","datasetActionDefinitionsRead":"read datasets","datasetActionDefinitionsWrite":"create and change datasets","datasetActionRowsRead":"read and query rows","datasetActionRowsWrite":"write rows","datasetActionSearch":"search datasets","datasetImportsEnabled":"Knowledge Hub file imports are enabled, including file downloads","datasetImportsDisabled":"Knowledge Hub file imports are disabled","datasetRowsDeleteEnabled":"Row deletion is enabled","datasetRowsDeleteDisabled":"Row deletion is disabled","datasetDefinitionsDeleteEnabled":"Dataset deletion is enabled","datasetDefinitionsDeleteDisabled":"Dataset deletion is disabled","datasetPermissionsEnabled":"Changing dataset sharing is enabled","datasetPermissionsDisabled":"Changing dataset sharing is disabled","toolsAllActions":"Read, create and change MCP servers and Connected APIs, read their providers, and test MCP server connections","toolsSomeActions":"Tools access: {actions}","toolsActionRead":"read tools","toolsActionWrite":"create, change and test tools","toolsDeleteEnabled":"Tool deletion is enabled","toolsDeleteDisabled":"Tool deletion is disabled","connectorsAllActions":"List connector types and connectors, connect API-key connectors and replace their credentials","connectorsSomeActions":"Connectors access: {actions}","connectorsActionRead":"list connectors","connectorsActionWrite":"connect and re-credential connectors","connectorsDeleteEnabled":"Disconnecting connectors is enabled","connectorsDeleteDisabled":"Disconnecting connectors is disabled","connectorTemplatesManage":"Can set up connector templates (owner or admin)","connectorTemplatesRead":"Can read connector templates (owner or admin)","appsAllActions":"List, create, edit, check, publish and export configured apps","appsSomeActions":"Apps access: {actions}","appsActionRead":"list, read and export apps","appsActionWrite":"create, edit, check and publish apps","appsRunEnabled":"Running apps is enabled","appsRunDisabled":"Running apps is disabled","appsDeleteEnabled":"Deleting apps is enabled","appsDeleteDisabled":"Deleting apps is disabled","appsPermissionsEnabled":"Managing app access is enabled","appsPermissionsDisabled":"Managing app access is disabled","auditEventsEnabled":"Reading its own activity log is enabled","workflowDesignAccess":"Design workflows: read and change definitions, check, simulate, read run traces","workflowDesignSelfApprovalWarning":"This key can approve write steps in workflows it designs itself. Ask before approving.","workflowPermissionsEnabled":"Changing workflow sharing is enabled","rateLimit":"{count}/min","expiresBadge":"Expires {value}"},"ledger":{"statusActive":"Active","statusDisabled":"Disabled","statusRevoked":"Revoked","statusExpired":"Expired","mintAria":"Mint key for {name}","minting":"Minting","mintKey":"Mint key","mintRetiredTitle":"Remove retired automation scopes before minting a key.","editAccess":"Edit access","editAccessAria":"Edit access for {name}","disable":"Disable","enable":"Enable","statusAria":"{label} {name}","updating":"Updating"},"keyRow":{"noExpiry":"No expiry","neverUsed":"Never used","revokeAria":"Revoke key {publicId}","revokeConfirmTitle":"Revoke API key?","revokeConfirm":"Revoke key {publicId}? This key will stop working immediately.","revoking":"Revoking","revoke":"Revoke","colKey":"Key","colStatus":"Status","colCreated":"Created","colExpires":"Expires","colLastUsed":"Last used","tableCaption":"API keys for {name}"},"webhook":{"description":"Receive a signed notification when a workflow run started with this client finishes, fails, is canceled or needs a response. The payload only names the run; fetch details with the API.","urlLabel":"Endpoint URL (https)","eventsLabel":"Events","events":{"completed":"Run completed","failed":"Run failed","canceled":"Run canceled","requires_action":"Run needs a response","ping":"Test event"},"enabledLabel":"Send events","save":"Save webhook","saved":"Webhook saved","saveFailed":"Could not save the webhook.","sendTest":"Send test","testQueued":"Test event queued","testFailed":"Could not queue a test event.","rotateSecret":"Rotate secret","rotateFailed":"Could not rotate the signing secret.","remove":"Remove","removed":"Webhook removed","removeFailed":"Could not remove the webhook.","loadFailed":"Could not load the webhook for this client.","recentDeliveries":"Recent deliveries","noDeliveries":"No deliveries yet.","attempts":"{count} attempts","status":{"pending":"Pending","delivered":"Delivered","failed":"Failed"},"secretDialog":{"copiedToast":"Signing secret copied","copyFailed":"Could not copy the secret. Select and copy it manually.","titleSave":"Save this signing secret","titleUnavailable":"Signing secret unavailable","descriptionSave":"The webhook signing secret for {title} is shown once. Store it before closing this dialog.","descriptionUnavailable":"No signing secret was returned for {title}. Rotate the secret to receive a new one.","oneTimeSecret":"One-time secret","copyButton":"Copy","unavailableTitle":"Secret unavailable","unavailableBody":"This dialog cannot confirm a saved secret because none is available.","acknowledge":"I saved this secret. I understand it will not be shown again.","done":"Done"}},"secretDialog":{"copiedToast":"API key copied","copyFailed":"Could not copy key. Select and copy it manually.","titleSave":"Save this API key","titleUnavailable":"API key secret unavailable","descriptionSave":"This secret for {title} is shown once. Store it before closing this dialog.","descriptionUnavailable":"No secret was returned for {title}. Create a new key to receive a one-time secret.","oneTimeSecret":"One-time secret","copyButton":"Copy","copiedButton":"Copied","unavailableTitle":"Secret unavailable","unavailableBody":"This dialog cannot confirm a saved key because no one-time secret is available.","bearerHeader":"Bearer header","acknowledge":"I saved this key. I understand it will not be shown again.","done":"Done"},"validation":{"nameRequired":"Name is required.","selectCapability":"Select at least one capability.","selectWorkflow":"Select at least one workflow or choose all accessible workflows.","rateLimitRange":"Rate limit must be between 1 and 1,200 requests per minute.","invalidDateTime":"Use a valid {label} date and time.","mustBeFuture":"{label} must be in the future."},"console":{"railLabel":"API clients","backToList":"All clients","keyCountOne":"1 key","keyCountOther":"{count} keys","railCaption":"Clients · {count}","keys":{"intro":"A key is shown only once, when you mint it. To rotate without downtime, mint a new key before you revoke the old one.","empty":"This client has no keys yet."},"agentPrompt":{"intro":"Paste this into Claude, ChatGPT or your coding agent so it knows how to call the API with this client. It doesn't include the key.","copy":"Copy prompt for your agent","copied":"Prompt copied","copyFailed":"The prompt couldn't be copied. Select it under Show prompt and copy it by hand.","show":"Show prompt","hide":"Hide prompt","label":"Prompt for your agent"}},"summary":{"full":"Full access","runWorkflows":"Run workflows","syncKnowledge":"Sync Knowledge Hub","custom":"Custom","customOne":"Custom, 1 area","customOther":"Custom, {count} areas","none":"No access"},"create":{"stepOf":"Step {current} of {total}","stepsLabel":"Steps","steps":{"name":"Name","access":"Access","review":"Review"},"continue":"Continue","back":"Back","presetsLegend":"What should this client be able to do?","presets":{"runWorkflows":{"label":"Run workflows","hint":"Start workflow runs, follow their progress and answer paused runs."},"syncKnowledge":{"label":"Sync Knowledge Hub","hint":"Upload, replace and organize Knowledge Hub files, and keep datasets in step with another system."},"full":{"label":"Full access","hint":"Everything except deleting data and changing permissions. Use it only for systems you fully trust."},"custom":{"label":"Custom","hint":"Choose each area yourself."}},"reviewIntro":"Check what this client can do before you create it. You can change its access later."}},"members":{"label":"Members","description":"Invite people, set roles, and organize groups.","toolbar":{"ariaLabel":"Members view","members":"Members","invitations":"Invitations","groups":"Groups"},"actions":{"invite":"Invite member","createGroup":"Create group"},"invitations":{"loadFailed":"Couldn't load invitations.","retry":"Retry"},"joinPolicy":{"title":"How people join","domainJoin":"Domain join","domainJoinHint":"Anyone with an address from a configured domain joins automatically.","domainJoinNoDomain":"No domain is configured for this workspace.","inviteOnly":"Invite only","inviteOnlyHint":"Only people you invite can join.","closed":"Closed","closedHint":"No one new can join, and invitations are paused.","rolesTitle":"Role for people joining by domain","configurationChanged":"The domain configuration changed. Reload and try again.","save":"Save","saving":"Saving…","saved":"Join policy updated.","saveFailed":"Couldn't update the join policy.","loadFailed":"Couldn't load the join policy.","inviteBlocked":"This workspace is closed to new members."},"mfaPolicy":{"title":"Multi-factor authentication","description":"Set the workspace requirement and trusted-device window.","require":"Require MFA for everyone","equalMethods":"Authenticator apps and passkeys are equally valid. Members can use any method they have configured.","trustLabel":"Remember trusted devices for","off":"Off","days":"{count} days","noGrace":"There is no grace period. Members without MFA enroll at their next sign-in.","readOnly":"Only workspace owners and admins can change this policy.","noMethod":"MFA cannot be required because no authentication method is available on this deployment.","save":"Save MFA policy","saving":"Saving…","dirty":"MFA policy has unsaved changes","saved":"MFA policy updated.","saveFailed":"Couldn't update the MFA policy.","loadFailed":"Couldn't load the MFA policy."},"memberProfile":{"action":"Edit profile fields","title":"Profile fields for {email}","description":"These values belong to the member and are used by workflows that read their profile.","emptyTitle":"No profile fields yet","emptyDescription":"Set up fields under Member profile fields first.","saved":"Profile fields saved","saveFailed":"Couldn't save the profile fields.","loadFailed":"Couldn't load this member's profile fields."},"mfaReset":{"action":"Reset MFA","confirmTitle":"Reset this member's MFA?","confirmDescription":"This removes {email}'s authentication methods, trusted devices, and active sessions. They must sign in and enroll again if policy requires it.","saved":"The member's MFA was reset.","failed":"The member's MFA could not be reset.","ownerRecovery":"Owner recovery is available only to a platform administrator.","status":{"enabled":"MFA enabled","enrollment_required":"Enrollment required","not_enabled":"MFA not enabled"}}},"memberProfileFields":{"label":"Member profile fields","description":"Define the profile fields every member fills in."},"aiModels":{"label":"AI models & services","description":"Manage AI models, review service providers and hosting, and set agent instructions."},"skills":{"label":"Skills","description":"Create and manage custom agent skills for your workspace."},"dataPrivacy":{"label":"Data privacy","description":"Control how personal data and secrets are handled before content reaches model providers."},"apps":{"label":"Apps","description":"Who can see which app views.","empty":"No enabled app has views whose access can be restricted."},"dataExport":{"label":"Data export","description":"Create a portable, permission-scoped ZIP of workspace data you can access.","actions":{"create":"Create export","creating":"Creating export…","cancel":"Cancel export","cancelling":"Cancelling…","download":"Download ZIP","preparingDownload":"Preparing download…","downloadExpired":"Download expired","retry":"Create new export"},"unavailable":{"title":"Data export is unavailable","description":"Workspace exports are not available on this server. Existing workspace data is unchanged."},"disabled":{"title":"New exports are temporarily disabled","description":"You can still review and download existing exports while creation is unavailable."},"scope":{"title":"What the ZIP contains","description":"This is an operational export, not a full backup, legal data-subject request, or import file.","permissionTitle":"Limited to data you can access","permissionDescription":"The export uses your current workspace permissions when it is generated.","includesTitle":"Included","includesWorkspace":"Workspace metadata, portable workflows, and dataset rows","includesKnowledge":"Accessible Knowledge records and originals stored by Uhrwerk.AI","includesPersonal":"Your own chats and files","excludesTitle":"Not included","excludesPrivate":"App credentials and other members' private chats","excludesOperations":"Audit, billing, and internal operational data","excludesExternal":"External originals not stored by Uhrwerk.AI; these are listed as warnings and providers are not crawled","formatsTitle":"Formats","formatsArchive":"One ZIP file with a manifest.json that records the format version, exclusions, warnings and a SHA-256 checksum per entry","formatsRecords":"Records such as workspace metadata, workflows, dataset rows, Knowledge entries and chats as JSON or NDJSON","formatsOriginals":"Stored originals in their original file format","formatsPaths":"Archive paths use numeric IDs instead of file names","switching":"To switch to another provider or to have your data deleted, send a request in text form to kontakt@uhrwerk.ai.","secrets":"User-authored content is exported as stored. Secrets written into content are not automatically redacted."},"limits":"ZIP limit: {size} and {entries} entries · downloads expire after {hours} hours. The manifest can contain at most 20,000 warning records, separately from the ZIP entry limit.","history":{"title":"Your exports","description":"Only exports requested by you for this workspace appear here. Cancelling stops ZIP generation only and never deletes workspace data.","empty":"No exports have been requested yet.","progress":"{records} records · {files} files · {bytes} collected","size":"ZIP {size}","warnings":"{count} warnings"},"statuses":{"queued":"Queued","processing":"Processing","ready":"Ready","failed":"Failed","cancelled":"Cancelled","expired":"Expired"},"errors":{"active":"Another workspace export is already running. Wait for it to finish or cancel it before trying again.","rateLimit":"This workspace has reached its limit of three accepted exports in 24 hours. Try again later.","generic":"The export could not be created. Try again.","action":"That export action could not be completed. Refresh and try again.","codes":{"EXPORT_ACCESS_CHANGED":"Access changed while the ZIP was being built","EXPORT_SOURCE_CHANGED":"Source data changed during collection","EXPORT_SOURCE_UNAVAILABLE":"A required source was unavailable","EXPORT_LIMIT_EXCEEDED":"The export exceeded its size or entry limit","EXPORT_DEADLINE_EXCEEDED":"The export took too long","EXPORT_GENERATION_FAILED":"The ZIP could not be generated"}},"confirm":{"title":"Create workspace export?","description":"This creates a permission-scoped ZIP with accessible workspace data and your own chats and files. It excludes app credentials, other members' private chats, audit, billing, and internal data.","confirm":"Create ZIP export","cancel":"Not now"},"pagination":{"previous":"Previous","next":"Next","page":"Page {page}","ariaLabel":"Export history pages"}},"learnedKnowledge":{"label":"Learned business knowledge","description":"What the AI has learned about your company from chats and indexed knowledge."},"planBilling":{"label":"Plan & statements","description":"Review your contracted package and finalized billing statements.","tabs":{"ariaLabel":"Plan & statements view","plan":"Plan","statements":"Statements","billingDetails":"Billing details"},"billingDetails":{"loading":"Billing details are loading","loadFailed":"Billing details could not be loaded.","retryLoad":"Retry billing details","futureOnly":"Changes apply to future invoices only. Issued invoices keep their original recipient details.","version":"Profile version {version}","vatEvidence":{"label":"VAT evidence","ariaLabel":"VAT evidence","valid":"VAT ID validated by VIES","invalid":"VAT ID is invalid","pending":"VAT validation pending","unavailable":"VAT validation temporarily unavailable","notRequired":"VIES validation not needed"},"recipient":{"title":"Legal recipient","description":"The legal entity named as the recipient on future invoices."},"address":{"title":"Registered address","description":"Use the registered billing address for the receiving entity."},"routing":{"title":"VAT and billing routing","description":"VAT treatment and evidence are derived by the server from these identity details."},"fields":{"legalName":"Legal name","tradingName":"Trading name","streetLine1":"Address line 1","streetLine2":"Address line 2","postalCode":"Postal code","city":"City","region":"State or region","country":"Country","vatId":"VAT ID","vatIdHelp":"Include the two-letter country prefix. Validation status comes from VIES.","taxNumber":"Tax number","email":"Billing email","buyerReference":"Buyer reference"},"countries":{"placeholder":"Select a country"},"dirty":"You have unsaved billing details","save":"Save billing details","saving":"Saving billing details…","discard":"Discard changes","saved":"Billing details saved. They will be used for future invoices.","failed":"Billing details could not be saved. Try again.","conflict":"These billing details changed elsewhere. Reload the latest version, review it, and save again.","reload":"Reload billing details"},"discounts":{"percentageOff":"{percentage}% off","builtInTargets":{"base":"Base price","seats":"Seats","aiUsage":"AI usage"},"organisationTarget":"Entire organisation","startsCurrent":"Starts current billing period","startsNext":"Starts next billing period","permanent":"Permanent","remaining":"{count} billing periods remaining","states":{"scheduled":"Scheduled","active":"Active","completed":"Completed","cancelled":"Cancelled","ended":"Ended"}},"plan":{"code":"Package code","revision":"Revision {revision}","status":"Status","statuses":{"active":"Active","suspended":"Suspended","cancelled":"Cancelled","ended":"Ended"},"perMonthNet":"base price per month (net), before usage, fees, discounts, and credit","includedAiUsage":"Included AI credits","seats":"Seats","seatPolicy":{"includedThenPaid":"{count} seats included in the base price, then {price} per additional seat","perSeat":"{price} per seat","minimumIncluded":"At least {count} included seats","includedRange":"{minimum}–{maximum} included seats"},"packageDetails":"Package details","features":"Included features","connectors":"Included connectors","noneIncluded":"None included","allowances":"Usage allowances","allowance":{"unlimited":"Unlimited allowance","quantity":"{count} included · {price} per {unit} extra","metered":"{price} per {unit}"},"additionalFees":"Additional package fees","feeCadence":{"monthly":"{amount} monthly","once_on_activation":"{amount} on activation"},"currentPeriod":"Current period","nextStatementToday":"Next statement today","nextStatementOne":"Next statement in {count} day","nextStatementOther":"Next statement in {count} days","anniversary":"Anniversary date","customManagedTitle":"Customer Enterprise","customManagedDescription":"managed by platform admin","scheduledPackageChange":"A package change is scheduled for {date}.","scheduledCancellation":"The package is scheduled to end on {date}."},"credit":{"title":"Platform credits","description":"Retained platform value available for eligible package charges.","available":"Available balance","nearestExpiryLabel":"Nearest expiry","nearestExpiry":"{amount} expires on","noExpiry":"No upcoming expiry","packageDescription":"Available credits are applied when an eligible platform package statement is finalized.","dormantDescription":"These credits are retained and will apply if an eligible platform package statement is finalized later. They are not applied automatically while Enterprise billing is managed by the platform admin.","loading":"Platform credits are loading","loadFailed":"Platform credits could not be loaded.","retry":"Retry credit","history":{"title":"Credit history","grant":"Credits granted","state":{"available":"Available","partiallyConsumed":"Partially used","consumed":"Used","revoked":"Revoked","expired":"Expired"},"revocation":"Credits revoked","application":"Applied to billing statement","expires":"Expires {date}","showing":"Showing {shown} of {total} history entries","pagination":"Credit history pages","previous":"Previous history page","next":"Next history page","page":"{page} / {totalPages}","emptyTitle":"No credit history yet","emptyDescription":"Grants, revocations, and statement applications will appear here."}},"statements":{"title":"Billing statements","description":"Finalized net billing statements for completed commerce periods.","documentNotice":"Billing statements show the charge ledger. Published legal invoices are separate immutable ZUGFeRD PDFs.","vatNotice":"All amounts shown are net. Applicable VAT is added to the issued invoice based on your billing country and tax status.","number":"Statement","period":"Service period","status":"Status","finalized":"Finalized","void":"Void","finalizedAt":"Finalized at","netAmount":"Net amount","netSubtotal":"Net subtotal","netTotal":"Net total","grossCharges":"Gross charges","factualPackageCharges":"Subtotal before discounts","discounts":"Discounts","discountTarget":"{percentage} off {target}","correctionCharges":"Correction charges","combinedCharges":"Combined charges","platformCreditApplied":"Platform credit applied","amountDue":"Amount due (net)","statementTotals":"Statement totals","lineDescription":"Description","quantity":"Quantity","includedQuantity":"Included quantity","chargeableQuantity":"Billable quantity","quantityContext":"Quantity: {quantity} · Included: {included}","unitAmount":"Unit price","packageRevision":"Package revision","packageRevisionValue":"Package revision {revision}","invoiceStates":{"pending":"Invoice pending","blocked":"Invoice blocked","rendering":"Invoice rendering","published":"Invoice published","failed":"Invoice failed"},"invoiceGuidance":{"pending":"Invoice issuance is queued.","rendering":"The invoice PDF is being generated and validated.","blocked":"Invoice issuance needs billing details or tax evidence before it can continue.","failed":"Invoice generation failed. A platform administrator can retry it.","published":"The published invoice is available for download."},"view":"View {number}","viewLabel":"View","billingStatementLabel":"Billing statement","downloadStatement":"Download statement (CSV)","statementDownloadFailed":"The statement could not be downloaded.","downloadInvoice":"Download invoice (ZUGFeRD PDF)","downloadFailed":"The published invoice could not be downloaded. Try again.","detailTitle":"Billing statement {number}","emptyTitle":"No billing statements yet","emptyDescription":"Billing statements appear after a commerce period is finalized.","loadFailed":"Billing statements could not be loaded.","detailLoadFailed":"This billing statement could not be loaded.","previous":"Previous","next":"Next","close":"Close","voidedAt":"Voided at","voidReason":"Void reason","pendingCorrectionCharges":"{amount} pending future charges will be included in the next finalized package statement.","carriedCorrectionCharges":"Carried-forward correction charges","carriedCorrectionChargesDescription":"Charges corrected after an earlier statement was finalized and included here in full.","fromStatement":"From {number}","correctedAt":"Corrected","sourceCorrections":"Corrections to this statement","creditCorrection":"Credit correction","chargeCorrection":"Future charge correction","creditCorrectionExplanation":"This creates future platform credit; it does not rewrite the finalized statement.","chargeCorrectionPending":"Pending inclusion in the next finalized package statement.","chargeCorrectionAppliedPrefix":"Applied to"}},"usage":{"label":"Usage & limits","description":"Set credit limits and review usage across the workspace."},"activity":{"label":"Activity","description":"Review the audit event log and message feedback.","toggle":{"ariaLabel":"Activity view","whatHappened":"What happened","userFeedback":"User feedback"},"audit":{"summary":{"events":"Events","success":"Succeeded","failures":"Failed or denied","outbox":"Not yet delivered","outboxFailed":"{count} failed to deliver","latest":"Latest {date}"},"categories":{"auth":"Authentication","platform":"Platform","workspace":"Workspace","policy":"Policy","connector":"Connector","approval":"Approval","commerce":"Billing","chat":"Chat","data":"Data access","dataset":"Dataset","workflow":"Workflow","agent":"AI agent","inbox":"Inbox","sandbox":"Sandbox","knowledge":"Knowledge","queue":"Queue","audit":"Audit"},"outcomes":{"attempted":"Attempted","success":"Success","failure":"Failure","denied":"Denied","skipped":"Skipped"},"severities":{"info":"Info","warning":"Warning","critical":"Critical"},"filters":{"search":"Search","searchPlaceholder":"Actor, event, or resource","org":"Org","allOrgs":"All orgs","category":"Category","allCategories":"All categories","outcome":"Outcome","allOutcomes":"All outcomes","severity":"Severity","allSeverities":"All severities","from":"From","to":"To","reset":"Reset filters"},"table":{"time":"Time","org":"Org","system":"System","actor":"Actor","event":"Event","resource":"Resource","outcome":"Outcome","severity":"Severity","context":"Context","integrity":"Integrity","view":"View event","unsealed":"unsealed","empty":"No audit events match the current filters."},"pagination":{"summary":"Page {page} of {pages} · {total} events","prev":"Previous page","next":"Next page"},"context":{"none":"None","session":"Session","run":"Run","workflow":"Workflow","legacyAutomationRun":"Legacy automation run","dataset":"Dataset","approval":"Approval","queue":"Queue","connector":"Connector"},"chain":{"title":"Chain health","description":"Each organisation's audit events form a hash chain. A gap or failed check means events may have been changed or lost.","unverified":"Chain not verified yet","intact":"Chain intact","exceptions":"{count} chain exceptions","empty":"No chain state has been recorded yet."},"exports":{"title":"Exports","subtitle":"CSV and JSON jobs use the current filters.","csv":"CSV","json":"JSON","empty":"No exports requested yet.","download":"Download","pending":"Pending","rowsMeta":"{rows} rows · created {date}","queued":"Audit export queued","queueFailed":"Failed to queue audit export","statuses":{"queued":"Queued","running":"Running","completed":"Completed","failed":"Failed","expired":"Expired"}},"retention":{"title":"Retention","description":"How long audit events are kept, and whether a legal hold stops deletion.","selectOrg":"Select an organisation to review retention policy.","days":"Retention days","legalHold":"Legal hold","legalHoldReason":"Legal hold reason","legalHoldReasonPlaceholder":"Matter or policy reference","save":"Save retention","saved":"Audit retention policy updated","saveFailed":"Failed to update audit retention policy"},"detail":{"fallbackTitle":"Audit event","loadingDescription":"Loading event evidence","loading":"Loading audit event.","none":"None","yes":"Yes","no":"No","sequence":"sequence {n}","sections":{"event":"Event","context":"Context","metadata":"Metadata","integrity":"Integrity"},"rows":{"org":"Org","actor":"Actor","actorRole":"Actor role","resource":"Resource","resourceType":"Resource type","outcome":"Outcome","severity":"Severity","auth":"Auth","eventHash":"Event hash","previousHash":"Previous hash","algorithm":"Algorithm","checkpointed":"Checkpointed","ipHash":"IP hash","userAgent":"User agent"}},"exportFailed":"Failed to open audit export"}}},"search":{"placeholder":"Search settings…","clear":"Clear search","clearAction":"Clear search","noResults":"No settings match “{query}”.","resultsLabel":"Search results","synonyms":{"security":"mfa, 2fa, two factor, authenticator, passkey, security key, trusted device, account security","notifications":"notifications, alerts, email digest, inbox summary, attention, opt out, frequency, schedule","myProfile":"profile, my name, personal details, about me, my account, contact details","myAiKnowledge":"memory, what the ai knows about me, personalization, what it remembers, my preferences","apiClients":"api keys, tokens, access keys, service accounts, integrations, developer, automation keys","members":"people, users, team, colleagues, invite someone, who can log in, sign in access, roles, permissions, groups, ownership","memberProfileFields":"profile fields, user fields, what people fill in, custom fields, member details, form fields","aiModels":"ai models, model providers, language model, gpt, claude, gemini, byok, own api key, agent instructions, service providers, services, hosting, regions, EU, data residency","skills":"skills, custom skills, agent abilities, capabilities, what the assistant can do","dataPrivacy":"privacy, data protection, masking, hide sensitive data, redaction, personal data, pii, secrets, gdpr, compliance, pdf password, encrypted pdf, personal connections, own connection, approver connection","apps":"apps, app views, fleet kpi, dashboards, tabs, view access, who can see","dataExport":"export, download, zip, archive, portable data, backup, workspace data, data portability","learnedKnowledge":"company knowledge, what the ai learned, business facts, memories, learned context, organisation knowledge","planBilling":"plan, package, subscription, billing statement, invoice, bill, price, commercial terms, renewal","usage":"credits, billing, invoice, bill, cost, costs, spending, spend, price, budget, limits, caps, payment, usage","activity":"activity, audit log, history, events, logs, who did what, feedback, reviews, changes"}},"learnedFeed":{"totalOne":"{count} learning","totalOther":"{count} learnings","totalLoaded":"{count} learnings shown, more available","searchLabel":"Search learned memories","searchPlaceholder":"Search by content or category","searchEmpty":"No learnings match “{search}”.","loadMoreMemories":"Load more memories","loadingMoreMemories":"Loading…","audience":{"labels":{"workspace":"Workspace","private":"Only you","restricted":"Restricted"},"ariaLabel":"Audience: {audience}","why":"Why this visibility?","loading":"Loading visibility details…","error":"Could not load visibility details.","retry":"Retry","explanation":"Within a rule, any listed member or group can grant access. Every rule must grant access.","or":"OR","and":"AND","rulesLabel":"Visibility rules","noRules":"No additional audience rules are available.","sourcesTitle":"Source visibility checks","sourcesLabel":"Sources that set this visibility","sourceUnavailable":"Unavailable","fallbackPrivate":"A private fallback source limits this memory to you.","noDetailSources":"No source details are available."},"showSources":"Show sources","hideSources":"Hide sources","loadingSources":"Loading sources","noSources":"No active sources available","excerptUnavailable":"Excerpt unavailable","provenanceErrorFallback":"Could not load provenance","evidenceOne":"{count} evidence","evidenceOther":"{count} evidence","sourceOne":"{count} source","sourceOther":"{count} sources","ungrouped":"General","chatMemoriesGroup":"Chat memories","learnedFrom":"Learned from {source} · {date}","learnedOn":"Learned on {date}","reinforcedAcrossChats":"Reinforced across {count} chats","contributingChatsPreview":"Recent contributing chats","deletedChatSource":"a deleted chat","deleteMemory":"Remove this learned memory","deleteMemoryFor":"Remove learned memory: “{fact}”","deleteMemoryConfirmTitle":"Remove this learned memory?","deleteMemoryConfirmDescriptionPersonal":"The AI stops using it for you in this workspace. Your chats keep their history, and the AI can learn it again from future conversations.","deleteMemoryConfirmDescriptionBusiness":"The AI stops using it across this workspace. Your chats keep their history, and the AI can learn it again from future conversations.","deleteMemoryConfirmDescriptionPrivate":"The AI stops using it for you in this workspace. Your chats keep their history, and the AI can learn it again from future conversations.","deleteMemoryConfirmDescriptionRestricted":"The AI stops using it for its restricted audience in this workspace. Your chats keep their history, and the AI can learn it again from future conversations.","deleteMemoryConfirmAudience":"Current audience: {audience}.","deleteMemoryConfirmScope":"Only this one memory is removed. Everything else the workspace has learned stays.","deleteMemoryConfirmAction":"Remove","deleteMemoryCancel":"Cancel","deleteMemoryPending":"Removing…","deleteMemoryError":"Could not remove this memory","deleteMemoryRemoved":"Removed one memory: “{fact}”","clearMemoriesTitle":"Reset chat memories","clearMemoriesDescription":"Remove every business memory you can currently access and manage.","clearMemoriesAction":"Remove all memories","clearMemoriesConfirmTitle":"Remove all business memories?","clearMemoriesConfirmDescription":"The AI will stop using every business memory you can currently access and manage. Audit history remains, and future chats can teach new memories again.","clearMemoriesConfirmScope":"Purpose-context items are not removed.","clearMemoriesConfirmAction":"Remove all","clearMemoriesCancel":"Cancel","clearMemoriesPending":"Removing all…","clearMemoriesRemovedOne":"Removed {count} business memory","clearMemoriesRemovedOther":"Removed {count} business memories","clearMemoriesError":"Could not remove business memories","empty":{"personal":{"title":"Nothing learned about you yet","description":"As you chat, the AI notes personal facts it picks up about you. They'll show up here."},"business":{"title":"No business knowledge yet","description":"As your workspace chats and indexes knowledge, the AI records what it learns about your company here."}}}},"platformCommerce":{"featureAdmin":{"packageDescription":"Availability defined by the package contract and explicit exceptions","invalidOrganisation":"Invalid organisation.","loadAuthorityFailed":"Could not load package entitlement authority.","loadFeaturesFailed":"Could not load features.","updateFailedReloaded":"Could not update feature. Latest values were reloaded.","updateAndReloadFailed":"Could not update feature or reload latest values.","retry":"Retry","archived":"Archived organisations are read-only.","statusNote":"Last status note: {note}","customTitle":"No package: features are switched here","customDescription":"This organisation has no package, so each switch below decides directly whether the feature is available.","needsFeature":"Needs {feature} turned on","packageTitle":"Package-controlled features","packageLead":"Contract baselines flow through explicit exceptions to effective customer access.","packageEmpty":"No package-controlled features are registered.","platformTitle":"Platform-managed features","platformLead":"These features are outside the package contract and remain under direct platform administration.","featuresTitle":"Features"},"connectorAdmin":{"catalog":{"knowledgeHubLabel":"Knowledge Hub","knowledgeHubDescription":"Core organisation knowledge remains available in every package","coreTitle":"Core Knowledge","coreDescription":"Platform capability pinned independently of package changes","otherTitle":"Other","otherDescription":"Additional connectors not assigned to a category"},"effectiveAuthority":"Effective connector access","platformAuthority":"Connector access","enabled":"Enabled","disabled":"Disabled","disabledWithConnections":"Disabled with connections","searchPlaceholder":"Search connectors…","searchLabel":"Search connectors","filterLabel":"Filter by status","filterAll":"All","visibleEnabled":"{enabled} of {total} visible enabled","enableVisible":"Enable all shown","disableVisible":"Disable all shown","preserved":"Connections and data are preserved; tools are hidden from the assistant.","activeConnectionOne":"{count} active connection","activeConnectionOther":"{count} active connections","notConnected":"Not connected","toggle":"Toggle {connector}","pauseWarningOne":"Disabling this entitlement pauses tools, triggers, and indexing for {count} active connection; tokens and data remain preserved.","pauseWarningOther":"Disabling this entitlement pauses tools, triggers, and indexing for {count} active connections; tokens and data remain preserved.","invalidOrganisation":"Invalid organisation.","loadAuthorityFailed":"Could not load package entitlement authority.","loadConnectorsFailed":"Could not load connectors.","retry":"Retry","updateFailedReloaded":"Could not update connector. Latest values were reloaded.","updateAndReloadFailed":"Could not update connector or reload latest values. Please refresh.","archived":"Archived organisations are read-only.","statusNote":"Last status note: {note}","customTitle":"No package: connectors are switched here","customDescription":"Connector access is controlled directly here; package automation does not change these settings.","disableOneTitle":"Disable {connector}?","disableVisibleTitle":"Disable all shown connectors?","disableDescriptionOne":"{count} active connection will stop serving tools. Triggers and indexing are paused and new connections are blocked. Connections, tokens, and data are preserved.","disableDescriptionOther":"{count} active connections will stop serving tools. Triggers and indexing are paused and new connections are blocked. Connections, tokens, and data are preserved.","disableManyDescription":"These connectors have active connections that will stop serving tools. Triggers and indexing are paused and new connections are blocked. Connections, tokens, and data are preserved.","cancel":"Cancel","disableConnector":"Disable connector","enableVisibleTitle":"Enable all shown connectors?","bulkDescription":"Apply one audited organisation decision to each visible eligible connector. Hidden rows are not changed.","activePaused":"Active connections will be paused.","preservedWhilePaused":"Tokens and data remain preserved while tools, triggers, and indexing stop serving.","reasonLabel":"Reason for this change","reasonPlaceholder":"Describe the customer contract or operational exception","expiryLabel":"Expiry (optional)","expiryFuture":"Expiry must be in the future.","retryFailedOne":"Retry failed connector","retryFailedOther":"Retry failed connectors","applyOne":"Apply to {count} connector","applyOther":"Apply to {count} connectors","bulkFailedOne":"Could not update {connectors}. Latest authority was reloaded; retry uses the same command key.","bulkFailedOther":"Could not update {connectors}. Latest authority was reloaded; retry uses the same command keys."},"entitlements":{"authorityLabel":"Entitlement authority","packageBaseline":"Package baseline","currentOverride":"Current override","effectiveAccess":"Effective access","inheritedEnabled":"Inherited enabled","inheritedDisabled":"Inherited disabled","noBaseline":"No package baseline","enabled":"Enabled","disabled":"Disabled","effectiveSummary":"{state} by {source}","sources":{"legacy":"legacy policy","package":"package","override":"override","unavailable":"unavailable authority","pinned":"pinned policy"},"decision":{"inherit":"Inherit package","enabled":"Explicitly enabled","disabled":"Explicitly disabled"},"reason":"Reason","expires":"Expires {date}","edit":"Edit decision","readOnly":"Read only","showHistory":"Show decision history","hideHistory":"Hide decision history","historyLoading":"Loading decision history…","historyFailed":"Decision history could not be loaded.","historyEmpty":"No explicit decisions have been recorded.","dialogTitle":"Set entitlement authority","dialogDescription":"Choose whether this entitlement inherits the package or has an explicit exception. Every change is retained in the decision ledger.","stateLabel":"Authority decision","states":{"inherit":"Inherit package","enabled":"Enable explicitly","disabled":"Disable explicitly"},"stateHelp":{"inherit":"Remove the current exception and follow the package baseline.","enabled":"Allow access even when the package baseline does not.","disabled":"Block access even when the package baseline allows it."},"reasonLabel":"Decision reason","reasonPlaceholder":"Record the contractual or operational reason","expiryLabel":"Expiry (optional)","expiryFuture":"Expiry must be a future date and time.","cancel":"Cancel","apply":"Apply decision","saving":"Applying…","conflict":"This entitlement changed elsewhere. The latest authority has been reloaded; review it before retrying.","saveFailed":"The entitlement decision could not be applied."}},"validation":{"maxFiles":"Maximum {max} files per message","fileBinaryUnsupported":"{fileName}: binary file, not supported","fileTooLarge":"File {fileName} is too large ({size}). Max {maxSize}","fileEmpty":"File {fileName} is empty"},"files":{"types":{"xlsx":"Excel (.xlsx)","xls":"Excel (.xls)","csv":"CSV","text":"Text","pdf":"PDF","doc":"Word (.doc)","docx":"Word (.docx)","pptx":"PowerPoint (.pptx)","image":"Image","file":"File"}},"processes":{"navigation":{"label":"Process workspace","allProcesses":"All processes","cases":"Cases","flow":"Flow","insights":"Insights","needsYou":"My tasks","setup":"Edit process","publishFirst":"Publish first"},"title":"Processes","list":{"draftHint":"Finish the setup and publish to start working with items.","viewSetup":"View setup","continueSetup":"Continue setup","openOverview":"Open overview","editProcess":"Edit process","previous":"Previous","next":"Next","pagination":"Process pages","pageSummary":"Page {page} · {total} total","emptyPageTitle":"No processes on this page","emptyPageDescription":"Go back to the previous page to find your processes.","import":"Import","openNeedsYou":"Needs you","subtitle":"Open a process to see the work, respond to requests or set up its steps.","create":"New process","loadFailed":"Processes could not be loaded.","retry":"Try again","emptyTitle":"No processes yet","emptyDescription":"Create a process to track items through steps owned by your teams.","emptyDescriptionMember":"Processes your workspace admins create appear here.","columnName":"Name","columnStatus":"Status","columnVersion":"Current version","columnUpdated":"Updated","published":"Published","draft":"Draft","version":"v{version}","notPublished":"Not published","columnActions":"Actions","openBoard":"Board"},"guide":{"outlineCount":"{steps} steps · {phases} phases","outlineHint":"Select a step to review its team, completion and next handoff.","title":"Build your process","intro":"Describe the work step by step. Choose who handles each step and what lets the case move on.","openData":"Case information","openFlow":"Open visual flow","complexNote":"Select a step to see its next handoff, including parallel work and conditions. Edit names and teams here; change connections in the visual flow.","outline":"The steps in your process","loadingTeam":"Loading team…","teamUnavailable":"Team unavailable","confirmationShort":"Team confirms completion","completionMissing":"Completion action needed","automationShort":"Configured work","saveHint":"Changes stay in your draft until you save. Check and publish when the process is ready.","stepNumber":"Step {n}","selectedStep":"Selected step","stepName":"What needs to happen?","stepNamePlaceholder":"For example, review the request","stepNameHint":"Use a short action that your team will recognize.","nameRequired":"Give this step a name.","work":"Who does the work","workHint":"Set by the step's lane: one of our teams or an outside party.","changeWork":"Change in the visual flow","externalParty":"{name} (external)","team":"Our team for this step","chooseTeam":"Choose a team","teamHintGroup":"These people do this step and confirm it.","teamHintExternal":"These people follow up with {party} and can mark the step done.","teamsAreGroups":"Teams are the workspace's groups.","manageGroups":"Manage groups in Workspace settings","retry":"Try again","groupsFailed":"The teams could not be loaded. Try again to change the responsible team.","completion":"When is this step done?","confirmationTitle":"The team confirms that the work is done","confirmationHint":"When a case reaches this step, the responsible team is asked to confirm that the work is done. Confirming completes the step and follows the process connections.","noCompletionHint":"This step currently has no completion action. A case will wait here until you add one.","addConfirmation":"Ask someone to confirm completion","automationTitle":"This step already has configured work","eventAutomationHint":"An event starts the configured work for this step. Open the visual flow to review how it completes.","automationHint":"This step has configured work or deadline actions. Open the visual flow to review or change how it completes.","openStepFlow":"View this step in the visual flow","handoff":"What happens next?","nextHandoff":"The next step is “{step}”, handled by {team}.","pathEndHandoff":"This path ends here. The case finishes once all paths and their join rules are complete.","parallelHandoff":"Start these paths in parallel:","conditionalHandoff":"Start every path whose condition matches:","perElementHandoff":"Repeat this work for each entry in “{field}”:","branchDestination":"Starts with “{step}”, handled by {team}.","fieldCondition":"“{field}” equals {value}","fieldInCondition":"“{field}” is one of {values}","whenCondition":"When {condition}.","otherwiseHandoff":"If no other condition matches.","noMatchingHandoff":"If no condition matches, none of these paths starts and this part of the process is skipped.","completeWhenHandoff":"Also wait until {condition}.","joinAllHandoff":"Wait until all started paths are finished or cancelled, then continue.","joinAnyHandoff":"Continue when any started path is finished or cancelled.","joinCountHandoff":"Continue when {count} started paths are finished or cancelled, or all of them if fewer were started.","repeatedJoinHandoff":"These paths are repeated for entries in “{field}”.","remainingPathsCancelled":"Any paths still in progress are cancelled when the process continues.","implicitJoinHandoff":"This part of the process ends once all started paths are finished or cancelled.","missingElementsHandoff":"The list to repeat over has not been set. Choose it in the visual flow.","missingCompleteHandoff":"The condition that marks the list as complete has not been set. Add it in the visual flow.","reviewHandoff":"This connection needs review in the visual flow before its next handoff can be explained.","unresolvedHandoff":"The connection “{target}” could not be resolved. Review it in the visual flow.","notSetValue":"not set","emptyTextValue":"empty text","addNext":"Add the next step","newStepHint":"The new step is connected here and waits for its responsible team to confirm completion.","editConnections":"Review process connections","empty":"Add a step in the visual flow to start building this process.","newStep":"New step {n}","confirmationPrompt":"Confirm that the work is done","done":"Done","completeStep":"Complete this step","end":"End"},"setup":{"createTitle":"New process","createDescription":"Name the process and choose the team that starts the work. Then build it step by step.","setupTitle":"Set up this process","setupDescription":"Choose the team that starts the work. Then add the steps they follow.","name":"Name","namePlaceholder":"e.g. Invoice approval","group":"Who starts the work?","groupHint":"Choose a team. You can assign later steps to other teams.","dataAutomatic":"Each case gets a reference and its own place to keep information. You can add more fields as you build.","dataOptions":"More options: data and references","groupPlaceholder":"Choose a team","noGroups":"Create a team first: teams are the workspace's groups. Every step belongs to a team.","datasetMode":"Item dataset","datasetNew":"Create a new dataset","datasetExisting":"Use an existing empty dataset","keyField":"Key field","keyFieldHint":"Identifies each item, for example an invoice number. Use lowercase letters, digits and underscores.","keyFieldInvalid":"Use lowercase letters, digits and underscores, starting with a letter or underscore.","submitCreate":"Create process","submitSetup":"Save","submitting":"Saving…","cancel":"Cancel","failed":"The process could not be saved.","datasetFailed":"The item dataset could not be created.","datasetCleanupFailed":"The dataset from the previous attempt could not be removed. Try again.","defaultPhase":"Intake","defaultStep":"First step","datasetName":"{name} items"},"builder":{"reviewPublish":"Review & publish","buildHint":"The steps, who does each and what starts it","accessHint":"Who may see, start and edit, and what task teams see","sectionBuild":"Build","sectionBuildHint":"What happens, in which order, and who does it","sectionData":"Data","sectionDataHint":"What a case holds and which numbers the process shows","sectionRelease":"Access and release","sectionReleaseHint":"Who may do what, trying the draft, publishing it","tabBuild":"Steps & teams","moreActions":"More actions","flowHint":"The same process as a diagram you can edit","itemHint":"The fields of a case, its key and what pipeline cards show","viewsHint":"The numbers and tables on the Insights tab","testHint":"Replay past events against the draft before publishing","publishHint":"Check the draft and publish a new version","tabViews":"Insights","tabTest":"Test","tabPublish":"Publish","openNeedsYou":"Needs you","back":"Processes","loadFailed":"This process could not be loaded.","retry":"Try again","nameLabel":"Process name","draftRevision":"Draft revision {revision}","published":"Published v{version}","notPublished":"Not published","readOnly":"Only workspace owners and admins can change processes.","check":"Check","checking":"Checking…","checkPassed":"No problems found.","publish":"Publish","save":"Save changes","saving":"Saving…","saved":"All changes saved","unsaved":"Unsaved changes","saveFailed":"Changes could not be saved.","saveBeforeAction":"Save your changes first.","draftFromDescription":"Draft from description","draftFromDescriptionHint":"Describe the process in chat; the AI drafts it into this process's draft.","tabsLabel":"Process setup sections","tabItem":"Case information","tabTriggers":"Trigger logic","triggersHint":"What starts each step, which workflow runs and who must act (read-only)","tabFlow":"Visual flow","problemsTitle":"Fix these problems before publishing","adviceTitle":"Recommendations (these don't block publishing)","problemInHook":"Step workflow {hook}","conflictTitle":"This process changed elsewhere","conflictDescription":"Someone saved a newer draft. Reload to continue from it. Your unsaved changes here will be lost.","reload":"Reload","publishTitle":"Publish this process?","publishDescription":"Publishing creates version {version}. New items start on it. Open items stay on the version they started on.","publishDatasetNote":"Case data is shared through this process. After publication it is unavailable as a general dataset, in chat or in other workflows.","publishConfirm":"Publish","publishing":"Publishing…","publishCancel":"Cancel","publishSucceeded":"Published version {version}.","publishFailed":"The process could not be published.","deleteLabel":"Delete process","deleteBlocked":"Save or discard your changes first.","deleteTitle":"Delete this process?","deleteDescription":"“{name}” is removed from Processes and its event sources stop. This can't be undone here.","deleteConfirm":"Delete","deleting":"Deleting…","deleteFailed":"The process could not be deleted.","leaveTitle":"Leave without saving?","leaveDescription":"Your unsaved changes to this process will be lost.","leaveConfirm":"Leave","leaveCancel":"Stay","draftInvalid":"This draft no longer matches the current process format and can't be edited here.","openBoard":"Board"},"item":{"publishedDataset":"Dedicated data for the items in this process.","datasetLoading":"Loading item data…","title":"Item","description":"Where the process stores its items and which fields appear on cards.","dataset":"Item dataset","datasetLoadFailed":"The dataset could not be loaded.","datasetOwned":"This dataset belongs to the process and is hidden from Datasets, chat and other workflows.","datasetLocked":"The item dataset can't change after the first publish.","changeDataset":"Change dataset","useDataset":"Use this dataset","chooseExisting":"Choose an existing empty dataset","datasetPlaceholder":"Choose a dataset","noDatasets":"There are no datasets to choose from.","checkingEmpty":"Checking whether the dataset is empty…","notEmpty":"This dataset already has rows. Choose an empty dataset or create a new one.","ownershipWarning":"Publishing makes this dataset owned by the process. It is then hidden from Datasets, chat and other workflows.","keyField":"Key field","keyFieldHint":"Identifies an item, for example an order number.","keyFieldPlaceholder":"Choose a field","cardFields":"Card fields","cardFieldsHint":"Shown on board cards. Choose up to {max}.","cardFieldsLimit":"You can choose up to {max} card fields.","fields":"Dataset fields","fieldName":"Field","fieldType":"Type","addField":"Add field","addingField":"Adding…","addFieldName":"New field","addFieldHint":"Lowercase letters, digits and underscores. After publishing, fields can still be added but not renamed or removed.","addFieldPublishedHint":"The process is live: a new field is added to every existing case as an empty, optional column. It can't be renamed or removed later. Use it in the draft's steps and views, then publish a new version.","addFieldFailed":"The field could not be added.","noFields":"This dataset has no fields.","keyBadge":"Key","cardBadge":"Card","hiddenBadge":"Hidden in tasks","display":"Display","displayFor":"Display settings for {field}","displayLabel":"Label","displayLabelPlaceholder":"Shown instead of the field name","displayFormat":"Format","displayCurrency":"Currency code","displayFraction":"Stored as a fraction","displayFractionHint":"Tick when 0.07 means 7 %. Leave it off when 19 means 19 %.","format":{"automatic":"Automatic","text":"Text","number":"Number","currency":"Currency","percent":"Percent","date":"Date","datetime":"Date and time","boolean":"Yes / No"},"displayWidth":"Width in value lists","width":{"auto":"Automatic","full":"Full row","half":"One column"},"hideInTasks":"Hide in tasks","hideInTasksHint":"Left out of task cards and value lists. Process setup still shows it."},"flow":{"canvasNavigationHint":"Drag the canvas to explore. Use + and − to read details, or Fit view to see the whole process. Select a step to edit its settings.","labels":{"observed":"Observed","human":"Human","automatic":"Automatic","none":"No workflow","unknown":"Unknown"},"deadlineRungs":"Deadline with {count} rungs","deadlineRungsOne":"Deadline with 1 rung","laneExternal":"External party","laneGroup":"Our team","splitKinds":{"parallel":"Parallel split","per_element":"Per-element split","conditional":"Conditional split"},"splitKindHints":{"parallel":"Each branch starts once.","per_element":"One branch per entry of a list field, created as entries appear.","conditional":"Routes on an item field that a workflow has set."},"merge":"Merge","branchName":"Branch {n}","autoArrange":"Auto-arrange steps to reduce crossing handoffs","removeField":"Remove {field}","addField":"Add field","noMoreFields":"No more fields","conditionField":"Field","noCondition":"No condition","conditionEquals":"Equals","conditionEqualsPlaceholder":"Value, e.g. true","conditionOperator":"Comparison","conditionOperatorEquals":"Equals","conditionOperatorIn":"Is one of","conditionIn":"Values","conditionInPlaceholder":"One value per line","hookNodes":"Step workflow with {count} nodes","hookNodesOne":"Step workflow with 1 node","hookNone":"Not set","hookView":"View","hookEdit":"Edit","hookAdd":"Add","hookRemove":"Remove step workflow","hookSelectNode":"Select a node to see its settings.","template":"Template","templateFailed":"The template could not be applied.","templateReplaces":"Replaces the current step workflow.","templatePlaceholder":"Choose a template","templates":{"remind":"Remind","notify-owner":"Notify owner","move-item":"Move item"},"templateRecipient":"Recipient","templateRecipientPlaceholder":"Choose a member","templateTargetStep":"Move to step","templateApplying":"Applying…","templateApply":"Apply template","ownerGroup":"Our team for this step","groupPlaceholder":"Choose a team","stepPlaceholder":"Choose a step","fieldPlaceholder":"Choose a field","deadline":"Deadline","deadlineNone":"No deadline.","deadlineAdd":"Add deadline","deadlineRemove":"Remove deadline","deadlineAnchor":"Counts from","anchors":{"step_start":"Step start","item_field":"An item date field","last_event":"Last event on the item"},"deadlineAnchorField":"Date field","deadlineCalendar":"Days","calendars":{"working_days":"Working days","calendar_days":"Calendar days"},"deadlineStopOn":"Stops when","stopOn":{"step_completed":"The step completes","related_event":"A related event arrives","item_on_hold":"The item is on hold (pauses)","snoozed":"The owner snoozes it"},"deadlineRungsTitle":"Rungs","rungAfter":"At day","rungDays":"run:","rungWorkflow":"Rung {n} workflow","rungAdd":"Add rung","step":"Step","removeStep":"Remove step","removeBlocked":{"last_step":"A process needs at least one step.","branch_entry":"This step starts a split branch. Change or remove the branch first."},"name":"Name","lane":"Lane","phase":"Phase","hooks":"Step workflows","hookKinds":{"onEnter":"On enter","onEvent":"On event","onExit":"On exit"},"correction":"Correction policy","correctionDefault":"When a value this step read changes","correctionHint":"Human steps are always flagged, never re-run.","correctionModes":{"flag":"Flag for review","rerun":"Re-run the step","forward_only":"Only affect later steps"},"correctionField":"When {field} changes","correctionInherit":"Use the default","contract":"Fields","reads":"Reads","readsHint":"Item fields the step uses. Changes to them trigger the correction policy.","writes":"Writes","alwaysVerify":"Always verify","alwaysVerifyHint":"Values a person always reviews.","eventSource":"Event source","eventSourceKind":"Listens to","eventSourceHint":"Observed steps need an event source and an on-event step workflow.","eventSourceNone":"Nothing","eventSourceConnector":"A connector trigger","eventSourceApi":"API events","eventType":"Event type","eventTypeHint":"Events posted to the process API with this type arrive here.","split":"Split","removeSplit":"Remove split","splitKind":"Kind","elementsField":"List field","elementKeyField":"Entry key","elementKeyFieldHint":"The entry property that identifies it across list changes. Defaults to id.","completeWhen":"Complete when","completeWhenHint":"The merge stays open until a workflow sets this field.","branches":"Branches","branchAdd":"Add branch","branchNameLabel":"Branch name","branchRemove":"Remove branch","branchEntry":"Starts at","routeWhen":"Route when","routeWhenHint":"Branches without a condition take items no other branch matches.","removeMerge":"Remove merge","mergeSplit":"Closes","waitFor":"Waits for","waitForKinds":{"all":"All branches","any":"Any branch (cancels the rest)","n_of_m":"A number of branches"},"waitForN":"Number of branches","moveUp":"Move up","moveDown":"Move down","remove":"Remove","addAfter":"Add after this step","paletteAdd":"Add","paletteHint":"Drag a step into a lane cell, or click to add it to the selected cell.","addStep":"Step","addSplit":{"parallel":"Parallel split","per_element":"Per-element split","conditional":"Conditional split"},"addMerge":"Merge","addMergeBlocked":"Add a split first, or select the split to merge.","lanes":"Lanes","addGroupLane":"Our team","addExternalLane":"External","newExternalLane":"External party","laneName":"Lane name","laneNotEmpty":"Move its steps to another lane first.","laneKind":"Lane kind","laneGroupPick":"Team of this lane","phases":"Phases","addPhase":"Phase","newPhase":"Phase {n}","phaseName":"Phase name","phaseNotEmpty":"Move its steps to another phase first.","newStep":"Step {n}","breadcrumbLabel":"Location in the process","processProblems":"Process problems","problemCount":"{count} problems","problemCountOne":"1 problem","checkPassed":"No problems found.","checkFailed":"The draft could not be checked.","checking":"Checking…","checkDraft":"Check draft","backToProcess":"Back to process","fullScreen":"Full screen","exitFullScreen":"Exit full screen","backToPalette":"Palette"},"needsLine":{"whatLabel":"What this step waits for","whatPlaceholder":"e.g. WEFA's order confirmation","whatHint":"Name the thing, not a sentence: people read it after “Missing:”.","fallback":"Without a line, people read “Missing: {label}”.","noteLabel":"Good to know while it waits","notePlaceholder":"e.g. WEFA Internal Sales sends it; ask them after three days","noteHint":"Optional. Shown with what is missing while the step waits.","count":"{count} of {max}","recommendationOne":"1 step waits for something from outside and does not say what:","recommendation":"{count} steps wait for something from outside and do not say what:","recommendationHint":"Name it in the step's “What this step waits for”, so people read what is missing."},"systems":{"label":"Systems","hint":"The systems this step's work happens in, e.g. SAP or Outlook. {count} of {max}.","placeholder":"Add a system, then press Enter","full":"Maximum reached","none":"No systems named","suggestions":"Used in other steps:","add":"Add {system}","remove":"Remove {system}","more":"+{count}","problems":{"too_long":"A system name can have at most {length} characters.","too_many":"A step can name at most {max} systems.","duplicate":"This system is already listed."}},"triggers":{"title":"Trigger logic","intro":"Each row says what makes the work start, what the step workflow then does, which systems it touches and whether a person has to act. Rows follow the flow; S and D codes let you refer to a row.","legendTitle":"How to read this","legend":{"decision":"M: a person checks or decides.","release":"F: a person releases it before anything is sent or booked.","automatic":"A: runs without asking anyone.","unknown":"?: not known yet (the workflow catalog is unavailable or a node is not in it).","rows":"Starts and events are the core of the process. Deadlines watch over it: they run when a step takes longer than planned."},"coreTitle":"Starts and events","coreHint":"What happens when a case enters a step, an event arrives or the team finishes a step.","deadlinesTitle":"Deadlines","deadlinesHint":"Reminders and escalations that run while a case waits at a step or merge.","noDeadlines":"No deadlines are set.","columns":{"code":"Code","step":"Step","trigger":"Trigger","whatHappens":"What happens","systems":"Systems","approval":"Approval"},"trigger":{"api_event":"Event: {type}","connector":"Connector trigger: {name}","event_without_source":"Event (no event source set)","enter":"Case enters the step","exit":"Case leaves the step","manual":"Team marks the step done"},"eventBadge":"event","noWorkflow":"No workflow","missingWorkflow":"Missing workflow","emptyWorkflow":"The workflow has no steps yet","noApproval":"Nothing to approve","teamUnavailable":"Team unavailable","mergeOwner":"Merge {id}","deadlineAfter":"After {days} {unit} from {anchor}","calendar":{"working_days":"working days","working_daysOne":"working day","calendar_days":"calendar days","calendar_daysOne":"calendar day"},"anchor":{"step_start":"the step start","item_field":"the date in {field}","last_event":"the last event on the case"},"stopsWhen":"Stops when: {conditions}","paletteFailed":"The workflow catalog could not be loaded, so approvals show as unknown."},"board":{"overviewTitle":"The process at a glance","overviewHint":"Choose a stage to focus on its open work. A case can be in more than one stage when work runs in parallel.","understandProcess":"How this process works","stageNumber":"Stage {number}","openItems":"{count} open items","openItemsOne":"1 open item","workTitle":"Work in progress","workHint":"Open a case to see who is responsible and what needs to happen next.","allStages":"All stages","noMatchingWork":"No open work matches this selection","noOpenWork":"No work is waiting in this process","noOpenWorkHint":"New cases appear here as they move through the stages. All cases, including completed work, are listed below.","casesTitle":"All cases","casesHint":"Open and completed cases with their current status.","noCases":"No cases have been started yet.","caseListFailed":"The case list could not be loaded.","needsYou":"Needs you","viewsLabel":"Process views","back":"Process builder","title":"{name} board","version":"Version {version}","newItem":"Start case","loadFailed":"This process could not be loaded.","notPublished":"Publish this process to start items and see their progress here.","overdueOnly":"Overdue only","stepFilter":"Filter by step","allSteps":"All steps","retry":"Try again","boardFailed":"The overview could not be loaded.","columnsLabel":"Phases","columnLabel":"{name}, {count} items","columnLabelOne":"{name}, 1 item","emptyColumn":"No items","loadMore":"Show {count} more","overdue":"Overdue","attention":"{count} need attention","attentionOne":"1 needs attention","activity":{"idle":"Idle","in_progress":"In progress","waiting_for_person":"Waiting for a person","needs_attention":"Needs attention","needs_recovery":"Needs recovery"},"stream":{"connecting":"Connecting updates","live":"Live updates","reconnecting":"Reconnecting updates","paused":"Updates paused","ended":"Updates disconnected"},"invalidValue":"Check {field}: its value doesn't match the field type.","required":"Required","requiredValue":"Enter a value for {field}.","chooseBoolean":"Choose Yes or No","notSet":"Not set","yes":"Yes","no":"No","nullableBooleanHint":"Not set leaves this field empty. Yes and No both save an answer.","laterFields":"Details filled in later ({count})","laterFieldsHint":"The process normally fills in these details as work progresses. Add them now only if you already have them.","listHint":"Add a unique reference for each entry. The process tracks each one separately.","listReference":"Reference for entry {n}","listReferencePlaceholder":"For example: LINE-001","listDuplicate":"Each entry needs a different reference.","listReferenceRequired":"Enter a reference or remove this entry.","listDetailsRetained":"Additional details are preserved. Use the advanced editor to view or change them.","listRemove":"Remove entry {n}","listRemoveShort":"Remove","listAdd":"Add an entry","listUseEditor":"Use the list editor","listUseJson":"Advanced: edit all entry details","timezoneHint":"Times use your device's time zone: {timeZone}.","createFailed":"The case could not be started.","newItemTitle":"Start case","newItemDescription":"Enter the case's values. It starts at the process's first step.","schemaFailed":"The case fields could not be loaded.","cancel":"Cancel","creating":"Starting…","create":"Start case"},"itemPage":{"doneDescription":"This item has completed its process. Its values and history remain available.","cancelledDescription":"This item was cancelled. Its values and history remain available.","retry":"Try again","notFound":"This item doesn't exist or you can't see it.","loadFailed":"This item could not be loaded.","status":{"active":"Active","on_hold":"On hold","cancelled":"Cancelled","done":"Done"},"overdue":"Overdue","version":"Version {version}","hold":"Hold","resume":"Resume","cancel":"Cancel item","dismiss":"Dismiss","interactionsTitle":"Waiting for you","reviewTitle":"Review","timelineTitle":"Timeline","timelineFailed":"The timeline could not be loaded.","earlier":"Earlier records","later":"Later records","liveTitle":"Current steps","noLiveSteps":"The item is at no step right now.","attentionTitle":"Needs attention","attention":{"field_clash":"Branches wrote different values","element_without_key":"List entry without a key","hook_admission_rejected":"A step workflow could not start","correction_flagged":"A value changed after a step used it"},"resolve":"Mark resolved","runsTitle":"Linked runs","runsDescription":"Status, timing and results of this item's workflows. Runs needing recovery appear first.","runsPartialHistory":"Includes runs from the current timeline page and the item's steps. Browse the timeline pages for other history.","runsPage":"{first}–{last} of {count} runs","previousRuns":"Previous runs","nextRuns":"Next runs","documentsTitle":"Documents","backTo":"{name} board","back":"Board","cancelBranchTitle":"Cancel branch {branch}?","cancelBranch":"Cancel branch","snoozeTitle":"Snooze the deadline of {step}","snooze":"Snooze","undoTitle":"Undo {step}?","undo":"Undo","undoDescription":"The item goes back to this step. Values are not reverted; both records stay in the timeline.","undoDescriptionEvent":"The item goes back to this step and the triggering event returns to pending. Values are not reverted; both records stay in the timeline.","holdTitle":"Put this item on hold?","resumeTitle":"Resume this item?","cancelTitle":"Cancel this item?","holdDescription":"The item stays on its steps until it is resumed; deadlines that stop on hold pause.","resumeDescription":"The item continues on its steps; paused deadlines run again.","cancelDescription":"The item and its open branches stop for good and running step workflows are cancelled. Its records stay in the timeline.","responsibleTeam":"Responsible team: {group}","since":"since {date}","deadlineRungs":"Deadline at day {days} ({calendar})","calendar":{"working_days":"working days","calendar_days":"calendar days"},"openRun":"Open run","trunk":"Main path","recordCount":"{count} records","recordCountOne":"1 record","noRecords":"No records yet.","record":{"entered":"{step}: task started","completed":"{step} completed","undone":"{step} undone","corrected":"{step} corrected","snoozed":"{step} deadline snoozed","deadline_fired":"{step} deadline reached","event_assigned":"Event assigned to {step}","cancelled":"{step} cancelled","held":"Put on hold at {step}","resumed":"Resumed at {step}","migrated":"Moved to {step} by a new version","decided":"{step}: decision recorded"},"actorRun":"Step workflow","afterApprovalBy":"after approval by {person}","afterRejectionBy":"after rejection by {person}","afterClarificationBy":"after clarification request by {person}","afterAnswerBy":"after answer by {person}","decidedSnapshot":"View card as approved","exportHistory":"Export approval history","exportFileName":"approval-history","exportFailed":"The approval history could not be exported. Try again.","actorSystem":"System","runLink":"Run {id}","noRuns":"No runs yet.","failed":"Failed","stopped":"Stopped","stoppedDescription":"This workflow was stopped. The item is still waiting at this step. Retry to start a new run.","retryRun":"Retry","noDocuments":"No documents are linked to this item's values.","actionFailed":"The action could not be completed.","snoozeDays":"Days to postpone","reasonOptional":"Reason (optional)","reason":"Reason","cancelDialog":"Cancel","completeStep":{"action":"Mark step done","title":"Mark {step} done","description":"Enter the values this step records. Fields you leave empty keep their current value. The item then moves on and a running step workflow of this step is cancelled.","descriptionNoFields":"The item moves on to its next step. A running step workflow of this step is cancelled.","confirm":"Mark done","invalidValue":"{field} is not a valid value.","alreadySet":"Already in the case ({count})","current":"Now: {value}"}},"evidence":{"reviewHint":"Select a value to inspect where it came from.","showMoreFields":"More case data ({count})","hideMoreFields":"Hide more case data","moreRows":"{count} more rows","status":{"ok":"OK","warning":"Check","error":"Problem"},"workflowFile":"Workflow file","knowledgeItem":"Knowledge Hub file {id}","chatFile":"Chat file {id}","documents":"Documents","values":"Values","noDocuments":"No documents back these values.","verify":"Verify","kind":{"extracted":"Extracted","observed":"Observed","entered":"Entered","computed":"Computed","imported":"Imported"},"sourcesOf":"Sources of {field}","noPreview":"No page preview is available for this file.","pageNotInPreview":"Page {page} is not in the preview.","onPage":"page {page}","pageAlt":"Page {page}","confidence":"{percent}% confidence","event":"Event {id}","enteredBy":"Entered by {name}","row":"row {row}","showSource":"Show in document","openRun":"Open run"},"approval":{"previous":"instead of","factsTitle":"Details","showFactSource":"Show where this value comes from","factSourcesTitle":"Source of {label}","checksTitle":"Checks","check":{"ok":"Passed","warning":"Needs attention","error":"Failed"},"responsibilityTitle":"Responsibility","responsibilityTeam":"Team","responsibilityPerson":"Person","responsibilityReason":"Why","pathTitle":"Approval path","currentStage":"You are here","tile":{"approved":"Approved","partially_approved":"Partially approved","rejected":"Rejected","clarification":"Clarification requested","decided":"Decided","open":"Waiting","upcoming":"Not yet","completed":"Done","not_needed":"Not needed","automatic":"Automatic"},"remindersTitle":"Dates","overdue":"Overdue","historyTitle":"Approval history","historyShowAll":"Show all {count} decisions","historyShowAllShort":"Show all","historyShowExceptions":"Show exceptions only","historyAllRoutine":"{count} decisions, none with objections","decision":{"approved":"Approved","rejected":"Rejected","partially_approved":"Partially approved","clarification_requested":"Clarification requested","answered":"Answered"},"byPerson":"{decision} by {person}","onBehalfOf":"on behalf of {person}","chosenOption":"Chosen: {option}","controls":{"approve":"Approve","reject":"Reject","partial":"Approve partially","clarify":"Ask a question","addComment":"Add comment","commentLabel":"Comment (optional)","reasonLabel":"Reason for rejection","reasonHint":"The reason is saved in the approval history.","questionLabel":"Your question","questionHint":"The process continues on its clarification path with your question.","amountLabel":"Amount to approve ({currency})","amountMax":"At most {amount}","amountInvalid":"Enter an amount above 0.","amountTooHigh":"The amount can be at most {amount}.","submitApprove":"Approve","submitReject":"Confirm rejection","submitPartial":"Approve amount","submitClarify":"Send question","cancel":"Cancel"}},"interaction":{"evidenceTitle":"Case values","onHold":"This item is on hold. Resume it on the item page before responding.","webOnly":"This pause can only be answered on the run page.","failed":"The answer could not be sent.","responseSaved":"Response saved","reject":"Reject","feedbackHint":"The workflow goes back to an earlier step with your feedback and asks you again.","action":{"write":"Changes data","destructive":"Deletes data"},"redacted":"{count} values hidden","redactedOne":"1 value hidden","noInput":"No input to review.","proposedValues":"Values to save for this item","actionDetails":"View all action details","approve":"Approve","credentialAmbiguous":"You have more than one connection to {system}. Remove one before you can approve.","credentialManage":"Open your connections","credentialOwn":"Approving writes to {system} with your sign-in{account}.","credentialFixed":"You have no sign-in for {system}. Approving writes with the sign-in of the person who published this process.","credentialConnect":"Connect your {system} sign-in","credentialReconnect":"Your sign-in for {system} has to be renewed before you can approve.","credentialBusy":"Your sign-in for {system} is being renewed. Try again in a moment.","credentialChanged":"Your connection changed. Check the card and approve again.","credentialRechecked":"Your connection is checked now. The card shows what to do next.","credentialUnchecked":"Your connection for this step could not be checked. If you approve, it is checked again. You then approve a second time, or you see why the step cannot write.","credentialPersonalDisabled":"Each person's own connection is switched off for this workspace. An owner or admin can switch it on in the workspace settings.","chooseOne":"Choose one option","chooseRange":"Choose between {min} and {max} options","emptyConfirmation":"There are no options to select. Continue to confirm and move to the next step.","continue":"Continue","answer":"Send answer","fileUpload":"This step asks for a file. Upload it on the run page, or reject it here.","fileUploadOptional":"This step asks for an optional file. Upload it on the run page, or continue without it here.","unsupported":"This pause can't be answered here. Open the run to answer it.","openRun":"Open run","label":"{node} for this item","event":{"item_entered_step":"Entered step","step_event_arrived":"Event arrived","deadline_reached":"Deadline reached","item_exited_step":"Left step"},"deadline":"Deadline at day {days}","deadlineOn":"Deadline on {date}","deadlineRung":"Deadline {number} on {date}","decidedByYou":"{decision} by you at {time}","addComment":"Add comment","approveCommentLabel":"Comment (optional, saved in the approval history)","actionValues":"Values this action sends","detailsTitle":"Details","technicalDetails":"Technical details","summaryTitle":"Summary","latestComment":"Latest comment","allComments":"All {count} comments","quoted":"“{text}”","stale":"This request changed meanwhile. The latest version is shown once it reloads."},"views":{"yes":"Yes","no":"No","systemColumns":{"process_step":"Step","waiting_since":"Waiting since","overdue":"Overdue","process_version":"Version","branch_summary":"Branches"},"title":"Views","description":"The pipeline, the item page and Needs attention are generated. Add tables, metrics, charts and batch previews to Insights or the item side panel.","generatedTitle":"Generated views","generatedBadge":"Generated","generated":{"board":"Pipeline","boardHint":"One column per phase, one card per open case.","itemPage":"Item page","itemPageHint":"Header, current steps, review, timeline and linked runs.","needsAttention":"Needs attention","needsAttentionHint":"Failed runs, attention markers and events no case took, on Cases."},"customTitle":"Custom views","noCustom":"No custom views yet.","addKind":"View type","add":"Add view","kind":{"table":"Table","metric":"Metric","chart":"Chart","batch_preview":"Batch preview"},"slot":{"process_home":"Insights","item_side_panel":"Item side panel"},"preview":"Preview","hidePreview":"Hide preview","previewUnavailable":"Only views of the published version can be previewed.","previewNote":"Previews show views as published. New or changed views are computed by a replay in the Test tab.","moveUp":"Move up","moveDown":"Move down","edit":"Edit {name}","remove":"Remove {name}","loadFailed":"This view could not be loaded.","previous":"Previous","next":"Next","total":"{count} rows","totalOne":"1 row","noValue":"No {field}","cases":"Cases","byGroup":"{value} by {group}","emptyHint":"Cases that match this view will show up here.","retry":"Try again","comparison":{"list":"{value} against {compare} by {group}","of":"{value} of {limit}","over":"{amount} over the limit","at":"At the limit","left":"{amount} left","noLimit":"No {field} set"},"batchAt":"Waiting at {step}","empty":"Nothing to show yet.","chartRetry":"Load chart again","chartSummary":"Chart with {buckets} periods and {series} series","editor":{"view":"View","title":"Edit view","newTitle":"New {kind}","name":"Name","description":"Description","descriptionHint":"One line saying what this view shows. Shown under its title.","slot":"Placement","slotHint":"Process home is below the board; the item side panel is on each item page.","invalid":"This view is not complete","apply":"Apply","cancel":"Cancel","filters":"Filters","filterField":"Filter field","filterOp":"Condition","filterValue":"Value","filterListPlaceholder":"a, b, c","removeFilter":"Remove filter","addFilter":"Add filter","op":{"eq":"equals","neq":"is not","in":"is one of","lt":"less than","lte":"at most","gt":"greater than","gte":"at least","is_null":"is empty","is_not_null":"is not empty","contains":"contains (JSON)"},"aggregate":"Measure","count":"Count items","sum":"Sum a field","sumField":"Field to sum","groupBy":"Group by","noGrouping":"No grouping","compareTo":"Compare with","compareToHint":"For example a credit limit; groups above it are highlighted.","noCompare":"No comparison","steps":"Only items at these steps","stepsHint":"Leave empty for all items.","columns":"Columns","columnsHint":"The first column links to the item.","sortField":"Sort by","noSort":"No sorting","sortDirection":"Direction","ascending":"Ascending","descending":"Descending","display":"Show as","displayKind":{"number":"Numbers","bar":"Bars","table":"Table"},"timeField":"Time field","timeFieldHint":"A date field; periods are counted in UTC.","interval":"Period","intervalKind":{"day":"Day","week":"Week","month":"Month","quarter":"Quarter"},"batchStep":"Step","batchStepHint":"Shows the items waiting at this step and why."}},"caseFile":{"back":"Cases","backLabel":"Back to cases","neighbours":"Other cases","previous":"Previous case","next":"Next case","openInFlow":"Open in flow","picker":{"label":"Case","placeholder":"Choose a case","noCases":"No cases yet.","loadFailed":"Couldn't load the cases.","more":"Showing the {count} most recent; search to find others."},"facts":"Case details","started":"Started","status":{"finished":"Finished on {date}.","cancelled":"This case was cancelled.","onHold":"This case is on hold.","idle":"No step is open right now.","waiting":"Waiting at “{step}”","waitingOn":"Waiting at “{step}” on {who}","running":"Work is running at “{step}”","needs_you":"Needs you at “{step}”","needs_help":"Needs help at “{step}”","failed":"Stuck at “{step}”","stopped":"Stopped at “{step}”","showStep":"Show step"},"phases":"Phases","phaseSteps":"{count} steps","phaseStepsOne":"1 step","phaseProgress":"{done} of {total} done","phaseJump":"Go to {name} in the timeline","stillToCome":"Still to come","otherSteps":"Earlier steps","noSteps":"This case has not reached a step yet.","since":"since {date}","branches":"{count} branches","select":"Show the step cards for {name}","input":{"mail":"Email “{subject}” from {from}","mailNoSubject":"Email from {from}","mailNoSender":"Email “{subject}”","mailBare":"Email received","event":"Event “{type}”"},"result":{"failure":"Stopped at “{node}”: {reason}","failureNoNode":"Stopped: {reason}","open":"Still open: {fields}"},"loadFailed":"Couldn't load this case.","retry":"Retry","notFound":"Case not found","notFoundHint":"It may have been deleted, or you can't open it."},"flowTab":{"showWalkthrough":"Show walkthrough","duty":{"event":"Waits for {who}","eventBare":"Waits for an event","manual":"Done by {who}","manualBare":"Done by a person","automatic":"Runs by itself"},"card":{"who":"Who or what","does":"What it does","delivers":"What it delivers","deliversNothing":"No values of its own.","happened":"What happened","nothingIn":"Nothing came in yet.","nothingYet":"Nothing came out yet."},"noCase":"No case: how the process runs","noCaseHint":"Choose a case to trace it through the flow.","openCaseFile":"Case file","showWithoutCase":"Show without a case","noAccess":"You can't see this process's flow."},"walkthrough":{"label":"Walkthrough","position":"Step {index} of {total}","positionShort":"{index} / {total}","previous":"Back","next":"Next","exit":"End walkthrough","stillToCome":"This case has not reached this step yet. What the step will do:"},"insights":{"empty":"No dashboards yet.","emptyHint":"The process owner sets dashboards up.","setUp":"Set up dashboards under Edit process → Data → Insights","noAccess":"Insights are for people who can see all cases of this process."},"ownCases":{"finished":"Finished","finishedOn":"Finished {date}","finishedFailed":"The finished cases could not be loaded.","noOpenTaskCases":"None of the cases with your tasks is open right now."},"caseTable":{"involvementLabel":"Your part in the case","startedByMe":"Started by me","workedOn":"Cases I worked on","filter":{"running":"Running","waiting":"Waiting"},"scopeLabel":"Which cases","scope":{"open":"Open","finished":"Finished","all":"All"},"phase":"Phase","allPhases":"All phases","phaseSearch":"Search phases","noPhase":"No phase found","step":"Step","allSteps":"All steps","stepSearch":"Search steps","noStep":"No step found","clearFilters":"Clear filters","column":{"case":"Case","step":"Step","status":"Status","waiting":"Waiting","started":"Started"},"sortBy":"Sort by {column}","betweenSteps":"Between steps","startedOn":"Started {date}","range":"{from}–{to} of {total} cases","noMatch":"No case matches these filters","noMatchHint":"Change or clear the filters to see more cases.","loadFailed":"The cases could not be loaded."},"pipeline":{"stepFilter":"Filter {name} by step, {count} steps","stepFilterOne":"Filter {name} by step, 1 step","stepCount":"{count} steps","stepCountOne":"1 step","stepMenuTitle":"Show cases at a step","allSteps":"All steps","stepCases":"{step}, {count} cases","stepCasesOne":"{step}, 1 case","branch":"Branch {name}","clearStep":"Remove filter: {step}","emptyColumnFiltered":"Only cases at “{step}” are shown","movesOnTitle":"Moves on when","movesOnAuto":"Moves on automatically","wayEvent":"“{name}” arrives","wayTeam":"team {name} acts","wayAuto":"it runs on its own","progress":"Step {step} of {of}","label":"Pipeline","list":"List","layoutLabel":"Show cases as","filtersLabel":"Filter cases","filter":{"all":"All","needsMe":"Needs me","failed":"Failed","overdue":"Overdue"},"start":"Start case","columnsLabel":"Phases","column":"{name}, {count} cases","columnOne":"{name}, 1 case","statusBar":"{failed} failed or overdue, {waiting} waiting, {running} running","legendLabel":"Colours of the status bar","legend":{"problem":"Failed or overdue","waiting":"Waiting","running":"Running"},"waitsForEvent":"Waiting for “{name}”","waitsForTeam":"Waiting for {name}","runningNow":"Work is running","failedFallback":"A workflow failed","yourTurn":"Your turn","overdue":"Overdue","duration":{"days":"for {count} days","daysOne":"for 1 day","hours":"for {count} hours","hoursOne":"for 1 hour","minutes":"for {count} minutes","minutesOne":"for 1 minute"},"moreSteps":"+{count} more steps here","moreStepsOne":"+1 more step here","emptyColumn":"No cases in this phase","loadMore":"Show {count} more","loadingMore":"Loading…","done":"Done","doneColumn":"Done, {count} cases. Show them as a list","doneColumnOne":"Done, 1 case. Show it as a list","empty":"No cases yet","emptyHint":"Cases appear here as soon as they are started.","noMatch":"No case matches this filter","noMatchHint":"Choose All to see every open case.","loadFailed":"The pipeline could not be loaded.","retry":"Try again","allCases":"All cases","finishedCases":"Finished cases","showAllCases":"Show all cases","ownCases":"Your cases","taskCases":"Cases with your tasks","ownCasesHint":"Cases you started, with the step each one is at.","taskCasesHint":"Cases with a step your team works on.","noOwnCases":"You have no open cases here.","openCase":"Open case {key}"},"search":{"label":"Search cases","placeholder":"Search cases","placeholderFields":"Search {fields} …","none":"No matching cases","countOne":"1 matching case","count":"{count} matching cases","truncated":"searched the first {limit} cases"},"story":{"whatHappened":"What happened","expected":"Expected → Delivered","actHere":"To do","earlierSteps":"Earlier steps","notAvailable":"This step is not available for this case.","loadError":"Couldn't load what happened.","retry":"Retry","openCase":"Open full case","runDetails":"Run details","close":"Close","trunk":"Main path","branches":"Branches","noLines":"Nothing has run at this step yet.","noExpectations":"This step expects nothing specific.","truncated":"Only the latest runs are shown.","actFailed":"Couldn't load what needs doing here.","summary":{"label":"AI summary","tooltip":"Generated from the facts below"},"line":{"mail":{"received":"Email “{subject}” received from {from}","receivedFrom":"Email received from {from}","sent":"Email sent to {to}","forwarded":"Email forwarded to {to}"},"event":{"received":"Event “{type}” received","posted":"Event “{type}” posted"},"checked":{"yes":"Checked “{nodeName}”: yes","no":"Checked “{nodeName}”: no"},"classified":"Classified as {label}","process":{"started":"Process “{processName}” started"},"values":{"written":"{count} values saved","writtenOne":"1 value saved"},"step":{"completed":"Step completed"},"decided":"{decision} by {by}","answered":"“{nodeName}” answered","system":{"action":"Ran “{nodeName}”"},"action":{"rejected":"“{nodeName}” was rejected"},"node":{"running":"“{nodeName}” is running","failed":"“{nodeName}” failed"},"awaiting":{"decision":"Waiting for a decision at “{nodeName}”"},"run":{"unavailable":"The run's details are no longer available"}},"lineShort":{"mail":{"received":"Email “{subject}” received"},"event":{"received":"{event}"},"decided":"{decision}","node":{"ran":"Ran “{nodeName}”"}},"decision":{"approved":"Approved","rejected":"Rejected","partially_approved":"Partly approved","clarification_requested":"Clarification requested"},"eventKind":{"item_entered_step":"Case entered the step","step_event_arrived":"Step event arrived","deadline_reached":"Deadline reached","item_exited_step":"Case left the step"},"lineBare":{"mail":{"received":"Email received","receivedFrom":"Email received","sent":"Email sent","forwarded":"Email forwarded"},"event":{"received":"Event received","posted":"Event posted"},"checked":{"yes":"Checked","no":"Checked"},"classified":"Classified","process":{"started":"Process started"},"values":{"written":"Values saved"},"step":{"completed":"Step completed"},"decided":"Decision made","answered":"Answered","system":{"action":"Action ran"},"action":{"rejected":"An action was rejected"},"node":{"ran":"Action ran","running":"Running","failed":"Failed"},"awaiting":{"decision":"Waiting for a decision"},"run":{"unavailable":"The run's details are no longer available"}},"expectValue":{"produces":"{field}: {value}"},"expect":{"awaits":{"event":"Event from {source}","person":"Answer from team {team}"},"produces":"Value for {field}","due":"Done by {date}","merge":"{done} of {needed} branches finished"},"expectBare":{"awaits":{"event":"An event","person":"An answer"},"produces":"A value","due":"Done by the deadline","merge":"All branches finished"},"expectState":{"met":"Delivered","pending":"Pending","missed":"Missed"},"reason":{"approval":"Waiting for your approval.","answer":"Waiting for your answer.","waitingForTeam":"Waiting for team {team}.","fieldClash":"Conflicting values for {field}.","elementWithoutKey":"A list entry has no key.","correctionFlagged":"A correction was flagged for {field}.","hookRejected":"The step's workflow could not start.","runFailed":"Run failed at “{nodeName}”.","connection":"A connection needs re-authorization. Ask an admin.","permission":"A permission is missing for this step's workflow.","overdue":"Overdue since {date}.","pending":"Waiting for: {what}","missingValue":"Missing value: {field}"},"reasonBare":{"fieldClash":"Conflicting values.","correctionFlagged":"A correction was flagged.","runFailed":"The step's run failed.","waitingForTeam":"Waiting for another team.","overdue":"Overdue."},"status":{"done":"Done","running":"Running","waiting":"Waiting","needs_you":"Needs you","needs_help":"Needs help","failed":"Failed","stopped":"Stopped","not_reached":"Not reached"},"kind":{"automatic":"Automatic","manual":"Done by a person","event":"Waits for an event or email"},"kindHint":{"automatic":"This step runs by itself; nobody needs to act.","manual":"Someone from the responsible team does or confirms this step.","event":"This step waits until an event or an email arrives, then continues."},"detail":{"moreRecipients":"+{count}","showMore":"Show more","showLess":"Show less","delivered":"Delivered"},"io":{"title":"Input → result","input":"Input","result":"Result","stillOpen":"Still open","nothingDelivered":"Nothing delivered","caseCreated":"Case created","startedCase":"Case #{itemId} started in “{processName}”"},"runs":{"hook":{"on_enter":"On entering the step","on_event":"On an event","on_exit":"On leaving the step","deadline":"At the deadline"},"unnamed":"Workflow run","open":"Open run","state":{"pending":"Queued","running":"Running","waiting":"Waiting","completed":"Completed","failed":"Failed","cancelled":"Cancelled"}},"failure":{"title":"What went wrong","runHook":{"on_enter":"The workflow that runs on entering the step","on_event":"The workflow that runs on an event","on_exit":"The workflow that runs on leaving the step","deadline":"The workflow that runs at the deadline"},"runWorkflow":"The workflow “{name}”","runUnnamed":"The step's workflow","sentence":"{run} stopped at “{node}”: {reason}","sentenceNoNode":"{run} stopped: {reason}","generic":"The run gave no reason.","finishByHand":"Finish the step by hand"},"leftOpen":"Left open ({count})","next":{"title":"Next","waitsFor":"Waits for {what}","ai":"AI","aiTooltip":"Written by AI from the latest completed step"}},"myTasks":{"title":"My tasks","asManager":"as process manager","scope":{"label":"Show tasks","all":"All","group":"My teams","manager":"Managed"},"loadFailed":"Your tasks could not be loaded.","retry":"Try again","truncated":"Not every process could be searched; open a process to see the rest of its tasks.","toProcesses":"Go to processes"},"needsAttention":{"strip":{"titleOne":"1 thing in this process needs someone","title":"{count} things in this process need someone","failed":"{count} failed","markers":"{count} to check","eventsOne":"1 event no case took","events":"{count} events no case took","questionsOne":"1 event waits for an answer","questions":"{count} events wait for an answer","open":"Show what needs attention","openShort":"Show"},"panel":{"title":"Needs attention","description":"Problems in this process that a person has to look at, one card each.","empty":"Nothing needs attention right now.","truncated":"Only the newest problems are shown.","loadFailed":"What needs attention could not be loaded.","close":"Close","retry":"Try again","noActions":"A process manager or the step's team can act on this."},"what":{"eventNamed":"The event “{type}”","mail":"An email","event":"An event"},"happened":{"eventFailed":"{what} for {case} arrived, but it could not be recorded.","eventFailedNoCase":"{what} arrived, but its automation failed before it found a case.","runFailed":"The automation of “{step}” stopped for {case}.","runStopped":"The automation of “{step}” was stopped for {case}.","eventUnmatched":"{what} arrived, and no case took it.","eventQuestion":"{what} arrived and waits for an answer before it can find its case.","field_clash":"Two paths of {case} wrote different values for the same fields.","element_without_key":"An entry of {case} has no key, so it got no path of its own.","hook_admission_rejected":"The automation of “{step}” could not be started for {case}.","correction_flagged":"Someone corrected values of {case} after “{step}” was done."},"groupOne":"1 event from {date} that no case could take","group":"{count} events from {date} that no case could take","groupShow":"Show events","groupHide":"Hide events","sections":{"where":"Case and step","meantFor":"Meant for","said":"What the event said","wrong":"What went wrong","details":"Details","mailFrom":"From","mailSubject":"Subject","mailText":"Text","attachments":"Attachments","nothingSaid":"The event carried no values.","refused":"Could not be read","technical":"Technical details","engineText":"Message from the automation","reference":"Sender's reference","code":"Error code"},"markerValues":{"fields":"Fields","otherSteps":"Other steps","list":"List","keyField":"Key field","correctedFields":"Corrected fields","reason":"Why it did not start"},"admission":{"hook_missing":"This version of the process has no automation for the step.","permission":"The person who published the process may no longer run its automation.","other":"The automation was refused."},"actions":{"retry":"Retry","finishByHand":"Finish “{step}” on {case} by hand","openCase":"Open {case}","attachSuggested":"Attach to {case}: completes “{step}”","attach":"Attach to a case…","ignore":"Ignore this event…","resolve":"Mark as resolved","more":"More actions","failed":"That did not work. Try again."},"problem":{"invalidValue":"“{field}” needs {expected}, but got “{value}”.","invalidValueNoValue":"“{field}” needs {expected}, but got something else.","invalidValueNoField":"A value did not have the right form.","missingValue":"“{field}” is required, but no value came.","missingValueNoField":"A required value was missing.","noMatchingCase":"No open case matched it.","notWaiting":"The case was no longer waiting at this step.","notDeclared":"The step is not set up to save “{field}”.","notDeclaredNoField":"The step tried to save a value it is not set up for.","automationRefused":"The step's automation could not be started.","other":"The automation stopped without a reason we can say in words.","expected":{"date_time":"a date and time","yes_no":"yes or no","whole_number":"a whole number","number":"a number","text":"text","identifier":"an identifier","structured":"structured data","other":"another kind of value"}}},"need":{"missing":"Missing: {thing}","needs":"Needs: {thing}","arrivedNotUsed":"Arrived, not used: {thing}","completesWith":"Completes with “{step}”","quoted":"“{text}”","taskThing":"{word} “{label}”","task":{"approval":"approval","decision":"decision","selection":"answer","file_upload":"file","unsupported":"answer"},"general":{"mail":"an email","entry":"confirmation"},"andMore":"and {count} more","andMoreOne":"and 1 more","forCase":"{lead} for {field} {key}","from":"from {who}","inSystems":"{who}, in {systems}","onlySystems":"in {systems}","title":"What is missing","label":{"fills":"Fills","from":"From","lookedAfterBy":"Looked after by","arrives":"Arrives","waiting":"Waiting","due":"Due","arrived":"Arrived","deadline":"Deadline"},"arrives":{"mailTo":"by email to {mailbox}","mail":"by email","senders":"from {senders}","attachment":"with attachment","event":"automatically, as “{name}”","automatic":"automatically"},"span":{"days":"{count} days","daysOne":"1 day","hours":"{count} hours","hoursOne":"1 hour","minutes":"{count} minutes","minutesOne":"1 minute"},"waitingSince":"{span}, since {date}","noDeadline":"no deadline","overdue":"past the deadline","dueOn":"due {date}","dueRow":"{date} ({days})","then":"{text}, then “{then}”","days":{"working_days":"{count} working days","working_daysOne":"1 working day","calendar_days":"{count} days","calendar_daysOne":"1 day"},"dueAfter":{"step_start":"due after {days}","item_field":"due {days} after {field}","item_fieldBare":"due {days} after a date of the case","last_event":"due {days} after the last arrival"},"arrivedAt":"{date}, could not be used. See “What went wrong”.","enter":"Enter it yourself","enterHint":"Enter the missing values and finish the step by hand.","moreSteps":"Other steps of this case are open too. Each step's cards show what it is missing."},"needsYou":{"focus":{"open":"Full screen","openAll":"Work through in full screen","list":"Open tasks","process":"Process","allProcesses":"All processes","processSearch":"Search processes…","processNone":"No process found","resizeList":"Resize list (drag, arrow keys, double-click resets)","previous":"Previous","next":"Next","close":"Close full screen","position":"{index} of {total}","done":"All done","doneHint":"No open tasks are left."},"item":"Item {id}","openRun":"Open run","resolve":"Resolve","actionFailed":"The action could not be completed.","assign":"Assign","assigning":"Assigning…","dismiss":"Dismiss","cancel":"Cancel","dismissTitle":"Dismiss this event?","dismissDescription":"The event stays recorded with your reason and no longer waits for an item.","assignTitle":"Assign event to an item","assignDescription":"Completes the step for the chosen item with this event.","assignStep":"Step","chooseStep":"Choose a step","assignItem":"Item","chooseItem":"Choose an item","noWaitingItems":"No items wait at this step","assignItemsCapped":"Showing the first 100 waiting items.","assignBranch":"Branch","chooseBranch":"Choose a branch","mainPath":"Main path"},"test":{"title":"Test","description":"Replay the saved draft over a past period. Nothing real changes: write actions are replaced by stubs and items exist only in the result.","managersOnly":"Only workspace owners and admins can run replays.","formTitle":"Replay settings","from":"From","to":"To","includeStored":"Include events this process received in the period","humanSteps":"Steps that wait for a person","humanStepsHint":"Stop leaves the item waiting; approve answers approvals and picks the first option.","humanStop":"Stop and count","humanApprove":"Approve","events":"Additional events (JSON)","eventsHint":"An array of { kind: \"event\", stepId or type, occurredAt, payload } or { kind: \"start_item\", occurredAt, fields }.","eventsPlaceholder":"[]","eventsInvalidJson":"Additional events must be valid JSON.","expectations":"Expected view values","expectationsHint":"Compare a view's value (optionally one group) with what you expect.","expectationView":"View","expectationGroup":"Group (optional)","expectationValue":"Expected","removeExpectation":"Remove expectation","addExpectation":"Add expectation","run":"Run replay","running":"Replaying…","requestFailed":"The replay could not be started.","resultTitle":"Result","status":{"queued":"Queued","running":"Running","succeeded":"Finished","failed":"Failed"},"pollFailed":"The replay status could not be loaded.","failed":"The replay failed.","waiting":"The replay is running. This page updates when it finishes.","truncated":"The replay stopped early ({reason}) at {at}. The result covers the period up to then.","truncatedReason":{"time_budget":"time limit","hook_run_limit":"step workflow limit","entity_limit":"item limit"},"itemsCreated":"Items created","eventsReplayed":"Events replayed","eventsUnmatched":"Unmatched events","deadlinesFired":"Deadlines fired","overdueItems":"Overdue items","hookRuns":"Step workflow runs","hookRunsFailed":"Failed runs","stubbedActions":"Stubbed actions","diffsTitle":"Expected values","diffView":"View","diffGroup":"Group","diffExpected":"Expected","diffActual":"Actual","diffDelta":"Difference","diffMissing":"Missing","stepsTitle":"Steps","step":"Step","entered":"Entered","completed":"Completed","waitingCount":"Waiting","none":"None.","itemsTitle":"Items ({count})","itemKey":"Item","itemStatus":"Status","itemSteps":"Steps","itemCreated":"Created","overdue":"Overdue","waitingTitle":"Waiting for people","waitingKind":{"user_input":"Input","approval":"Approval"},"itemRef":"item {id}","unmatchedTitle":"Unmatched events","eventSource":{"request":"Supplied event","pending_event":"Stored event","connector_event":"Connector event"},"noStep":"no listening step","unmatchedReason":{"no_listening_step":"no step listens to it","not_linked":"no item took it"},"attentionTitle":"Attention","attentionKind":{"field_clash":"Field clash","element_without_key":"Element without key","replay_fanout_truncated":"Too many elements to replay","simulated_value":"Simulated values left empty"},"errorsTitle":"Step workflow errors","viewsTitle":"Views"},"publishTab":{"firstPublishTitle":"Publish the first version?","title":"Publish","description":"Check the saved draft, decide what happens to open items, and publish a new version.","unsaved":"Save your changes first. Publishing uses the saved draft.","readinessTitle":"Readiness","runCheck":"Check draft","readinessHint":"Check the draft to see compile problems and step workflows that are not ready.","failed":"The process could not be published.","compileFailed":"The draft has problems.","hooksNotReady":"Some step workflows are not ready.","unmappedFailed":"Open items are on steps without a target. Map them or pin open items.","branchInvalid":"These branches of open items no longer fit the new version:","error":{"PROCESS_MIGRATION_TOO_LARGE":"Too many open items to move at once (at most 5,000). Pin open items instead.","PROCESS_MIGRATION_DATASET_CHANGED":"Open items can't move to a version with a different item dataset.","PROCESS_MIGRATION_TARGET_UNKNOWN":"A mapping target is no step or split of the draft.","PROCESS_DATASET_NOT_EMPTY":"The item dataset already has rows. The first publish needs an empty dataset.","PROCESS_DATASET_CLAIM_CONFLICT":"The item dataset already belongs to another process."},"changesTitle":"Version changes","changesTitleFirst":"First version","changesTitleVersion":"v{current} → v{next}","element":"Element","currentVersion":"Current version","draft":"Draft","count":{"steps":"Steps","splits":"Splits","merges":"Merges","views":"Custom views","hooks":"Step workflows"},"addedSteps":"Added steps:","removedSteps":"Removed steps:","migrationTitle":"Open items","summaryFailed":"Open items could not be loaded.","noOpenItems":"No open items. Publishing affects new items only.","openItems":"{count} open items on {versions}.","openItemsOne":"1 open item on {versions}.","modePin":"Keep on their version","modeMap":"Move to the new version","modePinHint":"Open items finish on the version they started on. New items start on the new version.","modeMapHint":"Open items move to the new version. Map every step and split they are on to one in the draft.","oldNode":"Where items are","versions":"Versions","openCount":"Open","newNode":"Move to","newNodeFor":"Target for {node}","chooseTarget":"Choose a target","kind":{"step":"Step","split":"Split"},"unmapped":"{count} places have no target yet.","unmappedOne":"1 place has no target yet.","unmappedBlock":"Map every place or keep open items on their version.","publish":"Publish version {version}","exportTitle":"Export","exportDescription":"Download the process as a package to import it in another workspace. Item data is not included.","exportSource":"Export source","exportCurrent":"Published version","exportDraft":"Saved draft","export":"Download package","exporting":"Preparing…","exportFailed":"The package could not be exported.","importUpdateTitle":"Update from a package","importUpdateDescription":"Replace this process's draft with a package, for example one exported from a test workspace. Its item data and open items stay; publish afterwards to move open items.","importUpdate":"Import update"},"import":{"title":"Import process","description":"Choose a process package. The import creates a new draft and an empty item dataset, or replaces the draft of an existing process.","file":"Package file","fileHint":"Choose or drop a process package (.json) exported from a process.","oneFile":"Choose one package file.","invalidJson":"This file is not valid JSON.","invalidPackage":"This file is not a process package.","previewing":"Checking the package…","previewFailed":"The package could not be checked.","mode":"Import as","modeNew":"New process","modeUpdate":"Update existing process","target":"Process","chooseTarget":"Choose a process","loadingTargets":"Loading processes…","targetDataset":"Keeps the process's item dataset “{name}” and its open items.","addedFields":"Adds these fields to it: {fields}.","removedSteps":"The published version has steps the package removes: {steps}. Publishing then needs a target for their open items.","readyUpdate":"Ready to replace the draft. Nothing is published until you publish it.","update":"Replace draft","updating":"Replacing…","name":"Name","dataset":"Creates the item dataset “{name}” with {count} fields.","datasetOne":"Creates the item dataset “{name}” with 1 field.","groups":"Teams","groupFor":"Team for {name}","chooseGroup":"Choose a team","groupsHint":"The team each step and lane belongs to. Teams are the workspace's groups.","groupMissing":"No team with this name here. Choose one.","eventSources":"Event source connections","eventSourcesHint":"The connection each connector event source listens to in this workspace.","eventSourceMissing":"This connection is not here. Choose one.","noTriggerConnection":"No connection of this kind here yet.","connectionFor":"Connection for {step}","connections":"Assign connections","connectionsHint":"Each connection and MCP server the step and companion workflows use. One choice applies to every workflow that uses it.","datasets":"Datasets","datasetsHint":"Datasets the step workflows read or write, other than the new item dataset.","review":"Review after import","reviewHint":"These cannot be assigned here. Check them in the imported draft.","open":"{count} open","usedBy":"Used by {count} workflows","usedByOne":"Used by 1 workflow","targetFor":"{type} for {name}","choose":"Choose…","autoMapped":"Assigned automatically to {name}.","assigned":"Assigned to {name}.","unnamed":"#{id}","deadline":"Deadline","kinds":{"mcpServer":"MCP server","dataset":"Dataset","trigger":"Trigger connection"},"noConnection":"No {type} connection here yet.","connectFirst":"Connect one first","noServer":"No MCP server here yet.","addServer":"Add one first","noDataset":"No dataset you can use yet.","openDatasets":"Open datasets","blocking":"{count} problems block the import","blockingOne":"1 problem blocks the import","groupsOpen":"{count} teams need a target.","groupsOpenOne":"1 team needs a target.","eventSourcesOpen":"{count} event sources need a connection.","eventSourcesOpenOne":"1 event source needs a connection.","toReview":"{count} dependencies to review after import (see the end of the list).","toReviewOne":"1 dependency to review after import (see the end of the list).","companions":"Companion workflows","companionsHint":"Workflows that send events to this process, such as a mail router. Their connections are assigned above.","companionCreate":"Created as a draft; activate it after checking.","companionUpdate":"Updates the existing workflow #{id}.","companionBlocked":"Cannot be imported.","ready":"Ready to import.","recheck":"Check again","cancel":"Cancel","import":"Import","importing":"Importing…","failed":"The process could not be imported."}},"commandPalette":{"placeholder":"Search or jump to...","processes":"Processes","cases":"Cases"}}