@objectstack/console 17.6.0 → 17.7.0
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/CHANGELOG.md +428 -0
- package/dist/.objectstack-injection.json +2 -2
- package/dist/.objectui-sha +1 -1
- package/dist/assets/{ActionResultDialog-4kHDGnT3.js → ActionResultDialog-ChYnuROr.js} +3 -3
- package/dist/assets/{AiPendingActionsPage-JjOddm0h.js → AiPendingActionsPage-Dh3-i4BB.js} +1 -1
- package/dist/assets/{ApiConsolePage-BgS26lbp.js → ApiConsolePage-CKYEqlMs.js} +1 -1
- package/dist/assets/{AppDocsIndex-BDoH5ECM.js → AppDocsIndex-B5Tky2xg.js} +1 -1
- package/dist/assets/{AppManagementPage-CCgKmNTj.js → AppManagementPage-ZwyvnHpM.js} +1 -1
- package/dist/assets/ApprovalsInboxPage-DD4fe0Em.js +1 -0
- package/dist/assets/AuditLogPage-Sed6iMqP.js +1 -0
- package/dist/assets/BookPage-DYjUsQIc.js +1 -0
- package/dist/assets/{ComponentNavView-B5g9c6fx.js → ComponentNavView-DrlxM4SY.js} +1 -1
- package/dist/assets/CreateViewDialog-Cp72x_O7.js +1 -0
- package/dist/assets/{DashboardView-BOcovpPd.js → DashboardView-juicRxcP.js} +1 -1
- package/dist/assets/DocPage-CxJaQ-pC.js +1 -0
- package/dist/assets/{DocsIndex-DwW2QsYY.js → DocsIndex-LALVtIVR.js} +1 -1
- package/dist/assets/{DocsLayout-D63StSgd.js → DocsLayout-BAwlJQQf.js} +1 -1
- package/dist/assets/{DocsSlug-CP9fcabi.js → DocsSlug-CkF1E-Zs.js} +1 -1
- package/dist/assets/ExpressionProvider-Dr0e99r1.js +1 -0
- package/dist/assets/FlowRunsPage-R3W3t2s4.js +1 -0
- package/dist/assets/{IntegrationsPage-DvG0x0Nb.js → IntegrationsPage-DIuFLEbF.js} +2 -2
- package/dist/assets/InterfaceListPage-BfoCldGu.js +1 -0
- package/dist/assets/{MarketplaceInstalledPage-B7KETQG2.js → MarketplaceInstalledPage-DyjhcUNB.js} +1 -1
- package/dist/assets/MarketplacePackagePage-BbO27Pgs.js +4 -0
- package/dist/assets/MarketplacePage-DO2_b64U.js +1 -0
- package/dist/assets/{MetadataInspector-EP0I3-Kq.js → MetadataInspector-BQyu9pOE.js} +1 -1
- package/dist/assets/ObjectDataPage-DIY-yefK.js +1 -0
- package/dist/assets/PageView-C-qWu3Jw.js +1 -0
- package/dist/assets/ProfilePage-Qp8DL8CF.js +1 -0
- package/dist/assets/{PublicFormsPage-D3uCTR-8.js → PublicFormsPage-D3AT2EH9.js} +1 -1
- package/dist/assets/RecordDetailView-B3XBEgk2.js +3 -0
- package/dist/assets/{RecordFormPage-kiJI-ieF.js → RecordFormPage-CcoZfUJ3.js} +1 -1
- package/dist/assets/ReportDefaultInspector-DVcWM6sh.js +1 -0
- package/dist/assets/ReportView-pJCFptzp.js +2 -0
- package/dist/assets/RuntimeDraftBar-DObTyFu2.js +1 -0
- package/dist/assets/SchemaForm-BWSWYMLE.js +3 -0
- package/dist/assets/SearchResultsPage-ChVIzFob.js +1 -0
- package/dist/assets/{SettingsHub-DP1mrzEN.js → SettingsHub-CPP9FDe8.js} +1 -1
- package/dist/assets/{SettingsView-u7mc6pcc.js → SettingsView-CrHAROu9.js} +1 -1
- package/dist/assets/{SkeletonDetail-DIwlbHTr.js → SkeletonDetail-CP-35B8x.js} +1 -1
- package/dist/assets/{af-DPUgkQl0.js → af-Bhbso4Pg.js} +1 -1
- package/dist/assets/ai-BAPiCsNk.js +3 -0
- package/dist/assets/app-shell-eager-leaves-D9tgfJOe.js +1 -0
- package/dist/assets/{ar-B-6GTIRU.js → ar-DG8TAFtm.js} +1 -1
- package/dist/assets/{ar-DZ-wEl298ti.js → ar-DZ-BtSien-d.js} +1 -1
- package/dist/assets/{ar-EG-YBT90_S0.js → ar-EG-DpXC0zoY.js} +1 -1
- package/dist/assets/{ar-MA-3uT-EYh6.js → ar-MA-D1qVJLyE.js} +1 -1
- package/dist/assets/{ar-SA-SiQsjhhc.js → ar-SA-BIYKNgv8.js} +1 -1
- package/dist/assets/{ar-TN-CfzXjKzS.js → ar-TN-mUR5Mq3s.js} +1 -1
- package/dist/assets/{az-BqAfcNza.js → az-B7IqwHGK.js} +1 -1
- package/dist/assets/{be-CQgWXa9_.js → be-CnZyPaSX.js} +1 -1
- package/dist/assets/{be-tarask-BmNg0Sir.js → be-tarask--uMMCC7l.js} +1 -1
- package/dist/assets/{bg-D3evgRuS.js → bg-CZwuirtY.js} +1 -1
- package/dist/assets/{bn-uItkARwm.js → bn-BbOX0r-z.js} +1 -1
- package/dist/assets/{bs-DueReOpO.js → bs-B5W75cYR.js} +1 -1
- package/dist/assets/{ca-Cr3AHktR.js → ca-Be69LdIM.js} +1 -1
- package/dist/assets/{ckb-CTi5BET7.js → ckb-B-nKM1Vn.js} +1 -1
- package/dist/assets/{createDerive-CjN1i5vn.js → createDerive-CynsXU-B.js} +1 -1
- package/dist/assets/{cs-43mFX9jr.js → cs-qHngxH7l.js} +1 -1
- package/dist/assets/{cy-BBSkg3F8.js → cy-DscO2Pgf.js} +1 -1
- package/dist/assets/{da-C5oA5qcs.js → da-vibkaLMF.js} +1 -1
- package/dist/assets/data-adapter-BDsrq0TX.js +2 -0
- package/dist/assets/{de-AT-CApxwJzu.js → de-AT--JneEuBw.js} +1 -1
- package/dist/assets/{de-CPtbLlAf.js → de-BCT78XYW.js} +1 -1
- package/dist/assets/default-inspector-registry-Dktr6x_q.js +1 -0
- package/dist/assets/dist-yh3dYtHt.js +14 -0
- package/dist/assets/drillUrlFilters-N0RngQg6.js +1 -0
- package/dist/assets/{el-Dto2xBQU.js → el-Cl0y9T2b.js} +1 -1
- package/dist/assets/en-AU-By42tTB7.js +1 -0
- package/dist/assets/{en-CA-DKuJPN1U.js → en-CA-BqEEoj-Y.js} +1 -1
- package/dist/assets/en-GB-Cx8B9nkB.js +1 -0
- package/dist/assets/en-IE-CX9nv6uO.js +1 -0
- package/dist/assets/en-IN-ByGSBHa4.js +1 -0
- package/dist/assets/en-NZ-BPMwa2ZN.js +1 -0
- package/dist/assets/en-ZA-lj_N4R6c.js +1 -0
- package/dist/assets/{eo-BL8JXIWd.js → eo-oOXROuhF.js} +1 -1
- package/dist/assets/{es-BnoaNxsu.js → es-EudscwjH.js} +1 -1
- package/dist/assets/{et-tPYLNenO.js → et-CB-5LLh6.js} +1 -1
- package/dist/assets/{eu-CUBG6bT0.js → eu-B4-hcseX.js} +1 -1
- package/dist/assets/{fa-IR-Rr2d9xSs.js → fa-IR-CogavcMJ.js} +1 -1
- package/dist/assets/{fi-B0NVIZsV.js → fi-CIBE0mYa.js} +1 -1
- package/dist/assets/{formatLong-1-gt9bpo.js → formatLong-qqgm7lV1.js} +1 -1
- package/dist/assets/{fr-CA-CBDvLXFg.js → fr-CA-BugXMutW.js} +1 -1
- package/dist/assets/{fr-BbhHek8e.js → fr-CDReXYWW.js} +1 -1
- package/dist/assets/{fr-CH-WPNmwPn7.js → fr-CH-fiTiB6X1.js} +1 -1
- package/dist/assets/framework-CAuH4h0L.js +35 -0
- package/dist/assets/{fy-DvOBbvEF.js → fy-t_GzIAg_.js} +1 -1
- package/dist/assets/{gd-BQPiTPX5.js → gd-CSncIxtN.js} +1 -1
- package/dist/assets/getIcon-BDkBRQFw.js +1 -0
- package/dist/assets/{gl-BJCXK8uO.js → gl-_138Mj2S.js} +1 -1
- package/dist/assets/{gu-CctPRz3V.js → gu-COfH-YUT.js} +1 -1
- package/dist/assets/{he-CVFMk6p2.js → he-BXL4lOKY.js} +1 -1
- package/dist/assets/{hi-Ba30-RwS.js → hi-kXuYI0TJ.js} +1 -1
- package/dist/assets/{highlighted-body-OFNGDK62-BQ57IrBV.js → highlighted-body-OFNGDK62-CK7x7Gzm.js} +1 -1
- package/dist/assets/{hr-BZUqTbZs.js → hr-DAOsQWzI.js} +1 -1
- package/dist/assets/{ht-BLe05tPx.js → ht-Ch8SKz8p.js} +1 -1
- package/dist/assets/{hu-2CQ_Mkww.js → hu-q6W_rWPT.js} +1 -1
- package/dist/assets/{hy-CclcPG4H.js → hy-0M8OmwnM.js} +1 -1
- package/dist/assets/{i18n-BnUsCaSC.js → i18n-DTfZonAM.js} +3 -3
- package/dist/assets/i18n-locale-ar-O6rs-Cir.js +4 -0
- package/dist/assets/i18n-locale-de-CMc1jk4a.js +4 -0
- package/dist/assets/i18n-locale-en-CbRQO81h.js +4 -0
- package/dist/assets/i18n-locale-es-t47nyoCX.js +4 -0
- package/dist/assets/i18n-locale-fr-E425EqJM.js +4 -0
- package/dist/assets/i18n-locale-ja-y_fk77fz.js +4 -0
- package/dist/assets/i18n-locale-ko-CdnY2uCg.js +4 -0
- package/dist/assets/i18n-locale-pt-BaUOXS6y.js +4 -0
- package/dist/assets/i18n-locale-ru-pFlhX9wg.js +4 -0
- package/dist/assets/i18n-locale-zh-Dkj4ROTN.js +4 -0
- package/dist/assets/i18n-runtime-CdWyaiOD.js +1 -0
- package/dist/assets/{id-6JLB8s-f.js → id-BM_H1_jv.js} +1 -1
- package/dist/assets/index-ocmkyCt6.js +19 -0
- package/dist/assets/index-v2Ijn9Gr.css +2 -0
- package/dist/assets/{infrastructure-Cc34lEqb.js → infrastructure-CSnL6ntj.js} +2 -2
- package/dist/assets/integration-7NqwVHuJ.js +1 -0
- package/dist/assets/{is-to0CWzm1.js → is-B_7jXZfS.js} +1 -1
- package/dist/assets/isSameWeek-D90tBsli.js +1 -0
- package/dist/assets/{it-ea0B8Ujp.js → it-CBM0J9cD.js} +1 -1
- package/dist/assets/{it-CH-DhdfjP5Z.js → it-CH-BQltCNsR.js} +1 -1
- package/dist/assets/{ja-B1bzkgDW.js → ja-DBjnsx21.js} +1 -1
- package/dist/assets/{ja-Hira-CMrY5hXO.js → ja-Hira-BZfSmj1i.js} +1 -1
- package/dist/assets/{ka-DKSXLnXP.js → ka-HwpuKgUY.js} +1 -1
- package/dist/assets/{kk-DHwMv8Dn.js → kk-DLKA9paj.js} +1 -1
- package/dist/assets/{km-tpLG1xNr.js → km-BU5kermq.js} +1 -1
- package/dist/assets/{kn-MLreVnHA.js → kn-BNFqbCoi.js} +1 -1
- package/dist/assets/{ko-CI0DBazn.js → ko-D8n4uMqQ.js} +1 -1
- package/dist/assets/{lb-CmL572Xe.js → lb-B1empQ7m.js} +1 -1
- package/dist/assets/{lt-DRtUOLdw.js → lt-gMukpK3G.js} +1 -1
- package/dist/assets/{lv-COSHgkOP.js → lv-D2O5AnsZ.js} +1 -1
- package/dist/assets/{match-BQoOW8Cj.js → match-BTF6WqJh.js} +1 -1
- package/dist/assets/{match-B-ergJQb.js → match-Cyum2eeW.js} +1 -1
- package/dist/assets/{match-dfBS0YSQ.js → match-ScHH8kYk.js} +1 -1
- package/dist/assets/mermaid-GHXKKRXX-D4H6EVJQ.js +1 -0
- package/dist/assets/metadata-admin-CEhVmXFv.js +9 -0
- package/dist/assets/{mk-B0IH_YL_.js → mk-D-Zl0xVN.js} +1 -1
- package/dist/assets/{mn-P-QdQ2n3.js → mn-jJbTslgD.js} +1 -1
- package/dist/assets/{ms-CtyEOINy.js → ms-CUuJHLA4.js} +1 -1
- package/dist/assets/{mt-DfuZ2HRm.js → mt-yIcbfxKY.js} +1 -1
- package/dist/assets/{nb-2Hp-5Tnt.js → nb-D9WNypoj.js} +1 -1
- package/dist/assets/{nl-BE-mmxbfNoR.js → nl-BE-B1vKiw2h.js} +1 -1
- package/dist/assets/{nl-CZ_nLREz.js → nl-DC7b5e90.js} +1 -1
- package/dist/assets/{nn-ccWhYsNa.js → nn-uP4yJ9s0.js} +1 -1
- package/dist/assets/{oc-z504BFRV.js → oc-DHTqadJI.js} +1 -1
- package/dist/assets/{pl-DeQ7ASt-.js → pl-Bxnnizf5.js} +1 -1
- package/dist/assets/plugin-calendar-b7C35ANT.js +1 -0
- package/dist/assets/plugin-charts-b-yVtmdI.js +7 -0
- package/dist/assets/{plugin-chatbot-Ck47EhDX.js → plugin-chatbot-D1KW_oIO.js} +8 -8
- package/dist/assets/plugin-dashboard-DTkPoPEb.js +6 -0
- package/dist/assets/plugin-form-UIRm-FpQ.js +1 -0
- package/dist/assets/plugin-gantt-9dtc8zzX.js +63 -0
- package/dist/assets/plugin-grid-Cp4RKtMJ.js +10 -0
- package/dist/assets/plugin-kanban-B2JOPZIJ.js +1 -0
- package/dist/assets/plugin-map-CBJcVJYk.js +1 -0
- package/dist/assets/{plugin-markdown-BOkHcir_.js → plugin-markdown-CNlDzqP-.js} +1 -1
- package/dist/assets/plugin-report-IZzgQb-Q.js +59 -0
- package/dist/assets/plugin-timeline-DsmtjcJ3.js +1 -0
- package/dist/assets/plugin-tree-DTRPBdhe.js +1 -0
- package/dist/assets/plugin-view-D9ixsNDG.js +1 -0
- package/dist/assets/plugins-views-CnvkdSJK.js +3 -0
- package/dist/assets/{pt-BR-D80_lPYF.js → pt-BR-D416seHT.js} +1 -1
- package/dist/assets/{pt-CJJ1RmXd.js → pt-DwHBy9_c.js} +1 -1
- package/dist/assets/{ro-EuFb2TCj.js → ro-DDf1X3Np.js} +1 -1
- package/dist/assets/{ru-CMaVQScp.js → ru-8eM3mcgK.js} +1 -1
- package/dist/assets/{runtime-metadata-persistence-ClOTznqa.js → runtime-metadata-persistence-DX29lQ62.js} +1 -1
- package/dist/assets/{se-DsfdKLdF.js → se-D4JvQeRX.js} +1 -1
- package/dist/assets/{sk-BNV9omI8.js → sk-DvpgttGI.js} +1 -1
- package/dist/assets/{sl-DJS_nINU.js → sl-B3gCZ-_a.js} +1 -1
- package/dist/assets/{sq-HEgjcbHe.js → sq-CVaTmL0V.js} +1 -1
- package/dist/assets/{sr-CO0CFu4X.js → sr-CnH5Ffyz.js} +1 -1
- package/dist/assets/{sr-Latn-eE1Idzey.js → sr-Latn-Dw9w61q6.js} +1 -1
- package/dist/assets/src-BUry7633.js +2 -0
- package/dist/assets/{src-BU7L2v4J.js → src-DMDT5a27.js} +1 -1
- package/dist/assets/src-ZxH3AOCu.js +16 -0
- package/dist/assets/{studioEntry-WeMfaSGn.js → studioEntry-DAqcBFtr.js} +1 -1
- package/dist/assets/{submitRedirect-C2lfZSHt.js → submitRedirect-iy0oOi7I.js} +1 -1
- package/dist/assets/{sv-5uTzgQT3.js → sv-CU7wdxyK.js} +1 -1
- package/dist/assets/{ta-BzgdkBZG.js → ta-DPH6q0HR.js} +1 -1
- package/dist/assets/{te-Ct_pl7ZJ.js → te-BSaThkGV.js} +1 -1
- package/dist/assets/{th-DouAlk0-.js → th-NXP8_Qb8.js} +1 -1
- package/dist/assets/{tr-3XNBsI40.js → tr-DDXoH663.js} +1 -1
- package/dist/assets/types-zod-ChJ30y25.js +1 -0
- package/dist/assets/{ug-B9n24h9G.js → ug-Guus6pPe.js} +1 -1
- package/dist/assets/ui-components-D8wcRNrt.js +37 -0
- package/dist/assets/ui-layout-BYO3rRIl.js +1 -0
- package/dist/assets/{uk-DCAenByf.js → uk-uiy4vsp8.js} +1 -1
- package/dist/assets/use-book-data-DFTswcKm.js +1 -0
- package/dist/assets/{useActionModal-Blp4rhOk.js → useActionModal-h52Z5Pkl.js} +1 -1
- package/dist/assets/useCanAuthorMetadata-TDrVrYGB.js +1 -0
- package/dist/assets/useDatasetCatalog-BOd0Ybr1.js +1 -0
- package/dist/assets/{useNavTargetLabel-BOJncjIb.js → useNavTargetLabel-D8lRdb6O.js} +1 -1
- package/dist/assets/useOpenRecordList-C7oqUD3F.js +1 -0
- package/dist/assets/{usePackageL10n-Ci9uVkRZ.js → usePackageL10n-Jl2XiF2F.js} +1 -1
- package/dist/assets/{useSettingsLabel-CeMnMWsh.js → useSettingsLabel-CSpBDTdy.js} +1 -1
- package/dist/assets/{uz-Cyrl-JSeHEqu-.js → uz-Cyrl-Cmb5bvbf.js} +1 -1
- package/dist/assets/{uz-DT3s9bZS.js → uz-DJWxoTz4.js} +1 -1
- package/dist/assets/vendor-objectstack-C4eD5dbT.js +139 -0
- package/dist/assets/{vi-D2p-h6bY.js → vi-Bb3QoIJC.js} +1 -1
- package/dist/assets/{zh-CN-DHOKqAit.js → zh-CN-C-Hts1ZR.js} +1 -1
- package/dist/assets/{zh-HK-D4iIPY7I.js → zh-HK-CtBAZ_ZS.js} +1 -1
- package/dist/assets/{zh-TW-gORQ_tZh.js → zh-TW-B7DDahD-.js} +1 -1
- package/dist/chunk-membership.json +28 -26
- package/dist/eager-closure.json +107 -101
- package/dist/index.html +4 -4
- package/dist/sdui.manifest.json +486 -63
- package/package.json +1 -1
- package/dist/assets/ApprovalsInboxPage-C6S1vk0X.js +0 -1
- package/dist/assets/AuditLogPage-v2dKXMuk.js +0 -1
- package/dist/assets/BookPage-DwFMcTSN.js +0 -1
- package/dist/assets/CreateViewDialog-D3l-tYHM.js +0 -1
- package/dist/assets/DocPage-B6AkH5WI.js +0 -1
- package/dist/assets/ExpressionProvider-CrL6jhVq.js +0 -1
- package/dist/assets/FlowRunsPage-CxdaiUyk.js +0 -1
- package/dist/assets/InterfaceListPage-C4wPYohR.js +0 -1
- package/dist/assets/MarketplacePackagePage-CfgKDpNH.js +0 -4
- package/dist/assets/MarketplacePage-DNEyU5AE.js +0 -1
- package/dist/assets/ObjectDataPage-CykEm9MD.js +0 -1
- package/dist/assets/PageView-C6u86tni.js +0 -1
- package/dist/assets/ProfilePage-C3SjXMzi.js +0 -1
- package/dist/assets/RecordDetailView-DgR_zhP4.js +0 -3
- package/dist/assets/ReportDefaultInspector-BIinF0EQ.js +0 -1
- package/dist/assets/ReportView-BREO-ADE.js +0 -2
- package/dist/assets/RuntimeDraftBar-BCWfd2yS.js +0 -1
- package/dist/assets/SchemaForm-C4uMMZ13.js +0 -3
- package/dist/assets/SearchResultsPage-C6Hw_Lpn.js +0 -1
- package/dist/assets/ai-DPBykF2N.js +0 -3
- package/dist/assets/app-shell-eager-leaves-Cf2bM6uT.js +0 -1
- package/dist/assets/data-adapter-Cymvlczj.js +0 -1
- package/dist/assets/default-inspector-registry-Bs6GBn00.js +0 -1
- package/dist/assets/dist-BF-ssUpn.js +0 -14
- package/dist/assets/drillUrlFilters-hi-2d3DW.js +0 -1
- package/dist/assets/en-AU-FVwCiDJO.js +0 -1
- package/dist/assets/en-GB-DQ_y5VbJ.js +0 -1
- package/dist/assets/en-IE-DaXOhsZW.js +0 -1
- package/dist/assets/en-IN-CnRZnAom.js +0 -1
- package/dist/assets/en-NZ-CBZLEToK.js +0 -1
- package/dist/assets/en-ZA-BE59v0wZ.js +0 -1
- package/dist/assets/framework-DFR4HNtj.js +0 -35
- package/dist/assets/getIcon-Cfwf-Egt.js +0 -1
- package/dist/assets/i18n-locale-ar-92O_xtDZ.js +0 -4
- package/dist/assets/i18n-locale-de-T5ic3yH9.js +0 -4
- package/dist/assets/i18n-locale-en-rxr7WJYl.js +0 -4
- package/dist/assets/i18n-locale-es-D_WOifJ_.js +0 -4
- package/dist/assets/i18n-locale-fr-3cvyjMkp.js +0 -4
- package/dist/assets/i18n-locale-ja-DXlIkB8I.js +0 -4
- package/dist/assets/i18n-locale-ko-DngRpS45.js +0 -4
- package/dist/assets/i18n-locale-pt-BkPaFCqZ.js +0 -4
- package/dist/assets/i18n-locale-ru-E5wLh-y6.js +0 -4
- package/dist/assets/i18n-locale-zh-BL4_Yand.js +0 -4
- package/dist/assets/i18n-runtime-97_bDVjP.js +0 -1
- package/dist/assets/index-Cadlh4t_.css +0 -2
- package/dist/assets/index-D98sa5GF.js +0 -20
- package/dist/assets/integration-CeAF4JFT.js +0 -1
- package/dist/assets/isSameWeek-DBXaA1Gd.js +0 -1
- package/dist/assets/mermaid-GHXKKRXX-Bb17TtNP.js +0 -1
- package/dist/assets/metadata-admin-CABUxbJl.js +0 -9
- package/dist/assets/plugin-calendar-Cn5HaZU8.js +0 -1
- package/dist/assets/plugin-charts-B6RcFWbo.js +0 -7
- package/dist/assets/plugin-dashboard-DjEx8e5Y.js +0 -6
- package/dist/assets/plugin-form-CLDvL0up.js +0 -1
- package/dist/assets/plugin-gantt-CrVrxVdi.js +0 -63
- package/dist/assets/plugin-grid-D2rmQEW_.js +0 -11
- package/dist/assets/plugin-kanban-BUNHFfIC.js +0 -1
- package/dist/assets/plugin-map-y-7RQQC5.js +0 -1
- package/dist/assets/plugin-report-mT3jpna0.js +0 -59
- package/dist/assets/plugin-timeline-B1EF83D3.js +0 -1
- package/dist/assets/plugin-tree-MTHUt3_S.js +0 -1
- package/dist/assets/plugin-view-DHJI-ahf.js +0 -1
- package/dist/assets/plugins-views-CfkgqD30.js +0 -3
- package/dist/assets/src-BUtIBFDA.js +0 -1
- package/dist/assets/src-C0eXlKtx.js +0 -16
- package/dist/assets/types-zod-DXpXw10W.js +0 -1
- package/dist/assets/ui-components-D6cEVg0T.js +0 -37
- package/dist/assets/ui-layout-DgVDuPEM.js +0 -1
- package/dist/assets/use-book-data-CwRldFxP.js +0 -1
- package/dist/assets/useCanAuthorMetadata-BxCMgFRf.js +0 -1
- package/dist/assets/useOpenRecordList-BrwJFojQ.js +0 -1
- package/dist/assets/vendor-objectstack-DFqu45yM.js +0 -138
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as e}from"./i18n-runtime-97_bDVjP.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`,doc:`Documentation`,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:`文档手册`,doc:`文档`,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.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.package.writableRequired":`Pick or create a writable base (package) first — this item cannot be authored into a read-only code 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.lockUnknown":`This item is locked, but this console does not recognise the lock state ‘{state}’ — it may come from a newer server. Some operations will be blocked.`,"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.auditErrorTitle":`Audit trail could not be read`,"engine.edit.auditErrorDescription":`The audit read did not complete, so whether anything has been recorded for this item is unknown. This is not a statement that no attempts were made — use Refresh to ask again.`,"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.draftSuffix":`(draft)`,"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.widget.filterBindingsSection":`Dashboard filter bindings`,"engine.inspector.widget.filterBindingsHint":`Map each dashboard-level filter to one of this widget’s own fields, or untick Apply to opt the widget out. Empty = the filter’s own field.`,"engine.inspector.widget.filterBindingApply":`Apply`,"engine.inspector.widget.filterBindingDefault":`Default ({field})`,"engine.inspector.widget.filterBindingField":`Bound field for {filter}`,"engine.inspector.widget.filterBindingReset":`Reset`,"engine.inspector.widget.type.metric":`KPI Metric`,"engine.inspector.widget.type.bar":`Bar Chart`,"engine.inspector.widget.type.horizontalBar":`Horizontal Bar`,"engine.inspector.widget.type.line":`Line Chart`,"engine.inspector.widget.type.area":`Area Chart`,"engine.inspector.widget.type.pie":`Pie Chart`,"engine.inspector.widget.type.donut":`Donut Chart`,"engine.inspector.widget.type.funnel":`Funnel`,"engine.inspector.widget.type.table":`Table`,"engine.inspector.widget.type.pivot":`Pivot Table`,"engine.inspector.widget.untitledN":`Widget {n}`,"engine.inspector.widget.unsupportedSelection":`Unsupported selection kind: {kind}`,"engine.inspector.widget.removed":`The selected widget was removed from the draft.`,"engine.widgetPicker.search":`Search widgets…`,"engine.widgetPicker.noMatches":`No matches.`,"engine.widgetPicker.category.kpi":`Single value`,"engine.widgetPicker.category.chart":`Charts`,"engine.widgetPicker.category.data":`Tabular`,"engine.widgetPicker.type.metric":`Metric (KPI)`,"engine.widgetPicker.type.bar":`Bar chart`,"engine.widgetPicker.type.horizontalBar":`Horizontal bar`,"engine.widgetPicker.type.line":`Line chart`,"engine.widgetPicker.type.area":`Area chart`,"engine.widgetPicker.type.pie":`Pie chart`,"engine.widgetPicker.type.donut":`Donut chart`,"engine.widgetPicker.type.scatter":`Scatter plot`,"engine.widgetPicker.type.funnel":`Funnel`,"engine.widgetPicker.type.table":`Data table`,"engine.widgetPicker.type.pivot":`Pivot table`,"engine.dashboardPreview.empty":`Add at least one widget to see a preview.`,"engine.dashboardPreview.malformed":`A widget references an object or field that doesn't resolve.`,"engine.dashboardPreview.loading":`Loading dashboard renderer…`,"engine.dashboardPreview.selected":`Selected`,"engine.dashboardPreview.clickToRename":`Click to rename`,"engine.dashboardPreview.untitled":`untitled`,"engine.dashboardPreview.saveTitle":`Save title`,"engine.dashboardPreview.renameWidget":`Rename widget`,"engine.dashboardPreview.clearSelection":`Clear selection`,"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.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.inactiveRetained":`Kept, not in effect — its controlling field is off. The value stays saved until you clear it.`,"engine.inspector.flowNode.inactiveRetainedOrphan":`Kept, not in effect — nothing activates this field. The value stays saved so it is not lost silently.`,"engine.inspector.flowNode.inactiveRetainedClear":`Clear value`,"engine.inspector.flowNode.noConfig":`No configuration needed for this node type.`,"engine.inspector.flowNode.nestedIdHint":`A node inside a container region keeps its id here — rename it in the container’s Advanced JSON.`,"engine.inspector.flowNode.nestedLocation":`nested node location`,"engine.inspector.flowNode.advancedNotObject":`Must be a JSON object`,"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.kv.asExpression":`Write as a CEL expression`,"engine.inspector.flowNode.kv.expressionPlaceholder":`CEL expression, e.g. joinNonEmpty(…)`,"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.branchDefault":`default`,"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.gatedRequired.title":`Save is blocked: a required field sits in a conditional section.`,"engine.inspector.view.gatedRequired.issue":`Field "{fieldLabel}" ({field}) is required on object "{object}", but it sits in section "{section}", which is shown only when {predicate}. The server never evaluates that condition, so whenever the section is hidden the form cannot be completed — the record save is refused over a field the user cannot see.`,"engine.inspector.view.gatedRequired.remedies":`Fix it one of three ways:`,"engine.inspector.view.gatedRequired.remedyMove":`Move "{fieldLabel}" into a section that has no visibleWhen.`,"engine.inspector.view.gatedRequired.remedyDrop":`Remove visibleWhen from section "{section}".`,"engine.inspector.view.gatedRequired.remedyUnrequire":`Make "{fieldLabel}" not required on object "{object}".`,"engine.inspector.view.cf.title":`Conditional formatting`,"engine.inspector.view.cf.add":`Add rule`,"engine.inspector.view.cf.empty":`No rules. Add one to color rows by a CEL condition.`,"engine.inspector.view.cf.rule":`Rule`,"engine.inspector.view.cf.when":`When (CEL)`,"engine.inspector.view.cf.background":`Background`,"engine.inspector.view.cf.text":`Text`,"engine.inspector.view.cf.border":`Border`,"engine.inspector.view.cf.preview":`Preview`,"engine.inspector.view.cf.remove":`Remove rule`,"engine.inspector.view.cf.moveUp":`Move up`,"engine.inspector.view.cf.moveDown":`Move down`,"engine.condition.celLabel":`CEL expression`,"engine.condition.advancedHint":`Advanced expression — Builder only supports simple AND/OR conditions.`,"engine.inspector.condition.builder":`Builder`,"engine.inspector.condition.expression":`Expression`,"engine.inspector.condition.always":`Always — no condition.`,"engine.inspector.condition.and":`AND`,"engine.inspector.condition.or":`OR`,"engine.inspector.condition.subjectPlaceholder":`field / context`,"engine.inspector.condition.remove":`Remove condition`,"engine.inspector.condition.valuePlaceholder":`value`,"engine.inspector.condition.add":`Add condition`,"engine.inspector.condition.op.equals":`equals`,"engine.inspector.condition.op.notEquals":`not equals`,"engine.inspector.condition.op.greaterThan":`greater than`,"engine.inspector.condition.op.lessThan":`less than`,"engine.inspector.condition.op.truthy":`is set / true`,"engine.inspector.condition.op.falsy":`is empty / false`,"engine.inspector.condition.op.atLeast":`at least`,"engine.inspector.condition.op.atMost":`at most`,"engine.inspector.condition.op.contains":`contains`,"engine.inspector.condition.op.inAnyOf":`in (any of)`,"engine.inspector.condition.op.notIn":`not in`,"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.visibleWhen":`Visible when (CEL)`,"engine.inspector.pageBlock.properties":`Properties`,"engine.inspector.pageBlock.advanced":`Advanced`,"engine.inspector.pageBlock.remove":`Remove block`,"engine.inspector.pageBlock.outlineLabel":`Blocks`,"engine.inspector.pageBlock.list.add":`Add`,"engine.inspector.pageBlock.list.remove":`Remove`,"engine.inspector.pageBlock.list.removeItem":`Remove item`,"engine.inspector.pageBlock.objectPlaceholder":`snake_case object`,"engine.inspector.pageBlock.fieldPlaceholder":`field name`,"engine.inspector.pageBlock.field.object-grid.objectName":`Object`,"engine.inspector.pageBlock.field.object-grid.columns":`Columns`,"engine.inspector.pageBlock.field.object-grid.pageSize":`Page size`,"engine.inspector.pageBlock.field.object-form.objectName":`Object`,"engine.inspector.pageBlock.field.object-form.mode":`Mode`,"engine.inspector.pageBlock.option.mode.create":`Create`,"engine.inspector.pageBlock.option.mode.edit":`Edit`,"engine.inspector.pageBlock.option.mode.view":`View`,"engine.inspector.pageBlock.field.object-form.formType":`Form type`,"engine.inspector.pageBlock.option.formType.simple":`Simple`,"engine.inspector.pageBlock.option.formType.tabbed":`Tabbed`,"engine.inspector.pageBlock.option.formType.wizard":`Wizard`,"engine.inspector.pageBlock.option.formType.split":`Split`,"engine.inspector.pageBlock.option.formType.drawer":`Drawer`,"engine.inspector.pageBlock.option.formType.modal":`Modal`,"engine.inspector.pageBlock.field.object-form.layout":`Layout`,"engine.inspector.pageBlock.option.layout.vertical":`Vertical`,"engine.inspector.pageBlock.option.layout.horizontal":`Horizontal`,"engine.inspector.pageBlock.field.object-form.columns":`Columns (grid layout)`,"engine.inspector.pageBlock.field.object-form.fields":`Fields`,"engine.inspector.pageBlock.field.object-form.title":`Title`,"engine.inspector.pageBlock.field.object-form.description":`Description`,"engine.inspector.pageBlock.field.object-metric.objectName":`Object`,"engine.inspector.pageBlock.field.object-metric.label":`Label`,"engine.inspector.pageBlock.field.object-metric.description":`Description`,"engine.inspector.pageBlock.field.object-metric.icon":`Icon`,"engine.inspector.pageBlock.placeholder.object-metric.icon":`lucide icon name`,"engine.inspector.pageBlock.field.object-metric.colorVariant":`Color`,"engine.inspector.pageBlock.option.colorVariant.default":`Default`,"engine.inspector.pageBlock.option.colorVariant.blue":`Blue`,"engine.inspector.pageBlock.option.colorVariant.teal":`Teal`,"engine.inspector.pageBlock.option.colorVariant.orange":`Orange`,"engine.inspector.pageBlock.option.colorVariant.purple":`Purple`,"engine.inspector.pageBlock.option.colorVariant.success":`Success`,"engine.inspector.pageBlock.option.colorVariant.warning":`Warning`,"engine.inspector.pageBlock.option.colorVariant.danger":`Danger`,"engine.inspector.pageBlock.field.object-metric.format":`Format`,"engine.inspector.pageBlock.option.format.number":`Number`,"engine.inspector.pageBlock.option.format.currency":`Currency`,"engine.inspector.pageBlock.option.format.percent":`Percent`,"engine.inspector.pageBlock.field.object-metric.prefix":`Prefix`,"engine.inspector.pageBlock.field.object-metric.suffix":`Suffix`,"engine.inspector.pageBlock.field.object-kanban.objectName":`Object`,"engine.inspector.pageBlock.field.object-kanban.groupBy":`Group by field`,"engine.inspector.pageBlock.field.object-kanban.titleField":`Title field`,"engine.inspector.pageBlock.field.object-kanban.cardFields":`Card fields`,"engine.inspector.pageBlock.field.object-kanban.limit":`Limit`,"engine.inspector.pageBlock.field.grid.columns":`Columns`,"engine.inspector.pageBlock.field.grid.gap":`Gap`,"engine.inspector.pageBlock.field.element:text.content":`Content`,"engine.inspector.pageBlock.placeholder.element:text.content":`Text…`,"engine.inspector.pageBlock.field.element:text.variant":`Variant`,"engine.inspector.pageBlock.option.variant.h1":`Heading 1`,"engine.inspector.pageBlock.option.variant.h2":`Heading 2`,"engine.inspector.pageBlock.option.variant.h3":`Heading 3`,"engine.inspector.pageBlock.option.variant.h4":`Heading 4`,"engine.inspector.pageBlock.option.variant.h5":`Heading 5`,"engine.inspector.pageBlock.option.variant.h6":`Heading 6`,"engine.inspector.pageBlock.option.variant.body":`Body`,"engine.inspector.pageBlock.option.variant.caption":`Caption`,"engine.inspector.pageBlock.option.variant.overline":`Overline`,"engine.inspector.pageBlock.field.element:text.align":`Align`,"engine.inspector.pageBlock.option.align.left":`Left`,"engine.inspector.pageBlock.option.align.center":`Center`,"engine.inspector.pageBlock.option.align.right":`Right`,"engine.inspector.pageBlock.field.element:image.src":`Source URL`,"engine.inspector.pageBlock.field.element:image.alt":`Alt text`,"engine.inspector.pageBlock.field.element:image.fit":`Fit`,"engine.inspector.pageBlock.option.fit.cover":`Cover`,"engine.inspector.pageBlock.option.fit.contain":`Contain`,"engine.inspector.pageBlock.option.fit.fill":`Fill`,"engine.inspector.pageBlock.field.element:definition-list.items":`Items`,"engine.inspector.pageBlock.add.element:definition-list.items":`Add item`,"engine.inspector.pageBlock.field.element:definition-list.items.term":`Term`,"engine.inspector.pageBlock.field.element:definition-list.items.description":`Description`,"engine.inspector.pageBlock.field.element:definition-list.columns":`Columns (1 or 2)`,"engine.inspector.pageBlock.field.element:definition-list.inline":`Inline (term · description)`,"engine.inspector.pageBlock.field.element:repeater.object":`Object`,"engine.inspector.pageBlock.field.element:repeater.titleField":`Title field`,"engine.inspector.pageBlock.field.element:repeater.fields":`Fields`,"engine.inspector.pageBlock.field.element:repeater.limit":`Limit`,"engine.inspector.pageBlock.field.element:repeater.emptyText":`Empty text`,"engine.inspector.pageBlock.field.element:repeater.divided":`Dividers between rows`,"engine.inspector.pageBlock.field.element:number.object":`Object`,"engine.inspector.pageBlock.field.element:number.field":`Field`,"engine.inspector.pageBlock.field.element:number.aggregate":`Aggregate`,"engine.inspector.pageBlock.option.aggregate.count":`Count`,"engine.inspector.pageBlock.option.aggregate.sum":`Sum`,"engine.inspector.pageBlock.option.aggregate.avg":`Average`,"engine.inspector.pageBlock.option.aggregate.min":`Min`,"engine.inspector.pageBlock.option.aggregate.max":`Max`,"engine.inspector.pageBlock.field.element:number.format":`Format`,"engine.inspector.pageBlock.field.element:number.prefix":`Prefix`,"engine.inspector.pageBlock.field.element:number.suffix":`Suffix`,"engine.inspector.pageBlock.field.element:button.label":`Label`,"engine.inspector.pageBlock.field.element:button.variant":`Variant`,"engine.inspector.pageBlock.option.variant.primary":`Primary`,"engine.inspector.pageBlock.option.variant.secondary":`Secondary`,"engine.inspector.pageBlock.option.variant.danger":`Danger`,"engine.inspector.pageBlock.option.variant.ghost":`Ghost`,"engine.inspector.pageBlock.option.variant.link":`Link`,"engine.inspector.pageBlock.field.element:button.size":`Size`,"engine.inspector.pageBlock.option.size.small":`Small`,"engine.inspector.pageBlock.option.size.medium":`Medium`,"engine.inspector.pageBlock.option.size.large":`Large`,"engine.inspector.pageBlock.field.element:button.icon":`Icon`,"engine.inspector.pageBlock.placeholder.element:button.icon":`lucide icon name`,"engine.inspector.pageBlock.field.element:button.action":`Action`,"engine.inspector.pageBlock.field.page:header.title":`Title`,"engine.inspector.pageBlock.field.page:header.subtitle":`Subtitle`,"engine.inspector.pageBlock.field.page:card.title":`Title`,"engine.inspector.pageBlock.field.page:card.bordered":`Bordered`,"engine.inspector.pageBlock.field.page:tabs.items":`Tabs`,"engine.inspector.pageBlock.add.page:tabs.items":`Add tab`,"engine.inspector.pageBlock.field.page:tabs.items.value":`Value`,"engine.inspector.pageBlock.field.page:tabs.items.label":`Label`,"engine.inspector.pageBlock.field.page:accordion.items":`Sections`,"engine.inspector.pageBlock.add.page:accordion.items":`Add section`,"engine.inspector.pageBlock.field.page:accordion.items.label":`Label`,"engine.inspector.pageBlock.field.record:related_list.objectName":`Object`,"engine.inspector.pageBlock.field.record:related_list.relationshipField":`Relationship field`,"engine.inspector.pageBlock.field.record:related_list.title":`Title`,"engine.inspector.pageBlock.field.record:related_list.limit":`Limit`,"engine.inspector.pageBlock.field.record:highlights.fields":`Fields`,"engine.inspector.pageBlock.field.record:details.sections":`Sections`,"engine.inspector.pageBlock.add.record:details.sections":`Add section`,"engine.inspector.pageBlock.field.record:details.sections.name":`Name (i18n key)`,"engine.inspector.pageBlock.placeholder.record:details.sections.name":`snake_case, e.g. contact_info`,"engine.inspector.pageBlock.field.record:details.sections.label":`Label`,"engine.inspector.pageBlock.field.record:details.sections.columns":`Columns`,"engine.inspector.pageBlock.field.record:details.sections.fields":`Fields`,"engine.inspector.pageBlock.field.record:alert.severity":`Severity`,"engine.inspector.pageBlock.option.severity.info":`Info`,"engine.inspector.pageBlock.option.severity.warning":`Warning`,"engine.inspector.pageBlock.option.severity.error":`Error`,"engine.inspector.pageBlock.option.severity.success":`Success`,"engine.inspector.pageBlock.field.record:alert.title":`Title`,"engine.inspector.pageBlock.field.record:alert.body":`Body`,"engine.inspector.pageBlock.field.record:alert.icon":`Icon`,"engine.inspector.pageBlock.placeholder.record:alert.icon":`lucide icon name`,"engine.inspector.pageBlock.field.record:alert.dismissible":`Dismissible`,"engine.inspector.pageBlock.field.record:path.statusField":`Status field`,"engine.inspector.pageBlock.field.record:path.stages":`Stages`,"engine.inspector.pageBlock.add.record:path.stages":`Add stage`,"engine.inspector.pageBlock.field.record:path.stages.value":`Value`,"engine.inspector.pageBlock.field.record:path.stages.label":`Label`,"engine.inspector.pageBlock.field.record:quick_actions.actionNames":`Action names`,"engine.inspector.pageBlock.placeholder.record:quick_actions.actionNames":`action name`,"engine.inspector.pageBlock.field.record:quick_actions.location":`Location`,"engine.inspector.pageBlock.option.location.record_header":`Record header`,"engine.inspector.pageBlock.option.location.record_more":`Record more menu`,"engine.inspector.pageBlock.option.location.record_section":`Record section`,"engine.inspector.pageBlock.option.location.record_related":`Record related`,"engine.inspector.pageBlock.option.location.list_toolbar":`List toolbar`,"engine.inspector.pageBlock.option.location.list_item":`List item`,"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.hook.bodyLang.expression":`Expression (L1)`,"engine.inspector.hook.bodyLang.js":`Sandboxed JS (L2)`,"engine.inspector.hook.basics":`Basics`,"engine.inspector.hook.label":`Label`,"engine.inspector.hook.labelPlaceholder":`Human-readable name`,"engine.inspector.hook.name":`Name`,"engine.inspector.hook.namePlaceholder":`snake_case identifier`,"engine.inspector.hook.objects":`Object(s) this hook fires on`,"engine.inspector.hook.allObjects":`All objects (*)`,"engine.inspector.hook.noObjects":`No objects found — publish an object, then pick it here.`,"engine.inspector.hook.pickObject":`Pick at least one object (or All objects).`,"engine.inspector.hook.events":`Events`,"engine.inspector.hook.eventsHint":`Which lifecycle events invoke this hook.`,"engine.inspector.hook.eventsWrite":`Write`,"engine.inspector.hook.eventsQuery":`Query`,"engine.inspector.hook.pickEvent":`Select at least one event.`,"engine.inspector.hook.function":`Function`,"engine.inspector.hook.functionHint":`The handler that runs when the hook fires.`,"engine.inspector.hook.language":`Language`,"engine.inspector.hook.handlerBody":`Handler body`,"engine.inspector.hook.bodyHint.expression":`A single L1 expression evaluated against the record / ctx.`,"engine.inspector.hook.bodyHint.js":`Runs in the sandbox as (ctx) => Promise<void>.`,"engine.inspector.hook.options":`Options`,"engine.inspector.hook.priority":`Priority`,"engine.inspector.hook.async":`Run asynchronously (after commit)`,"engine.inspector.hook.condition":`Run only when (optional CEL)`,"engine.inspector.hook.moreFieldsHint":`Advanced / rarely-used properties.`,"engine.inspector.action.type.script":`Script — run an expression / sandboxed JS`,"engine.inspector.action.type.api":`API — call an endpoint`,"engine.inspector.action.type.flow":`Flow — invoke a flow`,"engine.inspector.action.type.modal":`Modal — open a modal/page`,"engine.inspector.action.type.form":`Form — open a FormView`,"engine.inspector.action.type.url":`URL — navigate to a link`,"engine.inspector.action.variant.primary":`Primary`,"engine.inspector.action.variant.secondary":`Secondary`,"engine.inspector.action.variant.danger":`Danger`,"engine.inspector.action.variant.ghost":`Ghost`,"engine.inspector.action.variant.link":`Link`,"engine.inspector.action.component.button":`Button`,"engine.inspector.action.component.icon":`Icon only`,"engine.inspector.action.component.menu":`Menu item`,"engine.inspector.action.component.group":`Button group`,"engine.inspector.action.mode.create":`Create`,"engine.inspector.action.mode.edit":`Edit`,"engine.inspector.action.mode.delete":`Delete`,"engine.inspector.action.mode.custom":`Custom`,"engine.inspector.action.bodyLang.expression":`Expression (L1)`,"engine.inspector.action.bodyLang.js":`Sandboxed JS (L2)`,"engine.inspector.action.paramType.text":`Text`,"engine.inspector.action.paramType.textarea":`Long text`,"engine.inspector.action.paramType.number":`Number`,"engine.inspector.action.paramType.boolean":`Checkbox`,"engine.inspector.action.paramType.select":`Select`,"engine.inspector.action.paramType.date":`Date`,"engine.inspector.action.paramType.datetime":`Date/time`,"engine.inspector.action.paramType.lookup":`Lookup`,"engine.inspector.action.location.record_header":`Record header`,"engine.inspector.action.location.record_more":`Record · more menu`,"engine.inspector.action.location.record_section":`Record · section`,"engine.inspector.action.location.record_related":`Record · related list`,"engine.inspector.action.location.list_toolbar":`List toolbar`,"engine.inspector.action.location.list_item":`List · row`,"engine.inspector.action.target.url.label":`URL`,"engine.inspector.action.target.url.placeholder":"https://… or /path?x=${param.x}","engine.inspector.action.target.url.hint":"Supports ${param.x} and ${ctx.x} interpolation.","engine.inspector.action.target.flow.label":`Flow name`,"engine.inspector.action.target.flow.placeholder":`snake_case flow`,"engine.inspector.action.target.flow.hint":`The flow to invoke when clicked.`,"engine.inspector.action.target.modal.label":`Modal / page name`,"engine.inspector.action.target.modal.placeholder":`snake_case page`,"engine.inspector.action.target.modal.hint":`The modal or page to open.`,"engine.inspector.action.target.form.label":`Form view name`,"engine.inspector.action.target.form.hint":`Opens /console/forms/<name>.`,"engine.inspector.action.target.api.label":`API endpoint`,"engine.inspector.action.target.api.hint":`Endpoint called with the request body below.`,"engine.inspector.action.scriptOp.run":`Run a script — sandboxed JS / expression body`,"engine.inspector.action.scriptOp.update":`Update fields on this record — no code`,"engine.inspector.action.objectPlaceholder":`snake_case object`,"engine.inspector.action.objectNone":`— None (global) —`,"engine.inspector.action.options":`Options`,"engine.inspector.action.optionsEmpty":`No choices yet — a Select with no options opens an empty picker in the dialog.`,"engine.inspector.action.optionLabel":`Label`,"engine.inspector.action.optionValue":`Value`,"engine.inspector.action.removeOption":`Remove option {index}`,"engine.inspector.action.addOption":`Add option`,"engine.inspector.action.basics":`Basics`,"engine.inspector.action.label":`Label`,"engine.inspector.action.labelPlaceholder":`Button text shown to users`,"engine.inspector.action.name":`Name`,"engine.inspector.action.namePlaceholder":`snake_case identifier`,"engine.inspector.action.object":`Object`,"engine.inspector.action.objectBoundHint":`Bound action — surfaces in this object’s views per the placement below.`,"engine.inspector.action.objectGlobalHint":`Empty = global action — must be referenced by a page’s quick actions, global nav, a flow, or AI to appear.`,"engine.inspector.action.icon":`Icon`,"engine.inspector.action.variant":`Variant`,"engine.inspector.action.behavior":`Behavior`,"engine.inspector.action.behaviorHint":`What happens when the action is triggered.`,"engine.inspector.action.type":`Type`,"engine.inspector.action.pinnedScript":`Pinned to {script}: the field write is performed on the platform action route, which is this type’s own route. Any other type is refused beside it.`,"engine.inspector.action.whatItDoes":`What it does`,"engine.inspector.action.fieldValues":`Field values`,"engine.inspector.action.fieldValuesEmpty":`No field values yet — add one, or collect the value as an input below.`,"engine.inspector.action.fieldValueField":`Field`,"engine.inspector.action.fieldValueValue":`Value`,"engine.inspector.action.removeFieldValue":`Remove field value`,"engine.inspector.action.addFieldValue":`Add field value`,"engine.inspector.action.updateHint":`Written to the current record as the caller — object permissions, hooks and validations fire as for a user edit. An input collected below with the same name overrides the fixed value here.`,"engine.inspector.action.scriptLanguage":`Script language`,"engine.inspector.action.scriptBody":`Script body`,"engine.inspector.action.scriptBodyHint":`Runs in the sandbox as {signature}.`,"engine.inspector.action.method":`Method`,"engine.inspector.action.inputs":`Inputs`,"engine.inspector.action.inputsHint":`Collected from the user in a dialog before the action runs.`,"engine.inspector.action.inputsEmpty":`No inputs — the action runs immediately on click.`,"engine.inspector.action.removeInput":`Remove input`,"engine.inspector.action.bindToField":`Bind to field`,"engine.inspector.action.paramName":`Name`,"engine.inspector.action.paramNamePlaceholder":`request-body key`,"engine.inspector.action.paramLabel":`Label`,"engine.inspector.action.paramTypeLabel":`Type`,"engine.inspector.action.paramPlaceholder":`Placeholder`,"engine.inspector.action.paramRequired":`Required`,"engine.inspector.action.paramPrefill":`Pre-fill from row`,"engine.inspector.action.addInput":`Add input`,"engine.inspector.action.placement":`Placement`,"engine.inspector.action.placementHint":`Where this action surfaces in the UI.`,"engine.inspector.action.noPlacement":`No placement selected — this action will not appear on any record or list surface. Tick a placement above, or place it from a view’s bulk actions.`,"engine.inspector.action.capabilityGate":`Capability-gated on {capabilities} — every placement ticked above hides this action from anyone who does not hold {whom}. Not greyed out and not an error: the button is simply absent, and the server refuses the invocation with a 403 either way.`,"engine.inspector.action.capabilityGateAll":`all of them`,"engine.inspector.action.capabilityGateOne":`it`,"engine.inspector.action.capabilityGateSelf":`This session does not hold {capabilities}, so the button is hidden from you too — grant it through a permission set to see it in the app.`,"engine.inspector.action.component":`Component`,"engine.inspector.action.feedback":`Feedback`,"engine.inspector.action.feedbackHint":`Confirmation and post-run messaging.`,"engine.inspector.action.confirmText":`Confirm prompt`,"engine.inspector.action.confirmTextPlaceholder":`Ask before running (leave blank to skip)`,"engine.inspector.action.successMessage":`Success message`,"engine.inspector.action.errorMessage":`Error message`,"engine.inspector.action.mode":`Mode`,"engine.inspector.action.refreshAfter":`Refresh view after`,"engine.inspector.action.undoable":`Offer undo`,"engine.inspector.action.conditions":`Conditions`,"engine.inspector.action.conditionsHint":`No-code predicates over the record / user / ctx (compiled to CEL).`,"engine.inspector.action.visibleWhen":`Visible when`,"engine.inspector.action.disabledWhen":`Disabled when`,"engine.inspector.action.ai":`AI exposure`,"engine.inspector.action.aiHint":`Opt-in: expose this action to AI agents as a callable tool.`,"engine.inspector.action.aiExposed":`Expose to AI agents`,"engine.inspector.action.aiDescription":`Tool description (required, ≥40 chars)`,"engine.inspector.action.aiDescriptionPlaceholder":`When and why an agent should call this action…`,"engine.inspector.action.aiDescriptionTooShort":`A ≥40-character description is required while exposed.`,"engine.inspector.action.moreFieldsHint":`Advanced / rarely-used properties.`,"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.dataset.kind":`Dataset`,"engine.inspector.dataset.aggregate.count":`count`,"engine.inspector.dataset.aggregate.sum":`sum`,"engine.inspector.dataset.aggregate.avg":`avg`,"engine.inspector.dataset.aggregate.min":`min`,"engine.inspector.dataset.aggregate.max":`max`,"engine.inspector.dataset.aggregate.count_distinct":`count distinct`,"engine.inspector.dataset.dimType.string":`string`,"engine.inspector.dataset.dimType.number":`number`,"engine.inspector.dataset.dimType.date":`date`,"engine.inspector.dataset.dimType.boolean":`boolean`,"engine.inspector.dataset.dimType.lookup":`lookup`,"engine.inspector.dataset.granularity.none":`— none —`,"engine.inspector.dataset.granularity.day":`day`,"engine.inspector.dataset.granularity.week":`week`,"engine.inspector.dataset.granularity.month":`month`,"engine.inspector.dataset.granularity.quarter":`quarter`,"engine.inspector.dataset.granularity.year":`year`,"engine.inspector.dataset.derivedOp.ratio":`ratio (a ÷ b)`,"engine.inspector.dataset.derivedOp.sum":`sum (a + b)`,"engine.inspector.dataset.derivedOp.difference":`difference (a − b)`,"engine.inspector.dataset.derivedOp.product":`product (a × b)`,"engine.inspector.dataset.formatKind.raw":`Raw number`,"engine.inspector.dataset.formatKind.number":`Number — 1,234.5`,"engine.inspector.dataset.formatKind.currency":`Currency — $1,234.50`,"engine.inspector.dataset.formatKind.percent":`Percent — 12.3%`,"engine.inspector.dataset.usage.bound":`Bound by {reports} · {dashboards} — changes affect them.`,"engine.inspector.dataset.usage.reportsOne":`{count} report`,"engine.inspector.dataset.usage.reportsOther":`{count} reports`,"engine.inspector.dataset.usage.dashboardsOne":`{count} dashboard`,"engine.inspector.dataset.usage.dashboardsOther":`{count} dashboards`,"engine.inspector.dataset.usage.unbound":`Not yet bound by any report or dashboard.`,"engine.inspector.dataset.name":`Name`,"engine.inspector.dataset.namePlaceholder":`snake_case identifier`,"engine.inspector.dataset.label":`Label`,"engine.inspector.dataset.description":`Description`,"engine.inspector.dataset.baseObject":`Base object`,"engine.inspector.dataset.baseObjectPlaceholder":`Select an object…`,"engine.inspector.dataset.searchObjects":`Search objects…`,"engine.inspector.dataset.baseObjectChangeHint":`Changing the base object clears its dimensions, measures, joins & filters.`,"engine.inspector.dataset.includedRelationships":`Included relationships`,"engine.inspector.dataset.noJoins":`No joins. Add a relationship (a lookup field on {object}) to use {path} dimensions/measures.`,"engine.inspector.dataset.baseObjectFallback":`the base object`,"engine.inspector.dataset.includedRelationship":`Included relationship`,"engine.inspector.dataset.relationshipPlaceholder":`Select a relationship…`,"engine.inspector.dataset.searchRelationships":`Search relationships…`,"engine.inspector.dataset.removeRelationship":`Remove relationship`,"engine.inspector.dataset.scopeFilter":`Scope filter`,"engine.inspector.dataset.scopeFilterHelp":`Intrinsic scope, ANDed into every query (e.g. exclude soft-deleted records).`,"engine.inspector.dataset.dimensions":`Dimensions`,"engine.inspector.dataset.addDimension":`Add dimension`,"engine.inspector.dataset.dimensionN":`Dimension {index}`,"engine.inspector.dataset.removeDimension":`Remove dimension`,"engine.inspector.dataset.dimensionNamePlaceholder":`e.g. region`,"engine.inspector.dataset.field":`Field`,"engine.inspector.dataset.dimensionFieldPlaceholder":`field or relationship.field`,"engine.inspector.dataset.type":`Type`,"engine.inspector.dataset.labelOptional":`Label (optional)`,"engine.inspector.dataset.displayLabel":`Display label`,"engine.inspector.dataset.dateBucket":`Date bucket`,"engine.inspector.dataset.measures":`Measures`,"engine.inspector.dataset.addMeasure":`Add measure`,"engine.inspector.dataset.measureN":`Measure {index}`,"engine.inspector.dataset.removeMeasure":`Remove measure`,"engine.inspector.dataset.measureNamePlaceholder":`e.g. revenue`,"engine.inspector.dataset.aggregate":`Aggregate`,"engine.inspector.dataset.measureFieldPlaceholder":`field (optional for count)`,"engine.inspector.dataset.measureFilter":`Filter (measure-scoped)`,"engine.inspector.dataset.measureFilterHelp":`Only rows matching this filter feed this measure (e.g. won_amount = sum(amount) where stage = won).`,"engine.inspector.dataset.derived":`Derived — computed from other measures`,"engine.inspector.dataset.operation":`Operation`,"engine.inspector.dataset.operands":`Operands (other measures)`,"engine.inspector.dataset.derivedNeedTwo":`Select exactly 2 measures for {op}.`,"engine.inspector.dataset.derivedNeedOne":`Select at least 1 measure for {op}.`,"engine.inspector.dataset.addOtherMeasuresFirst":`Add other measures first.`,"engine.inspector.dataset.advanced":`Advanced`,"engine.inspector.dataset.displayFormat":`Display format`,"engine.inspector.dataset.decimals":`Decimals`,"engine.inspector.dataset.currency":`Currency`,"engine.inspector.dataset.sample":`Sample: {sample}`,"engine.inspector.dataset.relWarning":`Relationship {rel} isn't in Included relationships.`,"engine.inspector.dataset.relWarningAdd":`Add it`,"engine.inspector.dataset.filterAdvanced":`Advanced filter (nested / OR) — edit it in the {source} tab.`,"engine.inspector.dataset.sourceTab":`Source`,"engine.inspector.dataset.filterConditionsOne":`{count} condition`,"engine.inspector.dataset.filterConditionsOther":`{count} conditions`,"engine.inspector.dataset.addFilter":`+ Add filter…`,"engine.inspector.dataset.filterNeedsObject":`Pick a base object to add filter conditions.`,"engine.inspector.reference.pickFromRecords":`Pick from records`,"engine.inspector.reference.enterManually":`Enter value manually`,"engine.inspector.reference.managerPlaceholder":`Resolved automatically`,"engine.inspector.reference.managerHint":`Resolved at runtime from the submitter's manager — no value needed.`,"engine.inspector.reference.queueUnsupported":`Queue approvers are not supported by the runtime yet — this slot resolves to nobody.`,"engine.inspector.reference.fieldsOf":`Fields of {object}.`,"engine.inspector.reference.setTriggerObject":`Set the flow’s trigger object (on the Start node) to list fields.`,"engine.inspector.reference.actionsOf":`Actions of {connector}.`,"engine.inspector.reference.chooseConnector":`Choose a Connector above to list its actions.`,"engine.inspector.reference.declarative":`declarative`,"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.flowPalette.search":`Search nodes…`,"engine.flowPalette.empty":`No matching nodes.`,"engine.flowPalette.recent":`Recently used`,"engine.flowPalette.category.data":`Data`,"engine.flowPalette.category.logic":`Logic`,"engine.flowPalette.category.human":`Human`,"engine.flowPalette.category.integration":`Integration`,"engine.flowPalette.category.flow":`Flow`,"engine.flowCanvas.zoomOut":`Zoom out`,"engine.flowCanvas.zoomIn":`Zoom in`,"engine.flowCanvas.fit":`Fit to view`,"engine.flowCanvas.canvas":`Flow canvas`,"engine.flowCanvas.reveal":`Reveal on canvas`,"engine.flowCanvas.moreErrors":`+{count} more…`,"engine.flowCanvas.insertNode":`Insert node here`,"engine.flowCanvas.addConnected":`Add connected node`,"engine.flowCanvas.addReviseLoop":`Add revision loop (send back for revision)`,"engine.flowCanvas.addReviseLoopShort":`Add revision loop`,"engine.flowCanvas.awaitingRevision":`Awaiting Revision`,"engine.flowCanvas.collapseRegions":`Collapse nested regions`,"engine.flowCanvas.expandRegions":`Expand nested regions`,"engine.flowCanvas.edge.undeclaredCycle":`{source} → {target} — part of an un-declared cycle; mark the edge that closes the loop as a back-edge`,"engine.flowCanvas.edge.backEdge":`{source} ↩ {target} (back-edge)`,"engine.flowCanvas.summary.branches":`{count} branches`,"engine.flowCanvas.summary.approversOne":`{count} approver`,"engine.flowCanvas.summary.approversOther":`{count} approvers`,"engine.flowCanvas.summary.unanimous":`all`,"engine.flowCanvas.summary.code":`code`,"engine.flowRegion.branchN":`Branch {n}`,"engine.flowRegion.try":`Try`,"engine.flowRegion.catch":`Catch`,"engine.flowRegion.body":`Body`,"engine.flowPreview.emptyHint":`Add nodes in the Form tab to see the flow preview.`,"engine.flowPreview.malformed":`One of the flow nodes or edges is malformed.`,"engine.flowPreview.pill.trigger":`Trigger`,"engine.flowPreview.pill.status":`Status`,"engine.flowPreview.pill.runAs":`Run as`,"engine.flowPreview.pill.onError":`On error`,"engine.flowPreview.showVars":`Show variables panel`,"engine.flowPreview.hideVars":`Hide variables panel`,"engine.flowPreview.variables":`Variables`,"engine.flowPreview.noVars":`No variables declared.`,"engine.flowPreview.runsTitle":`Run history from the automation engine`,"engine.flowPreview.runs":`Runs`,"engine.flowPreview.problemsTitle":`Validation problems`,"engine.flowPreview.problems":`Problems`,"engine.flowPreview.debug":`Debug`,"engine.flowPreview.varIn":`in`,"engine.flowPreview.varOut":`out`,"engine.flowRuns.title":`Runs`,"engine.flowRuns.refresh":`Refresh run history`,"engine.flowRuns.unavailable":`Run history unavailable — the automation engine is offline or this flow hasn’t been published.`,"engine.flowRuns.empty":`No runs yet.`,"engine.flowRuns.noSteps":`No step log recorded.`,"engine.flowRuns.iteration":`Iteration`,"engine.flowRuns.iterationN":`Iteration {n}`,"engine.flowRuns.branch":`Branch`,"engine.flowRuns.branchN":`Branch {n}`,"engine.flowRuns.branchNIterationM":`Branch {n} · Iteration {m}`,"engine.flowRuns.try":`Try`,"engine.flowRuns.catch":`Catch`,"engine.flowRuns.status.completed":`Completed`,"engine.flowRuns.status.failed":`Failed`,"engine.flowRuns.status.paused":`Paused`,"engine.flowRuns.status.running":`Running`,"engine.flowRuns.status.cancelled":`Cancelled`,"engine.flowRuns.runId":`run {id}`,"engine.flowRuns.trigger":`trigger {type}`,"engine.flowSim.run":`Run`,"engine.flowSim.step":`Step`,"engine.flowSim.continue":`Continue`,"engine.flowSim.reset":`Reset`,"engine.flowSim.add":`Add`,"engine.flowSim.resumeBranch":`Resume down the “{branch}” branch`,"engine.flowSim.screen":`Screen`,"engine.flowSim.inputs":`Inputs`,"engine.flowSim.setVariables":`Set variables`,"engine.flowSim.setVariablesHint":`Override or inject any variable (wins over inputs and mocks at start).`,"engine.flowSim.mockOutputs":`Mock outputs`,"engine.flowSim.mockPlaceholder":`mocked result (JSON)`,"engine.flowSim.variables":`Variables`,"engine.flowSim.noVars":`No variables set.`,"engine.flowSim.timeline":`Timeline`,"engine.flowSim.namePlaceholder":`name`,"engine.flowSim.valuePlaceholder":`value`,"engine.flowSim.removeVariable":`Remove variable`,"engine.flowSim.idleHint":`Press Run to simulate, or Step to walk node by node. Side effects are mocked — no backend is called.`,"engine.flowSim.status.idle":`idle`,"engine.flowSim.status.running":`running`,"engine.flowSim.status.paused":`paused`,"engine.flowSim.status.done":`done`,"engine.flowSim.status.error":`error`,"engine.flowSim.stepStatus.ok":`ok`,"engine.flowSim.stepStatus.mocked":`mocked`,"engine.flowSim.stepStatus.paused":`paused`,"engine.flowSim.stepStatus.skipped":`skipped`,"engine.flowSim.stepStatus.error":`error`,"engine.flowSim.edge.error":`error`,"engine.flowSim.note.stepLimit":`Step limit ({max}) exceeded — the flow may contain an infinite loop.`,"engine.flowSim.note.nodeNotFound":`Node "{id}" not found.`,"engine.flowSim.note.resumed":`Resumed.`,"engine.flowSim.note.decisionTaken":`Decision: {decision} → {taken}.`,"engine.flowSim.note.decisionNoneTaken":`no out-edge taken`,"engine.flowSim.note.noDecision":`No decision supplied; every out-edge is considered.`,"engine.flowSim.note.flowEnd":`Flow end reached.`,"engine.flowSim.note.unsupported":`"{type}" is not modelled by the simulator; passing through without its real semantics.`,"engine.flowSim.note.parallelSplit":`Parallel split — branches fan out (no join synchronization is simulated).`,"engine.flowSim.note.approvalReached":`Approval reached — choose a decision to continue.`,"engine.flowSim.note.waitReached":`Wait reached — continue manually.`,"engine.flowSim.note.screenReached":`Screen reached — provide inputs, then continue.`,"engine.flowSim.note.screenUnevaluable":`A screen field's visibleWhen may reference only the fields declared on this screen; the screen cannot evaluate {fields}.`,"engine.flowSim.note.screenUnevaluableField":`"{name}" ({reason})`,"engine.flowSim.note.screenNoInput":`Screen has no input — passed through (matches runtime).`,"engine.flowSim.note.passThrough":`Type "{type}" treated as pass-through.`,"engine.flowSim.note.decisionNoOutEdge":`The decision has no out-edge; the runtime ends this branch here.`,"engine.flowSim.note.branchMatched":`Branch "{label}" matched (config.conditions).`,"engine.flowSim.note.noConditionMatched":`No entry of config.conditions matched; the branch is "{label}".`,"engine.flowSim.note.noAssignments":`No assignments defined.`,"engine.flowSim.note.unmodelledToken":`{token} in "{key}"`,"engine.flowSim.note.unmodelled":`Kept as written, not modelled by the Debug run: {tokens}. The runtime resolves NOW() / TODAY(), $User.* and arithmetic itself, and fails the node on a call to a function it does not know.`,"engine.flowSim.note.loopSinglePass":`Loop simulated as a single pass (body re-execution is not modelled).`,"engine.flowSim.note.loopCollection":`Collection "{ref}" has {count} item(s); simulated as a single pass.`,"engine.flowSim.note.loopNotArray":`Collection "{ref}" is not an array; loop may not run at runtime.`,"engine.flowSim.note.mockedCall":`Mocked call to '{fn}' (no function executed).`,"engine.flowSim.note.retiredAction":`Retired '{action}' action — it never delivered anything; use a notify node (or a connector for Slack).`,"engine.flowSim.note.retiredScript":`Retired inline script — the runtime never executed it; move the logic into a registered function.`,"engine.flowSim.note.mocked":`Mocked {type} (no backend call).`,"engine.flowSim.note.noBranchLabel":`No out-edge carries the branch label "{label}", so every out-edge is considered, as the runtime does (it logs a warning).`,"engine.flowSim.note.evaluationFailed":`Evaluation failed.`,"engine.flowSim.note.multipleMatched":`Multiple conditions matched; the first declared branch was taken (the runtime takes every match, objectstack#15429).`,"engine.flowSim.note.noEdgeTaken":`No out-edge was taken: no guard was true and there is no default edge. The runtime ends this branch here.`,"engine.flowSim.note.celEvaluationFailed":`CEL evaluation failed: {message}`,"engine.flowSim.note.celConditionFailed":`condition failed to evaluate as CEL: {message}`,"engine.previewShell.renderFailed":`Preview failed to render`,"engine.screenPreview.header":`Preview`,"engine.screenPreview.empty":`Add a title, description, fields, or an object form to preview this screen.`,"engine.screenPreview.submit":`Submit`,"engine.screenPreview.noDataSource":`Connect to a backend to preview this object form.`,"engine.screenPreview.hiddenOne":`{count} field hidden by its “visible when” condition.`,"engine.screenPreview.hiddenOther":`{count} fields hidden by their “visible when” conditions.`,"engine.screenPreview.defaultTemplate":`Default template for “{field}”, shown as written — the run fills it in:`,"engine.actionPreview.empty":`Set name and label to see the action preview.`,"engine.actionPreview.pill.type":`type: {type}`,"engine.actionPreview.pill.object":`object: {object}`,"engine.actionPreview.pill.variant":`variant: {variant}`,"engine.actionPreview.pill.refreshAfter":`refresh after`,"engine.actionPreview.pill.aiOptedOut":`AI: opted out`,"engine.actionPreview.pill.aiExposed":`AI: exposed`,"engine.actionPreview.locations":`Locations:`,"engine.actionPreview.requires":`Requires:`,"engine.actionPreview.visibleWhen":`Visible when`,"engine.actionPreview.disabledWhen":`Disabled when`,"engine.actionPreview.onClick":`On click`,"engine.actionPreview.firstAsks":`First asks:`,"engine.actionPreview.onSuccess":`On success:`,"engine.actionPreview.handler.none":`No handler bound yet.`,"engine.actionPreview.handler.url":`Navigate to {target}`,"engine.actionPreview.handler.flow":`Run flow {target}`,"engine.actionPreview.handler.modal":`Open modal {target}`,"engine.actionPreview.handler.api":`Call API endpoint {target}`,"engine.actionPreview.handler.form":`Open form view {target} (/console/forms/{path})`,"engine.actionPreview.handler.scriptBody":`Run inline script body (L1 expression or L2 sandboxed JS).`,"engine.actionPreview.handler.scriptNamed":`Run named script {target}`,"engine.actionPreview.handler.invoke":`Invoke {target}`,"engine.actionPreview.section.placement":`Where it appears`,"engine.actionPreview.capabilityGateNote":`Hidden from anyone who does not hold {capabilities} — the frames below show the placement, not who can see it.`,"engine.actionPreview.section.testRequest":`Test request`,"engine.actionPreview.section.inputDialog":`Input Dialog`,"engine.actionPreview.section.resultDialog":`Result Dialog`,"engine.actionPreview.section.scriptBody":`Script Body ({language})`,"engine.actionPreview.dialog.ok":`OK`,"engine.actionPreview.param.carryOver":`Carried over from the selected row (read-only)`,"engine.actionPreview.param.fromRow":`(from selected row)`,"engine.actionPreview.param.selectPlaceholder":`Select {label}`,"engine.actionPreview.param.recordIdPlaceholder":`Record id for {label}`,"engine.actionPreview.param.noReference":`No {reference} object is configured, so the record picker is unavailable and the dialog asks for a record id.`,"engine.actionPreview.param.toggle":`Toggle`,"engine.actionPreview.param.noChoices":`No choices authored yet — the dialog opens an empty picker.`,"engine.actionPreview.param.searchObject":`Search {object}…`,"engine.actionPreview.param.searchRecords":`Search records…`,"engine.actionPreview.result.title":`Result`,"engine.actionPreview.result.acknowledge":`I have saved this`,"engine.actionPreview.result.fullJson":`Renders full JSON response.`,"engine.actionPreview.placement.sampleRecord":`Sample record`,"engine.actionPreview.placement.recordDetail":`Record detail`,"engine.actionPreview.placement.recordBody":`…record body…`,"engine.actionPreview.placement.records":`Records`,"engine.actionPreview.placement.rows":`row 1 · row 2 · row 3`,"engine.actionPreview.placement.row":`Row {n}`,"engine.actionPreview.placement.section":`Section`,"engine.actionPreview.placement.sectionBody":`…section content…`,"engine.actionPreview.placement.more":`More`,"engine.actionPreview.api.paramsOne":`+ {count} user-supplied param collected at runtime`,"engine.actionPreview.api.paramsOther":`+ {count} user-supplied params collected at runtime`,"engine.actionPreview.api.liveWarning":`Sends a real {method} request to the live backend — may modify data.`,"engine.actionPreview.api.sending":`Sending…`,"engine.actionPreview.api.send":`Send test request`,"engine.actionPreview.api.networkError":`Network error`,"engine.agentPreview.tryInChat":`Try in chat`,"engine.agentPreview.tryInChatTitle":`Open the saved version of this agent in a new chat`,"engine.agentPreview.empty":`Fill in label, role, and instructions in the Form tab to see the agent preview.`,"engine.agentPreview.active":`Active`,"engine.agentPreview.disabled":`Disabled`,"engine.agentPreview.temperature":`temp {value}`,"engine.agentPreview.maxTokens":`max {count}t`,"engine.agentPreview.instructions":`Instructions`,"engine.agentPreview.noInstructions":`No system prompt set yet.`,"engine.agentPreview.capabilities":`Capabilities`,"engine.agentPreview.skills":`Skills`,"engine.agentPreview.noSkills":`No skills attached — this agent can reach no tools.`,"engine.agentPreview.toolsNote":`Tools come from the attached skills; grounding is described in the instructions.`,"engine.agentPreview.planning":`Planning`,"engine.agentPreview.memory":`Memory`,"engine.agentPreview.guardrails":`Guardrails`,"engine.agentPreview.permissions":`Permissions`,"engine.agentPreview.defaults":`Defaults in use.`,"engine.agentPreview.noValues":`No values set.`,"engine.skillPreview.empty":`Give the skill a name and at least an instructions block to see the preview.`,"engine.skillPreview.active":`Active`,"engine.skillPreview.disabled":`Disabled`,"engine.skillPreview.model":`model: {model}`,"engine.skillPreview.instructions":`Instructions`,"engine.skillPreview.noInstructions":`No instructions yet — the skill will contribute nothing to the prompt.`,"engine.skillPreview.tools":`Tools ({count})`,"engine.skillPreview.noTools":`No tools whitelisted.`,"engine.skillPreview.wildcardNote":`Wildcards expand to many tools at runtime — review the matching set in the agent before activating.`,"engine.skillPreview.triggerConditions":`Trigger Conditions ({count})`,"engine.skillPreview.col.field":`Field`,"engine.skillPreview.col.operator":`Operator`,"engine.skillPreview.col.value":`Value`,"engine.skillPreview.allMustHold":`All conditions must hold (AND) for the skill to activate.`,"engine.skillPreview.missing":`missing`,"engine.skillPreview.missingTitle":`Required by SkillTriggerConditionSchema — this draft will be rejected on save.`,"engine.toolPreview.openApiConsole":`Open in API Console`,"engine.toolPreview.openApiConsoleTitle":`Open API Console to test invocation`,"engine.toolPreview.empty":`Set name, description, and parameters to see the tool preview.`,"engine.toolPreview.inputParameters":`Input Parameters`,"engine.toolPreview.noParameters":`This tool takes no input parameters.`,"engine.toolPreview.exampleCall":`Example LLM Call`,"engine.toolPreview.outputSchema":`Output Schema`,"engine.toolPreview.col.name":`Name`,"engine.toolPreview.col.type":`Type`,"engine.toolPreview.col.description":`Description`,"engine.toolPreview.required":`req`,"engine.toolPreview.enum":`enum: {values}`,"engine.toolPreview.default":`default:`,"engine.toolPreview.format":`format: {format}`,"engine.jobPreview.empty":`Set a schedule (cron / every / at) and a handler to see the job preview.`,"engine.jobPreview.active":`Active`,"engine.jobPreview.paused":`Paused`,"engine.jobPreview.retries":`retries: {count}`,"engine.jobPreview.retriesBackoff":`retries: {count} ({backoff} backoff)`,"engine.jobPreview.timeout":`timeout: {duration}`,"engine.jobPreview.concurrency":`concurrency: {count}`,"engine.jobPreview.schedule":`Schedule`,"engine.jobPreview.every":`Every`,"engine.jobPreview.at":`At`,"engine.jobPreview.unparseable":`unparseable`,"engine.jobPreview.noSchedule":`No schedule set — runs only when triggered manually.`,"engine.jobPreview.nextRunOne":`Next {count} run`,"engine.jobPreview.nextRunOther":`Next {count} runs`,"engine.jobPreview.noFireTime":`Could not derive any future fire time. Check the schedule syntax.`,"engine.jobPreview.noUpcoming":`No upcoming runs in the next 366 days.`,"engine.jobPreview.inDelta":`in {delta}`,"engine.jobPreview.inNow":`in now`,"engine.jobPreview.handler":`Handler`,"engine.jobPreview.noHandler":`No handler bound — the job will be a no-op.`,"engine.celTest.predicateEmpty":`The predicate is empty.`,"engine.celTest.notObject":`expected a JSON object.`,"engine.appPreview.openTitle":`Open this app in a new tab`,"engine.appPreview.open":`Open`,"engine.appPreview.homeFirst":`Home: opens the first navigation item`,"engine.appPreview.homeNone":`Home: no navigation item yields a route yet`,"engine.appPreview.empty":`No top-level nav items. Add {navigation} entries in the Form tab to populate the app's navigation.`,"engine.appPreview.unnamed":`(unnamed)`,"engine.appPreview.noTypeTitle":"Every navigation item needs a `type` discriminator — this entry will be rejected on save.","engine.appPreview.noType":`no type`,"engine.appPreview.areas":`Areas`,"engine.bookPreview.nameTitle":`Name your book`,"engine.bookPreview.nameDescription":`Enter a name in the Form tab to start authoring the documentation spine.`,"engine.bookPreview.treeTitle":`Open the live-resolved navigation tree (actual docs per group)`,"engine.bookPreview.tree":`Resolved tree`,"engine.bookPreview.audience.public":`Public`,"engine.bookPreview.audience.permissionSet":`Permission set: {name}`,"engine.bookPreview.audience.org":`Org`,"engine.bookPreview.slug":`Slug: {slug}`,"engine.bookPreview.noGroups":`No groups yet`,"engine.bookPreview.noGroupsDescription":`A book needs at least one group in its {groups} spine. Each group derives its members from an {include} rule (a glob like {glob} or a {tag}).`,"engine.bookPreview.noKey":`(no key)`,"engine.bookPreview.orderTitle":`Order within the book`,"engine.bookPreview.packageTitle":`Membership rule is scoped to this package`,"engine.bookPreview.derived":`Members derived from the rule above — resolved against the live doc set.`,"engine.bookPreview.noRule":`No {include} rule and no explicit {pages} — this group matches nothing unless docs set {group}.`,"engine.bookPreview.curatedTitle":`Curated order via explicit pages`,"engine.bookPreview.curated":`curated`,"engine.bookPreview.globTitle":`Glob over doc names`,"engine.bookPreview.tagTitle":`Match by doc tag`,"engine.bookPreview.separator":`separator`,"engine.bookPreview.rest":`…rest (remaining matched docs, by order)`,"engine.bookPreview.emptyPage":`(empty)`,"engine.docPreview.bookSection":`Book section`,"engine.docPreview.noSection":`Not placed in a section`,"engine.docPreview.unknownSection":`{key} (not a section of any book)`,"engine.docPreview.booksLoading":`Loading books…`,"engine.docPreview.booksFailed":`Books could not be loaded: {message}`,"engine.docPreview.appearsIn":`Appears in:`,"engine.docPreview.publicBook":`public`,"engine.docPreview.noBooks":`No documentation book exists yet — create one to place this doc in a section.`,"engine.docPreview.unplaced":`Not in any book section yet — book trees list it under Uncategorized.`,"engine.docPreview.locales":`Locale variants`,"engine.docPreview.baseLocale":`Default`,"engine.docPreview.removeLocale":`Remove the {locale} variant`,"engine.docPreview.localePlaceholder":`zh-CN`,"engine.docPreview.addLocaleInput":`New locale tag`,"engine.docPreview.addLocale":`Locale`,"engine.docPreview.localeDuplicate":`{locale} already has a variant`,"engine.docPreview.localeInvalid":`Use a locale tag such as zh-CN`,"engine.docPreview.variantTitle":`Title`,"engine.docPreview.variantSummary":`Summary`,"engine.docPreview.preview":`Live preview`,"engine.docPreview.renderFailed":`The Markdown renderer failed on this content.`,"engine.docPreview.emptyEditing":`Nothing to preview yet — write Markdown in the source pane.`,"engine.docPreview.empty":`This doc has no content.`,"engine.docPreview.source":`Markdown source`,"engine.docPreview.sourceLocale":`Markdown source ({locale})`,"engine.docPreview.sourcePlaceholder":`# Title
|
|
1
|
+
import{w as e}from"./i18n-runtime-CdWyaiOD.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`,doc:`Documentation`,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:`文档手册`,doc:`文档`,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.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.package.writableRequired":`Pick or create a writable base (package) first — this item cannot be authored into a read-only code 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.lockUnknown":`This item is locked, but this console does not recognise the lock state ‘{state}’ — it may come from a newer server. Some operations will be blocked.`,"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.auditErrorTitle":`Audit trail could not be read`,"engine.edit.auditErrorDescription":`The audit read did not complete, so whether anything has been recorded for this item is unknown. This is not a statement that no attempts were made — use Refresh to ask again.`,"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.draftSuffix":`(draft)`,"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.widget.filterBindingsSection":`Dashboard filter bindings`,"engine.inspector.widget.filterBindingsHint":`Map each dashboard-level filter to one of this widget’s own fields, or untick Apply to opt the widget out. Empty = the filter’s own field.`,"engine.inspector.widget.filterBindingApply":`Apply`,"engine.inspector.widget.filterBindingDefault":`Default ({field})`,"engine.inspector.widget.filterBindingField":`Bound field for {filter}`,"engine.inspector.widget.filterBindingReset":`Reset`,"engine.inspector.widget.type.metric":`KPI Metric`,"engine.inspector.widget.type.bar":`Bar Chart`,"engine.inspector.widget.type.horizontalBar":`Horizontal Bar`,"engine.inspector.widget.type.line":`Line Chart`,"engine.inspector.widget.type.area":`Area Chart`,"engine.inspector.widget.type.pie":`Pie Chart`,"engine.inspector.widget.type.donut":`Donut Chart`,"engine.inspector.widget.type.funnel":`Funnel`,"engine.inspector.widget.type.table":`Table`,"engine.inspector.widget.type.pivot":`Pivot Table`,"engine.inspector.widget.untitledN":`Widget {n}`,"engine.inspector.widget.unsupportedSelection":`Unsupported selection kind: {kind}`,"engine.inspector.widget.removed":`The selected widget was removed from the draft.`,"engine.widgetPicker.search":`Search widgets…`,"engine.widgetPicker.noMatches":`No matches.`,"engine.widgetPicker.category.kpi":`Single value`,"engine.widgetPicker.category.chart":`Charts`,"engine.widgetPicker.category.data":`Tabular`,"engine.widgetPicker.type.metric":`Metric (KPI)`,"engine.widgetPicker.type.bar":`Bar chart`,"engine.widgetPicker.type.horizontalBar":`Horizontal bar`,"engine.widgetPicker.type.line":`Line chart`,"engine.widgetPicker.type.area":`Area chart`,"engine.widgetPicker.type.pie":`Pie chart`,"engine.widgetPicker.type.donut":`Donut chart`,"engine.widgetPicker.type.scatter":`Scatter plot`,"engine.widgetPicker.type.funnel":`Funnel`,"engine.widgetPicker.type.table":`Data table`,"engine.widgetPicker.type.pivot":`Pivot table`,"engine.dashboardPreview.empty":`Add at least one widget to see a preview.`,"engine.dashboardPreview.malformed":`A widget references an object or field that doesn't resolve.`,"engine.dashboardPreview.loading":`Loading dashboard renderer…`,"engine.dashboardPreview.selected":`Selected`,"engine.dashboardPreview.clickToRename":`Click to rename`,"engine.dashboardPreview.untitled":`untitled`,"engine.dashboardPreview.saveTitle":`Save title`,"engine.dashboardPreview.renameWidget":`Rename widget`,"engine.dashboardPreview.clearSelection":`Clear selection`,"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.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.inactiveRetained":`Kept, not in effect — its controlling field is off. The value stays saved until you clear it.`,"engine.inspector.flowNode.inactiveRetainedOrphan":`Kept, not in effect — nothing activates this field. The value stays saved so it is not lost silently.`,"engine.inspector.flowNode.inactiveRetainedClear":`Clear value`,"engine.inspector.flowNode.noConfig":`No configuration needed for this node type.`,"engine.inspector.flowNode.nestedIdHint":`A node inside a container region keeps its id here — rename it in the container’s Advanced JSON.`,"engine.inspector.flowNode.nestedLocation":`nested node location`,"engine.inspector.flowNode.advancedNotObject":`Must be a JSON object`,"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.kv.asExpression":`Write as a CEL expression`,"engine.inspector.flowNode.kv.expressionPlaceholder":`CEL expression, e.g. joinNonEmpty(…)`,"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.branchDefault":`default`,"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.gatedRequired.title":`Save is blocked: a required field sits in a conditional section.`,"engine.inspector.view.gatedRequired.issue":`Field "{fieldLabel}" ({field}) is required on object "{object}", but it sits in section "{section}", which is shown only when {predicate}. The server never evaluates that condition, so whenever the section is hidden the form cannot be completed — the record save is refused over a field the user cannot see.`,"engine.inspector.view.gatedRequired.remedies":`Fix it one of three ways:`,"engine.inspector.view.gatedRequired.remedyMove":`Move "{fieldLabel}" into a section that has no visibleWhen.`,"engine.inspector.view.gatedRequired.remedyDrop":`Remove visibleWhen from section "{section}".`,"engine.inspector.view.gatedRequired.remedyUnrequire":`Make "{fieldLabel}" not required on object "{object}".`,"engine.inspector.view.cf.title":`Conditional formatting`,"engine.inspector.view.cf.add":`Add rule`,"engine.inspector.view.cf.empty":`No rules. Add one to color rows by a CEL condition.`,"engine.inspector.view.cf.rule":`Rule`,"engine.inspector.view.cf.when":`When (CEL)`,"engine.inspector.view.cf.background":`Background`,"engine.inspector.view.cf.text":`Text`,"engine.inspector.view.cf.border":`Border`,"engine.inspector.view.cf.preview":`Preview`,"engine.inspector.view.cf.remove":`Remove rule`,"engine.inspector.view.cf.moveUp":`Move up`,"engine.inspector.view.cf.moveDown":`Move down`,"engine.condition.celLabel":`CEL expression`,"engine.condition.advancedHint":`Advanced expression — Builder only supports simple AND/OR conditions.`,"engine.inspector.condition.builder":`Builder`,"engine.inspector.condition.expression":`Expression`,"engine.inspector.condition.always":`Always — no condition.`,"engine.inspector.condition.and":`AND`,"engine.inspector.condition.or":`OR`,"engine.inspector.condition.subjectPlaceholder":`field / context`,"engine.inspector.condition.remove":`Remove condition`,"engine.inspector.condition.valuePlaceholder":`value`,"engine.inspector.condition.add":`Add condition`,"engine.inspector.condition.op.equals":`equals`,"engine.inspector.condition.op.notEquals":`not equals`,"engine.inspector.condition.op.greaterThan":`greater than`,"engine.inspector.condition.op.lessThan":`less than`,"engine.inspector.condition.op.truthy":`is set / true`,"engine.inspector.condition.op.falsy":`is empty / false`,"engine.inspector.condition.op.atLeast":`at least`,"engine.inspector.condition.op.atMost":`at most`,"engine.inspector.condition.op.contains":`contains`,"engine.inspector.condition.op.inAnyOf":`in (any of)`,"engine.inspector.condition.op.notIn":`not in`,"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.visibleWhen":`Visible when (CEL)`,"engine.inspector.pageBlock.properties":`Properties`,"engine.inspector.pageBlock.advanced":`Advanced`,"engine.inspector.pageBlock.remove":`Remove block`,"engine.inspector.pageBlock.outlineLabel":`Blocks`,"engine.inspector.pageBlock.list.add":`Add`,"engine.inspector.pageBlock.list.remove":`Remove`,"engine.inspector.pageBlock.list.removeItem":`Remove item`,"engine.inspector.pageBlock.objectPlaceholder":`snake_case object`,"engine.inspector.pageBlock.fieldPlaceholder":`field name`,"engine.inspector.pageBlock.field.object-grid.objectName":`Object`,"engine.inspector.pageBlock.field.object-grid.columns":`Columns`,"engine.inspector.pageBlock.field.object-grid.pageSize":`Page size`,"engine.inspector.pageBlock.field.object-form.objectName":`Object`,"engine.inspector.pageBlock.field.object-form.mode":`Mode`,"engine.inspector.pageBlock.option.mode.create":`Create`,"engine.inspector.pageBlock.option.mode.edit":`Edit`,"engine.inspector.pageBlock.option.mode.view":`View`,"engine.inspector.pageBlock.field.object-form.formType":`Form type`,"engine.inspector.pageBlock.option.formType.simple":`Simple`,"engine.inspector.pageBlock.option.formType.tabbed":`Tabbed`,"engine.inspector.pageBlock.option.formType.wizard":`Wizard`,"engine.inspector.pageBlock.option.formType.split":`Split`,"engine.inspector.pageBlock.option.formType.drawer":`Drawer`,"engine.inspector.pageBlock.option.formType.modal":`Modal`,"engine.inspector.pageBlock.field.object-form.layout":`Layout`,"engine.inspector.pageBlock.option.layout.vertical":`Vertical`,"engine.inspector.pageBlock.option.layout.horizontal":`Horizontal`,"engine.inspector.pageBlock.field.object-form.columns":`Field columns (1–4)`,"engine.inspector.pageBlock.field.object-form.fields":`Fields`,"engine.inspector.pageBlock.field.object-form.title":`Title`,"engine.inspector.pageBlock.field.object-form.description":`Description`,"engine.inspector.pageBlock.field.object-metric.objectName":`Object`,"engine.inspector.pageBlock.field.object-metric.label":`Label`,"engine.inspector.pageBlock.field.object-metric.description":`Description`,"engine.inspector.pageBlock.field.object-metric.icon":`Icon`,"engine.inspector.pageBlock.placeholder.object-metric.icon":`lucide icon name`,"engine.inspector.pageBlock.field.object-metric.colorVariant":`Color`,"engine.inspector.pageBlock.option.colorVariant.default":`Default`,"engine.inspector.pageBlock.option.colorVariant.blue":`Blue`,"engine.inspector.pageBlock.option.colorVariant.teal":`Teal`,"engine.inspector.pageBlock.option.colorVariant.orange":`Orange`,"engine.inspector.pageBlock.option.colorVariant.purple":`Purple`,"engine.inspector.pageBlock.option.colorVariant.success":`Success`,"engine.inspector.pageBlock.option.colorVariant.warning":`Warning`,"engine.inspector.pageBlock.option.colorVariant.danger":`Danger`,"engine.inspector.pageBlock.field.object-metric.format":`Format`,"engine.inspector.pageBlock.option.format.number":`Number`,"engine.inspector.pageBlock.option.format.currency":`Currency`,"engine.inspector.pageBlock.option.format.percent":`Percent`,"engine.inspector.pageBlock.field.object-metric.prefix":`Prefix`,"engine.inspector.pageBlock.field.object-metric.suffix":`Suffix`,"engine.inspector.pageBlock.field.object-kanban.objectName":`Object`,"engine.inspector.pageBlock.field.object-kanban.groupBy":`Group by field`,"engine.inspector.pageBlock.field.object-kanban.titleField":`Title field`,"engine.inspector.pageBlock.field.object-kanban.cardFields":`Card fields`,"engine.inspector.pageBlock.field.object-kanban.limit":`Limit`,"engine.inspector.pageBlock.field.grid.columns":`Columns`,"engine.inspector.pageBlock.field.grid.gap":`Gap`,"engine.inspector.pageBlock.field.element:text.content":`Content`,"engine.inspector.pageBlock.placeholder.element:text.content":`Text…`,"engine.inspector.pageBlock.field.element:text.variant":`Variant`,"engine.inspector.pageBlock.option.variant.h1":`Heading 1`,"engine.inspector.pageBlock.option.variant.h2":`Heading 2`,"engine.inspector.pageBlock.option.variant.h3":`Heading 3`,"engine.inspector.pageBlock.option.variant.h4":`Heading 4`,"engine.inspector.pageBlock.option.variant.h5":`Heading 5`,"engine.inspector.pageBlock.option.variant.h6":`Heading 6`,"engine.inspector.pageBlock.option.variant.body":`Body`,"engine.inspector.pageBlock.option.variant.caption":`Caption`,"engine.inspector.pageBlock.option.variant.overline":`Overline`,"engine.inspector.pageBlock.field.element:text.align":`Align`,"engine.inspector.pageBlock.option.align.left":`Left`,"engine.inspector.pageBlock.option.align.center":`Center`,"engine.inspector.pageBlock.option.align.right":`Right`,"engine.inspector.pageBlock.field.element:image.src":`Source URL`,"engine.inspector.pageBlock.field.element:image.alt":`Alt text`,"engine.inspector.pageBlock.field.element:image.fit":`Fit`,"engine.inspector.pageBlock.option.fit.cover":`Cover`,"engine.inspector.pageBlock.option.fit.contain":`Contain`,"engine.inspector.pageBlock.option.fit.fill":`Fill`,"engine.inspector.pageBlock.field.element:definition-list.items":`Items`,"engine.inspector.pageBlock.add.element:definition-list.items":`Add item`,"engine.inspector.pageBlock.field.element:definition-list.items.term":`Term`,"engine.inspector.pageBlock.field.element:definition-list.items.description":`Description`,"engine.inspector.pageBlock.field.element:definition-list.columns":`Columns (1 or 2)`,"engine.inspector.pageBlock.field.element:definition-list.inline":`Inline (term · description)`,"engine.inspector.pageBlock.field.element:repeater.object":`Object`,"engine.inspector.pageBlock.field.element:repeater.titleField":`Title field`,"engine.inspector.pageBlock.field.element:repeater.fields":`Fields`,"engine.inspector.pageBlock.field.element:repeater.limit":`Limit`,"engine.inspector.pageBlock.field.element:repeater.emptyText":`Empty text`,"engine.inspector.pageBlock.field.element:repeater.divided":`Dividers between rows`,"engine.inspector.pageBlock.field.element:number.object":`Object`,"engine.inspector.pageBlock.field.element:number.field":`Field`,"engine.inspector.pageBlock.field.element:number.aggregate":`Aggregate`,"engine.inspector.pageBlock.option.aggregate.count":`Count`,"engine.inspector.pageBlock.option.aggregate.sum":`Sum`,"engine.inspector.pageBlock.option.aggregate.avg":`Average`,"engine.inspector.pageBlock.option.aggregate.min":`Min`,"engine.inspector.pageBlock.option.aggregate.max":`Max`,"engine.inspector.pageBlock.field.element:number.format":`Format`,"engine.inspector.pageBlock.field.element:number.prefix":`Prefix`,"engine.inspector.pageBlock.field.element:number.suffix":`Suffix`,"engine.inspector.pageBlock.field.element:button.label":`Label`,"engine.inspector.pageBlock.field.element:button.variant":`Variant`,"engine.inspector.pageBlock.option.variant.primary":`Primary`,"engine.inspector.pageBlock.option.variant.secondary":`Secondary`,"engine.inspector.pageBlock.option.variant.danger":`Danger`,"engine.inspector.pageBlock.option.variant.ghost":`Ghost`,"engine.inspector.pageBlock.option.variant.link":`Link`,"engine.inspector.pageBlock.field.element:button.size":`Size`,"engine.inspector.pageBlock.option.size.small":`Small`,"engine.inspector.pageBlock.option.size.medium":`Medium`,"engine.inspector.pageBlock.option.size.large":`Large`,"engine.inspector.pageBlock.field.element:button.icon":`Icon`,"engine.inspector.pageBlock.placeholder.element:button.icon":`lucide icon name`,"engine.inspector.pageBlock.field.element:button.action":`Action`,"engine.inspector.pageBlock.field.page:header.title":`Title`,"engine.inspector.pageBlock.field.page:header.subtitle":`Subtitle`,"engine.inspector.pageBlock.field.page:card.title":`Title`,"engine.inspector.pageBlock.field.page:card.bordered":`Bordered`,"engine.inspector.pageBlock.field.page:tabs.items":`Tabs`,"engine.inspector.pageBlock.add.page:tabs.items":`Add tab`,"engine.inspector.pageBlock.field.page:tabs.items.value":`Value`,"engine.inspector.pageBlock.field.page:tabs.items.label":`Label`,"engine.inspector.pageBlock.field.page:accordion.items":`Sections`,"engine.inspector.pageBlock.add.page:accordion.items":`Add section`,"engine.inspector.pageBlock.field.page:accordion.items.label":`Label`,"engine.inspector.pageBlock.field.record:related_list.objectName":`Object`,"engine.inspector.pageBlock.field.record:related_list.relationshipField":`Relationship field`,"engine.inspector.pageBlock.field.record:related_list.title":`Title`,"engine.inspector.pageBlock.field.record:related_list.limit":`Limit`,"engine.inspector.pageBlock.field.record:highlights.fields":`Fields`,"engine.inspector.pageBlock.field.record:details.sections":`Sections`,"engine.inspector.pageBlock.add.record:details.sections":`Add section`,"engine.inspector.pageBlock.field.record:details.sections.name":`Name (i18n key)`,"engine.inspector.pageBlock.placeholder.record:details.sections.name":`snake_case, e.g. contact_info`,"engine.inspector.pageBlock.field.record:details.sections.label":`Label`,"engine.inspector.pageBlock.field.record:details.sections.columns":`Columns`,"engine.inspector.pageBlock.field.record:details.sections.fields":`Fields`,"engine.inspector.pageBlock.field.record:alert.severity":`Severity`,"engine.inspector.pageBlock.option.severity.info":`Info`,"engine.inspector.pageBlock.option.severity.warning":`Warning`,"engine.inspector.pageBlock.option.severity.error":`Error`,"engine.inspector.pageBlock.option.severity.success":`Success`,"engine.inspector.pageBlock.field.record:alert.title":`Title`,"engine.inspector.pageBlock.field.record:alert.body":`Body`,"engine.inspector.pageBlock.field.record:alert.icon":`Icon`,"engine.inspector.pageBlock.placeholder.record:alert.icon":`lucide icon name`,"engine.inspector.pageBlock.field.record:alert.dismissible":`Dismissible`,"engine.inspector.pageBlock.field.record:path.statusField":`Status field`,"engine.inspector.pageBlock.field.record:path.stages":`Stages`,"engine.inspector.pageBlock.add.record:path.stages":`Add stage`,"engine.inspector.pageBlock.field.record:path.stages.value":`Value`,"engine.inspector.pageBlock.field.record:path.stages.label":`Label`,"engine.inspector.pageBlock.field.record:quick_actions.actionNames":`Action names`,"engine.inspector.pageBlock.placeholder.record:quick_actions.actionNames":`action name`,"engine.inspector.pageBlock.field.record:quick_actions.location":`Location`,"engine.inspector.pageBlock.option.location.record_header":`Record header`,"engine.inspector.pageBlock.option.location.record_more":`Record more menu`,"engine.inspector.pageBlock.option.location.record_section":`Record section`,"engine.inspector.pageBlock.option.location.record_related":`Record related`,"engine.inspector.pageBlock.option.location.list_toolbar":`List toolbar`,"engine.inspector.pageBlock.option.location.list_item":`List item`,"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.hook.bodyLang.expression":`Expression (L1)`,"engine.inspector.hook.bodyLang.js":`Sandboxed JS (L2)`,"engine.inspector.hook.basics":`Basics`,"engine.inspector.hook.label":`Label`,"engine.inspector.hook.labelPlaceholder":`Human-readable name`,"engine.inspector.hook.name":`Name`,"engine.inspector.hook.namePlaceholder":`snake_case identifier`,"engine.inspector.hook.objects":`Object(s) this hook fires on`,"engine.inspector.hook.allObjects":`All objects (*)`,"engine.inspector.hook.noObjects":`No objects found — publish an object, then pick it here.`,"engine.inspector.hook.pickObject":`Pick at least one object (or All objects).`,"engine.inspector.hook.events":`Events`,"engine.inspector.hook.eventsHint":`Which lifecycle events invoke this hook.`,"engine.inspector.hook.eventsWrite":`Write`,"engine.inspector.hook.eventsQuery":`Query`,"engine.inspector.hook.pickEvent":`Select at least one event.`,"engine.inspector.hook.function":`Function`,"engine.inspector.hook.functionHint":`The handler that runs when the hook fires.`,"engine.inspector.hook.language":`Language`,"engine.inspector.hook.handlerBody":`Handler body`,"engine.inspector.hook.bodyHint.expression":`A single L1 expression evaluated against the record / ctx.`,"engine.inspector.hook.bodyHint.js":`Runs in the sandbox as (ctx) => Promise<void>.`,"engine.inspector.hook.options":`Options`,"engine.inspector.hook.priority":`Priority`,"engine.inspector.hook.async":`Run asynchronously (after commit)`,"engine.inspector.hook.condition":`Run only when (optional CEL)`,"engine.inspector.hook.moreFieldsHint":`Advanced / rarely-used properties.`,"engine.inspector.action.type.script":`Script — run an expression / sandboxed JS`,"engine.inspector.action.type.api":`API — call an endpoint`,"engine.inspector.action.type.flow":`Flow — invoke a flow`,"engine.inspector.action.type.modal":`Modal — open a modal/page`,"engine.inspector.action.type.form":`Form — open a FormView`,"engine.inspector.action.type.url":`URL — navigate to a link`,"engine.inspector.action.variant.primary":`Primary`,"engine.inspector.action.variant.secondary":`Secondary`,"engine.inspector.action.variant.danger":`Danger`,"engine.inspector.action.variant.ghost":`Ghost`,"engine.inspector.action.variant.link":`Link`,"engine.inspector.action.component.button":`Button`,"engine.inspector.action.component.icon":`Icon only`,"engine.inspector.action.component.menu":`Menu item`,"engine.inspector.action.component.group":`Button group`,"engine.inspector.action.mode.create":`Create`,"engine.inspector.action.mode.edit":`Edit`,"engine.inspector.action.mode.delete":`Delete`,"engine.inspector.action.mode.custom":`Custom`,"engine.inspector.action.bodyLang.expression":`Expression (L1)`,"engine.inspector.action.bodyLang.js":`Sandboxed JS (L2)`,"engine.inspector.action.paramType.text":`Text`,"engine.inspector.action.paramType.textarea":`Long text`,"engine.inspector.action.paramType.number":`Number`,"engine.inspector.action.paramType.boolean":`Checkbox`,"engine.inspector.action.paramType.select":`Select`,"engine.inspector.action.paramType.date":`Date`,"engine.inspector.action.paramType.datetime":`Date/time`,"engine.inspector.action.paramType.lookup":`Lookup`,"engine.inspector.action.location.record_header":`Record header`,"engine.inspector.action.location.record_more":`Record · more menu`,"engine.inspector.action.location.record_section":`Record · section`,"engine.inspector.action.location.record_related":`Record · related list`,"engine.inspector.action.location.list_toolbar":`List toolbar`,"engine.inspector.action.location.list_item":`List · row`,"engine.inspector.action.target.url.label":`URL`,"engine.inspector.action.target.url.placeholder":"https://… or /path?x=${param.x}","engine.inspector.action.target.url.hint":"Supports ${param.x} and ${ctx.x} interpolation.","engine.inspector.action.target.flow.label":`Flow name`,"engine.inspector.action.target.flow.placeholder":`snake_case flow`,"engine.inspector.action.target.flow.hint":`The flow to invoke when clicked.`,"engine.inspector.action.target.modal.label":`Modal / page name`,"engine.inspector.action.target.modal.placeholder":`snake_case page`,"engine.inspector.action.target.modal.hint":`The modal or page to open.`,"engine.inspector.action.target.form.label":`Form view name`,"engine.inspector.action.target.form.hint":`Opens /console/forms/<name>.`,"engine.inspector.action.target.api.label":`API endpoint`,"engine.inspector.action.target.api.hint":`Endpoint called with the request body below.`,"engine.inspector.action.scriptOp.run":`Run a script — sandboxed JS / expression body`,"engine.inspector.action.scriptOp.update":`Update fields on this record — no code`,"engine.inspector.action.objectPlaceholder":`snake_case object`,"engine.inspector.action.objectNone":`— None (global) —`,"engine.inspector.action.options":`Options`,"engine.inspector.action.optionsEmpty":`No choices yet — a Select with no options opens an empty picker in the dialog.`,"engine.inspector.action.optionLabel":`Label`,"engine.inspector.action.optionValue":`Value`,"engine.inspector.action.removeOption":`Remove option {index}`,"engine.inspector.action.addOption":`Add option`,"engine.inspector.action.basics":`Basics`,"engine.inspector.action.label":`Label`,"engine.inspector.action.labelPlaceholder":`Button text shown to users`,"engine.inspector.action.name":`Name`,"engine.inspector.action.namePlaceholder":`snake_case identifier`,"engine.inspector.action.object":`Object`,"engine.inspector.action.objectBoundHint":`Bound action — surfaces in this object’s views per the placement below.`,"engine.inspector.action.objectGlobalHint":`Empty = global action — must be referenced by a page’s quick actions, global nav, a flow, or AI to appear.`,"engine.inspector.action.icon":`Icon`,"engine.inspector.action.variant":`Variant`,"engine.inspector.action.behavior":`Behavior`,"engine.inspector.action.behaviorHint":`What happens when the action is triggered.`,"engine.inspector.action.type":`Type`,"engine.inspector.action.pinnedScript":`Pinned to {script}: the field write is performed on the platform action route, which is this type’s own route. Any other type is refused beside it.`,"engine.inspector.action.whatItDoes":`What it does`,"engine.inspector.action.fieldValues":`Field values`,"engine.inspector.action.fieldValuesEmpty":`No field values yet — add one, or collect the value as an input below.`,"engine.inspector.action.fieldValueField":`Field`,"engine.inspector.action.fieldValueValue":`Value`,"engine.inspector.action.removeFieldValue":`Remove field value`,"engine.inspector.action.addFieldValue":`Add field value`,"engine.inspector.action.updateHint":`Written to the current record as the caller — object permissions, hooks and validations fire as for a user edit. An input collected below with the same name overrides the fixed value here.`,"engine.inspector.action.scriptLanguage":`Script language`,"engine.inspector.action.scriptBody":`Script body`,"engine.inspector.action.scriptBodyHint":`Runs in the sandbox as {signature}.`,"engine.inspector.action.method":`Method`,"engine.inspector.action.inputs":`Inputs`,"engine.inspector.action.inputsHint":`Collected from the user in a dialog before the action runs.`,"engine.inspector.action.inputsEmpty":`No inputs — the action runs immediately on click.`,"engine.inspector.action.removeInput":`Remove input`,"engine.inspector.action.bindToField":`Bind to field`,"engine.inspector.action.paramName":`Name`,"engine.inspector.action.paramNamePlaceholder":`request-body key`,"engine.inspector.action.paramLabel":`Label`,"engine.inspector.action.paramTypeLabel":`Type`,"engine.inspector.action.paramPlaceholder":`Placeholder`,"engine.inspector.action.paramRequired":`Required`,"engine.inspector.action.paramPrefill":`Pre-fill from row`,"engine.inspector.action.addInput":`Add input`,"engine.inspector.action.placement":`Placement`,"engine.inspector.action.placementHint":`Where this action surfaces in the UI.`,"engine.inspector.action.noPlacement":`No placement selected — this action will not appear on any record or list surface. Tick a placement above, or place it from a view’s bulk actions.`,"engine.inspector.action.capabilityGate":`Capability-gated on {capabilities} — every placement ticked above hides this action from anyone who does not hold {whom}. Not greyed out and not an error: the button is simply absent, and the server refuses the invocation with a 403 either way.`,"engine.inspector.action.capabilityGateAll":`all of them`,"engine.inspector.action.capabilityGateOne":`it`,"engine.inspector.action.capabilityGateSelf":`This session does not hold {capabilities}, so the button is hidden from you too — grant it through a permission set to see it in the app.`,"engine.inspector.action.component":`Component`,"engine.inspector.action.feedback":`Feedback`,"engine.inspector.action.feedbackHint":`Confirmation and post-run messaging.`,"engine.inspector.action.confirmText":`Confirm prompt`,"engine.inspector.action.confirmTextPlaceholder":`Ask before running (leave blank to skip)`,"engine.inspector.action.successMessage":`Success message`,"engine.inspector.action.errorMessage":`Error message`,"engine.inspector.action.mode":`Mode`,"engine.inspector.action.refreshAfter":`Refresh view after`,"engine.inspector.action.undoable":`Offer undo`,"engine.inspector.action.conditions":`Conditions`,"engine.inspector.action.conditionsHint":`No-code predicates over the record / user / ctx (compiled to CEL).`,"engine.inspector.action.visibleWhen":`Visible when`,"engine.inspector.action.disabledWhen":`Disabled when`,"engine.inspector.action.ai":`AI exposure`,"engine.inspector.action.aiHint":`Opt-in: expose this action to AI agents as a callable tool.`,"engine.inspector.action.aiExposed":`Expose to AI agents`,"engine.inspector.action.aiDescription":`Tool description (required, ≥40 chars)`,"engine.inspector.action.aiDescriptionPlaceholder":`When and why an agent should call this action…`,"engine.inspector.action.aiDescriptionTooShort":`A ≥40-character description is required while exposed.`,"engine.inspector.action.moreFieldsHint":`Advanced / rarely-used properties.`,"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.dataset.kind":`Dataset`,"engine.inspector.dataset.aggregate.count":`count`,"engine.inspector.dataset.aggregate.sum":`sum`,"engine.inspector.dataset.aggregate.avg":`avg`,"engine.inspector.dataset.aggregate.min":`min`,"engine.inspector.dataset.aggregate.max":`max`,"engine.inspector.dataset.aggregate.count_distinct":`count distinct`,"engine.inspector.dataset.dimType.string":`string`,"engine.inspector.dataset.dimType.number":`number`,"engine.inspector.dataset.dimType.date":`date`,"engine.inspector.dataset.dimType.boolean":`boolean`,"engine.inspector.dataset.dimType.lookup":`lookup`,"engine.inspector.dataset.granularity.none":`— none —`,"engine.inspector.dataset.granularity.day":`day`,"engine.inspector.dataset.granularity.week":`week`,"engine.inspector.dataset.granularity.month":`month`,"engine.inspector.dataset.granularity.quarter":`quarter`,"engine.inspector.dataset.granularity.year":`year`,"engine.inspector.dataset.derivedOp.ratio":`ratio (a ÷ b)`,"engine.inspector.dataset.derivedOp.sum":`sum (a + b)`,"engine.inspector.dataset.derivedOp.difference":`difference (a − b)`,"engine.inspector.dataset.derivedOp.product":`product (a × b)`,"engine.inspector.dataset.formatKind.raw":`Raw number`,"engine.inspector.dataset.formatKind.number":`Number — 1,234.5`,"engine.inspector.dataset.formatKind.currency":`Currency — $1,234.50`,"engine.inspector.dataset.formatKind.percent":`Percent — 12.3%`,"engine.inspector.dataset.usage.bound":`Bound by {reports} · {dashboards} — changes affect them.`,"engine.inspector.dataset.usage.reportsOne":`{count} report`,"engine.inspector.dataset.usage.reportsOther":`{count} reports`,"engine.inspector.dataset.usage.dashboardsOne":`{count} dashboard`,"engine.inspector.dataset.usage.dashboardsOther":`{count} dashboards`,"engine.inspector.dataset.usage.unbound":`Not yet bound by any report or dashboard.`,"engine.inspector.dataset.name":`Name`,"engine.inspector.dataset.namePlaceholder":`snake_case identifier`,"engine.inspector.dataset.label":`Label`,"engine.inspector.dataset.description":`Description`,"engine.inspector.dataset.baseObject":`Base object`,"engine.inspector.dataset.baseObjectPlaceholder":`Select an object…`,"engine.inspector.dataset.searchObjects":`Search objects…`,"engine.inspector.dataset.baseObjectChangeHint":`Changing the base object clears its dimensions, measures, joins & filters.`,"engine.inspector.dataset.includedRelationships":`Included relationships`,"engine.inspector.dataset.noJoins":`No joins. Add a relationship (a lookup field on {object}) to use {path} dimensions/measures.`,"engine.inspector.dataset.baseObjectFallback":`the base object`,"engine.inspector.dataset.includedRelationship":`Included relationship`,"engine.inspector.dataset.relationshipPlaceholder":`Select a relationship…`,"engine.inspector.dataset.searchRelationships":`Search relationships…`,"engine.inspector.dataset.removeRelationship":`Remove relationship`,"engine.inspector.dataset.scopeFilter":`Scope filter`,"engine.inspector.dataset.scopeFilterHelp":`Intrinsic scope, ANDed into every query (e.g. exclude soft-deleted records).`,"engine.inspector.dataset.dimensions":`Dimensions`,"engine.inspector.dataset.addDimension":`Add dimension`,"engine.inspector.dataset.dimensionN":`Dimension {index}`,"engine.inspector.dataset.removeDimension":`Remove dimension`,"engine.inspector.dataset.dimensionNamePlaceholder":`e.g. region`,"engine.inspector.dataset.field":`Field`,"engine.inspector.dataset.dimensionFieldPlaceholder":`field or relationship.field`,"engine.inspector.dataset.type":`Type`,"engine.inspector.dataset.labelOptional":`Label (optional)`,"engine.inspector.dataset.displayLabel":`Display label`,"engine.inspector.dataset.dateBucket":`Date bucket`,"engine.inspector.dataset.measures":`Measures`,"engine.inspector.dataset.addMeasure":`Add measure`,"engine.inspector.dataset.measureN":`Measure {index}`,"engine.inspector.dataset.removeMeasure":`Remove measure`,"engine.inspector.dataset.measureNamePlaceholder":`e.g. revenue`,"engine.inspector.dataset.aggregate":`Aggregate`,"engine.inspector.dataset.measureFieldPlaceholder":`field (optional for count)`,"engine.inspector.dataset.measureFilter":`Filter (measure-scoped)`,"engine.inspector.dataset.measureFilterHelp":`Only rows matching this filter feed this measure (e.g. won_amount = sum(amount) where stage = won).`,"engine.inspector.dataset.derived":`Derived — computed from other measures`,"engine.inspector.dataset.operation":`Operation`,"engine.inspector.dataset.operands":`Operands (other measures)`,"engine.inspector.dataset.derivedNeedTwo":`Select exactly 2 measures for {op}.`,"engine.inspector.dataset.derivedNeedOne":`Select at least 1 measure for {op}.`,"engine.inspector.dataset.addOtherMeasuresFirst":`Add other measures first.`,"engine.inspector.dataset.advanced":`Advanced`,"engine.inspector.dataset.displayFormat":`Display format`,"engine.inspector.dataset.decimals":`Decimals`,"engine.inspector.dataset.currency":`Currency`,"engine.inspector.dataset.sample":`Sample: {sample}`,"engine.inspector.dataset.relWarning":`Relationship {rel} isn't in Included relationships.`,"engine.inspector.dataset.relWarningAdd":`Add it`,"engine.inspector.dataset.filterAdvanced":`Advanced filter (nested / OR) — edit it in the {source} tab.`,"engine.inspector.dataset.sourceTab":`Source`,"engine.inspector.dataset.filterConditionsOne":`{count} condition`,"engine.inspector.dataset.filterConditionsOther":`{count} conditions`,"engine.inspector.dataset.addFilter":`+ Add filter…`,"engine.inspector.dataset.filterNeedsObject":`Pick a base object to add filter conditions.`,"engine.inspector.reference.pickFromRecords":`Pick from records`,"engine.inspector.reference.enterManually":`Enter value manually`,"engine.inspector.reference.managerPlaceholder":`Resolved automatically`,"engine.inspector.reference.managerHint":`Resolved at runtime from the submitter's manager — no value needed.`,"engine.inspector.reference.queueUnsupported":`Queue approvers are not supported by the runtime yet — this slot resolves to nobody.`,"engine.inspector.reference.fieldsOf":`Fields of {object}.`,"engine.inspector.reference.setTriggerObject":`Set the flow’s trigger object (on the Start node) to list fields.`,"engine.inspector.reference.actionsOf":`Actions of {connector}.`,"engine.inspector.reference.chooseConnector":`Choose a Connector above to list its actions.`,"engine.inspector.reference.declarative":`declarative`,"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.flowPalette.search":`Search nodes…`,"engine.flowPalette.empty":`No matching nodes.`,"engine.flowPalette.recent":`Recently used`,"engine.flowPalette.category.data":`Data`,"engine.flowPalette.category.logic":`Logic`,"engine.flowPalette.category.human":`Human`,"engine.flowPalette.category.integration":`Integration`,"engine.flowPalette.category.flow":`Flow`,"engine.flowCanvas.zoomOut":`Zoom out`,"engine.flowCanvas.zoomIn":`Zoom in`,"engine.flowCanvas.fit":`Fit to view`,"engine.flowCanvas.canvas":`Flow canvas`,"engine.flowCanvas.reveal":`Reveal on canvas`,"engine.flowCanvas.moreErrors":`+{count} more…`,"engine.flowCanvas.insertNode":`Insert node here`,"engine.flowCanvas.addConnected":`Add connected node`,"engine.flowCanvas.addReviseLoop":`Add revision loop (send back for revision)`,"engine.flowCanvas.addReviseLoopShort":`Add revision loop`,"engine.flowCanvas.awaitingRevision":`Awaiting Revision`,"engine.flowCanvas.collapseRegions":`Collapse nested regions`,"engine.flowCanvas.expandRegions":`Expand nested regions`,"engine.flowCanvas.edge.undeclaredCycle":`{source} → {target} — part of an un-declared cycle; mark the edge that closes the loop as a back-edge`,"engine.flowCanvas.edge.backEdge":`{source} ↩ {target} (back-edge)`,"engine.flowCanvas.summary.branches":`{count} branches`,"engine.flowCanvas.summary.approversOne":`{count} approver`,"engine.flowCanvas.summary.approversOther":`{count} approvers`,"engine.flowCanvas.summary.unanimous":`all`,"engine.flowCanvas.summary.code":`code`,"engine.flowRegion.branchN":`Branch {n}`,"engine.flowRegion.try":`Try`,"engine.flowRegion.catch":`Catch`,"engine.flowRegion.body":`Body`,"engine.flowPreview.emptyHint":`Add nodes in the Form tab to see the flow preview.`,"engine.flowPreview.malformed":`One of the flow nodes or edges is malformed.`,"engine.flowPreview.pill.trigger":`Trigger`,"engine.flowPreview.pill.status":`Status`,"engine.flowPreview.pill.runAs":`Run as`,"engine.flowPreview.pill.onError":`On error`,"engine.flowPreview.showVars":`Show variables panel`,"engine.flowPreview.hideVars":`Hide variables panel`,"engine.flowPreview.variables":`Variables`,"engine.flowPreview.noVars":`No variables declared.`,"engine.flowPreview.runsTitle":`Run history from the automation engine`,"engine.flowPreview.runs":`Runs`,"engine.flowPreview.problemsTitle":`Validation problems`,"engine.flowPreview.problems":`Problems`,"engine.flowPreview.debug":`Debug`,"engine.flowPreview.varIn":`in`,"engine.flowPreview.varOut":`out`,"engine.flowRuns.title":`Runs`,"engine.flowRuns.refresh":`Refresh run history`,"engine.flowRuns.unavailable":`Run history unavailable — the automation engine is offline or this flow hasn’t been published.`,"engine.flowRuns.empty":`No runs yet.`,"engine.flowRuns.noSteps":`No step log recorded.`,"engine.flowRuns.iteration":`Iteration`,"engine.flowRuns.iterationN":`Iteration {n}`,"engine.flowRuns.branch":`Branch`,"engine.flowRuns.branchN":`Branch {n}`,"engine.flowRuns.branchNIterationM":`Branch {n} · Iteration {m}`,"engine.flowRuns.try":`Try`,"engine.flowRuns.catch":`Catch`,"engine.flowRuns.status.completed":`Completed`,"engine.flowRuns.status.failed":`Failed`,"engine.flowRuns.status.paused":`Paused`,"engine.flowRuns.status.running":`Running`,"engine.flowRuns.status.cancelled":`Cancelled`,"engine.flowRuns.runId":`run {id}`,"engine.flowRuns.trigger":`trigger {type}`,"engine.flowSim.run":`Run`,"engine.flowSim.step":`Step`,"engine.flowSim.continue":`Continue`,"engine.flowSim.reset":`Reset`,"engine.flowSim.add":`Add`,"engine.flowSim.resumeBranch":`Resume down the “{branch}” branch`,"engine.flowSim.screen":`Screen`,"engine.flowSim.inputs":`Inputs`,"engine.flowSim.setVariables":`Set variables`,"engine.flowSim.setVariablesHint":`Override or inject any variable (wins over inputs and mocks at start).`,"engine.flowSim.mockOutputs":`Mock outputs`,"engine.flowSim.mockPlaceholder":`mocked result (JSON)`,"engine.flowSim.variables":`Variables`,"engine.flowSim.noVars":`No variables set.`,"engine.flowSim.timeline":`Timeline`,"engine.flowSim.namePlaceholder":`name`,"engine.flowSim.valuePlaceholder":`value`,"engine.flowSim.removeVariable":`Remove variable`,"engine.flowSim.idleHint":`Press Run to simulate, or Step to walk node by node. Side effects are mocked — no backend is called.`,"engine.flowSim.status.idle":`idle`,"engine.flowSim.status.running":`running`,"engine.flowSim.status.paused":`paused`,"engine.flowSim.status.done":`done`,"engine.flowSim.status.error":`error`,"engine.flowSim.stepStatus.ok":`ok`,"engine.flowSim.stepStatus.mocked":`mocked`,"engine.flowSim.stepStatus.paused":`paused`,"engine.flowSim.stepStatus.skipped":`skipped`,"engine.flowSim.stepStatus.error":`error`,"engine.flowSim.edge.error":`error`,"engine.flowSim.note.stepLimit":`Step limit ({max}) exceeded — the flow may contain an infinite loop.`,"engine.flowSim.note.nodeNotFound":`Node "{id}" not found.`,"engine.flowSim.note.resumed":`Resumed.`,"engine.flowSim.note.decisionTaken":`Decision: {decision} → {taken}.`,"engine.flowSim.note.decisionNoneTaken":`no out-edge taken`,"engine.flowSim.note.noDecision":`No decision supplied; every out-edge is considered.`,"engine.flowSim.note.flowEnd":`Flow end reached.`,"engine.flowSim.note.unsupported":`"{type}" is not modelled by the simulator; passing through without its real semantics.`,"engine.flowSim.note.parallelSplit":`Parallel split — branches fan out (no join synchronization is simulated).`,"engine.flowSim.note.approvalReached":`Approval reached — choose a decision to continue.`,"engine.flowSim.note.waitReached":`Wait reached — continue manually.`,"engine.flowSim.note.screenReached":`Screen reached — provide inputs, then continue.`,"engine.flowSim.note.screenUnevaluable":`A screen field's visibleWhen may reference only the fields declared on this screen; the screen cannot evaluate {fields}.`,"engine.flowSim.note.screenUnevaluableField":`"{name}" ({reason})`,"engine.flowSim.note.screenNoInput":`Screen has no input — passed through (matches runtime).`,"engine.flowSim.note.passThrough":`Type "{type}" treated as pass-through.`,"engine.flowSim.note.decisionNoOutEdge":`The decision has no out-edge; the runtime ends this branch here.`,"engine.flowSim.note.branchMatched":`Branch "{label}" matched (config.conditions).`,"engine.flowSim.note.noConditionMatched":`No entry of config.conditions matched; the branch is "{label}".`,"engine.flowSim.note.noAssignments":`No assignments defined.`,"engine.flowSim.note.unmodelledToken":`{token} in "{key}"`,"engine.flowSim.note.unmodelled":`Kept as written, not modelled by the Debug run: {tokens}. The runtime resolves NOW() / TODAY(), $User.* and arithmetic itself, and fails the node on a call to a function it does not know.`,"engine.flowSim.note.loopSinglePass":`Loop simulated as a single pass (body re-execution is not modelled).`,"engine.flowSim.note.loopCollection":`Collection "{ref}" has {count} item(s); simulated as a single pass.`,"engine.flowSim.note.loopNotArray":`Collection "{ref}" is not an array; loop may not run at runtime.`,"engine.flowSim.note.mockedCall":`Mocked call to '{fn}' (no function executed).`,"engine.flowSim.note.retiredAction":`Retired '{action}' action — it never delivered anything; use a notify node (or a connector for Slack).`,"engine.flowSim.note.retiredScript":`Retired inline script — the runtime never executed it; move the logic into a registered function.`,"engine.flowSim.note.mocked":`Mocked {type} (no backend call).`,"engine.flowSim.note.noBranchLabel":`No out-edge carries the branch label "{label}", so every out-edge is considered, as the runtime does (it logs a warning).`,"engine.flowSim.note.evaluationFailed":`Evaluation failed.`,"engine.flowSim.note.multipleMatched":`Multiple conditions matched; the first declared branch was taken (the runtime takes every match, objectstack#15429).`,"engine.flowSim.note.noEdgeTaken":`No out-edge was taken: no guard was true and there is no default edge. The runtime ends this branch here.`,"engine.flowSim.note.celEvaluationFailed":`CEL evaluation failed: {message}`,"engine.flowSim.note.celConditionFailed":`condition failed to evaluate as CEL: {message}`,"engine.previewShell.renderFailed":`Preview failed to render`,"engine.screenPreview.header":`Preview`,"engine.screenPreview.empty":`Add a title, description, fields, or an object form to preview this screen.`,"engine.screenPreview.submit":`Submit`,"engine.screenPreview.noDataSource":`Connect to a backend to preview this object form.`,"engine.screenPreview.hiddenOne":`{count} field hidden by its “visible when” condition.`,"engine.screenPreview.hiddenOther":`{count} fields hidden by their “visible when” conditions.`,"engine.screenPreview.defaultTemplate":`Default template for “{field}”, shown as written — the run fills it in:`,"engine.actionPreview.empty":`Set name and label to see the action preview.`,"engine.actionPreview.pill.type":`type: {type}`,"engine.actionPreview.pill.object":`object: {object}`,"engine.actionPreview.pill.variant":`variant: {variant}`,"engine.actionPreview.pill.refreshAfter":`refresh after`,"engine.actionPreview.pill.aiOptedOut":`AI: opted out`,"engine.actionPreview.pill.aiExposed":`AI: exposed`,"engine.actionPreview.locations":`Locations:`,"engine.actionPreview.requires":`Requires:`,"engine.actionPreview.visibleWhen":`Visible when`,"engine.actionPreview.disabledWhen":`Disabled when`,"engine.actionPreview.onClick":`On click`,"engine.actionPreview.firstAsks":`First asks:`,"engine.actionPreview.onSuccess":`On success:`,"engine.actionPreview.handler.none":`No handler bound yet.`,"engine.actionPreview.handler.url":`Navigate to {target}`,"engine.actionPreview.handler.flow":`Run flow {target}`,"engine.actionPreview.handler.modal":`Open modal {target}`,"engine.actionPreview.handler.api":`Call API endpoint {target}`,"engine.actionPreview.handler.form":`Open form view {target} (/console/forms/{path})`,"engine.actionPreview.handler.scriptBody":`Run inline script body (L1 expression or L2 sandboxed JS).`,"engine.actionPreview.handler.scriptNamed":`Run named script {target}`,"engine.actionPreview.handler.invoke":`Invoke {target}`,"engine.actionPreview.section.placement":`Where it appears`,"engine.actionPreview.capabilityGateNote":`Hidden from anyone who does not hold {capabilities} — the frames below show the placement, not who can see it.`,"engine.actionPreview.section.testRequest":`Test request`,"engine.actionPreview.section.inputDialog":`Input Dialog`,"engine.actionPreview.section.resultDialog":`Result Dialog`,"engine.actionPreview.section.scriptBody":`Script Body ({language})`,"engine.actionPreview.dialog.ok":`OK`,"engine.actionPreview.param.carryOver":`Carried over from the selected row (read-only)`,"engine.actionPreview.param.fromRow":`(from selected row)`,"engine.actionPreview.param.selectPlaceholder":`Select {label}`,"engine.actionPreview.param.recordIdPlaceholder":`Record id for {label}`,"engine.actionPreview.param.noReference":`No {reference} object is configured, so the record picker is unavailable and the dialog asks for a record id.`,"engine.actionPreview.param.toggle":`Toggle`,"engine.actionPreview.param.noChoices":`No choices authored yet — the dialog opens an empty picker.`,"engine.actionPreview.param.searchObject":`Search {object}…`,"engine.actionPreview.param.searchRecords":`Search records…`,"engine.actionPreview.result.title":`Result`,"engine.actionPreview.result.acknowledge":`I have saved this`,"engine.actionPreview.result.fullJson":`Renders full JSON response.`,"engine.actionPreview.placement.sampleRecord":`Sample record`,"engine.actionPreview.placement.recordDetail":`Record detail`,"engine.actionPreview.placement.recordBody":`…record body…`,"engine.actionPreview.placement.records":`Records`,"engine.actionPreview.placement.rows":`row 1 · row 2 · row 3`,"engine.actionPreview.placement.row":`Row {n}`,"engine.actionPreview.placement.section":`Section`,"engine.actionPreview.placement.sectionBody":`…section content…`,"engine.actionPreview.placement.more":`More`,"engine.actionPreview.api.paramsOne":`+ {count} user-supplied param collected at runtime`,"engine.actionPreview.api.paramsOther":`+ {count} user-supplied params collected at runtime`,"engine.actionPreview.api.liveWarning":`Sends a real {method} request to the live backend — may modify data.`,"engine.actionPreview.api.sending":`Sending…`,"engine.actionPreview.api.send":`Send test request`,"engine.actionPreview.api.networkError":`Network error`,"engine.agentPreview.tryInChat":`Try in chat`,"engine.agentPreview.tryInChatTitle":`Open the saved version of this agent in a new chat`,"engine.agentPreview.empty":`Fill in label, role, and instructions in the Form tab to see the agent preview.`,"engine.agentPreview.active":`Active`,"engine.agentPreview.disabled":`Disabled`,"engine.agentPreview.temperature":`temp {value}`,"engine.agentPreview.maxTokens":`max {count}t`,"engine.agentPreview.instructions":`Instructions`,"engine.agentPreview.noInstructions":`No system prompt set yet.`,"engine.agentPreview.capabilities":`Capabilities`,"engine.agentPreview.skills":`Skills`,"engine.agentPreview.noSkills":`No skills attached — this agent can reach no tools.`,"engine.agentPreview.toolsNote":`Tools come from the attached skills; grounding is described in the instructions.`,"engine.agentPreview.planning":`Planning`,"engine.agentPreview.memory":`Memory`,"engine.agentPreview.guardrails":`Guardrails`,"engine.agentPreview.permissions":`Permissions`,"engine.agentPreview.defaults":`Defaults in use.`,"engine.agentPreview.noValues":`No values set.`,"engine.skillPreview.empty":`Give the skill a name and at least an instructions block to see the preview.`,"engine.skillPreview.active":`Active`,"engine.skillPreview.disabled":`Disabled`,"engine.skillPreview.model":`model: {model}`,"engine.skillPreview.instructions":`Instructions`,"engine.skillPreview.noInstructions":`No instructions yet — the skill will contribute nothing to the prompt.`,"engine.skillPreview.tools":`Tools ({count})`,"engine.skillPreview.noTools":`No tools whitelisted.`,"engine.skillPreview.wildcardNote":`Wildcards expand to many tools at runtime — review the matching set in the agent before activating.`,"engine.skillPreview.triggerConditions":`Trigger Conditions ({count})`,"engine.skillPreview.col.field":`Field`,"engine.skillPreview.col.operator":`Operator`,"engine.skillPreview.col.value":`Value`,"engine.skillPreview.allMustHold":`All conditions must hold (AND) for the skill to activate.`,"engine.skillPreview.missing":`missing`,"engine.skillPreview.missingTitle":`Required by SkillTriggerConditionSchema — this draft will be rejected on save.`,"engine.toolPreview.openApiConsole":`Open in API Console`,"engine.toolPreview.openApiConsoleTitle":`Open API Console to test invocation`,"engine.toolPreview.empty":`Set name, description, and parameters to see the tool preview.`,"engine.toolPreview.inputParameters":`Input Parameters`,"engine.toolPreview.noParameters":`This tool takes no input parameters.`,"engine.toolPreview.exampleCall":`Example LLM Call`,"engine.toolPreview.outputSchema":`Output Schema`,"engine.toolPreview.col.name":`Name`,"engine.toolPreview.col.type":`Type`,"engine.toolPreview.col.description":`Description`,"engine.toolPreview.required":`req`,"engine.toolPreview.enum":`enum: {values}`,"engine.toolPreview.default":`default:`,"engine.toolPreview.format":`format: {format}`,"engine.jobPreview.empty":`Set a schedule (cron / every / at) and a handler to see the job preview.`,"engine.jobPreview.active":`Active`,"engine.jobPreview.paused":`Paused`,"engine.jobPreview.retries":`retries: {count}`,"engine.jobPreview.retriesBackoff":`retries: {count} ({backoff} backoff)`,"engine.jobPreview.timeout":`timeout: {duration}`,"engine.jobPreview.concurrency":`concurrency: {count}`,"engine.jobPreview.schedule":`Schedule`,"engine.jobPreview.every":`Every`,"engine.jobPreview.at":`At`,"engine.jobPreview.unparseable":`unparseable`,"engine.jobPreview.noSchedule":`No schedule set — runs only when triggered manually.`,"engine.jobPreview.nextRunOne":`Next {count} run`,"engine.jobPreview.nextRunOther":`Next {count} runs`,"engine.jobPreview.noFireTime":`Could not derive any future fire time. Check the schedule syntax.`,"engine.jobPreview.noUpcoming":`No upcoming runs in the next 366 days.`,"engine.jobPreview.inDelta":`in {delta}`,"engine.jobPreview.inNow":`in now`,"engine.jobPreview.handler":`Handler`,"engine.jobPreview.noHandler":`No handler bound — the job will be a no-op.`,"engine.celTest.predicateEmpty":`The predicate is empty.`,"engine.celTest.notObject":`expected a JSON object.`,"engine.appPreview.openTitle":`Open this app in a new tab`,"engine.appPreview.open":`Open`,"engine.appPreview.homeFirst":`Home: opens the first navigation item`,"engine.appPreview.homeNone":`Home: no navigation item yields a route yet`,"engine.appPreview.empty":`No top-level nav items. Add {navigation} entries in the Form tab to populate the app's navigation.`,"engine.appPreview.unnamed":`(unnamed)`,"engine.appPreview.noTypeTitle":"Every navigation item needs a `type` discriminator — this entry will be rejected on save.","engine.appPreview.noType":`no type`,"engine.appPreview.areas":`Areas`,"engine.bookPreview.nameTitle":`Name your book`,"engine.bookPreview.nameDescription":`Enter a name in the Form tab to start authoring the documentation spine.`,"engine.bookPreview.treeTitle":`Open the live-resolved navigation tree (actual docs per group)`,"engine.bookPreview.tree":`Resolved tree`,"engine.bookPreview.audience.public":`Public`,"engine.bookPreview.audience.permissionSet":`Permission set: {name}`,"engine.bookPreview.audience.org":`Org`,"engine.bookPreview.slug":`Slug: {slug}`,"engine.bookPreview.noGroups":`No groups yet`,"engine.bookPreview.noGroupsDescription":`A book needs at least one group in its {groups} spine. Each group derives its members from an {include} rule (a glob like {glob} or a {tag}).`,"engine.bookPreview.noKey":`(no key)`,"engine.bookPreview.orderTitle":`Order within the book`,"engine.bookPreview.packageTitle":`Membership rule is scoped to this package`,"engine.bookPreview.derived":`Members derived from the rule above — resolved against the live doc set.`,"engine.bookPreview.noRule":`No {include} rule and no explicit {pages} — this group matches nothing unless docs set {group}.`,"engine.bookPreview.curatedTitle":`Curated order via explicit pages`,"engine.bookPreview.curated":`curated`,"engine.bookPreview.globTitle":`Glob over doc names`,"engine.bookPreview.tagTitle":`Match by doc tag`,"engine.bookPreview.separator":`separator`,"engine.bookPreview.rest":`…rest (remaining matched docs, by order)`,"engine.bookPreview.emptyPage":`(empty)`,"engine.docPreview.bookSection":`Book section`,"engine.docPreview.noSection":`Not placed in a section`,"engine.docPreview.unknownSection":`{key} (not a section of any book)`,"engine.docPreview.booksLoading":`Loading books…`,"engine.docPreview.booksFailed":`Books could not be loaded: {message}`,"engine.docPreview.appearsIn":`Appears in:`,"engine.docPreview.publicBook":`public`,"engine.docPreview.noBooks":`No documentation book exists yet — create one to place this doc in a section.`,"engine.docPreview.unplaced":`Not in any book section yet — book trees list it under Uncategorized.`,"engine.docPreview.locales":`Locale variants`,"engine.docPreview.baseLocale":`Default`,"engine.docPreview.removeLocale":`Remove the {locale} variant`,"engine.docPreview.localePlaceholder":`zh-CN`,"engine.docPreview.addLocaleInput":`New locale tag`,"engine.docPreview.addLocale":`Locale`,"engine.docPreview.localeDuplicate":`{locale} already has a variant`,"engine.docPreview.localeInvalid":`Use a locale tag such as zh-CN`,"engine.docPreview.variantTitle":`Title`,"engine.docPreview.variantSummary":`Summary`,"engine.docPreview.preview":`Live preview`,"engine.docPreview.renderFailed":`The Markdown renderer failed on this content.`,"engine.docPreview.emptyEditing":`Nothing to preview yet — write Markdown in the source pane.`,"engine.docPreview.empty":`This doc has no content.`,"engine.docPreview.source":`Markdown source`,"engine.docPreview.sourceLocale":`Markdown source ({locale})`,"engine.docPreview.sourcePlaceholder":`# Title
|
|
2
2
|
|
|
3
3
|
Write Markdown here…`,"engine.datasourcePreview.empty":`Set a name and at least a driver to see the datasource preview.`,"engine.datasourcePreview.unknownDriver":`unknown`,"engine.datasourcePreview.active":`Active`,"engine.datasourcePreview.disabled":`Disabled`,"engine.datasourcePreview.connection":`Connection`,"engine.datasourcePreview.noConfig":`No config keys set.`,"engine.datasourcePreview.redacted":`redacted`,"engine.datasourcePreview.pool":`Pool`,"engine.datasourcePreview.notConfigured":`not configured`,"engine.datasourcePreview.keyCount":`{{count} keys}`,"engine.emailTemplatePreview.empty":`Fill in the subject / body in the Form tab to see a preview.`,"engine.emailTemplatePreview.emptyBody":`(empty body)`,"engine.emailTemplatePreview.from":`From`,"engine.emailTemplatePreview.to":`To`,"engine.emailTemplatePreview.subject":`Subject`,"engine.emailTemplatePreview.frameTitle":`Email preview`,"engine.emailTemplatePreview.variables":`Variables`,"engine.emailTemplatePreview.noVariables":`No {var} placeholders found.`,"engine.emailTemplatePreview.samplePlaceholder":`sample for {name}`,"engine.permissionPreview.empty":`Grant at least one object, system, or tab permission to see the matrix.`,"engine.permissionPreview.kind.default":`Default Permission Set`,"engine.permissionPreview.kind.set":`Permission Set`,"engine.permissionPreview.pill.objects":`{count} objects`,"engine.permissionPreview.pill.systemPerms":`{count} system perms`,"engine.permissionPreview.pill.tabs":`{count} tabs`,"engine.permissionPreview.pill.rls":`{count} RLS rules`,"engine.permissionPreview.section.objects":`Object Permissions`,"engine.permissionPreview.section.fields":`Field-Level Overrides`,"engine.permissionPreview.section.system":`System Permissions`,"engine.permissionPreview.section.tabs":`Tab Visibility`,"engine.permissionPreview.col.object":`Object`,"engine.permissionPreview.cap.create":`Create`,"engine.permissionPreview.cap.read":`Read`,"engine.permissionPreview.cap.edit":`Edit`,"engine.permissionPreview.cap.delete":`Delete`,"engine.permissionPreview.cap.export":`Export`,"engine.permissionPreview.cap.transfer":`Transfer`,"engine.permissionPreview.cap.viewAll":`View All`,"engine.permissionPreview.cap.modifyAll":`Modify All`,"engine.permissionPreview.col.scopeTitle":`Read / write access depth (ADR-0057)`,"engine.permissionPreview.col.scope":`Scope`,"engine.permissionPreview.readScope":`Read scope`,"engine.permissionPreview.writeScope":`Write scope`,"engine.permissionPreview.scopeDefault":`default`,"engine.permissionPreview.fls.hidden":`hidden`,"engine.permissionPreview.fls.editable":`editable`,"engine.permissionPreview.sanityOne":`{count} sanity check failed`,"engine.permissionPreview.sanityOther":`{count} sanity checks failed`,"engine.permissionPreview.warn.editWithoutRead":`Edit granted without Read (record updates will fail).`,"engine.permissionPreview.warn.deleteWithoutRead":`Delete granted without Read.`,"engine.permissionPreview.warn.modifyAllWithoutViewAll":`Modify All without View All — modifications may target invisible records.`,"engine.permissionPreview.warn.writeWiderThanRead":`Write scope ({write}) is wider than read scope ({read}) — edits may target invisible records.`,"engine.permissionPreview.granted":`granted`,"engine.permissionPreview.notGranted":`not granted`,"engine.permissionPreview.legend.bypass":`bypass (View/Modify All)`,"engine.permissionPreview.legend.key":`C R U D = CRUD · E T = Export/Transfer · V* M* = View/Modify All`,"engine.positionPreview.empty":`Give the position a name to see the preview.`,"engine.positionPreview.noAccess":`Positions don't grant data access on their own.`,"engine.positionPreview.bind":`Bind {name} to one or more {permissionSets} to control CRUD-VAMA, field access, and tab visibility. Record visibility comes from the business-unit tree and sharing rules, not from the position.`,"engine.positionPreview.permissionSets":`Permission Sets`,"engine.translationPreview.empty":`This bundle is empty — add at least one translated string to see the coverage report.`,"engine.translationPreview.category.objects":`Objects`,"engine.translationPreview.category.apps":`Apps`,"engine.translationPreview.category.messages":`Messages`,"engine.translationPreview.category.validationMessages":`Validation Messages`,"engine.translationPreview.category.globalActions":`Global Actions`,"engine.translationPreview.category.dashboards":`Dashboards`,"engine.translationPreview.category.settings":`Settings`,"engine.translationPreview.category.metadataForms":`Metadata Forms`,"engine.translationPreview.coverage":`Category coverage:`,"engine.translationPreview.totalKeys":`{count} total keys`,"engine.translationPreview.categoryEmpty":`empty`,"engine.translationPreview.more":`+{count} more…`,"engine.translationPreview.keyCount":`{{count} keys}`,"engine.celLint.notTheRow":"`{identifier}` is not the row on this surface: a row predicate binds the record as `{canonical}` and nothing else. The CEL scope vocabulary still accepts `{identifier}`, so nothing here blocks the save, but at runtime the expression faults with `Unknown variable: {identifier}` and the rule never fires. Re-root the reference on `{canonical}`.","engine.celLint.notPushdownable":`This read filter isn't a simple field comparison ({detail}), so the server may be unable to push it down to the query — depending on the evaluation path it can be dropped and WIDEN access. Prefer a pushdown-able predicate (field vs. value or scope variable).`,"engine.objectPreview.renderFailed":`The form designer couldn't be rendered. Check the Form tab.`,"engine.datasetPreview.pickObject":`Pick a base object`,"engine.datasetPreview.pickObjectHint":"Set the dataset's `object` to preview it against live data.","engine.datasetPreview.addMeasure":`Add a measure`,"engine.datasetPreview.addMeasureHint":`A dataset needs at least one measure (e.g. revenue = sum(amount)) to preview.`,"engine.datasetPreview.run":`Run preview`,"engine.datasetPreview.measureOne":`{count} measure`,"engine.datasetPreview.measureOther":`{count} measures`,"engine.datasetPreview.dimensionOne":`{count} dimension`,"engine.datasetPreview.dimensionOther":`{count} dimensions`,"engine.datasetPreview.notInstalled":`Analytics capability not installed`,"engine.datasetPreview.notInstalledHint":`This deployment has no analytics service, so dataset previews can't run. Install @objectstack/service-analytics and mount AnalyticsServicePlugin — the dataset definition itself is fine.`,"engine.datasetPreview.noRows":`No rows`,"engine.datasetPreview.noRowsHint":`The dataset returned no rows for the current scope.`,"engine.datasetPreview.chartFailed":`Couldn't render the chart for this result — the table below still shows the data.`,"engine.datasetPreview.ratioAxis":`Ratio measures ({measures}) use the right axis.`,"engine.viewPreview.schemaFailed":"The view's `type` may not be registered, or required fields are missing.","engine.viewPreview.noObject":`This view has no object binding yet. Set the bound {object} in the right panel to fetch live data and field options.`,"engine.viewPreview.formFailed":`The form view references an object or field that doesn't resolve.`,"engine.viewPreview.listFailed":`The view references an object or field that doesn't resolve.`,"engine.reportPreview.renderFailed":`The Report references a dataset/measure that doesn't resolve, or its config is incomplete.`,"engine.reportPreview.loading":`Loading report renderer…`,"engine.reportPreview.joinedEmpty":`Add a block to preview this joined report`,"engine.reportPreview.joinedEmptyHint":`A joined report stacks dataset-bound blocks. Add a block and bind its dataset + measures in the right panel to start designing.`,"engine.reportPreview.empty":`Bind a dataset to preview this report`,"engine.reportPreview.emptyHint":`Since the 9.0 single-form cutover a report renders its dataset's measures (values) grouped by dimensions (rows). Choose a Dataset in the right panel to start designing.`,"engine.pagePreview.interfaceFailed":`The interface page references a source object/view that isn't available.`,"engine.pagePreview.schemaFailed":`The Page schema is incomplete or references a component that hasn't been registered yet.`,"engine.pagePreview.previewRecord":`Preview record`,"engine.pagePreview.sampleOne":`{count} sample`,"engine.pagePreview.sampleOther":`{count} samples`,"engine.pagePreview.recordFallback":`(record)`,"engine.pagePreview.addComponents":`Add components to the page to see a preview.`,"engine.pagePreview.blockN":`block {n}`,"engine.pageBlockCanvas.renderFailed":`"{type}" can't render with its current configuration — check its Properties.`,"engine.pageBlockCanvas.itemN":`Item {n}`,"engine.pageBlockCanvas.body":`Body`,"engine.pageBlockCanvas.content":`Content`,"engine.pageBlockCanvas.noRegions":`No regions yet`,"engine.pageBlockCanvas.noRegionsHint":`A Page is composed of regions (header / main / sidebar / …). Add a region to start dropping blocks into it.`,"engine.pageBlockCanvas.addRegion":`Add region`,"engine.pageBlockCanvas.regionN":`region {n}`,"engine.pageBlockCanvas.dropHere":`drop here`,"engine.pageBlockCanvas.slotInherited":`Inherited from the default page — add a block to override this slot.`,"engine.pageBlockCanvas.regionEmpty":`Empty region — drop a block here or use the add button below.`,"engine.pageBlockCanvas.select":`Select {label}`,"engine.pageBlockCanvas.groupEmpty":`Empty — add a block.`,"engine.pageBlockCanvas.searchTypes":`Search block type…`,"engine.pageBlockCanvas.noMatch":`No matching types.`,"engine.pageBlockCanvas.category.data":`Data`,"engine.pageBlockCanvas.category.layout":`Layout`,"engine.pageBlockCanvas.category.record":`Record context`,"engine.pageBlockCanvas.category.navigation":`Navigation`,"engine.pageBlockCanvas.category.element":`Elements`,"engine.pageBlockCanvas.category.ai":`AI`,"engine.pageBlockCanvas.category.misc":`Other`,"engine.pageBlockCanvas.type.grid":`Grid`,"engine.pageBlockCanvas.type.objectGrid":`Table`,"engine.pageBlockCanvas.type.objectForm":`Form`,"engine.pageBlockCanvas.type.objectMetric":`Metric`,"engine.pageBlockCanvas.type.objectKanban":`Kanban`,"engine.pageBlockCanvas.type.pageHeader":`Header`,"engine.pageBlockCanvas.type.pageFooter":`Footer`,"engine.pageBlockCanvas.type.pageSidebar":`Sidebar`,"engine.pageBlockCanvas.type.pageTabs":`Tabs`,"engine.pageBlockCanvas.type.pageAccordion":`Accordion`,"engine.pageBlockCanvas.type.pageCard":`Card`,"engine.pageBlockCanvas.type.pageSection":`Section`,"engine.pageBlockCanvas.type.recordDetails":`Record details`,"engine.pageBlockCanvas.type.recordHighlights":`Highlights`,"engine.pageBlockCanvas.type.recordRelatedList":`Related list`,"engine.pageBlockCanvas.type.recordActivity":`Activity timeline`,"engine.pageBlockCanvas.type.recordDiscussion":`Discussion`,"engine.pageBlockCanvas.type.recordPath":`Stage path`,"engine.pageBlockCanvas.type.recordAlert":`Alert banner`,"engine.pageBlockCanvas.type.recordQuickActions":`Quick actions`,"engine.pageBlockCanvas.type.recordReferenceRail":`Reference rail`,"engine.pageBlockCanvas.type.recordHistory":`History`,"engine.pageBlockCanvas.type.navMenu":`Nav menu`,"engine.pageBlockCanvas.type.navBreadcrumb":`Breadcrumb`,"engine.pageBlockCanvas.type.globalSearch":`Global search`,"engine.pageBlockCanvas.type.aiSuggestion":`AI suggestion`,"engine.pageBlockCanvas.type.elementText":`Text`,"engine.pageBlockCanvas.type.elementNumber":`Number`,"engine.pageBlockCanvas.type.elementImage":`Image`,"engine.pageBlockCanvas.type.elementDivider":`Divider`,"engine.pageBlockCanvas.type.elementButton":`Button`,"engine.pageBlockCanvas.type.elementDefinitionList":`Definition list`,"engine.pageBlockCanvas.type.elementRepeater":`Repeater`,"engine.sourcePageEditor.source":`Page source`,"engine.sourcePageEditor.renderFailed":`The page source threw while rendering — fix the code in the Source tab.`,"engine.validationPreview.empty":`Give the validation a name to see the preview.`,"engine.validationPreview.active":`Active`,"engine.validationPreview.disabled":`Disabled`,"engine.validationPreview.priority":`priority {priority}`,"engine.validationPreview.on":`on {events}`,"engine.validationPreview.noMessage":`no message set`,"engine.validationPreview.tags":`Tags`,"engine.validationPreview.removed.unique":"Uniqueness is a unique INDEX, not a validation rule: declare it on the object as `indexes: [{ fields: [...], unique: true }]` (or `unique: true` on the field). A SELECT-then-INSERT rule is inherently racy (TOCTOU); a database constraint is not.","engine.validationPreview.removed.async":`Remote/async validation is a form-layer concern — on the server write path it is an SSRF and latency hazard. Keep it in the form, or enforce the underlying invariant with a unique index or a lifecycle hook.`,"engine.validationPreview.removed.custom":"Arbitrary validation code belongs in a `beforeInsert` / `beforeUpdate` lifecycle hook — the typed, supported extension point.","engine.validationPreview.notARule":`Not a validation rule`,"engine.validationPreview.removedType":`{type} was removed from ValidationRuleSchema — this rule cannot be saved.`,"engine.validationPreview.condition":`Condition`,"engine.validationPreview.when":`When`,"engine.validationPreview.thenApply":`Then apply`,"engine.validationPreview.noNested":`No nested rule set — this rule enforces nothing.`,"engine.validationPreview.otherwiseApply":`Otherwise apply`,"engine.validationPreview.transitions":`Transitions`,"engine.validationPreview.transitionsOn":`Transitions on {field}`,"engine.validationPreview.noTransitions":`No transitions declared.`,"engine.validationPreview.deadEnd":`∅ (dead-end)`,"engine.validationPreview.createdIn":`May be created in`,"engine.validationPreview.format":`Format`,"engine.validationPreview.formatOn":`Format on {field}`,"engine.validationPreview.builtIn":`Built-in:`,"engine.validationPreview.regex":`Regex:`,"engine.validationPreview.noFormat":`No format or regex set.`,"engine.validationPreview.fieldsInvolved":`Fields involved`,"engine.validationPreview.none":`none`,"engine.validationPreview.crossFieldCondition":`Cross-field condition`,"engine.validationPreview.jsonSchemaOn":`JSON Schema on {field}`,"engine.validationPreview.noJsonSchema":`No JSON Schema set.`,"engine.validationPreview.rule":`Rule`,"engine.validationPreview.unknownType":`Unknown rule type "{type}". Showing common fields only.`,"engine.validationPreview.noType":`no type`,"engine.validationPreview.noExpression":`No expression set.`,"engine.fieldsListEditor.columns":`Columns`,"engine.fieldsListEditor.empty":`No columns yet. Add a field below.`,"engine.fieldsListEditor.colN":`col {n}`,"engine.viewColumnPanes.remove":`Remove {label}`,"engine.externalDatasource.unavailable":`Federation is not enabled on this server.`,"engine.externalDatasource.saveFirst":`Save the datasource first to browse its remote tables and validate federated objects.`,"engine.externalDatasource.title":`External Datasource`,"engine.externalDatasource.writesAllowed":`writes allowed`,"engine.externalDatasource.readOnly":`read-only`,"engine.externalDatasource.snapshot":`snapshot {time}`,"engine.externalDatasource.refresh":`Refresh catalog`,"engine.externalDatasource.tables":`Tables`,"engine.externalDatasource.validation":`Validation`,"engine.externalDatasource.browser.filter":`Filter tables…`,"engine.externalDatasource.browser.refresh":`Refresh`,"engine.externalDatasource.browser.introspecting":`Introspecting remote schema…`,"engine.externalDatasource.browser.noRemoteTables":`No remote tables found (check the datasource’s allowedSchemas).`,"engine.externalDatasource.browser.noMatch":`No tables match the filter.`,"engine.externalDatasource.browser.colTable":`Table`,"engine.externalDatasource.browser.colColumns":`Columns`,"engine.externalDatasource.browser.colRows":`Rows (est.)`,"engine.externalDatasource.browser.import":`Import`,"engine.externalDatasource.browser.unavailable":`Federation is not enabled on this server. The {service} service must be registered for table browsing, drafting, and validation to work.`,"engine.externalDatasource.check.unavailable":`Federation is not enabled on this server, so validation is unavailable.`,"engine.externalDatasource.check.intro":`Check that every federated object on {datasource} still matches its live remote table.`,"engine.externalDatasource.check.run":`Run validation`,"engine.externalDatasource.check.allMatchOne":`All {count} object match the remote schema.`,"engine.externalDatasource.check.allMatchOther":`All {count} objects match the remote schema.`,"engine.externalDatasource.check.divergeOne":`{diverged} of {count} object diverge from the remote schema.`,"engine.externalDatasource.check.divergeOther":`{diverged} of {count} objects diverge from the remote schema.`,"engine.externalDatasource.check.noObjects":`No federated objects are bound to this datasource yet. Import a table from the Tables tab to get started.`,"engine.externalDatasource.check.diffsOne":`{count} diff`,"engine.externalDatasource.check.diffsOther":`{count} diffs`,"engine.externalDatasource.check.expectedActual":`expected {expected}, actual {actual}`,"engine.externalDatasource.diff.missingTable":`Missing table`,"engine.externalDatasource.diff.missingColumn":`Missing column`,"engine.externalDatasource.diff.typeMismatch":`Type mismatch`,"engine.externalDatasource.diff.nullabilityMismatch":`Nullability mismatch`,"engine.externalDatasource.diff.unmappedColumn":`Unmapped column`,"engine.externalDatasource.diff.pkMismatch":`Primary-key mismatch`,"engine.externalDatasource.diff.indexMismatch":`Index mismatch`,"engine.externalDatasource.diff.unmappedIndex":`Unmapped index`,"engine.externalDatasource.diff.defaultMismatch":`Column default mismatch`,"engine.externalDatasource.diff.unreachable":`Not checked — remote unreachable`,"engine.externalDatasource.import.title":`Import as Object`,"engine.externalDatasource.import.intro":`Map remote table {table} into an ObjectStack object bound to {datasource}. The remote schema is never modified.`,"engine.externalDatasource.import.generating":`Generating draft…`,"engine.externalDatasource.import.done":`Imported object {name}.`,"engine.externalDatasource.import.doneNext":`Review its binding and run validation to confirm it matches the remote table.`,"engine.externalDatasource.import.objectName":`Object name`,"engine.externalDatasource.import.reviewOne":`{count} column need review`,"engine.externalDatasource.import.reviewOther":`{count} columns need review`,"engine.externalDatasource.import.source":`Generated source`,"engine.externalDatasource.import.importing":`Importing…`,"engine.flowValidate.nodeMissingId":`A node is missing an id.`,"engine.flowValidate.duplicateNodeId":`Duplicate node id "{id}".`,"engine.flowValidate.edgeSourceMissing":`Edge source "{source}" does not exist.`,"engine.flowValidate.edgeTargetMissing":`Edge target "{target}" does not exist.`,"engine.flowValidate.startHasIncoming":`Start node has an incoming edge.`,"engine.flowValidate.multipleStart":`Flow has {count} start nodes; expected one.`,"engine.flowValidate.noStartUsingRoot":`No "start" node; using the only root node as the entry.`,"engine.flowValidate.noEntry":`No entry node (every node has an incoming edge — the graph is fully cyclic).`,"engine.flowValidate.ambiguousEntry":`Cannot determine a single entry node ({count} candidates). Add a "start" node.`,"engine.flowValidate.decisionMultipleDefaults":`Decision "{id}" has {count} default branches.`,"engine.flowValidate.decisionNoBranches":`Decision "{id}" has no outgoing branches.`,"engine.flowValidate.decisionNoDefault":`Decision "{id}" has no default branch; it may dead-end when no condition matches.`,"engine.flowValidate.nodeUnreachable":`Node "{id}" is unreachable from the entry.`,"engine.flowValidate.cycleDetected":`Cycle detected ({cycle}). Mark the connection that closes the loop as a back-edge (Connection type → Back-edge) to declare an intentional revise/rework loop.`,"engine.flowRef.unknownWithSuggestion":"Unknown reference `{token}` — did you mean `{suggestion}`?","engine.flowRef.notInScope":"`{token}` is not a reference in scope at this step.","engine.flowRef.notInScopeMulti":`Not in scope: {tokens}.`,"engine.flowRef.notAScreenField":"`{token}` is not a field on this screen","engine.flowRef.notAScreenFieldWithSuggestion":"`{token}` is not a field on this screen (did you mean `{suggestion}`?)","engine.flowExpr.templateDialect":"Expected a text template but got a `{dialect}` expression.","engine.flowExpr.singleBraceTemplate":"Single-brace `{{ref}}` is not a valid template hole — use double braces: `{{ {ref} }}`.","engine.flowExpr.celDialect":"Expected a CEL expression but got a `{dialect}` dialect.","engine.flowExpr.braceInCondition":"It looks like a `{{ref}}` template brace was used inside a condition — `{…}` parses as a CEL map literal and fails. Write the bare reference instead, e.g. `{ref}`. Conditions are bare CEL (e.g. `record.rating >= 4`).","engine.flowExpr.unbalancedParens":"Unbalanced parentheses in `{source}`.","engine.flowExpr.unbalancedBrackets":"Unbalanced brackets in `{source}`.","engine.flowScope.picker.insert":`Insert a reference`,"engine.flowScope.picker.search":`Search references…`,"engine.flowScope.picker.empty":`No matching references.`,"engine.flowScope.group.variables":`Flow variables`,"engine.flowScope.group.outputs":`Upstream outputs`,"engine.flowScope.group.loop":`Loop item`,"engine.flowScope.group.trigger":`Trigger record`,"engine.flowScope.group.approvalCurrent":`Current record (live at node entry)`,"engine.flowScope.group.approvalTrigger":`Trigger snapshot (at submit)`,"engine.flowScope.group.screenFields":`Screen fields`,"engine.flowScope.detail.variable":`variable`,"engine.flowScope.detail.variableTyped":`variable · {type}`,"engine.flowScope.detail.triggerRecord":`trigger record · {object}`,"engine.flowScope.detail.previousRecord":`record values before the change`,"engine.flowScope.detail.priorOf":`prior {detail}`,"engine.flowScope.detail.priorValue":`prior value`,"engine.flowScope.detail.preUpdateRow":`pre-update row`,"engine.flowProblems.title":`Problems`,"engine.flowProblems.empty":`No problems — this flow is structurally valid.`,"engine.flowProblems.sourceSchema":`schema`,"engine.flowProblems.sourceExpression":`expression`,"engine.edit.refsScanning":`Scanning references…`,"engine.edit.refsEmptyTitle":`No references found`,"engine.edit.refsEmptyDesc":`Nothing in the metadata graph points at this item. Safe to delete.`,"engine.edit.refsErrorTitle":`Reference check failed`,"engine.edit.refsErrorDesc":`The reference scan did not complete, so what depends on this item is unknown. This is not a statement that deleting it is safe — run the check again before you decide.`,"engine.edit.refsRetry":`Retry check`,"engine.edit.destructiveTitle":`Destructive change detected`,"engine.edit.destructiveDesc":`The framework refused this save because it would drop or narrow data already in use. Review the issues and confirm to override.`,"engine.edit.forcing":`Forcing…`,"engine.edit.historySubtitle":`Version history`,"engine.edit.historyEvents":`Events`,"engine.edit.historyEmptyTitle":`No history yet`,"engine.edit.historyEmptyDesc":`This item has never been edited via an overlay. The first save will create the initial history record.`,"engine.inspector.reorder.up":`Move up`,"engine.inspector.reorder.down":`Move down`,"engine.inspector.combo.search":`Search or type…`,"engine.inspector.combo.noMatch":`No match — keep typing to use a custom value.`,"engine.inspector.combo.loading":`Loading…`,"engine.inspector.combo.useCustom":`Use {value}`,"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.close":`Close`,"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.colorHex":`Hex value`,"engine.form.loadingObjects":`Loading objects…`,"engine.form.noObjects":`object_name (no objects detected)`,"engine.form.selectObject":`Select object…`,"engine.form.selectComponent":`Select component…`,"engine.form.noComponents":`component_id (no components on this page yet)`,"engine.form.addObjects":`Add objects…`,"engine.form.loadingFields":`Loading fields…`,"engine.form.selectObjectFirst":`(Select an object first)`,"engine.form.selectField":`Select field…`,"engine.form.addFields":`Add fields…`,"engine.form.noObjectBound":`No object bound`,"engine.form.loadingOptions":`Loading options…`,"engine.form.optionsLoadFailedTitle":`Options could not be loaded`,"engine.form.optionsLoadFailedDesc":`This list did not load, so it is not a statement that no options exist. Reload the editor to ask again.`,"engine.form.none":`— None —`,"engine.form.notInObject":`(not in object)`,"engine.form.notFound":`(not found)`,"engine.form.deprecated":`(deprecated)`,"engine.form.invalid":`(invalid)`,"engine.form.notPublished":`(not published)`,"engine.form.flaggedValue":`{value} {flag}`,"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.objectNotFound":`Object not found`,"engine.form.datasetNotFound":`Dataset not found`,"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.form.machineName":`Machine name`,"engine.form.sectionN":`Section {n}`,"engine.form.notConfigured":`Not configured`,"engine.form.configure":`Configure`,"engine.form.removeNamed":`Remove {name}`,"engine.form.moveUp":`Move up`,"engine.form.moveDown":`Move down`,"engine.form.noneShort":`none`,"engine.form.filterModeNone":`None`,"engine.form.filterModeTabs":`Tabs`,"engine.form.filterModeDropdown":`Dropdown`,"engine.form.filterElement":`Filter element`,"engine.form.removeField":`Remove field`,"engine.form.addFilterField":`+ Add filter field…`,"engine.form.bindObjectForFilterFields":`Bind a source object to pick filter fields.`,"engine.form.tabLabel":`Tab label`,"engine.form.moveTabUp":`Move tab up`,"engine.form.moveTabDown":`Move tab down`,"engine.form.removeTab":`Remove tab`,"engine.form.bindObjectForTabRules":`Bind a source object to build tab filter rules.`,"engine.form.bindObjectForConditions":`Bind a source object to add filter conditions.`,"engine.form.addActionButtonPlain":`Add action button`,"engine.form.addActionButton":`+ Add action button…`,"engine.form.allActionsAdded":`All actions added`,"engine.form.bindObjectForActions":`Bind a source object to pick actions`,"engine.form.color":`Color`,"engine.form.colorHexPlaceholder":`#RRGGBB`,"engine.form.secretSetTypeToReplace":`•••••••• set — type to replace`,"engine.form.secretSetLeaveBlank":`•••••••• set — leave blank to keep`,"engine.form.enterAValue":`Enter a value`,"engine.form.secretValue":`Secret value`,"engine.form.hideValue":`Hide value`,"engine.form.revealValue":`Reveal value`,"engine.form.clear":`Clear`,"engine.form.anOption":`an option`,"engine.form.selectDepToConfigure":`Select {dep} to configure.`,"engine.form.noConfigNeeded":`No configuration needed for "{value}".`,"engine.form.readOnly":`read-only`,"engine.form.loadingEditor":`Loading editor…`,"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.serverRefused":`The server refused this draft — fix {issue} before saving.`,"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.namespace":`Object namespace`,"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.create.exists":`A package with this id already exists.`,"engine.packages.noCapability":`You do not have permission to manage packages in this workspace — it requires the “Manage Metadata” permission.`,"engine.packages.form.basics":`Basics`,"engine.packages.form.advanced":`Advanced`,"engine.packages.form.namespace":`Namespace`,"engine.packages.form.defaultDatasource":`Default datasource`,"engine.packages.form.scope":`Scope`,"engine.packages.form.dependencies":`Dependencies`,"engine.packages.view.title":`Package info`,"engine.packages.detail.viewInfo":`View info`,"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.publishDraftsRolledBack":`Nothing was published — the batch rolled back (all-or-nothing): {cause}`,"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?
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@ This removes every object, view, dashboard and app in the package AND drops the
|
|
|
6
6
|
|
|
7
7
|
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.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.editLink":`Edit in the package’s Record Sharing Baseline (OWD) overview`,"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.basics.editHint":`Edit name / label`,"perm.cap.none":`No system capabilities`,"perm.cap.add":`Add capability`,"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.filter":`Filter fields…`,"perm.field.filterEmpty":`No fields match the filter.`,"perm.field.bulk.readable":`Read all`,"perm.field.bulk.writable":`Write all`,"perm.field.bulk.clear":`Clear`,"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.cel.valid":`Valid CEL`,"perm.cel.suggestions":`Field and scope suggestions`,"perm.cel.type":`Result type:`,"perm.cel.type.number":`Number`,"perm.cel.type.text":`Text`,"perm.cel.type.boolean":`Boolean`,"perm.cel.type.date":`Date`,"perm.cel.type.unknown":`Unknown`,"perm.cel.type.unknownHint":`the engine cannot prove a single type. Wrap operands in double() / int() / string() to pin it — only proven-Number formulas are offered as dataset measures.`,"perm.cel.saveBlocked":`Fix the CEL syntax errors before saving.`,"perm.inspector.saveBlocked":`Fix the issues shown in the inspector before saving.`,"perm.cel.test.title":`Test policy`,"perm.cel.test.help":`Dry-run this predicate against a sample record and acting user — the same CEL engine the server uses — to see whether the row is allowed or denied before you save.`,"perm.cel.test.run":`Test`,"perm.cel.test.clause":`Clause`,"perm.cel.test.noPredicate":`Add a USING or CHECK predicate first, then test it.`,"perm.cel.test.record":`Sample record`,"perm.cel.test.user":`Acting user`,"perm.cel.test.allow":`Allowed`,"perm.cel.test.allowHint":`The record is in scope — the holder may access it.`,"perm.cel.test.deny":`Denied`,"perm.cel.test.denyHint":`The record is out of scope — it is excluded for the holder.`,"perm.cel.test.nonBool":`Non-boolean result`,"perm.cel.test.nonBoolHint":`a row filter should evaluate to true or false.`,"perm.cel.test.error":`Evaluation error`,"perm.cel.test.unavailable":`CEL engine unavailable`,"perm.cel.test.unavailableHint":`The in-browser CEL engine could not be loaded.`,"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.businessUnitRequired":`Name a business unit first — a scope without one is refused when the record is saved.`,"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.save.rereadFailed":`Save cancelled: the current permission set could not be re-read, so rows contributed by other packages cannot be preserved. Nothing was saved — please try again.`,"perm.save.rereadStale":`Saved. The follow-up read that refreshes this view did not answer, so the matrix below shows what was just saved rather than the server's copy. Reopen this permission set to confirm.`,"perm.readOnly":`Read-only (this metadata type has no runtime write channel)`,"perm.readOnly.hint":`The metadata-type registry declares both allowOrgOverride and allowRuntimeCreate false for this type, so the platform accepts no runtime write for it. Edit the source artifact and redeploy, or ask an operator for the documented OS_METADATA_WRITABLE escape hatch.`,"perm.readOnly.artifact":`Read-only (this set is provided by a code package)`,"perm.readOnly.artifact.hint":`A code package ships this permission set, so it is locked here: an environment-scope edit would overlay a packaged item, and the metadata-type registry declares allowOrgOverride false for permission (ADR-0005 forbids per-org overlay of a packaged set: silent privilege drift). The server refuses the write with 403 not_overridable. Clone to customize: the clone is an ordinary set owned by your organization that you edit here, and upgrades keep flowing to this base. Other routes: edit the source artifact and redeploy, create a new runtime set, or ask an operator for the documented OS_METADATA_WRITABLE escape hatch.`,"perm.clone.action":`Clone to customize`,"perm.clone.hint":`Creates an organization-owned copy of this set through the published clone_permission_set action; the copy is editable here, and upgrades keep flowing to the package-provided base.`,"perm.clone.guidance":`Locked: a code package provides this permission set, so it cannot be edited in place here (upgrades keep flowing to it). Clone to customize — the clone is an ordinary set owned by your organization, editable here.`,"perm.clone.actionMissing":`Clone is unavailable: the sys_permission_set object on this server publishes no clone_permission_set action.`,"perm.clone.rowMissing":`Clone is unavailable: no sys_permission_set record named {name} was found.`,"perm.clone.noName":`The clone was created, but the server's answer did not name it. Open it from the permission-set list.`,"perm.clone.done":`Cloned as {name}. Open it from the permission-set list to edit.`,"perm.save.locked":`Save refused (403 not_overridable): a code package provides this permission set, so the server does not accept an in-place edit. Clone to customize instead — the clone is your organization's own set, and upgrades keep flowing to this base.`,"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.stub.address":`Street
|
|
8
8
|
City, State ZIP
|
|
9
|
-
Country`,"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.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.optMalformed":`This option cannot be edited here`,"designer.field.optMalformed.notAnObject":`It is not an option object.`,"designer.field.optMalformed.valueNotText":"Its `value` is missing or is not text.","designer.field.optMalformed.valueEmpty":"Its `value` is empty.","designer.field.optMalformed.labelNotText":"Its `label` is not text.","designer.field.optMalformed.colorNotText":"Its `color` is not text.","designer.field.optMalformedHint":`It is kept exactly as authored. Repair it in the JSON source, or remove it here.`,"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.summary.object":`Child object`,"designer.field.summary.function":`Aggregation`,"designer.field.summary.fn.count":`Count — child records`,"designer.field.summary.fn.sum":`Sum`,"designer.field.summary.fn.min":`Min`,"designer.field.summary.fn.max":`Max`,"designer.field.summary.fn.avg":`Average`,"designer.field.summary.field":`Child field to aggregate`,"designer.field.summary.relationshipField":`Child relationship field (optional)`,"designer.field.summary.setObjectFirst":`Set the child object first`,"designer.field.summary.countFieldHint":`Ignored for count, but still required — pick any child field.`,"designer.field.summary.filterSection":`Filter (rows to aggregate)`,"designer.field.summary.addFilter":`Add condition`,"designer.field.summary.noFilter":`No filter — every child row is aggregated.`,"designer.field.summary.filterHint":`Only child rows matching ALL conditions are aggregated — this is how one child object can feed several different totals (e.g. an approved-only sum vs the grand total).`,"designer.field.summary.filterAdvanced":`This filter uses an advanced shape (OR / nested logic) that the row editor can’t show. Edit it as raw metadata to preserve it.`,"designer.field.summary.hint":`Recomputed automatically when child records are created, updated, or deleted. The relationship field is auto-detected when the child has exactly one relation back to this object.`,"designer.field.precision":`Precision`,"designer.field.scale":`Scale`,"designer.field.min":`Min`,"designer.field.max":`Max`,"designer.field.maxLength":`Max length`,"designer.field.valueDomain":`Value domain`,"designer.field.valueDomainNone":`— None —`,"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.conditionalRules":`Conditional rules (CEL)`,"designer.field.visibleWhen":`Visible when`,"designer.field.readonlyWhen":`Read-only when`,"designer.field.requiredWhen":`Required when`,"designer.field.conditionalRulesHint":`While a predicate is true the field becomes visible / read-only / required. Reference the live record as record.<field>, the last saved values as previous.<field>, and (in master-detail line items) the header record as parent.<field>.`,"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":`Save as draft`,"engine.studio.saveDraft":`Save draft`,"engine.studio.more":`More`,"engine.studio.autoSaving":`Saving…`,"engine.studio.data.tab.advanced":`Advanced`,"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.pkg.manageMissing":`Package {id} is not in the installed list — it may have been deleted or uninstalled elsewhere.`,"engine.studio.pkg.manageRefreshFailed":`Package {id} could not be refreshed after that change — closing the panel rather than showing the pre-change record as current. {error}`,"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.fieldType.text":`Text`,"engine.fieldType.textarea":`Text Area`,"engine.fieldType.email":`Email`,"engine.fieldType.url":`URL`,"engine.fieldType.phone":`Phone`,"engine.fieldType.password":`Password`,"engine.fieldType.markdown":`Markdown`,"engine.fieldType.html":`HTML`,"engine.fieldType.richtext":`Rich Text`,"engine.fieldType.number":`Number`,"engine.fieldType.currency":`Currency`,"engine.fieldType.percent":`Percent`,"engine.fieldType.date":`Date`,"engine.fieldType.datetime":`Date/Time`,"engine.fieldType.time":`Time`,"engine.fieldType.boolean":`Checkbox`,"engine.fieldType.toggle":`Toggle`,"engine.fieldType.select":`Picklist`,"engine.fieldType.multiselect":`Multi-Select`,"engine.fieldType.radio":`Radio`,"engine.fieldType.checkboxes":`Checkboxes`,"engine.fieldType.lookup":`Lookup`,"engine.fieldType.master_detail":`Master-Detail`,"engine.fieldType.tree":`Tree`,"engine.fieldType.image":`Image`,"engine.fieldType.file":`File`,"engine.fieldType.avatar":`Avatar`,"engine.fieldType.video":`Video`,"engine.fieldType.audio":`Audio`,"engine.fieldType.formula":`Formula`,"engine.fieldType.summary":`Rollup`,"engine.fieldType.autonumber":`Auto Number`,"engine.fieldType.composite":`Composite`,"engine.fieldType.repeater":`Repeater`,"engine.fieldType.location":`Location`,"engine.fieldType.address":`Address`,"engine.fieldType.code":`Code`,"engine.fieldType.json":`JSON`,"engine.fieldType.color":`Color`,"engine.fieldType.rating":`Rating`,"engine.fieldType.slider":`Slider`,"engine.fieldType.signature":`Signature`,"engine.fieldType.qrcode":`QR Code`,"engine.fieldType.progress":`Progress`,"engine.fieldType.tags":`Tags`,"engine.fieldType.vector":`Vector`,"engine.fieldCategory.text":`Text`,"engine.fieldCategory.number":`Number`,"engine.fieldCategory.date":`Date / time`,"engine.fieldCategory.logic":`Logic`,"engine.fieldCategory.selection":`Selection`,"engine.fieldCategory.relation":`Relation`,"engine.fieldCategory.media":`Media`,"engine.fieldCategory.calculated":`Calculated`,"engine.fieldCategory.advanced":`Advanced`,"engine.studio.aiCopilot":`AI copilot`,"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.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) — the most important fields on this object, in display order; surfaces that show a record at a glance draw on them, each taking as many as it has room for`,"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 — publishing is refused)`,"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 — publishing this object is REFUSED (security-owd-unset). The runtime does fall back to Private (ADR-0090 D1), but the baseline has to be an authored decision, not an accident. Pick a model — Private is the same behaviour, chosen on purpose.`,"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.capSearchable":`Global search (searchable)`,"engine.studio.settings.capSearchableDesc":`Include this object's records in cross-object global search. Off = records no longer appear in global search results. Which fields match is configured per-object via searchableFields, not here.`,"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.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.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.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.internalId":`Internal id`,"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.modeDesign":`Design`,"engine.studio.if.modeRun":`Run`,"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.designersMissing":`No metadata designers are registered in this session, so {type} cannot be previewed or designed here.`,"engine.studio.if.noDesigner":`No designer is registered for {type}, so it cannot be previewed or designed here.`,"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.studioCanvasNoBlocks":`This canvas renders the running app, not a block tree — it has no blocks to select, and nothing here is edited from this panel.`,"engine.studio.inspector.designersMissing":`No metadata designers are registered in this session, so there is nothing to edit 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.owdLabel":`Record sharing (OWD) — who can see records another user owns`,"engine.studio.data.owdHint":`Required to publish, and changeable later under Settings → Record sharing. Private matches what the runtime already does when no model is set.`,"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”). Create one below; 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.editorMissing":`No action editor is registered in this session, so this action’s properties cannot be edited here.`,"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.layoutBadgeClean":`Draft layout`,"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.data.fieldInspectorMissing":`No field inspector is registered in this session, so this field’s properties cannot be edited here.`,"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.auto.designersMissing":`No metadata designers are registered in this session, so this flow cannot be designed 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.owd.railLabel":`Record sharing (OWD)`,"engine.studio.owd.title":`Record sharing baseline (OWD)`,"engine.studio.owd.subtitle":`Object × org-wide default`,"engine.studio.owd.description":`The org-wide default (sharingModel / externalSharingModel) for every object this package owns — audit the baseline at a glance and batch-edit it. Changes save as per-object drafts and go live through the package Publish, exactly like the per-object Settings tab.`,"engine.studio.owd.colObject":`Object`,"engine.studio.owd.colInternal":`Internal (sharingModel)`,"engine.studio.owd.colExternal":`External (externalSharingModel)`,"engine.studio.owd.none":`This package declares no objects.`,"engine.studio.owd.loadFailed":`Failed to load this package’s objects.`,"engine.studio.owd.save":`Save {count} change(s)`,"engine.studio.owd.saveNone":`No changes`,"engine.studio.owd.saved":`Saved {count} object draft(s).`,"engine.studio.owd.unsaved":`Unsaved`,"engine.studio.owd.blockedSave":`Some rows set the external baseline wider than the internal model (ADR-0090 D11). Narrow them before saving.`,"engine.studio.owd.widerError":`External is wider than internal — narrow it (private < public read < public read/write).`,"engine.studio.owd.byParent":`By parent → {master}`,"engine.studio.owd.byParentUnknown":`By parent (master record)`,"engine.studio.owd.masterTip":`Controlled by parent — record visibility is inherited from the master record; there is no separate external dial.`,"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 api-name`,"engine.studio.access.explain.objectSelect":`Select an object…`,"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.item":`Item {n}`,"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.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.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.lockUnknown":`该元数据已锁定,但当前控制台无法识别锁状态“{state}”——它可能来自更新版本的服务端。部分操作将被阻止。`,"engine.edit.history":`历史`,"engine.edit.auditTab":`审计日志`,"engine.edit.auditCount":`条记录`,"engine.edit.auditEmptyTitle":`暂无审计记录`,"engine.edit.auditEmptyDescription":`该元数据尚未发生任何保存、发布、回滚、删除或重置操作。一旦有人尝试修改(无论允许或拒绝),都会在此显示。`,"engine.edit.auditErrorTitle":`审计记录读取失败`,"engine.edit.auditErrorDescription":`审计读取没有完成,因此无法得知这一项是否有过记录。这并不表示没有发生过任何尝试 —— 请使用「刷新」重新读取。`,"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.draftSuffix":`(草稿)`,"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.widget.filterBindingsSection":`仪表盘过滤器绑定`,"engine.inspector.widget.filterBindingsHint":`把每个仪表盘级过滤器映射到本组件自己的字段;取消勾选「应用」可让本组件不受该过滤器影响。留空表示使用过滤器自身的字段。`,"engine.inspector.widget.filterBindingApply":`应用`,"engine.inspector.widget.filterBindingDefault":`默认({field})`,"engine.inspector.widget.filterBindingField":`{filter} 绑定的字段`,"engine.inspector.widget.filterBindingReset":`恢复默认`,"engine.inspector.widget.type.metric":`KPI 指标`,"engine.inspector.widget.type.bar":`柱状图`,"engine.inspector.widget.type.horizontalBar":`条形图`,"engine.inspector.widget.type.line":`折线图`,"engine.inspector.widget.type.area":`面积图`,"engine.inspector.widget.type.pie":`饼图`,"engine.inspector.widget.type.donut":`环形图`,"engine.inspector.widget.type.funnel":`漏斗图`,"engine.inspector.widget.type.table":`表格`,"engine.inspector.widget.type.pivot":`透视表`,"engine.inspector.widget.untitledN":`组件 {n}`,"engine.inspector.widget.unsupportedSelection":`不支持的选择类型:{kind}`,"engine.inspector.widget.removed":`所选组件已从草稿中移除。`,"engine.widgetPicker.search":`搜索组件…`,"engine.widgetPicker.noMatches":`没有匹配项。`,"engine.widgetPicker.category.kpi":`单值`,"engine.widgetPicker.category.chart":`图表`,"engine.widgetPicker.category.data":`表格`,"engine.widgetPicker.type.metric":`指标 (KPI)`,"engine.widgetPicker.type.bar":`柱状图`,"engine.widgetPicker.type.horizontalBar":`条形图`,"engine.widgetPicker.type.line":`折线图`,"engine.widgetPicker.type.area":`面积图`,"engine.widgetPicker.type.pie":`饼图`,"engine.widgetPicker.type.donut":`环形图`,"engine.widgetPicker.type.scatter":`散点图`,"engine.widgetPicker.type.funnel":`漏斗图`,"engine.widgetPicker.type.table":`数据表格`,"engine.widgetPicker.type.pivot":`透视表`,"engine.dashboardPreview.empty":`至少添加一个组件才能查看预览。`,"engine.dashboardPreview.malformed":`某个组件引用了无法解析的对象或字段。`,"engine.dashboardPreview.loading":`正在加载仪表盘渲染器…`,"engine.dashboardPreview.selected":`已选中`,"engine.dashboardPreview.clickToRename":`点击重命名`,"engine.dashboardPreview.untitled":`未命名`,"engine.dashboardPreview.saveTitle":`保存标题`,"engine.dashboardPreview.renameWidget":`重命名组件`,"engine.dashboardPreview.clearSelection":`取消选择`,"engine.inspector.flowNode.kind":`节点`,"engine.inspector.flowNode.close":`关闭节点`,"engine.inspector.flowNode.id":`ID`,"engine.inspector.flowNode.label":`标签`,"engine.inspector.flowNode.type":`节点类型`,"engine.inspector.flowNode.configuration":`配置`,"engine.inspector.flowNode.config":`配置(JSON)`,"engine.inspector.flowNode.advanced":`高级(JSON)`,"engine.inspector.flowNode.advancedHint":`上方表单未覆盖的可选自定义键 —— 大多数流程无需填写。`,"engine.inspector.flowNode.inactiveRetained":`已保留,未生效 —— 控制字段处于关闭。该值仍然存储,直到你清除它。`,"engine.inspector.flowNode.inactiveRetainedOrphan":`已保留,未生效 —— 没有任何开关能启用此字段。该值仍然存储,以免静默丢失。`,"engine.inspector.flowNode.inactiveRetainedClear":`清除值`,"engine.inspector.flowNode.noConfig":`此节点类型无需配置。`,"engine.inspector.flowNode.nestedIdHint":`容器区域内的节点 ID 在此只读 —— 请在容器的高级 JSON 中重命名。`,"engine.inspector.flowNode.nestedLocation":`嵌套节点位置`,"engine.inspector.flowNode.advancedNotObject":`必须是 JSON 对象`,"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.kv.asExpression":`写成 CEL 表达式`,"engine.inspector.flowNode.kv.expressionPlaceholder":`CEL 表达式,例如 joinNonEmpty(…)`,"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.branchDefault":`默认`,"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.gatedRequired.title":`保存已被拦截:必填字段位于条件区块中。`,"engine.inspector.view.gatedRequired.issue":`字段“{fieldLabel}”({field})在对象“{object}”上是必填的,但它位于区块“{section}”中,而该区块仅在 {predicate} 时显示。服务端从不计算这个条件,因此区块被隐藏时表单无法完成——保存记录会被拒绝,报错指向一个用户看不到的字段。`,"engine.inspector.view.gatedRequired.remedies":`可用以下三种方式之一修复:`,"engine.inspector.view.gatedRequired.remedyMove":`把“{fieldLabel}”移到没有 visibleWhen 的区块中。`,"engine.inspector.view.gatedRequired.remedyDrop":`去掉区块“{section}”上的 visibleWhen。`,"engine.inspector.view.gatedRequired.remedyUnrequire":`在对象“{object}”上把“{fieldLabel}”改为非必填。`,"engine.inspector.view.cf.title":`条件格式化`,"engine.inspector.view.cf.add":`添加规则`,"engine.inspector.view.cf.empty":`暂无规则。添加一条以按 CEL 条件为行着色。`,"engine.inspector.view.cf.rule":`规则`,"engine.inspector.view.cf.when":`条件(CEL)`,"engine.inspector.view.cf.background":`背景色`,"engine.inspector.view.cf.text":`文字色`,"engine.inspector.view.cf.border":`边框色`,"engine.inspector.view.cf.preview":`预览`,"engine.inspector.view.cf.remove":`删除规则`,"engine.inspector.view.cf.moveUp":`上移`,"engine.inspector.view.cf.moveDown":`下移`,"engine.condition.celLabel":`CEL 表达式`,"engine.condition.advancedHint":`高级表达式 —— 搭建器仅支持简单的 AND/OR 条件。`,"engine.inspector.condition.builder":`搭建器`,"engine.inspector.condition.expression":`表达式`,"engine.inspector.condition.always":`始终生效 —— 无条件。`,"engine.inspector.condition.and":`且`,"engine.inspector.condition.or":`或`,"engine.inspector.condition.subjectPlaceholder":`字段 / 上下文`,"engine.inspector.condition.remove":`移除条件`,"engine.inspector.condition.valuePlaceholder":`值`,"engine.inspector.condition.add":`添加条件`,"engine.inspector.condition.op.equals":`等于`,"engine.inspector.condition.op.notEquals":`不等于`,"engine.inspector.condition.op.greaterThan":`大于`,"engine.inspector.condition.op.lessThan":`小于`,"engine.inspector.condition.op.truthy":`已设置 / 为真`,"engine.inspector.condition.op.falsy":`为空 / 为假`,"engine.inspector.condition.op.atLeast":`至少`,"engine.inspector.condition.op.atMost":`至多`,"engine.inspector.condition.op.contains":`包含`,"engine.inspector.condition.op.inAnyOf":`属于(任一)`,"engine.inspector.condition.op.notIn":`不属于`,"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.visibleWhen":`显示条件(CEL)`,"engine.inspector.pageBlock.properties":`属性`,"engine.inspector.pageBlock.advanced":`高级属性`,"engine.inspector.pageBlock.remove":`删除区块`,"engine.inspector.pageBlock.outlineLabel":`区块`,"engine.inspector.pageBlock.list.add":`添加`,"engine.inspector.pageBlock.list.remove":`删除`,"engine.inspector.pageBlock.list.removeItem":`删除项`,"engine.inspector.pageBlock.objectPlaceholder":`snake_case 对象名`,"engine.inspector.pageBlock.fieldPlaceholder":`字段名`,"engine.inspector.pageBlock.field.object-grid.objectName":`对象`,"engine.inspector.pageBlock.field.object-grid.columns":`列`,"engine.inspector.pageBlock.field.object-grid.pageSize":`每页条数`,"engine.inspector.pageBlock.field.object-form.objectName":`对象`,"engine.inspector.pageBlock.field.object-form.mode":`模式`,"engine.inspector.pageBlock.option.mode.create":`新建`,"engine.inspector.pageBlock.option.mode.edit":`编辑`,"engine.inspector.pageBlock.option.mode.view":`查看`,"engine.inspector.pageBlock.field.object-form.formType":`表单类型`,"engine.inspector.pageBlock.option.formType.simple":`简单`,"engine.inspector.pageBlock.option.formType.tabbed":`标签页`,"engine.inspector.pageBlock.option.formType.wizard":`向导`,"engine.inspector.pageBlock.option.formType.split":`分栏`,"engine.inspector.pageBlock.option.formType.drawer":`抽屉`,"engine.inspector.pageBlock.option.formType.modal":`弹窗`,"engine.inspector.pageBlock.field.object-form.layout":`布局`,"engine.inspector.pageBlock.option.layout.vertical":`纵向`,"engine.inspector.pageBlock.option.layout.horizontal":`横向`,"engine.inspector.pageBlock.field.object-form.columns":`列数(网格布局)`,"engine.inspector.pageBlock.field.object-form.fields":`字段`,"engine.inspector.pageBlock.field.object-form.title":`标题`,"engine.inspector.pageBlock.field.object-form.description":`描述`,"engine.inspector.pageBlock.field.object-metric.objectName":`对象`,"engine.inspector.pageBlock.field.object-metric.label":`标签`,"engine.inspector.pageBlock.field.object-metric.description":`描述`,"engine.inspector.pageBlock.field.object-metric.icon":`图标`,"engine.inspector.pageBlock.placeholder.object-metric.icon":`lucide 图标名`,"engine.inspector.pageBlock.field.object-metric.colorVariant":`颜色`,"engine.inspector.pageBlock.option.colorVariant.default":`默认`,"engine.inspector.pageBlock.option.colorVariant.blue":`蓝色`,"engine.inspector.pageBlock.option.colorVariant.teal":`青色`,"engine.inspector.pageBlock.option.colorVariant.orange":`橙色`,"engine.inspector.pageBlock.option.colorVariant.purple":`紫色`,"engine.inspector.pageBlock.option.colorVariant.success":`成功`,"engine.inspector.pageBlock.option.colorVariant.warning":`警告`,"engine.inspector.pageBlock.option.colorVariant.danger":`危险`,"engine.inspector.pageBlock.field.object-metric.format":`格式`,"engine.inspector.pageBlock.option.format.number":`数字`,"engine.inspector.pageBlock.option.format.currency":`货币`,"engine.inspector.pageBlock.option.format.percent":`百分比`,"engine.inspector.pageBlock.field.object-metric.prefix":`前缀`,"engine.inspector.pageBlock.field.object-metric.suffix":`后缀`,"engine.inspector.pageBlock.field.object-kanban.objectName":`对象`,"engine.inspector.pageBlock.field.object-kanban.groupBy":`分组字段`,"engine.inspector.pageBlock.field.object-kanban.titleField":`标题字段`,"engine.inspector.pageBlock.field.object-kanban.cardFields":`卡片字段`,"engine.inspector.pageBlock.field.object-kanban.limit":`条数上限`,"engine.inspector.pageBlock.field.grid.columns":`列数`,"engine.inspector.pageBlock.field.grid.gap":`间距`,"engine.inspector.pageBlock.field.element:text.content":`内容`,"engine.inspector.pageBlock.placeholder.element:text.content":`文本…`,"engine.inspector.pageBlock.field.element:text.variant":`样式`,"engine.inspector.pageBlock.option.variant.h1":`标题 1`,"engine.inspector.pageBlock.option.variant.h2":`标题 2`,"engine.inspector.pageBlock.option.variant.h3":`标题 3`,"engine.inspector.pageBlock.option.variant.h4":`标题 4`,"engine.inspector.pageBlock.option.variant.h5":`标题 5`,"engine.inspector.pageBlock.option.variant.h6":`标题 6`,"engine.inspector.pageBlock.option.variant.body":`正文`,"engine.inspector.pageBlock.option.variant.caption":`说明文字`,"engine.inspector.pageBlock.option.variant.overline":`眉题`,"engine.inspector.pageBlock.field.element:text.align":`对齐`,"engine.inspector.pageBlock.option.align.left":`左对齐`,"engine.inspector.pageBlock.option.align.center":`居中`,"engine.inspector.pageBlock.option.align.right":`右对齐`,"engine.inspector.pageBlock.field.element:image.src":`图片地址`,"engine.inspector.pageBlock.field.element:image.alt":`替代文本`,"engine.inspector.pageBlock.field.element:image.fit":`填充方式`,"engine.inspector.pageBlock.option.fit.cover":`覆盖`,"engine.inspector.pageBlock.option.fit.contain":`包含`,"engine.inspector.pageBlock.option.fit.fill":`拉伸`,"engine.inspector.pageBlock.field.element:definition-list.items":`条目`,"engine.inspector.pageBlock.add.element:definition-list.items":`添加条目`,"engine.inspector.pageBlock.field.element:definition-list.items.term":`术语`,"engine.inspector.pageBlock.field.element:definition-list.items.description":`描述`,"engine.inspector.pageBlock.field.element:definition-list.columns":`列数(1 或 2)`,"engine.inspector.pageBlock.field.element:definition-list.inline":`行内(术语 · 描述)`,"engine.inspector.pageBlock.field.element:repeater.object":`对象`,"engine.inspector.pageBlock.field.element:repeater.titleField":`标题字段`,"engine.inspector.pageBlock.field.element:repeater.fields":`字段`,"engine.inspector.pageBlock.field.element:repeater.limit":`条数上限`,"engine.inspector.pageBlock.field.element:repeater.emptyText":`空数据提示`,"engine.inspector.pageBlock.field.element:repeater.divided":`行间分隔线`,"engine.inspector.pageBlock.field.element:number.object":`对象`,"engine.inspector.pageBlock.field.element:number.field":`字段`,"engine.inspector.pageBlock.field.element:number.aggregate":`聚合方式`,"engine.inspector.pageBlock.option.aggregate.count":`计数`,"engine.inspector.pageBlock.option.aggregate.sum":`求和`,"engine.inspector.pageBlock.option.aggregate.avg":`平均值`,"engine.inspector.pageBlock.option.aggregate.min":`最小值`,"engine.inspector.pageBlock.option.aggregate.max":`最大值`,"engine.inspector.pageBlock.field.element:number.format":`格式`,"engine.inspector.pageBlock.field.element:number.prefix":`前缀`,"engine.inspector.pageBlock.field.element:number.suffix":`后缀`,"engine.inspector.pageBlock.field.element:button.label":`按钮文字`,"engine.inspector.pageBlock.field.element:button.variant":`样式`,"engine.inspector.pageBlock.option.variant.primary":`主要`,"engine.inspector.pageBlock.option.variant.secondary":`次要`,"engine.inspector.pageBlock.option.variant.danger":`危险`,"engine.inspector.pageBlock.option.variant.ghost":`幽灵`,"engine.inspector.pageBlock.option.variant.link":`链接`,"engine.inspector.pageBlock.field.element:button.size":`尺寸`,"engine.inspector.pageBlock.option.size.small":`小`,"engine.inspector.pageBlock.option.size.medium":`中`,"engine.inspector.pageBlock.option.size.large":`大`,"engine.inspector.pageBlock.field.element:button.icon":`图标`,"engine.inspector.pageBlock.placeholder.element:button.icon":`lucide 图标名`,"engine.inspector.pageBlock.field.element:button.action":`动作`,"engine.inspector.pageBlock.field.page:header.title":`标题`,"engine.inspector.pageBlock.field.page:header.subtitle":`副标题`,"engine.inspector.pageBlock.field.page:card.title":`标题`,"engine.inspector.pageBlock.field.page:card.bordered":`显示边框`,"engine.inspector.pageBlock.field.page:tabs.items":`标签页`,"engine.inspector.pageBlock.add.page:tabs.items":`添加标签页`,"engine.inspector.pageBlock.field.page:tabs.items.value":`值`,"engine.inspector.pageBlock.field.page:tabs.items.label":`标签`,"engine.inspector.pageBlock.field.page:accordion.items":`分区`,"engine.inspector.pageBlock.add.page:accordion.items":`添加分区`,"engine.inspector.pageBlock.field.page:accordion.items.label":`标签`,"engine.inspector.pageBlock.field.record:related_list.objectName":`对象`,"engine.inspector.pageBlock.field.record:related_list.relationshipField":`关联字段`,"engine.inspector.pageBlock.field.record:related_list.title":`标题`,"engine.inspector.pageBlock.field.record:related_list.limit":`条数上限`,"engine.inspector.pageBlock.field.record:highlights.fields":`字段`,"engine.inspector.pageBlock.field.record:details.sections":`分区`,"engine.inspector.pageBlock.add.record:details.sections":`添加分区`,"engine.inspector.pageBlock.field.record:details.sections.name":`名称(i18n 键)`,"engine.inspector.pageBlock.placeholder.record:details.sections.name":`snake_case,例如:contact_info`,"engine.inspector.pageBlock.field.record:details.sections.label":`标签`,"engine.inspector.pageBlock.field.record:details.sections.columns":`列数`,"engine.inspector.pageBlock.field.record:details.sections.fields":`字段`,"engine.inspector.pageBlock.field.record:alert.severity":`严重度`,"engine.inspector.pageBlock.option.severity.info":`信息`,"engine.inspector.pageBlock.option.severity.warning":`警告`,"engine.inspector.pageBlock.option.severity.error":`错误`,"engine.inspector.pageBlock.option.severity.success":`成功`,"engine.inspector.pageBlock.field.record:alert.title":`标题`,"engine.inspector.pageBlock.field.record:alert.body":`正文`,"engine.inspector.pageBlock.field.record:alert.icon":`图标`,"engine.inspector.pageBlock.placeholder.record:alert.icon":`lucide 图标名`,"engine.inspector.pageBlock.field.record:alert.dismissible":`可关闭`,"engine.inspector.pageBlock.field.record:path.statusField":`状态字段`,"engine.inspector.pageBlock.field.record:path.stages":`阶段`,"engine.inspector.pageBlock.add.record:path.stages":`添加阶段`,"engine.inspector.pageBlock.field.record:path.stages.value":`值`,"engine.inspector.pageBlock.field.record:path.stages.label":`标签`,"engine.inspector.pageBlock.field.record:quick_actions.actionNames":`动作名称`,"engine.inspector.pageBlock.placeholder.record:quick_actions.actionNames":`动作名称`,"engine.inspector.pageBlock.field.record:quick_actions.location":`位置`,"engine.inspector.pageBlock.option.location.record_header":`记录头部`,"engine.inspector.pageBlock.option.location.record_more":`记录更多菜单`,"engine.inspector.pageBlock.option.location.record_section":`记录分区`,"engine.inspector.pageBlock.option.location.record_related":`记录关联列表`,"engine.inspector.pageBlock.option.location.list_toolbar":`列表工具栏`,"engine.inspector.pageBlock.option.location.list_item":`列表行`,"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.hook.bodyLang.expression":`表达式(L1)`,"engine.inspector.hook.bodyLang.js":`沙箱 JS(L2)`,"engine.inspector.hook.basics":`基本信息`,"engine.inspector.hook.label":`显示名`,"engine.inspector.hook.labelPlaceholder":`便于阅读的名称`,"engine.inspector.hook.name":`名称`,"engine.inspector.hook.namePlaceholder":`snake_case 标识符`,"engine.inspector.hook.objects":`此钩子触发的对象`,"engine.inspector.hook.allObjects":`所有对象(*)`,"engine.inspector.hook.noObjects":`未找到对象 —— 请先发布一个对象,再在此处选择。`,"engine.inspector.hook.pickObject":`请至少选择一个对象(或「所有对象」)。`,"engine.inspector.hook.events":`事件`,"engine.inspector.hook.eventsHint":`哪些生命周期事件会调用此钩子。`,"engine.inspector.hook.eventsWrite":`写入`,"engine.inspector.hook.eventsQuery":`查询`,"engine.inspector.hook.pickEvent":`请至少选择一个事件。`,"engine.inspector.hook.function":`函数`,"engine.inspector.hook.functionHint":`钩子触发时运行的处理函数。`,"engine.inspector.hook.language":`语言`,"engine.inspector.hook.handlerBody":`处理函数主体`,"engine.inspector.hook.bodyHint.expression":`针对 record / ctx 求值的单个 L1 表达式。`,"engine.inspector.hook.bodyHint.js":`在沙箱中以 (ctx) => Promise<void> 的形式运行。`,"engine.inspector.hook.options":`选项`,"engine.inspector.hook.priority":`优先级`,"engine.inspector.hook.async":`异步运行(提交之后)`,"engine.inspector.hook.condition":`仅在以下条件成立时运行(可选 CEL)`,"engine.inspector.hook.moreFieldsHint":`高级 / 不常用的属性。`,"engine.inspector.action.type.script":`脚本 —— 运行表达式 / 沙箱 JS`,"engine.inspector.action.type.api":`API —— 调用端点`,"engine.inspector.action.type.flow":`流程 —— 调用流程`,"engine.inspector.action.type.modal":`弹窗 —— 打开弹窗 / 页面`,"engine.inspector.action.type.form":`表单 —— 打开表单视图`,"engine.inspector.action.type.url":`URL —— 跳转到链接`,"engine.inspector.action.variant.primary":`主要`,"engine.inspector.action.variant.secondary":`次要`,"engine.inspector.action.variant.danger":`危险`,"engine.inspector.action.variant.ghost":`幽灵`,"engine.inspector.action.variant.link":`链接`,"engine.inspector.action.component.button":`按钮`,"engine.inspector.action.component.icon":`仅图标`,"engine.inspector.action.component.menu":`菜单项`,"engine.inspector.action.component.group":`按钮组`,"engine.inspector.action.mode.create":`新建`,"engine.inspector.action.mode.edit":`编辑`,"engine.inspector.action.mode.delete":`删除`,"engine.inspector.action.mode.custom":`自定义`,"engine.inspector.action.bodyLang.expression":`表达式(L1)`,"engine.inspector.action.bodyLang.js":`沙箱 JS(L2)`,"engine.inspector.action.paramType.text":`单行文本`,"engine.inspector.action.paramType.textarea":`多行文本`,"engine.inspector.action.paramType.number":`数字`,"engine.inspector.action.paramType.boolean":`复选框`,"engine.inspector.action.paramType.select":`下拉选择`,"engine.inspector.action.paramType.date":`日期`,"engine.inspector.action.paramType.datetime":`日期时间`,"engine.inspector.action.paramType.lookup":`查找关系`,"engine.inspector.action.location.record_header":`记录头部`,"engine.inspector.action.location.record_more":`记录 · 更多菜单`,"engine.inspector.action.location.record_section":`记录 · 分区`,"engine.inspector.action.location.record_related":`记录 · 关联列表`,"engine.inspector.action.location.list_toolbar":`列表工具栏`,"engine.inspector.action.location.list_item":`列表 · 行`,"engine.inspector.action.target.url.label":`URL 地址`,"engine.inspector.action.target.url.placeholder":"https://… 或 /path?x=${param.x}","engine.inspector.action.target.url.hint":"支持 ${param.x} 与 ${ctx.x} 插值。","engine.inspector.action.target.flow.label":`流程名称`,"engine.inspector.action.target.flow.placeholder":`snake_case 流程名`,"engine.inspector.action.target.flow.hint":`点击时调用的流程。`,"engine.inspector.action.target.modal.label":`弹窗 / 页面名称`,"engine.inspector.action.target.modal.placeholder":`snake_case 页面名`,"engine.inspector.action.target.modal.hint":`要打开的弹窗或页面。`,"engine.inspector.action.target.form.label":`表单视图名称`,"engine.inspector.action.target.form.hint":`打开 /console/forms/<name>。`,"engine.inspector.action.target.api.label":`API 端点`,"engine.inspector.action.target.api.hint":`使用下方请求体调用的端点。`,"engine.inspector.action.scriptOp.run":`运行脚本 —— 沙箱 JS / 表达式主体`,"engine.inspector.action.scriptOp.update":`更新此记录的字段 —— 无需代码`,"engine.inspector.action.objectPlaceholder":`snake_case 对象名`,"engine.inspector.action.objectNone":`— 无(全局)—`,"engine.inspector.action.options":`选项`,"engine.inspector.action.optionsEmpty":`还没有选项 —— 没有选项的下拉选择会在对话框中打开一个空的选择器。`,"engine.inspector.action.optionLabel":`显示名`,"engine.inspector.action.optionValue":`值`,"engine.inspector.action.removeOption":`移除选项 {index}`,"engine.inspector.action.addOption":`添加选项`,"engine.inspector.action.basics":`基本信息`,"engine.inspector.action.label":`显示名`,"engine.inspector.action.labelPlaceholder":`向用户显示的按钮文字`,"engine.inspector.action.name":`名称`,"engine.inspector.action.namePlaceholder":`snake_case 标识符`,"engine.inspector.action.object":`对象`,"engine.inspector.action.objectBoundHint":`绑定动作 —— 按下方的放置位置出现在此对象的视图中。`,"engine.inspector.action.objectGlobalHint":`留空 = 全局动作 —— 须被页面的快捷动作、全局导航、流程或 AI 引用后才会出现。`,"engine.inspector.action.icon":`图标`,"engine.inspector.action.variant":`样式`,"engine.inspector.action.behavior":`行为`,"engine.inspector.action.behaviorHint":`动作被触发时会发生什么。`,"engine.inspector.action.type":`类型`,"engine.inspector.action.pinnedScript":`已固定为 {script}:字段写入在平台动作路由上执行,而这正是该类型自己的路由。与它并存时,其他任何类型都会被拒绝。`,"engine.inspector.action.whatItDoes":`作用`,"engine.inspector.action.fieldValues":`字段值`,"engine.inspector.action.fieldValuesEmpty":`还没有字段值 —— 添加一个,或在下方把该值作为输入项收集。`,"engine.inspector.action.fieldValueField":`字段`,"engine.inspector.action.fieldValueValue":`值`,"engine.inspector.action.removeFieldValue":`移除字段值`,"engine.inspector.action.addFieldValue":`添加字段值`,"engine.inspector.action.updateHint":`以调用者身份写入当前记录 —— 对象权限、钩子与校验会像用户编辑时一样触发。下方收集的同名输入项会覆盖此处的固定值。`,"engine.inspector.action.scriptLanguage":`脚本语言`,"engine.inspector.action.scriptBody":`脚本主体`,"engine.inspector.action.scriptBodyHint":`在沙箱中以 {signature} 的形式运行。`,"engine.inspector.action.method":`请求方法`,"engine.inspector.action.inputs":`输入项`,"engine.inspector.action.inputsHint":`在动作运行前通过对话框向用户收集。`,"engine.inspector.action.inputsEmpty":`没有输入项 —— 点击后立即运行动作。`,"engine.inspector.action.removeInput":`移除输入项`,"engine.inspector.action.bindToField":`绑定到字段`,"engine.inspector.action.paramName":`名称`,"engine.inspector.action.paramNamePlaceholder":`请求体键名`,"engine.inspector.action.paramLabel":`显示名`,"engine.inspector.action.paramTypeLabel":`类型`,"engine.inspector.action.paramPlaceholder":`占位符`,"engine.inspector.action.paramRequired":`必填`,"engine.inspector.action.paramPrefill":`从行预填`,"engine.inspector.action.addInput":`添加输入项`,"engine.inspector.action.placement":`放置位置`,"engine.inspector.action.placementHint":`此动作在界面中出现的位置。`,"engine.inspector.action.noPlacement":`未选择放置位置 —— 此动作不会出现在任何记录或列表界面上。请在上方勾选一个放置位置,或通过视图的批量动作放置它。`,"engine.inspector.action.capabilityGate":`受权限 {capabilities} 控制 —— 对于不具备{whom}的任何人,上方勾选的每个放置位置都会隐藏此动作。这不是置灰,也不是错误:按钮只是不出现,而且无论如何服务器都会以 403 拒绝调用。`,"engine.inspector.action.capabilityGateAll":`全部这些权限`,"engine.inspector.action.capabilityGateOne":`该权限`,"engine.inspector.action.capabilityGateSelf":`当前会话不具备 {capabilities},因此该按钮对你同样隐藏 —— 通过权限集授予后,即可在应用中看到它。`,"engine.inspector.action.component":`组件`,"engine.inspector.action.feedback":`反馈`,"engine.inspector.action.feedbackHint":`确认提示与运行后的消息。`,"engine.inspector.action.confirmText":`确认提示`,"engine.inspector.action.confirmTextPlaceholder":`运行前询问(留空则跳过)`,"engine.inspector.action.successMessage":`成功消息`,"engine.inspector.action.errorMessage":`错误消息`,"engine.inspector.action.mode":`模式`,"engine.inspector.action.refreshAfter":`完成后刷新视图`,"engine.inspector.action.undoable":`提供撤销`,"engine.inspector.action.conditions":`条件`,"engine.inspector.action.conditionsHint":`基于 record / user / ctx 的无代码判断条件(编译为 CEL)。`,"engine.inspector.action.visibleWhen":`可见条件`,"engine.inspector.action.disabledWhen":`禁用条件`,"engine.inspector.action.ai":`AI 开放`,"engine.inspector.action.aiHint":`可选:将此动作作为可调用工具开放给 AI 智能体。`,"engine.inspector.action.aiExposed":`开放给 AI 智能体`,"engine.inspector.action.aiDescription":`工具描述(必填,≥40 个字符)`,"engine.inspector.action.aiDescriptionPlaceholder":`智能体应在何时、出于何种目的调用此动作…`,"engine.inspector.action.aiDescriptionTooShort":`开放期间必须提供至少 40 个字符的描述。`,"engine.inspector.action.moreFieldsHint":`高级 / 不常用的属性。`,"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.dataset.kind":`数据集`,"engine.inspector.dataset.aggregate.count":`计数`,"engine.inspector.dataset.aggregate.sum":`求和`,"engine.inspector.dataset.aggregate.avg":`平均值`,"engine.inspector.dataset.aggregate.min":`最小值`,"engine.inspector.dataset.aggregate.max":`最大值`,"engine.inspector.dataset.aggregate.count_distinct":`去重计数`,"engine.inspector.dataset.dimType.string":`字符串`,"engine.inspector.dataset.dimType.number":`数字`,"engine.inspector.dataset.dimType.date":`日期`,"engine.inspector.dataset.dimType.boolean":`布尔值`,"engine.inspector.dataset.dimType.lookup":`查找关系`,"engine.inspector.dataset.granularity.none":`— 无 —`,"engine.inspector.dataset.granularity.day":`日`,"engine.inspector.dataset.granularity.week":`周`,"engine.inspector.dataset.granularity.month":`月`,"engine.inspector.dataset.granularity.quarter":`季度`,"engine.inspector.dataset.granularity.year":`年`,"engine.inspector.dataset.derivedOp.ratio":`比率(a ÷ b)`,"engine.inspector.dataset.derivedOp.sum":`求和(a + b)`,"engine.inspector.dataset.derivedOp.difference":`差值(a − b)`,"engine.inspector.dataset.derivedOp.product":`乘积(a × b)`,"engine.inspector.dataset.formatKind.raw":`原始数值`,"engine.inspector.dataset.formatKind.number":`数字 —— 1,234.5`,"engine.inspector.dataset.formatKind.currency":`货币 —— $1,234.50`,"engine.inspector.dataset.formatKind.percent":`百分比 —— 12.3%`,"engine.inspector.dataset.usage.bound":`已被 {reports} · {dashboards} 绑定 —— 修改会影响它们。`,"engine.inspector.dataset.usage.reportsOne":`{count} 个报表`,"engine.inspector.dataset.usage.reportsOther":`{count} 个报表`,"engine.inspector.dataset.usage.dashboardsOne":`{count} 个仪表盘`,"engine.inspector.dataset.usage.dashboardsOther":`{count} 个仪表盘`,"engine.inspector.dataset.usage.unbound":`尚未被任何报表或仪表盘绑定。`,"engine.inspector.dataset.name":`名称`,"engine.inspector.dataset.namePlaceholder":`snake_case 标识符`,"engine.inspector.dataset.label":`显示名`,"engine.inspector.dataset.description":`描述`,"engine.inspector.dataset.baseObject":`基础对象`,"engine.inspector.dataset.baseObjectPlaceholder":`选择对象…`,"engine.inspector.dataset.searchObjects":`搜索对象…`,"engine.inspector.dataset.baseObjectChangeHint":`更改基础对象会清空其维度、度量、关联与筛选。`,"engine.inspector.dataset.includedRelationships":`包含的关联`,"engine.inspector.dataset.noJoins":`暂无关联。添加一个关联({object} 上的查找字段),即可使用 {path} 形式的维度 / 度量。`,"engine.inspector.dataset.baseObjectFallback":`基础对象`,"engine.inspector.dataset.includedRelationship":`包含的关联`,"engine.inspector.dataset.relationshipPlaceholder":`选择关联…`,"engine.inspector.dataset.searchRelationships":`搜索关联…`,"engine.inspector.dataset.removeRelationship":`移除关联`,"engine.inspector.dataset.scopeFilter":`范围筛选`,"engine.inspector.dataset.scopeFilterHelp":`固有范围,以 AND 并入每一次查询(例如排除已软删除的记录)。`,"engine.inspector.dataset.dimensions":`维度`,"engine.inspector.dataset.addDimension":`添加维度`,"engine.inspector.dataset.dimensionN":`维度 {index}`,"engine.inspector.dataset.removeDimension":`移除维度`,"engine.inspector.dataset.dimensionNamePlaceholder":`例如:region`,"engine.inspector.dataset.field":`字段`,"engine.inspector.dataset.dimensionFieldPlaceholder":`字段 或 关联.字段`,"engine.inspector.dataset.type":`类型`,"engine.inspector.dataset.labelOptional":`显示名(可选)`,"engine.inspector.dataset.displayLabel":`显示名`,"engine.inspector.dataset.dateBucket":`日期分桶`,"engine.inspector.dataset.measures":`度量`,"engine.inspector.dataset.addMeasure":`添加度量`,"engine.inspector.dataset.measureN":`度量 {index}`,"engine.inspector.dataset.removeMeasure":`移除度量`,"engine.inspector.dataset.measureNamePlaceholder":`例如:revenue`,"engine.inspector.dataset.aggregate":`聚合方式`,"engine.inspector.dataset.measureFieldPlaceholder":`字段(count 时可选)`,"engine.inspector.dataset.measureFilter":`筛选(度量级)`,"engine.inspector.dataset.measureFilterHelp":`只有满足此筛选的行才计入该度量(例如 won_amount = sum(amount) where stage = won)。`,"engine.inspector.dataset.derived":`派生 —— 由其他度量计算`,"engine.inspector.dataset.operation":`运算`,"engine.inspector.dataset.operands":`操作数(其他度量)`,"engine.inspector.dataset.derivedNeedTwo":`{op} 需要恰好选择 2 个度量。`,"engine.inspector.dataset.derivedNeedOne":`{op} 至少需要选择 1 个度量。`,"engine.inspector.dataset.addOtherMeasuresFirst":`请先添加其他度量。`,"engine.inspector.dataset.advanced":`高级`,"engine.inspector.dataset.displayFormat":`显示格式`,"engine.inspector.dataset.decimals":`小数位数`,"engine.inspector.dataset.currency":`货币`,"engine.inspector.dataset.sample":`示例:{sample}`,"engine.inspector.dataset.relWarning":`关联 {rel} 不在「包含的关联」中。`,"engine.inspector.dataset.relWarningAdd":`添加它`,"engine.inspector.dataset.filterAdvanced":`高级筛选(嵌套 / OR)—— 请在「{source}」标签页中编辑。`,"engine.inspector.dataset.sourceTab":`源码`,"engine.inspector.dataset.filterConditionsOne":`{count} 个条件`,"engine.inspector.dataset.filterConditionsOther":`{count} 个条件`,"engine.inspector.dataset.addFilter":`+ 添加筛选…`,"engine.inspector.dataset.filterNeedsObject":`先选择基础对象,才能添加筛选条件。`,"engine.inspector.reference.pickFromRecords":`从记录中选择`,"engine.inspector.reference.enterManually":`手动输入值`,"engine.inspector.reference.managerPlaceholder":`自动解析`,"engine.inspector.reference.managerHint":`运行时根据提交人的上级自动解析 —— 无需填写。`,"engine.inspector.reference.queueUnsupported":`运行时暂不支持队列审批人 —— 该位置不会解析到任何人。`,"engine.inspector.reference.fieldsOf":`{object} 的字段。`,"engine.inspector.reference.setTriggerObject":`请先在开始节点上设置流程的触发对象,才能列出字段。`,"engine.inspector.reference.actionsOf":`{connector} 的动作。`,"engine.inspector.reference.chooseConnector":`请先在上方选择连接器,才能列出其动作。`,"engine.inspector.reference.declarative":`声明式`,"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.flowPalette.search":`搜索节点…`,"engine.flowPalette.empty":`没有匹配的节点。`,"engine.flowPalette.recent":`最近使用`,"engine.flowPalette.category.data":`数据`,"engine.flowPalette.category.logic":`逻辑`,"engine.flowPalette.category.human":`人工`,"engine.flowPalette.category.integration":`集成`,"engine.flowPalette.category.flow":`流程`,"engine.flowNode.start.label":`开始`,"engine.flowNode.create_record.label":`创建记录`,"engine.flowNode.create_record.hint":`向对象中插入一条新记录`,"engine.flowNode.http_request.label":`HTTP 请求`,"engine.flowNode.map.label":`逐项映射`,"engine.flowNode.map.hint":`对集合逐项运行子流程(可暂停)`,"engine.flowNode.update_record.label":`更新记录`,"engine.flowNode.update_record.hint":`更新匹配条件的记录`,"engine.flowNode.get_record.label":`查询记录`,"engine.flowNode.get_record.hint":`从对象中查询记录`,"engine.flowNode.delete_record.label":`删除记录`,"engine.flowNode.delete_record.hint":`删除匹配条件的记录`,"engine.flowNode.decision.label":`条件分支`,"engine.flowNode.decision.hint":`根据条件分支执行`,"engine.flowNode.loop.label":`循环`,"engine.flowNode.loop.hint":`遍历集合`,"engine.flowNode.assignment.label":`设置变量`,"engine.flowNode.assignment.hint":`为流程变量赋值`,"engine.flowNode.parallel.label":`并行`,"engine.flowNode.parallel.hint":`并发执行多个分支,结束时汇合`,"engine.flowNode.try_catch.label":`异常捕获`,"engine.flowNode.try_catch.hint":`用错误处理与重试保护步骤`,"engine.flowNode.approval.label":`审批`,"engine.flowNode.approval.hint":`暂停等待人工决策`,"engine.flowNode.approval_revise.label":`修订窗口`,"engine.flowNode.approval_revise.hint":`审批退回后暂停,等待提交人重新提交`,"engine.flowNode.screen.label":`交互页面`,"engine.flowNode.screen.hint":`收集用户输入`,"engine.flowNode.http.label":`HTTP 请求`,"engine.flowNode.http.hint":`调用外部 API`,"engine.flowNode.connector_action.label":`连接器`,"engine.flowNode.connector_action.hint":`执行集成动作`,"engine.flowNode.notify.label":`通知`,"engine.flowNode.notify.hint":`向用户发送外发通知`,"engine.flowNode.script.label":`脚本`,"engine.flowNode.script.hint":`运行自定义代码`,"engine.flowNode.subflow.label":`子流程`,"engine.flowNode.subflow.hint":`调用其他流程`,"engine.flowNode.wait.label":`等待`,"engine.flowNode.wait.hint":`等待事件或定时器`,"engine.flowNode.end.label":`结束`,"engine.flowNode.end.hint":`终止流程`,"engine.flowCanvas.zoomOut":`缩小`,"engine.flowCanvas.zoomIn":`放大`,"engine.flowCanvas.fit":`适应视图`,"engine.flowCanvas.canvas":`流程画布`,"engine.flowCanvas.reveal":`在画布中定位`,"engine.flowCanvas.moreErrors":`还有 {count} 项…`,"engine.flowCanvas.insertNode":`在此处插入节点`,"engine.flowCanvas.addConnected":`添加后继节点`,"engine.flowCanvas.addReviseLoop":`添加退回修订环(退回重新修订)`,"engine.flowCanvas.addReviseLoopShort":`添加退回修订环`,"engine.flowCanvas.awaitingRevision":`等待修订`,"engine.flowCanvas.collapseRegions":`折叠嵌套区域`,"engine.flowCanvas.expandRegions":`展开嵌套区域`,"engine.flowCanvas.edge.undeclaredCycle":`{source} → {target} —— 属于未声明的环;请将闭合该环的连线标记为回边`,"engine.flowCanvas.edge.backEdge":`{source} ↩ {target}(回边)`,"engine.flowCanvas.summary.branches":`{count} 个分支`,"engine.flowCanvas.summary.approversOne":`{count} 位审批人`,"engine.flowCanvas.summary.approversOther":`{count} 位审批人`,"engine.flowCanvas.summary.unanimous":`全员`,"engine.flowCanvas.summary.code":`代码`,"engine.flowRegion.branchN":`分支 {n}`,"engine.flowRegion.try":`尝试`,"engine.flowRegion.catch":`捕获`,"engine.flowRegion.body":`循环体`,"engine.flowPreview.emptyHint":`在“表单”标签页中添加节点即可查看流程预览。`,"engine.flowPreview.malformed":`某个流程节点或连线的格式有误。`,"engine.flowPreview.pill.trigger":`触发`,"engine.flowPreview.pill.status":`状态`,"engine.flowPreview.pill.runAs":`运行身份`,"engine.flowPreview.pill.onError":`出错时`,"engine.flowPreview.showVars":`显示变量面板`,"engine.flowPreview.hideVars":`隐藏变量面板`,"engine.flowPreview.variables":`变量`,"engine.flowPreview.noVars":`未声明变量。`,"engine.flowPreview.runsTitle":`来自自动化引擎的运行历史`,"engine.flowPreview.runs":`运行`,"engine.flowPreview.problemsTitle":`校验问题`,"engine.flowPreview.problems":`问题`,"engine.flowPreview.debug":`调试`,"engine.flowPreview.varIn":`输入`,"engine.flowPreview.varOut":`输出`,"engine.flowRuns.title":`运行`,"engine.flowRuns.refresh":`刷新运行历史`,"engine.flowRuns.unavailable":`运行历史不可用 —— 自动化引擎已离线,或此流程尚未发布。`,"engine.flowRuns.empty":`暂无运行记录。`,"engine.flowRuns.noSteps":`未记录步骤日志。`,"engine.flowRuns.iteration":`迭代`,"engine.flowRuns.iterationN":`第 {n} 次迭代`,"engine.flowRuns.branch":`分支`,"engine.flowRuns.branchN":`分支 {n}`,"engine.flowRuns.branchNIterationM":`分支 {n} · 第 {m} 次迭代`,"engine.flowRuns.try":`尝试`,"engine.flowRuns.catch":`捕获`,"engine.flowRuns.status.completed":`已完成`,"engine.flowRuns.status.failed":`失败`,"engine.flowRuns.status.paused":`已暂停`,"engine.flowRuns.status.running":`运行中`,"engine.flowRuns.status.cancelled":`已取消`,"engine.flowRuns.runId":`运行 {id}`,"engine.flowRuns.trigger":`触发 {type}`,"engine.flowSim.run":`运行`,"engine.flowSim.step":`单步`,"engine.flowSim.continue":`继续`,"engine.flowSim.reset":`重置`,"engine.flowSim.add":`添加`,"engine.flowSim.resumeBranch":`沿“{branch}”分支继续`,"engine.flowSim.screen":`交互页面`,"engine.flowSim.inputs":`输入`,"engine.flowSim.setVariables":`设置变量`,"engine.flowSim.setVariablesHint":`覆盖或注入任意变量(启动时优先于输入与模拟值)。`,"engine.flowSim.mockOutputs":`模拟输出`,"engine.flowSim.mockPlaceholder":`模拟结果(JSON)`,"engine.flowSim.variables":`变量`,"engine.flowSim.noVars":`未设置变量。`,"engine.flowSim.timeline":`时间线`,"engine.flowSim.namePlaceholder":`名称`,"engine.flowSim.valuePlaceholder":`值`,"engine.flowSim.removeVariable":`删除变量`,"engine.flowSim.idleHint":`点击“运行”进行模拟,或用“单步”逐节点执行。副作用均为模拟 —— 不会调用后端。`,"engine.flowSim.status.idle":`空闲`,"engine.flowSim.status.running":`运行中`,"engine.flowSim.status.paused":`已暂停`,"engine.flowSim.status.done":`完成`,"engine.flowSim.status.error":`错误`,"engine.flowSim.stepStatus.ok":`正常`,"engine.flowSim.stepStatus.mocked":`已模拟`,"engine.flowSim.stepStatus.paused":`已暂停`,"engine.flowSim.stepStatus.skipped":`已跳过`,"engine.flowSim.stepStatus.error":`错误`,"engine.flowSim.edge.error":`错误`,"engine.flowSim.note.stepLimit":`超出步数上限({max}) —— 流程中可能存在死循环。`,"engine.flowSim.note.nodeNotFound":`节点 “{id}” 不存在。`,"engine.flowSim.note.resumed":`已继续。`,"engine.flowSim.note.decisionTaken":`决策:{decision} → {taken}。`,"engine.flowSim.note.decisionNoneTaken":`未走任何出向连线`,"engine.flowSim.note.noDecision":`未提供决策;将考虑所有出向连线。`,"engine.flowSim.note.flowEnd":`已到达流程结束。`,"engine.flowSim.note.unsupported":`模拟器不模拟 “{type}”;按直通处理,不含其真实语义。`,"engine.flowSim.note.parallelSplit":`并行拆分 —— 各分支同时展开(不模拟汇合同步)。`,"engine.flowSim.note.approvalReached":`已到达审批 —— 请选择一个决策以继续。`,"engine.flowSim.note.waitReached":`已到达等待 —— 请手动继续。`,"engine.flowSim.note.screenReached":`已到达交互页面 —— 请填写输入后继续。`,"engine.flowSim.note.screenUnevaluable":`交互页面字段的 visibleWhen 只能引用此页面上声明的字段;该页面无法求值 {fields}。`,"engine.flowSim.note.screenUnevaluableField":`“{name}”({reason})`,"engine.flowSim.note.screenNoInput":`交互页面没有输入 —— 已直接通过(与运行时一致)。`,"engine.flowSim.note.passThrough":`类型 “{type}” 按直通处理。`,"engine.flowSim.note.decisionNoOutEdge":`该条件分支没有出向连线;运行时在此结束该分支。`,"engine.flowSim.note.branchMatched":`分支 “{label}” 已匹配(config.conditions)。`,"engine.flowSim.note.noConditionMatched":`config.conditions 中没有条目匹配;分支为 “{label}”。`,"engine.flowSim.note.noAssignments":`未定义任何赋值。`,"engine.flowSim.note.unmodelledToken":`“{key}” 中的 {token}`,"engine.flowSim.note.unmodelled":`按原样保留,调试运行未模拟:{tokens}。运行时会自行解析 NOW() / TODAY()、$User.* 与算术运算,并在调用它不认识的函数时使该节点失败。`,"engine.flowSim.note.loopSinglePass":`循环按单次执行模拟(不模拟循环体的重复执行)。`,"engine.flowSim.note.loopCollection":`集合 “{ref}” 有 {count} 项;按单次执行模拟。`,"engine.flowSim.note.loopNotArray":`集合 “{ref}” 不是数组;运行时循环可能不会执行。`,"engine.flowSim.note.mockedCall":`已模拟对 “{fn}” 的调用(未执行任何函数)。`,"engine.flowSim.note.retiredAction":`已退役的 “{action}” 动作 —— 它从未投递过任何内容;请改用通知节点(Slack 请用连接器)。`,"engine.flowSim.note.retiredScript":`已退役的内联脚本 —— 运行时从未执行过它;请把逻辑移入已注册的函数。`,"engine.flowSim.note.mocked":`已模拟 {type}(未调用后端)。`,"engine.flowSim.note.noBranchLabel":`没有出向连线带有分支标签 “{label}”,因此会考虑所有出向连线,与运行时一致(运行时会记录一条警告)。`,"engine.flowSim.note.evaluationFailed":`求值失败。`,"engine.flowSim.note.multipleMatched":`有多个条件匹配;已走第一个声明的分支(运行时会走所有匹配的分支,objectstack#15429)。`,"engine.flowSim.note.noEdgeTaken":`未走任何出向连线:没有为真的条件,也没有默认连线。运行时在此结束该分支。`,"engine.flowSim.note.celEvaluationFailed":`CEL 求值失败:{message}`,"engine.flowSim.note.celConditionFailed":`条件无法按 CEL 求值:{message}`,"engine.previewShell.renderFailed":`预览渲染失败`,"engine.screenPreview.header":`预览`,"engine.screenPreview.empty":`添加标题、描述、字段或对象表单,即可预览此交互页面。`,"engine.screenPreview.submit":`提交`,"engine.screenPreview.noDataSource":`连接后端后即可预览此对象表单。`,"engine.screenPreview.hiddenOne":`有 {count} 个字段因其“显示条件”而隐藏。`,"engine.screenPreview.hiddenOther":`有 {count} 个字段因其“显示条件”而隐藏。`,"engine.screenPreview.defaultTemplate":`“{field}”的默认值模板,按原文显示 —— 运行时填入实际值:`,"engine.actionPreview.empty":`设置名称和标签,即可查看操作预览。`,"engine.actionPreview.pill.type":`类型:{type}`,"engine.actionPreview.pill.object":`对象:{object}`,"engine.actionPreview.pill.variant":`样式:{variant}`,"engine.actionPreview.pill.refreshAfter":`执行后刷新`,"engine.actionPreview.pill.aiOptedOut":`AI:不开放`,"engine.actionPreview.pill.aiExposed":`AI:已开放`,"engine.actionPreview.locations":`位置:`,"engine.actionPreview.requires":`需要:`,"engine.actionPreview.visibleWhen":`可见条件`,"engine.actionPreview.disabledWhen":`禁用条件`,"engine.actionPreview.onClick":`点击时`,"engine.actionPreview.firstAsks":`先询问:`,"engine.actionPreview.onSuccess":`成功后:`,"engine.actionPreview.handler.none":`尚未绑定处理程序。`,"engine.actionPreview.handler.url":`跳转到 {target}`,"engine.actionPreview.handler.flow":`运行流程 {target}`,"engine.actionPreview.handler.modal":`打开弹窗 {target}`,"engine.actionPreview.handler.api":`调用 API 端点 {target}`,"engine.actionPreview.handler.form":`打开表单视图 {target}(/console/forms/{path})`,"engine.actionPreview.handler.scriptBody":`运行内联脚本体(L1 表达式或 L2 沙箱 JS)。`,"engine.actionPreview.handler.scriptNamed":`运行具名脚本 {target}`,"engine.actionPreview.handler.invoke":`调用 {target}`,"engine.actionPreview.section.placement":`显示位置`,"engine.actionPreview.capabilityGateNote":`不具备 {capabilities} 的用户看不到它 —— 下方的框架展示的是摆放位置,而不是谁能看到它。`,"engine.actionPreview.section.testRequest":`测试请求`,"engine.actionPreview.section.inputDialog":`输入对话框`,"engine.actionPreview.section.resultDialog":`结果对话框`,"engine.actionPreview.section.scriptBody":`脚本体({language})`,"engine.actionPreview.dialog.ok":`确定`,"engine.actionPreview.param.carryOver":`沿用所选行的值(只读)`,"engine.actionPreview.param.fromRow":`(来自所选行)`,"engine.actionPreview.param.selectPlaceholder":`选择 {label}`,"engine.actionPreview.param.recordIdPlaceholder":`{label} 的记录 ID`,"engine.actionPreview.param.noReference":`未配置 {reference} 对象,因此记录选择器不可用,对话框会改为要求输入记录 ID。`,"engine.actionPreview.param.toggle":`开关`,"engine.actionPreview.param.noChoices":`尚未编写选项 —— 对话框会打开一个空的选择器。`,"engine.actionPreview.param.searchObject":`搜索 {object}…`,"engine.actionPreview.param.searchRecords":`搜索记录…`,"engine.actionPreview.result.title":`结果`,"engine.actionPreview.result.acknowledge":`我已保存`,"engine.actionPreview.result.fullJson":`显示完整的 JSON 响应。`,"engine.actionPreview.placement.sampleRecord":`示例记录`,"engine.actionPreview.placement.recordDetail":`记录详情`,"engine.actionPreview.placement.recordBody":`…记录正文…`,"engine.actionPreview.placement.records":`记录`,"engine.actionPreview.placement.rows":`第 1 行 · 第 2 行 · 第 3 行`,"engine.actionPreview.placement.row":`第 {n} 行`,"engine.actionPreview.placement.section":`分区`,"engine.actionPreview.placement.sectionBody":`…分区内容…`,"engine.actionPreview.placement.more":`更多`,"engine.actionPreview.api.paramsOne":`+ {count} 个由用户在运行时提供的参数`,"engine.actionPreview.api.paramsOther":`+ {count} 个由用户在运行时提供的参数`,"engine.actionPreview.api.liveWarning":`会向在线后端发送真实的 {method} 请求 —— 可能修改数据。`,"engine.actionPreview.api.sending":`发送中…`,"engine.actionPreview.api.send":`发送测试请求`,"engine.actionPreview.api.networkError":`网络错误`,"engine.agentPreview.tryInChat":`在对话中试用`,"engine.agentPreview.tryInChatTitle":`在新对话中打开此智能体的已保存版本`,"engine.agentPreview.empty":`在“表单”标签页中填写标签、角色和指令,即可查看智能体预览。`,"engine.agentPreview.active":`已启用`,"engine.agentPreview.disabled":`已停用`,"engine.agentPreview.temperature":`温度 {value}`,"engine.agentPreview.maxTokens":`上限 {count} token`,"engine.agentPreview.instructions":`指令`,"engine.agentPreview.noInstructions":`尚未设置系统提示词。`,"engine.agentPreview.capabilities":`能力`,"engine.agentPreview.skills":`技能`,"engine.agentPreview.noSkills":`未关联技能 —— 此智能体无法使用任何工具。`,"engine.agentPreview.toolsNote":`工具来自所关联的技能;知识依据在指令中描述。`,"engine.agentPreview.planning":`规划`,"engine.agentPreview.memory":`记忆`,"engine.agentPreview.guardrails":`护栏`,"engine.agentPreview.permissions":`权限`,"engine.agentPreview.defaults":`使用默认设置。`,"engine.agentPreview.noValues":`未设置任何值。`,"engine.skillPreview.empty":`为技能命名,并至少提供一段指令,即可查看预览。`,"engine.skillPreview.active":`已启用`,"engine.skillPreview.disabled":`已停用`,"engine.skillPreview.model":`模型:{model}`,"engine.skillPreview.instructions":`指令`,"engine.skillPreview.noInstructions":`尚无指令 —— 此技能不会向提示词贡献任何内容。`,"engine.skillPreview.tools":`工具({count})`,"engine.skillPreview.noTools":`未加入任何白名单工具。`,"engine.skillPreview.wildcardNote":`通配符在运行时会展开为许多工具 —— 启用前请在智能体中核对匹配到的工具集。`,"engine.skillPreview.triggerConditions":`触发条件({count})`,"engine.skillPreview.col.field":`字段`,"engine.skillPreview.col.operator":`运算符`,"engine.skillPreview.col.value":`值`,"engine.skillPreview.allMustHold":`所有条件都必须成立(AND),技能才会激活。`,"engine.skillPreview.missing":`缺失`,"engine.skillPreview.missingTitle":`SkillTriggerConditionSchema 要求此项 —— 此草稿保存时会被拒绝。`,"engine.toolPreview.openApiConsole":`在 API 控制台中打开`,"engine.toolPreview.openApiConsoleTitle":`打开 API 控制台以测试调用`,"engine.toolPreview.empty":`设置名称、描述和参数,即可查看工具预览。`,"engine.toolPreview.inputParameters":`输入参数`,"engine.toolPreview.noParameters":`此工具不接受输入参数。`,"engine.toolPreview.exampleCall":`LLM 调用示例`,"engine.toolPreview.outputSchema":`输出结构`,"engine.toolPreview.col.name":`名称`,"engine.toolPreview.col.type":`类型`,"engine.toolPreview.col.description":`描述`,"engine.toolPreview.required":`必填`,"engine.toolPreview.enum":`枚举:{values}`,"engine.toolPreview.default":`默认:`,"engine.toolPreview.format":`格式:{format}`,"engine.jobPreview.empty":`设置调度(cron / every / at)和处理程序,即可查看后台任务预览。`,"engine.jobPreview.active":`已启用`,"engine.jobPreview.paused":`已暂停`,"engine.jobPreview.retries":`重试:{count}`,"engine.jobPreview.retriesBackoff":`重试:{count}(退避 {backoff})`,"engine.jobPreview.timeout":`超时:{duration}`,"engine.jobPreview.concurrency":`并发:{count}`,"engine.jobPreview.schedule":`调度`,"engine.jobPreview.every":`间隔`,"engine.jobPreview.at":`时刻`,"engine.jobPreview.unparseable":`无法解析`,"engine.jobPreview.noSchedule":`未设置调度 —— 仅在手动触发时运行。`,"engine.jobPreview.nextRunOne":`接下来 {count} 次运行`,"engine.jobPreview.nextRunOther":`接下来 {count} 次运行`,"engine.jobPreview.noFireTime":`无法推算出任何未来的触发时间。请检查调度语法。`,"engine.jobPreview.noUpcoming":`未来 366 天内没有待运行的计划。`,"engine.jobPreview.inDelta":`{delta} 后`,"engine.jobPreview.inNow":`即刻`,"engine.jobPreview.handler":`处理程序`,"engine.jobPreview.noHandler":`未绑定处理程序 —— 此任务不会执行任何操作。`,"engine.celTest.predicateEmpty":`条件为空。`,"engine.celTest.notObject":`应为 JSON 对象。`,"engine.appPreview.openTitle":`在新标签页中打开此应用`,"engine.appPreview.open":`打开`,"engine.appPreview.homeFirst":`首页:打开第一个导航项`,"engine.appPreview.homeNone":`首页:尚无可生成路由的导航项`,"engine.appPreview.empty":`没有顶层导航项。在“表单”标签页中添加 {navigation} 条目,即可填充应用的导航。`,"engine.appPreview.unnamed":`(未命名)`,"engine.appPreview.noTypeTitle":"每个导航项都需要 `type` 判别字段 —— 此条目将在保存时被拒绝。","engine.appPreview.noType":`无类型`,"engine.appPreview.areas":`区域`,"engine.bookPreview.nameTitle":`为文档书命名`,"engine.bookPreview.nameDescription":`在“表单”标签页中输入名称,即可开始编写文档目录骨架。`,"engine.bookPreview.treeTitle":`打开实时解析的导航树(每个分组的实际文档)`,"engine.bookPreview.tree":`解析后的目录树`,"engine.bookPreview.audience.public":`公开`,"engine.bookPreview.audience.permissionSet":`权限集:{name}`,"engine.bookPreview.audience.org":`组织`,"engine.bookPreview.slug":`URL 标识:{slug}`,"engine.bookPreview.noGroups":`尚无分组`,"engine.bookPreview.noGroupsDescription":`文档书的 {groups} 骨架中至少需要一个分组。每个分组由 {include} 规则(如 {glob} 这样的通配符,或 {tag})派生其成员。`,"engine.bookPreview.noKey":`(无键)`,"engine.bookPreview.orderTitle":`在文档书中的顺序`,"engine.bookPreview.packageTitle":`成员规则仅限于此包`,"engine.bookPreview.derived":`成员由上方的规则派生 —— 按实时文档集解析。`,"engine.bookPreview.noRule":`没有 {include} 规则,也没有显式的 {pages} —— 除非文档设置了 {group},否则此分组不匹配任何文档。`,"engine.bookPreview.curatedTitle":`由显式页面指定的人工排序`,"engine.bookPreview.curated":`人工排序`,"engine.bookPreview.globTitle":`匹配文档名称的通配符`,"engine.bookPreview.tagTitle":`按文档标签匹配`,"engine.bookPreview.separator":`分隔线`,"engine.bookPreview.rest":`…其余(剩余的匹配文档,按顺序)`,"engine.bookPreview.emptyPage":`(空)`,"engine.docPreview.bookSection":`所属手册分组`,"engine.docPreview.noSection":`未放入任何分组`,"engine.docPreview.unknownSection":`{key}(不是任何文档手册的分组)`,"engine.docPreview.booksLoading":`正在加载文档手册…`,"engine.docPreview.booksFailed":`无法加载文档手册:{message}`,"engine.docPreview.appearsIn":`出现在:`,"engine.docPreview.publicBook":`公开`,"engine.docPreview.noBooks":`尚无文档手册 —— 先创建一本,才能把这篇文档放进某个分组。`,"engine.docPreview.unplaced":`尚未放入任何手册分组 —— 手册目录会把它列在“未分类”下。`,"engine.docPreview.locales":`语言版本`,"engine.docPreview.baseLocale":`默认`,"engine.docPreview.removeLocale":`删除 {locale} 版本`,"engine.docPreview.localePlaceholder":`zh-CN`,"engine.docPreview.addLocaleInput":`新的语言标记`,"engine.docPreview.addLocale":`语言`,"engine.docPreview.localeDuplicate":`{locale} 已有版本`,"engine.docPreview.localeInvalid":`请使用 zh-CN 这样的语言标记`,"engine.docPreview.variantTitle":`标题`,"engine.docPreview.variantSummary":`摘要`,"engine.docPreview.preview":`实时预览`,"engine.docPreview.renderFailed":`Markdown 渲染器无法渲染此内容。`,"engine.docPreview.emptyEditing":`暂无可预览的内容 —— 请在源码区编写 Markdown。`,"engine.docPreview.empty":`这篇文档没有内容。`,"engine.docPreview.source":`Markdown 源码`,"engine.docPreview.sourceLocale":`Markdown 源码({locale})`,"engine.docPreview.sourcePlaceholder":`# 标题
|
|
9
|
+
Country`,"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.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.optMalformed":`This option cannot be edited here`,"designer.field.optMalformed.notAnObject":`It is not an option object.`,"designer.field.optMalformed.valueNotText":"Its `value` is missing or is not text.","designer.field.optMalformed.valueEmpty":"Its `value` is empty.","designer.field.optMalformed.labelNotText":"Its `label` is not text.","designer.field.optMalformed.colorNotText":"Its `color` is not text.","designer.field.optMalformedHint":`It is kept exactly as authored. Repair it in the JSON source, or remove it here.`,"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.summary.object":`Child object`,"designer.field.summary.function":`Aggregation`,"designer.field.summary.fn.count":`Count — child records`,"designer.field.summary.fn.sum":`Sum`,"designer.field.summary.fn.min":`Min`,"designer.field.summary.fn.max":`Max`,"designer.field.summary.fn.avg":`Average`,"designer.field.summary.field":`Child field to aggregate`,"designer.field.summary.relationshipField":`Child relationship field (optional)`,"designer.field.summary.setObjectFirst":`Set the child object first`,"designer.field.summary.countFieldHint":`Ignored for count, but still required — pick any child field.`,"designer.field.summary.filterSection":`Filter (rows to aggregate)`,"designer.field.summary.addFilter":`Add condition`,"designer.field.summary.noFilter":`No filter — every child row is aggregated.`,"designer.field.summary.filterHint":`Only child rows matching ALL conditions are aggregated — this is how one child object can feed several different totals (e.g. an approved-only sum vs the grand total).`,"designer.field.summary.filterAdvanced":`This filter uses an advanced shape (OR / nested logic) that the row editor can’t show. Edit it as raw metadata to preserve it.`,"designer.field.summary.hint":`Recomputed automatically when child records are created, updated, or deleted. The relationship field is auto-detected when the child has exactly one relation back to this object.`,"designer.field.precision":`Precision`,"designer.field.scale":`Scale`,"designer.field.min":`Min`,"designer.field.max":`Max`,"designer.field.maxLength":`Max length`,"designer.field.valueDomain":`Value domain`,"designer.field.valueDomainNone":`— None —`,"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.conditionalRules":`Conditional rules (CEL)`,"designer.field.visibleWhen":`Visible when`,"designer.field.readonlyWhen":`Read-only when`,"designer.field.requiredWhen":`Required when`,"designer.field.conditionalRulesHint":`While a predicate is true the field becomes visible / read-only / required. Reference the live record as record.<field>, the last saved values as previous.<field>, and (in master-detail line items) the header record as parent.<field>.`,"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":`Save as draft`,"engine.studio.saveDraft":`Save draft`,"engine.studio.more":`More`,"engine.studio.autoSaving":`Saving…`,"engine.studio.data.tab.advanced":`Advanced`,"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.pkg.manageMissing":`Package {id} is not in the installed list — it may have been deleted or uninstalled elsewhere.`,"engine.studio.pkg.manageRefreshFailed":`Package {id} could not be refreshed after that change — closing the panel rather than showing the pre-change record as current. {error}`,"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.fieldType.text":`Text`,"engine.fieldType.textarea":`Text Area`,"engine.fieldType.email":`Email`,"engine.fieldType.url":`URL`,"engine.fieldType.phone":`Phone`,"engine.fieldType.password":`Password`,"engine.fieldType.markdown":`Markdown`,"engine.fieldType.html":`HTML`,"engine.fieldType.richtext":`Rich Text`,"engine.fieldType.number":`Number`,"engine.fieldType.currency":`Currency`,"engine.fieldType.percent":`Percent`,"engine.fieldType.date":`Date`,"engine.fieldType.datetime":`Date/Time`,"engine.fieldType.time":`Time`,"engine.fieldType.boolean":`Checkbox`,"engine.fieldType.toggle":`Toggle`,"engine.fieldType.select":`Picklist`,"engine.fieldType.multiselect":`Multi-Select`,"engine.fieldType.radio":`Radio`,"engine.fieldType.checkboxes":`Checkboxes`,"engine.fieldType.lookup":`Lookup`,"engine.fieldType.master_detail":`Master-Detail`,"engine.fieldType.tree":`Tree`,"engine.fieldType.image":`Image`,"engine.fieldType.file":`File`,"engine.fieldType.avatar":`Avatar`,"engine.fieldType.video":`Video`,"engine.fieldType.audio":`Audio`,"engine.fieldType.formula":`Formula`,"engine.fieldType.summary":`Rollup`,"engine.fieldType.autonumber":`Auto Number`,"engine.fieldType.composite":`Composite`,"engine.fieldType.repeater":`Repeater`,"engine.fieldType.location":`Location`,"engine.fieldType.address":`Address`,"engine.fieldType.code":`Code`,"engine.fieldType.json":`JSON`,"engine.fieldType.color":`Color`,"engine.fieldType.rating":`Rating`,"engine.fieldType.slider":`Slider`,"engine.fieldType.signature":`Signature`,"engine.fieldType.qrcode":`QR Code`,"engine.fieldType.progress":`Progress`,"engine.fieldType.tags":`Tags`,"engine.fieldType.vector":`Vector`,"engine.fieldCategory.text":`Text`,"engine.fieldCategory.number":`Number`,"engine.fieldCategory.date":`Date / time`,"engine.fieldCategory.logic":`Logic`,"engine.fieldCategory.selection":`Selection`,"engine.fieldCategory.relation":`Relation`,"engine.fieldCategory.media":`Media`,"engine.fieldCategory.calculated":`Calculated`,"engine.fieldCategory.advanced":`Advanced`,"engine.studio.aiCopilot":`AI copilot`,"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.installedHeading":`Installed (read-only · browsable)`,"engine.studio.landing.orgHeading":`Not in a package`,"engine.studio.org.name":`Organization flows`,"engine.studio.org.hint":`Flows that belong to no package`,"engine.studio.org.description":`The organization’s own flows that belong to no package, such as a clone of a packaged flow. They open editable.`,"engine.studio.org.none":`No flows outside a package yet. Clone a packaged flow in Setup › Packaged automation to edit the copy here.`,"engine.studio.org.published":`Published the package-less flow drafts`,"engine.studio.auto.deepLinkMissing":`The link names flow “{name}”, which is not here.`,"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) — the most important fields on this object, in display order; surfaces that show a record at a glance draw on them, each taking as many as it has room for`,"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 — publishing is refused)`,"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 — publishing this object is REFUSED (security-owd-unset). The runtime does fall back to Private (ADR-0090 D1), but the baseline has to be an authored decision, not an accident. Pick a model — Private is the same behaviour, chosen on purpose.`,"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.capSearchable":`Global search (searchable)`,"engine.studio.settings.capSearchableDesc":`Include this object's records in cross-object global search. Off = records no longer appear in global search results. Which fields match is configured per-object via searchableFields, not here.`,"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.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.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.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.internalId":`Internal id`,"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.modeDesign":`Design`,"engine.studio.if.modeRun":`Run`,"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.designersMissing":`No metadata designers are registered in this session, so {type} cannot be previewed or designed here.`,"engine.studio.if.noDesigner":`No designer is registered for {type}, so it cannot be previewed or designed here.`,"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.studioCanvasNoBlocks":`This canvas renders the running app, not a block tree — it has no blocks to select, and nothing here is edited from this panel.`,"engine.studio.inspector.designersMissing":`No metadata designers are registered in this session, so there is nothing to edit 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.owdLabel":`Record sharing (OWD) — who can see records another user owns`,"engine.studio.data.owdHint":`Required to publish, and changeable later under Settings → Record sharing. Private matches what the runtime already does when no model is set.`,"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”). Create one below; 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.editorMissing":`No action editor is registered in this session, so this action’s properties cannot be edited here.`,"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.layoutBadgeClean":`Draft layout`,"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.data.fieldInspectorMissing":`No field inspector is registered in this session, so this field’s properties cannot be edited here.`,"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.auto.designersMissing":`No metadata designers are registered in this session, so this flow cannot be designed 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.owd.railLabel":`Record sharing (OWD)`,"engine.studio.owd.title":`Record sharing baseline (OWD)`,"engine.studio.owd.subtitle":`Object × org-wide default`,"engine.studio.owd.description":`The org-wide default (sharingModel / externalSharingModel) for every object this package owns — audit the baseline at a glance and batch-edit it. Changes save as per-object drafts and go live through the package Publish, exactly like the per-object Settings tab.`,"engine.studio.owd.colObject":`Object`,"engine.studio.owd.colInternal":`Internal (sharingModel)`,"engine.studio.owd.colExternal":`External (externalSharingModel)`,"engine.studio.owd.none":`This package declares no objects.`,"engine.studio.owd.loadFailed":`Failed to load this package’s objects.`,"engine.studio.owd.save":`Save {count} change(s)`,"engine.studio.owd.saveNone":`No changes`,"engine.studio.owd.saved":`Saved {count} object draft(s).`,"engine.studio.owd.unsaved":`Unsaved`,"engine.studio.owd.blockedSave":`Some rows set the external baseline wider than the internal model (ADR-0090 D11). Narrow them before saving.`,"engine.studio.owd.widerError":`External is wider than internal — narrow it (private < public read < public read/write).`,"engine.studio.owd.byParent":`By parent → {master}`,"engine.studio.owd.byParentUnknown":`By parent (master record)`,"engine.studio.owd.masterTip":`Controlled by parent — record visibility is inherited from the master record; there is no separate external dial.`,"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 api-name`,"engine.studio.access.explain.objectSelect":`Select an object…`,"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.item":`Item {n}`,"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.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.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.lockUnknown":`该元数据已锁定,但当前控制台无法识别锁状态“{state}”——它可能来自更新版本的服务端。部分操作将被阻止。`,"engine.edit.history":`历史`,"engine.edit.auditTab":`审计日志`,"engine.edit.auditCount":`条记录`,"engine.edit.auditEmptyTitle":`暂无审计记录`,"engine.edit.auditEmptyDescription":`该元数据尚未发生任何保存、发布、回滚、删除或重置操作。一旦有人尝试修改(无论允许或拒绝),都会在此显示。`,"engine.edit.auditErrorTitle":`审计记录读取失败`,"engine.edit.auditErrorDescription":`审计读取没有完成,因此无法得知这一项是否有过记录。这并不表示没有发生过任何尝试 —— 请使用「刷新」重新读取。`,"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.draftSuffix":`(草稿)`,"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.widget.filterBindingsSection":`仪表盘过滤器绑定`,"engine.inspector.widget.filterBindingsHint":`把每个仪表盘级过滤器映射到本组件自己的字段;取消勾选「应用」可让本组件不受该过滤器影响。留空表示使用过滤器自身的字段。`,"engine.inspector.widget.filterBindingApply":`应用`,"engine.inspector.widget.filterBindingDefault":`默认({field})`,"engine.inspector.widget.filterBindingField":`{filter} 绑定的字段`,"engine.inspector.widget.filterBindingReset":`恢复默认`,"engine.inspector.widget.type.metric":`KPI 指标`,"engine.inspector.widget.type.bar":`柱状图`,"engine.inspector.widget.type.horizontalBar":`条形图`,"engine.inspector.widget.type.line":`折线图`,"engine.inspector.widget.type.area":`面积图`,"engine.inspector.widget.type.pie":`饼图`,"engine.inspector.widget.type.donut":`环形图`,"engine.inspector.widget.type.funnel":`漏斗图`,"engine.inspector.widget.type.table":`表格`,"engine.inspector.widget.type.pivot":`透视表`,"engine.inspector.widget.untitledN":`组件 {n}`,"engine.inspector.widget.unsupportedSelection":`不支持的选择类型:{kind}`,"engine.inspector.widget.removed":`所选组件已从草稿中移除。`,"engine.widgetPicker.search":`搜索组件…`,"engine.widgetPicker.noMatches":`没有匹配项。`,"engine.widgetPicker.category.kpi":`单值`,"engine.widgetPicker.category.chart":`图表`,"engine.widgetPicker.category.data":`表格`,"engine.widgetPicker.type.metric":`指标 (KPI)`,"engine.widgetPicker.type.bar":`柱状图`,"engine.widgetPicker.type.horizontalBar":`条形图`,"engine.widgetPicker.type.line":`折线图`,"engine.widgetPicker.type.area":`面积图`,"engine.widgetPicker.type.pie":`饼图`,"engine.widgetPicker.type.donut":`环形图`,"engine.widgetPicker.type.scatter":`散点图`,"engine.widgetPicker.type.funnel":`漏斗图`,"engine.widgetPicker.type.table":`数据表格`,"engine.widgetPicker.type.pivot":`透视表`,"engine.dashboardPreview.empty":`至少添加一个组件才能查看预览。`,"engine.dashboardPreview.malformed":`某个组件引用了无法解析的对象或字段。`,"engine.dashboardPreview.loading":`正在加载仪表盘渲染器…`,"engine.dashboardPreview.selected":`已选中`,"engine.dashboardPreview.clickToRename":`点击重命名`,"engine.dashboardPreview.untitled":`未命名`,"engine.dashboardPreview.saveTitle":`保存标题`,"engine.dashboardPreview.renameWidget":`重命名组件`,"engine.dashboardPreview.clearSelection":`取消选择`,"engine.inspector.flowNode.kind":`节点`,"engine.inspector.flowNode.close":`关闭节点`,"engine.inspector.flowNode.id":`ID`,"engine.inspector.flowNode.label":`标签`,"engine.inspector.flowNode.type":`节点类型`,"engine.inspector.flowNode.configuration":`配置`,"engine.inspector.flowNode.config":`配置(JSON)`,"engine.inspector.flowNode.advanced":`高级(JSON)`,"engine.inspector.flowNode.advancedHint":`上方表单未覆盖的可选自定义键 —— 大多数流程无需填写。`,"engine.inspector.flowNode.inactiveRetained":`已保留,未生效 —— 控制字段处于关闭。该值仍然存储,直到你清除它。`,"engine.inspector.flowNode.inactiveRetainedOrphan":`已保留,未生效 —— 没有任何开关能启用此字段。该值仍然存储,以免静默丢失。`,"engine.inspector.flowNode.inactiveRetainedClear":`清除值`,"engine.inspector.flowNode.noConfig":`此节点类型无需配置。`,"engine.inspector.flowNode.nestedIdHint":`容器区域内的节点 ID 在此只读 —— 请在容器的高级 JSON 中重命名。`,"engine.inspector.flowNode.nestedLocation":`嵌套节点位置`,"engine.inspector.flowNode.advancedNotObject":`必须是 JSON 对象`,"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.kv.asExpression":`写成 CEL 表达式`,"engine.inspector.flowNode.kv.expressionPlaceholder":`CEL 表达式,例如 joinNonEmpty(…)`,"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.branchDefault":`默认`,"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.gatedRequired.title":`保存已被拦截:必填字段位于条件区块中。`,"engine.inspector.view.gatedRequired.issue":`字段“{fieldLabel}”({field})在对象“{object}”上是必填的,但它位于区块“{section}”中,而该区块仅在 {predicate} 时显示。服务端从不计算这个条件,因此区块被隐藏时表单无法完成——保存记录会被拒绝,报错指向一个用户看不到的字段。`,"engine.inspector.view.gatedRequired.remedies":`可用以下三种方式之一修复:`,"engine.inspector.view.gatedRequired.remedyMove":`把“{fieldLabel}”移到没有 visibleWhen 的区块中。`,"engine.inspector.view.gatedRequired.remedyDrop":`去掉区块“{section}”上的 visibleWhen。`,"engine.inspector.view.gatedRequired.remedyUnrequire":`在对象“{object}”上把“{fieldLabel}”改为非必填。`,"engine.inspector.view.cf.title":`条件格式化`,"engine.inspector.view.cf.add":`添加规则`,"engine.inspector.view.cf.empty":`暂无规则。添加一条以按 CEL 条件为行着色。`,"engine.inspector.view.cf.rule":`规则`,"engine.inspector.view.cf.when":`条件(CEL)`,"engine.inspector.view.cf.background":`背景色`,"engine.inspector.view.cf.text":`文字色`,"engine.inspector.view.cf.border":`边框色`,"engine.inspector.view.cf.preview":`预览`,"engine.inspector.view.cf.remove":`删除规则`,"engine.inspector.view.cf.moveUp":`上移`,"engine.inspector.view.cf.moveDown":`下移`,"engine.condition.celLabel":`CEL 表达式`,"engine.condition.advancedHint":`高级表达式 —— 搭建器仅支持简单的 AND/OR 条件。`,"engine.inspector.condition.builder":`搭建器`,"engine.inspector.condition.expression":`表达式`,"engine.inspector.condition.always":`始终生效 —— 无条件。`,"engine.inspector.condition.and":`且`,"engine.inspector.condition.or":`或`,"engine.inspector.condition.subjectPlaceholder":`字段 / 上下文`,"engine.inspector.condition.remove":`移除条件`,"engine.inspector.condition.valuePlaceholder":`值`,"engine.inspector.condition.add":`添加条件`,"engine.inspector.condition.op.equals":`等于`,"engine.inspector.condition.op.notEquals":`不等于`,"engine.inspector.condition.op.greaterThan":`大于`,"engine.inspector.condition.op.lessThan":`小于`,"engine.inspector.condition.op.truthy":`已设置 / 为真`,"engine.inspector.condition.op.falsy":`为空 / 为假`,"engine.inspector.condition.op.atLeast":`至少`,"engine.inspector.condition.op.atMost":`至多`,"engine.inspector.condition.op.contains":`包含`,"engine.inspector.condition.op.inAnyOf":`属于(任一)`,"engine.inspector.condition.op.notIn":`不属于`,"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.visibleWhen":`显示条件(CEL)`,"engine.inspector.pageBlock.properties":`属性`,"engine.inspector.pageBlock.advanced":`高级属性`,"engine.inspector.pageBlock.remove":`删除区块`,"engine.inspector.pageBlock.outlineLabel":`区块`,"engine.inspector.pageBlock.list.add":`添加`,"engine.inspector.pageBlock.list.remove":`删除`,"engine.inspector.pageBlock.list.removeItem":`删除项`,"engine.inspector.pageBlock.objectPlaceholder":`snake_case 对象名`,"engine.inspector.pageBlock.fieldPlaceholder":`字段名`,"engine.inspector.pageBlock.field.object-grid.objectName":`对象`,"engine.inspector.pageBlock.field.object-grid.columns":`列`,"engine.inspector.pageBlock.field.object-grid.pageSize":`每页条数`,"engine.inspector.pageBlock.field.object-form.objectName":`对象`,"engine.inspector.pageBlock.field.object-form.mode":`模式`,"engine.inspector.pageBlock.option.mode.create":`新建`,"engine.inspector.pageBlock.option.mode.edit":`编辑`,"engine.inspector.pageBlock.option.mode.view":`查看`,"engine.inspector.pageBlock.field.object-form.formType":`表单类型`,"engine.inspector.pageBlock.option.formType.simple":`简单`,"engine.inspector.pageBlock.option.formType.tabbed":`标签页`,"engine.inspector.pageBlock.option.formType.wizard":`向导`,"engine.inspector.pageBlock.option.formType.split":`分栏`,"engine.inspector.pageBlock.option.formType.drawer":`抽屉`,"engine.inspector.pageBlock.option.formType.modal":`弹窗`,"engine.inspector.pageBlock.field.object-form.layout":`布局`,"engine.inspector.pageBlock.option.layout.vertical":`纵向`,"engine.inspector.pageBlock.option.layout.horizontal":`横向`,"engine.inspector.pageBlock.field.object-form.columns":`字段列数(1–4)`,"engine.inspector.pageBlock.field.object-form.fields":`字段`,"engine.inspector.pageBlock.field.object-form.title":`标题`,"engine.inspector.pageBlock.field.object-form.description":`描述`,"engine.inspector.pageBlock.field.object-metric.objectName":`对象`,"engine.inspector.pageBlock.field.object-metric.label":`标签`,"engine.inspector.pageBlock.field.object-metric.description":`描述`,"engine.inspector.pageBlock.field.object-metric.icon":`图标`,"engine.inspector.pageBlock.placeholder.object-metric.icon":`lucide 图标名`,"engine.inspector.pageBlock.field.object-metric.colorVariant":`颜色`,"engine.inspector.pageBlock.option.colorVariant.default":`默认`,"engine.inspector.pageBlock.option.colorVariant.blue":`蓝色`,"engine.inspector.pageBlock.option.colorVariant.teal":`青色`,"engine.inspector.pageBlock.option.colorVariant.orange":`橙色`,"engine.inspector.pageBlock.option.colorVariant.purple":`紫色`,"engine.inspector.pageBlock.option.colorVariant.success":`成功`,"engine.inspector.pageBlock.option.colorVariant.warning":`警告`,"engine.inspector.pageBlock.option.colorVariant.danger":`危险`,"engine.inspector.pageBlock.field.object-metric.format":`格式`,"engine.inspector.pageBlock.option.format.number":`数字`,"engine.inspector.pageBlock.option.format.currency":`货币`,"engine.inspector.pageBlock.option.format.percent":`百分比`,"engine.inspector.pageBlock.field.object-metric.prefix":`前缀`,"engine.inspector.pageBlock.field.object-metric.suffix":`后缀`,"engine.inspector.pageBlock.field.object-kanban.objectName":`对象`,"engine.inspector.pageBlock.field.object-kanban.groupBy":`分组字段`,"engine.inspector.pageBlock.field.object-kanban.titleField":`标题字段`,"engine.inspector.pageBlock.field.object-kanban.cardFields":`卡片字段`,"engine.inspector.pageBlock.field.object-kanban.limit":`条数上限`,"engine.inspector.pageBlock.field.grid.columns":`列数`,"engine.inspector.pageBlock.field.grid.gap":`间距`,"engine.inspector.pageBlock.field.element:text.content":`内容`,"engine.inspector.pageBlock.placeholder.element:text.content":`文本…`,"engine.inspector.pageBlock.field.element:text.variant":`样式`,"engine.inspector.pageBlock.option.variant.h1":`标题 1`,"engine.inspector.pageBlock.option.variant.h2":`标题 2`,"engine.inspector.pageBlock.option.variant.h3":`标题 3`,"engine.inspector.pageBlock.option.variant.h4":`标题 4`,"engine.inspector.pageBlock.option.variant.h5":`标题 5`,"engine.inspector.pageBlock.option.variant.h6":`标题 6`,"engine.inspector.pageBlock.option.variant.body":`正文`,"engine.inspector.pageBlock.option.variant.caption":`说明文字`,"engine.inspector.pageBlock.option.variant.overline":`眉题`,"engine.inspector.pageBlock.field.element:text.align":`对齐`,"engine.inspector.pageBlock.option.align.left":`左对齐`,"engine.inspector.pageBlock.option.align.center":`居中`,"engine.inspector.pageBlock.option.align.right":`右对齐`,"engine.inspector.pageBlock.field.element:image.src":`图片地址`,"engine.inspector.pageBlock.field.element:image.alt":`替代文本`,"engine.inspector.pageBlock.field.element:image.fit":`填充方式`,"engine.inspector.pageBlock.option.fit.cover":`覆盖`,"engine.inspector.pageBlock.option.fit.contain":`包含`,"engine.inspector.pageBlock.option.fit.fill":`拉伸`,"engine.inspector.pageBlock.field.element:definition-list.items":`条目`,"engine.inspector.pageBlock.add.element:definition-list.items":`添加条目`,"engine.inspector.pageBlock.field.element:definition-list.items.term":`术语`,"engine.inspector.pageBlock.field.element:definition-list.items.description":`描述`,"engine.inspector.pageBlock.field.element:definition-list.columns":`列数(1 或 2)`,"engine.inspector.pageBlock.field.element:definition-list.inline":`行内(术语 · 描述)`,"engine.inspector.pageBlock.field.element:repeater.object":`对象`,"engine.inspector.pageBlock.field.element:repeater.titleField":`标题字段`,"engine.inspector.pageBlock.field.element:repeater.fields":`字段`,"engine.inspector.pageBlock.field.element:repeater.limit":`条数上限`,"engine.inspector.pageBlock.field.element:repeater.emptyText":`空数据提示`,"engine.inspector.pageBlock.field.element:repeater.divided":`行间分隔线`,"engine.inspector.pageBlock.field.element:number.object":`对象`,"engine.inspector.pageBlock.field.element:number.field":`字段`,"engine.inspector.pageBlock.field.element:number.aggregate":`聚合方式`,"engine.inspector.pageBlock.option.aggregate.count":`计数`,"engine.inspector.pageBlock.option.aggregate.sum":`求和`,"engine.inspector.pageBlock.option.aggregate.avg":`平均值`,"engine.inspector.pageBlock.option.aggregate.min":`最小值`,"engine.inspector.pageBlock.option.aggregate.max":`最大值`,"engine.inspector.pageBlock.field.element:number.format":`格式`,"engine.inspector.pageBlock.field.element:number.prefix":`前缀`,"engine.inspector.pageBlock.field.element:number.suffix":`后缀`,"engine.inspector.pageBlock.field.element:button.label":`按钮文字`,"engine.inspector.pageBlock.field.element:button.variant":`样式`,"engine.inspector.pageBlock.option.variant.primary":`主要`,"engine.inspector.pageBlock.option.variant.secondary":`次要`,"engine.inspector.pageBlock.option.variant.danger":`危险`,"engine.inspector.pageBlock.option.variant.ghost":`幽灵`,"engine.inspector.pageBlock.option.variant.link":`链接`,"engine.inspector.pageBlock.field.element:button.size":`尺寸`,"engine.inspector.pageBlock.option.size.small":`小`,"engine.inspector.pageBlock.option.size.medium":`中`,"engine.inspector.pageBlock.option.size.large":`大`,"engine.inspector.pageBlock.field.element:button.icon":`图标`,"engine.inspector.pageBlock.placeholder.element:button.icon":`lucide 图标名`,"engine.inspector.pageBlock.field.element:button.action":`动作`,"engine.inspector.pageBlock.field.page:header.title":`标题`,"engine.inspector.pageBlock.field.page:header.subtitle":`副标题`,"engine.inspector.pageBlock.field.page:card.title":`标题`,"engine.inspector.pageBlock.field.page:card.bordered":`显示边框`,"engine.inspector.pageBlock.field.page:tabs.items":`标签页`,"engine.inspector.pageBlock.add.page:tabs.items":`添加标签页`,"engine.inspector.pageBlock.field.page:tabs.items.value":`值`,"engine.inspector.pageBlock.field.page:tabs.items.label":`标签`,"engine.inspector.pageBlock.field.page:accordion.items":`分区`,"engine.inspector.pageBlock.add.page:accordion.items":`添加分区`,"engine.inspector.pageBlock.field.page:accordion.items.label":`标签`,"engine.inspector.pageBlock.field.record:related_list.objectName":`对象`,"engine.inspector.pageBlock.field.record:related_list.relationshipField":`关联字段`,"engine.inspector.pageBlock.field.record:related_list.title":`标题`,"engine.inspector.pageBlock.field.record:related_list.limit":`条数上限`,"engine.inspector.pageBlock.field.record:highlights.fields":`字段`,"engine.inspector.pageBlock.field.record:details.sections":`分区`,"engine.inspector.pageBlock.add.record:details.sections":`添加分区`,"engine.inspector.pageBlock.field.record:details.sections.name":`名称(i18n 键)`,"engine.inspector.pageBlock.placeholder.record:details.sections.name":`snake_case,例如:contact_info`,"engine.inspector.pageBlock.field.record:details.sections.label":`标签`,"engine.inspector.pageBlock.field.record:details.sections.columns":`列数`,"engine.inspector.pageBlock.field.record:details.sections.fields":`字段`,"engine.inspector.pageBlock.field.record:alert.severity":`严重度`,"engine.inspector.pageBlock.option.severity.info":`信息`,"engine.inspector.pageBlock.option.severity.warning":`警告`,"engine.inspector.pageBlock.option.severity.error":`错误`,"engine.inspector.pageBlock.option.severity.success":`成功`,"engine.inspector.pageBlock.field.record:alert.title":`标题`,"engine.inspector.pageBlock.field.record:alert.body":`正文`,"engine.inspector.pageBlock.field.record:alert.icon":`图标`,"engine.inspector.pageBlock.placeholder.record:alert.icon":`lucide 图标名`,"engine.inspector.pageBlock.field.record:alert.dismissible":`可关闭`,"engine.inspector.pageBlock.field.record:path.statusField":`状态字段`,"engine.inspector.pageBlock.field.record:path.stages":`阶段`,"engine.inspector.pageBlock.add.record:path.stages":`添加阶段`,"engine.inspector.pageBlock.field.record:path.stages.value":`值`,"engine.inspector.pageBlock.field.record:path.stages.label":`标签`,"engine.inspector.pageBlock.field.record:quick_actions.actionNames":`动作名称`,"engine.inspector.pageBlock.placeholder.record:quick_actions.actionNames":`动作名称`,"engine.inspector.pageBlock.field.record:quick_actions.location":`位置`,"engine.inspector.pageBlock.option.location.record_header":`记录头部`,"engine.inspector.pageBlock.option.location.record_more":`记录更多菜单`,"engine.inspector.pageBlock.option.location.record_section":`记录分区`,"engine.inspector.pageBlock.option.location.record_related":`记录关联列表`,"engine.inspector.pageBlock.option.location.list_toolbar":`列表工具栏`,"engine.inspector.pageBlock.option.location.list_item":`列表行`,"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.hook.bodyLang.expression":`表达式(L1)`,"engine.inspector.hook.bodyLang.js":`沙箱 JS(L2)`,"engine.inspector.hook.basics":`基本信息`,"engine.inspector.hook.label":`显示名`,"engine.inspector.hook.labelPlaceholder":`便于阅读的名称`,"engine.inspector.hook.name":`名称`,"engine.inspector.hook.namePlaceholder":`snake_case 标识符`,"engine.inspector.hook.objects":`此钩子触发的对象`,"engine.inspector.hook.allObjects":`所有对象(*)`,"engine.inspector.hook.noObjects":`未找到对象 —— 请先发布一个对象,再在此处选择。`,"engine.inspector.hook.pickObject":`请至少选择一个对象(或「所有对象」)。`,"engine.inspector.hook.events":`事件`,"engine.inspector.hook.eventsHint":`哪些生命周期事件会调用此钩子。`,"engine.inspector.hook.eventsWrite":`写入`,"engine.inspector.hook.eventsQuery":`查询`,"engine.inspector.hook.pickEvent":`请至少选择一个事件。`,"engine.inspector.hook.function":`函数`,"engine.inspector.hook.functionHint":`钩子触发时运行的处理函数。`,"engine.inspector.hook.language":`语言`,"engine.inspector.hook.handlerBody":`处理函数主体`,"engine.inspector.hook.bodyHint.expression":`针对 record / ctx 求值的单个 L1 表达式。`,"engine.inspector.hook.bodyHint.js":`在沙箱中以 (ctx) => Promise<void> 的形式运行。`,"engine.inspector.hook.options":`选项`,"engine.inspector.hook.priority":`优先级`,"engine.inspector.hook.async":`异步运行(提交之后)`,"engine.inspector.hook.condition":`仅在以下条件成立时运行(可选 CEL)`,"engine.inspector.hook.moreFieldsHint":`高级 / 不常用的属性。`,"engine.inspector.action.type.script":`脚本 —— 运行表达式 / 沙箱 JS`,"engine.inspector.action.type.api":`API —— 调用端点`,"engine.inspector.action.type.flow":`流程 —— 调用流程`,"engine.inspector.action.type.modal":`弹窗 —— 打开弹窗 / 页面`,"engine.inspector.action.type.form":`表单 —— 打开表单视图`,"engine.inspector.action.type.url":`URL —— 跳转到链接`,"engine.inspector.action.variant.primary":`主要`,"engine.inspector.action.variant.secondary":`次要`,"engine.inspector.action.variant.danger":`危险`,"engine.inspector.action.variant.ghost":`幽灵`,"engine.inspector.action.variant.link":`链接`,"engine.inspector.action.component.button":`按钮`,"engine.inspector.action.component.icon":`仅图标`,"engine.inspector.action.component.menu":`菜单项`,"engine.inspector.action.component.group":`按钮组`,"engine.inspector.action.mode.create":`新建`,"engine.inspector.action.mode.edit":`编辑`,"engine.inspector.action.mode.delete":`删除`,"engine.inspector.action.mode.custom":`自定义`,"engine.inspector.action.bodyLang.expression":`表达式(L1)`,"engine.inspector.action.bodyLang.js":`沙箱 JS(L2)`,"engine.inspector.action.paramType.text":`单行文本`,"engine.inspector.action.paramType.textarea":`多行文本`,"engine.inspector.action.paramType.number":`数字`,"engine.inspector.action.paramType.boolean":`复选框`,"engine.inspector.action.paramType.select":`下拉选择`,"engine.inspector.action.paramType.date":`日期`,"engine.inspector.action.paramType.datetime":`日期时间`,"engine.inspector.action.paramType.lookup":`查找关系`,"engine.inspector.action.location.record_header":`记录头部`,"engine.inspector.action.location.record_more":`记录 · 更多菜单`,"engine.inspector.action.location.record_section":`记录 · 分区`,"engine.inspector.action.location.record_related":`记录 · 关联列表`,"engine.inspector.action.location.list_toolbar":`列表工具栏`,"engine.inspector.action.location.list_item":`列表 · 行`,"engine.inspector.action.target.url.label":`URL 地址`,"engine.inspector.action.target.url.placeholder":"https://… 或 /path?x=${param.x}","engine.inspector.action.target.url.hint":"支持 ${param.x} 与 ${ctx.x} 插值。","engine.inspector.action.target.flow.label":`流程名称`,"engine.inspector.action.target.flow.placeholder":`snake_case 流程名`,"engine.inspector.action.target.flow.hint":`点击时调用的流程。`,"engine.inspector.action.target.modal.label":`弹窗 / 页面名称`,"engine.inspector.action.target.modal.placeholder":`snake_case 页面名`,"engine.inspector.action.target.modal.hint":`要打开的弹窗或页面。`,"engine.inspector.action.target.form.label":`表单视图名称`,"engine.inspector.action.target.form.hint":`打开 /console/forms/<name>。`,"engine.inspector.action.target.api.label":`API 端点`,"engine.inspector.action.target.api.hint":`使用下方请求体调用的端点。`,"engine.inspector.action.scriptOp.run":`运行脚本 —— 沙箱 JS / 表达式主体`,"engine.inspector.action.scriptOp.update":`更新此记录的字段 —— 无需代码`,"engine.inspector.action.objectPlaceholder":`snake_case 对象名`,"engine.inspector.action.objectNone":`— 无(全局)—`,"engine.inspector.action.options":`选项`,"engine.inspector.action.optionsEmpty":`还没有选项 —— 没有选项的下拉选择会在对话框中打开一个空的选择器。`,"engine.inspector.action.optionLabel":`显示名`,"engine.inspector.action.optionValue":`值`,"engine.inspector.action.removeOption":`移除选项 {index}`,"engine.inspector.action.addOption":`添加选项`,"engine.inspector.action.basics":`基本信息`,"engine.inspector.action.label":`显示名`,"engine.inspector.action.labelPlaceholder":`向用户显示的按钮文字`,"engine.inspector.action.name":`名称`,"engine.inspector.action.namePlaceholder":`snake_case 标识符`,"engine.inspector.action.object":`对象`,"engine.inspector.action.objectBoundHint":`绑定动作 —— 按下方的放置位置出现在此对象的视图中。`,"engine.inspector.action.objectGlobalHint":`留空 = 全局动作 —— 须被页面的快捷动作、全局导航、流程或 AI 引用后才会出现。`,"engine.inspector.action.icon":`图标`,"engine.inspector.action.variant":`样式`,"engine.inspector.action.behavior":`行为`,"engine.inspector.action.behaviorHint":`动作被触发时会发生什么。`,"engine.inspector.action.type":`类型`,"engine.inspector.action.pinnedScript":`已固定为 {script}:字段写入在平台动作路由上执行,而这正是该类型自己的路由。与它并存时,其他任何类型都会被拒绝。`,"engine.inspector.action.whatItDoes":`作用`,"engine.inspector.action.fieldValues":`字段值`,"engine.inspector.action.fieldValuesEmpty":`还没有字段值 —— 添加一个,或在下方把该值作为输入项收集。`,"engine.inspector.action.fieldValueField":`字段`,"engine.inspector.action.fieldValueValue":`值`,"engine.inspector.action.removeFieldValue":`移除字段值`,"engine.inspector.action.addFieldValue":`添加字段值`,"engine.inspector.action.updateHint":`以调用者身份写入当前记录 —— 对象权限、钩子与校验会像用户编辑时一样触发。下方收集的同名输入项会覆盖此处的固定值。`,"engine.inspector.action.scriptLanguage":`脚本语言`,"engine.inspector.action.scriptBody":`脚本主体`,"engine.inspector.action.scriptBodyHint":`在沙箱中以 {signature} 的形式运行。`,"engine.inspector.action.method":`请求方法`,"engine.inspector.action.inputs":`输入项`,"engine.inspector.action.inputsHint":`在动作运行前通过对话框向用户收集。`,"engine.inspector.action.inputsEmpty":`没有输入项 —— 点击后立即运行动作。`,"engine.inspector.action.removeInput":`移除输入项`,"engine.inspector.action.bindToField":`绑定到字段`,"engine.inspector.action.paramName":`名称`,"engine.inspector.action.paramNamePlaceholder":`请求体键名`,"engine.inspector.action.paramLabel":`显示名`,"engine.inspector.action.paramTypeLabel":`类型`,"engine.inspector.action.paramPlaceholder":`占位符`,"engine.inspector.action.paramRequired":`必填`,"engine.inspector.action.paramPrefill":`从行预填`,"engine.inspector.action.addInput":`添加输入项`,"engine.inspector.action.placement":`放置位置`,"engine.inspector.action.placementHint":`此动作在界面中出现的位置。`,"engine.inspector.action.noPlacement":`未选择放置位置 —— 此动作不会出现在任何记录或列表界面上。请在上方勾选一个放置位置,或通过视图的批量动作放置它。`,"engine.inspector.action.capabilityGate":`受权限 {capabilities} 控制 —— 对于不具备{whom}的任何人,上方勾选的每个放置位置都会隐藏此动作。这不是置灰,也不是错误:按钮只是不出现,而且无论如何服务器都会以 403 拒绝调用。`,"engine.inspector.action.capabilityGateAll":`全部这些权限`,"engine.inspector.action.capabilityGateOne":`该权限`,"engine.inspector.action.capabilityGateSelf":`当前会话不具备 {capabilities},因此该按钮对你同样隐藏 —— 通过权限集授予后,即可在应用中看到它。`,"engine.inspector.action.component":`组件`,"engine.inspector.action.feedback":`反馈`,"engine.inspector.action.feedbackHint":`确认提示与运行后的消息。`,"engine.inspector.action.confirmText":`确认提示`,"engine.inspector.action.confirmTextPlaceholder":`运行前询问(留空则跳过)`,"engine.inspector.action.successMessage":`成功消息`,"engine.inspector.action.errorMessage":`错误消息`,"engine.inspector.action.mode":`模式`,"engine.inspector.action.refreshAfter":`完成后刷新视图`,"engine.inspector.action.undoable":`提供撤销`,"engine.inspector.action.conditions":`条件`,"engine.inspector.action.conditionsHint":`基于 record / user / ctx 的无代码判断条件(编译为 CEL)。`,"engine.inspector.action.visibleWhen":`可见条件`,"engine.inspector.action.disabledWhen":`禁用条件`,"engine.inspector.action.ai":`AI 开放`,"engine.inspector.action.aiHint":`可选:将此动作作为可调用工具开放给 AI 智能体。`,"engine.inspector.action.aiExposed":`开放给 AI 智能体`,"engine.inspector.action.aiDescription":`工具描述(必填,≥40 个字符)`,"engine.inspector.action.aiDescriptionPlaceholder":`智能体应在何时、出于何种目的调用此动作…`,"engine.inspector.action.aiDescriptionTooShort":`开放期间必须提供至少 40 个字符的描述。`,"engine.inspector.action.moreFieldsHint":`高级 / 不常用的属性。`,"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.dataset.kind":`数据集`,"engine.inspector.dataset.aggregate.count":`计数`,"engine.inspector.dataset.aggregate.sum":`求和`,"engine.inspector.dataset.aggregate.avg":`平均值`,"engine.inspector.dataset.aggregate.min":`最小值`,"engine.inspector.dataset.aggregate.max":`最大值`,"engine.inspector.dataset.aggregate.count_distinct":`去重计数`,"engine.inspector.dataset.dimType.string":`字符串`,"engine.inspector.dataset.dimType.number":`数字`,"engine.inspector.dataset.dimType.date":`日期`,"engine.inspector.dataset.dimType.boolean":`布尔值`,"engine.inspector.dataset.dimType.lookup":`查找关系`,"engine.inspector.dataset.granularity.none":`— 无 —`,"engine.inspector.dataset.granularity.day":`日`,"engine.inspector.dataset.granularity.week":`周`,"engine.inspector.dataset.granularity.month":`月`,"engine.inspector.dataset.granularity.quarter":`季度`,"engine.inspector.dataset.granularity.year":`年`,"engine.inspector.dataset.derivedOp.ratio":`比率(a ÷ b)`,"engine.inspector.dataset.derivedOp.sum":`求和(a + b)`,"engine.inspector.dataset.derivedOp.difference":`差值(a − b)`,"engine.inspector.dataset.derivedOp.product":`乘积(a × b)`,"engine.inspector.dataset.formatKind.raw":`原始数值`,"engine.inspector.dataset.formatKind.number":`数字 —— 1,234.5`,"engine.inspector.dataset.formatKind.currency":`货币 —— $1,234.50`,"engine.inspector.dataset.formatKind.percent":`百分比 —— 12.3%`,"engine.inspector.dataset.usage.bound":`已被 {reports} · {dashboards} 绑定 —— 修改会影响它们。`,"engine.inspector.dataset.usage.reportsOne":`{count} 个报表`,"engine.inspector.dataset.usage.reportsOther":`{count} 个报表`,"engine.inspector.dataset.usage.dashboardsOne":`{count} 个仪表盘`,"engine.inspector.dataset.usage.dashboardsOther":`{count} 个仪表盘`,"engine.inspector.dataset.usage.unbound":`尚未被任何报表或仪表盘绑定。`,"engine.inspector.dataset.name":`名称`,"engine.inspector.dataset.namePlaceholder":`snake_case 标识符`,"engine.inspector.dataset.label":`显示名`,"engine.inspector.dataset.description":`描述`,"engine.inspector.dataset.baseObject":`基础对象`,"engine.inspector.dataset.baseObjectPlaceholder":`选择对象…`,"engine.inspector.dataset.searchObjects":`搜索对象…`,"engine.inspector.dataset.baseObjectChangeHint":`更改基础对象会清空其维度、度量、关联与筛选。`,"engine.inspector.dataset.includedRelationships":`包含的关联`,"engine.inspector.dataset.noJoins":`暂无关联。添加一个关联({object} 上的查找字段),即可使用 {path} 形式的维度 / 度量。`,"engine.inspector.dataset.baseObjectFallback":`基础对象`,"engine.inspector.dataset.includedRelationship":`包含的关联`,"engine.inspector.dataset.relationshipPlaceholder":`选择关联…`,"engine.inspector.dataset.searchRelationships":`搜索关联…`,"engine.inspector.dataset.removeRelationship":`移除关联`,"engine.inspector.dataset.scopeFilter":`范围筛选`,"engine.inspector.dataset.scopeFilterHelp":`固有范围,以 AND 并入每一次查询(例如排除已软删除的记录)。`,"engine.inspector.dataset.dimensions":`维度`,"engine.inspector.dataset.addDimension":`添加维度`,"engine.inspector.dataset.dimensionN":`维度 {index}`,"engine.inspector.dataset.removeDimension":`移除维度`,"engine.inspector.dataset.dimensionNamePlaceholder":`例如:region`,"engine.inspector.dataset.field":`字段`,"engine.inspector.dataset.dimensionFieldPlaceholder":`字段 或 关联.字段`,"engine.inspector.dataset.type":`类型`,"engine.inspector.dataset.labelOptional":`显示名(可选)`,"engine.inspector.dataset.displayLabel":`显示名`,"engine.inspector.dataset.dateBucket":`日期分桶`,"engine.inspector.dataset.measures":`度量`,"engine.inspector.dataset.addMeasure":`添加度量`,"engine.inspector.dataset.measureN":`度量 {index}`,"engine.inspector.dataset.removeMeasure":`移除度量`,"engine.inspector.dataset.measureNamePlaceholder":`例如:revenue`,"engine.inspector.dataset.aggregate":`聚合方式`,"engine.inspector.dataset.measureFieldPlaceholder":`字段(count 时可选)`,"engine.inspector.dataset.measureFilter":`筛选(度量级)`,"engine.inspector.dataset.measureFilterHelp":`只有满足此筛选的行才计入该度量(例如 won_amount = sum(amount) where stage = won)。`,"engine.inspector.dataset.derived":`派生 —— 由其他度量计算`,"engine.inspector.dataset.operation":`运算`,"engine.inspector.dataset.operands":`操作数(其他度量)`,"engine.inspector.dataset.derivedNeedTwo":`{op} 需要恰好选择 2 个度量。`,"engine.inspector.dataset.derivedNeedOne":`{op} 至少需要选择 1 个度量。`,"engine.inspector.dataset.addOtherMeasuresFirst":`请先添加其他度量。`,"engine.inspector.dataset.advanced":`高级`,"engine.inspector.dataset.displayFormat":`显示格式`,"engine.inspector.dataset.decimals":`小数位数`,"engine.inspector.dataset.currency":`货币`,"engine.inspector.dataset.sample":`示例:{sample}`,"engine.inspector.dataset.relWarning":`关联 {rel} 不在「包含的关联」中。`,"engine.inspector.dataset.relWarningAdd":`添加它`,"engine.inspector.dataset.filterAdvanced":`高级筛选(嵌套 / OR)—— 请在「{source}」标签页中编辑。`,"engine.inspector.dataset.sourceTab":`源码`,"engine.inspector.dataset.filterConditionsOne":`{count} 个条件`,"engine.inspector.dataset.filterConditionsOther":`{count} 个条件`,"engine.inspector.dataset.addFilter":`+ 添加筛选…`,"engine.inspector.dataset.filterNeedsObject":`先选择基础对象,才能添加筛选条件。`,"engine.inspector.reference.pickFromRecords":`从记录中选择`,"engine.inspector.reference.enterManually":`手动输入值`,"engine.inspector.reference.managerPlaceholder":`自动解析`,"engine.inspector.reference.managerHint":`运行时根据提交人的上级自动解析 —— 无需填写。`,"engine.inspector.reference.queueUnsupported":`运行时暂不支持队列审批人 —— 该位置不会解析到任何人。`,"engine.inspector.reference.fieldsOf":`{object} 的字段。`,"engine.inspector.reference.setTriggerObject":`请先在开始节点上设置流程的触发对象,才能列出字段。`,"engine.inspector.reference.actionsOf":`{connector} 的动作。`,"engine.inspector.reference.chooseConnector":`请先在上方选择连接器,才能列出其动作。`,"engine.inspector.reference.declarative":`声明式`,"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.flowPalette.search":`搜索节点…`,"engine.flowPalette.empty":`没有匹配的节点。`,"engine.flowPalette.recent":`最近使用`,"engine.flowPalette.category.data":`数据`,"engine.flowPalette.category.logic":`逻辑`,"engine.flowPalette.category.human":`人工`,"engine.flowPalette.category.integration":`集成`,"engine.flowPalette.category.flow":`流程`,"engine.flowNode.start.label":`开始`,"engine.flowNode.create_record.label":`创建记录`,"engine.flowNode.create_record.hint":`向对象中插入一条新记录`,"engine.flowNode.http_request.label":`HTTP 请求`,"engine.flowNode.map.label":`逐项映射`,"engine.flowNode.map.hint":`对集合逐项运行子流程(可暂停)`,"engine.flowNode.update_record.label":`更新记录`,"engine.flowNode.update_record.hint":`更新匹配条件的记录`,"engine.flowNode.get_record.label":`查询记录`,"engine.flowNode.get_record.hint":`从对象中查询记录`,"engine.flowNode.delete_record.label":`删除记录`,"engine.flowNode.delete_record.hint":`删除匹配条件的记录`,"engine.flowNode.decision.label":`条件分支`,"engine.flowNode.decision.hint":`根据条件分支执行`,"engine.flowNode.loop.label":`循环`,"engine.flowNode.loop.hint":`遍历集合`,"engine.flowNode.assignment.label":`设置变量`,"engine.flowNode.assignment.hint":`为流程变量赋值`,"engine.flowNode.parallel.label":`并行`,"engine.flowNode.parallel.hint":`并发执行多个分支,结束时汇合`,"engine.flowNode.try_catch.label":`异常捕获`,"engine.flowNode.try_catch.hint":`用错误处理与重试保护步骤`,"engine.flowNode.approval.label":`审批`,"engine.flowNode.approval.hint":`暂停等待人工决策`,"engine.flowNode.approval_revise.label":`修订窗口`,"engine.flowNode.approval_revise.hint":`审批退回后暂停,等待提交人重新提交`,"engine.flowNode.screen.label":`交互页面`,"engine.flowNode.screen.hint":`收集用户输入`,"engine.flowNode.http.label":`HTTP 请求`,"engine.flowNode.http.hint":`调用外部 API`,"engine.flowNode.connector_action.label":`连接器`,"engine.flowNode.connector_action.hint":`执行集成动作`,"engine.flowNode.notify.label":`通知`,"engine.flowNode.notify.hint":`向用户发送外发通知`,"engine.flowNode.script.label":`脚本`,"engine.flowNode.script.hint":`运行自定义代码`,"engine.flowNode.subflow.label":`子流程`,"engine.flowNode.subflow.hint":`调用其他流程`,"engine.flowNode.wait.label":`等待`,"engine.flowNode.wait.hint":`等待事件或定时器`,"engine.flowNode.end.label":`结束`,"engine.flowNode.end.hint":`终止流程`,"engine.flowCanvas.zoomOut":`缩小`,"engine.flowCanvas.zoomIn":`放大`,"engine.flowCanvas.fit":`适应视图`,"engine.flowCanvas.canvas":`流程画布`,"engine.flowCanvas.reveal":`在画布中定位`,"engine.flowCanvas.moreErrors":`还有 {count} 项…`,"engine.flowCanvas.insertNode":`在此处插入节点`,"engine.flowCanvas.addConnected":`添加后继节点`,"engine.flowCanvas.addReviseLoop":`添加退回修订环(退回重新修订)`,"engine.flowCanvas.addReviseLoopShort":`添加退回修订环`,"engine.flowCanvas.awaitingRevision":`等待修订`,"engine.flowCanvas.collapseRegions":`折叠嵌套区域`,"engine.flowCanvas.expandRegions":`展开嵌套区域`,"engine.flowCanvas.edge.undeclaredCycle":`{source} → {target} —— 属于未声明的环;请将闭合该环的连线标记为回边`,"engine.flowCanvas.edge.backEdge":`{source} ↩ {target}(回边)`,"engine.flowCanvas.summary.branches":`{count} 个分支`,"engine.flowCanvas.summary.approversOne":`{count} 位审批人`,"engine.flowCanvas.summary.approversOther":`{count} 位审批人`,"engine.flowCanvas.summary.unanimous":`全员`,"engine.flowCanvas.summary.code":`代码`,"engine.flowRegion.branchN":`分支 {n}`,"engine.flowRegion.try":`尝试`,"engine.flowRegion.catch":`捕获`,"engine.flowRegion.body":`循环体`,"engine.flowPreview.emptyHint":`在“表单”标签页中添加节点即可查看流程预览。`,"engine.flowPreview.malformed":`某个流程节点或连线的格式有误。`,"engine.flowPreview.pill.trigger":`触发`,"engine.flowPreview.pill.status":`状态`,"engine.flowPreview.pill.runAs":`运行身份`,"engine.flowPreview.pill.onError":`出错时`,"engine.flowPreview.showVars":`显示变量面板`,"engine.flowPreview.hideVars":`隐藏变量面板`,"engine.flowPreview.variables":`变量`,"engine.flowPreview.noVars":`未声明变量。`,"engine.flowPreview.runsTitle":`来自自动化引擎的运行历史`,"engine.flowPreview.runs":`运行`,"engine.flowPreview.problemsTitle":`校验问题`,"engine.flowPreview.problems":`问题`,"engine.flowPreview.debug":`调试`,"engine.flowPreview.varIn":`输入`,"engine.flowPreview.varOut":`输出`,"engine.flowRuns.title":`运行`,"engine.flowRuns.refresh":`刷新运行历史`,"engine.flowRuns.unavailable":`运行历史不可用 —— 自动化引擎已离线,或此流程尚未发布。`,"engine.flowRuns.empty":`暂无运行记录。`,"engine.flowRuns.noSteps":`未记录步骤日志。`,"engine.flowRuns.iteration":`迭代`,"engine.flowRuns.iterationN":`第 {n} 次迭代`,"engine.flowRuns.branch":`分支`,"engine.flowRuns.branchN":`分支 {n}`,"engine.flowRuns.branchNIterationM":`分支 {n} · 第 {m} 次迭代`,"engine.flowRuns.try":`尝试`,"engine.flowRuns.catch":`捕获`,"engine.flowRuns.status.completed":`已完成`,"engine.flowRuns.status.failed":`失败`,"engine.flowRuns.status.paused":`已暂停`,"engine.flowRuns.status.running":`运行中`,"engine.flowRuns.status.cancelled":`已取消`,"engine.flowRuns.runId":`运行 {id}`,"engine.flowRuns.trigger":`触发 {type}`,"engine.flowSim.run":`运行`,"engine.flowSim.step":`单步`,"engine.flowSim.continue":`继续`,"engine.flowSim.reset":`重置`,"engine.flowSim.add":`添加`,"engine.flowSim.resumeBranch":`沿“{branch}”分支继续`,"engine.flowSim.screen":`交互页面`,"engine.flowSim.inputs":`输入`,"engine.flowSim.setVariables":`设置变量`,"engine.flowSim.setVariablesHint":`覆盖或注入任意变量(启动时优先于输入与模拟值)。`,"engine.flowSim.mockOutputs":`模拟输出`,"engine.flowSim.mockPlaceholder":`模拟结果(JSON)`,"engine.flowSim.variables":`变量`,"engine.flowSim.noVars":`未设置变量。`,"engine.flowSim.timeline":`时间线`,"engine.flowSim.namePlaceholder":`名称`,"engine.flowSim.valuePlaceholder":`值`,"engine.flowSim.removeVariable":`删除变量`,"engine.flowSim.idleHint":`点击“运行”进行模拟,或用“单步”逐节点执行。副作用均为模拟 —— 不会调用后端。`,"engine.flowSim.status.idle":`空闲`,"engine.flowSim.status.running":`运行中`,"engine.flowSim.status.paused":`已暂停`,"engine.flowSim.status.done":`完成`,"engine.flowSim.status.error":`错误`,"engine.flowSim.stepStatus.ok":`正常`,"engine.flowSim.stepStatus.mocked":`已模拟`,"engine.flowSim.stepStatus.paused":`已暂停`,"engine.flowSim.stepStatus.skipped":`已跳过`,"engine.flowSim.stepStatus.error":`错误`,"engine.flowSim.edge.error":`错误`,"engine.flowSim.note.stepLimit":`超出步数上限({max}) —— 流程中可能存在死循环。`,"engine.flowSim.note.nodeNotFound":`节点 “{id}” 不存在。`,"engine.flowSim.note.resumed":`已继续。`,"engine.flowSim.note.decisionTaken":`决策:{decision} → {taken}。`,"engine.flowSim.note.decisionNoneTaken":`未走任何出向连线`,"engine.flowSim.note.noDecision":`未提供决策;将考虑所有出向连线。`,"engine.flowSim.note.flowEnd":`已到达流程结束。`,"engine.flowSim.note.unsupported":`模拟器不模拟 “{type}”;按直通处理,不含其真实语义。`,"engine.flowSim.note.parallelSplit":`并行拆分 —— 各分支同时展开(不模拟汇合同步)。`,"engine.flowSim.note.approvalReached":`已到达审批 —— 请选择一个决策以继续。`,"engine.flowSim.note.waitReached":`已到达等待 —— 请手动继续。`,"engine.flowSim.note.screenReached":`已到达交互页面 —— 请填写输入后继续。`,"engine.flowSim.note.screenUnevaluable":`交互页面字段的 visibleWhen 只能引用此页面上声明的字段;该页面无法求值 {fields}。`,"engine.flowSim.note.screenUnevaluableField":`“{name}”({reason})`,"engine.flowSim.note.screenNoInput":`交互页面没有输入 —— 已直接通过(与运行时一致)。`,"engine.flowSim.note.passThrough":`类型 “{type}” 按直通处理。`,"engine.flowSim.note.decisionNoOutEdge":`该条件分支没有出向连线;运行时在此结束该分支。`,"engine.flowSim.note.branchMatched":`分支 “{label}” 已匹配(config.conditions)。`,"engine.flowSim.note.noConditionMatched":`config.conditions 中没有条目匹配;分支为 “{label}”。`,"engine.flowSim.note.noAssignments":`未定义任何赋值。`,"engine.flowSim.note.unmodelledToken":`“{key}” 中的 {token}`,"engine.flowSim.note.unmodelled":`按原样保留,调试运行未模拟:{tokens}。运行时会自行解析 NOW() / TODAY()、$User.* 与算术运算,并在调用它不认识的函数时使该节点失败。`,"engine.flowSim.note.loopSinglePass":`循环按单次执行模拟(不模拟循环体的重复执行)。`,"engine.flowSim.note.loopCollection":`集合 “{ref}” 有 {count} 项;按单次执行模拟。`,"engine.flowSim.note.loopNotArray":`集合 “{ref}” 不是数组;运行时循环可能不会执行。`,"engine.flowSim.note.mockedCall":`已模拟对 “{fn}” 的调用(未执行任何函数)。`,"engine.flowSim.note.retiredAction":`已退役的 “{action}” 动作 —— 它从未投递过任何内容;请改用通知节点(Slack 请用连接器)。`,"engine.flowSim.note.retiredScript":`已退役的内联脚本 —— 运行时从未执行过它;请把逻辑移入已注册的函数。`,"engine.flowSim.note.mocked":`已模拟 {type}(未调用后端)。`,"engine.flowSim.note.noBranchLabel":`没有出向连线带有分支标签 “{label}”,因此会考虑所有出向连线,与运行时一致(运行时会记录一条警告)。`,"engine.flowSim.note.evaluationFailed":`求值失败。`,"engine.flowSim.note.multipleMatched":`有多个条件匹配;已走第一个声明的分支(运行时会走所有匹配的分支,objectstack#15429)。`,"engine.flowSim.note.noEdgeTaken":`未走任何出向连线:没有为真的条件,也没有默认连线。运行时在此结束该分支。`,"engine.flowSim.note.celEvaluationFailed":`CEL 求值失败:{message}`,"engine.flowSim.note.celConditionFailed":`条件无法按 CEL 求值:{message}`,"engine.previewShell.renderFailed":`预览渲染失败`,"engine.screenPreview.header":`预览`,"engine.screenPreview.empty":`添加标题、描述、字段或对象表单,即可预览此交互页面。`,"engine.screenPreview.submit":`提交`,"engine.screenPreview.noDataSource":`连接后端后即可预览此对象表单。`,"engine.screenPreview.hiddenOne":`有 {count} 个字段因其“显示条件”而隐藏。`,"engine.screenPreview.hiddenOther":`有 {count} 个字段因其“显示条件”而隐藏。`,"engine.screenPreview.defaultTemplate":`“{field}”的默认值模板,按原文显示 —— 运行时填入实际值:`,"engine.actionPreview.empty":`设置名称和标签,即可查看操作预览。`,"engine.actionPreview.pill.type":`类型:{type}`,"engine.actionPreview.pill.object":`对象:{object}`,"engine.actionPreview.pill.variant":`样式:{variant}`,"engine.actionPreview.pill.refreshAfter":`执行后刷新`,"engine.actionPreview.pill.aiOptedOut":`AI:不开放`,"engine.actionPreview.pill.aiExposed":`AI:已开放`,"engine.actionPreview.locations":`位置:`,"engine.actionPreview.requires":`需要:`,"engine.actionPreview.visibleWhen":`可见条件`,"engine.actionPreview.disabledWhen":`禁用条件`,"engine.actionPreview.onClick":`点击时`,"engine.actionPreview.firstAsks":`先询问:`,"engine.actionPreview.onSuccess":`成功后:`,"engine.actionPreview.handler.none":`尚未绑定处理程序。`,"engine.actionPreview.handler.url":`跳转到 {target}`,"engine.actionPreview.handler.flow":`运行流程 {target}`,"engine.actionPreview.handler.modal":`打开弹窗 {target}`,"engine.actionPreview.handler.api":`调用 API 端点 {target}`,"engine.actionPreview.handler.form":`打开表单视图 {target}(/console/forms/{path})`,"engine.actionPreview.handler.scriptBody":`运行内联脚本体(L1 表达式或 L2 沙箱 JS)。`,"engine.actionPreview.handler.scriptNamed":`运行具名脚本 {target}`,"engine.actionPreview.handler.invoke":`调用 {target}`,"engine.actionPreview.section.placement":`显示位置`,"engine.actionPreview.capabilityGateNote":`不具备 {capabilities} 的用户看不到它 —— 下方的框架展示的是摆放位置,而不是谁能看到它。`,"engine.actionPreview.section.testRequest":`测试请求`,"engine.actionPreview.section.inputDialog":`输入对话框`,"engine.actionPreview.section.resultDialog":`结果对话框`,"engine.actionPreview.section.scriptBody":`脚本体({language})`,"engine.actionPreview.dialog.ok":`确定`,"engine.actionPreview.param.carryOver":`沿用所选行的值(只读)`,"engine.actionPreview.param.fromRow":`(来自所选行)`,"engine.actionPreview.param.selectPlaceholder":`选择 {label}`,"engine.actionPreview.param.recordIdPlaceholder":`{label} 的记录 ID`,"engine.actionPreview.param.noReference":`未配置 {reference} 对象,因此记录选择器不可用,对话框会改为要求输入记录 ID。`,"engine.actionPreview.param.toggle":`开关`,"engine.actionPreview.param.noChoices":`尚未编写选项 —— 对话框会打开一个空的选择器。`,"engine.actionPreview.param.searchObject":`搜索 {object}…`,"engine.actionPreview.param.searchRecords":`搜索记录…`,"engine.actionPreview.result.title":`结果`,"engine.actionPreview.result.acknowledge":`我已保存`,"engine.actionPreview.result.fullJson":`显示完整的 JSON 响应。`,"engine.actionPreview.placement.sampleRecord":`示例记录`,"engine.actionPreview.placement.recordDetail":`记录详情`,"engine.actionPreview.placement.recordBody":`…记录正文…`,"engine.actionPreview.placement.records":`记录`,"engine.actionPreview.placement.rows":`第 1 行 · 第 2 行 · 第 3 行`,"engine.actionPreview.placement.row":`第 {n} 行`,"engine.actionPreview.placement.section":`分区`,"engine.actionPreview.placement.sectionBody":`…分区内容…`,"engine.actionPreview.placement.more":`更多`,"engine.actionPreview.api.paramsOne":`+ {count} 个由用户在运行时提供的参数`,"engine.actionPreview.api.paramsOther":`+ {count} 个由用户在运行时提供的参数`,"engine.actionPreview.api.liveWarning":`会向在线后端发送真实的 {method} 请求 —— 可能修改数据。`,"engine.actionPreview.api.sending":`发送中…`,"engine.actionPreview.api.send":`发送测试请求`,"engine.actionPreview.api.networkError":`网络错误`,"engine.agentPreview.tryInChat":`在对话中试用`,"engine.agentPreview.tryInChatTitle":`在新对话中打开此智能体的已保存版本`,"engine.agentPreview.empty":`在“表单”标签页中填写标签、角色和指令,即可查看智能体预览。`,"engine.agentPreview.active":`已启用`,"engine.agentPreview.disabled":`已停用`,"engine.agentPreview.temperature":`温度 {value}`,"engine.agentPreview.maxTokens":`上限 {count} token`,"engine.agentPreview.instructions":`指令`,"engine.agentPreview.noInstructions":`尚未设置系统提示词。`,"engine.agentPreview.capabilities":`能力`,"engine.agentPreview.skills":`技能`,"engine.agentPreview.noSkills":`未关联技能 —— 此智能体无法使用任何工具。`,"engine.agentPreview.toolsNote":`工具来自所关联的技能;知识依据在指令中描述。`,"engine.agentPreview.planning":`规划`,"engine.agentPreview.memory":`记忆`,"engine.agentPreview.guardrails":`护栏`,"engine.agentPreview.permissions":`权限`,"engine.agentPreview.defaults":`使用默认设置。`,"engine.agentPreview.noValues":`未设置任何值。`,"engine.skillPreview.empty":`为技能命名,并至少提供一段指令,即可查看预览。`,"engine.skillPreview.active":`已启用`,"engine.skillPreview.disabled":`已停用`,"engine.skillPreview.model":`模型:{model}`,"engine.skillPreview.instructions":`指令`,"engine.skillPreview.noInstructions":`尚无指令 —— 此技能不会向提示词贡献任何内容。`,"engine.skillPreview.tools":`工具({count})`,"engine.skillPreview.noTools":`未加入任何白名单工具。`,"engine.skillPreview.wildcardNote":`通配符在运行时会展开为许多工具 —— 启用前请在智能体中核对匹配到的工具集。`,"engine.skillPreview.triggerConditions":`触发条件({count})`,"engine.skillPreview.col.field":`字段`,"engine.skillPreview.col.operator":`运算符`,"engine.skillPreview.col.value":`值`,"engine.skillPreview.allMustHold":`所有条件都必须成立(AND),技能才会激活。`,"engine.skillPreview.missing":`缺失`,"engine.skillPreview.missingTitle":`SkillTriggerConditionSchema 要求此项 —— 此草稿保存时会被拒绝。`,"engine.toolPreview.openApiConsole":`在 API 控制台中打开`,"engine.toolPreview.openApiConsoleTitle":`打开 API 控制台以测试调用`,"engine.toolPreview.empty":`设置名称、描述和参数,即可查看工具预览。`,"engine.toolPreview.inputParameters":`输入参数`,"engine.toolPreview.noParameters":`此工具不接受输入参数。`,"engine.toolPreview.exampleCall":`LLM 调用示例`,"engine.toolPreview.outputSchema":`输出结构`,"engine.toolPreview.col.name":`名称`,"engine.toolPreview.col.type":`类型`,"engine.toolPreview.col.description":`描述`,"engine.toolPreview.required":`必填`,"engine.toolPreview.enum":`枚举:{values}`,"engine.toolPreview.default":`默认:`,"engine.toolPreview.format":`格式:{format}`,"engine.jobPreview.empty":`设置调度(cron / every / at)和处理程序,即可查看后台任务预览。`,"engine.jobPreview.active":`已启用`,"engine.jobPreview.paused":`已暂停`,"engine.jobPreview.retries":`重试:{count}`,"engine.jobPreview.retriesBackoff":`重试:{count}(退避 {backoff})`,"engine.jobPreview.timeout":`超时:{duration}`,"engine.jobPreview.concurrency":`并发:{count}`,"engine.jobPreview.schedule":`调度`,"engine.jobPreview.every":`间隔`,"engine.jobPreview.at":`时刻`,"engine.jobPreview.unparseable":`无法解析`,"engine.jobPreview.noSchedule":`未设置调度 —— 仅在手动触发时运行。`,"engine.jobPreview.nextRunOne":`接下来 {count} 次运行`,"engine.jobPreview.nextRunOther":`接下来 {count} 次运行`,"engine.jobPreview.noFireTime":`无法推算出任何未来的触发时间。请检查调度语法。`,"engine.jobPreview.noUpcoming":`未来 366 天内没有待运行的计划。`,"engine.jobPreview.inDelta":`{delta} 后`,"engine.jobPreview.inNow":`即刻`,"engine.jobPreview.handler":`处理程序`,"engine.jobPreview.noHandler":`未绑定处理程序 —— 此任务不会执行任何操作。`,"engine.celTest.predicateEmpty":`条件为空。`,"engine.celTest.notObject":`应为 JSON 对象。`,"engine.appPreview.openTitle":`在新标签页中打开此应用`,"engine.appPreview.open":`打开`,"engine.appPreview.homeFirst":`首页:打开第一个导航项`,"engine.appPreview.homeNone":`首页:尚无可生成路由的导航项`,"engine.appPreview.empty":`没有顶层导航项。在“表单”标签页中添加 {navigation} 条目,即可填充应用的导航。`,"engine.appPreview.unnamed":`(未命名)`,"engine.appPreview.noTypeTitle":"每个导航项都需要 `type` 判别字段 —— 此条目将在保存时被拒绝。","engine.appPreview.noType":`无类型`,"engine.appPreview.areas":`区域`,"engine.bookPreview.nameTitle":`为文档书命名`,"engine.bookPreview.nameDescription":`在“表单”标签页中输入名称,即可开始编写文档目录骨架。`,"engine.bookPreview.treeTitle":`打开实时解析的导航树(每个分组的实际文档)`,"engine.bookPreview.tree":`解析后的目录树`,"engine.bookPreview.audience.public":`公开`,"engine.bookPreview.audience.permissionSet":`权限集:{name}`,"engine.bookPreview.audience.org":`组织`,"engine.bookPreview.slug":`URL 标识:{slug}`,"engine.bookPreview.noGroups":`尚无分组`,"engine.bookPreview.noGroupsDescription":`文档书的 {groups} 骨架中至少需要一个分组。每个分组由 {include} 规则(如 {glob} 这样的通配符,或 {tag})派生其成员。`,"engine.bookPreview.noKey":`(无键)`,"engine.bookPreview.orderTitle":`在文档书中的顺序`,"engine.bookPreview.packageTitle":`成员规则仅限于此包`,"engine.bookPreview.derived":`成员由上方的规则派生 —— 按实时文档集解析。`,"engine.bookPreview.noRule":`没有 {include} 规则,也没有显式的 {pages} —— 除非文档设置了 {group},否则此分组不匹配任何文档。`,"engine.bookPreview.curatedTitle":`由显式页面指定的人工排序`,"engine.bookPreview.curated":`人工排序`,"engine.bookPreview.globTitle":`匹配文档名称的通配符`,"engine.bookPreview.tagTitle":`按文档标签匹配`,"engine.bookPreview.separator":`分隔线`,"engine.bookPreview.rest":`…其余(剩余的匹配文档,按顺序)`,"engine.bookPreview.emptyPage":`(空)`,"engine.docPreview.bookSection":`所属手册分组`,"engine.docPreview.noSection":`未放入任何分组`,"engine.docPreview.unknownSection":`{key}(不是任何文档手册的分组)`,"engine.docPreview.booksLoading":`正在加载文档手册…`,"engine.docPreview.booksFailed":`无法加载文档手册:{message}`,"engine.docPreview.appearsIn":`出现在:`,"engine.docPreview.publicBook":`公开`,"engine.docPreview.noBooks":`尚无文档手册 —— 先创建一本,才能把这篇文档放进某个分组。`,"engine.docPreview.unplaced":`尚未放入任何手册分组 —— 手册目录会把它列在“未分类”下。`,"engine.docPreview.locales":`语言版本`,"engine.docPreview.baseLocale":`默认`,"engine.docPreview.removeLocale":`删除 {locale} 版本`,"engine.docPreview.localePlaceholder":`zh-CN`,"engine.docPreview.addLocaleInput":`新的语言标记`,"engine.docPreview.addLocale":`语言`,"engine.docPreview.localeDuplicate":`{locale} 已有版本`,"engine.docPreview.localeInvalid":`请使用 zh-CN 这样的语言标记`,"engine.docPreview.variantTitle":`标题`,"engine.docPreview.variantSummary":`摘要`,"engine.docPreview.preview":`实时预览`,"engine.docPreview.renderFailed":`Markdown 渲染器无法渲染此内容。`,"engine.docPreview.emptyEditing":`暂无可预览的内容 —— 请在源码区编写 Markdown。`,"engine.docPreview.empty":`这篇文档没有内容。`,"engine.docPreview.source":`Markdown 源码`,"engine.docPreview.sourceLocale":`Markdown 源码({locale})`,"engine.docPreview.sourcePlaceholder":`# 标题
|
|
10
10
|
|
|
11
11
|
在此编写 Markdown…`,"engine.datasourcePreview.empty":`设置名称并至少指定一个驱动,即可查看数据源预览。`,"engine.datasourcePreview.unknownDriver":`未知`,"engine.datasourcePreview.active":`已启用`,"engine.datasourcePreview.disabled":`已停用`,"engine.datasourcePreview.connection":`连接`,"engine.datasourcePreview.noConfig":`未设置任何配置项。`,"engine.datasourcePreview.redacted":`已隐去`,"engine.datasourcePreview.pool":`连接池`,"engine.datasourcePreview.notConfigured":`未配置`,"engine.datasourcePreview.keyCount":`{{count} 个键}`,"engine.emailTemplatePreview.empty":`在“表单”标签页中填写主题 / 正文,即可查看预览。`,"engine.emailTemplatePreview.emptyBody":`(正文为空)`,"engine.emailTemplatePreview.from":`发件人`,"engine.emailTemplatePreview.to":`收件人`,"engine.emailTemplatePreview.subject":`主题`,"engine.emailTemplatePreview.frameTitle":`邮件预览`,"engine.emailTemplatePreview.variables":`变量`,"engine.emailTemplatePreview.noVariables":`未找到 {var} 占位符。`,"engine.emailTemplatePreview.samplePlaceholder":`{name} 的示例值`,"engine.permissionPreview.empty":`至少授予一项对象、系统或标签页权限,即可查看权限矩阵。`,"engine.permissionPreview.kind.default":`默认权限集`,"engine.permissionPreview.kind.set":`权限集`,"engine.permissionPreview.pill.objects":`{count} 个对象`,"engine.permissionPreview.pill.systemPerms":`{count} 项系统权限`,"engine.permissionPreview.pill.tabs":`{count} 个标签页`,"engine.permissionPreview.pill.rls":`{count} 条 RLS 规则`,"engine.permissionPreview.section.objects":`对象权限`,"engine.permissionPreview.section.fields":`字段级覆盖`,"engine.permissionPreview.section.system":`系统权限`,"engine.permissionPreview.section.tabs":`标签页可见性`,"engine.permissionPreview.col.object":`对象`,"engine.permissionPreview.cap.create":`创建`,"engine.permissionPreview.cap.read":`读取`,"engine.permissionPreview.cap.edit":`编辑`,"engine.permissionPreview.cap.delete":`删除`,"engine.permissionPreview.cap.export":`导出`,"engine.permissionPreview.cap.transfer":`转移`,"engine.permissionPreview.cap.viewAll":`查看全部`,"engine.permissionPreview.cap.modifyAll":`修改全部`,"engine.permissionPreview.col.scopeTitle":`读 / 写访问深度(ADR-0057)`,"engine.permissionPreview.col.scope":`范围`,"engine.permissionPreview.readScope":`读取范围`,"engine.permissionPreview.writeScope":`写入范围`,"engine.permissionPreview.scopeDefault":`默认`,"engine.permissionPreview.fls.hidden":`隐藏`,"engine.permissionPreview.fls.editable":`可编辑`,"engine.permissionPreview.sanityOne":`{count} 项合理性检查未通过`,"engine.permissionPreview.sanityOther":`{count} 项合理性检查未通过`,"engine.permissionPreview.warn.editWithoutRead":`授予了编辑却未授予读取(记录更新将失败)。`,"engine.permissionPreview.warn.deleteWithoutRead":`授予了删除却未授予读取。`,"engine.permissionPreview.warn.modifyAllWithoutViewAll":`授予了修改全部却未授予查看全部 —— 修改可能作用于不可见的记录。`,"engine.permissionPreview.warn.writeWiderThanRead":`写入范围({write})比读取范围({read})更宽 —— 编辑可能作用于不可见的记录。`,"engine.permissionPreview.granted":`已授予`,"engine.permissionPreview.notGranted":`未授予`,"engine.permissionPreview.legend.bypass":`绕过共享(查看/修改全部)`,"engine.permissionPreview.legend.key":`C R U D = 增删改查 · E T = 导出/转移 · V* M* = 查看/修改全部`,"engine.positionPreview.empty":`为岗位命名,即可查看预览。`,"engine.positionPreview.noAccess":`岗位本身不授予数据访问权限。`,"engine.positionPreview.bind":`将 {name} 绑定到一个或多个 {permissionSets},以控制 CRUD-VAMA、字段访问和标签页可见性。记录的可见性来自业务单元树和共享规则,而不是岗位。`,"engine.positionPreview.permissionSets":`权限集`,"engine.translationPreview.empty":`此语言包为空 —— 至少添加一条译文,即可查看覆盖率报告。`,"engine.translationPreview.category.objects":`对象`,"engine.translationPreview.category.apps":`应用`,"engine.translationPreview.category.messages":`消息`,"engine.translationPreview.category.validationMessages":`校验消息`,"engine.translationPreview.category.globalActions":`全局操作`,"engine.translationPreview.category.dashboards":`仪表盘`,"engine.translationPreview.category.settings":`设置`,"engine.translationPreview.category.metadataForms":`元数据表单`,"engine.translationPreview.coverage":`分类覆盖率:`,"engine.translationPreview.totalKeys":`共 {count} 个键`,"engine.translationPreview.categoryEmpty":`空`,"engine.translationPreview.more":`另有 {count} 项…`,"engine.translationPreview.keyCount":`{{count} 个键}`,"engine.celLint.notTheRow":"`{identifier}` 在此处不是记录行:行条件只把记录绑定为 `{canonical}`,别无其他。CEL 作用域词汇仍接受 `{identifier}`,所以这里不会阻止保存,但运行时表达式会以 `Unknown variable: {identifier}` 报错,规则永远不会触发。请改为以 `{canonical}` 为根引用。","engine.celLint.notPushdownable":`此读取过滤器不是简单的字段比较({detail}),服务器可能无法把它下推到查询 —— 视求值路径而定,它可能被丢弃并扩大访问范围。建议使用可下推的条件(字段与值或作用域变量比较)。`,"engine.objectPreview.renderFailed":`无法渲染表单设计器。请检查“表单”标签页。`,"engine.datasetPreview.pickObject":`选择一个基础对象`,"engine.datasetPreview.pickObjectHint":"设置数据集的 `object`,即可用实时数据预览它。","engine.datasetPreview.addMeasure":`添加一个度量`,"engine.datasetPreview.addMeasureHint":`数据集至少需要一个度量(例如 revenue = sum(amount))才能预览。`,"engine.datasetPreview.run":`运行预览`,"engine.datasetPreview.measureOne":`{count} 个度量`,"engine.datasetPreview.measureOther":`{count} 个度量`,"engine.datasetPreview.dimensionOne":`{count} 个维度`,"engine.datasetPreview.dimensionOther":`{count} 个维度`,"engine.datasetPreview.notInstalled":`未安装分析能力`,"engine.datasetPreview.notInstalledHint":`此部署没有分析服务,因此无法运行数据集预览。请安装 @objectstack/service-analytics 并挂载 AnalyticsServicePlugin —— 数据集定义本身没有问题。`,"engine.datasetPreview.noRows":`没有数据行`,"engine.datasetPreview.noRowsHint":`数据集在当前范围内没有返回任何数据行。`,"engine.datasetPreview.chartFailed":`无法为此结果渲染图表 —— 下方表格仍会显示数据。`,"engine.datasetPreview.ratioAxis":`比率度量({measures})使用右侧坐标轴。`,"engine.viewPreview.schemaFailed":"该视图的 `type` 可能尚未注册,或缺少必填字段。","engine.viewPreview.noObject":`此视图尚未绑定对象。请在右侧面板中设置绑定的 {object},以获取实时数据和字段选项。`,"engine.viewPreview.formFailed":`表单视图引用了无法解析的对象或字段。`,"engine.viewPreview.listFailed":`视图引用了无法解析的对象或字段。`,"engine.reportPreview.renderFailed":`报表引用了无法解析的数据集/度量,或其配置不完整。`,"engine.reportPreview.loading":`正在加载报表渲染器…`,"engine.reportPreview.joinedEmpty":`添加一个区块以预览此联合报表`,"engine.reportPreview.joinedEmptyHint":`联合报表由绑定数据集的区块堆叠而成。添加一个区块,并在右侧面板中绑定它的数据集 + 度量,即可开始设计。`,"engine.reportPreview.empty":`绑定一个数据集以预览此报表`,"engine.reportPreview.emptyHint":`自 9.0 单一形态切换起,报表按维度(rows)分组呈现其数据集的度量(values)。在右侧面板中选择一个数据集即可开始设计。`,"engine.pagePreview.interfaceFailed":`界面页面引用了一个不可用的来源对象/视图。`,"engine.pagePreview.schemaFailed":`页面 schema 不完整,或引用了尚未注册的组件。`,"engine.pagePreview.previewRecord":`预览记录`,"engine.pagePreview.sampleOne":`{count} 条示例`,"engine.pagePreview.sampleOther":`{count} 条示例`,"engine.pagePreview.recordFallback":`(记录)`,"engine.pagePreview.addComponents":`向页面添加组件即可查看预览。`,"engine.pagePreview.blockN":`区块 {n}`,"engine.pageBlockCanvas.renderFailed":`“{type}” 无法以当前配置渲染 —— 请检查它的属性。`,"engine.pageBlockCanvas.itemN":`第 {n} 项`,"engine.pageBlockCanvas.body":`主体`,"engine.pageBlockCanvas.content":`内容`,"engine.pageBlockCanvas.noRegions":`还没有区域`,"engine.pageBlockCanvas.noRegionsHint":`页面由区域(header / main / sidebar / …)组成。添加一个区域,即可开始向其中放入区块。`,"engine.pageBlockCanvas.addRegion":`添加区域`,"engine.pageBlockCanvas.regionN":`区域 {n}`,"engine.pageBlockCanvas.dropHere":`放到这里`,"engine.pageBlockCanvas.slotInherited":`继承自默认页面 —— 添加一个区块即可覆盖此插槽。`,"engine.pageBlockCanvas.regionEmpty":`空区域 —— 将区块拖放到这里,或使用下方的添加按钮。`,"engine.pageBlockCanvas.select":`选择 {label}`,"engine.pageBlockCanvas.groupEmpty":`空 —— 添加一个区块。`,"engine.pageBlockCanvas.searchTypes":`搜索区块类型…`,"engine.pageBlockCanvas.noMatch":`没有匹配的类型。`,"engine.pageBlockCanvas.category.data":`数据`,"engine.pageBlockCanvas.category.layout":`布局`,"engine.pageBlockCanvas.category.record":`记录上下文`,"engine.pageBlockCanvas.category.navigation":`导航`,"engine.pageBlockCanvas.category.element":`元素`,"engine.pageBlockCanvas.category.ai":`AI`,"engine.pageBlockCanvas.category.misc":`其他`,"engine.pageBlockCanvas.type.grid":`网格`,"engine.pageBlockCanvas.type.objectGrid":`表格`,"engine.pageBlockCanvas.type.objectForm":`表单`,"engine.pageBlockCanvas.type.objectMetric":`指标`,"engine.pageBlockCanvas.type.objectKanban":`看板`,"engine.pageBlockCanvas.type.pageHeader":`页头`,"engine.pageBlockCanvas.type.pageFooter":`页脚`,"engine.pageBlockCanvas.type.pageSidebar":`侧边栏`,"engine.pageBlockCanvas.type.pageTabs":`标签页`,"engine.pageBlockCanvas.type.pageAccordion":`折叠面板`,"engine.pageBlockCanvas.type.pageCard":`卡片`,"engine.pageBlockCanvas.type.pageSection":`分区`,"engine.pageBlockCanvas.type.recordDetails":`记录详情`,"engine.pageBlockCanvas.type.recordHighlights":`重点信息`,"engine.pageBlockCanvas.type.recordRelatedList":`关联列表`,"engine.pageBlockCanvas.type.recordActivity":`活动时间线`,"engine.pageBlockCanvas.type.recordDiscussion":`讨论`,"engine.pageBlockCanvas.type.recordPath":`阶段路径`,"engine.pageBlockCanvas.type.recordAlert":`提醒横幅`,"engine.pageBlockCanvas.type.recordQuickActions":`快捷操作`,"engine.pageBlockCanvas.type.recordReferenceRail":`参考侧栏`,"engine.pageBlockCanvas.type.recordHistory":`历史记录`,"engine.pageBlockCanvas.type.navMenu":`导航菜单`,"engine.pageBlockCanvas.type.navBreadcrumb":`面包屑`,"engine.pageBlockCanvas.type.globalSearch":`全局搜索`,"engine.pageBlockCanvas.type.aiSuggestion":`AI 建议`,"engine.pageBlockCanvas.type.elementText":`文本`,"engine.pageBlockCanvas.type.elementNumber":`数字`,"engine.pageBlockCanvas.type.elementImage":`图片`,"engine.pageBlockCanvas.type.elementDivider":`分隔线`,"engine.pageBlockCanvas.type.elementButton":`按钮`,"engine.pageBlockCanvas.type.elementDefinitionList":`定义列表`,"engine.pageBlockCanvas.type.elementRepeater":`重复器`,"engine.sourcePageEditor.source":`页面源码`,"engine.sourcePageEditor.renderFailed":`页面源码在渲染时抛出错误 —— 请在“源码”标签页中修复代码。`,"engine.validationPreview.empty":`为校验规则命名即可查看预览。`,"engine.validationPreview.active":`已启用`,"engine.validationPreview.disabled":`已停用`,"engine.validationPreview.priority":`优先级 {priority}`,"engine.validationPreview.on":`触发于 {events}`,"engine.validationPreview.noMessage":`未设置消息`,"engine.validationPreview.tags":`标签`,"engine.validationPreview.removed.unique":"唯一性是唯一索引(INDEX),不是校验规则:请在对象上声明为 `indexes: [{ fields: [...], unique: true }]`(或在字段上设置 `unique: true`)。先 SELECT 再 INSERT 的规则天生存在竞态(TOCTOU);数据库约束则不会。","engine.validationPreview.removed.async":`远程/异步校验属于表单层的职责 —— 放在服务端写入路径上会带来 SSRF 与延迟风险。请把它留在表单中,或用唯一索引或生命周期钩子来强制其背后的约束。`,"engine.validationPreview.removed.custom":"任意校验代码应放在 `beforeInsert` / `beforeUpdate` 生命周期钩子中 —— 那是有类型、受支持的扩展点。","engine.validationPreview.notARule":`不是校验规则`,"engine.validationPreview.removedType":`{type} 已从 ValidationRuleSchema 中移除 —— 此规则无法保存。`,"engine.validationPreview.condition":`条件`,"engine.validationPreview.when":`条件成立时`,"engine.validationPreview.thenApply":`则应用`,"engine.validationPreview.noNested":`未设置嵌套规则 —— 此规则不强制任何约束。`,"engine.validationPreview.otherwiseApply":`否则应用`,"engine.validationPreview.transitions":`状态流转`,"engine.validationPreview.transitionsOn":`{field} 的状态流转`,"engine.validationPreview.noTransitions":`未声明任何状态流转。`,"engine.validationPreview.deadEnd":`∅(无后续状态)`,"engine.validationPreview.createdIn":`可在以下状态创建`,"engine.validationPreview.format":`格式`,"engine.validationPreview.formatOn":`{field} 的格式`,"engine.validationPreview.builtIn":`内置:`,"engine.validationPreview.regex":`正则:`,"engine.validationPreview.noFormat":`未设置格式或正则表达式。`,"engine.validationPreview.fieldsInvolved":`涉及字段`,"engine.validationPreview.none":`无`,"engine.validationPreview.crossFieldCondition":`跨字段条件`,"engine.validationPreview.jsonSchemaOn":`{field} 的 JSON Schema`,"engine.validationPreview.noJsonSchema":`未设置 JSON Schema。`,"engine.validationPreview.rule":`规则`,"engine.validationPreview.unknownType":`未知的规则类型“{type}”。仅显示通用字段。`,"engine.validationPreview.noType":`无类型`,"engine.validationPreview.noExpression":`未设置表达式。`,"engine.fieldsListEditor.columns":`列`,"engine.fieldsListEditor.empty":`还没有列。请在下方添加字段。`,"engine.fieldsListEditor.colN":`列 {n}`,"engine.viewColumnPanes.remove":`移除 {label}`,"engine.externalDatasource.unavailable":`此服务器未启用数据联邦。`,"engine.externalDatasource.saveFirst":`请先保存数据源,才能浏览其远程表并校验联邦对象。`,"engine.externalDatasource.title":`外部数据源`,"engine.externalDatasource.writesAllowed":`允许写入`,"engine.externalDatasource.readOnly":`只读`,"engine.externalDatasource.snapshot":`快照 {time}`,"engine.externalDatasource.refresh":`刷新目录`,"engine.externalDatasource.tables":`表`,"engine.externalDatasource.validation":`校验`,"engine.externalDatasource.browser.filter":`筛选表…`,"engine.externalDatasource.browser.refresh":`刷新`,"engine.externalDatasource.browser.introspecting":`正在读取远程表结构…`,"engine.externalDatasource.browser.noRemoteTables":`未找到远程表(请检查数据源的 allowedSchemas)。`,"engine.externalDatasource.browser.noMatch":`没有与筛选条件匹配的表。`,"engine.externalDatasource.browser.colTable":`表名`,"engine.externalDatasource.browser.colColumns":`列`,"engine.externalDatasource.browser.colRows":`行数(估算)`,"engine.externalDatasource.browser.import":`导入`,"engine.externalDatasource.browser.unavailable":`此服务器未启用数据联邦。必须注册 {service} 服务,才能浏览表、生成草稿并进行校验。`,"engine.externalDatasource.check.unavailable":`此服务器未启用数据联邦,因此无法进行校验。`,"engine.externalDatasource.check.intro":`检查 {datasource} 上的每个联邦对象是否仍与其实时远程表一致。`,"engine.externalDatasource.check.run":`运行校验`,"engine.externalDatasource.check.allMatchOne":`全部 {count} 个对象均与远程表结构一致。`,"engine.externalDatasource.check.allMatchOther":`全部 {count} 个对象均与远程表结构一致。`,"engine.externalDatasource.check.divergeOne":`{count} 个对象中有 {diverged} 个与远程表结构不一致。`,"engine.externalDatasource.check.divergeOther":`{count} 个对象中有 {diverged} 个与远程表结构不一致。`,"engine.externalDatasource.check.noObjects":`尚无联邦对象绑定到此数据源。请在“表”标签页中导入一张表以开始。`,"engine.externalDatasource.check.diffsOne":`{count} 处差异`,"engine.externalDatasource.check.diffsOther":`{count} 处差异`,"engine.externalDatasource.check.expectedActual":`预期 {expected},实际 {actual}`,"engine.externalDatasource.diff.missingTable":`缺少表`,"engine.externalDatasource.diff.missingColumn":`缺少列`,"engine.externalDatasource.diff.typeMismatch":`类型不匹配`,"engine.externalDatasource.diff.nullabilityMismatch":`可空性不匹配`,"engine.externalDatasource.diff.unmappedColumn":`未映射的列`,"engine.externalDatasource.diff.pkMismatch":`主键不匹配`,"engine.externalDatasource.diff.indexMismatch":`索引不匹配`,"engine.externalDatasource.diff.unmappedIndex":`未映射的索引`,"engine.externalDatasource.diff.defaultMismatch":`列默认值不匹配`,"engine.externalDatasource.diff.unreachable":`未检查 —— 远程不可达`,"engine.externalDatasource.import.title":`导入为对象`,"engine.externalDatasource.import.intro":`将远程表 {table} 映射为绑定到 {datasource} 的 ObjectStack 对象。远程表结构不会被修改。`,"engine.externalDatasource.import.generating":`正在生成草稿…`,"engine.externalDatasource.import.done":`已导入对象 {name}。`,"engine.externalDatasource.import.doneNext":`请复查其绑定并运行校验,确认它与远程表一致。`,"engine.externalDatasource.import.objectName":`对象名称`,"engine.externalDatasource.import.reviewOne":`{count} 个列需要复查`,"engine.externalDatasource.import.reviewOther":`{count} 个列需要复查`,"engine.externalDatasource.import.source":`生成的源码`,"engine.externalDatasource.import.importing":`正在导入…`,"engine.enum.type.default":`普通`,"engine.enum.type.conditional":`条件`,"engine.enum.type.fault":`故障(错误路径)`,"engine.enum.type.back":`回边(退回修改环)`,"engine.flowValidate.nodeMissingId":`有节点缺少 id。`,"engine.flowValidate.duplicateNodeId":`重复的节点 id “{id}”。`,"engine.flowValidate.edgeSourceMissing":`连线的源节点 “{source}” 不存在。`,"engine.flowValidate.edgeTargetMissing":`连线的目标节点 “{target}” 不存在。`,"engine.flowValidate.startHasIncoming":`开始节点存在入边。`,"engine.flowValidate.multipleStart":`流程有 {count} 个开始节点;应只有一个。`,"engine.flowValidate.noStartUsingRoot":`没有“开始”节点;以唯一的根节点作为入口。`,"engine.flowValidate.noEntry":`没有入口节点(每个节点都有入边 —— 整个图是全环状)。`,"engine.flowValidate.ambiguousEntry":`无法确定唯一入口节点(有 {count} 个候选)。请添加一个“开始”节点。`,"engine.flowValidate.decisionMultipleDefaults":`条件分支 “{id}” 有 {count} 个默认分支。`,"engine.flowValidate.decisionNoBranches":`条件分支 “{id}” 没有出向分支。`,"engine.flowValidate.decisionNoDefault":`条件分支 “{id}” 没有默认分支;当无条件匹配时可能走入死路。`,"engine.flowValidate.nodeUnreachable":`节点 “{id}” 从入口不可达。`,"engine.flowValidate.cycleDetected":`检测到环({cycle})。将闭合该环的连线标记为回边(连接类型 → 回边)以声明这是有意的退回 / 返工环。`,"engine.flowRef.unknownWithSuggestion":"未知引用 `{token}` —— 是否想用 `{suggestion}`?","engine.flowRef.notInScope":"`{token}` 在当前步骤的作用域中不是有效引用。","engine.flowRef.notInScopeMulti":`不在作用域内:{tokens}。`,"engine.flowRef.notAScreenField":"`{token}` 不是此页面上的字段","engine.flowRef.notAScreenFieldWithSuggestion":"`{token}` 不是此页面上的字段(是否想用 `{suggestion}`?)","engine.flowExpr.templateDialect":"此处应为文本模板,但得到的是 `{dialect}` 表达式。","engine.flowExpr.singleBraceTemplate":"单花括号 `{{ref}}` 不是有效的模板占位 —— 请使用双花括号:`{{ {ref} }}`。","engine.flowExpr.celDialect":"此处应为 CEL 表达式,但得到的是 `{dialect}` 方言。","engine.flowExpr.braceInCondition":"条件中似乎用了模板花括号 `{{ref}}` —— `{…}` 会被解析为 CEL 映射字面量而失败。请直接写引用本身,例如 `{ref}`。条件是裸 CEL(例如 `record.rating >= 4`)。","engine.flowExpr.unbalancedParens":"`{source}` 中的圆括号不配对。","engine.flowExpr.unbalancedBrackets":"`{source}` 中的方括号不配对。","engine.flowScope.picker.insert":`插入引用`,"engine.flowScope.picker.search":`搜索引用…`,"engine.flowScope.picker.empty":`没有匹配的引用。`,"engine.flowScope.group.variables":`流程变量`,"engine.flowScope.group.outputs":`上游输出`,"engine.flowScope.group.loop":`循环项`,"engine.flowScope.group.trigger":`触发记录`,"engine.flowScope.group.approvalCurrent":`当前记录(进入节点时的实时值)`,"engine.flowScope.group.approvalTrigger":`触发快照(提交时)`,"engine.flowScope.group.screenFields":`页面字段`,"engine.flowScope.detail.variable":`变量`,"engine.flowScope.detail.variableTyped":`变量 · {type}`,"engine.flowScope.detail.triggerRecord":`触发记录 · {object}`,"engine.flowScope.detail.previousRecord":`变更前的记录值`,"engine.flowScope.detail.priorOf":`{detail}(变更前)`,"engine.flowScope.detail.priorValue":`变更前的值`,"engine.flowScope.detail.preUpdateRow":`更新前的行`,"engine.flowProblems.title":`问题`,"engine.flowProblems.empty":`没有问题 —— 该流程结构有效。`,"engine.flowProblems.sourceSchema":`架构`,"engine.flowProblems.sourceExpression":`表达式`,"engine.edit.refsScanning":`正在扫描引用…`,"engine.edit.refsEmptyTitle":`未找到引用`,"engine.edit.refsEmptyDesc":`元数据图中没有任何项指向它,可以安全删除。`,"engine.edit.refsErrorTitle":`引用检查失败`,"engine.edit.refsErrorDesc":`引用扫描没有完成,因此无法得知哪些内容依赖此项。这并不表示删除它是安全的 —— 请重新执行检查后再做决定。`,"engine.edit.refsRetry":`重新检查`,"engine.edit.destructiveTitle":`检测到破坏性变更`,"engine.edit.destructiveDesc":`框架拒绝了本次保存,因为它会丢弃或收窄正在使用的数据。请检查这些问题并确认以强制覆盖。`,"engine.edit.forcing":`强制保存中…`,"engine.edit.historySubtitle":`版本历史`,"engine.edit.historyEvents":`事件`,"engine.edit.historyEmptyTitle":`暂无历史`,"engine.edit.historyEmptyDesc":`此项从未通过覆盖层编辑过。首次保存将创建初始历史记录。`,"engine.inspector.reorder.up":`上移`,"engine.inspector.reorder.down":`下移`,"engine.inspector.combo.search":`搜索或输入…`,"engine.inspector.combo.noMatch":`无匹配项 —— 继续输入即可使用自定义值。`,"engine.inspector.combo.loading":`加载中…`,"engine.inspector.combo.useCustom":`使用 {value}`,"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.close":`关闭`,"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.colorHex":`十六进制值`,"engine.form.loadingObjects":`正在加载对象…`,"engine.form.noObjects":`object_name(未检测到对象)`,"engine.form.selectObject":`选择对象…`,"engine.form.selectComponent":`选择组件…`,"engine.form.noComponents":`component_id(此页面暂无组件)`,"engine.form.addObjects":`添加对象…`,"engine.form.loadingFields":`正在加载字段…`,"engine.form.selectObjectFirst":`(请先选择对象)`,"engine.form.selectField":`选择字段…`,"engine.form.addFields":`添加字段…`,"engine.form.noObjectBound":`未绑定对象`,"engine.form.loadingOptions":`正在加载选项…`,"engine.form.optionsLoadFailedTitle":`选项加载失败`,"engine.form.optionsLoadFailedDesc":`这个列表没有加载成功,因此它并不表示不存在可选项。请重新加载编辑器后再试。`,"engine.form.none":`— 无 —`,"engine.form.notInObject":`(不在对象中)`,"engine.form.notFound":`(未找到)`,"engine.form.deprecated":`(已弃用)`,"engine.form.invalid":`(无效)`,"engine.form.notPublished":`(未发布)`,"engine.form.flaggedValue":`{value}{flag}`,"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.objectNotFound":`未找到对象`,"engine.form.datasetNotFound":`未找到数据集`,"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.form.machineName":`机器名`,"engine.form.sectionN":`第 {n} 节`,"engine.form.notConfigured":`尚未配置`,"engine.form.configure":`配置`,"engine.form.removeNamed":`删除 {name}`,"engine.form.moveUp":`上移`,"engine.form.moveDown":`下移`,"engine.form.noneShort":`无`,"engine.form.filterModeNone":`无`,"engine.form.filterModeTabs":`标签页`,"engine.form.filterModeDropdown":`下拉框`,"engine.form.filterElement":`筛选控件`,"engine.form.removeField":`删除字段`,"engine.form.addFilterField":`+ 添加筛选字段…`,"engine.form.bindObjectForFilterFields":`先绑定来源对象,才能挑选筛选字段。`,"engine.form.tabLabel":`标签名称`,"engine.form.moveTabUp":`标签上移`,"engine.form.moveTabDown":`标签下移`,"engine.form.removeTab":`删除标签`,"engine.form.bindObjectForTabRules":`先绑定来源对象,才能配置标签筛选规则。`,"engine.form.bindObjectForConditions":`先绑定来源对象,才能添加筛选条件。`,"engine.form.addActionButtonPlain":`添加操作按钮`,"engine.form.addActionButton":`+ 添加操作按钮…`,"engine.form.allActionsAdded":`操作已全部添加`,"engine.form.bindObjectForActions":`先绑定来源对象,才能挑选操作`,"engine.form.color":`颜色`,"engine.form.colorHexPlaceholder":`#RRGGBB`,"engine.form.secretSetTypeToReplace":`•••••••• 已设置 —— 输入新值可替换`,"engine.form.secretSetLeaveBlank":`•••••••• 已设置 —— 留空则保持不变`,"engine.form.enterAValue":`请输入值`,"engine.form.secretValue":`密钥值`,"engine.form.hideValue":`隐藏值`,"engine.form.revealValue":`显示值`,"engine.form.clear":`清除`,"engine.form.anOption":`一个选项`,"engine.form.selectDepToConfigure":`请先选择{dep},然后再配置。`,"engine.form.noConfigNeeded":`“{value}”无需额外配置。`,"engine.form.readOnly":`只读`,"engine.form.loadingEditor":`正在加载编辑器…`,"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.serverRefused":`服务端已拒绝此草稿 —— 请先修复 {issue} 再保存。`,"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.namespace":`对象命名空间`,"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.create.exists":`已存在相同 ID 的软件包。`,"engine.packages.noCapability":`你没有在此工作区管理软件包的权限 — 该操作需要「管理元数据」权限。`,"engine.packages.form.basics":`基本信息`,"engine.packages.form.advanced":`高级`,"engine.packages.form.namespace":`命名空间`,"engine.packages.form.defaultDatasource":`默认数据源`,"engine.packages.form.scope":`范围`,"engine.packages.form.dependencies":`依赖`,"engine.packages.form.help.name":`软件包的可读名称。`,"engine.packages.form.help.id":`软件包的唯一标识,采用反向域名格式。`,"engine.packages.form.help.namespace":`简短的命名空间标识;同时是本软件包内每个对象名称的强制前缀(例如 “todo” → 对象名 “todo_task”、“todo_project”)。`,"engine.packages.form.help.version":`软件包版本(语义化版本号)。`,"engine.packages.form.help.type":`软件包类型。`,"engine.packages.form.help.description":`软件包描述。`,"engine.packages.form.help.defaultDatasource":`本软件包内所有对象的默认数据源。`,"engine.packages.form.help.scope":`部署范围:cloud(云端)、system(系统)、project(项目)。`,"engine.packages.form.help.dependencies":`软件包依赖。`,"engine.packages.view.title":`软件包信息`,"engine.packages.detail.viewInfo":`查看信息`,"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.publishDraftsRolledBack":`发布未生效 — 批次已整体回滚(全有或全无):{cause}`,"engine.packages.detail.publishDraftsOk":`应用已发布,所有草稿均已生效。`,"engine.packages.detail.reverted":`已还原到上次发布状态。`,"engine.packages.detail.discardDraftsPartial":`已丢弃 {discarded} 项;{failed} 项失败。`,"engine.packages.detail.discardDraftsOk":`所有待发布更改已丢弃,已回到发布版本。`,"engine.packages.detail.deleteConfirm":`删除 "{name}" 及其所有数据?
|
|
12
12
|
|
|
@@ -14,4 +14,4 @@ Country`,"designer.field.kind":`Field`,"designer.field.close":`Close`,"designer.
|
|
|
14
14
|
|
|
15
15
|
确定 = 同时删除所有记录(破坏性)。取消 = 保留记录,仅删除结构。`,"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.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.editLink":`在本包的“记录共享基线(OWD)”总览中编辑`,"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.basics.editHint":`编辑名称 / 标签`,"perm.cap.none":`无附加系统能力`,"perm.cap.add":`添加能力`,"perm.badge.platform":`平台内置`,"perm.badge.package":`包内置`,"perm.badge.custom":`本环境自定义`,"perm.badge.default":`新用户默认`,"perm.field.loading":`加载字段中…`,"perm.field.empty":`该对象未注册字段。`,"perm.field.filter":`筛选字段…`,"perm.field.filterEmpty":`没有匹配的字段。`,"perm.field.bulk.readable":`全部可读`,"perm.field.bulk.writable":`全部可写`,"perm.field.bulk.clear":`清空`,"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.cel.valid":`CEL 有效`,"perm.cel.suggestions":`字段与作用域建议`,"perm.cel.type":`返回类型:`,"perm.cel.type.number":`数字`,"perm.cel.type.text":`文本`,"perm.cel.type.boolean":`布尔`,"perm.cel.type.date":`日期`,"perm.cel.type.unknown":`未知`,"perm.cel.type.unknownHint":`引擎无法证明唯一类型。用 double() / int() / string() 包裹操作数以固定类型——只有可证明为数字的公式才能作为数据集度量。`,"perm.cel.saveBlocked":`请先修复 CEL 语法错误再保存。`,"perm.inspector.saveBlocked":`请先修复检查器中列出的问题再保存。`,"perm.cel.test.title":`测试策略`,"perm.cel.test.help":`用示例记录与操作用户对该条件进行试运行(与服务端同一 CEL 引擎),在保存前查看该行是允许还是拒绝。`,"perm.cel.test.run":`测试`,"perm.cel.test.clause":`子句`,"perm.cel.test.noPredicate":`请先填写 USING 或 CHECK 条件,再进行测试。`,"perm.cel.test.record":`示例记录`,"perm.cel.test.user":`操作用户`,"perm.cel.test.allow":`允许`,"perm.cel.test.allowHint":`记录在范围内 —— 持有者可访问。`,"perm.cel.test.deny":`拒绝`,"perm.cel.test.denyHint":`记录不在范围内 —— 对持有者不可见。`,"perm.cel.test.nonBool":`非布尔结果`,"perm.cel.test.nonBoolHint":`行过滤条件应返回 true 或 false。`,"perm.cel.test.error":`求值错误`,"perm.cel.test.unavailable":`CEL 引擎不可用`,"perm.cel.test.unavailableHint":`浏览器内 CEL 引擎加载失败。`,"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.businessUnitRequired":`请先填写业务单元 — 没有业务单元的范围在保存记录时会被拒绝。`,"perm.admin.includeSubtree":`包含子树`,"perm.admin.manageAssignments":`管理分配`,"perm.admin.manageBindings":`管理绑定`,"perm.admin.authorEnvironmentSets":`编辑环境权限集`,"perm.admin.assignableSets":`可分配权限集`,"perm.admin.noSets":`未加载权限集。`,"perm.loading":`加载权限集 {name}…`,"perm.save.rereadFailed":`保存已取消:无法重新读取当前权限集,其他包贡献的权限行将无法保留。本次未写入任何内容,请重试。`,"perm.save.rereadStale":`已保存。用于刷新此视图的后续读取没有返回,因此下方矩阵显示的是刚刚保存的内容,而不是服务端的副本。请重新打开该权限集以确认。`,"perm.readOnly":`只读(该元数据类型没有运行时写入通道)`,"perm.readOnly.hint":`元数据类型注册表对该类型声明 allowOrgOverride 与 allowRuntimeCreate 均为 false,平台不接受它的任何运行时写入。请修改源工件后重新部署,或由运维启用有文档记载的 OS_METADATA_WRITABLE 逃生阀。`,"perm.readOnly.artifact":`只读(该权限集由代码包提供)`,"perm.readOnly.artifact.hint":`该权限集由代码包提供,因此在此处被锁定:在环境作用域下编辑它属于覆盖(overlay)已打包的条目,而元数据类型注册表对 permission 声明 allowOrgOverride 为 false(ADR-0005 禁止对已打包权限集做按组织覆盖:会造成权限静默漂移)。服务端会以 403 not_overridable 拒绝该写入。请「克隆后自定义」:克隆出的权限集归本组织所有、可在此编辑,升级会继续流向这个基线。其他途径:修改源工件后重新部署、新建一个运行时权限集,或由运维启用有文档记载的 OS_METADATA_WRITABLE 逃生阀。`,"perm.clone.action":`克隆后自定义`,"perm.clone.hint":`通过已发布的 clone_permission_set 动作,创建一份归本组织所有的副本;副本可在此编辑,升级会继续流向由包提供的基线。`,"perm.clone.guidance":`已锁定:该权限集由代码包提供,不能在此处原地编辑(升级会继续流向它)。请「克隆后自定义」—— 克隆出的权限集是归本组织所有的普通权限集,可在此编辑。`,"perm.clone.actionMissing":`无法克隆:当前服务端的 sys_permission_set 对象未发布 clone_permission_set 动作。`,"perm.clone.rowMissing":`无法克隆:未找到名为 {name} 的 sys_permission_set 记录。`,"perm.clone.noName":`克隆已创建,但服务端的响应未给出其名称。请从权限集列表中打开它。`,"perm.clone.done":`已克隆为 {name}。请从权限集列表中打开它进行编辑。`,"perm.save.locked":`保存被拒绝(403 not_overridable):该权限集由代码包提供,服务端不接受原地编辑。请改为「克隆后自定义」—— 克隆出的权限集归本组织所有,升级会继续流向这个基线。`,"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.stub.address":`街道地址
|
|
16
16
|
城市,省 / 州 邮政编码
|
|
17
|
-
国家 / 地区`,"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.externalId":`外部 ID`,"designer.field.trackHistory":`记录历史`,"designer.field.placeholder":`占位符`,"designer.field.group":`分组`,"designer.field.noGroup":`— 无分组 —`,"designer.field.picklistValues":`选项值`,"designer.field.noValues":`暂无选项值。`,"designer.field.optMalformed":`此选项无法在这里编辑`,"designer.field.optMalformed.notAnObject":`它不是一个选项对象。`,"designer.field.optMalformed.valueNotText":"它的 `value` 缺失或不是文本。","designer.field.optMalformed.valueEmpty":"它的 `value` 为空。","designer.field.optMalformed.labelNotText":"它的 `label` 不是文本。","designer.field.optMalformed.colorNotText":"它的 `color` 不是文本。","designer.field.optMalformedHint":`它按原样保留。请在 JSON 源码中修复,或在此处删除。`,"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.summary.object":`子对象`,"designer.field.summary.function":`汇总方式`,"designer.field.summary.fn.count":`计数(子记录数)`,"designer.field.summary.fn.sum":`求和`,"designer.field.summary.fn.min":`最小值`,"designer.field.summary.fn.max":`最大值`,"designer.field.summary.fn.avg":`平均值`,"designer.field.summary.field":`汇总的子字段`,"designer.field.summary.relationshipField":`子关系字段(可选)`,"designer.field.summary.setObjectFirst":`请先选择子对象`,"designer.field.summary.countFieldHint":`计数时不参与计算,但规范要求必填——任选一个子字段即可。`,"designer.field.summary.filterSection":`筛选(参与汇总的子记录)`,"designer.field.summary.addFilter":`添加条件`,"designer.field.summary.noFilter":`未设筛选 — 所有子记录都参与汇总。`,"designer.field.summary.filterHint":`仅满足全部条件的子记录参与汇总——这样同一个子对象就能生成多个不同的汇总值(例如“仅已批准金额”与“总金额”)。`,"designer.field.summary.filterAdvanced":`该筛选使用了行编辑器无法展示的高级结构(OR / 嵌套逻辑)。请直接编辑元数据以保留它。`,"designer.field.summary.hint":`子记录新增、更新或删除时自动重新计算;子对象只有一个指向本对象的关系字段时可自动识别,无需填写。`,"designer.field.precision":`精度`,"designer.field.scale":`小数位`,"designer.field.min":`最小值`,"designer.field.max":`最大值`,"designer.field.maxLength":`最大长度`,"designer.field.valueDomain":`值域`,"designer.field.valueDomainNone":`— 无 —`,"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.conditionalRules":`条件规则 (CEL)`,"designer.field.visibleWhen":`可见条件`,"designer.field.readonlyWhen":`只读条件`,"designer.field.requiredWhen":`必填条件`,"designer.field.conditionalRulesHint":`表达式为真时字段相应地变为可见 / 只读 / 必填。用 record.<字段> 引用当前记录,previous.<字段> 引用最近保存的值,parent.<字段>(主从明细行)引用表头记录。`,"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.more":`更多`,"engine.studio.autoSaving":`保存中…`,"engine.studio.data.tab.advanced":`高级`,"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.pkg.manageMissing":`软件包 {id} 不在已安装列表中 —— 可能已在别处被删除或卸载。`,"engine.studio.pkg.manageRefreshFailed":`软件包 {id} 在该操作后未能刷新 —— 已关闭面板,以免把操作前的记录当作最新呈现。{error}`,"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.fieldType.text":`单行文本`,"engine.fieldType.textarea":`多行文本`,"engine.fieldType.email":`邮箱`,"engine.fieldType.url":`网址`,"engine.fieldType.phone":`电话`,"engine.fieldType.password":`密码`,"engine.fieldType.markdown":`Markdown`,"engine.fieldType.html":`HTML`,"engine.fieldType.richtext":`富文本`,"engine.fieldType.number":`数字`,"engine.fieldType.currency":`货币`,"engine.fieldType.percent":`百分比`,"engine.fieldType.date":`日期`,"engine.fieldType.datetime":`日期时间`,"engine.fieldType.time":`时间`,"engine.fieldType.boolean":`复选框`,"engine.fieldType.toggle":`开关`,"engine.fieldType.select":`下拉选择`,"engine.fieldType.multiselect":`多选`,"engine.fieldType.radio":`单选`,"engine.fieldType.checkboxes":`复选组`,"engine.fieldType.lookup":`查找关系`,"engine.fieldType.master_detail":`主从关系`,"engine.fieldType.tree":`树形关系`,"engine.fieldType.image":`图片`,"engine.fieldType.file":`文件`,"engine.fieldType.avatar":`头像`,"engine.fieldType.video":`视频`,"engine.fieldType.audio":`音频`,"engine.fieldType.formula":`公式`,"engine.fieldType.summary":`汇总`,"engine.fieldType.autonumber":`自动编号`,"engine.fieldType.composite":`复合字段`,"engine.fieldType.repeater":`重复字段`,"engine.fieldType.location":`地理坐标`,"engine.fieldType.address":`地址`,"engine.fieldType.code":`代码`,"engine.fieldType.json":`JSON`,"engine.fieldType.color":`颜色`,"engine.fieldType.rating":`评分`,"engine.fieldType.slider":`滑块`,"engine.fieldType.signature":`签名`,"engine.fieldType.qrcode":`二维码`,"engine.fieldType.progress":`进度条`,"engine.fieldType.tags":`标签`,"engine.fieldType.vector":`向量`,"engine.fieldCategory.text":`文本`,"engine.fieldCategory.number":`数值`,"engine.fieldCategory.date":`日期/时间`,"engine.fieldCategory.logic":`逻辑`,"engine.fieldCategory.selection":`选择`,"engine.fieldCategory.relation":`关系`,"engine.fieldCategory.media":`媒体`,"engine.fieldCategory.calculated":`计算`,"engine.fieldCategory.advanced":`高级`,"engine.studio.aiCopilot":`AI 副驾`,"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.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)—— 本对象最重要的字段,顺序即展示顺序;需要概览展示一条记录的界面都从中取用,各自能放下多少取多少`,"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":`(未设置 —— 发布会被拒绝)`,"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":`未设置 —— 该对象无法发布(security-owd-unset)。运行时确实会回落为 Private(ADR-0090 D1),但这条基线必须是显式作出的决定,而不是疏漏。请选择一个模型 —— 选 Private 的行为完全相同,区别在于它是有意选定的。`,"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.capSearchable":`全局搜索(searchable)`,"engine.studio.settings.capSearchableDesc":`将该对象的记录纳入跨对象全局搜索。关闭后记录不再出现在全局搜索结果中。匹配哪些字段由对象的 searchableFields 配置,与此开关无关。`,"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.idStrippedNotice":`已移除不支持的字符——仅允许小写字母、数字、点、连字符和下划线`,"engine.studio.pkg.idFormatHint":`请使用带至少一个点的反向域名标识,如 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.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.internalId":`内部标识`,"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.modeDesign":`设计`,"engine.studio.if.modeRun":`运行`,"engine.studio.if.tabCanvas":`画布`,"engine.studio.if.noAppTitle":`这个软件包还没有应用`,"engine.studio.if.noAppHint":`创建一个应用来设计它的导航与界面。`,"engine.studio.if.designersMissing":`本次会话没有注册任何元数据设计器,因此无法在这里预览或设计 {type}。`,"engine.studio.if.noDesigner":`没有为 {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.studioCanvasNoBlocks":`此画布渲染的是运行态应用,而不是积木树 —— 这里没有可选中的积木,也没有可在本面板编辑的内容。`,"engine.studio.inspector.designersMissing":`本次会话没有注册任何元数据设计器,这里没有可编辑的内容。`,"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.owdLabel":`记录共享模型(OWD)—— 谁能看到他人拥有的记录`,"engine.studio.data.owdHint":`发布必填,之后可在“设置 → 记录共享模型”中修改。Private 与未设置时运行时的实际行为一致。`,"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.editorMissing":`本次会话没有注册操作编辑器,因此无法在这里编辑该操作的属性。`,"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.layoutBadgeClean":`草稿布局`,"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.data.fieldInspectorMissing":`本次会话没有注册字段检查器,因此无法在这里编辑该字段的属性。`,"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.auto.designersMissing":`本次会话没有注册任何元数据设计器,因此无法在这里设计该流程。`,"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.owd.railLabel":`记录共享(OWD)`,"engine.studio.owd.title":`记录共享基线(OWD)`,"engine.studio.owd.subtitle":`对象 × 组织级默认`,"engine.studio.owd.description":`本包每个对象的组织级默认(sharingModel / externalSharingModel)—— 一屏审计基线并批量修改。改动以“逐对象草稿”保存,随包发布上线,与对象“设置”页完全一致。`,"engine.studio.owd.colObject":`对象`,"engine.studio.owd.colInternal":`内部(sharingModel)`,"engine.studio.owd.colExternal":`外部(externalSharingModel)`,"engine.studio.owd.none":`本包未声明任何对象。`,"engine.studio.owd.loadFailed":`加载本包对象失败。`,"engine.studio.owd.save":`保存 {count} 处改动`,"engine.studio.owd.saveNone":`无改动`,"engine.studio.owd.saved":`已保存 {count} 个对象草稿。`,"engine.studio.owd.unsaved":`未保存`,"engine.studio.owd.blockedSave":`有行的外部基线宽于内部模型(ADR-0090 D11),请先收窄后再保存。`,"engine.studio.owd.widerError":`外部宽于内部 —— 请收窄(private < 公共只读 < 公共读写)。`,"engine.studio.owd.byParent":`受父级控制 → {master}`,"engine.studio.owd.byParentUnknown":`受父级控制(主记录)`,"engine.studio.owd.masterTip":`受父级控制 —— 记录可见性继承自主记录,没有独立的外部基线开关。`,"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":`对象 API 名称`,"engine.studio.access.explain.objectSelect":`选择对象…`,"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.item":`导航项 {n}`,"engine.appNav.itemOne":`项`,"engine.appNav.itemOther":`项`};function s(e){return(e??``).toLowerCase().startsWith(`zh`)}var c={start:{triggerType:{label:`触发方式`,help:`流程何时启动。记录触发在数据变更时触发;定时触发按 cron 触发。`,opts:{"record-after-create":`记录创建后`,"record-after-update":`记录更新后`,"record-after-write":`记录创建或更新后`,"record-before-update":`记录更新前`,"record-after-delete":`记录删除后`,schedule:`定时(cron)`,time_relative:`相对时间(日期扫描)`,manual:`手动 / 自动启动`,api:`Webhook / API`}},secret:{label:`密钥`,help:`入站 hook 用来校验每一次请求的流程级密钥。只写不读:已保存的密钥不会在此显示,留空即保持不变。`,unsetNotice:`未输入密钥。API 触发的流程若开始节点没有密钥,会被拒绝。此流程已保存的密钥在留空时保持不变。`},objectName:{label:`对象`,help:`记录 / 定时扫描触发的目标对象。`},condition:{label:`进入条件`,help:`CEL 表达式 —— 仅当其为 true 时流程才运行(相对时间扫描时对每条匹配记录做门控)。留空则每次事件都运行。`},"schedule.expression":{label:`Cron 表达式`,help:`Cron 表达式 —— 流程运行的时刻。相对时间扫描留空默认每日。`},"timeRelative.object":{label:`扫描对象`,help:`每次运行被扫描的对象。`},"timeRelative.dateField":{label:`日期字段`,help:`与今天比较的日期 / 日期时间字段。`},"timeRelative.withinDays":{label:`天数范围内`,help:`范围模式:当日期在今天前后 N 天内时触发(负值 = 逾期回溯)。若用偏移天数则留空。`},"timeRelative.offsetDays":{label:`偏移天数`,help:`偏移模式:当日期恰好等于今天 + 各偏移量时触发(如 60、30、7)。若用天数范围则留空。`},"timeRelative.filter":{label:`附加筛选`,help:`与日期窗口做 AND 的可选筛选(如 status = active)。`},"timeRelative.maxRecords":{label:`每次最多记录数`,help:`每次扫描启动的记录数上限(默认 1000)。`},criteria:{label:`进入条件(旧)`,help:`旧字段 —— 建议使用“进入条件”(condition)。`}},end:{outcome:{label:`结果`,help:`运行在此处如何结束。“已完成”是普通终态,也是省略该键时的取值。“已拒绝”把拒绝记为一等结果 —— 它是一次成功的评估,只是结论为否 —— 并要求在下方字段中给出拒绝理由 message({token} 模板)。`,opts:{completed:`已完成`,refused:`已拒绝`}},message:{label:`拒绝原因`,help:`当结果为“已拒绝”时必填;结果为“已完成”时则被拒收 —— 已完成的结束节点不渲染任何文本,该键会成为静默的空操作。支持 {token} 模板(如 {record.name}),与屏幕节点的“描述”一致。`}},decision:{conditions:{label:`分支`,help:`每个分支包含标签、CEL 表达式和目标节点。表达式为 “true” 的分支即默认 / else 路径。选择目标会接线该分支的出边(创建或更新),清空则断开该边。`,cols:{label:{label:`标签`},expression:{label:`表达式`},target:{label:`目标节点`}}},condition:{label:`单一条件`,help:`旧的单分支条件(CEL)。建议使用上方“分支”;每条边的条件也可写在出边上。`}},assignment:{assignments:{label:`赋值`,help:`设置变量:每个键为一个变量,值为表达式或字面量。`}},loop:{collection:{label:`集合`,help:`解析为待遍历项的表达式。`},iteratorVariable:{label:`当前项变量`,help:`存放当前项的循环变量。`},indexVariable:{label:`索引变量`,help:`存放当前索引的可选循环变量。`},maxIterations:{label:`最大迭代次数`}},map:{collection:{label:`集合`,help:`解析为待逐项处理数组的表达式。`},flowName:{label:`每项子流程`,help:`为每一项运行的子流程 —— 它可以暂停(如审批)。`},iteratorVariable:{label:`当前项变量`},itemObject:{label:`项对象`,help:`当项为记录时,它们所属的对象(将每项暴露为子流程的记录)。`},outputVariable:{label:`输出变量`,help:`各项子流程的输出,按顺序收集。`}},create_record:{objectName:{label:`对象`},fields:{label:`字段值`,help:`写入新记录的字段值。`},outputVariable:{label:`输出变量`}},update_record:{objectName:{label:`对象`},filter:{label:`筛选`,help:`标识待更新记录的字段 / 值对(如 id → {recordId})。`},fields:{label:`字段值`,help:`要写入的字段值。`}},delete_record:{objectName:{label:`对象`},filter:{label:`筛选`,help:`标识待删除记录的字段 / 值对。`}},get_record:{objectName:{label:`对象`},filter:{label:`筛选`,help:`待匹配的字段 / 值对(如 status → active)。像 {"$ne": null} 这样的运算符值会被保留。`},limit:{label:`数量上限`},outputVariable:{label:`输出变量`}},http_request:{method:{label:`方法`},url:{label:`URL`},headers:{label:`请求头`,help:`请求头(如 Authorization、Content-Type)。`},body:{label:`请求体`,help:`请求负载(JSON 或表达式)。`},outputVariable:{label:`输出变量`},durable:{label:`持久化(异步)`,help:`通过持久化队列即发即忘(异步投递)。`},signingSecret:{label:`签名密钥`,help:`HMAC-SHA256 密钥 → 写入 X-Objectstack 签名请求头。`},timeoutMs:{label:`超时(毫秒)`}},script:{actionType:{label:`动作类型`,help:`本步骤如何运行。“调用函数”会调用已注册的函数 —— 真正执行逻辑的路径。`,opts:{invoke_function:`调用函数`,email:`邮件`,slack:`Slack`}},function:{label:`函数`,help:`要调用的已注册函数 —— 经 defineStack({ functions }) 声明。优先于动作类型。`},inputs:{label:`输入`,help:`传给函数的值;{var} 引用会按流程变量解析。`},outputVariable:{label:`输出变量`,help:`绑定函数返回值的流程变量,供后续步骤使用。`},template:{label:`模板`,help:`消息模板 id。`},recipients:{label:`收件人`,help:`每行一个收件人(用户 id、字段引用或地址)。`},variables:{label:`模板变量`,help:`注入模板的值。`},script:{label:`代码(不执行)`,help:`内置运行时不执行内联脚本 —— 此节点为 no-op。请把逻辑移入已注册函数并使用“调用函数”。`},timeoutMs:{label:`超时(毫秒)`}},screen:{title:{label:`标题`,help:`显示在页面上方的标题。`},description:{label:`描述`,help:`正文文本。会插值 {var} 引用(如 {approval_path})。`},fields:{label:`字段`,help:`此页面收集的输入字段。留空则为纯消息页面。`,cols:{name:{label:`名称`},label:{label:`标签`},type:{label:`类型`},required:{label:`必填`},visibleWhen:{label:`显示条件`}}},waitForInput:{label:`等待输入`,help:`即使没有字段也暂停以展示此页面(消息 / 确认)。无字段且关闭此项则为服务端直通。`},objectName:{label:`对象表单`,help:`渲染该对象完整的新建 / 编辑表单(含主从),而非扁平字段列表。`},idVariable:{label:`保存记录变量`,help:`仅对象表单:绑定到已保存记录 id 的变量,供后续步骤使用。`},mode:{label:`表单模式`,help:`仅对象表单。`,opts:{create:`新建`,edit:`编辑`}},defaults:{label:`表单默认值`,help:`仅对象表单:预填值(如 account → {account_id})。`}},approval:{approvers:{label:`审批人`,help:`谁可以处理此步骤。为节点的出边打上 “approve” 和 “reject” 标签。`,cols:{type:{label:`类型`,opts:{user:`用户`,position:`岗位`,org_membership_level:`组织成员(所有者 / 管理员 / 成员)`,team:`团队`,department:`部门`,manager:`上级`,field:`字段`,queue:`队列`}},value:{label:`值`},group:{label:`分组`}}},behavior:{label:`审批方式`,help:`多个审批人如何组合。任何一个拒绝在所有模式下都是否决。`,opts:{first_response:`首个响应生效`,unanimous:`全员通过`,quorum:`法定人数(N 选 M)`,per_group:`分组会签(每组签核)`}},minApprovals:{label:`最少审批数`,help:`所需审批数 —— quorum 为总数,per_group 为每组。服务端会做钳制以防死锁。`},lockRecord:{label:`锁定记录`,help:`此节点待处理期间锁定触发记录,禁止编辑。`},approvalStatusField:{label:`状态字段`,help:`将请求状态(待审 / 通过 / 拒绝)镜像到的业务对象字段。应为只读。`},"escalation.enabled":{label:`SLA 升级`,help:`在超时内未做决策时升级。`},"escalation.timeoutHours":{label:`超时(小时)`},"escalation.action":{label:`超时动作`,opts:{notify:`通知`,reassign:`改派`,auto_approve:`自动通过`,auto_reject:`自动拒绝`}},"escalation.escalateTo":{label:`升级至`},"escalation.notifySubmitter":{label:`通知提交人`},maxRevisions:{label:`最多退回次数`,help:`请求自动拒绝前的最多退回修订次数(0 表示禁用退回)。需要一条 “revise” 出边才生效。`}},wait:{"waitEventConfig.eventType":{label:`等待类型`,opts:{timer:`定时器`,signal:`信号`,webhook:`Webhook`,manual:`手动`,condition:`条件`}},"waitEventConfig.timerDuration":{label:`时长`,help:`ISO 8601 时长(如 PT1H、P3D)。`},"waitEventConfig.signalName":{label:`信号名称`}},subflow:{flowName:{label:`流程`},input:{label:`输入映射`,help:`传给子流程输入变量的值。`},outputVariable:{label:`输出变量`},timeoutMs:{label:`超时(毫秒)`}},connector_action:{"connectorConfig.connectorId":{label:`连接器`},"connectorConfig.actionId":{label:`动作`},"connectorConfig.input":{label:`输入`,help:`连接器动作的映射输入。`},connectorId:{label:`连接器`,help:`已注册的连接器名称。`},actionId:{label:`动作`,help:`连接器声明的动作标识。`},input:{label:`输入`,help:`连接器动作的映射输入。`},timeoutMs:{label:`超时(毫秒)`}},try_catch:{errorVariable:{label:`错误变量`,help:`在 catch 区域内绑定所捕获错误的变量。`},retry:{label:`重试`}},notify:{recipients:{label:`收件人`,help:`接收通知的用户 id / 受众。`},title:{label:`标题`,help:`通知标题(别名:subject)。`},message:{label:`内容`,help:`通知正文(别名:body)。`},channels:{label:`渠道`,help:`扇出投递的渠道(默认站内)。`},topic:{label:`主题`,help:`事件主题(默认 "notify")。`},severity:{label:`级别`,help:`info | warning | critical`},sourceObject:{label:`来源对象`,help:`通知所关联记录的对象名。`},sourceId:{label:`来源记录`,help:`通知链接到的记录 id。`},actorId:{label:`触发用户`,help:`引发该事件的用户 id。`},url:{label:`链接 URL`,help:`显式的点击跳转 URL;覆盖默认值。`},payload:{label:`附加数据`,help:`合并进模板输入的额外数据。`}},boundary_event:{"boundaryConfig.attachedToNodeId":{label:`附加到`,help:`此边界事件所监视的宿主节点。`},"boundaryConfig.eventType":{label:`事件类型`,opts:{error:`错误`,timer:`定时器`,signal:`信号`,cancel:`取消`}},"boundaryConfig.interrupting":{label:`中断`,help:`此事件触发时取消宿主活动。`},"boundaryConfig.errorCode":{label:`错误码`},"boundaryConfig.timerDuration":{label:`时长`},"boundaryConfig.signalName":{label:`信号名称`}},legacy_action:{action:{label:`动作`},objectName:{label:`对象`},recordId:{label:`记录`},params:{label:`参数`,help:`动作输入。值会自动定型:3 → 数字,true → 布尔。`},fields:{label:`字段值`},outputVariable:{label:`输出变量`}}};function l(e,t){return c[e]?.[t]}function u(e){return(e??``).toLowerCase().startsWith(`zh`)?{types:n,domains:i,strings:o}:{types:t,domains:r,strings:a}}function d(e,t,n){return u(t).types[e]||(n??e)}function f(e,t){return u(t).domains[e]??e}function p(e,t,n){return u(t).strings[`engine.flowNode.${e}.label`]||(n??e)}function m(e,t,n){return u(t).strings[`engine.flowNode.${e}.hint`]||n}var h={type:{autolaunched:`自动启动`,record_change:`记录变更`,schedule:`定时`,time_relative:`相对时间`,screen:`交互页面`,api:`API`,manual:`手动`,webhook:`Webhook`,event:`平台事件`},status:{active:`启用`,draft:`草稿`,inactive:`停用`},runAs:{user:`用户`,system:`系统`,owner:`记录所有者`},onError:{stop:`停止`,continue:`继续`,rollback:`回滚`,retry:`重试`,fail:`失败`}};function g(e,t,n){return s(n)?h[e]?.[t]??t:t}var _={op:{create:`创建`,update:`更新`,delete:`删除`,tombstone:`已删除`,publish:`发布`,revert:`回滚`,save:`保存`,restore:`恢复`,rollback:`回滚`},outcome:{allowed:`允许`,denied:`拒绝`,forced:`强制`},lock:{none:`无`,"no-overlay":`禁止编辑`,"no-delete":`禁止删除`,full:`完全锁定`},layer:{artifact:`工件`,none:`无`,merged:`合并`,set:`已设`,overlay:`覆盖`,org:`组织`,env:`环境`}};function v(e,t,n){return s(n)?_[e]?.[t]??t:t}var y={type:`type`,status:`status`,runAs:`runAs`,run_as:`runAs`};function b(e,t,n){if(!s(n))return t;let r=y[e];if(r&&h[r]?.[t])return h[r][t];let i=u(n).strings[`engine.enum.${e}.${t}`];if(i)return i;if(e===`type`){let e=u(n).strings[`engine.flowNode.${t}.label`];if(e)return e}return t}var x={id:`ID`,name:`名称`,label:`标签`,type:`类型`,description:`描述`,source:`源节点`,target:`目标节点`,condition:`条件`,isDefault:`默认`,nodes:`节点`,edges:`连线`,config:`配置`,outputVariable:`输出变量`},S={source:`源节点 ID`,target:`目标节点 ID`,condition:`用于分支的 CEL 布尔表达式`,isDefault:`当没有其他条件匹配时,将此连线标记为默认路径`};function C(e,t,n){if(s(n)){let t=x[e];if(t)return t}return t}function w(e,t,n){if(s(n)){let t=S[e];if(t)return t}return t}function T(e,t){return u(t).strings[e]??e}function E(e,t){return u(t).strings[e]}function D(e,t,n){return T(e,t).replace(/\{(\w+)\}/g,(e,t)=>t in n?String(n[t]):`{${t}}`)}function O(e,t){let n=String(e??``).trim(),r=n.toLowerCase();if(!n||r===`invalid`||r===`invalid input`)return T(`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`?T(`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`?T(`engine.validation.nameRequired`,t):r===`invalid json`?T(`engine.form.invalidJson`,t):n}function k(){let{language:t}=e();return/^zh/i.test(t)?`zh-CN`:`en-US`}export{E as a,g as c,m as d,p as f,k as g,O as h,D as i,f as l,C as m,s as n,v as o,w as p,T as r,b as s,l as t,d as u};
|
|
17
|
+
国家 / 地区`,"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.externalId":`外部 ID`,"designer.field.trackHistory":`记录历史`,"designer.field.placeholder":`占位符`,"designer.field.group":`分组`,"designer.field.noGroup":`— 无分组 —`,"designer.field.picklistValues":`选项值`,"designer.field.noValues":`暂无选项值。`,"designer.field.optMalformed":`此选项无法在这里编辑`,"designer.field.optMalformed.notAnObject":`它不是一个选项对象。`,"designer.field.optMalformed.valueNotText":"它的 `value` 缺失或不是文本。","designer.field.optMalformed.valueEmpty":"它的 `value` 为空。","designer.field.optMalformed.labelNotText":"它的 `label` 不是文本。","designer.field.optMalformed.colorNotText":"它的 `color` 不是文本。","designer.field.optMalformedHint":`它按原样保留。请在 JSON 源码中修复,或在此处删除。`,"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.summary.object":`子对象`,"designer.field.summary.function":`汇总方式`,"designer.field.summary.fn.count":`计数(子记录数)`,"designer.field.summary.fn.sum":`求和`,"designer.field.summary.fn.min":`最小值`,"designer.field.summary.fn.max":`最大值`,"designer.field.summary.fn.avg":`平均值`,"designer.field.summary.field":`汇总的子字段`,"designer.field.summary.relationshipField":`子关系字段(可选)`,"designer.field.summary.setObjectFirst":`请先选择子对象`,"designer.field.summary.countFieldHint":`计数时不参与计算,但规范要求必填——任选一个子字段即可。`,"designer.field.summary.filterSection":`筛选(参与汇总的子记录)`,"designer.field.summary.addFilter":`添加条件`,"designer.field.summary.noFilter":`未设筛选 — 所有子记录都参与汇总。`,"designer.field.summary.filterHint":`仅满足全部条件的子记录参与汇总——这样同一个子对象就能生成多个不同的汇总值(例如“仅已批准金额”与“总金额”)。`,"designer.field.summary.filterAdvanced":`该筛选使用了行编辑器无法展示的高级结构(OR / 嵌套逻辑)。请直接编辑元数据以保留它。`,"designer.field.summary.hint":`子记录新增、更新或删除时自动重新计算;子对象只有一个指向本对象的关系字段时可自动识别,无需填写。`,"designer.field.precision":`精度`,"designer.field.scale":`小数位`,"designer.field.min":`最小值`,"designer.field.max":`最大值`,"designer.field.maxLength":`最大长度`,"designer.field.valueDomain":`值域`,"designer.field.valueDomainNone":`— 无 —`,"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.conditionalRules":`条件规则 (CEL)`,"designer.field.visibleWhen":`可见条件`,"designer.field.readonlyWhen":`只读条件`,"designer.field.requiredWhen":`必填条件`,"designer.field.conditionalRulesHint":`表达式为真时字段相应地变为可见 / 只读 / 必填。用 record.<字段> 引用当前记录,previous.<字段> 引用最近保存的值,parent.<字段>(主从明细行)引用表头记录。`,"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.more":`更多`,"engine.studio.autoSaving":`保存中…`,"engine.studio.data.tab.advanced":`高级`,"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.pkg.manageMissing":`软件包 {id} 不在已安装列表中 —— 可能已在别处被删除或卸载。`,"engine.studio.pkg.manageRefreshFailed":`软件包 {id} 在该操作后未能刷新 —— 已关闭面板,以免把操作前的记录当作最新呈现。{error}`,"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.fieldType.text":`单行文本`,"engine.fieldType.textarea":`多行文本`,"engine.fieldType.email":`邮箱`,"engine.fieldType.url":`网址`,"engine.fieldType.phone":`电话`,"engine.fieldType.password":`密码`,"engine.fieldType.markdown":`Markdown`,"engine.fieldType.html":`HTML`,"engine.fieldType.richtext":`富文本`,"engine.fieldType.number":`数字`,"engine.fieldType.currency":`货币`,"engine.fieldType.percent":`百分比`,"engine.fieldType.date":`日期`,"engine.fieldType.datetime":`日期时间`,"engine.fieldType.time":`时间`,"engine.fieldType.boolean":`复选框`,"engine.fieldType.toggle":`开关`,"engine.fieldType.select":`下拉选择`,"engine.fieldType.multiselect":`多选`,"engine.fieldType.radio":`单选`,"engine.fieldType.checkboxes":`复选组`,"engine.fieldType.lookup":`查找关系`,"engine.fieldType.master_detail":`主从关系`,"engine.fieldType.tree":`树形关系`,"engine.fieldType.image":`图片`,"engine.fieldType.file":`文件`,"engine.fieldType.avatar":`头像`,"engine.fieldType.video":`视频`,"engine.fieldType.audio":`音频`,"engine.fieldType.formula":`公式`,"engine.fieldType.summary":`汇总`,"engine.fieldType.autonumber":`自动编号`,"engine.fieldType.composite":`复合字段`,"engine.fieldType.repeater":`重复字段`,"engine.fieldType.location":`地理坐标`,"engine.fieldType.address":`地址`,"engine.fieldType.code":`代码`,"engine.fieldType.json":`JSON`,"engine.fieldType.color":`颜色`,"engine.fieldType.rating":`评分`,"engine.fieldType.slider":`滑块`,"engine.fieldType.signature":`签名`,"engine.fieldType.qrcode":`二维码`,"engine.fieldType.progress":`进度条`,"engine.fieldType.tags":`标签`,"engine.fieldType.vector":`向量`,"engine.fieldCategory.text":`文本`,"engine.fieldCategory.number":`数值`,"engine.fieldCategory.date":`日期/时间`,"engine.fieldCategory.logic":`逻辑`,"engine.fieldCategory.selection":`选择`,"engine.fieldCategory.relation":`关系`,"engine.fieldCategory.media":`媒体`,"engine.fieldCategory.calculated":`计算`,"engine.fieldCategory.advanced":`高级`,"engine.studio.aiCopilot":`AI 副驾`,"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.installedHeading":`已安装(只读 · 可浏览)`,"engine.studio.landing.orgHeading":`不属于软件包`,"engine.studio.org.name":`组织流程`,"engine.studio.org.hint":`不属于任何软件包的流程`,"engine.studio.org.description":`本组织自有、不属于任何软件包的流程,例如软件包流程的克隆副本。可直接编辑。`,"engine.studio.org.none":`还没有不属于软件包的流程。在 设置 › 打包自动化 中克隆一个软件包流程,即可在这里编辑副本。`,"engine.studio.org.published":`已发布不属于软件包的流程草稿`,"engine.studio.auto.deepLinkMissing":`链接指向的流程「{name}」不在这里。`,"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)—— 本对象最重要的字段,顺序即展示顺序;需要概览展示一条记录的界面都从中取用,各自能放下多少取多少`,"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":`(未设置 —— 发布会被拒绝)`,"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":`未设置 —— 该对象无法发布(security-owd-unset)。运行时确实会回落为 Private(ADR-0090 D1),但这条基线必须是显式作出的决定,而不是疏漏。请选择一个模型 —— 选 Private 的行为完全相同,区别在于它是有意选定的。`,"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.capSearchable":`全局搜索(searchable)`,"engine.studio.settings.capSearchableDesc":`将该对象的记录纳入跨对象全局搜索。关闭后记录不再出现在全局搜索结果中。匹配哪些字段由对象的 searchableFields 配置,与此开关无关。`,"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.idStrippedNotice":`已移除不支持的字符——仅允许小写字母、数字、点、连字符和下划线`,"engine.studio.pkg.idFormatHint":`请使用带至少一个点的反向域名标识,如 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.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.internalId":`内部标识`,"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.modeDesign":`设计`,"engine.studio.if.modeRun":`运行`,"engine.studio.if.tabCanvas":`画布`,"engine.studio.if.noAppTitle":`这个软件包还没有应用`,"engine.studio.if.noAppHint":`创建一个应用来设计它的导航与界面。`,"engine.studio.if.designersMissing":`本次会话没有注册任何元数据设计器,因此无法在这里预览或设计 {type}。`,"engine.studio.if.noDesigner":`没有为 {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.studioCanvasNoBlocks":`此画布渲染的是运行态应用,而不是积木树 —— 这里没有可选中的积木,也没有可在本面板编辑的内容。`,"engine.studio.inspector.designersMissing":`本次会话没有注册任何元数据设计器,这里没有可编辑的内容。`,"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.owdLabel":`记录共享模型(OWD)—— 谁能看到他人拥有的记录`,"engine.studio.data.owdHint":`发布必填,之后可在“设置 → 记录共享模型”中修改。Private 与未设置时运行时的实际行为一致。`,"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.editorMissing":`本次会话没有注册操作编辑器,因此无法在这里编辑该操作的属性。`,"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.layoutBadgeClean":`草稿布局`,"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.data.fieldInspectorMissing":`本次会话没有注册字段检查器,因此无法在这里编辑该字段的属性。`,"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.auto.designersMissing":`本次会话没有注册任何元数据设计器,因此无法在这里设计该流程。`,"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.owd.railLabel":`记录共享(OWD)`,"engine.studio.owd.title":`记录共享基线(OWD)`,"engine.studio.owd.subtitle":`对象 × 组织级默认`,"engine.studio.owd.description":`本包每个对象的组织级默认(sharingModel / externalSharingModel)—— 一屏审计基线并批量修改。改动以“逐对象草稿”保存,随包发布上线,与对象“设置”页完全一致。`,"engine.studio.owd.colObject":`对象`,"engine.studio.owd.colInternal":`内部(sharingModel)`,"engine.studio.owd.colExternal":`外部(externalSharingModel)`,"engine.studio.owd.none":`本包未声明任何对象。`,"engine.studio.owd.loadFailed":`加载本包对象失败。`,"engine.studio.owd.save":`保存 {count} 处改动`,"engine.studio.owd.saveNone":`无改动`,"engine.studio.owd.saved":`已保存 {count} 个对象草稿。`,"engine.studio.owd.unsaved":`未保存`,"engine.studio.owd.blockedSave":`有行的外部基线宽于内部模型(ADR-0090 D11),请先收窄后再保存。`,"engine.studio.owd.widerError":`外部宽于内部 —— 请收窄(private < 公共只读 < 公共读写)。`,"engine.studio.owd.byParent":`受父级控制 → {master}`,"engine.studio.owd.byParentUnknown":`受父级控制(主记录)`,"engine.studio.owd.masterTip":`受父级控制 —— 记录可见性继承自主记录,没有独立的外部基线开关。`,"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":`对象 API 名称`,"engine.studio.access.explain.objectSelect":`选择对象…`,"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.item":`导航项 {n}`,"engine.appNav.itemOne":`项`,"engine.appNav.itemOther":`项`};function s(e){return(e??``).toLowerCase().startsWith(`zh`)}var c={start:{triggerType:{label:`触发方式`,help:`流程何时启动。记录触发在数据变更时触发;定时触发按 cron 触发。`,opts:{"record-after-create":`记录创建后`,"record-after-update":`记录更新后`,"record-after-write":`记录创建或更新后`,"record-before-update":`记录更新前`,"record-after-delete":`记录删除后`,schedule:`定时(cron)`,time_relative:`相对时间(日期扫描)`,manual:`手动 / 自动启动`,api:`Webhook / API`}},secret:{label:`密钥`,help:`入站 hook 用来校验每一次请求的流程级密钥。只写不读:已保存的密钥不会在此显示,留空即保持不变。`,unsetNotice:`未输入密钥。API 触发的流程若开始节点没有密钥,会被拒绝。此流程已保存的密钥在留空时保持不变。`},objectName:{label:`对象`,help:`记录 / 定时扫描触发的目标对象。`},condition:{label:`进入条件`,help:`CEL 表达式 —— 仅当其为 true 时流程才运行(相对时间扫描时对每条匹配记录做门控)。留空则每次事件都运行。`},"schedule.expression":{label:`Cron 表达式`,help:`Cron 表达式 —— 流程运行的时刻。相对时间扫描留空默认每日。`},"timeRelative.object":{label:`扫描对象`,help:`每次运行被扫描的对象。`},"timeRelative.dateField":{label:`日期字段`,help:`与今天比较的日期 / 日期时间字段。`},"timeRelative.withinDays":{label:`天数范围内`,help:`范围模式:当日期在今天前后 N 天内时触发(负值 = 逾期回溯)。若用偏移天数则留空。`},"timeRelative.offsetDays":{label:`偏移天数`,help:`偏移模式:当日期恰好等于今天 + 各偏移量时触发(如 60、30、7)。若用天数范围则留空。`},"timeRelative.filter":{label:`附加筛选`,help:`与日期窗口做 AND 的可选筛选(如 status = active)。`},"timeRelative.maxRecords":{label:`每次最多记录数`,help:`每次扫描启动的记录数上限(默认 1000)。`},criteria:{label:`进入条件(旧)`,help:`旧字段 —— 建议使用“进入条件”(condition)。`}},end:{outcome:{label:`结果`,help:`运行在此处如何结束。“已完成”是普通终态,也是省略该键时的取值。“已拒绝”把拒绝记为一等结果 —— 它是一次成功的评估,只是结论为否 —— 并要求在下方字段中给出拒绝理由 message({token} 模板)。`,opts:{completed:`已完成`,refused:`已拒绝`}},message:{label:`拒绝原因`,help:`当结果为“已拒绝”时必填;结果为“已完成”时则被拒收 —— 已完成的结束节点不渲染任何文本,该键会成为静默的空操作。支持 {token} 模板(如 {record.name}),与屏幕节点的“描述”一致。`}},decision:{conditions:{label:`分支`,help:`每个分支包含标签、CEL 表达式和目标节点。表达式为 “true” 的分支即默认 / else 路径。选择目标会接线该分支的出边(创建或更新),清空则断开该边。`,cols:{label:{label:`标签`},expression:{label:`表达式`},target:{label:`目标节点`}}},condition:{label:`单一条件`,help:`旧的单分支条件(CEL)。建议使用上方“分支”;每条边的条件也可写在出边上。`}},assignment:{assignments:{label:`赋值`,help:`设置变量:每个键为一个变量,值为表达式或字面量。`}},loop:{collection:{label:`集合`,help:`解析为待遍历项的表达式。`},iteratorVariable:{label:`当前项变量`,help:`存放当前项的循环变量。`},indexVariable:{label:`索引变量`,help:`存放当前索引的可选循环变量。`},maxIterations:{label:`最大迭代次数`}},map:{collection:{label:`集合`,help:`解析为待逐项处理数组的表达式。`},flowName:{label:`每项子流程`,help:`为每一项运行的子流程 —— 它可以暂停(如审批)。`},iteratorVariable:{label:`当前项变量`},itemObject:{label:`项对象`,help:`当项为记录时,它们所属的对象(将每项暴露为子流程的记录)。`},outputVariable:{label:`输出变量`,help:`各项子流程的输出,按顺序收集。`}},create_record:{objectName:{label:`对象`},fields:{label:`字段值`,help:`写入新记录的字段值。`},outputVariable:{label:`输出变量`}},update_record:{objectName:{label:`对象`},filter:{label:`筛选`,help:`标识待更新记录的字段 / 值对(如 id → {recordId})。`},fields:{label:`字段值`,help:`要写入的字段值。`}},delete_record:{objectName:{label:`对象`},filter:{label:`筛选`,help:`标识待删除记录的字段 / 值对。`}},get_record:{objectName:{label:`对象`},filter:{label:`筛选`,help:`待匹配的字段 / 值对(如 status → active)。像 {"$ne": null} 这样的运算符值会被保留。`},limit:{label:`数量上限`},outputVariable:{label:`输出变量`}},http_request:{method:{label:`方法`},url:{label:`URL`},headers:{label:`请求头`,help:`请求头(如 Authorization、Content-Type)。`},body:{label:`请求体`,help:`请求负载(JSON 或表达式)。`},outputVariable:{label:`输出变量`},durable:{label:`持久化(异步)`,help:`通过持久化队列即发即忘(异步投递)。`},signingSecret:{label:`签名密钥`,help:`HMAC-SHA256 密钥 → 写入 X-Objectstack 签名请求头。`},timeoutMs:{label:`超时(毫秒)`}},script:{actionType:{label:`动作类型`,help:`本步骤如何运行。“调用函数”会调用已注册的函数 —— 真正执行逻辑的路径。`,opts:{invoke_function:`调用函数`,email:`邮件`,slack:`Slack`}},function:{label:`函数`,help:`要调用的已注册函数 —— 经 defineStack({ functions }) 声明。优先于动作类型。`},inputs:{label:`输入`,help:`传给函数的值;{var} 引用会按流程变量解析。`},outputVariable:{label:`输出变量`,help:`绑定函数返回值的流程变量,供后续步骤使用。`},template:{label:`模板`,help:`消息模板 id。`},recipients:{label:`收件人`,help:`每行一个收件人(用户 id、字段引用或地址)。`},variables:{label:`模板变量`,help:`注入模板的值。`},script:{label:`代码(不执行)`,help:`内置运行时不执行内联脚本 —— 此节点为 no-op。请把逻辑移入已注册函数并使用“调用函数”。`},timeoutMs:{label:`超时(毫秒)`}},screen:{title:{label:`标题`,help:`显示在页面上方的标题。`},description:{label:`描述`,help:`正文文本。会插值 {var} 引用(如 {approval_path})。`},fields:{label:`字段`,help:`此页面收集的输入字段。留空则为纯消息页面。`,cols:{name:{label:`名称`},label:{label:`标签`},type:{label:`类型`},required:{label:`必填`},visibleWhen:{label:`显示条件`}}},waitForInput:{label:`等待输入`,help:`即使没有字段也暂停以展示此页面(消息 / 确认)。无字段且关闭此项则为服务端直通。`},objectName:{label:`对象表单`,help:`渲染该对象完整的新建 / 编辑表单(含主从),而非扁平字段列表。`},idVariable:{label:`保存记录变量`,help:`仅对象表单:绑定到已保存记录 id 的变量,供后续步骤使用。`},mode:{label:`表单模式`,help:`仅对象表单。`,opts:{create:`新建`,edit:`编辑`}},defaults:{label:`表单默认值`,help:`仅对象表单:预填值(如 account → {account_id})。`}},approval:{approvers:{label:`审批人`,help:`谁可以处理此步骤。为节点的出边打上 “approve” 和 “reject” 标签。`,cols:{type:{label:`类型`,opts:{user:`用户`,position:`岗位`,org_membership_level:`组织成员(所有者 / 管理员 / 成员)`,team:`团队`,department:`部门`,manager:`上级`,field:`字段`,queue:`队列`}},value:{label:`值`},group:{label:`分组`}}},behavior:{label:`审批方式`,help:`多个审批人如何组合。任何一个拒绝在所有模式下都是否决。`,opts:{first_response:`首个响应生效`,unanimous:`全员通过`,quorum:`法定人数(N 选 M)`,per_group:`分组会签(每组签核)`}},minApprovals:{label:`最少审批数`,help:`所需审批数 —— quorum 为总数,per_group 为每组。服务端会做钳制以防死锁。`},lockRecord:{label:`锁定记录`,help:`此节点待处理期间锁定触发记录,禁止编辑。`},approvalStatusField:{label:`状态字段`,help:`将请求状态(待审 / 通过 / 拒绝)镜像到的业务对象字段。应为只读。`},"escalation.enabled":{label:`SLA 升级`,help:`在超时内未做决策时升级。`},"escalation.timeoutHours":{label:`超时(小时)`},"escalation.action":{label:`超时动作`,opts:{notify:`通知`,reassign:`改派`,auto_approve:`自动通过`,auto_reject:`自动拒绝`}},"escalation.escalateTo":{label:`升级至`},"escalation.notifySubmitter":{label:`通知提交人`},maxRevisions:{label:`最多退回次数`,help:`请求自动拒绝前的最多退回修订次数(0 表示禁用退回)。需要一条 “revise” 出边才生效。`}},wait:{"waitEventConfig.eventType":{label:`等待类型`,opts:{timer:`定时器`,signal:`信号`,webhook:`Webhook`,manual:`手动`,condition:`条件`}},"waitEventConfig.timerDuration":{label:`时长`,help:`ISO 8601 时长(如 PT1H、P3D)。`},"waitEventConfig.signalName":{label:`信号名称`}},subflow:{flowName:{label:`流程`},input:{label:`输入映射`,help:`传给子流程输入变量的值。`},outputVariable:{label:`输出变量`},timeoutMs:{label:`超时(毫秒)`}},connector_action:{"connectorConfig.connectorId":{label:`连接器`},"connectorConfig.actionId":{label:`动作`},"connectorConfig.input":{label:`输入`,help:`连接器动作的映射输入。`},connectorId:{label:`连接器`,help:`已注册的连接器名称。`},actionId:{label:`动作`,help:`连接器声明的动作标识。`},input:{label:`输入`,help:`连接器动作的映射输入。`},timeoutMs:{label:`超时(毫秒)`}},try_catch:{errorVariable:{label:`错误变量`,help:`在 catch 区域内绑定所捕获错误的变量。`},retry:{label:`重试`}},notify:{recipients:{label:`收件人`,help:`接收通知的用户 id / 受众。`},title:{label:`标题`,help:`通知标题(别名:subject)。`},message:{label:`内容`,help:`通知正文(别名:body)。`},channels:{label:`渠道`,help:`扇出投递的渠道(默认站内)。`},topic:{label:`主题`,help:`事件主题(默认 "notify")。`},severity:{label:`级别`,help:`info | warning | critical`},sourceObject:{label:`来源对象`,help:`通知所关联记录的对象名。`},sourceId:{label:`来源记录`,help:`通知链接到的记录 id。`},actorId:{label:`触发用户`,help:`引发该事件的用户 id。`},url:{label:`链接 URL`,help:`显式的点击跳转 URL;覆盖默认值。`},payload:{label:`附加数据`,help:`合并进模板输入的额外数据。`}},boundary_event:{"boundaryConfig.attachedToNodeId":{label:`附加到`,help:`此边界事件所监视的宿主节点。`},"boundaryConfig.eventType":{label:`事件类型`,opts:{error:`错误`,timer:`定时器`,signal:`信号`,cancel:`取消`}},"boundaryConfig.interrupting":{label:`中断`,help:`此事件触发时取消宿主活动。`},"boundaryConfig.errorCode":{label:`错误码`},"boundaryConfig.timerDuration":{label:`时长`},"boundaryConfig.signalName":{label:`信号名称`}},legacy_action:{action:{label:`动作`},objectName:{label:`对象`},recordId:{label:`记录`},params:{label:`参数`,help:`动作输入。值会自动定型:3 → 数字,true → 布尔。`},fields:{label:`字段值`},outputVariable:{label:`输出变量`}}};function l(e,t){return c[e]?.[t]}function u(e){return(e??``).toLowerCase().startsWith(`zh`)?{types:n,domains:i,strings:o}:{types:t,domains:r,strings:a}}function d(e,t,n){return u(t).types[e]||(n??e)}function f(e,t){return u(t).domains[e]??e}function p(e,t,n){return u(t).strings[`engine.flowNode.${e}.label`]||(n??e)}function m(e,t,n){return u(t).strings[`engine.flowNode.${e}.hint`]||n}var h={type:{autolaunched:`自动启动`,record_change:`记录变更`,schedule:`定时`,time_relative:`相对时间`,screen:`交互页面`,api:`API`,manual:`手动`,webhook:`Webhook`,event:`平台事件`},status:{active:`启用`,draft:`草稿`,inactive:`停用`},runAs:{user:`用户`,system:`系统`,owner:`记录所有者`},onError:{stop:`停止`,continue:`继续`,rollback:`回滚`,retry:`重试`,fail:`失败`}};function g(e,t,n){return s(n)?h[e]?.[t]??t:t}var _={op:{create:`创建`,update:`更新`,delete:`删除`,tombstone:`已删除`,publish:`发布`,revert:`回滚`,save:`保存`,restore:`恢复`,rollback:`回滚`},outcome:{allowed:`允许`,denied:`拒绝`,forced:`强制`},lock:{none:`无`,"no-overlay":`禁止编辑`,"no-delete":`禁止删除`,full:`完全锁定`},layer:{artifact:`工件`,none:`无`,merged:`合并`,set:`已设`,overlay:`覆盖`,org:`组织`,env:`环境`}};function v(e,t,n){return s(n)?_[e]?.[t]??t:t}var y={type:`type`,status:`status`,runAs:`runAs`,run_as:`runAs`};function b(e,t,n){if(!s(n))return t;let r=y[e];if(r&&h[r]?.[t])return h[r][t];let i=u(n).strings[`engine.enum.${e}.${t}`];if(i)return i;if(e===`type`){let e=u(n).strings[`engine.flowNode.${t}.label`];if(e)return e}return t}var x={id:`ID`,name:`名称`,label:`标签`,type:`类型`,description:`描述`,source:`源节点`,target:`目标节点`,condition:`条件`,isDefault:`默认`,nodes:`节点`,edges:`连线`,config:`配置`,outputVariable:`输出变量`},S={source:`源节点 ID`,target:`目标节点 ID`,condition:`用于分支的 CEL 布尔表达式`,isDefault:`当没有其他条件匹配时,将此连线标记为默认路径`};function C(e,t,n){if(s(n)){let t=x[e];if(t)return t}return t}function w(e,t,n){if(s(n)){let t=S[e];if(t)return t}return t}function T(e,t){return u(t).strings[e]??e}function E(e,t){return u(t).strings[e]}function D(e,t,n){return T(e,t).replace(/\{(\w+)\}/g,(e,t)=>t in n?String(n[t]):`{${t}}`)}function O(e,t){let n=String(e??``).trim(),r=n.toLowerCase();if(!n||r===`invalid`||r===`invalid input`)return T(`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`?T(`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`?T(`engine.validation.nameRequired`,t):r===`invalid json`?T(`engine.form.invalidJson`,t):n}function k(){let{language:t}=e();return/^zh/i.test(t)?`zh-CN`:`en-US`}export{E as a,g as c,m as d,p as f,k as g,O as h,D as i,f as l,C as m,s as n,v as o,w as p,T as r,b as s,l as t,d as u};
|