@objectstack/console 15.0.0 → 15.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.objectui-sha +1 -1
- package/dist/assets/{AdapterProvider-CSP_T07G.js → AdapterProvider-BFaddpzn.js} +1 -1
- package/dist/assets/{AiPendingActionsPage-BNh8Cf9P.js → AiPendingActionsPage-CvBOdCmI.js} +1 -1
- package/dist/assets/ApiConsolePage-BETRFRmt.js +1 -0
- package/dist/assets/{AppDocsIndex-DFB1tmTx.js → AppDocsIndex-BYY7DwDn.js} +1 -1
- package/dist/assets/{AppManagementPage-D2jMv3L-.js → AppManagementPage-ct829ZDs.js} +1 -1
- package/dist/assets/ApprovalsInboxPage-CLRfOCfN.js +1 -0
- package/dist/assets/AuditLogPage-DrVbfMwo.js +1 -0
- package/dist/assets/{ComponentNavView-C8ngAwyN.js → ComponentNavView-BdBCf414.js} +1 -1
- package/dist/assets/CreateViewDialog-C1plmcyi.js +1 -0
- package/dist/assets/DashboardView-YwIvqU1F.js +1 -0
- package/dist/assets/{DeveloperHubPage-VBsID8Fk.js → DeveloperHubPage-Cv1WYOxY.js} +1 -1
- package/dist/assets/{DocShell-ChTlUxMm.js → DocShell-CLtiW77i.js} +1 -1
- package/dist/assets/ExpressionProvider-E8d0a2zy.js +1 -0
- package/dist/assets/FlowRunsPage-Kk2pQjuI.js +1 -0
- package/dist/assets/{IntegrationsPage-BR2TkAoB.js → IntegrationsPage-3Mmj9WPX.js} +2 -2
- package/dist/assets/InterfaceListPage-BEv_Whkh.js +1 -0
- package/dist/assets/ManagedByBadge-h6zYSYEw.js +1 -0
- package/dist/assets/MarketplaceAccessDenied-BBrk9Zzt.js +1 -0
- package/dist/assets/MarketplaceInstalledPage-Baul16n9.js +1 -0
- package/dist/assets/MarketplacePackagePage-C4BoxM9O.js +4 -0
- package/dist/assets/MarketplacePage-CIiUcu2P.js +1 -0
- package/dist/assets/MetadataInspector-Ty_bVFlI.js +1 -0
- package/dist/assets/MetadataProvider-Dw6hFBw2.js +1 -0
- package/dist/assets/ObjectDataPage-C0VN22jG.js +1 -0
- package/dist/assets/PageView-9Qd343Y8.js +1 -0
- package/dist/assets/ProfilePage-DotFPbJV.js +1 -0
- package/dist/assets/PublicFormsPage-DIXBuC2U.js +1 -0
- package/dist/assets/RecordDetailView-WbRO9Qfl.js +2 -0
- package/dist/assets/RecordFormPage-CVM9R6n6.js +1 -0
- package/dist/assets/ReportDefaultInspector-Dfj5Pq4K.js +3 -0
- package/dist/assets/ReportView-BuAo4KRU.js +2 -0
- package/dist/assets/SearchResultsPage-BXtahiUa.js +1 -0
- package/dist/assets/{SettingsHub-Begm6jy7.js → SettingsHub-Cbb36Ak1.js} +1 -1
- package/dist/assets/SettingsView-MqDu9fQ0.js +1 -0
- package/dist/assets/{SystemHubPage-C4J7Le-p.js → SystemHubPage-CRlHp6zs.js} +1 -1
- package/dist/assets/data-adapter-BaT0fWzy.js +9 -0
- package/dist/assets/framework-CavAJOoG.js +6 -0
- package/dist/assets/{getIcon-BZsP3YSU.js → getIcon-CJv2JJRu.js} +1 -1
- package/dist/assets/{highlighted-body-OFNGDK62-BPN_aS-T.js → highlighted-body-OFNGDK62-CmEyqxRh.js} +1 -1
- package/dist/assets/i18n--Ef6MgVx.js +9 -0
- package/dist/assets/index-DwHOkKSZ.css +2 -0
- package/dist/assets/index-sUYxMYg4.js +2 -0
- package/dist/assets/infrastructure-1EBA2wrr.js +3 -0
- package/dist/assets/mermaid-GHXKKRXX-B608OHDp.js +1 -0
- package/dist/assets/metadata-admin-CaWsYPuu.js +25 -0
- package/dist/assets/plugin-calendar-lTyyzuqa.js +1 -0
- package/dist/assets/plugin-charts-CXDDqZeY.js +7 -0
- package/dist/assets/plugin-chatbot-CGYrsTXi.js +120 -0
- package/dist/assets/plugin-dashboard-oozFEUjN.js +6 -0
- package/dist/assets/plugin-form-Hw4-ReuX.js +1 -0
- package/dist/assets/plugin-gantt-DIrw5DOt.js +102 -0
- package/dist/assets/plugin-grid-QB7O_mff.js +8 -0
- package/dist/assets/plugin-kanban-C3U_tMs4.js +1 -0
- package/dist/assets/plugin-map-Lz3zZGqA.js +1 -0
- package/dist/assets/{plugin-markdown-DgBcCCgO.js → plugin-markdown-CeSEfSMe.js} +1 -1
- package/dist/assets/plugin-report-CMTOJSLw.js +59 -0
- package/dist/assets/plugin-timeline-CKcNCEwi.js +1 -0
- package/dist/assets/plugin-tree-BLG1qg4e.js +1 -0
- package/dist/assets/plugin-view-CwV64XEY.js +1 -0
- package/dist/assets/plugins-views-CoEgR96I.js +4 -0
- package/dist/assets/{skeletons-Bf9TL3pG.js → skeletons-DGSWW9zt.js} +1 -1
- package/dist/assets/src-1qbKZhoo.js +1 -0
- package/dist/assets/{src-C6-lrmoQ.js → src-2Uisncjb.js} +1 -1
- package/dist/assets/src-DXuM24AK.js +18 -0
- package/dist/assets/{types-033eBMjb.js → types-C7NHW0h6.js} +1 -1
- package/dist/assets/ui-components-CHaxvtjc.js +72 -0
- package/dist/assets/{ui-layout-FqyUicdD.js → ui-layout-BLgfeXIq.js} +1 -1
- package/dist/assets/{use-book-data-BThfYUpK.js → use-book-data-BwZnHc4z.js} +1 -1
- package/dist/assets/{useMetadata-D5f_5ULL.js → useMetadata-IV9x2kG3.js} +1 -1
- package/dist/assets/vendor-objectstack-BTM1m7k5.js +104 -0
- package/dist/index.html +4 -4
- package/package.json +1 -1
- package/dist/assets/ApiConsolePage-Btr9hRka.js +0 -1
- package/dist/assets/ApprovalsInboxPage-CT4IXwpE.js +0 -1
- package/dist/assets/AuditLogPage-BdYvwcAH.js +0 -1
- package/dist/assets/CreateViewDialog-DcjN_AhY.js +0 -1
- package/dist/assets/DashboardView-CLJM8Cfl.js +0 -1
- package/dist/assets/ExpressionProvider-CHaGm5wf.js +0 -1
- package/dist/assets/FlowRunsPage-DdOav-6T.js +0 -1
- package/dist/assets/InterfaceListPage-Ca4VNsGg.js +0 -1
- package/dist/assets/ManagedByBadge-Cdy82I7A.js +0 -1
- package/dist/assets/MarketplaceAccessDenied-B6Tg5g6l.js +0 -1
- package/dist/assets/MarketplaceInstalledPage-DBmVXCVz.js +0 -1
- package/dist/assets/MarketplacePackagePage-Mt1pHE8U.js +0 -4
- package/dist/assets/MarketplacePage-D9CLlhnk.js +0 -1
- package/dist/assets/MetadataInspector-Bqe7rY0S.js +0 -1
- package/dist/assets/MetadataProvider-DqPZ6rV2.js +0 -1
- package/dist/assets/ObjectDataPage-Cz_pMsIv.js +0 -1
- package/dist/assets/PageView-CLvQYEdi.js +0 -1
- package/dist/assets/ProfilePage-BDJLPRAf.js +0 -1
- package/dist/assets/PublicFormsPage-BRflG64R.js +0 -1
- package/dist/assets/RecordDetailView-w6IBQ1cm.js +0 -2
- package/dist/assets/RecordFormPage-inJKFR63.js +0 -1
- package/dist/assets/ReportDefaultInspector-BZaG6IPJ.js +0 -3
- package/dist/assets/ReportView-CSAIx2AR.js +0 -2
- package/dist/assets/SearchResultsPage-DsnzRV3B.js +0 -1
- package/dist/assets/SettingsView-C4UULiJk.js +0 -1
- package/dist/assets/data-adapter-Mo_lVy1U.js +0 -7
- package/dist/assets/framework-BL3BtpKU.js +0 -36
- package/dist/assets/i18n-BsjEVcp4.js +0 -9
- package/dist/assets/index-CRgNx-tU.js +0 -2
- package/dist/assets/index-D1n9Ue1P.css +0 -2
- package/dist/assets/infrastructure-Bc4DRENl.js +0 -3
- package/dist/assets/mermaid-GHXKKRXX-BBQimMyN.js +0 -1
- package/dist/assets/metadata-admin-DHwo5kSi.js +0 -23
- package/dist/assets/plugin-calendar-BTCkHFNk.js +0 -1
- package/dist/assets/plugin-charts-DugftiGR.js +0 -7
- package/dist/assets/plugin-chatbot-Cq19aZcF.js +0 -120
- package/dist/assets/plugin-dashboard-CaQs1s4M.js +0 -6
- package/dist/assets/plugin-form-6ug8Woph.js +0 -1
- package/dist/assets/plugin-gantt-SwenNrGL.js +0 -102
- package/dist/assets/plugin-grid-a0e-qAUn.js +0 -8
- package/dist/assets/plugin-kanban-B9xzSYs9.js +0 -1
- package/dist/assets/plugin-map-DnfptTJp.js +0 -1
- package/dist/assets/plugin-report-Dny_M7U-.js +0 -59
- package/dist/assets/plugin-timeline-8zgO0jxJ.js +0 -1
- package/dist/assets/plugin-tree-Bzgro7b4.js +0 -1
- package/dist/assets/plugin-view-DfJ5SCdu.js +0 -1
- package/dist/assets/plugins-views-CoobEMX4.js +0 -4
- package/dist/assets/src-BMWmj9Zz.js +0 -1
- package/dist/assets/src-CQwyy7m_.js +0 -18
- package/dist/assets/ui-components-Y3D5-fgK.js +0 -42
- package/dist/assets/vendor-objectstack-BjCqbVaM.js +0 -96
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{l as e}from"./framework-BL3BtpKU.js";var t={object:`Object`,field:`Field`,trigger:`Trigger`,validation:`Validation Rule`,hook:`Hook`,view:`View`,page:`Page`,dashboard:`Dashboard`,app:`Application`,action:`Action`,report:`Report`,flow:`Flow`,approval:`Approval Process`,datasource:`Datasource`,translation:`Translation`,router:`Router`,function:`Function`,service:`Service`,email_template:`Email Template`,book:`Documentation Book`,permission:`Permission Set`,position:`Position`,agent:`AI Agent`,tool:`AI Tool`,skill:`AI Skill`,package:`Package`,data:`Dataset`,job:`Background Job`,api:`API Endpoint`,connector:`Connector`,mapping:`Field Mapping`,policy:`Policy`,webhook:`Webhook`,theme:`Theme`,sharing_rule:`Sharing Rule`,analytics_cube:`Analytics Cube`},n={object:`对象`,field:`字段`,trigger:`触发器`,validation:`校验规则`,hook:`钩子`,view:`视图`,page:`页面`,dashboard:`仪表板`,app:`应用`,action:`操作`,report:`报表`,flow:`流程`,approval:`审批流程`,datasource:`数据源`,translation:`翻译`,router:`路由`,function:`函数`,service:`服务`,email_template:`邮件模板`,book:`文档手册`,permission:`权限集`,position:`岗位`,agent:`AI 智能体`,tool:`AI 工具`,skill:`AI 技能`,package:`包`,data:`数据集`,job:`后台任务`,api:`API 端点`,connector:`连接器`,mapping:`字段映射`,policy:`策略`,webhook:`Webhook 回调`,theme:`主题`,sharing_rule:`共享规则`,analytics_cube:`分析立方体`},r={data:`Data`,ui:`UI`,automation:`Automation`,ai:`AI`,system:`System`,platform:`Platform`,identity:`Identity`,security:`Security`,other:`Other`},i={data:`数据`,ui:`界面`,automation:`自动化`,ai:`AI`,system:`系统`,platform:`平台`,identity:`身份`,security:`安全`,other:`其他`},a={"engine.directory.title":`All Metadata Types`,"engine.directory.description":`The platform protocol exposes {count} metadata types ({writable} writable at runtime). Click any tile to browse, override, or create instances.`,"engine.directory.search":`Search metadata types…`,"engine.directory.writableOnly":`Writable only`,"engine.directory.quickFind":`Quick Find`,"engine.directory.noMatches":`No matches`,"engine.directory.noMatchesHint":`Adjust your search or filters to see more metadata types.`,"engine.directory.loading":`Loading metadata types…`,"engine.directory.loadFailed":`Failed to load metadata types`,"engine.directory.all":`All`,"engine.directory.diagnosticsLink":`View all issues ({count})`,"engine.directory.invalidTooltip":`{count} invalid item(s) — click to fix`,"engine.directory.warnTooltip":`{count} item(s) with warnings`,"engine.directory.itemCountTooltip":`{count} item(s) of this type`,"engine.directory.allPackages":`All packages`,"engine.directory.packageFilter":`Package`,"engine.home.greetingMorning":`Good morning`,"engine.home.greetingAfternoon":`Good afternoon`,"engine.home.greetingEvening":`Good evening`,"engine.home.subtitle":`Your control center for modeling data, designing experiences, and automating the platform.`,"engine.home.statTypes":`Metadata types`,"engine.home.statWritable":`Runtime-writable`,"engine.home.statPackages":`Packages`,"engine.home.statIssues":`Open issues`,"engine.home.allHealthy":`All healthy`,"engine.home.allHealthyHint":`No validation issues across your metadata.`,"engine.home.issuesHint":`{count} item(s) need attention.`,"engine.home.explore":`Explore`,"engine.home.exploreHint":`Jump into any domain of the platform.`,"engine.home.quickActions":`Quick actions`,"engine.home.quickActionsHint":`Create new metadata in one click.`,"engine.home.newItem":`New {label}`,"engine.home.recent":`Recently viewed`,"engine.home.recentEmpty":`Nothing here yet — items you open will appear for quick access.`,"engine.home.browseAll":`Browse all metadata`,"engine.home.openDiagnostics":`Review diagnostics`,"engine.home.viewDomain":`View`,"engine.home.typesLower":`types`,"engine.home.loading":`Loading your workspace…`,"engine.diagnostics.title":`Metadata Diagnostics`,"engine.diagnostics.description":`Every metadata item that failed load-time validation, grouped by type. Errors block features that depend on the item; warnings are advisory.`,"engine.diagnostics.back":`Back to metadata`,"engine.diagnostics.refresh":`Refresh`,"engine.diagnostics.loading":`Scanning metadata…`,"engine.diagnostics.loadFailed":`Failed to load diagnostics: {error}`,"engine.diagnostics.summary":`{count} issue(s) across {items} items in {types} types`,"engine.diagnostics.cleanTitle":`All clear`,"engine.diagnostics.cleanHint":`Scanned {items} item(s) across {types} type(s) — no issues found.`,"engine.diagnostics.severity.error":`Errors`,"engine.diagnostics.severity.warning":`Errors + Warnings`,"engine.diagnostics.col.name":`Item`,"engine.diagnostics.col.issues":`Issues`,"engine.diagnostics.errorN":`{count} error(s)`,"engine.diagnostics.warnN":`{count} warning(s)`,"engine.diagnostics.more":`+{count} more…`,"engine.list.create":`New`,"engine.list.refresh":`Refresh`,"engine.list.search":`Search name, label, description…`,"engine.list.empty":`No items yet.`,"engine.list.items":`Items`,"engine.list.filtered":`Filtered`,"engine.list.invalid":`Invalid`,"engine.list.warnings":`Warnings`,"engine.list.invalidTitle":`Invalid metadata`,"engine.list.invalidCount":`{count} validation error(s):`,"engine.list.warnTitle":`Metadata warnings`,"engine.list.warnCount":`{count} warning(s):`,"engine.list.allSources":`All sources`,"engine.list.allPackages":`All packages`,"engine.package.writableRequired":`Pick or create a writable base (package) first — this item cannot be authored into a read-only code package.`,"engine.list.packageFilter":`Package`,"engine.list.source.artifact":`Artifact`,"engine.list.source.runtime":`Runtime`,"engine.list.source.artifactDesc":`Shipped by code package`,"engine.list.source.runtimeDesc":`Authored at runtime`,"engine.list.col.name":`Name`,"engine.list.col.label":`Label`,"engine.list.col.source":`Source`,"engine.list.col.object":`Object`,"engine.list.col.type":`Type`,"engine.list.col.description":`Description`,"engine.list.emptyType":`No {type} items registered`,"engine.list.emptyQuery":`No matches for "{query}"`,"engine.list.createHint":`Click "New" above to create the first {type}.`,"engine.list.readOnlyHint":`This type is read-only — instances are defined by code artifacts in packages.`,"engine.edit.save":`Save`,"engine.edit.publish":`Publish`,"engine.edit.publishBlockedDirty":`Save first, then publish.`,"engine.edit.discardDraft":`Discard draft`,"engine.edit.discardDraftConfirm":`Discard the pending draft for {type}/{name}?`,"engine.edit.draftPending":`Pending changes — save lives in a draft. Click Publish to release.`,"engine.edit.rollback":`Rollback to this version`,"engine.edit.rollbackConfirm":`Restore version {version}? This writes the historical body back as the current published overlay.`,"engine.edit.reset":`Reset overlay`,"engine.edit.resetConfirm":`Reset overlay for {type}/{name}?`,"engine.edit.delete":`Delete`,"engine.edit.deleteConfirm":`Delete {type}/{name}? This cannot be undone.`,"engine.edit.lockFull":`This item is locked and cannot be edited or deleted.`,"engine.edit.lockNoOverlay":`This item is locked and cannot be edited.`,"engine.edit.lockNoDelete":`This item is locked and cannot be deleted.`,"engine.edit.history":`History`,"engine.edit.auditTab":`Audit log`,"engine.edit.auditCount":`events`,"engine.edit.auditEmptyTitle":`No audit events yet`,"engine.edit.auditEmptyDescription":`No save, publish, rollback, delete or reset attempts have been recorded for this item. Once someone tries to change it (allowed or denied), the attempt will appear here.`,"engine.edit.auditColTime":`Time`,"engine.edit.auditColActor":`Actor`,"engine.edit.auditColOperation":`Operation`,"engine.edit.auditColOutcome":`Outcome`,"engine.edit.auditColLock":`Lock`,"engine.edit.auditColNote":`Note`,"engine.edit.refresh":`Refresh`,"engine.edit.layers":`Layers`,"engine.layers.code":`Code`,"engine.layers.overlay":`Overlay`,"engine.layers.effective":`Effective`,"engine.layers.diff":`Diff`,"engine.layers.diff.field":`Field`,"engine.layers.diff.code":`Code (artifact)`,"engine.layers.diff.effective":`Effective`,"engine.layers.diff.status":`Status`,"engine.layers.diff.unchanged":`unchanged`,"engine.layers.diff.modified":`modified`,"engine.layers.diff.added":`added`,"engine.layers.diff.removed":`removed`,"engine.layers.diff.showUnchanged":`Show unchanged`,"engine.layers.diff.noChanges":`Overlay matches the code value — no field-level differences.`,"engine.layers.diff.noBaseline":`No code-level artifact to compare against. All fields are runtime-authored.`,"engine.layers.diff.summary":`{modified} modified · {added} added · {removed} removed`,"engine.edit.overlaidCount":`{count} overlaid`,"engine.edit.noOverlay":`no overlay`,"engine.edit.references":`References`,"engine.edit.form":`Form`,"engine.edit.edit":`Edit`,"engine.edit.editOverlay":`Edit overlay`,"engine.edit.createNew":`Create new`,"engine.edit.detail":`Detail`,"engine.edit.preview":`Preview`,"engine.edit.designer":`Designer`,"engine.edit.related":`Related`,"engine.edit.hideInspector":`Hide inspector`,"engine.edit.showInspector":`Show inspector`,"engine.edit.noChanges":`No changes to save`,"engine.edit.inspector":`Inspector`,"engine.edit.inspector.properties":`Properties`,"engine.edit.inspector.source":`Source`,"engine.edit.fullscreen":`Fullscreen`,"engine.edit.exitFullscreen":`Exit fullscreen`,"engine.edit.designMode":`Design`,"engine.edit.previewMode":`Preview`,"engine.inspector.widget.kind":`Widget`,"engine.inspector.widget.close":`Close widget`,"engine.inspector.widget.title":`Title`,"engine.inspector.widget.type":`Type`,"engine.inspector.widget.object":`Data Source (Object)`,"engine.inspector.widget.valueField":`Value Field`,"engine.inspector.widget.categoryField":`Category Field`,"engine.inspector.widget.aggregate":`Aggregate`,"engine.inspector.widget.color":`Color Variant`,"engine.inspector.widget.width":`Width`,"engine.inspector.widget.height":`Height`,"engine.inspector.widget.remove":`Remove widget`,"engine.inspector.widget.datasetSection":`Dataset binding`,"engine.inspector.widget.dataset":`Dataset`,"engine.inspector.widget.datasetPlaceholder":`e.g. sales_pipeline`,"engine.inspector.widget.datasetHint":`Bind a governed dataset. When set, it takes precedence over the inline object query above and the widget renders via the dataset (consistent, cross-object, RLS-enforced).`,"engine.inspector.widget.dimensions":`Dimensions`,"engine.inspector.widget.dimensionsPlaceholder":`e.g. stage, region (comma-separated)`,"engine.inspector.widget.dimensionsHint":`Dataset dimension names to group by. Leave empty for a single-value KPI metric.`,"engine.inspector.widget.values":`Values (measures)`,"engine.inspector.widget.valuesPlaceholder":`e.g. revenue, deal_count (comma-separated)`,"engine.inspector.widget.valuesHint":`Dataset measure names to show.`,"engine.inspector.flowNode.kind":`Node`,"engine.inspector.flowNode.close":`Close node`,"engine.inspector.flowNode.id":`ID`,"engine.inspector.flowNode.label":`Label`,"engine.inspector.flowNode.type":`Node Type`,"engine.inspector.flowNode.description":`Description`,"engine.inspector.flowNode.configuration":`Configuration`,"engine.inspector.flowNode.config":`Config (JSON)`,"engine.inspector.flowNode.advanced":`Advanced (JSON)`,"engine.inspector.flowNode.advancedHint":`Optional custom keys not covered by the form above — most flows don’t need this.`,"engine.inspector.flowNode.noConfig":`No configuration needed for this node type.`,"engine.inspector.flowNode.kv.add":`Add entry`,"engine.inspector.flowNode.kv.key":`Key`,"engine.inspector.flowNode.kv.value":`Value`,"engine.inspector.flowNode.kv.remove":`Remove entry`,"engine.inspector.flowNode.kv.empty":`No entries yet.`,"engine.inspector.flowNode.list.add":`Add item`,"engine.inspector.flowNode.list.item":`Value`,"engine.inspector.flowNode.list.remove":`Remove item`,"engine.inspector.flowNode.list.empty":`No items yet.`,"engine.inspector.flowNode.remove":`Remove node`,"engine.inspector.flowEdge.kind":`Connection`,"engine.inspector.flowEdge.close":`Close connection`,"engine.inspector.flowEdge.missing":`This connection no longer exists.`,"engine.inspector.flowEdge.source":`From`,"engine.inspector.flowEdge.target":`To`,"engine.inspector.flowEdge.routing":`Routing`,"engine.inspector.flowEdge.branch":`Branch`,"engine.inspector.flowEdge.label":`Branch label`,"engine.inspector.flowEdge.labelHint":`e.g. approve / reject`,"engine.inspector.flowEdge.condition":`Condition`,"engine.inspector.flowEdge.conditionHint":`CEL expression — taken when it evaluates true`,"engine.inspector.flowEdge.isDefault":`Default branch (else)`,"engine.inspector.flowEdge.hint":`The engine follows this connection when its branch label is selected or its condition is met. The default branch is taken when no other matches.`,"engine.inspector.flowEdge.remove":`Remove connection`,"engine.inspector.flowEdge.approvalBranch":`Approval branch`,"engine.inspector.flowEdge.branchApprove":`Approve`,"engine.inspector.flowEdge.branchReject":`Reject`,"engine.inspector.flowEdge.branchRevise":`Revise — send back`,"engine.inspector.flowEdge.branchCustom":`— Custom —`,"engine.inspector.flowEdge.connection":`Connection`,"engine.inspector.flowEdge.type":`Type`,"engine.inspector.flowEdge.typeDefault":`Normal`,"engine.inspector.flowEdge.typeConditional":`Conditional`,"engine.inspector.flowEdge.typeFault":`Fault (error path)`,"engine.inspector.flowEdge.typeBack":`Back-edge (revise loop)`,"engine.inspector.flowEdge.backHint":`A back-edge re-enters an earlier node to close a loop (e.g. an approval revise loop). It is traversed normally at run time but excluded from cycle validation.`,"engine.inspector.workflowAction.kind":`Action`,"engine.inspector.workflowAction.close":`Close action`,"engine.inspector.workflowAction.type":`Action Type`,"engine.inspector.workflowAction.name":`Name`,"engine.inspector.workflowAction.config":`Config (JSON)`,"engine.inspector.workflowAction.remove":`Remove action`,"engine.inspector.appNav.kind":`Nav Item`,"engine.inspector.appNav.close":`Close nav item`,"engine.inspector.appNav.label":`Label`,"engine.inspector.appNav.icon":`Icon`,"engine.inspector.appNav.remove":`Remove nav item`,"engine.inspector.appNav.typeField":`Type`,"engine.inspector.appNav.type.object":`Object`,"engine.inspector.appNav.type.page":`Page`,"engine.inspector.appNav.type.dashboard":`Dashboard`,"engine.inspector.appNav.type.report":`Report`,"engine.inspector.appNav.type.url":`Link (URL)`,"engine.inspector.appNav.type.group":`Group`,"engine.inspector.appNav.object":`Object`,"engine.inspector.appNav.targetMode":`Landing`,"engine.inspector.appNav.mode.default":`Default view (workspace)`,"engine.inspector.appNav.mode.view":`Named view`,"engine.inspector.appNav.mode.record":`Record deep-link`,"engine.inspector.appNav.mode.filters":`Filtered slice (/data)`,"engine.inspector.appNav.view":`View`,"engine.inspector.appNav.recordId":`Record ID`,"engine.inspector.appNav.recordIdHint":`Supports {current_user_id} and {current_org_id} template variables.`,"engine.inspector.appNav.recordMode":`Open mode`,"engine.inspector.appNav.recordModeView":`View`,"engine.inspector.appNav.recordModeEdit":`Edit`,"engine.inspector.appNav.filters":`URL filters`,"engine.inspector.appNav.filtersField":`Field`,"engine.inspector.appNav.filtersValue":`Value`,"engine.inspector.appNav.filtersAdd":`Add condition`,"engine.inspector.appNav.filtersRemove":`Remove condition`,"engine.inspector.appNav.filtersHint":`One-off slice carried in the URL — promote it to a named view when it becomes curated and reused.`,"engine.inspector.appNav.url":`URL`,"engine.inspector.appNav.urlTarget":`Open in`,"engine.inspector.appNav.urlTargetSelf":`Same tab`,"engine.inspector.appNav.urlTargetBlank":`New tab`,"engine.inspector.appNav.preview":`Resolved link`,"engine.inspector.viewColumn.kind":`Column`,"engine.inspector.viewColumn.close":`Close column`,"engine.inspector.viewColumn.header":`Header`,"engine.inspector.viewColumn.accessorKey":`Field key`,"engine.inspector.viewColumn.width":`Width`,"engine.inspector.viewColumn.align":`Align`,"engine.inspector.viewColumn.sortable":`Sortable`,"engine.inspector.viewColumn.filterable":`Filterable`,"engine.inspector.viewColumn.remove":`Remove column`,"engine.inspector.viewColumn.outlineLabel":`Columns`,"engine.inspector.view.kind":`View`,"engine.inspector.view.close":`Close`,"engine.inspector.view.label":`Label`,"engine.inspector.view.labelPlaceholder":`e.g. All Leads`,"engine.inspector.view.type":`View type`,"engine.inspector.view.object":`Object`,"engine.inspector.view.objectPlaceholder":`e.g. crm_lead`,"engine.inspector.view.noSchema":`Spec schema unavailable — basic properties only.`,"engine.inspector.view.type.grid":`Table / List`,"engine.inspector.view.type.kanban":`Kanban`,"engine.inspector.view.type.calendar":`Calendar`,"engine.inspector.view.type.gallery":`Gallery`,"engine.inspector.view.type.gantt":`Gantt`,"engine.inspector.view.type.timeline":`Timeline`,"engine.inspector.view.type.map":`Map`,"engine.inspector.view.type.chart":`Chart`,"engine.inspector.pageBlock.kind":`Block`,"engine.inspector.pageBlock.close":`Close block`,"engine.inspector.pageBlock.type":`Type`,"engine.inspector.pageBlock.id":`ID`,"engine.inspector.pageBlock.className":`Class names`,"engine.inspector.pageBlock.hidden":`Hidden (CEL)`,"engine.inspector.pageBlock.properties":`Properties`,"engine.inspector.pageBlock.advanced":`Advanced`,"engine.inspector.pageBlock.remove":`Remove block`,"engine.inspector.pageBlock.outlineLabel":`Blocks`,"engine.inspector.report.kind":`Report`,"engine.inspector.report.close":`Close report`,"engine.inspector.report.name":`Name`,"engine.inspector.report.nameHint":`snake_case identifier (cannot change after create)`,"engine.inspector.report.namePlaceholder":`e.g. pipeline_by_stage`,"engine.inspector.report.label":`Label`,"engine.inspector.report.labelPlaceholder":`e.g. Pipeline by Stage`,"engine.inspector.report.type":`Report type`,"engine.inspector.report.type.tabular":`Tabular`,"engine.inspector.report.type.summary":`Summary`,"engine.inspector.report.type.matrix":`Matrix`,"engine.inspector.report.type.joined":`Joined`,"engine.inspector.report.dataset":`Dataset`,"engine.inspector.report.datasetPlaceholder":`e.g. sales_metrics`,"engine.inspector.report.values":`Values (measures)`,"engine.inspector.report.valuesEmpty":`No measures yet. Add one from the dataset below.`,"engine.inspector.report.rows":`Rows (dimensions)`,"engine.inspector.report.rowsEmpty":`No dimensions yet. Add one from the dataset below.`,"engine.inspector.report.columnsAcross":`Columns (across dimensions)`,"engine.inspector.report.columnsAcrossEmpty":`No across dimensions yet — the matrix pivots rows × columns.`,"engine.inspector.report.chart":`Chart`,"engine.inspector.report.chartType":`Chart type`,"engine.inspector.report.chartNone":`None (table only)`,"engine.inspector.report.chartTitle":`Chart title`,"engine.inspector.report.chartX":`X-Axis (dimension)`,"engine.inspector.report.chartY":`Y-Axis (measure)`,"engine.inspector.report.noSchema":`Spec schema unavailable — basic properties only.`,"engine.inspector.moreFields":`More fields`,"engine.inspector.action.kind":`Action`,"engine.inspector.action.close":`Close action`,"engine.inspector.hook.kind":`Hook`,"engine.inspector.dashboard.kind":`Dashboard`,"engine.inspector.dashboard.close":`Close dashboard`,"engine.inspector.dashboard.label":`Label`,"engine.inspector.dashboard.labelPlaceholder":`e.g. Sales Overview`,"engine.inspector.dashboard.description":`Description`,"engine.inspector.dashboard.descriptionPlaceholder":`Optional summary shown in the header`,"engine.inspector.dashboard.widgets":`Widgets`,"engine.inspector.dashboard.widgetsEmpty":`No widgets yet. Add one below.`,"engine.inspector.dashboard.removeWidget":`Remove widget`,"engine.inspector.dashboard.noSchema":`Spec schema unavailable — basic properties only.`,"engine.inspector.add.widget":`Add widget`,"engine.inspector.add.block":`Add block`,"engine.inspector.add.node":`Add node`,"engine.inspector.add.step":`Add step`,"engine.inspector.add.action":`Add action`,"engine.inspector.add.nav":`Add nav item`,"engine.inspector.reorder.up":`Move up`,"engine.inspector.reorder.down":`Move down`,"engine.edit.overlay":`overlay`,"engine.edit.readOnlyBanner":`Viewing in read-only mode. Click {edit} to make changes.`,"engine.edit.readOnlyTypeBanner":`This metadata type is read-only for safety: it ships executable code or sensitive configuration and cannot be overlaid at runtime. Edit the source in your package and redeploy. To override this lock (use with caution), set {flag} to include {type}, or flip {override} in the registry.`,"engine.edit.artifactLockedBanner":`This {type} is provided by an installed package, so it is read-only at runtime. To change it, edit it in its source package and republish — or create a new {type} from scratch.`,"engine.badge.createOnly":`create-only`,"engine.repeater.empty":`No items. Click + to add.`,"engine.badge.writable":`writable`,"engine.badge.readOnly":`read-only`,"engine.edit.readOnly":`Read-only (runtime overrides disabled).`,"engine.edit.loading":`Loading`,"engine.edit.bespokeDesigner":`Designer`,"engine.edit.readOnlyHint":`Read-only — this metadata type does not allow runtime overrides. Edit the source in the package and redeploy.`,"engine.edit.unsaved":`Unsaved`,"engine.edit.unsavedHint":`You have unsaved changes.`,"engine.edit.diagnostics.title":`This metadata does not match the spec — {count} validation error(s).`,"engine.edit.diagnostics.warnTitle":`{count} warning(s) — review recommended.`,"engine.edit.diagnostics.more":`+{count} more…`,"engine.edit.loadFailed":`Failed to load {type}/{name}: {message}`,"engine.edit.unsavedLeaveConfirm":`You have unsaved changes. Leave this page anyway?`,"engine.edit.saving":`Saving…`,"engine.edit.savedAt":`Saved {time}`,"engine.edit.autoSaveOn":`Auto-save is on — click to disable`,"engine.edit.autoSaveOff":`Auto-save is off — click to enable`,"engine.edit.autoSavingShortly":`Auto-saving…`,"engine.edit.destructive":`Destructive change`,"engine.edit.destructiveHint":`The change would break existing references. Review the issues and confirm to force-save.`,"engine.edit.forceSave":`Force save`,"engine.cancel":`Cancel`,"engine.form.select":`Select...`,"engine.form.selectEllipsis":`Select…`,"engine.form.add":`Add`,"engine.form.addItem":`Add item`,"engine.form.addRow":`Add row`,"engine.form.remove":`Remove`,"engine.form.removeRow":`Remove row`,"engine.form.dragToReorder":`Drag to reorder`,"engine.form.arrayPlaceholder":`comma, separated, values`,"engine.form.loadingObjects":`Loading objects…`,"engine.form.noObjects":`object_name (no objects detected)`,"engine.form.selectObject":`Select object…`,"engine.form.selectObjectDots":`Select object...`,"engine.form.addObjects":`Add objects...`,"engine.form.loadingFields":`Loading fields…`,"engine.form.selectObjectFirst":`(Select an object first)`,"engine.form.selectField":`Select field…`,"engine.form.selectFieldDots":`Select field...`,"engine.form.addFields":`Add fields...`,"engine.form.noObjectBound":`No object bound`,"engine.form.none":`— None —`,"engine.form.notInObject":`(not in object)`,"engine.form.searchIcons":`Search icons…`,"engine.form.chooseIcon":`Choose an icon`,"engine.form.iconsTruncated":`Showing the first {shown} of {total} — type to narrow.`,"engine.form.noMatchingIcons":`No matching icons.`,"engine.form.keep":`Keep`,"engine.form.addField":`Add field…`,"engine.form.addFieldPlain":`Add field`,"engine.form.searchFields":`Search fields…`,"engine.form.allFieldsAdded":`All fields added`,"engine.form.noObjectFields":`No object fields ({error}).`,"engine.form.noMatchingFields":`No matching fields.`,"engine.form.noFieldsOnObject":`No fields on this object.`,"engine.form.added":`Added`,"engine.form.tagsPlaceholder":`Type and press Enter…`,"engine.form.noRows":`No rows. Click + to add.`,"engine.form.masterDetailSchemaError":`master-detail widget requires items.properties on the JSON schema (or an anyOf branch that has them).`,"engine.form.missingField":`Field {field} declared in form layout but missing from schema. Skipping.`,"engine.form.fallbackJson":`widget {widget} — falling back to JSON until a custom renderer is registered.`,"engine.form.keyRequired":`Key is required`,"engine.form.keyExists":`Key "{key}" already exists`,"engine.form.keyPattern":`Key must match {pattern}`,"engine.form.invalidJson":`Invalid JSON`,"engine.form.rootJsonObject":`Root must be a JSON object`,"engine.validation.invalid":`Invalid input`,"engine.validation.pattern":`Invalid string: must match pattern {pattern}`,"engine.validation.expectedStringUndefined":`Required text value`,"engine.validation.expectedType":`Invalid type: expected {expected}, received {received}`,"engine.validation.invalidOption":`Invalid option: expected one of {options}`,"engine.validation.failed":`Validation failed ({count} issues).`,"engine.validation.failedOne":`Validation failed (1 issue).`,"engine.validation.nameRequired":`A name is required.`,"engine.embedded.saved":`Saved.`,"engine.embedded.readOnlyParent":`The parent type is read-only — saving will still attempt a PUT and may be refused by the server.`,"engine.embedded.saveIntoParent":`Save into {parentType}`,"engine.embedded.saveNoPath":`Cannot save: this item has no embeddedPath registered.`,"engine.embedded.noSchema":`No form schema is registered for {type}. Edit the raw JSON below; saving will splice it back into {target}.`,"engine.embedded.readOnly":`Read-only`,"engine.embedded.noPathHint":`No embedded path registered — cannot determine where to write this item back.`,"engine.packages.title":`Packages`,"engine.packages.description":`Author, publish, and manage the packages installed in this environment.`,"engine.packages.refresh":`Refresh`,"engine.packages.import":`Import`,"engine.packages.importing":`Importing…`,"engine.packages.new":`New Package`,"engine.packages.search":`Search packages…`,"engine.packages.showPlatform":`Show platform packages ({count})`,"engine.packages.empty":`No packages`,"engine.packages.emptyCreate":`Create your first package to start authoring metadata.`,"engine.packages.emptyFiltered":`No packages match your filters.`,"engine.packages.loadFailed":`Failed to load packages`,"engine.packages.col.name":`Name`,"engine.packages.col.version":`Version`,"engine.packages.col.scope":`Scope`,"engine.packages.col.status":`Status`,"engine.packages.scope.project":`Read-only · code`,"engine.packages.scope.system":`System`,"engine.packages.scope.cloud":`Cloud`,"engine.packages.scope.writable":`Writable`,"engine.packages.status.enabled":`Enabled`,"engine.packages.status.disabled":`Disabled`,"engine.packages.import.invalidJson":`Selected file is not valid JSON.`,"engine.packages.import.invalidPackage":`Invalid package file: missing "id" or "name".`,"engine.packages.import.success":`Imported "{id}". Refresh the app switcher to use it.`,"engine.packages.import.failed":`Import failed`,"engine.packages.create.title":`New Package`,"engine.packages.create.description":`Create a project-scoped package to author and publish your own metadata. The id should be reverse-domain (e.g. {example}).`,"engine.packages.create.id":`Package ID`,"engine.packages.create.idInvalid":`Use letters, numbers, dot, dash or underscore (2–255 chars).`,"engine.packages.create.name":`Display name`,"engine.packages.create.version":`Version`,"engine.packages.create.versionInvalid":`Use semantic version, e.g. 0.1.0`,"engine.packages.create.creating":`Creating…`,"engine.packages.create.submit":`Create package`,"engine.packages.create.failed":`Failed to create package`,"engine.packages.detail.type":`Type`,"engine.packages.detail.description":`Description`,"engine.packages.detail.browseMetadata":`Browse this package's metadata`,"engine.packages.detail.pendingChanges":`Pending changes`,"engine.packages.detail.pendingHint":`Drafted, not yet published. Publish the whole app, or review each below.`,"engine.packages.detail.publishApp":`Publish app ({count})`,"engine.packages.detail.discardChanges":`Discard changes ({count})`,"engine.packages.detail.kernelReadOnly":`This is a platform kernel package. Authoring actions are disabled.`,"engine.packages.detail.actions":`Actions`,"engine.packages.detail.edit":`Edit`,"engine.packages.edit.title":`Edit package`,"engine.packages.edit.save":`Save changes`,"engine.packages.edit.saving":`Saving…`,"engine.packages.edit.saved":`Package updated`,"engine.packages.edit.failed":`Failed to update package`,"engine.packages.detail.publish":`Publish`,"engine.packages.detail.publishing":`Publishing…`,"engine.packages.detail.revert":`Revert`,"engine.packages.detail.enable":`Enable`,"engine.packages.detail.disable":`Disable`,"engine.packages.detail.export":`Export`,"engine.packages.detail.exporting":`Exporting…`,"engine.packages.detail.deleteApp":`Delete app`,"engine.packages.detail.deleting":`Deleting…`,"engine.packages.detail.discarding":`Discarding…`,"engine.packages.detail.actionFailed":`Action failed`,"engine.packages.detail.publishBlocked":`Publish blocked by {count} validation error(s).`,"engine.packages.detail.nothingToPublish":`Nothing to publish.`,"engine.packages.detail.published":`Package published.`,"engine.packages.detail.publishDraftsPartial":`Published {published}; {failed} failed.`,"engine.packages.detail.publishDraftsOk":`App published — all drafts are now live.`,"engine.packages.detail.reverted":`Reverted to last published state.`,"engine.packages.detail.discardDraftsPartial":`Discarded {discarded}; {failed} failed.`,"engine.packages.detail.discardDraftsOk":`All pending changes discarded — back to the published version.`,"engine.packages.detail.deleteConfirm":`Delete "{name}" and all its data?
|
|
2
|
-
|
|
3
|
-
This removes every object, view, dashboard and app in the package AND drops the database tables those objects created. This cannot be undone.`,"engine.packages.detail.deleteFailed":`Delete failed`,"engine.packages.detail.disabled":`Package disabled.`,"engine.packages.detail.enabled":`Package enabled.`,"engine.packages.detail.exported":`Package exported.`,"engine.packages.detail.duplicate":`Duplicate`,"engine.packages.detail.duplicating":`Duplicating…`,"engine.packages.detail.duplicatePrompt":`New package id for the duplicate (a fresh writable base):`,"engine.packages.detail.duplicated":`Package duplicated into a new base.`,"engine.packages.detail.adoptOrphans":`Adopt loose items`,"engine.packages.detail.adopting":`Adopting…`,"engine.packages.detail.adoptConfirm":`Move all package-less (loose) metadata in this environment INTO "{name}"? This rebinds orphaned items to this base.`,"engine.packages.detail.adopted":`Loose items adopted into this base.`,"engine.packages.detail.deleteKeepData":`Delete the DATA too?
|
|
4
|
-
|
|
5
|
-
OK = also drop all records (destructive). Cancel = keep records, delete only the structure.`,"engine.quickfind.placeholder":`Find metadata types or items… (try 'view', 'account')`,"engine.quickfind.empty":`Type to search across all metadata types.`,"engine.quickfind.title":`Quick Find`,"engine.quickfind.indexing":`Indexing items across`,"engine.quickfind.noMatches":`No matches.`,"engine.breadcrumb.allTypes":`All Metadata Types`,"perm.action.create":`Create`,"perm.action.read":`Read`,"perm.action.edit":`Edit`,"perm.action.delete":`Delete`,"perm.action.transfer":`Transfer ownership`,"perm.action.restore":`Restore from trash`,"perm.action.purge":`Hard delete (purge)`,"perm.action.viewAll":`View All Records (bypass sharing)`,"perm.action.modifyAll":`Modify All Records (bypass sharing)`,"perm.col.object":`Object`,"perm.col.bulk":`Bulk`,"perm.posture.private":`Private`,"perm.posture.private.tip":`Secure-by-default object (access.default = private): a permission set’s “*” wildcard grant does NOT cover it. Access needs an explicit grant on this object (or View/Modify All Records). Grants you edit here apply normally.`,"perm.owd.tip":`Org-wide default (sharingModel): the record-level visibility baseline for internal users, applied before positions and sharing rules. Object CRUD here gates the operation; the OWD decides which records it reaches (own vs org-wide).`,"perm.owd.ext.tip":`External OWD (externalSharingModel): the baseline for portal / partner principals — never wider than the internal model (ADR-0090 D11).`,"perm.owd.defaultPrivate":`Private (default)`,"perm.owd.private":`Private`,"perm.owd.public_read":`Public read`,"perm.owd.public_read_write":`Public read/write`,"perm.owd.controlled_by_parent":`By parent`,"perm.bulk.read":`R`,"perm.bulk.crud":`CRUD`,"perm.bulk.all":`All`,"perm.bulk.none":`None`,"perm.filter.placeholder":`Filter objects…`,"perm.filter.onlyGranted":`Only granted`,"perm.filter.empty":`No objects match the filter.`,"perm.field.name":`Name`,"perm.field.label":`Label`,"perm.badge.platform":`Platform`,"perm.badge.package":`Package`,"perm.badge.custom":`Custom`,"perm.badge.default":`Default for new users`,"perm.field.loading":`Loading fields…`,"perm.field.empty":`No fields registered for this object.`,"perm.field.col.name":`Field`,"perm.field.read":`Read`,"perm.field.edit":`Edit`,"perm.stat.objects":`Objects granted`,"perm.stat.fields":`Fields granted`,"perm.stat.objectsGranted":`Objects granted`,"perm.stat.fieldOverrides":`Field overrides`,"perm.stat.objectsSuffix":`objects`,"perm.subtitle.set":`Permission set`,"perm.field.systemCapabilities":`System Capabilities`,"perm.field.systemCapabilitiesHelp":`Platform / org capabilities granted to holders of this set (e.g. Studio access, user management). Designed here; Setup shows them read-only.`,"perm.rls.title":`Row-Level Security`,"perm.rls.help":`Row filters (CEL predicates) scoping which records holders may read/change.`,"perm.rls.name":`Policy name`,"perm.rls.object":`Object (* = all)`,"perm.rls.enabled":`Enabled`,"perm.rls.using":`USING (read filter)`,"perm.rls.check":`CHECK (write filter)`,"perm.rls.checkPlaceholder":`optional — defaults to USING`,"perm.rls.empty":`No row-level policies.`,"perm.rls.add":`Add policy`,"perm.tabs.title":`Tab Visibility`,"perm.tabs.help":`Per-tab visibility for holders of this set.`,"perm.tabs.empty":`No tab overrides.`,"perm.tabs.add":`Add tab`,"perm.tabs.vis.visible":`Visible`,"perm.tabs.vis.hidden":`Hidden`,"perm.tabs.vis.default_on":`Default on`,"perm.tabs.vis.default_off":`Default off`,"perm.admin.title":`Delegated Admin Scope`,"perm.admin.help":`Lets holders administer a business-unit subtree (assign users, manage bindings) without full admin.`,"perm.admin.businessUnit":`Business unit`,"perm.admin.includeSubtree":`Include subtree`,"perm.admin.manageAssignments":`Manage assignments`,"perm.admin.manageBindings":`Manage bindings`,"perm.admin.authorEnvironmentSets":`Author env sets`,"perm.admin.assignableSets":`Assignable permission sets`,"perm.admin.noSets":`No permission sets loaded.`,"perm.loading":`Loading permission set {name}…`,"perm.readOnly":`Read-only (OS_METADATA_WRITABLE not enabled)`,"designer.unsavedChanges":`Unsaved changes`,"designer.editingOverlay":`Editing overlay`,"designer.codeBaseline":`Code baseline`,"designer.canvas.nameToStart":`Name the object in the Properties panel to start designing fields.`,"designer.canvas.noFields":`No fields yet`,"designer.canvas.noFieldsHint":`Add a field to start designing the form. Click any field to edit its properties on the right.`,"designer.canvas.addField":`Add field`,"designer.canvas.addSection":`Add section`,"designer.canvas.addFieldToSection":`Add field to this section`,"designer.canvas.searchFieldType":`Search field type…`,"designer.canvas.noMatchingTypes":`No matching types.`,"designer.canvas.ungrouped":`Ungrouped`,"designer.canvas.emptySection":`Empty section`,"designer.canvas.dropHint":`Drag fields here, or add one below`,"designer.canvas.dropToAssign":`drop to assign`,"designer.canvas.collapseAll":`Collapse all`,"designer.canvas.expandAll":`Expand all`,"designer.canvas.fields":`fields`,"designer.canvas.required":`required`,"designer.canvas.sections":`sections`,"designer.canvas.collapseSection":`Collapse section`,"designer.canvas.expandSection":`Expand section`,"designer.canvas.moveSectionUp":`Move section up`,"designer.canvas.moveSectionDown":`Move section down`,"designer.canvas.removeSection":`Remove section`,"designer.canvas.removeSectionHint":`Remove section (fields move to Ungrouped)`,"designer.canvas.renameHint":`Double-click to rename`,"designer.canvas.sectionN":`Section {n}`,"designer.stub.pickDate":`Pick a date…`,"designer.stub.off":`Off`,"designer.stub.select":`Select…`,"designer.stub.pickMulti":`Pick one or more…`,"designer.stub.uploadImage":`Upload image`,"designer.stub.uploadAvatar":`Upload avatar`,"designer.stub.upload":`Upload {type}`,"designer.stub.qrcode":`QR code`,"designer.stub.computed":`Computed value`,"designer.stub.composite":`Composite — nested sub-fields edit in the inspector.`,"designer.stub.repeater":`Repeater — repeating row group.`,"designer.stub.searchRef":`Search {ref}…`,"designer.stub.chooseRelated":`Choose related object…`,"designer.stub.latLng":`Lat, lng`,"designer.field.kind":`Field`,"designer.field.close":`Close`,"designer.field.missing":`This field no longer exists in the draft.`,"designer.field.remove":`Remove “{label}”`,"designer.field.section.basic":`Basic`,"designer.field.section.advanced":`Advanced`,"designer.field.section.options":`{type} options`,"designer.field.apiName":`API name`,"designer.field.label":`Label`,"designer.field.type":`Type`,"designer.field.required":`Required`,"designer.field.unique":`Unique`,"designer.field.description":`Description`,"designer.field.readonly":`Read-only`,"designer.field.hidden":`Hidden`,"designer.field.indexed":`Indexed`,"designer.field.externalId":`External ID`,"designer.field.trackHistory":`Track history`,"designer.field.placeholder":`Placeholder`,"designer.field.group":`Group`,"designer.field.noGroup":`— No group —`,"designer.field.picklistValues":`Picklist values`,"designer.field.noValues":`No values yet.`,"designer.field.addValue":`Add value`,"designer.field.optValue":`value`,"designer.field.optLabel":`Label`,"designer.field.optColor":`Color`,"designer.field.moveUp":`Move up`,"designer.field.moveDown":`Move down`,"designer.field.removeValue":`Remove`,"designer.field.relatedObject":`Related object`,"designer.field.relationshipName":`Relationship name`,"designer.field.relationshipNameHint":`Inverse collection key on the parent`,"designer.field.objectNamePlaceholder":`object_name`,"designer.field.lookup.pickerConfig":`Picker config`,"designer.field.lookup.displayField":`Display field`,"designer.field.lookup.descriptionField":`Description field`,"designer.field.lookup.selectField":`Select a field…`,"designer.field.lookup.setTargetFirst":`Set the target object first`,"designer.field.lookup.searchFields":`Search fields…`,"designer.field.lookup.selectableRecords":`Selectable records`,"designer.field.lookup.addFilter":`Add filter`,"designer.field.lookup.noFilter":`No filter — every {ref} record is selectable.`,"designer.field.lookup.filterN":`Filter {n}`,"designer.field.lookup.removeFilter":`Remove filter`,"designer.field.lookup.filterField":`Field`,"designer.field.lookup.filterOperator":`Operator`,"designer.field.lookup.filterValue":`Value`,"designer.field.lookup.dependsOn":`Depends on (same-record fields)`,"designer.field.lookup.addDependsOn":`Add a field this lookup depends on…`,"designer.field.lookup.searchHostFields":`Search this object's fields…`,"designer.field.lookup.pageSize":`Picker page size`,"designer.field.lookup.allowCreate":`Allow quick-create`,"designer.field.formula":`Formula (CEL)`,"designer.field.precision":`Precision`,"designer.field.scale":`Scale`,"designer.field.min":`Min`,"designer.field.max":`Max`,"designer.field.maxLength":`Max length`,"designer.object.kind":`Object`,"designer.object.section.basic":`Basic info`,"designer.object.section.basicHint":`Identity, display names & classification`,"designer.object.name":`Name`,"designer.object.nameHint":`snake_case unique identifier (cannot change after create)`,"designer.object.namePlaceholder":`account`,"designer.object.label":`Label`,"designer.object.labelPlaceholder":`e.g. Account`,"designer.object.pluralLabel":`Plural label`,"designer.object.pluralPlaceholder":`e.g. Accounts`,"designer.object.icon":`Icon`,"designer.object.iconHint":`Lucide icon name (e.g. “building”, “users”)`,"designer.object.description":`Description`,"designer.object.descriptionPlaceholder":`What this object represents`,"designer.object.section.access":`Access`,"designer.object.section.accessHint":`Exposure posture and capability requirements. Enforced server-side by the security engine.`,"designer.object.posture":`Exposure posture`,"designer.object.posture.public":`Public — covered by wildcard grants (default)`,"designer.object.posture.private":`Private — needs an explicit grant`,"designer.object.posture.publicHint":`Covered by a permission set’s “*” wildcard grant — the platform default for business objects.`,"designer.object.posture.privateHint":`Not covered by “*” wildcard grants: only an explicit grant on this object (or View/Modify All Records) reaches it. Make sure some permission set grants this object before publishing, or nobody but platform admins can use it.`,"designer.object.reqPerms":`Required capabilities`,"designer.object.reqPerms.hint":`AND-gate: callers must hold every listed capability IN ADDITION to their CRUD grants. Comma-separated capability names (e.g. manage_platform_settings). A name no permission set grants fails closed at runtime.`,"designer.object.reqPerms.mode.all":`All operations`,"designer.object.reqPerms.mode.perOp":`Per operation`,"designer.object.reqPerms.placeholder":`e.g. manage_billing`,"designer.object.reqPerms.op.read":`Read`,"designer.object.reqPerms.op.create":`Create`,"designer.object.reqPerms.op.update":`Update`,"designer.object.reqPerms.op.delete":`Delete`,"designer.field.defaultValue":`Default value`,"designer.field.defaultNone":`— None —`,"designer.field.true":`True`,"designer.field.false":`False`,"designer.field.duplicate":`Duplicate field`,"designer.field.copySuffix":` copy`,"designer.field.helpText":`Help text`,"designer.field.helpTextPlaceholder":`Shown below the field on the form`,"designer.field.minLength":`Min length`,"designer.field.conditionalRequired":`Required when (CEL)`,"designer.field.conditionalRequiredHint":`Field becomes required when this predicate is true.`,"designer.canvas.bulkSelected":`{n} selected`,"designer.canvas.bulkMoveTo":`Move to section`,"designer.canvas.bulkDelete":`Delete`,"designer.canvas.bulkClear":`Clear`,"designer.canvas.bulkHint":`Ctrl/⌘-click or Shift-click to select multiple fields.`,"designer.canvas.reviewChanges":`Review changes`,"designer.canvas.reviewExit":`Exit review`,"designer.canvas.reviewVsPublished":`vs last published`,"designer.canvas.diffAdded":`Added`,"designer.canvas.diffChanged":`Changed`,"designer.canvas.diffRemoved":`Removed`,"designer.canvas.diffChangedKeys":`Changed: {keys}`,"designer.draftReview.title":`Review changes`,"designer.draftReview.badge":`{n} pending`,"designer.draftReview.empty":`No changes vs the published version.`,"designer.canvas.askAi":`Ask AI`,"designer.canvas.askAiGenerate":`Generate fields with AI`,"engine.studio.cancel":`Cancel`,"engine.studio.create":`Create`,"engine.studio.creating":`Creating…`,"engine.studio.createDraft":`Create (save as draft)`,"engine.studio.saveDraft":`Save draft`,"engine.studio.app.nameLabel":`App name`,"engine.studio.app.idLabel":`Identifier`,"engine.studio.data.nameLabel":`Object name`,"engine.studio.data.idLabel":`Identifier`,"engine.studio.auto.nameLabel":`Flow name`,"engine.studio.auto.idLabel":`Identifier`,"engine.studio.access.nameLabel":`Name`,"engine.studio.access.idLabel":`Identifier`,"engine.studio.pkg.manage":`Package info & settings`,"engine.studio.data.savedDraft":`Object “{label}” saved as draft`,"engine.studio.data.lastSaved":`Saved {time}`,"engine.studio.publish":`Publish`,"engine.studio.loading":`Loading…`,"engine.studio.loadFailed":`Failed to load`,"engine.studio.unpublishedDraft":`Unpublished draft`,"engine.studio.unpublished":`Unpublished`,"engine.studio.new":`New`,"engine.studio.edit":`Edit`,"engine.studio.done":`Done`,"engine.studio.close":`Close`,"engine.studio.deselect":`Clear selection`,"engine.studio.toggleRail":`Toggle sidebar`,"engine.studio.home":`Back to home`,"engine.studio.pillar.data":`Data`,"engine.studio.pillar.automations":`Automations`,"engine.studio.pillar.interfaces":`Interfaces`,"engine.studio.pillar.access":`Access`,"engine.studio.changes":`Changes`,"engine.studio.publishTitle":`Confirm and publish all pending drafts at once (whole package · one atomic release)`,"engine.studio.publishNoneTitle":`No drafts pending publish`,"engine.studio.publishedAll":`Published all drafts in this package (one atomic release)`,"engine.studio.app.open":`Open app`,"engine.studio.app.openTitle":`Open app “{label}” (the published front-end)`,"engine.studio.app.create":`Create app`,"engine.studio.app.noneTitle":`This package has no app (front-end) yet — create one`,"engine.studio.app.willOpenAfterPublish":`After publishing, this becomes “Open app”`,"engine.studio.app.pending":`App “{label}” pending publish`,"engine.studio.app.namePlaceholder":`App name (e.g. Order Center)`,"engine.studio.app.idPlaceholder":`Identifier (e.g. orders_app)`,"engine.studio.app.savedDraft":`App “{label}” saved as draft — open it after publishing`,"engine.studio.pkg.switchTitle":`Switch / create package`,"engine.studio.pkg.readonly":`Read-only`,"engine.studio.pkg.readonlyHint":`Read-only package — switch to or create a writable package to edit.`,"engine.studio.app.scaffoldNav":`Add this package's objects as menu items`,"engine.studio.landing.title":`App Builder`,"engine.studio.landing.description":`Design objects, forms, automations and interfaces inside a writable package; edits save as drafts and the whole package publishes in one release. Code-loaded packages are read-only (browse only).`,"engine.studio.landing.mineHeading":`My packages (writable)`,"engine.studio.landing.noneWritable":`No writable packages yet — create one to start.`,"engine.studio.landing.dup":`Duplicate`,"engine.studio.landing.dupTitle":`Duplicate this package into a new writable copy (like “duplicate base”)`,"engine.studio.landing.dupDefaultName":`{name} copy`,"engine.studio.landing.dupNamePlaceholder":`Copy name`,"engine.studio.landing.dupIdPlaceholder":`Copy package ID`,"engine.studio.landing.dupGo":`Duplicate and open the builder`,"engine.studio.landing.dupCreated":`Duplicated into writable package “{name}”`,"engine.studio.landing.createGo":`Create and start building`,"engine.studio.landing.installedHeading":`Installed (read-only · browsable)`,"engine.studio.designer.search":`Search…`,"engine.studio.designer.select":`Select…`,"engine.studio.designer.pickDate":`Pick a date…`,"engine.studio.designer.fieldAria":`{label} — click to edit properties, drag to reorder`,"engine.studio.designer.groupUp":`Move group up`,"engine.studio.designer.groupDown":`Move group down`,"engine.studio.designer.groupDelete":`Delete group`,"engine.studio.designer.groupDeleteTitle":`Delete group (its fields move to Ungrouped)`,"engine.studio.designer.dropHere":`Drag fields here`,"engine.studio.designer.ungrouped":`Ungrouped`,"engine.studio.designer.newGroup":`New group`,"engine.studio.designer.hint":`Drag to reorder / move across groups · click a field to edit its properties`,"engine.studio.designer.addGroup":`Add group`,"engine.studio.rules.title":`Validation rules`,"engine.studio.rules.none":`No validation rules yet.`,"engine.studio.rules.explain":`Rules run when a record is saved: when the condition is true, the save is rejected with the message.`,"engine.studio.rules.noMessage":`(no message)`,"engine.studio.rules.pick":`Select a rule on the left, or click “New” to create one.`,"engine.studio.rules.structured":`“{type}” rules carry structured configuration (state-machine transitions / format constraints etc.) and cannot be edited here yet — maintain them in the code package. Message: {message}`,"engine.studio.rules.none2":`(none)`,"engine.studio.rules.deleteRule":`Delete rule`,"engine.studio.rules.nameLabel":`Rule name (snake_case, unique)`,"engine.studio.rules.messageLabel":`Error message (shown to the user when validation fails)`,"engine.studio.rules.messagePlaceholder":`e.g. Completion date is required when status is Done`,"engine.studio.rules.celPre":`Fail condition (CEL) — when the condition is `,"engine.studio.rules.celTrue":`true`,"engine.studio.rules.celMid":`, the save is rejected with the message above; new rules default to `,"engine.studio.rules.celPost":` (never fires) — replace it with a real condition.`,"engine.studio.rules.severity":`Severity`,"engine.studio.rules.severityError":`error (rejects the save)`,"engine.studio.rules.enabled":`Enabled`,"engine.studio.rules.delete":`Delete`,"engine.studio.rules.type":`Type`,"engine.studio.rules.newType":`New validation type`,"engine.studio.rules.typeScript":`Script — CEL fail condition`,"engine.studio.rules.typeCrossField":`Cross-field — CEL over multiple fields`,"engine.studio.rules.typeStateMachine":`State machine — allowed transitions`,"engine.studio.rules.typeFormat":`Format — regex / built-in format`,"engine.studio.rules.typeJsonSchema":`JSON schema — validate a JSON field`,"engine.studio.rules.typeConditional":`Conditional — apply a rule when a guard holds`,"engine.studio.rules.label":`Label (optional)`,"engine.studio.rules.field":`Field`,"engine.studio.rules.statusField":`Status field`,"engine.studio.rules.fields":`Participating fields`,"engine.studio.rules.noFields":`This object has no fields yet.`,"engine.studio.rules.pickField":`— pick a field —`,"engine.studio.rules.format":`Built-in format`,"engine.studio.rules.formatNone":`— none —`,"engine.studio.rules.regex":`Regex pattern`,"engine.studio.rules.transitions":`Allowed transitions (from → next states)`,"engine.studio.rules.transitionFrom":`From state`,"engine.studio.rules.transitionTo":`Next states (comma-separated)`,"engine.studio.rules.addTransition":`Add transition`,"engine.studio.rules.jsonSchema":`JSON Schema`,"engine.studio.rules.invalidJson":`Invalid JSON`,"engine.studio.rules.then":`Then — rule applied when the condition holds (JSON)`,"engine.studio.rules.otherwise":`Otherwise — rule applied when it does not (JSON, optional)`,"engine.studio.rules.events":`Runs on`,"engine.studio.rules.event.insert":`Create`,"engine.studio.rules.event.update":`Update`,"engine.studio.rules.event.delete":`Delete`,"engine.studio.rules.priority":`Priority`,"engine.studio.settings.basics":`Basics`,"engine.studio.settings.noInspector":`No default object inspector registered.`,"engine.studio.settings.semanticRoles":`Semantic roles`,"engine.studio.settings.semanticHint":`Applied consistently across forms, lists and detail pages (ADR-0085)`,"engine.studio.settings.nameField":`Record name field (nameField) — shown in titles, links and references`,"engine.studio.settings.autoDerive":`(auto-derived)`,"engine.studio.settings.stageField":`Lifecycle field (stageField) — the detail page progress bar renders its options`,"engine.studio.settings.autoDetect":`(auto-detect status/stage-like field names)`,"engine.studio.settings.stageNone":`None — this object has no linear flow; hide the progress bar`,"engine.studio.settings.highlightFields":`Highlight fields (highlightFields) — default list columns, cards and detail header take the first 4; order is display order`,"engine.studio.settings.removeField":`Remove {field}`,"engine.studio.settings.addFieldOption":`+ Add field…`,"engine.studio.settings.undeclared":`(not declared — surfaces pick heuristically)`,"engine.studio.settings.sharing":`Record sharing (OWD)`,"engine.studio.settings.sharingHint":`Baseline record visibility applied before positions and sharing rules (ADR-0056/0090)`,"engine.studio.settings.sharingModel":`Sharing model (sharingModel) — who can see and edit records another user owns`,"engine.studio.settings.sharingUnset":`(not set — defaults to Private)`,"engine.studio.settings.sharingPrivate":`Private — owner only`,"engine.studio.settings.sharingPublicRead":`Public read — everyone reads, only the owner writes`,"engine.studio.settings.sharingPublicReadWrite":`Public read/write — everyone reads and writes`,"engine.studio.settings.sharingControlledByParent":`Controlled by parent — inherited from the master record`,"engine.studio.settings.sharingDescUnset":`Not set — the platform defaults to Private (ADR-0090): only the owner can access records. Pick an explicit model to widen visibility.`,"engine.studio.settings.sharingDescPrivate":`Only the owner (plus users granted via positions or sharing rules) can access a record. Read / Edit permissions then apply to owned records only.`,"engine.studio.settings.sharingDescPublicRead":`Every user in the tenant can read all records; only the owner can edit.`,"engine.studio.settings.sharingDescPublicReadWrite":`Every user in the tenant can read and edit all records.`,"engine.studio.settings.sharingDescControlledByParent":`Record visibility is inherited from the parent (master) record through its master-detail relationship.`,"engine.studio.settings.sharingExternal":`External sharing (externalSharingModel) — baseline for portal / partner principals`,"engine.studio.settings.sharingExternalUnset":`(not set — defaults to Private)`,"engine.studio.settings.sharingExternalDesc":`Applies to external principals only (ADR-0090 D11). Never wider than the internal model; unset falls back to Private.`,"engine.studio.settings.sharingExternalWider":`External baseline is WIDER than the internal sharing model — publishing will be rejected (ADR-0090 D11). Narrow it to the internal model or below (private < public read < public read/write).`,"engine.studio.settings.capabilities":`Capabilities (enable.*)`,"engine.studio.settings.capabilitiesHint":`Record-page features — every switch here is enforced by the runtime`,"engine.studio.settings.capTrackHistory":`History tab (trackHistory)`,"engine.studio.settings.capTrackHistoryDesc":`Shows the read-only History tab (audit trail) on record pages. Pair with per-field history tracking for human-readable diffs; audit capture itself is always on for compliance.`,"engine.studio.settings.capFiles":`Attachments (files)`,"engine.studio.settings.capFilesDesc":`Generic Attachments panel on record pages (upload/download/delete). Off = the server also rejects new attachments targeting this object.`,"engine.studio.settings.capFeeds":`Comments & feed (feeds)`,"engine.studio.settings.capFeedsDesc":`Record discussion panel with @mentions and reactions. Off = the panel is hidden AND new comments are rejected server-side.`,"engine.studio.settings.capActivities":`Activity timeline (activities)`,"engine.studio.settings.capActivitiesDesc":`Mirrors create/update/delete into the record timeline. Off = no timeline rows for this object (the compliance audit log is unaffected).`,"engine.studio.settings.capClone":`Cloning (clone)`,"engine.studio.settings.capCloneDesc":`Allow duplicating records from the record page / API. Off = the clone endpoint returns 403 for this object.`,"engine.studio.pkg.writable":`Writable`,"engine.studio.pkg.heading":`Packages (apps)`,"engine.studio.pkg.none":`No app packages yet`,"engine.studio.pkg.namePlaceholder":`Name (e.g. Repair Center)`,"engine.studio.pkg.idPlaceholder":`Package ID (e.g. com.example.repairs)`,"engine.studio.pkg.idStrippedNotice":`Unsupported characters were removed — allowed: lowercase letters, digits, dots, hyphens, underscores`,"engine.studio.pkg.idFormatHint":`Use a reverse-domain identifier with at least one dot, e.g. com.example.myapp`,"engine.studio.pkg.idFromNameUnavailable":`No identifier could be suggested from this name — type one below (e.g. com.example.myapp)`,"engine.studio.pkg.createWritable":`Create writable package`,"engine.studio.pkg.new":`New package (writable base)`,"engine.studio.pkg.created":`Package {name} created (writable)`,"engine.studio.nav.selectItem":`Select a menu item on the left.`,"engine.studio.nav.label":`Label`,"engine.studio.nav.labelPlaceholder":`e.g. Positions`,"engine.studio.nav.linkObject":`Link to object`,"engine.studio.nav.chooseObject":`— Choose object —`,"engine.studio.nav.boundHint":`This menu item opens that object’s record list.`,"engine.studio.nav.unboundHint":`Choose an object; the menu item will open its record list.`,"engine.studio.nav.noObjects":`This package has no objects yet — create one in the Data pillar first.`,"engine.studio.if.pickLeft":`Select a menu item on the left`,"engine.studio.if.navHeading":`{app} · Navigation`,"engine.studio.if.editNavTitle":`Edit navigation (drag to reorder / rename / add-remove)`,"engine.studio.if.doneEditTitle":`Done editing`,"engine.studio.if.noApp":`This package has no app yet.`,"engine.studio.if.noNavItems":`No nav items yet — (click “Edit” above to add)`,"engine.studio.if.previewIsRuntime":`Live preview`,"engine.studio.if.tabCanvas":`Canvas`,"engine.studio.if.noAppTitle":`This package has no app yet`,"engine.studio.if.noAppHint":`Create an app to design its navigation and interfaces.`,"engine.studio.if.readonlyPreview":`{type} shows a read-only preview for now; design support is in progress.`,"engine.studio.if.objectHintPre":`Runtime list preview · edit fields / structure in the `,"engine.studio.if.objectHintPost":` pillar`,"engine.studio.inspector.props":`Properties`,"engine.studio.inspector.collapse":`Collapse properties`,"engine.studio.inspector.expand":`Show properties`,"engine.studio.inspector.tabProps":`Properties`,"engine.studio.inspector.tabSource":`Source`,"engine.studio.inspector.emptyLine1":`Click a block on the canvas,`,"engine.studio.inspector.emptyLine2":`and edit its properties right here.`,"engine.studio.inspector.noPageSchema":`Page settings are unavailable — the page schema could not be loaded.`,"engine.studio.inspector.sourcePageLine1":`This page is {kind} source, not a block tree —`,"engine.studio.inspector.sourcePageLine2":`edit it in the Source tab; the canvas shows the live preview.`,"engine.studio.data.newFieldLabel":`New field`,"engine.studio.data.nameFieldLabel":`Name`,"engine.studio.data.idExists":`Identifier “{name}” already exists`,"engine.studio.data.fieldCount":`{count} fields`,"engine.studio.data.pickObject":`Select an object`,"engine.studio.data.objects":`Objects`,"engine.studio.data.searchObjects":`Search objects…`,"engine.studio.data.noObjects":`No objects yet — create one below to start`,"engine.studio.data.labelPlaceholder":`Display name (e.g. Repair Ticket)`,"engine.studio.data.idPlaceholder":`Identifier (e.g. repair_ticket)`,"engine.studio.data.newObject":`New object`,"engine.studio.data.readOnlyPackage":`This package is read-only — switch to or create a writable package to add objects`,"engine.studio.data.firstObjectTitle":`Start with your first object`,"engine.studio.data.firstObjectHint":`Objects are your app’s data foundation (e.g. “Orders”, “Customers”). Enter a display name and identifier at the bottom-left to create one; then design its fields, forms, and automations, and publish once at the end.`,"engine.studio.data.tab.records":`Records`,"engine.studio.data.tab.form":`Form`,"engine.studio.data.tab.rules":`Validations`,"engine.studio.data.tab.settings":`Settings`,"engine.studio.data.tab.hooks":`Hooks`,"engine.studio.data.tab.actions":`Actions`,"engine.studio.data.tab.api":`API`,"engine.studio.actions.none":`No actions on this object.`,"engine.studio.actions.pick":`Select an action to edit its properties.`,"engine.studio.actions.newLabel":`New action`,"engine.studio.actions.delete":`Delete`,"engine.studio.api.subtitle":`Auto-generated REST endpoints for this object, derived from its current schema. Copy a request as cURL and call it with your API token.`,"engine.studio.api.list":`List records`,"engine.studio.api.create":`Create a record`,"engine.studio.api.get":`Get one by id`,"engine.studio.api.update":`Update a record`,"engine.studio.api.delete":`Delete a record`,"engine.studio.api.copyCurl":`Copy as cURL`,"engine.studio.api.copied":`Copied`,"engine.studio.api.body":`Example body`,"engine.studio.hooks.none":`No hooks target this object.`,"engine.studio.hooks.async":`async`,"engine.studio.hooks.pick":`Select a hook to edit it.`,"engine.studio.hooks.newLabel":`New hook`,"engine.studio.hooks.saved":`Saved “{label}” as draft`,"engine.studio.hooks.save":`Save hook`,"engine.studio.data.addFieldTitle":`Add a field (then set its type and properties on the right)`,"engine.studio.data.addField":`Add field`,"engine.studio.data.editFieldProps":`Edit field properties`,"engine.studio.data.draftObjectTitle":`Unpublished new object`,"engine.studio.data.draftObjectHint":`The Records grid queries real data, but this object has no table until it’s published. Design fields and groups in “Form · Layout” first, then click “Publish” in the top bar — after publishing, this becomes its live data grid.`,"engine.studio.data.goDesignFields":`Go to “Form · Layout” to design fields`,"engine.studio.data.form.layout":`Layout`,"engine.studio.data.form.preview":`Preview`,"engine.studio.data.form.layoutBadge":`Draft layout — your unsaved changes`,"engine.studio.data.form.previewBadge":`Preview of the published version`,"engine.studio.data.form.previewWarn":`You have unpublished changes — this preview shows the pre-publish (published) state; confirm the draft in “Layout”, and to see the post-publish result, click “Publish” in the top bar first.`,"engine.studio.data.form.noPublishedTitle":`No published definition yet`,"engine.studio.data.form.noPublishedHint":`“Preview” renders the published runtime form, but this object isn’t published yet. Confirm the draft in “Layout”, then click “Publish” in the top bar to preview.`,"engine.studio.data.fieldProps":`Field properties`,"engine.studio.data.groupProps":`Group properties`,"engine.studio.designer.group.kind":`Group`,"engine.studio.designer.group.settings":`Group settings`,"engine.studio.designer.group.nameLabel":`Group name`,"engine.studio.designer.group.missing":`This group no longer exists.`,"engine.studio.designer.group.collapseLabel":`Collapse behavior`,"engine.studio.designer.group.collapseNone":`Not collapsible`,"engine.studio.designer.group.collapseExpanded":`Collapsible · expanded by default`,"engine.studio.designer.group.collapseCollapsed":`Collapsible · collapsed by default`,"engine.studio.designer.group.collapseHint":`Controls how this group appears in the actual form (see Preview).`,"engine.studio.auto.nodeStart":`Start`,"engine.studio.auto.nodeEnd":`End`,"engine.studio.auto.savedDraft":`Automation “{label}” saved as draft`,"engine.studio.auto.defaultOff":`Off by default · review before enabling`,"engine.studio.auto.heading":`Automations · flow`,"engine.studio.auto.on":`On`,"engine.studio.auto.off":`Off`,"engine.studio.auto.offTitle":`Disabled — will not run`,"engine.studio.auto.onBound":`Enabled · bound to its trigger`,"engine.studio.auto.onUnbound":`Enabled · no trigger (run manually)`,"engine.studio.auto.enabled":`Enabled`,"engine.studio.auto.disabled":`Disabled`,"engine.studio.auto.enableTitle":`Enable this automation (publish to apply)`,"engine.studio.auto.disableTitle":`Disable this automation (publish to apply)`,"engine.studio.auto.enabledToast":`Enabled — publish to apply`,"engine.studio.auto.disabledToast":`Disabled — publish to apply`,"engine.studio.auto.newTitle":`New automation`,"engine.studio.auto.none":`No automations yet — click “New” to start`,"engine.studio.auto.namePlaceholder":`Name (e.g. Offer Notice)`,"engine.studio.auto.idPlaceholder":`Identifier (e.g. offer_notice)`,"engine.studio.auto.canvasHint":`Visual orchestration · click a node to configure`,"engine.studio.auto.pick":`Select an automation`,"engine.studio.auto.config":`Configuration`,"engine.studio.auto.emptyLine1":`Click a node on the canvas,`,"engine.studio.auto.emptyLine2":`and its configuration appears here.`,"engine.studio.access.created":`Permission set “{label}” created`,"engine.studio.access.title":`Permission matrix`,"engine.studio.access.subtitle":`Objects × CRUD · field-level R/W`,"engine.studio.access.bannerTitle":`This matrix lists only the objects this package declares, and “Save” merges just that slice — grants contributed by other packages are preserved. Edits are saved as package drafts and go live when you Publish the package (top bar), exactly like Data and Interfaces.`,"engine.studio.access.banner":`This package’s objects · saved as draft`,"engine.studio.access.suggestPromptEveryone":`This package suggests granting "{set}" to all signed-in users (Everyone).`,"engine.studio.access.suggestPromptGuest":`This package suggests granting "{set}" to unauthenticated visitors (Guest).`,"engine.studio.access.suggestConfirm":`Grant`,"engine.studio.access.suggestConfirming":`Granting…`,"engine.studio.access.suggestDismiss":`Dismiss`,"engine.studio.access.suggestConfirmedToast":`"{set}" is now granted to {anchor}.`,"engine.studio.access.suggestDismissedToast":`Suggestion for "{set}" dismissed.`,"engine.studio.access.heading":`Permission sets`,"engine.studio.access.search":`Search permissions…`,"engine.studio.access.none":`No permission sets yet — create one below`,"engine.studio.access.labelPlaceholder":`Display name (e.g. Sales permissions)`,"engine.studio.access.idPlaceholder":`Identifier (e.g. sales_perms)`,"engine.studio.access.new":`New permission set`,"engine.studio.access.emptyMain":`Create a permission set to start configuring`,"engine.studio.access.pick":`Select a permission set`,"engine.studio.access.explain.open":`Explain access`,"engine.studio.access.explain.title":`Why can this user access?`,"engine.studio.access.explain.description":`Runs the same evaluation pipeline as enforcement and reports what each layer contributed — permission set → position → binding chain, OWD/sharing verdicts.`,"engine.studio.access.explain.user":`User`,"engine.studio.access.explain.self":`Me (calling principal)`,"engine.studio.access.explain.pickUser":`Select user…`,"engine.studio.access.explain.clearUser":`Reset to me`,"engine.studio.access.explain.pickUserTitle":`Select the user to explain`,"engine.studio.access.explain.object":`Object`,"engine.studio.access.explain.objectPlaceholder":`Object name (e.g. crm_lead)`,"engine.studio.access.explain.operation":`Operation`,"engine.studio.access.explain.run":`Explain`,"engine.studio.access.explain.running":`Explaining…`,"engine.studio.access.explain.allowedLine":`{operation} on “{object}” is ALLOWED for this principal.`,"engine.studio.access.explain.deniedLine":`{operation} on “{object}” is DENIED for this principal.`,"engine.studio.access.explain.principal":`Principal`,"engine.studio.access.explain.positions":`Positions`,"engine.studio.access.explain.permissionSets":`Permission sets`,"engine.studio.access.explain.layers":`Evaluation pipeline`,"engine.studio.access.explain.contributors":`Contributed by`,"engine.studio.access.explain.readFilter":`Composed row filter (read)`,"engine.studio.access.explain.empty":`Pick an object and operation, then click “Explain”.`,"engine.studio.access.explain.failed":`Explain failed`,"engine.studio.access.explain.forbidden":`You cannot explain that user — it requires the manage_users capability or a delegated admin scope covering them (ADR-0090 D6/D12).`,"engine.studio.access.explain.layer.principal":`Principal resolution`,"engine.studio.access.explain.layer.required_permissions":`Required capabilities`,"engine.studio.access.explain.layer.object_crud":`Object CRUD grant`,"engine.studio.access.explain.layer.fls":`Field-level security`,"engine.studio.access.explain.layer.owd_baseline":`Record baseline (OWD)`,"engine.studio.access.explain.layer.depth":`Scope depth`,"engine.studio.access.explain.layer.sharing":`Sharing`,"engine.studio.access.explain.layer.vama_bypass":`View/Modify All bypass`,"engine.studio.access.explain.layer.rls":`Row-level security`,"engine.studio.access.explain.verdict.grants":`grants`,"engine.studio.access.explain.verdict.denies":`denies`,"engine.studio.access.explain.verdict.narrows":`narrows`,"engine.studio.access.explain.verdict.widens":`widens`,"engine.studio.access.explain.verdict.neutral":`neutral`,"engine.studio.access.explain.verdict.not_applicable":`n/a`,"engine.studio.access.explain.op.read":`Read`,"engine.studio.access.explain.op.create":`Create`,"engine.studio.access.explain.op.update":`Update`,"engine.studio.access.explain.op.delete":`Delete`,"engine.studio.access.explain.op.transfer":`Transfer`,"engine.studio.access.explain.op.restore":`Restore`,"engine.studio.access.explain.op.purge":`Purge`,"engine.studio.access.explain.record":`Record (optional)`,"engine.studio.access.explain.recordPlaceholder":`Record id — explain one concrete row`,"engine.studio.access.explain.pickRecord":`Pick`,"engine.studio.access.explain.clearRecord":`Clear record`,"engine.studio.access.explain.pickRecordTitle":`Select the record to explain`,"engine.studio.access.explain.recordVisibleLine":`Record {recordId} is VISIBLE for this operation.`,"engine.studio.access.explain.recordHiddenLine":`Record {recordId} is NOT visible for this operation.`,"engine.studio.access.explain.decidedBy":`Decided by`,"engine.studio.access.explain.postureHint":`The posture rung the principal was evaluated at (ADR-0095 D2).`,"engine.studio.access.explain.posture.PLATFORM_ADMIN":`Platform admin`,"engine.studio.access.explain.posture.TENANT_ADMIN":`Tenant admin`,"engine.studio.access.explain.posture.MEMBER":`Member`,"engine.studio.access.explain.posture.EXTERNAL":`External`,"engine.studio.access.explain.layer.tenant_isolation":`Tenant isolation (Layer 0)`,"engine.studio.access.explain.kernelTier.layer_0_tenant":`Tenant wall`,"engine.studio.access.explain.kernelTier.layer_1_business":`Business RLS`,"engine.studio.access.explain.kernelTierHint":`Layer 0 = the always-first org wall; Layer 1 = business row-level security.`,"engine.studio.access.explain.recordOutcome":`This record`,"engine.studio.access.explain.outcome.admitted":`admitted`,"engine.studio.access.explain.outcome.excluded":`excluded`,"engine.studio.access.explain.outcome.not_evaluated":`not evaluated`,"engine.studio.access.explain.matches":`record matches`,"engine.studio.access.explain.noMatch":`record does not match`,"engine.studio.access.explain.effectiveRowFilter":`Effective row filter`,"engine.studio.access.explain.ruleKind.tenant_filter":`Tenant filter`,"engine.studio.access.explain.ruleKind.owd_baseline":`OWD baseline`,"engine.studio.access.explain.ruleKind.ownership":`Ownership`,"engine.studio.access.explain.ruleKind.record_share":`Record share`,"engine.studio.access.explain.ruleKind.sharing_rule":`Sharing rule`,"engine.studio.access.explain.ruleKind.team":`Team`,"engine.studio.access.explain.ruleKind.territory":`Territory`,"engine.studio.access.explain.ruleKind.rls_policy":`RLS policy`,"engine.appNav.heading":`Navigation`,"engine.appNav.addItem":`Add nav item`,"engine.appNav.removeItem":`Remove nav item`,"engine.appNav.empty":`Empty — click “Add nav item” to start`,"engine.appNav.emptyReadonly":`No top-level nav items yet`,"engine.appNav.newItem":`New item`,"engine.appNav.itemOne":`item`,"engine.appNav.itemOther":`items`},o={"engine.package.writableRequired":`请先选择或新建一个可写的基座(package)——只读的代码包中无法新建该项。`,"engine.directory.title":`元数据`,"engine.directory.description":`平台协议共暴露 {count} 个元数据类型(其中 {writable} 个支持运行时覆盖)。点击任意卡片即可浏览、覆盖或创建实例。`,"engine.directory.search":`搜索元数据类型…`,"engine.directory.writableOnly":`仅显示可写`,"engine.directory.quickFind":`快速查找`,"engine.directory.noMatches":`没有匹配项`,"engine.directory.noMatchesHint":`调整搜索或筛选条件以查看更多元数据类型。`,"engine.directory.loading":`正在加载元数据类型…`,"engine.directory.loadFailed":`加载元数据类型失败`,"engine.directory.all":`全部`,"engine.directory.diagnosticsLink":`查看全部问题({count})`,"engine.directory.invalidTooltip":`{count} 个无效项 — 点击修复`,"engine.directory.warnTooltip":`{count} 个条目带有警告`,"engine.directory.itemCountTooltip":`此类型共 {count} 项`,"engine.directory.allPackages":`全部软件包`,"engine.directory.packageFilter":`软件包`,"engine.home.greetingMorning":`早上好`,"engine.home.greetingAfternoon":`下午好`,"engine.home.greetingEvening":`晚上好`,"engine.home.subtitle":`建模数据、设计体验、编排自动化的控制中心。`,"engine.home.statTypes":`元数据类型`,"engine.home.statWritable":`可运行时覆盖`,"engine.home.statPackages":`软件包`,"engine.home.statIssues":`待处理问题`,"engine.home.allHealthy":`一切正常`,"engine.home.allHealthyHint":`所有元数据均无校验问题。`,"engine.home.issuesHint":`{count} 项需要关注。`,"engine.home.explore":`探索`,"engine.home.exploreHint":`快速进入平台的各个领域。`,"engine.home.quickActions":`快捷操作`,"engine.home.quickActionsHint":`一键创建新的元数据。`,"engine.home.newItem":`新建{label}`,"engine.home.recent":`最近访问`,"engine.home.recentEmpty":`暂无记录 — 你打开过的项目会显示在这里,方便快速访问。`,"engine.home.browseAll":`浏览全部元数据`,"engine.home.openDiagnostics":`查看诊断`,"engine.home.viewDomain":`查看`,"engine.home.typesLower":`个类型`,"engine.home.loading":`正在加载工作区…`,"engine.diagnostics.title":`元数据诊断`,"engine.diagnostics.description":`所有加载时校验失败的元数据条目,按类型分组。错误会阻塞依赖该条目的功能;警告仅提示。`,"engine.diagnostics.back":`返回元数据`,"engine.diagnostics.refresh":`刷新`,"engine.diagnostics.loading":`正在扫描元数据…`,"engine.diagnostics.loadFailed":`加载诊断失败:{error}`,"engine.diagnostics.summary":`{items} 个条目({types} 个类型)中共发现 {count} 个问题`,"engine.diagnostics.cleanTitle":`一切正常`,"engine.diagnostics.cleanHint":`已扫描 {items} 个条目({types} 个类型),未发现问题。`,"engine.diagnostics.severity.error":`错误`,"engine.diagnostics.severity.warning":`错误 + 警告`,"engine.diagnostics.col.name":`条目`,"engine.diagnostics.col.issues":`问题`,"engine.diagnostics.errorN":`{count} 个错误`,"engine.diagnostics.warnN":`{count} 个警告`,"engine.diagnostics.more":`另有 {count} 个…`,"engine.list.create":`新建`,"engine.list.refresh":`刷新`,"engine.list.search":`搜索名称、标签或描述…`,"engine.list.empty":`暂无数据。`,"engine.list.items":`条目`,"engine.list.filtered":`已筛选`,"engine.list.invalid":`无效`,"engine.list.warnings":`警告`,"engine.list.invalidTitle":`元数据无效`,"engine.list.invalidCount":`{count} 个校验错误:`,"engine.list.warnTitle":`元数据警告`,"engine.list.warnCount":`{count} 个警告:`,"engine.list.allSources":`全部来源`,"engine.list.allPackages":`全部软件包`,"engine.list.packageFilter":`软件包`,"engine.list.source.artifact":`代码包`,"engine.list.source.runtime":`运行时`,"engine.list.source.artifactDesc":`由代码包提供`,"engine.list.source.runtimeDesc":`运行时创建`,"engine.list.col.name":`名称`,"engine.list.col.label":`标签`,"engine.list.col.source":`来源`,"engine.list.col.object":`对象`,"engine.list.col.type":`类型`,"engine.list.col.description":`描述`,"engine.list.emptyType":`暂无 {type} 条目`,"engine.list.emptyQuery":`没有匹配 "{query}" 的结果`,"engine.list.createHint":`点击上方"新建"创建第一个 {type}。`,"engine.list.readOnlyHint":`此类型为只读 — 实例由包内的代码工件定义。`,"engine.edit.save":`保存`,"engine.edit.publish":`发布`,"engine.edit.publishBlockedDirty":`请先保存再发布。`,"engine.edit.discardDraft":`丢弃草稿`,"engine.edit.discardDraftConfirm":`丢弃 {type}/{name} 的待发布草稿?`,"engine.edit.draftPending":`存在未发布的草稿 — 保存仅写入草稿,点击"发布"使其生效。`,"engine.edit.rollback":`回滚到此版本`,"engine.edit.rollbackConfirm":`恢复版本 {version}?该历史内容将被写回作为当前已发布的覆盖层。`,"engine.edit.reset":`重置覆盖`,"engine.edit.resetConfirm":`重置 {type}/{name} 的覆盖层?`,"engine.edit.delete":`删除`,"engine.edit.deleteConfirm":`删除 {type}/{name}?此操作不可撤销。`,"engine.edit.lockFull":`该元数据已锁定,不可编辑或删除。`,"engine.edit.lockNoOverlay":`该元数据已锁定,不可编辑。`,"engine.edit.lockNoDelete":`该元数据已锁定,不可删除。`,"engine.edit.history":`历史`,"engine.edit.auditTab":`审计日志`,"engine.edit.auditCount":`条记录`,"engine.edit.auditEmptyTitle":`暂无审计记录`,"engine.edit.auditEmptyDescription":`该元数据尚未发生任何保存、发布、回滚、删除或重置操作。一旦有人尝试修改(无论允许或拒绝),都会在此显示。`,"engine.edit.auditColTime":`时间`,"engine.edit.auditColActor":`操作人`,"engine.edit.auditColOperation":`操作`,"engine.edit.auditColOutcome":`结果`,"engine.edit.auditColLock":`锁状态`,"engine.edit.auditColNote":`备注`,"engine.edit.refresh":`刷新`,"engine.edit.layers":`层次`,"engine.layers.code":`代码`,"engine.layers.overlay":`覆盖`,"engine.layers.effective":`生效`,"engine.layers.diff":`差异`,"engine.layers.diff.field":`字段`,"engine.layers.diff.code":`代码(工件)`,"engine.layers.diff.effective":`生效值`,"engine.layers.diff.status":`状态`,"engine.layers.diff.unchanged":`未变更`,"engine.layers.diff.modified":`已修改`,"engine.layers.diff.added":`新增`,"engine.layers.diff.removed":`删除`,"engine.layers.diff.showUnchanged":`显示未变更字段`,"engine.layers.diff.noChanges":`覆盖层与代码值一致——没有字段级差异。`,"engine.layers.diff.noBaseline":`没有代码级工件可比对——所有字段均为运行时创建。`,"engine.layers.diff.summary":`{modified} 修改 · {added} 新增 · {removed} 删除`,"engine.edit.overlaidCount":`{count} 处覆盖`,"engine.edit.noOverlay":`无覆盖`,"engine.edit.references":`引用关系`,"engine.edit.form":`表单`,"engine.edit.edit":`编辑`,"engine.edit.editOverlay":`编辑覆盖层`,"engine.edit.createNew":`新建`,"engine.edit.detail":`详情`,"engine.edit.preview":`预览`,"engine.edit.designer":`可视化编辑器`,"engine.edit.related":`关联`,"engine.edit.hideInspector":`隐藏属性面板`,"engine.edit.showInspector":`显示属性面板`,"engine.edit.noChanges":`没有需要保存的更改`,"engine.edit.inspector":`属性`,"engine.edit.inspector.properties":`属性`,"engine.edit.inspector.source":`源码`,"engine.edit.fullscreen":`全屏`,"engine.edit.exitFullscreen":`退出全屏`,"engine.edit.designMode":`设计`,"engine.edit.previewMode":`预览`,"engine.inspector.widget.kind":`组件`,"engine.inspector.widget.close":`关闭组件`,"engine.inspector.widget.title":`标题`,"engine.inspector.widget.type":`类型`,"engine.inspector.widget.object":`数据源(对象)`,"engine.inspector.widget.valueField":`取值字段`,"engine.inspector.widget.categoryField":`分组字段`,"engine.inspector.widget.aggregate":`聚合方式`,"engine.inspector.widget.color":`颜色`,"engine.inspector.widget.width":`宽度`,"engine.inspector.widget.height":`高度`,"engine.inspector.widget.remove":`删除组件`,"engine.inspector.widget.datasetSection":`数据集绑定`,"engine.inspector.widget.dataset":`数据集`,"engine.inspector.widget.datasetPlaceholder":`例如:sales_pipeline`,"engine.inspector.widget.datasetHint":`绑定一个受治理的数据集。设置后优先于上方的内联对象查询,组件改为按数据集渲染(口径一致、可跨对象、强制 RLS)。`,"engine.inspector.widget.dimensions":`维度`,"engine.inspector.widget.dimensionsPlaceholder":`例如:stage, region(逗号分隔)`,"engine.inspector.widget.dimensionsHint":`用于分组的数据集维度名。留空则渲染为单值 KPI。`,"engine.inspector.widget.values":`值(度量)`,"engine.inspector.widget.valuesPlaceholder":`例如:revenue, deal_count(逗号分隔)`,"engine.inspector.widget.valuesHint":`要展示的数据集度量名。`,"engine.inspector.flowNode.kind":`节点`,"engine.inspector.flowNode.close":`关闭节点`,"engine.inspector.flowNode.id":`ID`,"engine.inspector.flowNode.label":`标签`,"engine.inspector.flowNode.type":`节点类型`,"engine.inspector.flowNode.description":`描述`,"engine.inspector.flowNode.configuration":`配置`,"engine.inspector.flowNode.config":`配置(JSON)`,"engine.inspector.flowNode.advanced":`高级(JSON)`,"engine.inspector.flowNode.advancedHint":`上方表单未覆盖的可选自定义键 —— 大多数流程无需填写。`,"engine.inspector.flowNode.noConfig":`此节点类型无需配置。`,"engine.inspector.flowNode.kv.add":`添加条目`,"engine.inspector.flowNode.kv.key":`键`,"engine.inspector.flowNode.kv.value":`值`,"engine.inspector.flowNode.kv.remove":`删除条目`,"engine.inspector.flowNode.kv.empty":`暂无条目。`,"engine.inspector.flowNode.list.add":`添加项`,"engine.inspector.flowNode.list.item":`值`,"engine.inspector.flowNode.list.remove":`删除项`,"engine.inspector.flowNode.list.empty":`暂无项。`,"engine.inspector.flowNode.remove":`删除节点`,"engine.inspector.flowEdge.kind":`连线`,"engine.inspector.flowEdge.close":`关闭连线`,"engine.inspector.flowEdge.missing":`该连线已不存在。`,"engine.inspector.flowEdge.source":`起点`,"engine.inspector.flowEdge.target":`终点`,"engine.inspector.flowEdge.routing":`路由`,"engine.inspector.flowEdge.branch":`分支`,"engine.inspector.flowEdge.label":`分支标签`,"engine.inspector.flowEdge.labelHint":`例如 approve / reject`,"engine.inspector.flowEdge.condition":`条件`,"engine.inspector.flowEdge.conditionHint":`CEL 表达式 —— 为真时走此连线`,"engine.inspector.flowEdge.isDefault":`默认分支(else)`,"engine.inspector.flowEdge.hint":`当此连线的分支标签被选中、或其条件成立时,引擎会走这条连线。其余都不匹配时走默认分支。`,"engine.inspector.flowEdge.remove":`删除连线`,"engine.inspector.flowEdge.approvalBranch":`审批分支`,"engine.inspector.flowEdge.branchApprove":`通过`,"engine.inspector.flowEdge.branchReject":`驳回`,"engine.inspector.flowEdge.branchRevise":`退回修改`,"engine.inspector.flowEdge.branchCustom":`—— 自定义 ——`,"engine.inspector.flowEdge.connection":`连线`,"engine.inspector.flowEdge.type":`类型`,"engine.inspector.flowEdge.typeDefault":`普通`,"engine.inspector.flowEdge.typeConditional":`条件`,"engine.inspector.flowEdge.typeFault":`故障(错误路径)`,"engine.inspector.flowEdge.typeBack":`回边(退回修改环)`,"engine.inspector.flowEdge.backHint":`回边会重新进入更早的节点以闭合一个环(例如审批的退回修改环)。它在运行时正常通行,但不参与环路校验。`,"engine.inspector.workflowAction.kind":`动作`,"engine.inspector.workflowAction.close":`关闭动作`,"engine.inspector.workflowAction.type":`动作类型`,"engine.inspector.workflowAction.name":`名称`,"engine.inspector.workflowAction.config":`配置(JSON)`,"engine.inspector.workflowAction.remove":`删除动作`,"engine.inspector.appNav.kind":`导航项`,"engine.inspector.appNav.close":`关闭导航项`,"engine.inspector.appNav.label":`名称`,"engine.inspector.appNav.icon":`图标`,"engine.inspector.appNav.remove":`删除导航项`,"engine.inspector.appNav.typeField":`类型`,"engine.inspector.appNav.type.object":`对象`,"engine.inspector.appNav.type.page":`页面`,"engine.inspector.appNav.type.dashboard":`仪表盘`,"engine.inspector.appNav.type.report":`报表`,"engine.inspector.appNav.type.url":`链接(URL)`,"engine.inspector.appNav.type.group":`分组`,"engine.inspector.appNav.object":`对象`,"engine.inspector.appNav.targetMode":`落点`,"engine.inspector.appNav.mode.default":`默认视图(工作台)`,"engine.inspector.appNav.mode.view":`具名视图`,"engine.inspector.appNav.mode.record":`记录深链`,"engine.inspector.appNav.mode.filters":`参数化切面(/data)`,"engine.inspector.appNav.view":`视图`,"engine.inspector.appNav.recordId":`记录 ID`,"engine.inspector.appNav.recordIdHint":`支持 {current_user_id} 与 {current_org_id} 模板变量。`,"engine.inspector.appNav.recordMode":`打开方式`,"engine.inspector.appNav.recordModeView":`查看`,"engine.inspector.appNav.recordModeEdit":`编辑`,"engine.inspector.appNav.filters":`URL 过滤条件`,"engine.inspector.appNav.filtersField":`字段`,"engine.inspector.appNav.filtersValue":`值`,"engine.inspector.appNav.filtersAdd":`添加条件`,"engine.inspector.appNav.filtersRemove":`移除条件`,"engine.inspector.appNav.filtersHint":`一次性切面由 URL 承载——当它值得沉淀复用时,请改建具名视图。`,"engine.inspector.appNav.url":`链接地址`,"engine.inspector.appNav.urlTarget":`打开位置`,"engine.inspector.appNav.urlTargetSelf":`当前标签页`,"engine.inspector.appNav.urlTargetBlank":`新标签页`,"engine.inspector.appNav.preview":`运行期落点`,"engine.inspector.viewColumn.kind":`列`,"engine.inspector.viewColumn.close":`关闭列`,"engine.inspector.viewColumn.header":`表头`,"engine.inspector.viewColumn.accessorKey":`字段键`,"engine.inspector.viewColumn.width":`宽度`,"engine.inspector.viewColumn.align":`对齐`,"engine.inspector.viewColumn.sortable":`可排序`,"engine.inspector.viewColumn.filterable":`可过滤`,"engine.inspector.viewColumn.remove":`删除列`,"engine.inspector.viewColumn.outlineLabel":`列`,"engine.inspector.view.kind":`视图`,"engine.inspector.view.close":`关闭`,"engine.inspector.view.label":`名称`,"engine.inspector.view.labelPlaceholder":`例如:全部线索`,"engine.inspector.view.type":`视图类型`,"engine.inspector.view.object":`对象`,"engine.inspector.view.objectPlaceholder":`例如:crm_lead`,"engine.inspector.view.noSchema":`spec 模式不可用 —— 仅显示基础属性。`,"engine.inspector.view.type.grid":`表格 / 列表`,"engine.inspector.view.type.kanban":`看板`,"engine.inspector.view.type.calendar":`日历`,"engine.inspector.view.type.gallery":`画廊`,"engine.inspector.view.type.gantt":`甘特图`,"engine.inspector.view.type.timeline":`时间线`,"engine.inspector.view.type.map":`地图`,"engine.inspector.view.type.chart":`图表`,"engine.inspector.pageBlock.kind":`区块`,"engine.inspector.pageBlock.close":`关闭区块`,"engine.inspector.pageBlock.type":`类型`,"engine.inspector.pageBlock.id":`ID`,"engine.inspector.pageBlock.className":`类名`,"engine.inspector.pageBlock.hidden":`隐藏条件(CEL)`,"engine.inspector.pageBlock.properties":`属性`,"engine.inspector.pageBlock.advanced":`高级属性`,"engine.inspector.pageBlock.remove":`删除区块`,"engine.inspector.pageBlock.outlineLabel":`区块`,"engine.inspector.report.kind":`报表`,"engine.inspector.report.close":`关闭报表`,"engine.inspector.report.name":`名称`,"engine.inspector.report.nameHint":`snake_case 标识符(创建后不可修改)`,"engine.inspector.report.namePlaceholder":`例如:pipeline_by_stage`,"engine.inspector.report.label":`显示名`,"engine.inspector.report.labelPlaceholder":`例如:按阶段统计的销售管道`,"engine.inspector.report.type":`报表类型`,"engine.inspector.report.type.tabular":`表格`,"engine.inspector.report.type.summary":`汇总`,"engine.inspector.report.type.matrix":`矩阵`,"engine.inspector.report.type.joined":`联合`,"engine.inspector.report.dataset":`数据集`,"engine.inspector.report.datasetPlaceholder":`例如:sales_metrics`,"engine.inspector.report.values":`值(度量)`,"engine.inspector.report.valuesEmpty":`还没有度量。从下方数据集中添加。`,"engine.inspector.report.rows":`行(维度)`,"engine.inspector.report.rowsEmpty":`还没有维度。从下方数据集中添加。`,"engine.inspector.report.columnsAcross":`列(横向维度)`,"engine.inspector.report.columnsAcrossEmpty":`还没有横向维度——矩阵按 行 × 列 透视。`,"engine.inspector.report.chart":`图表`,"engine.inspector.report.chartType":`图表类型`,"engine.inspector.report.chartNone":`无(仅表格)`,"engine.inspector.report.chartTitle":`图表标题`,"engine.inspector.report.chartX":`X 轴(维度)`,"engine.inspector.report.chartY":`Y 轴(度量)`,"engine.inspector.report.noSchema":`规格 schema 不可用 —— 仅显示基础属性。`,"engine.inspector.moreFields":`更多字段`,"engine.inspector.action.kind":`动作`,"engine.inspector.action.close":`关闭动作`,"engine.inspector.hook.kind":`钩子`,"engine.inspector.dashboard.kind":`仪表盘`,"engine.inspector.dashboard.close":`关闭仪表盘`,"engine.inspector.dashboard.label":`显示名`,"engine.inspector.dashboard.labelPlaceholder":`例如:销售总览`,"engine.inspector.dashboard.description":`描述`,"engine.inspector.dashboard.descriptionPlaceholder":`可选,显示在头部的摘要`,"engine.inspector.dashboard.widgets":`组件`,"engine.inspector.dashboard.widgetsEmpty":`还没有组件。在下方添加。`,"engine.inspector.dashboard.removeWidget":`删除组件`,"engine.inspector.dashboard.noSchema":`规格 schema 不可用 —— 仅显示基础属性。`,"engine.inspector.add.widget":`添加组件`,"engine.inspector.add.block":`添加区块`,"engine.inspector.add.node":`添加节点`,"engine.inspector.add.step":`添加步骤`,"engine.inspector.add.action":`添加动作`,"engine.inspector.add.nav":`添加导航项`,"engine.inspector.reorder.up":`上移`,"engine.inspector.reorder.down":`下移`,"engine.edit.overlay":`覆盖`,"engine.edit.readOnlyBanner":`当前为只读模式。点击 {edit} 进行修改。`,"engine.edit.readOnlyTypeBanner":`出于安全考虑,此元数据类型为只读:它包含可执行代码或敏感配置,不允许在运行时通过覆盖层修改。请编辑包内源代码后重新部署。如需临时解除限制(请谨慎使用),可将 {flag} 设置为包含 {type},或在注册表中开启 {override}。`,"engine.edit.artifactLockedBanner":`此 {type} 来自已安装的包,因此在运行时为只读。如需修改,请在其所属包的源中编辑并重新发布——或从零新建一个 {type}。`,"engine.badge.createOnly":`仅可新建`,"engine.repeater.empty":`暂无条目。点击 + 添加。`,"engine.badge.writable":`可写`,"engine.badge.readOnly":`只读`,"engine.edit.readOnly":`只读(运行时覆盖未启用)。`,"engine.edit.loading":`加载中`,"engine.edit.bespokeDesigner":`可视化编辑器`,"engine.edit.readOnlyHint":`只读 — 该元数据类型不支持运行时覆盖。请修改包内源代码并重新部署。`,"engine.edit.unsaved":`未保存`,"engine.edit.diagnostics.title":`元数据不符合规范 — 共 {count} 个校验错误。`,"engine.edit.diagnostics.warnTitle":`{count} 个警告 — 建议复查。`,"engine.edit.diagnostics.more":`还有 {count} 个…`,"engine.edit.loadFailed":`加载 {type}/{name} 失败:{message}`,"engine.edit.unsavedHint":`当前存在未保存的修改。`,"engine.edit.unsavedLeaveConfirm":`当前存在未保存的修改,确定离开此页面吗?`,"engine.edit.saving":`保存中…`,"engine.edit.savedAt":`已保存 {time}`,"engine.edit.autoSaveOn":`自动保存已开启,点击关闭`,"engine.edit.autoSaveOff":`自动保存已关闭,点击开启`,"engine.edit.autoSavingShortly":`即将自动保存…`,"engine.edit.destructive":`破坏性变更`,"engine.edit.destructiveHint":`该修改会破坏现有引用关系。请检查问题清单后确认强制保存。`,"engine.edit.forceSave":`强制保存`,"engine.cancel":`取消`,"engine.form.select":`请选择...`,"engine.form.selectEllipsis":`请选择…`,"engine.form.add":`添加`,"engine.form.addItem":`添加项`,"engine.form.addRow":`添加行`,"engine.form.remove":`删除`,"engine.form.removeRow":`删除行`,"engine.form.dragToReorder":`拖动排序`,"engine.form.arrayPlaceholder":`用逗号分隔多个值`,"engine.form.loadingObjects":`正在加载对象…`,"engine.form.noObjects":`object_name(未检测到对象)`,"engine.form.selectObject":`选择对象…`,"engine.form.selectObjectDots":`选择对象...`,"engine.form.addObjects":`添加对象...`,"engine.form.loadingFields":`正在加载字段…`,"engine.form.selectObjectFirst":`(请先选择对象)`,"engine.form.selectField":`选择字段…`,"engine.form.selectFieldDots":`选择字段...`,"engine.form.addFields":`添加字段...`,"engine.form.noObjectBound":`未绑定对象`,"engine.form.none":`— 无 —`,"engine.form.notInObject":`(不在对象中)`,"engine.form.searchIcons":`搜索图标…`,"engine.form.chooseIcon":`选择图标`,"engine.form.iconsTruncated":`显示前 {shown} 个,共 {total} 个 —— 继续输入以缩小范围。`,"engine.form.noMatchingIcons":`没有匹配的图标。`,"engine.form.keep":`保留`,"engine.form.addField":`添加字段…`,"engine.form.addFieldPlain":`添加字段`,"engine.form.searchFields":`搜索字段…`,"engine.form.allFieldsAdded":`已添加全部字段`,"engine.form.noObjectFields":`没有对象字段({error})。`,"engine.form.noMatchingFields":`没有匹配字段。`,"engine.form.noFieldsOnObject":`此对象暂无字段。`,"engine.form.added":`已添加`,"engine.form.tagsPlaceholder":`输入后按 Enter…`,"engine.form.noRows":`暂无行。点击 + 添加。`,"engine.form.masterDetailSchemaError":`master-detail 组件要求 JSON Schema 上存在 items.properties(或 anyOf 分支包含该结构)。`,"engine.form.missingField":`表单布局中声明了字段 {field},但 schema 中不存在,已跳过。`,"engine.form.fallbackJson":`组件 {widget} 尚未注册自定义渲染器,暂时使用 JSON 编辑。`,"engine.form.keyRequired":`键名必填`,"engine.form.keyExists":`键名 "{key}" 已存在`,"engine.form.keyPattern":`键名必须匹配 {pattern}`,"engine.form.invalidJson":`JSON 无效`,"engine.form.rootJsonObject":`根节点必须是 JSON 对象`,"engine.validation.invalid":`输入无效`,"engine.validation.pattern":`格式无效:必须匹配 {pattern}`,"engine.validation.expectedStringUndefined":`必填,需输入文本`,"engine.validation.expectedType":`类型无效:应为 {expected},当前为 {received}`,"engine.validation.invalidOption":`选项无效:必须是 {options} 之一`,"engine.validation.failed":`校验失败({count} 个问题)。`,"engine.validation.failedOne":`校验失败(1 个问题)。`,"engine.validation.nameRequired":`名称必填。`,"engine.embedded.saved":`已保存。`,"engine.embedded.readOnlyParent":`父类型为只读;仍会尝试 PUT 保存,但服务器可能拒绝。`,"engine.embedded.saveIntoParent":`保存到 {parentType}`,"engine.embedded.saveNoPath":`无法保存:此条目没有注册 embeddedPath。`,"engine.embedded.noSchema":`{type} 未注册表单 schema。请在下方编辑原始 JSON;保存时会写回 {target}。`,"engine.embedded.readOnly":`只读`,"engine.embedded.noPathHint":`未注册 embeddedPath,无法判断该条目应写回哪里。`,"engine.packages.title":`软件包`,"engine.packages.description":`创建、发布和管理此环境中安装的软件包。`,"engine.packages.refresh":`刷新`,"engine.packages.import":`导入`,"engine.packages.importing":`导入中…`,"engine.packages.new":`新建软件包`,"engine.packages.search":`搜索软件包…`,"engine.packages.showPlatform":`显示平台软件包({count})`,"engine.packages.empty":`暂无软件包`,"engine.packages.emptyCreate":`创建第一个软件包以开始编写元数据。`,"engine.packages.emptyFiltered":`没有匹配筛选条件的软件包。`,"engine.packages.loadFailed":`加载软件包失败`,"engine.packages.col.name":`名称`,"engine.packages.col.version":`版本`,"engine.packages.col.scope":`范围`,"engine.packages.col.status":`状态`,"engine.packages.scope.project":`只读 · 代码包`,"engine.packages.scope.system":`系统`,"engine.packages.scope.cloud":`云端`,"engine.packages.scope.writable":`可写`,"engine.packages.status.enabled":`已启用`,"engine.packages.status.disabled":`已禁用`,"engine.packages.import.invalidJson":`所选文件不是有效 JSON。`,"engine.packages.import.invalidPackage":`无效的软件包文件:缺少 "id" 或 "name"。`,"engine.packages.import.success":`已导入 "{id}"。刷新应用切换器后即可使用。`,"engine.packages.import.failed":`导入失败`,"engine.packages.create.title":`新建软件包`,"engine.packages.create.description":`创建项目范围的软件包,用来编写并发布自己的元数据。ID 建议使用反向域名格式(例如 {example})。`,"engine.packages.create.id":`软件包 ID`,"engine.packages.create.idInvalid":`只能使用字母、数字、点、短横线或下划线(2–255 个字符)。`,"engine.packages.create.name":`显示名称`,"engine.packages.create.version":`版本`,"engine.packages.create.versionInvalid":`请使用语义化版本号,例如 0.1.0`,"engine.packages.create.creating":`创建中…`,"engine.packages.create.submit":`创建软件包`,"engine.packages.create.failed":`创建软件包失败`,"engine.packages.detail.type":`类型`,"engine.packages.detail.description":`描述`,"engine.packages.detail.browseMetadata":`浏览此软件包的元数据`,"engine.packages.detail.pendingChanges":`待发布更改`,"engine.packages.detail.pendingHint":`草稿尚未发布。可以发布整个应用,也可以逐项查看。`,"engine.packages.detail.publishApp":`发布应用({count})`,"engine.packages.detail.discardChanges":`丢弃更改({count})`,"engine.packages.detail.kernelReadOnly":`这是平台内核软件包,已禁用编写操作。`,"engine.packages.detail.actions":`操作`,"engine.packages.detail.edit":`编辑`,"engine.packages.edit.title":`编辑软件包`,"engine.packages.edit.save":`保存更改`,"engine.packages.edit.saving":`保存中…`,"engine.packages.edit.saved":`软件包已更新`,"engine.packages.edit.failed":`更新软件包失败`,"engine.packages.detail.publish":`发布`,"engine.packages.detail.publishing":`发布中…`,"engine.packages.detail.revert":`还原`,"engine.packages.detail.enable":`启用`,"engine.packages.detail.disable":`禁用`,"engine.packages.detail.export":`导出`,"engine.packages.detail.exporting":`导出中…`,"engine.packages.detail.deleteApp":`删除应用`,"engine.packages.detail.deleting":`删除中…`,"engine.packages.detail.discarding":`丢弃中…`,"engine.packages.detail.actionFailed":`操作失败`,"engine.packages.detail.publishBlocked":`发布被 {count} 个校验错误阻止。`,"engine.packages.detail.nothingToPublish":`没有可发布的内容。`,"engine.packages.detail.published":`软件包已发布。`,"engine.packages.detail.publishDraftsPartial":`已发布 {published} 项;{failed} 项失败。`,"engine.packages.detail.publishDraftsOk":`应用已发布,所有草稿均已生效。`,"engine.packages.detail.reverted":`已还原到上次发布状态。`,"engine.packages.detail.discardDraftsPartial":`已丢弃 {discarded} 项;{failed} 项失败。`,"engine.packages.detail.discardDraftsOk":`所有待发布更改已丢弃,已回到发布版本。`,"engine.packages.detail.deleteConfirm":`删除 "{name}" 及其所有数据?
|
|
6
|
-
|
|
7
|
-
这会移除此软件包中的所有对象、视图、仪表板和应用,并删除这些对象创建的数据库表。此操作不可撤销。`,"engine.packages.detail.deleteFailed":`删除失败`,"engine.packages.detail.disabled":`软件包已禁用。`,"engine.packages.detail.enabled":`软件包已启用。`,"engine.packages.detail.exported":`软件包已导出。`,"engine.packages.detail.duplicate":`复制`,"engine.packages.detail.duplicating":`复制中…`,"engine.packages.detail.duplicatePrompt":`副本的新软件包 id(一个全新的可写基座):`,"engine.packages.detail.duplicated":`软件包已复制为新基座。`,"engine.packages.detail.adoptOrphans":`收编散落项`,"engine.packages.detail.adopting":`收编中…`,"engine.packages.detail.adoptConfirm":`把本环境中所有无软件包(散落)的元数据移动到 "{name}" 吗?这会把孤儿项重新绑定到此基座。`,"engine.packages.detail.adopted":`散落项已收编进此基座。`,"engine.packages.detail.deleteKeepData":`同时删除数据吗?
|
|
8
|
-
|
|
9
|
-
确定 = 同时删除所有记录(破坏性)。取消 = 保留记录,仅删除结构。`,"engine.quickfind.placeholder":`搜索元数据类型或条目…(如:view、account)`,"engine.quickfind.empty":`输入关键字以搜索所有元数据类型。`,"engine.quickfind.title":`快速查找`,"engine.quickfind.indexing":`正在索引所有类型,共`,"engine.quickfind.noMatches":`没有匹配项。`,"engine.breadcrumb.allTypes":`元数据`,"perm.action.create":`创建`,"perm.action.read":`读取`,"perm.action.edit":`编辑`,"perm.action.delete":`删除`,"perm.action.transfer":`转移所有者`,"perm.action.restore":`从回收站恢复`,"perm.action.purge":`彻底删除`,"perm.action.viewAll":`查看所有记录(绕过共享规则)`,"perm.action.modifyAll":`修改所有记录(绕过共享规则)`,"perm.col.object":`对象`,"perm.col.bulk":`批量`,"perm.posture.private":`私有`,"perm.posture.private.tip":`默认安全对象(access.default = private):权限集的 “*” 通配授权不覆盖它,访问需要对此对象的显式授权(或查看/修改所有记录)。在此编辑的显式授权正常生效。`,"perm.owd.tip":`组织级默认(sharingModel):内部用户的记录级可见性基线,先于岗位与共享规则生效。此处的对象 CRUD 决定能否执行操作,OWD 决定操作触达哪些记录(自己的还是全组织的)。`,"perm.owd.ext.tip":`外部 OWD(externalSharingModel):门户 / 合作伙伴等外部主体的基线 —— 不得宽于内部模型(ADR-0090 D11)。`,"perm.owd.defaultPrivate":`Private(默认)`,"perm.owd.private":`Private 私有`,"perm.owd.public_read":`Public read 公共只读`,"perm.owd.public_read_write":`Public read/write 公共读写`,"perm.owd.controlled_by_parent":`受父级控制`,"perm.bulk.read":`读`,"perm.bulk.crud":`增改删`,"perm.bulk.all":`全选`,"perm.bulk.none":`清空`,"perm.filter.placeholder":`筛选对象…`,"perm.filter.onlyGranted":`只看已授权`,"perm.filter.empty":`没有匹配的对象。`,"perm.field.name":`名称`,"perm.field.label":`标签`,"perm.badge.platform":`平台内置`,"perm.badge.package":`包内置`,"perm.badge.custom":`本环境自定义`,"perm.badge.default":`新用户默认`,"perm.field.loading":`加载字段中…`,"perm.field.empty":`该对象未注册字段。`,"perm.field.col.name":`字段`,"perm.field.read":`读`,"perm.field.edit":`改`,"perm.stat.objects":`已授权对象`,"perm.stat.fields":`已授权字段`,"perm.stat.objectsGranted":`已授权对象`,"perm.stat.fieldOverrides":`字段覆盖`,"perm.stat.objectsSuffix":`个对象`,"perm.subtitle.set":`权限集`,"perm.field.systemCapabilities":`系统能力`,"perm.field.systemCapabilitiesHelp":`授予此权限集持有者的平台/组织能力(如 Studio 访问、用户管理)。在此设计,Setup 中只读展示。`,"perm.rls.title":`行级安全`,"perm.rls.help":`CEL 行过滤条件,限定持有者可读取/修改的记录范围。`,"perm.rls.name":`策略名称`,"perm.rls.object":`对象(* = 全部)`,"perm.rls.enabled":`启用`,"perm.rls.using":`USING(读取过滤)`,"perm.rls.check":`CHECK(写入过滤)`,"perm.rls.checkPlaceholder":`可选 — 默认同 USING`,"perm.rls.empty":`暂无行级策略。`,"perm.rls.add":`新增策略`,"perm.tabs.title":`标签页可见性`,"perm.tabs.help":`为此权限集持有者设置各标签页的可见性。`,"perm.tabs.empty":`暂无标签页覆盖。`,"perm.tabs.add":`新增标签页`,"perm.tabs.vis.visible":`可见`,"perm.tabs.vis.hidden":`隐藏`,"perm.tabs.vis.default_on":`默认开启`,"perm.tabs.vis.default_off":`默认关闭`,"perm.admin.title":`委派管理范围`,"perm.admin.help":`允许持有者管理某业务单元子树(分配用户、管理绑定),无需完全管理员权限。`,"perm.admin.businessUnit":`业务单元`,"perm.admin.includeSubtree":`包含子树`,"perm.admin.manageAssignments":`管理分配`,"perm.admin.manageBindings":`管理绑定`,"perm.admin.authorEnvironmentSets":`编辑环境权限集`,"perm.admin.assignableSets":`可分配权限集`,"perm.admin.noSets":`未加载权限集。`,"perm.loading":`加载权限集 {name}…`,"perm.readOnly":`只读(OS_METADATA_WRITABLE 未启用)`,"designer.unsavedChanges":`未保存的修改`,"designer.editingOverlay":`编辑覆盖层`,"designer.codeBaseline":`代码基线`,"designer.canvas.nameToStart":`在右侧属性面板中为对象命名,即可开始设计字段。`,"designer.canvas.noFields":`尚无字段`,"designer.canvas.noFieldsHint":`添加字段以开始设计表单。点击任意字段可在右侧编辑其属性。`,"designer.canvas.addField":`添加字段`,"designer.canvas.addSection":`添加分组`,"designer.canvas.addFieldToSection":`向此分组添加字段`,"designer.canvas.searchFieldType":`搜索字段类型…`,"designer.canvas.noMatchingTypes":`没有匹配的类型。`,"designer.canvas.ungrouped":`未分组`,"designer.canvas.emptySection":`空分组`,"designer.canvas.dropHint":`将字段拖到此处,或在下方添加`,"designer.canvas.dropToAssign":`拖放以归入此分组`,"designer.canvas.collapseAll":`全部折叠`,"designer.canvas.expandAll":`全部展开`,"designer.canvas.fields":`个字段`,"designer.canvas.required":`个必填`,"designer.canvas.sections":`个分组`,"designer.canvas.collapseSection":`折叠分组`,"designer.canvas.expandSection":`展开分组`,"designer.canvas.moveSectionUp":`上移分组`,"designer.canvas.moveSectionDown":`下移分组`,"designer.canvas.removeSection":`删除分组`,"designer.canvas.removeSectionHint":`删除分组(字段移至未分组)`,"designer.canvas.renameHint":`双击重命名`,"designer.canvas.sectionN":`分组 {n}`,"designer.stub.pickDate":`选择日期…`,"designer.stub.off":`关闭`,"designer.stub.select":`请选择…`,"designer.stub.pickMulti":`选择一项或多项…`,"designer.stub.uploadImage":`上传图片`,"designer.stub.uploadAvatar":`上传头像`,"designer.stub.upload":`上传{type}`,"designer.stub.qrcode":`二维码`,"designer.stub.computed":`计算值`,"designer.stub.composite":`复合字段 — 子字段在右侧属性面板中编辑。`,"designer.stub.repeater":`重复字段 — 可重复的行分组。`,"designer.stub.searchRef":`搜索 {ref}…`,"designer.stub.chooseRelated":`选择关联对象…`,"designer.stub.latLng":`经纬度`,"designer.field.kind":`字段`,"designer.field.close":`关闭`,"designer.field.missing":`该字段已不在草稿中。`,"designer.field.remove":`删除“{label}”`,"designer.field.section.basic":`基础`,"designer.field.section.advanced":`高级`,"designer.field.section.options":`{type} 选项`,"designer.field.apiName":`API 名称`,"designer.field.label":`显示名`,"designer.field.type":`类型`,"designer.field.required":`必填`,"designer.field.unique":`唯一`,"designer.field.description":`描述`,"designer.field.readonly":`只读`,"designer.field.hidden":`隐藏`,"designer.field.indexed":`索引`,"designer.field.externalId":`外部 ID`,"designer.field.trackHistory":`记录历史`,"designer.field.placeholder":`占位符`,"designer.field.group":`分组`,"designer.field.noGroup":`— 无分组 —`,"designer.field.picklistValues":`选项值`,"designer.field.noValues":`暂无选项值。`,"designer.field.addValue":`添加选项`,"designer.field.optValue":`值`,"designer.field.optLabel":`显示名`,"designer.field.optColor":`颜色`,"designer.field.moveUp":`上移`,"designer.field.moveDown":`下移`,"designer.field.removeValue":`删除`,"designer.field.relatedObject":`关联对象`,"designer.field.relationshipName":`关系名称`,"designer.field.relationshipNameHint":`父对象上的反向集合键`,"designer.field.objectNamePlaceholder":`object_name`,"designer.field.lookup.pickerConfig":`选择器配置`,"designer.field.lookup.displayField":`显示字段`,"designer.field.lookup.descriptionField":`描述字段`,"designer.field.lookup.selectField":`选择字段…`,"designer.field.lookup.setTargetFirst":`请先设置目标对象`,"designer.field.lookup.searchFields":`搜索字段…`,"designer.field.lookup.selectableRecords":`可选记录范围`,"designer.field.lookup.addFilter":`添加筛选条件`,"designer.field.lookup.noFilter":`未设筛选 — 所有 {ref} 记录均可选。`,"designer.field.lookup.filterN":`筛选条件 {n}`,"designer.field.lookup.removeFilter":`移除筛选条件`,"designer.field.lookup.filterField":`字段`,"designer.field.lookup.filterOperator":`运算符`,"designer.field.lookup.filterValue":`值`,"designer.field.lookup.dependsOn":`依赖字段(同记录字段)`,"designer.field.lookup.addDependsOn":`添加该查找依赖的字段…`,"designer.field.lookup.searchHostFields":`搜索本对象的字段…`,"designer.field.lookup.pageSize":`选择器分页大小`,"designer.field.lookup.allowCreate":`允许快速创建`,"designer.field.formula":`公式 (CEL)`,"designer.field.precision":`精度`,"designer.field.scale":`小数位`,"designer.field.min":`最小值`,"designer.field.max":`最大值`,"designer.field.maxLength":`最大长度`,"designer.object.kind":`对象`,"designer.object.section.basic":`基础信息`,"designer.object.section.basicHint":`标识、显示名与分类`,"designer.object.name":`名称`,"designer.object.nameHint":`snake_case 唯一标识符(创建后不可修改)`,"designer.object.namePlaceholder":`account`,"designer.object.label":`显示名`,"designer.object.labelPlaceholder":`如:客户`,"designer.object.pluralLabel":`复数显示名`,"designer.object.pluralPlaceholder":`如:客户列表`,"designer.object.icon":`图标`,"designer.object.iconHint":`Lucide 图标名称(如 “building”、“users”)`,"designer.object.description":`描述`,"designer.object.descriptionPlaceholder":`该对象代表什么`,"designer.object.section.access":`访问控制`,"designer.object.section.accessHint":`暴露姿态与能力要求,由安全引擎在服务端强制。`,"designer.object.posture":`暴露姿态`,"designer.object.posture.public":`公开 — 被通配授权覆盖(默认)`,"designer.object.posture.private":`私有 — 需要显式授权`,"designer.object.posture.publicHint":`被权限集的 “*” 通配授权覆盖 —— 业务对象的平台默认。`,"designer.object.posture.privateHint":`不被 “*” 通配授权覆盖:只有对此对象的显式授权(或查看/修改所有记录)才能访问。发布前请确认已有权限集授权此对象,否则除平台管理员外无人可用。`,"designer.object.reqPerms":`必需能力`,"designer.object.reqPerms.hint":`AND 门:调用者除 CRUD 授权外,还必须持有列出的每个能力。逗号分隔的能力名(如 manage_platform_settings)。没有任何权限集授予的能力名在运行时会安全拒绝。`,"designer.object.reqPerms.mode.all":`全部操作`,"designer.object.reqPerms.mode.perOp":`按操作`,"designer.object.reqPerms.placeholder":`如 manage_billing`,"designer.object.reqPerms.op.read":`读取`,"designer.object.reqPerms.op.create":`创建`,"designer.object.reqPerms.op.update":`更新`,"designer.object.reqPerms.op.delete":`删除`,"designer.field.defaultValue":`默认值`,"designer.field.defaultNone":`— 无 —`,"designer.field.true":`是`,"designer.field.false":`否`,"designer.field.duplicate":`复制字段`,"designer.field.copySuffix":` 副本`,"designer.field.helpText":`帮助文本`,"designer.field.helpTextPlaceholder":`显示在表单字段下方`,"designer.field.minLength":`最小长度`,"designer.field.conditionalRequired":`条件必填 (CEL)`,"designer.field.conditionalRequiredHint":`当此表达式为真时,该字段变为必填。`,"designer.canvas.bulkSelected":`已选 {n} 项`,"designer.canvas.bulkMoveTo":`移至分组`,"designer.canvas.bulkDelete":`删除`,"designer.canvas.bulkClear":`取消选择`,"designer.canvas.bulkHint":`按住 Ctrl/⌘ 单击或 Shift 单击可多选字段。`,"designer.canvas.reviewChanges":`查看变更`,"designer.canvas.reviewExit":`退出查看`,"designer.canvas.reviewVsPublished":`对比已发布版本`,"designer.canvas.diffAdded":`新增`,"designer.canvas.diffChanged":`修改`,"designer.canvas.diffRemoved":`删除`,"designer.canvas.diffChangedKeys":`变更:{keys}`,"designer.draftReview.title":`查看变更`,"designer.draftReview.badge":`{n} 项待审`,"designer.draftReview.empty":`与已发布版本相比没有变更。`,"designer.canvas.askAi":`问 AI`,"designer.canvas.askAiGenerate":`用 AI 生成字段`,"engine.studio.cancel":`取消`,"engine.studio.create":`创建`,"engine.studio.creating":`创建中…`,"engine.studio.createDraft":`创建(存为草稿)`,"engine.studio.saveDraft":`保存草稿`,"engine.studio.app.nameLabel":`应用名称`,"engine.studio.app.idLabel":`标识`,"engine.studio.data.nameLabel":`对象名称`,"engine.studio.data.idLabel":`标识`,"engine.studio.auto.nameLabel":`流程名称`,"engine.studio.auto.idLabel":`标识`,"engine.studio.access.nameLabel":`名称`,"engine.studio.access.idLabel":`标识`,"engine.studio.pkg.manage":`软件包信息与设置`,"engine.studio.data.savedDraft":`对象「{label}」已存为草稿`,"engine.studio.data.lastSaved":`已于 {time} 保存`,"engine.studio.publish":`发布`,"engine.studio.loading":`加载中…`,"engine.studio.loadFailed":`加载失败`,"engine.studio.unpublishedDraft":`未发布草稿`,"engine.studio.unpublished":`未发布`,"engine.studio.new":`新建`,"engine.studio.edit":`编辑`,"engine.studio.done":`完成`,"engine.studio.close":`关闭`,"engine.studio.deselect":`取消选择`,"engine.studio.toggleRail":`切换侧栏`,"engine.studio.home":`返回主页`,"engine.studio.pillar.data":`数据`,"engine.studio.pillar.automations":`自动化`,"engine.studio.pillar.interfaces":`界面`,"engine.studio.pillar.access":`权限`,"engine.studio.changes":`变更`,"engine.studio.publishTitle":`一次性确认并发布全部待发布草稿(整包 · 一次原子发布)`,"engine.studio.publishNoneTitle":`没有待发布的草稿`,"engine.studio.publishedAll":`已发布本软件包的全部草稿(一次原子发布)`,"engine.studio.app.open":`打开应用`,"engine.studio.app.openTitle":`打开应用「{label}」(发布后的前端界面)`,"engine.studio.app.create":`创建应用`,"engine.studio.app.noneTitle":`这个软件包还没有应用(前端界面)— 创建一个`,"engine.studio.app.willOpenAfterPublish":`发布后这里会变成「打开应用」`,"engine.studio.app.pending":`应用「{label}」待发布`,"engine.studio.app.namePlaceholder":`应用名称(如:订单中心)`,"engine.studio.app.idPlaceholder":`标识符(如:orders_app)`,"engine.studio.app.savedDraft":`应用「{label}」已存为草稿 — 发布后即可打开`,"engine.studio.pkg.switchTitle":`切换 / 新建软件包`,"engine.studio.pkg.readonly":`只读`,"engine.studio.pkg.readonlyHint":`只读软件包 — 请切换或新建可写软件包后再编辑。`,"engine.studio.app.scaffoldNav":`将本包的对象添加为菜单项`,"engine.studio.landing.title":`应用构建`,"engine.studio.landing.description":`在一个可写软件包里设计对象、表单、自动化与界面;编辑存为草稿,整包一次发布。源码加载的软件包为只读(仅可浏览)。`,"engine.studio.landing.mineHeading":`我的软件包(可写)`,"engine.studio.landing.noneWritable":`还没有可写软件包 — 新建一个开始。`,"engine.studio.landing.dup":`复制`,"engine.studio.landing.dupTitle":`复制这个软件包为新的可写副本(类似 duplicate base)`,"engine.studio.landing.dupDefaultName":`{name} 副本`,"engine.studio.landing.dupNamePlaceholder":`副本名称`,"engine.studio.landing.dupIdPlaceholder":`副本包 ID`,"engine.studio.landing.dupGo":`复制并进入构建器`,"engine.studio.landing.dupCreated":`已复制为可写软件包「{name}」`,"engine.studio.landing.createGo":`创建并开始构建`,"engine.studio.landing.installedHeading":`已安装(只读 · 可浏览)`,"engine.studio.designer.search":`搜索…`,"engine.studio.designer.select":`请选择…`,"engine.studio.designer.pickDate":`选择日期…`,"engine.studio.designer.fieldAria":`{label} — 点选改属性,拖动排序`,"engine.studio.designer.groupUp":`上移分组`,"engine.studio.designer.groupDown":`下移分组`,"engine.studio.designer.groupDelete":`删除分组`,"engine.studio.designer.groupDeleteTitle":`删除分组(字段归为未分组)`,"engine.studio.designer.dropHere":`拖字段到这里`,"engine.studio.designer.ungrouped":`未分组`,"engine.studio.designer.newGroup":`新分组`,"engine.studio.designer.hint":`拖动字段排序 / 拖到其它分组 · 点选字段改属性`,"engine.studio.designer.addGroup":`添加分组`,"engine.studio.rules.title":`验证规则`,"engine.studio.rules.none":`还没有验证规则。`,"engine.studio.rules.explain":`规则在保存记录时执行:条件为真 ⇒ 拒绝保存并提示消息。`,"engine.studio.rules.noMessage":`(无消息)`,"engine.studio.rules.pick":`选择左侧的规则进行编辑,或点「新增」创建一条。`,"engine.studio.rules.structured":`「{type}」类型的规则带有结构化配置(状态机转移表 / 格式约束等),暂不支持在此编辑 —— 请在代码包中维护。消息:{message}`,"engine.studio.rules.none2":`(无)`,"engine.studio.rules.deleteRule":`删除规则`,"engine.studio.rules.nameLabel":`规则名(snake_case,唯一)`,"engine.studio.rules.messageLabel":`错误消息(校验失败时展示给用户)`,"engine.studio.rules.messagePlaceholder":`例如:完成日期在状态为已完成时必填`,"engine.studio.rules.celPre":`失败条件(CEL)—— 条件为 `,"engine.studio.rules.celTrue":`真`,"engine.studio.rules.celMid":` 时,拒绝保存并显示上面的消息;新规则默认 `,"engine.studio.rules.celPost":` (永不触发),请改为真实条件。`,"engine.studio.rules.severity":`严重度`,"engine.studio.rules.severityError":`error(拒绝保存)`,"engine.studio.rules.enabled":`启用`,"engine.studio.rules.delete":`删除`,"engine.studio.rules.type":`类型`,"engine.studio.rules.newType":`新建验证类型`,"engine.studio.rules.typeScript":`Script —— CEL 失败条件`,"engine.studio.rules.typeCrossField":`Cross-field —— 跨字段 CEL`,"engine.studio.rules.typeStateMachine":`State machine —— 允许的状态流转`,"engine.studio.rules.typeFormat":`Format —— 正则 / 内置格式`,"engine.studio.rules.typeJsonSchema":`JSON schema —— 校验 JSON 字段`,"engine.studio.rules.typeConditional":`Conditional —— 条件成立时应用规则`,"engine.studio.rules.label":`标签(可选)`,"engine.studio.rules.field":`字段`,"engine.studio.rules.statusField":`状态字段`,"engine.studio.rules.fields":`参与字段`,"engine.studio.rules.noFields":`该对象暂无字段。`,"engine.studio.rules.pickField":`—— 选择字段 ——`,"engine.studio.rules.format":`内置格式`,"engine.studio.rules.formatNone":`—— 无 ——`,"engine.studio.rules.regex":`正则表达式`,"engine.studio.rules.transitions":`允许的状态流转(从 → 下一状态)`,"engine.studio.rules.transitionFrom":`起始状态`,"engine.studio.rules.transitionTo":`下一状态(逗号分隔)`,"engine.studio.rules.addTransition":`新增流转`,"engine.studio.rules.jsonSchema":`JSON Schema`,"engine.studio.rules.invalidJson":`JSON 格式无效`,"engine.studio.rules.then":`Then —— 条件成立时应用的规则(JSON)`,"engine.studio.rules.otherwise":`Otherwise —— 条件不成立时应用的规则(JSON,可选)`,"engine.studio.rules.events":`触发时机`,"engine.studio.rules.event.insert":`新建`,"engine.studio.rules.event.update":`更新`,"engine.studio.rules.event.delete":`删除`,"engine.studio.rules.priority":`优先级`,"engine.studio.settings.basics":`基础信息`,"engine.studio.settings.noInspector":`未注册对象默认检查器。`,"engine.studio.settings.semanticRoles":`语义角色`,"engine.studio.settings.semanticHint":`跨表单 / 列表 / 详情统一生效(ADR-0085)`,"engine.studio.settings.nameField":`记录名称字段(nameField)—— 标题、链接、引用处显示的字段`,"engine.studio.settings.autoDerive":`(自动推导)`,"engine.studio.settings.stageField":`生命周期字段(stageField)—— 详情页顶部进度条按它的选项渲染`,"engine.studio.settings.autoDetect":`(自动探测 status/stage 等字段名)`,"engine.studio.settings.stageNone":`无 —— 这个对象没有线性流程,不显示进度条`,"engine.studio.settings.highlightFields":`重点字段(highlightFields)—— 默认列表列、卡片、详情顶栏取前 4;顺序即展示顺序`,"engine.studio.settings.removeField":`移除 {field}`,"engine.studio.settings.addFieldOption":`+ 添加字段…`,"engine.studio.settings.undeclared":`(未声明 —— 各处按启发式自动挑选)`,"engine.studio.settings.sharing":`记录共享模型(OWD)`,"engine.studio.settings.sharingHint":`在岗位与共享规则之前生效的记录可见性基线(ADR-0056/0090)`,"engine.studio.settings.sharingModel":`共享模型(sharingModel)—— 谁能查看和编辑他人拥有的记录`,"engine.studio.settings.sharingUnset":`(未设置 —— 默认 Private)`,"engine.studio.settings.sharingPrivate":`Private 私有 —— 仅记录所有者`,"engine.studio.settings.sharingPublicRead":`Public read 公共只读 —— 所有人可读,仅所有者可写`,"engine.studio.settings.sharingPublicReadWrite":`Public read/write 公共读写 —— 所有人可读可写`,"engine.studio.settings.sharingControlledByParent":`Controlled by parent 受父级控制 —— 继承自主记录`,"engine.studio.settings.sharingDescUnset":`未设置 —— 平台默认 Private(ADR-0090):仅所有者能访问记录。如需放宽可见性请显式选择模型。`,"engine.studio.settings.sharingDescPrivate":`只有所有者(以及经岗位或共享规则授予的用户)能访问记录。此时读取 / 编辑权限仅作用于自己拥有的记录。`,"engine.studio.settings.sharingDescPublicRead":`租户内每个用户都能读取所有记录;仅所有者可编辑。`,"engine.studio.settings.sharingDescPublicReadWrite":`租户内每个用户都能读取并编辑所有记录。`,"engine.studio.settings.sharingDescControlledByParent":`记录可见性通过主从(master-detail)关系继承自父级(主)记录。`,"engine.studio.settings.sharingExternal":`外部共享模型(externalSharingModel)—— 门户 / 合作伙伴等外部主体的基线`,"engine.studio.settings.sharingExternalUnset":`(未设置 —— 默认 Private)`,"engine.studio.settings.sharingExternalDesc":`仅作用于外部主体(ADR-0090 D11)。不得宽于内部模型;未设置时回落为 Private。`,"engine.studio.settings.sharingExternalWider":`外部基线比内部共享模型更宽 —— 发布会被拒绝(ADR-0090 D11)。请收窄到不超过内部模型(private < public read < public read/write)。`,"engine.studio.settings.capabilities":`能力开关(enable.*)`,"engine.studio.settings.capabilitiesHint":`记录页能力 —— 这里的每个开关都由运行时真实强制`,"engine.studio.settings.capTrackHistory":`历史标签页(trackHistory)`,"engine.studio.settings.capTrackHistoryDesc":`在记录页显示只读的历史标签页(审计轨迹)。配合字段级历史跟踪可得到可读的字段级差异;审计采集本身始终开启(合规要求)。`,"engine.studio.settings.capFiles":`附件(files)`,"engine.studio.settings.capFilesDesc":`记录页通用附件面板(上传/下载/删除)。关闭后服务端同时拒绝指向该对象的新附件。`,"engine.studio.settings.capFeeds":`评论与动态(feeds)`,"engine.studio.settings.capFeedsDesc":`记录讨论面板(支持 @提及 与表情回应)。关闭后面板隐藏,且服务端拒绝新评论。`,"engine.studio.settings.capActivities":`活动时间线(activities)`,"engine.studio.settings.capActivitiesDesc":`将创建/更新/删除镜像到记录时间线。关闭后该对象不再产生时间线记录(合规审计日志不受影响)。`,"engine.studio.settings.capClone":`克隆(clone)`,"engine.studio.settings.capCloneDesc":`允许从记录页/API 复制记录。关闭后克隆接口对该对象返回 403。`,"engine.studio.pkg.writable":`可写`,"engine.studio.pkg.heading":`软件包(应用)`,"engine.studio.pkg.none":`暂无应用软件包`,"engine.studio.pkg.namePlaceholder":`名称(如:维修中心)`,"engine.studio.pkg.idPlaceholder":`包 ID(如:com.example.repairs)`,"engine.studio.pkg.idStrippedNotice":`已移除不支持的字符——仅允许小写字母、数字、点、连字符和下划线`,"engine.studio.pkg.idFormatHint":`请使用带至少一个点的反向域名标识,如 com.example.myapp`,"engine.studio.pkg.idFromNameUnavailable":`无法从该名称生成标识,请在下方手动输入(如 com.example.myapp)`,"engine.studio.pkg.createWritable":`创建可写软件包`,"engine.studio.pkg.new":`新建软件包(可写 base)`,"engine.studio.pkg.created":`软件包 {name} 已创建(可写)`,"engine.studio.nav.selectItem":`在左侧选择一个菜单项。`,"engine.studio.nav.label":`标签`,"engine.studio.nav.labelPlaceholder":`如:职位`,"engine.studio.nav.linkObject":`链接到对象`,"engine.studio.nav.chooseObject":`— 选择对象 —`,"engine.studio.nav.boundHint":`这个菜单项会打开该对象的记录列表。`,"engine.studio.nav.unboundHint":`选择一个对象,菜单项将打开它的记录列表。`,"engine.studio.nav.noObjects":`这个软件包还没有对象 — 先到 Data 支柱创建。`,"engine.studio.if.pickLeft":`从左侧选择一个菜单项`,"engine.studio.if.navHeading":`{app} · 导航`,"engine.studio.if.editNavTitle":`编辑导航(拖拽排序 / 重命名 / 增删)`,"engine.studio.if.doneEditTitle":`完成编辑`,"engine.studio.if.noApp":`这个软件包还没有应用。`,"engine.studio.if.noNavItems":`还没有导航项 —(点上方「编辑」添加)`,"engine.studio.if.previewIsRuntime":`实时预览`,"engine.studio.if.tabCanvas":`画布`,"engine.studio.if.noAppTitle":`这个软件包还没有应用`,"engine.studio.if.noAppHint":`创建一个应用来设计它的导航与界面。`,"engine.studio.if.readonlyPreview":`{type} 暂用只读预览,设计能力建设中。`,"engine.studio.if.objectHintPre":`运行态列表预览 · 改字段 / 结构请到 `,"engine.studio.if.objectHintPost":` 支柱`,"engine.studio.inspector.props":`属性`,"engine.studio.inspector.collapse":`收起属性`,"engine.studio.inspector.expand":`展开属性`,"engine.studio.inspector.tabProps":`属性`,"engine.studio.inspector.tabSource":`源码`,"engine.studio.inspector.emptyLine1":`在画布里点选一个积木,`,"engine.studio.inspector.emptyLine2":`它的属性会在这里直接编辑。`,"engine.studio.inspector.noPageSchema":`页面设置不可用——无法加载页面 schema。`,"engine.studio.inspector.sourcePageLine1":`这个页面是 {kind} 源码,不是积木树 ——`,"engine.studio.inspector.sourcePageLine2":`请在「源码」标签页里编辑,画布展示实时预览。`,"engine.studio.data.newFieldLabel":`新字段`,"engine.studio.data.nameFieldLabel":`名称`,"engine.studio.data.idExists":`标识符 "{name}" 已存在`,"engine.studio.data.fieldCount":`{count} 字段`,"engine.studio.data.pickObject":`选择一个对象`,"engine.studio.data.objects":`对象`,"engine.studio.data.searchObjects":`搜索对象…`,"engine.studio.data.noObjects":`还没有对象 — 在下方新建一个开始`,"engine.studio.data.labelPlaceholder":`显示名(如:报修工单)`,"engine.studio.data.idPlaceholder":`标识符(如:repair_ticket)`,"engine.studio.data.newObject":`新建对象`,"engine.studio.data.readOnlyPackage":`此包为只读——请切换到或新建一个可写的包后再添加对象`,"engine.studio.data.firstObjectTitle":`从第一个对象开始`,"engine.studio.data.firstObjectHint":`对象是应用的数据基座(如「订单」「客户」)。在左下角输入显示名与标识符即可创建;之后为它设计字段、表单与自动化,最后一次发布。`,"engine.studio.data.tab.records":`记录`,"engine.studio.data.tab.form":`表单`,"engine.studio.data.tab.rules":`验证`,"engine.studio.data.tab.settings":`设置`,"engine.studio.data.tab.hooks":`钩子`,"engine.studio.data.tab.actions":`操作`,"engine.studio.data.tab.api":`API`,"engine.studio.actions.none":`该对象没有操作。`,"engine.studio.actions.pick":`选择一个操作以编辑其属性。`,"engine.studio.actions.newLabel":`新操作`,"engine.studio.actions.delete":`删除`,"engine.studio.api.subtitle":`该对象自动生成的 REST 端点,依据当前 schema 派生。可复制为 cURL,带上你的 API 令牌调用。`,"engine.studio.api.list":`列出记录`,"engine.studio.api.create":`创建记录`,"engine.studio.api.get":`按 id 获取单条`,"engine.studio.api.update":`更新记录`,"engine.studio.api.delete":`删除记录`,"engine.studio.api.copyCurl":`复制为 cURL`,"engine.studio.api.copied":`已复制`,"engine.studio.api.body":`示例请求体`,"engine.studio.hooks.none":`没有钩子作用于该对象。`,"engine.studio.hooks.async":`异步`,"engine.studio.hooks.pick":`选择一个钩子进行编辑。`,"engine.studio.hooks.newLabel":`新钩子`,"engine.studio.hooks.saved":`已将「{label}」存为草稿`,"engine.studio.hooks.save":`保存钩子`,"engine.studio.data.addFieldTitle":`添加一个字段(随后在右侧设置类型与属性)`,"engine.studio.data.addField":`添加字段`,"engine.studio.data.editFieldProps":`编辑字段属性`,"engine.studio.data.draftObjectTitle":`未发布的新对象`,"engine.studio.data.draftObjectHint":`「记录」网格查询真实数据,而这个对象发布前还没有数据表。请先在「表单 · 布局」里设计字段与分组,然后点顶栏「发布」— 发布后这里就是它的实时数据网格。`,"engine.studio.data.goDesignFields":`去「表单 · 布局」设计字段`,"engine.studio.data.form.layout":`布局`,"engine.studio.data.form.preview":`预览`,"engine.studio.data.form.layoutBadge":`草稿布局 · 含未保存改动`,"engine.studio.data.form.previewBadge":`预览已发布版本(不含草稿改动)`,"engine.studio.data.form.previewWarn":`有未发布改动 — 此预览为发布前(已发布)的效果;草稿确认用「布局」,看发布后效果请先点顶栏「发布」`,"engine.studio.data.form.noPublishedTitle":`尚无已发布定义`,"engine.studio.data.form.noPublishedHint":`「预览」渲染已发布的运行态表单,而这个对象还未发布。在「布局」里确认草稿,点顶栏「发布」后即可预览。`,"engine.studio.data.fieldProps":`字段属性`,"engine.studio.data.groupProps":`分组属性`,"engine.studio.designer.group.kind":`分组`,"engine.studio.designer.group.settings":`分组设置`,"engine.studio.designer.group.nameLabel":`分组名称`,"engine.studio.designer.group.missing":`该分组已不存在。`,"engine.studio.designer.group.collapseLabel":`折叠方式`,"engine.studio.designer.group.collapseNone":`不可折叠`,"engine.studio.designer.group.collapseExpanded":`可折叠 · 默认展开`,"engine.studio.designer.group.collapseCollapsed":`可折叠 · 默认折叠`,"engine.studio.designer.group.collapseHint":`控制该分组在真实表单(预览)中的折叠方式。`,"engine.studio.auto.nodeStart":`开始`,"engine.studio.auto.nodeEnd":`结束`,"engine.studio.auto.savedDraft":`自动化「{label}」已存为草稿`,"engine.studio.auto.defaultOff":`默认 OFF · 审阅后再启用`,"engine.studio.auto.heading":`自动化 · flow`,"engine.studio.auto.on":`已启用`,"engine.studio.auto.off":`已停用`,"engine.studio.auto.offTitle":`已停用 — 不会运行`,"engine.studio.auto.onBound":`已启用 · 已绑定触发器`,"engine.studio.auto.onUnbound":`已启用 · 无触发器(手动运行)`,"engine.studio.auto.enabled":`已启用`,"engine.studio.auto.disabled":`已停用`,"engine.studio.auto.enableTitle":`启用此自动化(发布后生效)`,"engine.studio.auto.disableTitle":`停用此自动化(发布后生效)`,"engine.studio.auto.enabledToast":`已设为启用 — 发布后生效`,"engine.studio.auto.disabledToast":`已设为停用 — 发布后生效`,"engine.studio.auto.newTitle":`新建自动化`,"engine.studio.auto.none":`还没有自动化 — 点「新建」开始`,"engine.studio.auto.namePlaceholder":`名称(如:录用通知)`,"engine.studio.auto.idPlaceholder":`标识符(如:offer_notice)`,"engine.studio.auto.canvasHint":`可视化编排 · 点选节点配置`,"engine.studio.auto.pick":`选择一个自动化`,"engine.studio.auto.config":`配置`,"engine.studio.auto.emptyLine1":`在画布里点选一个节点,`,"engine.studio.auto.emptyLine2":`它的配置会在这里显示。`,"engine.studio.access.created":`权限集「{label}」已创建`,"engine.studio.access.title":`权限矩阵`,"engine.studio.access.subtitle":`对象 × CRUD · 字段级读写`,"engine.studio.access.bannerTitle":`此矩阵仅列出本包声明的对象,「Save」只合并本包切片 —— 其他包贡献的授权原样保留。编辑保存为软件包草稿,点击顶栏「发布」后随整个包一起生效(与数据、界面一致)。`,"engine.studio.access.banner":`仅本包对象 · 保存为草稿`,"engine.studio.access.suggestPromptEveryone":`此包建议将「{set}」授予所有已登录用户(Everyone 岗位)。`,"engine.studio.access.suggestPromptGuest":`此包建议将「{set}」授予未登录访客(Guest 岗位)。`,"engine.studio.access.suggestConfirm":`授予`,"engine.studio.access.suggestConfirming":`授予中…`,"engine.studio.access.suggestDismiss":`忽略`,"engine.studio.access.suggestConfirmedToast":`「{set}」已授予 {anchor}。`,"engine.studio.access.suggestDismissedToast":`已忽略「{set}」的建议。`,"engine.studio.access.heading":`权限集`,"engine.studio.access.search":`搜索权限…`,"engine.studio.access.none":`还没有权限集 — 在下方新建一个`,"engine.studio.access.labelPlaceholder":`显示名(如:销售权限)`,"engine.studio.access.idPlaceholder":`标识符(如:sales_perms)`,"engine.studio.access.new":`新建权限集`,"engine.studio.access.emptyMain":`新建一个权限集开始配置`,"engine.studio.access.pick":`选择一个权限集`,"engine.studio.access.explain.open":`解释访问权限`,"engine.studio.access.explain.title":`为什么该用户可以访问?`,"engine.studio.access.explain.description":`与运行时强制执行走同一条评估管线,逐层报告各层的贡献 —— 权限集 → 岗位 → 绑定链,以及 OWD/共享判定。`,"engine.studio.access.explain.user":`用户`,"engine.studio.access.explain.self":`我(当前调用者)`,"engine.studio.access.explain.pickUser":`选择用户…`,"engine.studio.access.explain.clearUser":`重置为我`,"engine.studio.access.explain.pickUserTitle":`选择要解释的用户`,"engine.studio.access.explain.object":`对象`,"engine.studio.access.explain.objectPlaceholder":`对象名(如:crm_lead)`,"engine.studio.access.explain.operation":`操作`,"engine.studio.access.explain.run":`解释`,"engine.studio.access.explain.running":`解释中…`,"engine.studio.access.explain.allowedLine":`该主体对「{object}」执行 {operation} 将被【允许】。`,"engine.studio.access.explain.deniedLine":`该主体对「{object}」执行 {operation} 将被【拒绝】。`,"engine.studio.access.explain.principal":`主体`,"engine.studio.access.explain.positions":`岗位`,"engine.studio.access.explain.permissionSets":`权限集`,"engine.studio.access.explain.layers":`评估管线`,"engine.studio.access.explain.contributors":`贡献来源`,"engine.studio.access.explain.readFilter":`合成的行过滤器(读取)`,"engine.studio.access.explain.empty":`选择对象和操作,然后点击「解释」。`,"engine.studio.access.explain.failed":`解释失败`,"engine.studio.access.explain.forbidden":`无法解释该用户 —— 需要 manage_users 能力,或一个覆盖该用户的委托管理范围(ADR-0090 D6/D12)。`,"engine.studio.access.explain.layer.principal":`主体解析`,"engine.studio.access.explain.layer.required_permissions":`前置能力`,"engine.studio.access.explain.layer.object_crud":`对象 CRUD 授权`,"engine.studio.access.explain.layer.fls":`字段级安全`,"engine.studio.access.explain.layer.owd_baseline":`记录基线(OWD)`,"engine.studio.access.explain.layer.depth":`范围深度`,"engine.studio.access.explain.layer.sharing":`共享`,"engine.studio.access.explain.layer.vama_bypass":`查看/修改全部数据旁路`,"engine.studio.access.explain.layer.rls":`行级安全`,"engine.studio.access.explain.verdict.grants":`授予`,"engine.studio.access.explain.verdict.denies":`拒绝`,"engine.studio.access.explain.verdict.narrows":`收窄`,"engine.studio.access.explain.verdict.widens":`放宽`,"engine.studio.access.explain.verdict.neutral":`中性`,"engine.studio.access.explain.verdict.not_applicable":`不适用`,"engine.studio.access.explain.op.read":`读取`,"engine.studio.access.explain.op.create":`新建`,"engine.studio.access.explain.op.update":`更新`,"engine.studio.access.explain.op.delete":`删除`,"engine.studio.access.explain.op.transfer":`转移`,"engine.studio.access.explain.op.restore":`恢复`,"engine.studio.access.explain.op.purge":`清除`,"engine.studio.access.explain.record":`记录(可选)`,"engine.studio.access.explain.recordPlaceholder":`记录 id — 解释某一条具体记录`,"engine.studio.access.explain.pickRecord":`选择`,"engine.studio.access.explain.clearRecord":`清除记录`,"engine.studio.access.explain.pickRecordTitle":`选择要解释的记录`,"engine.studio.access.explain.recordVisibleLine":`记录 {recordId} 对该操作【可见】。`,"engine.studio.access.explain.recordHiddenLine":`记录 {recordId} 对该操作【不可见】。`,"engine.studio.access.explain.decidedBy":`决定层`,"engine.studio.access.explain.postureHint":`该主体被评估时所处的 posture 档位(ADR-0095 D2)。`,"engine.studio.access.explain.posture.PLATFORM_ADMIN":`平台管理员`,"engine.studio.access.explain.posture.TENANT_ADMIN":`租户管理员`,"engine.studio.access.explain.posture.MEMBER":`成员`,"engine.studio.access.explain.posture.EXTERNAL":`外部用户`,"engine.studio.access.explain.layer.tenant_isolation":`租户隔离(Layer 0)`,"engine.studio.access.explain.kernelTier.layer_0_tenant":`租户墙`,"engine.studio.access.explain.kernelTier.layer_1_business":`业务 RLS`,"engine.studio.access.explain.kernelTierHint":`Layer 0 = 永远最先的组织墙;Layer 1 = 业务行级安全。`,"engine.studio.access.explain.recordOutcome":`该记录`,"engine.studio.access.explain.outcome.admitted":`准入`,"engine.studio.access.explain.outcome.excluded":`排除`,"engine.studio.access.explain.outcome.not_evaluated":`未评估`,"engine.studio.access.explain.matches":`记录匹配`,"engine.studio.access.explain.noMatch":`记录不匹配`,"engine.studio.access.explain.effectiveRowFilter":`有效行过滤`,"engine.studio.access.explain.ruleKind.tenant_filter":`租户过滤`,"engine.studio.access.explain.ruleKind.owd_baseline":`OWD 基线`,"engine.studio.access.explain.ruleKind.ownership":`归属`,"engine.studio.access.explain.ruleKind.record_share":`记录共享`,"engine.studio.access.explain.ruleKind.sharing_rule":`共享规则`,"engine.studio.access.explain.ruleKind.team":`团队`,"engine.studio.access.explain.ruleKind.territory":`区域`,"engine.studio.access.explain.ruleKind.rls_policy":`RLS 策略`,"engine.appNav.heading":`导航`,"engine.appNav.addItem":`添加导航项`,"engine.appNav.removeItem":`删除导航项`,"engine.appNav.empty":`还没有导航项 — 点「添加导航项」开始`,"engine.appNav.emptyReadonly":`还没有顶层导航项`,"engine.appNav.newItem":`新菜单项`,"engine.appNav.itemOne":`项`,"engine.appNav.itemOther":`项`};function s(e){return(e??``).toLowerCase().startsWith(`zh`)?{types:n,domains:i,strings:o}:{types:t,domains:r,strings:a}}function c(e,t,n){return s(t).types[e]||(n??e)}function l(e,t){return s(t).domains[e]??e}function u(e,t){return s(t).strings[e]??e}function d(e,t,n){return u(e,t).replace(/\{(\w+)\}/g,(e,t)=>t in n?String(n[t]):`{${t}}`)}function f(e,t){let n=String(e??``).trim(),r=n.toLowerCase();if(!n||r===`invalid`||r===`invalid input`)return u(`engine.validation.invalid`,t);let i=n.match(/^Invalid string: must match pattern (.+)$/);if(i)return d(`engine.validation.pattern`,t,{pattern:i[1]});let a=n.match(/^Invalid input: expected (.+), received (.+)$/);if(a){let e=a[1],n=a[2];return e===`string`&&n===`undefined`?u(`engine.validation.expectedStringUndefined`,t):d(`engine.validation.expectedType`,t,{expected:e,received:n})}let o=n.match(/^Invalid option: expected one of (.+)$/);return o?d(`engine.validation.invalidOption`,t,{options:o[1]}):r===`required`||r===`is required`?u(`engine.validation.nameRequired`,t):r===`invalid json`?u(`engine.form.invalidJson`,t):n}function p(){return typeof navigator<`u`&&/^zh/i.test(navigator.language)?`zh-CN`:`en-US`}function m(){let{language:t}=e();return/^zh/i.test(t)?`zh-CN`:`en-US`}export{c as a,l as i,u as n,f as o,d as r,m as s,p as t};
|