@adminiumjs/adminium 0.1.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +94 -0
- package/dashboard/assets/DeltaPill-dxlsGh-1.js +2 -0
- package/dashboard/assets/DeltaPill-dxlsGh-1.js.map +1 -0
- package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js +2 -0
- package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js.map +1 -0
- package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js +2 -0
- package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js.map +1 -0
- package/dashboard/assets/RemapEditor-z3vRY12e.js +2 -0
- package/dashboard/assets/RemapEditor-z3vRY12e.js.map +1 -0
- package/dashboard/assets/ReviewScreen-COkLQ3T7.js +2 -0
- package/dashboard/assets/ReviewScreen-COkLQ3T7.js.map +1 -0
- package/dashboard/assets/Sparkline-Cvwo368J.js +2 -0
- package/dashboard/assets/Sparkline-Cvwo368J.js.map +1 -0
- package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js +2 -0
- package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js.map +1 -0
- package/dashboard/assets/arc-CPxb74pf.js +2 -0
- package/dashboard/assets/arc-CPxb74pf.js.map +1 -0
- package/dashboard/assets/bars-ranking-components-9Asn_0gR.js +2 -0
- package/dashboard/assets/bars-ranking-components-9Asn_0gR.js.map +1 -0
- package/dashboard/assets/blocks-track-components-BST-NjK2.js +2 -0
- package/dashboard/assets/blocks-track-components-BST-NjK2.js.map +1 -0
- package/dashboard/assets/calendar-track-components-RgNtGtZR.js +2 -0
- package/dashboard/assets/calendar-track-components-RgNtGtZR.js.map +1 -0
- package/dashboard/assets/chrome-track-components-ClNsentC.js +2 -0
- package/dashboard/assets/chrome-track-components-ClNsentC.js.map +1 -0
- package/dashboard/assets/common-BY1j__bD.js +2 -0
- package/dashboard/assets/common-BY1j__bD.js.map +1 -0
- package/dashboard/assets/common-BdlXKpcB.js +2 -0
- package/dashboard/assets/common-BdlXKpcB.js.map +1 -0
- package/dashboard/assets/common-BqqhgMgB.js +2 -0
- package/dashboard/assets/common-BqqhgMgB.js.map +1 -0
- package/dashboard/assets/common-BribWmIo.js +2 -0
- package/dashboard/assets/common-BribWmIo.js.map +1 -0
- package/dashboard/assets/common-Cmf0_lKV.js +2 -0
- package/dashboard/assets/common-Cmf0_lKV.js.map +1 -0
- package/dashboard/assets/common-i0r48qY9.js +2 -0
- package/dashboard/assets/common-i0r48qY9.js.map +1 -0
- package/dashboard/assets/common-x8cfkwpc.js +2 -0
- package/dashboard/assets/common-x8cfkwpc.js.map +1 -0
- package/dashboard/assets/communication-track-components-CNLZXOH_.js +2 -0
- package/dashboard/assets/communication-track-components-CNLZXOH_.js.map +1 -0
- package/dashboard/assets/components-Bp5cFm2d.js +2 -0
- package/dashboard/assets/components-Bp5cFm2d.js.map +1 -0
- package/dashboard/assets/components-C4-O3_gD.js +2 -0
- package/dashboard/assets/components-C4-O3_gD.js.map +1 -0
- package/dashboard/assets/domain-ops-track-components-BPa41AU7.js +2 -0
- package/dashboard/assets/domain-ops-track-components-BPa41AU7.js.map +1 -0
- package/dashboard/assets/domain-track-components-CQ1i1X1t.js +2 -0
- package/dashboard/assets/domain-track-components-CQ1i1X1t.js.map +1 -0
- package/dashboard/assets/errors-BHUWiAQ3.js +2 -0
- package/dashboard/assets/errors-BHUWiAQ3.js.map +1 -0
- package/dashboard/assets/errors-BbyKweDG.js +2 -0
- package/dashboard/assets/errors-BbyKweDG.js.map +1 -0
- package/dashboard/assets/errors-CMQ6JC31.js +2 -0
- package/dashboard/assets/errors-CMQ6JC31.js.map +1 -0
- package/dashboard/assets/errors-D3nVgTmf.js +2 -0
- package/dashboard/assets/errors-D3nVgTmf.js.map +1 -0
- package/dashboard/assets/errors-IqJSoANC.js +2 -0
- package/dashboard/assets/errors-IqJSoANC.js.map +1 -0
- package/dashboard/assets/errors-gmIkO9F6.js +2 -0
- package/dashboard/assets/errors-gmIkO9F6.js.map +1 -0
- package/dashboard/assets/errors-vFk058Vh.js +2 -0
- package/dashboard/assets/errors-vFk058Vh.js.map +1 -0
- package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js +2 -0
- package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js.map +1 -0
- package/dashboard/assets/format-Lx4cQ8k-.js +2 -0
- package/dashboard/assets/format-Lx4cQ8k-.js.map +1 -0
- package/dashboard/assets/forms-track-components-Bc2Hoxdh.js +2 -0
- package/dashboard/assets/forms-track-components-Bc2Hoxdh.js.map +1 -0
- package/dashboard/assets/generated-1EfWhCMA.js +2 -0
- package/dashboard/assets/generated-1EfWhCMA.js.map +1 -0
- package/dashboard/assets/generated-BB3ZMxvx.js +2 -0
- package/dashboard/assets/generated-BB3ZMxvx.js.map +1 -0
- package/dashboard/assets/generated-C0JVNBRX.js +2 -0
- package/dashboard/assets/generated-C0JVNBRX.js.map +1 -0
- package/dashboard/assets/generated-C1W48_-3.js +2 -0
- package/dashboard/assets/generated-C1W48_-3.js.map +1 -0
- package/dashboard/assets/generated-CluiB_xY.js +2 -0
- package/dashboard/assets/generated-CluiB_xY.js.map +1 -0
- package/dashboard/assets/generated-DDGtlf-4.js +2 -0
- package/dashboard/assets/generated-DDGtlf-4.js.map +1 -0
- package/dashboard/assets/generated-DPCHvNto.js +2 -0
- package/dashboard/assets/generated-DPCHvNto.js.map +1 -0
- package/dashboard/assets/geo-track-components-Ct4-MSRw.js +3 -0
- package/dashboard/assets/geo-track-components-Ct4-MSRw.js.map +1 -0
- package/dashboard/assets/ibm-plex-sans-arabic-arabic-400-normal-CyU-ddYS.woff2 +0 -0
- package/dashboard/assets/ibm-plex-sans-arabic-arabic-500-normal-C4MQITzh.woff2 +0 -0
- package/dashboard/assets/ibm-plex-sans-arabic-arabic-600-normal-0pRdybE_.woff2 +0 -0
- package/dashboard/assets/ibm-plex-sans-arabic-arabic-700-normal-DrtBj6UE.woff2 +0 -0
- package/dashboard/assets/index-DPi4cduu.css +1 -0
- package/dashboard/assets/index-PB1II0WV.js +137 -0
- package/dashboard/assets/index-PB1II0WV.js.map +1 -0
- package/dashboard/assets/jetbrains-mono-latin-ext-wght-italic-BrDczivE.woff2 +0 -0
- package/dashboard/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/dashboard/assets/jetbrains-mono-latin-wght-italic-B2M6KQje.woff2 +0 -0
- package/dashboard/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/dashboard/assets/leaflet-CIGW-MKW.css +1 -0
- package/dashboard/assets/leaflet-src-D12shr04.js +2 -0
- package/dashboard/assets/leaflet-src-D12shr04.js.map +1 -0
- package/dashboard/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2 +0 -0
- package/dashboard/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 +0 -0
- package/dashboard/assets/media-track-components-CpeII-tT.js +2 -0
- package/dashboard/assets/media-track-components-CpeII-tT.js.map +1 -0
- package/dashboard/assets/scales-e0tkfEy1.js +2 -0
- package/dashboard/assets/scales-e0tkfEy1.js.map +1 -0
- package/dashboard/assets/sparkline-2JUGDrMW.js +2 -0
- package/dashboard/assets/sparkline-2JUGDrMW.js.map +1 -0
- package/dashboard/assets/stats-BNgXz5BD.js +2 -0
- package/dashboard/assets/stats-BNgXz5BD.js.map +1 -0
- package/dashboard/assets/studio-B7hMOwAF.js +2 -0
- package/dashboard/assets/studio-B7hMOwAF.js.map +1 -0
- package/dashboard/assets/studio-BN_9xHY3.js +2 -0
- package/dashboard/assets/studio-BN_9xHY3.js.map +1 -0
- package/dashboard/assets/studio-Cn2MObe8.js +2 -0
- package/dashboard/assets/studio-Cn2MObe8.js.map +1 -0
- package/dashboard/assets/studio-DZEZCCkw.js +2 -0
- package/dashboard/assets/studio-DZEZCCkw.js.map +1 -0
- package/dashboard/assets/studio-DzatTvLl.js +2 -0
- package/dashboard/assets/studio-DzatTvLl.js.map +1 -0
- package/dashboard/assets/studio-cBlD8x90.js +2 -0
- package/dashboard/assets/studio-cBlD8x90.js.map +1 -0
- package/dashboard/assets/studio-cglZPbJK.js +2 -0
- package/dashboard/assets/studio-cglZPbJK.js.map +1 -0
- package/dashboard/assets/system-track-components-GTYYpnfB.js +2 -0
- package/dashboard/assets/system-track-components-GTYYpnfB.js.map +1 -0
- package/dashboard/assets/tables-tail-components-DiA5GeHB.js +2 -0
- package/dashboard/assets/tables-tail-components-DiA5GeHB.js.map +1 -0
- package/dashboard/assets/tables-track-f-components-CVNPd7rq.js +2 -0
- package/dashboard/assets/tables-track-f-components-CVNPd7rq.js.map +1 -0
- package/dashboard/assets/time-flow-components-nKsaryry.js +2 -0
- package/dashboard/assets/time-flow-components-nKsaryry.js.map +1 -0
- package/dashboard/assets/ui-B-kZetor.js +2 -0
- package/dashboard/assets/ui-B-kZetor.js.map +1 -0
- package/dashboard/assets/ui-BEStJ5Pw.js +2 -0
- package/dashboard/assets/ui-BEStJ5Pw.js.map +1 -0
- package/dashboard/assets/ui-BS5_eDN4.js +2 -0
- package/dashboard/assets/ui-BS5_eDN4.js.map +1 -0
- package/dashboard/assets/ui-BZ0EyxRH.js +2 -0
- package/dashboard/assets/ui-BZ0EyxRH.js.map +1 -0
- package/dashboard/assets/ui-BloJDdt6.js +2 -0
- package/dashboard/assets/ui-BloJDdt6.js.map +1 -0
- package/dashboard/assets/ui-CpdrplJH.js +2 -0
- package/dashboard/assets/ui-CpdrplJH.js.map +1 -0
- package/dashboard/assets/ui-YJfT644k.js +2 -0
- package/dashboard/assets/ui-YJfT644k.js.map +1 -0
- package/dashboard/assets/widgets-uDqZWw4A.js +2 -0
- package/dashboard/assets/widgets-uDqZWw4A.js.map +1 -0
- package/dashboard/index.html +41 -0
- package/dist/app.d.ts +48 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +250 -0
- package/dist/app.js.map +1 -0
- package/dist/auth/audit.d.ts +22 -0
- package/dist/auth/audit.d.ts.map +1 -0
- package/dist/auth/audit.js +17 -0
- package/dist/auth/audit.js.map +1 -0
- package/dist/auth/desktop-session.d.ts +53 -0
- package/dist/auth/desktop-session.d.ts.map +1 -0
- package/dist/auth/desktop-session.js +111 -0
- package/dist/auth/desktop-session.js.map +1 -0
- package/dist/auth/passwords.d.ts +17 -0
- package/dist/auth/passwords.d.ts.map +1 -0
- package/dist/auth/passwords.js +40 -0
- package/dist/auth/passwords.js.map +1 -0
- package/dist/auth/sessions.d.ts +77 -0
- package/dist/auth/sessions.d.ts.map +1 -0
- package/dist/auth/sessions.js +137 -0
- package/dist/auth/sessions.js.map +1 -0
- package/dist/auth/totp.d.ts +30 -0
- package/dist/auth/totp.d.ts.map +1 -0
- package/dist/auth/totp.js +97 -0
- package/dist/auth/totp.js.map +1 -0
- package/dist/backup/backup-service.d.ts +157 -0
- package/dist/backup/backup-service.d.ts.map +1 -0
- package/dist/backup/backup-service.js +354 -0
- package/dist/backup/backup-service.js.map +1 -0
- package/dist/backup/format.d.ts +300 -0
- package/dist/backup/format.d.ts.map +1 -0
- package/dist/backup/format.js +304 -0
- package/dist/backup/format.js.map +1 -0
- package/dist/backup/notify.d.ts +55 -0
- package/dist/backup/notify.d.ts.map +1 -0
- package/dist/backup/notify.js +60 -0
- package/dist/backup/notify.js.map +1 -0
- package/dist/backup/snapshot.d.ts +78 -0
- package/dist/backup/snapshot.d.ts.map +1 -0
- package/dist/backup/snapshot.js +142 -0
- package/dist/backup/snapshot.js.map +1 -0
- package/dist/capabilities/catalog.d.ts +33 -0
- package/dist/capabilities/catalog.d.ts.map +1 -0
- package/dist/capabilities/catalog.js +32 -0
- package/dist/capabilities/catalog.js.map +1 -0
- package/dist/capabilities/grants.d.ts +44 -0
- package/dist/capabilities/grants.d.ts.map +1 -0
- package/dist/capabilities/grants.js +65 -0
- package/dist/capabilities/grants.js.map +1 -0
- package/dist/cli/allowlist.d.ts +46 -0
- package/dist/cli/allowlist.d.ts.map +1 -0
- package/dist/cli/allowlist.js +99 -0
- package/dist/cli/allowlist.js.map +1 -0
- package/dist/cli/args.d.ts +63 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +92 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/command.d.ts +32 -0
- package/dist/cli/command.d.ts.map +1 -0
- package/dist/cli/command.js +64 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/commands/apply-llm-response.d.ts +32 -0
- package/dist/cli/commands/apply-llm-response.d.ts.map +1 -0
- package/dist/cli/commands/apply-llm-response.js +209 -0
- package/dist/cli/commands/apply-llm-response.js.map +1 -0
- package/dist/cli/commands/export-zip.d.ts +17 -0
- package/dist/cli/commands/export-zip.d.ts.map +1 -0
- package/dist/cli/commands/export-zip.js +111 -0
- package/dist/cli/commands/export-zip.js.map +1 -0
- package/dist/cli/commands/generate-prompt.d.ts +29 -0
- package/dist/cli/commands/generate-prompt.d.ts.map +1 -0
- package/dist/cli/commands/generate-prompt.js +154 -0
- package/dist/cli/commands/generate-prompt.js.map +1 -0
- package/dist/cli/commands/import-zip.d.ts +13 -0
- package/dist/cli/commands/import-zip.d.ts.map +1 -0
- package/dist/cli/commands/import-zip.js +95 -0
- package/dist/cli/commands/import-zip.js.map +1 -0
- package/dist/cli/commands/init.d.ts +47 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +372 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/introspect.d.ts +11 -0
- package/dist/cli/commands/introspect.d.ts.map +1 -0
- package/dist/cli/commands/introspect.js +100 -0
- package/dist/cli/commands/introspect.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +11 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +80 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/start.d.ts +22 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +101 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/exit.d.ts +37 -0
- package/dist/cli/exit.d.ts.map +1 -0
- package/dist/cli/exit.js +39 -0
- package/dist/cli/exit.js.map +1 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +17 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/io.d.ts +49 -0
- package/dist/cli/io.d.ts.map +1 -0
- package/dist/cli/io.js +77 -0
- package/dist/cli/io.js.map +1 -0
- package/dist/cli/run.d.ts +35 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +139 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/runtime.d.ts +116 -0
- package/dist/cli/runtime.d.ts.map +1 -0
- package/dist/cli/runtime.js +181 -0
- package/dist/cli/runtime.js.map +1 -0
- package/dist/cli/static-root.d.ts +42 -0
- package/dist/cli/static-root.d.ts.map +1 -0
- package/dist/cli/static-root.js +58 -0
- package/dist/cli/static-root.js.map +1 -0
- package/dist/compose.d.ts +135 -0
- package/dist/compose.d.ts.map +1 -0
- package/dist/compose.js +383 -0
- package/dist/compose.js.map +1 -0
- package/dist/config/bootstrap.d.ts +33 -0
- package/dist/config/bootstrap.d.ts.map +1 -0
- package/dist/config/bootstrap.js +81 -0
- package/dist/config/bootstrap.js.map +1 -0
- package/dist/config/env.d.ts +95 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +236 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/secrets.d.ts +24 -0
- package/dist/config/secrets.d.ts.map +1 -0
- package/dist/config/secrets.js +74 -0
- package/dist/config/secrets.js.map +1 -0
- package/dist/connections/crypto.d.ts +9 -0
- package/dist/connections/crypto.d.ts.map +1 -0
- package/dist/connections/crypto.js +16 -0
- package/dist/connections/crypto.js.map +1 -0
- package/dist/connections/dsn.d.ts +42 -0
- package/dist/connections/dsn.d.ts.map +1 -0
- package/dist/connections/dsn.js +131 -0
- package/dist/connections/dsn.js.map +1 -0
- package/dist/connections/effective-schema.d.ts +65 -0
- package/dist/connections/effective-schema.d.ts.map +1 -0
- package/dist/connections/effective-schema.js +249 -0
- package/dist/connections/effective-schema.js.map +1 -0
- package/dist/connections/introspect.d.ts +52 -0
- package/dist/connections/introspect.d.ts.map +1 -0
- package/dist/connections/introspect.js +111 -0
- package/dist/connections/introspect.js.map +1 -0
- package/dist/connections/manager.d.ts +97 -0
- package/dist/connections/manager.d.ts.map +1 -0
- package/dist/connections/manager.js +224 -0
- package/dist/connections/manager.js.map +1 -0
- package/dist/connections/register-adapters.d.ts +42 -0
- package/dist/connections/register-adapters.d.ts.map +1 -0
- package/dist/connections/register-adapters.js +92 -0
- package/dist/connections/register-adapters.js.map +1 -0
- package/dist/crud/filters.d.ts +57 -0
- package/dist/crud/filters.d.ts.map +1 -0
- package/dist/crud/filters.js +177 -0
- package/dist/crud/filters.js.map +1 -0
- package/dist/crud/identifiers.d.ts +58 -0
- package/dist/crud/identifiers.d.ts.map +1 -0
- package/dist/crud/identifiers.js +99 -0
- package/dist/crud/identifiers.js.map +1 -0
- package/dist/crud/list.d.ts +51 -0
- package/dist/crud/list.d.ts.map +1 -0
- package/dist/crud/list.js +126 -0
- package/dist/crud/list.js.map +1 -0
- package/dist/crud/mask.d.ts +23 -0
- package/dist/crud/mask.d.ts.map +1 -0
- package/dist/crud/mask.js +41 -0
- package/dist/crud/mask.js.map +1 -0
- package/dist/crud/records.d.ts +33 -0
- package/dist/crud/records.d.ts.map +1 -0
- package/dist/crud/records.js +126 -0
- package/dist/crud/records.js.map +1 -0
- package/dist/crud/undo.d.ts +55 -0
- package/dist/crud/undo.d.ts.map +1 -0
- package/dist/crud/undo.js +74 -0
- package/dist/crud/undo.js.map +1 -0
- package/dist/data-io/coerce.d.ts +28 -0
- package/dist/data-io/coerce.d.ts.map +1 -0
- package/dist/data-io/coerce.js +123 -0
- package/dist/data-io/coerce.js.map +1 -0
- package/dist/data-io/csv.d.ts +38 -0
- package/dist/data-io/csv.d.ts.map +1 -0
- package/dist/data-io/csv.js +138 -0
- package/dist/data-io/csv.js.map +1 -0
- package/dist/data-io/snapshot-view.d.ts +10 -0
- package/dist/data-io/snapshot-view.d.ts.map +1 -0
- package/dist/data-io/snapshot-view.js +19 -0
- package/dist/data-io/snapshot-view.js.map +1 -0
- package/dist/desktop/demo-seed.d.ts +23 -0
- package/dist/desktop/demo-seed.d.ts.map +1 -0
- package/dist/desktop/demo-seed.js +28 -0
- package/dist/desktop/demo-seed.js.map +1 -0
- package/dist/desktop/lan-share.d.ts +94 -0
- package/dist/desktop/lan-share.d.ts.map +1 -0
- package/dist/desktop/lan-share.js +150 -0
- package/dist/desktop/lan-share.js.map +1 -0
- package/dist/errors.d.ts +72 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +82 -0
- package/dist/errors.js.map +1 -0
- package/dist/export/bundle.d.ts +235 -0
- package/dist/export/bundle.d.ts.map +1 -0
- package/dist/export/bundle.js +172 -0
- package/dist/export/bundle.js.map +1 -0
- package/dist/export/import-service.d.ts +99 -0
- package/dist/export/import-service.d.ts.map +1 -0
- package/dist/export/import-service.js +515 -0
- package/dist/export/import-service.js.map +1 -0
- package/dist/export/readme.d.ts +25 -0
- package/dist/export/readme.d.ts.map +1 -0
- package/dist/export/readme.js +154 -0
- package/dist/export/readme.js.map +1 -0
- package/dist/export/redaction.d.ts +118 -0
- package/dist/export/redaction.d.ts.map +1 -0
- package/dist/export/redaction.js +233 -0
- package/dist/export/redaction.js.map +1 -0
- package/dist/export/zip-service.d.ts +66 -0
- package/dist/export/zip-service.d.ts.map +1 -0
- package/dist/export/zip-service.js +306 -0
- package/dist/export/zip-service.js.map +1 -0
- package/dist/files/storage.d.ts +50 -0
- package/dist/files/storage.d.ts.map +1 -0
- package/dist/files/storage.js +100 -0
- package/dist/files/storage.js.map +1 -0
- package/dist/generate/materialize-llm.d.ts +45 -0
- package/dist/generate/materialize-llm.d.ts.map +1 -0
- package/dist/generate/materialize-llm.js +167 -0
- package/dist/generate/materialize-llm.js.map +1 -0
- package/dist/generate/run.d.ts +48 -0
- package/dist/generate/run.d.ts.map +1 -0
- package/dist/generate/run.js +123 -0
- package/dist/generate/run.js.map +1 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +116 -0
- package/dist/index.js.map +1 -0
- package/dist/jobs/export-run.d.ts +38 -0
- package/dist/jobs/export-run.d.ts.map +1 -0
- package/dist/jobs/export-run.js +172 -0
- package/dist/jobs/export-run.js.map +1 -0
- package/dist/jobs/import-run.d.ts +43 -0
- package/dist/jobs/import-run.d.ts.map +1 -0
- package/dist/jobs/import-run.js +290 -0
- package/dist/jobs/import-run.js.map +1 -0
- package/dist/jobs/llm-run.d.ts +73 -0
- package/dist/jobs/llm-run.d.ts.map +1 -0
- package/dist/jobs/llm-run.js +225 -0
- package/dist/jobs/llm-run.js.map +1 -0
- package/dist/jobs/register.d.ts +90 -0
- package/dist/jobs/register.d.ts.map +1 -0
- package/dist/jobs/register.js +121 -0
- package/dist/jobs/register.js.map +1 -0
- package/dist/jobs/registry.d.ts +74 -0
- package/dist/jobs/registry.d.ts.map +1 -0
- package/dist/jobs/registry.js +78 -0
- package/dist/jobs/registry.js.map +1 -0
- package/dist/jobs/report-run.d.ts +64 -0
- package/dist/jobs/report-run.d.ts.map +1 -0
- package/dist/jobs/report-run.js +221 -0
- package/dist/jobs/report-run.js.map +1 -0
- package/dist/jobs/scheduler.d.ts +72 -0
- package/dist/jobs/scheduler.d.ts.map +1 -0
- package/dist/jobs/scheduler.js +121 -0
- package/dist/jobs/scheduler.js.map +1 -0
- package/dist/jobs/worker.d.ts +110 -0
- package/dist/jobs/worker.d.ts.map +1 -0
- package/dist/jobs/worker.js +282 -0
- package/dist/jobs/worker.js.map +1 -0
- package/dist/llm/apply-service.d.ts +150 -0
- package/dist/llm/apply-service.d.ts.map +1 -0
- package/dist/llm/apply-service.js +463 -0
- package/dist/llm/apply-service.js.map +1 -0
- package/dist/llm/apply-undo-store.d.ts +50 -0
- package/dist/llm/apply-undo-store.d.ts.map +1 -0
- package/dist/llm/apply-undo-store.js +60 -0
- package/dist/llm/apply-undo-store.js.map +1 -0
- package/dist/llm/direct-runner.d.ts +146 -0
- package/dist/llm/direct-runner.d.ts.map +1 -0
- package/dist/llm/direct-runner.js +204 -0
- package/dist/llm/direct-runner.js.map +1 -0
- package/dist/llm/prompt-service.d.ts +90 -0
- package/dist/llm/prompt-service.d.ts.map +1 -0
- package/dist/llm/prompt-service.js +93 -0
- package/dist/llm/prompt-service.js.map +1 -0
- package/dist/llm/provider-resolver.d.ts +25 -0
- package/dist/llm/provider-resolver.d.ts.map +1 -0
- package/dist/llm/provider-resolver.js +81 -0
- package/dist/llm/provider-resolver.js.map +1 -0
- package/dist/llm/run-service.d.ts +215 -0
- package/dist/llm/run-service.d.ts.map +1 -0
- package/dist/llm/run-service.js +343 -0
- package/dist/llm/run-service.js.map +1 -0
- package/dist/llm/stats-collector.d.ts +40 -0
- package/dist/llm/stats-collector.d.ts.map +1 -0
- package/dist/llm/stats-collector.js +74 -0
- package/dist/llm/stats-collector.js.map +1 -0
- package/dist/log-scrub.d.ts +58 -0
- package/dist/log-scrub.d.ts.map +1 -0
- package/dist/log-scrub.js +103 -0
- package/dist/log-scrub.js.map +1 -0
- package/dist/meta/store.d.ts +96 -0
- package/dist/meta/store.d.ts.map +1 -0
- package/dist/meta/store.js +192 -0
- package/dist/meta/store.js.map +1 -0
- package/dist/notifications/notify.d.ts +43 -0
- package/dist/notifications/notify.d.ts.map +1 -0
- package/dist/notifications/notify.js +42 -0
- package/dist/notifications/notify.js.map +1 -0
- package/dist/plugins/auth.d.ts +42 -0
- package/dist/plugins/auth.d.ts.map +1 -0
- package/dist/plugins/auth.js +84 -0
- package/dist/plugins/auth.js.map +1 -0
- package/dist/plugins/core.d.ts +48 -0
- package/dist/plugins/core.d.ts.map +1 -0
- package/dist/plugins/core.js +248 -0
- package/dist/plugins/core.js.map +1 -0
- package/dist/plugins/rbac.d.ts +54 -0
- package/dist/plugins/rbac.d.ts.map +1 -0
- package/dist/plugins/rbac.js +103 -0
- package/dist/plugins/rbac.js.map +1 -0
- package/dist/plugins/static.d.ts +12 -0
- package/dist/plugins/static.d.ts.map +1 -0
- package/dist/plugins/static.js +36 -0
- package/dist/plugins/static.js.map +1 -0
- package/dist/rbac/api-keys.d.ts +30 -0
- package/dist/rbac/api-keys.d.ts.map +1 -0
- package/dist/rbac/api-keys.js +41 -0
- package/dist/rbac/api-keys.js.map +1 -0
- package/dist/rbac/index.d.ts +6 -0
- package/dist/rbac/index.d.ts.map +1 -0
- package/dist/rbac/index.js +6 -0
- package/dist/rbac/index.js.map +1 -0
- package/dist/rbac/permissions.d.ts +107 -0
- package/dist/rbac/permissions.d.ts.map +1 -0
- package/dist/rbac/permissions.js +250 -0
- package/dist/rbac/permissions.js.map +1 -0
- package/dist/rbac/principal.d.ts +33 -0
- package/dist/rbac/principal.d.ts.map +1 -0
- package/dist/rbac/principal.js +31 -0
- package/dist/rbac/principal.js.map +1 -0
- package/dist/rbac/resolver.d.ts +26 -0
- package/dist/rbac/resolver.d.ts.map +1 -0
- package/dist/rbac/resolver.js +46 -0
- package/dist/rbac/resolver.js.map +1 -0
- package/dist/realtime/hub.d.ts +90 -0
- package/dist/realtime/hub.d.ts.map +1 -0
- package/dist/realtime/hub.js +146 -0
- package/dist/realtime/hub.js.map +1 -0
- package/dist/realtime/sse.d.ts +35 -0
- package/dist/realtime/sse.d.ts.map +1 -0
- package/dist/realtime/sse.js +88 -0
- package/dist/realtime/sse.js.map +1 -0
- package/dist/realtime/ws.d.ts +38 -0
- package/dist/realtime/ws.d.ts.map +1 -0
- package/dist/realtime/ws.js +124 -0
- package/dist/realtime/ws.js.map +1 -0
- package/dist/reports/schedule.d.ts +14 -0
- package/dist/reports/schedule.d.ts.map +1 -0
- package/dist/reports/schedule.js +63 -0
- package/dist/reports/schedule.js.map +1 -0
- package/dist/routes/about/index.d.ts +39 -0
- package/dist/routes/about/index.d.ts.map +1 -0
- package/dist/routes/about/index.js +73 -0
- package/dist/routes/about/index.js.map +1 -0
- package/dist/routes/about/schema.d.ts +50 -0
- package/dist/routes/about/schema.d.ts.map +1 -0
- package/dist/routes/about/schema.js +53 -0
- package/dist/routes/about/schema.js.map +1 -0
- package/dist/routes/api-keys/index.d.ts +11 -0
- package/dist/routes/api-keys/index.d.ts.map +1 -0
- package/dist/routes/api-keys/index.js +79 -0
- package/dist/routes/api-keys/index.js.map +1 -0
- package/dist/routes/api-keys/schema.d.ts +62 -0
- package/dist/routes/api-keys/schema.d.ts.map +1 -0
- package/dist/routes/api-keys/schema.js +37 -0
- package/dist/routes/api-keys/schema.js.map +1 -0
- package/dist/routes/audit/index.d.ts +11 -0
- package/dist/routes/audit/index.d.ts.map +1 -0
- package/dist/routes/audit/index.js +107 -0
- package/dist/routes/audit/index.js.map +1 -0
- package/dist/routes/audit/schema.d.ts +129 -0
- package/dist/routes/audit/schema.d.ts.map +1 -0
- package/dist/routes/audit/schema.js +43 -0
- package/dist/routes/audit/schema.js.map +1 -0
- package/dist/routes/auth/desktop-session.d.ts +48 -0
- package/dist/routes/auth/desktop-session.d.ts.map +1 -0
- package/dist/routes/auth/desktop-session.js +132 -0
- package/dist/routes/auth/desktop-session.js.map +1 -0
- package/dist/routes/auth/handlers.d.ts +21 -0
- package/dist/routes/auth/handlers.d.ts.map +1 -0
- package/dist/routes/auth/handlers.js +256 -0
- package/dist/routes/auth/handlers.js.map +1 -0
- package/dist/routes/auth/index.d.ts +27 -0
- package/dist/routes/auth/index.d.ts.map +1 -0
- package/dist/routes/auth/index.js +67 -0
- package/dist/routes/auth/index.js.map +1 -0
- package/dist/routes/auth/schema.d.ts +129 -0
- package/dist/routes/auth/schema.d.ts.map +1 -0
- package/dist/routes/auth/schema.js +84 -0
- package/dist/routes/auth/schema.js.map +1 -0
- package/dist/routes/bootstrap/handlers.d.ts +34 -0
- package/dist/routes/bootstrap/handlers.d.ts.map +1 -0
- package/dist/routes/bootstrap/handlers.js +96 -0
- package/dist/routes/bootstrap/handlers.js.map +1 -0
- package/dist/routes/bootstrap/index.d.ts +9 -0
- package/dist/routes/bootstrap/index.d.ts.map +1 -0
- package/dist/routes/bootstrap/index.js +16 -0
- package/dist/routes/bootstrap/index.js.map +1 -0
- package/dist/routes/bootstrap/schema.d.ts +177 -0
- package/dist/routes/bootstrap/schema.d.ts.map +1 -0
- package/dist/routes/bootstrap/schema.js +55 -0
- package/dist/routes/bootstrap/schema.js.map +1 -0
- package/dist/routes/connections/index.d.ts +21 -0
- package/dist/routes/connections/index.d.ts.map +1 -0
- package/dist/routes/connections/index.js +260 -0
- package/dist/routes/connections/index.js.map +1 -0
- package/dist/routes/connections/schema.d.ts +161 -0
- package/dist/routes/connections/schema.d.ts.map +1 -0
- package/dist/routes/connections/schema.js +91 -0
- package/dist/routes/connections/schema.js.map +1 -0
- package/dist/routes/data/index.d.ts +46 -0
- package/dist/routes/data/index.d.ts.map +1 -0
- package/dist/routes/data/index.js +508 -0
- package/dist/routes/data/index.js.map +1 -0
- package/dist/routes/data/schema.d.ts +128 -0
- package/dist/routes/data/schema.d.ts.map +1 -0
- package/dist/routes/data/schema.js +83 -0
- package/dist/routes/data/schema.js.map +1 -0
- package/dist/routes/desktop/index.d.ts +61 -0
- package/dist/routes/desktop/index.d.ts.map +1 -0
- package/dist/routes/desktop/index.js +91 -0
- package/dist/routes/desktop/index.js.map +1 -0
- package/dist/routes/desktop/schema.d.ts +71 -0
- package/dist/routes/desktop/schema.d.ts.map +1 -0
- package/dist/routes/desktop/schema.js +58 -0
- package/dist/routes/desktop/schema.js.map +1 -0
- package/dist/routes/desktop-capabilities/index.d.ts +9 -0
- package/dist/routes/desktop-capabilities/index.d.ts.map +1 -0
- package/dist/routes/desktop-capabilities/index.js +62 -0
- package/dist/routes/desktop-capabilities/index.js.map +1 -0
- package/dist/routes/desktop-capabilities/schema.d.ts +46 -0
- package/dist/routes/desktop-capabilities/schema.d.ts.map +1 -0
- package/dist/routes/desktop-capabilities/schema.js +30 -0
- package/dist/routes/desktop-capabilities/schema.js.map +1 -0
- package/dist/routes/desktop-demo/handlers.d.ts +94 -0
- package/dist/routes/desktop-demo/handlers.d.ts.map +1 -0
- package/dist/routes/desktop-demo/handlers.js +182 -0
- package/dist/routes/desktop-demo/handlers.js.map +1 -0
- package/dist/routes/desktop-demo/index.d.ts +39 -0
- package/dist/routes/desktop-demo/index.d.ts.map +1 -0
- package/dist/routes/desktop-demo/index.js +73 -0
- package/dist/routes/desktop-demo/index.js.map +1 -0
- package/dist/routes/desktop-demo/schema.d.ts +17 -0
- package/dist/routes/desktop-demo/schema.d.ts.map +1 -0
- package/dist/routes/desktop-demo/schema.js +30 -0
- package/dist/routes/desktop-demo/schema.js.map +1 -0
- package/dist/routes/desktop-lan/index.d.ts +54 -0
- package/dist/routes/desktop-lan/index.d.ts.map +1 -0
- package/dist/routes/desktop-lan/index.js +33 -0
- package/dist/routes/desktop-lan/index.js.map +1 -0
- package/dist/routes/desktop-lan/schema.d.ts +24 -0
- package/dist/routes/desktop-lan/schema.d.ts.map +1 -0
- package/dist/routes/desktop-lan/schema.js +40 -0
- package/dist/routes/desktop-lan/schema.js.map +1 -0
- package/dist/routes/desktop-local-db/handlers.d.ts +92 -0
- package/dist/routes/desktop-local-db/handlers.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/handlers.js +300 -0
- package/dist/routes/desktop-local-db/handlers.js.map +1 -0
- package/dist/routes/desktop-local-db/index.d.ts +39 -0
- package/dist/routes/desktop-local-db/index.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/index.js +83 -0
- package/dist/routes/desktop-local-db/index.js.map +1 -0
- package/dist/routes/desktop-local-db/placeholder.d.ts +75 -0
- package/dist/routes/desktop-local-db/placeholder.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/placeholder.js +420 -0
- package/dist/routes/desktop-local-db/placeholder.js.map +1 -0
- package/dist/routes/desktop-local-db/schema.d.ts +50 -0
- package/dist/routes/desktop-local-db/schema.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/schema.js +71 -0
- package/dist/routes/desktop-local-db/schema.js.map +1 -0
- package/dist/routes/desktop-local-db/sqlite-ddl.d.ts +104 -0
- package/dist/routes/desktop-local-db/sqlite-ddl.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/sqlite-ddl.js +419 -0
- package/dist/routes/desktop-local-db/sqlite-ddl.js.map +1 -0
- package/dist/routes/email-templates/index.d.ts +7 -0
- package/dist/routes/email-templates/index.d.ts.map +1 -0
- package/dist/routes/email-templates/index.js +70 -0
- package/dist/routes/email-templates/index.js.map +1 -0
- package/dist/routes/email-templates/schema.d.ts +54 -0
- package/dist/routes/email-templates/schema.d.ts.map +1 -0
- package/dist/routes/email-templates/schema.js +35 -0
- package/dist/routes/email-templates/schema.js.map +1 -0
- package/dist/routes/exports/index.d.ts +19 -0
- package/dist/routes/exports/index.d.ts.map +1 -0
- package/dist/routes/exports/index.js +145 -0
- package/dist/routes/exports/index.js.map +1 -0
- package/dist/routes/exports/schema.d.ts +183 -0
- package/dist/routes/exports/schema.d.ts.map +1 -0
- package/dist/routes/exports/schema.js +37 -0
- package/dist/routes/exports/schema.js.map +1 -0
- package/dist/routes/generate/index.d.ts +23 -0
- package/dist/routes/generate/index.d.ts.map +1 -0
- package/dist/routes/generate/index.js +80 -0
- package/dist/routes/generate/index.js.map +1 -0
- package/dist/routes/generate/schema.d.ts +43 -0
- package/dist/routes/generate/schema.d.ts.map +1 -0
- package/dist/routes/generate/schema.js +37 -0
- package/dist/routes/generate/schema.js.map +1 -0
- package/dist/routes/imports/index.d.ts +21 -0
- package/dist/routes/imports/index.d.ts.map +1 -0
- package/dist/routes/imports/index.js +288 -0
- package/dist/routes/imports/index.js.map +1 -0
- package/dist/routes/imports/schema.d.ts +292 -0
- package/dist/routes/imports/schema.d.ts.map +1 -0
- package/dist/routes/imports/schema.js +78 -0
- package/dist/routes/imports/schema.js.map +1 -0
- package/dist/routes/index.d.ts +11 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +8 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/jobs/index.d.ts +29 -0
- package/dist/routes/jobs/index.d.ts.map +1 -0
- package/dist/routes/jobs/index.js +175 -0
- package/dist/routes/jobs/index.js.map +1 -0
- package/dist/routes/jobs/schema.d.ts +170 -0
- package/dist/routes/jobs/schema.d.ts.map +1 -0
- package/dist/routes/jobs/schema.js +57 -0
- package/dist/routes/jobs/schema.js.map +1 -0
- package/dist/routes/llm/config-service.d.ts +48 -0
- package/dist/routes/llm/config-service.d.ts.map +1 -0
- package/dist/routes/llm/config-service.js +102 -0
- package/dist/routes/llm/config-service.js.map +1 -0
- package/dist/routes/llm/index.d.ts +69 -0
- package/dist/routes/llm/index.d.ts.map +1 -0
- package/dist/routes/llm/index.js +412 -0
- package/dist/routes/llm/index.js.map +1 -0
- package/dist/routes/llm/schema.d.ts +605 -0
- package/dist/routes/llm/schema.d.ts.map +1 -0
- package/dist/routes/llm/schema.js +238 -0
- package/dist/routes/llm/schema.js.map +1 -0
- package/dist/routes/me/handlers.d.ts +14 -0
- package/dist/routes/me/handlers.d.ts.map +1 -0
- package/dist/routes/me/handlers.js +88 -0
- package/dist/routes/me/handlers.js.map +1 -0
- package/dist/routes/me/index.d.ts +8 -0
- package/dist/routes/me/index.d.ts.map +1 -0
- package/dist/routes/me/index.js +17 -0
- package/dist/routes/me/index.js.map +1 -0
- package/dist/routes/me/schema.d.ts +270 -0
- package/dist/routes/me/schema.d.ts.map +1 -0
- package/dist/routes/me/schema.js +59 -0
- package/dist/routes/me/schema.js.map +1 -0
- package/dist/routes/me-views/index.d.ts +23 -0
- package/dist/routes/me-views/index.d.ts.map +1 -0
- package/dist/routes/me-views/index.js +76 -0
- package/dist/routes/me-views/index.js.map +1 -0
- package/dist/routes/me-views/schema.d.ts +44 -0
- package/dist/routes/me-views/schema.d.ts.map +1 -0
- package/dist/routes/me-views/schema.js +13 -0
- package/dist/routes/me-views/schema.js.map +1 -0
- package/dist/routes/notifications/index.d.ts +19 -0
- package/dist/routes/notifications/index.d.ts.map +1 -0
- package/dist/routes/notifications/index.js +123 -0
- package/dist/routes/notifications/index.js.map +1 -0
- package/dist/routes/notifications/schema.d.ts +122 -0
- package/dist/routes/notifications/schema.d.ts.map +1 -0
- package/dist/routes/notifications/schema.js +83 -0
- package/dist/routes/notifications/schema.js.map +1 -0
- package/dist/routes/onboarding/derive.d.ts +41 -0
- package/dist/routes/onboarding/derive.d.ts.map +1 -0
- package/dist/routes/onboarding/derive.js +30 -0
- package/dist/routes/onboarding/derive.js.map +1 -0
- package/dist/routes/onboarding/index.d.ts +26 -0
- package/dist/routes/onboarding/index.d.ts.map +1 -0
- package/dist/routes/onboarding/index.js +95 -0
- package/dist/routes/onboarding/index.js.map +1 -0
- package/dist/routes/onboarding/schema.d.ts +22 -0
- package/dist/routes/onboarding/schema.d.ts.map +1 -0
- package/dist/routes/onboarding/schema.js +22 -0
- package/dist/routes/onboarding/schema.js.map +1 -0
- package/dist/routes/pages/index.d.ts +26 -0
- package/dist/routes/pages/index.d.ts.map +1 -0
- package/dist/routes/pages/index.js +119 -0
- package/dist/routes/pages/index.js.map +1 -0
- package/dist/routes/pages/layout-schema.d.ts +19 -0
- package/dist/routes/pages/layout-schema.d.ts.map +1 -0
- package/dist/routes/pages/layout-schema.js +19 -0
- package/dist/routes/pages/layout-schema.js.map +1 -0
- package/dist/routes/pages/schema.d.ts +52 -0
- package/dist/routes/pages/schema.d.ts.map +1 -0
- package/dist/routes/pages/schema.js +35 -0
- package/dist/routes/pages/schema.js.map +1 -0
- package/dist/routes/roles/index.d.ts +17 -0
- package/dist/routes/roles/index.d.ts.map +1 -0
- package/dist/routes/roles/index.js +255 -0
- package/dist/routes/roles/index.js.map +1 -0
- package/dist/routes/roles/schema.d.ts +94 -0
- package/dist/routes/roles/schema.d.ts.map +1 -0
- package/dist/routes/roles/schema.js +57 -0
- package/dist/routes/roles/schema.js.map +1 -0
- package/dist/routes/scheduled-reports/index.d.ts +15 -0
- package/dist/routes/scheduled-reports/index.d.ts.map +1 -0
- package/dist/routes/scheduled-reports/index.js +195 -0
- package/dist/routes/scheduled-reports/index.js.map +1 -0
- package/dist/routes/scheduled-reports/schema.d.ts +154 -0
- package/dist/routes/scheduled-reports/schema.d.ts.map +1 -0
- package/dist/routes/scheduled-reports/schema.js +49 -0
- package/dist/routes/scheduled-reports/schema.js.map +1 -0
- package/dist/routes/schema/index.d.ts +24 -0
- package/dist/routes/schema/index.d.ts.map +1 -0
- package/dist/routes/schema/index.js +224 -0
- package/dist/routes/schema/index.js.map +1 -0
- package/dist/routes/schema/schema.d.ts +92 -0
- package/dist/routes/schema/schema.d.ts.map +1 -0
- package/dist/routes/schema/schema.js +64 -0
- package/dist/routes/schema/schema.js.map +1 -0
- package/dist/routes/schema-import/fallback-parser.d.ts +35 -0
- package/dist/routes/schema-import/fallback-parser.d.ts.map +1 -0
- package/dist/routes/schema-import/fallback-parser.js +349 -0
- package/dist/routes/schema-import/fallback-parser.js.map +1 -0
- package/dist/routes/schema-import/index.d.ts +43 -0
- package/dist/routes/schema-import/index.d.ts.map +1 -0
- package/dist/routes/schema-import/index.js +167 -0
- package/dist/routes/schema-import/index.js.map +1 -0
- package/dist/routes/schema-import/schema.d.ts +65 -0
- package/dist/routes/schema-import/schema.d.ts.map +1 -0
- package/dist/routes/schema-import/schema.js +40 -0
- package/dist/routes/schema-import/schema.js.map +1 -0
- package/dist/routes/search/index.d.ts +71 -0
- package/dist/routes/search/index.d.ts.map +1 -0
- package/dist/routes/search/index.js +361 -0
- package/dist/routes/search/index.js.map +1 -0
- package/dist/routes/search/schema.d.ts +125 -0
- package/dist/routes/search/schema.d.ts.map +1 -0
- package/dist/routes/search/schema.js +70 -0
- package/dist/routes/search/schema.js.map +1 -0
- package/dist/routes/settings/index.d.ts +24 -0
- package/dist/routes/settings/index.d.ts.map +1 -0
- package/dist/routes/settings/index.js +164 -0
- package/dist/routes/settings/index.js.map +1 -0
- package/dist/routes/settings/schema.d.ts +110 -0
- package/dist/routes/settings/schema.d.ts.map +1 -0
- package/dist/routes/settings/schema.js +71 -0
- package/dist/routes/settings/schema.js.map +1 -0
- package/dist/routes/setup/index.d.ts +29 -0
- package/dist/routes/setup/index.d.ts.map +1 -0
- package/dist/routes/setup/index.js +68 -0
- package/dist/routes/setup/index.js.map +1 -0
- package/dist/routes/setup/schema.d.ts +61 -0
- package/dist/routes/setup/schema.d.ts.map +1 -0
- package/dist/routes/setup/schema.js +47 -0
- package/dist/routes/setup/schema.js.map +1 -0
- package/dist/routes/system/handlers.d.ts +63 -0
- package/dist/routes/system/handlers.d.ts.map +1 -0
- package/dist/routes/system/handlers.js +121 -0
- package/dist/routes/system/handlers.js.map +1 -0
- package/dist/routes/system/index.d.ts +34 -0
- package/dist/routes/system/index.d.ts.map +1 -0
- package/dist/routes/system/index.js +18 -0
- package/dist/routes/system/index.js.map +1 -0
- package/dist/routes/system/schema.d.ts +93 -0
- package/dist/routes/system/schema.d.ts.map +1 -0
- package/dist/routes/system/schema.js +109 -0
- package/dist/routes/system/schema.js.map +1 -0
- package/dist/routes/views/index.d.ts +21 -0
- package/dist/routes/views/index.d.ts.map +1 -0
- package/dist/routes/views/index.js +155 -0
- package/dist/routes/views/index.js.map +1 -0
- package/dist/routes/views/schema.d.ts +127 -0
- package/dist/routes/views/schema.d.ts.map +1 -0
- package/dist/routes/views/schema.js +56 -0
- package/dist/routes/views/schema.js.map +1 -0
- package/dist/routes/widget-data/index.d.ts +29 -0
- package/dist/routes/widget-data/index.d.ts.map +1 -0
- package/dist/routes/widget-data/index.js +152 -0
- package/dist/routes/widget-data/index.js.map +1 -0
- package/dist/routes/widget-data/schema.d.ts +252 -0
- package/dist/routes/widget-data/schema.d.ts.map +1 -0
- package/dist/routes/widget-data/schema.js +44 -0
- package/dist/routes/widget-data/schema.js.map +1 -0
- package/dist/setup/service.d.ts +63 -0
- package/dist/setup/service.d.ts.map +1 -0
- package/dist/setup/service.js +103 -0
- package/dist/setup/service.js.map +1 -0
- package/dist/start.d.ts +12 -0
- package/dist/start.d.ts.map +1 -0
- package/dist/start.js +28 -0
- package/dist/start.js.map +1 -0
- package/dist/telemetry/payload.d.ts +66 -0
- package/dist/telemetry/payload.d.ts.map +1 -0
- package/dist/telemetry/payload.js +69 -0
- package/dist/telemetry/payload.js.map +1 -0
- package/dist/telemetry/service.d.ts +67 -0
- package/dist/telemetry/service.d.ts.map +1 -0
- package/dist/telemetry/service.js +103 -0
- package/dist/telemetry/service.js.map +1 -0
- package/dist/telemetry/update-check.d.ts +79 -0
- package/dist/telemetry/update-check.d.ts.map +1 -0
- package/dist/telemetry/update-check.js +103 -0
- package/dist/telemetry/update-check.js.map +1 -0
- package/dist/version.d.ts +14 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +21 -0
- package/dist/version.js.map +1 -0
- package/dist/widget-data/cache.d.ts +35 -0
- package/dist/widget-data/cache.d.ts.map +1 -0
- package/dist/widget-data/cache.js +67 -0
- package/dist/widget-data/cache.js.map +1 -0
- package/dist/widget-data/compiler.d.ts +107 -0
- package/dist/widget-data/compiler.d.ts.map +1 -0
- package/dist/widget-data/compiler.js +362 -0
- package/dist/widget-data/compiler.js.map +1 -0
- package/dist/widget-data/shapers.d.ts +75 -0
- package/dist/widget-data/shapers.d.ts.map +1 -0
- package/dist/widget-data/shapers.js +128 -0
- package/dist/widget-data/shapers.js.map +1 -0
- package/dist/widget-data/stream-publisher.d.ts +42 -0
- package/dist/widget-data/stream-publisher.d.ts.map +1 -0
- package/dist/widget-data/stream-publisher.js +34 -0
- package/dist/widget-data/stream-publisher.js.map +1 -0
- package/package.json +79 -0
- package/vocabulary/llm-allowlist.json +76 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-BY1j__bD.js","sources":["../../../../packages/i18n/dist/resources/fr-fr/common.js"],"sourcesContent":["/**\n * GENERATED MIRROR of ../../../locales/fr-FR/common.json — do not edit by hand.\n * The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);\n * this TS mirror exists so the runtime bundles en-US resources (and chunk-splits\n * the other locales) without JSON import attributes (browser + NodeNext safe).\n * Parity is enforced by src/resources/parity.test.ts. Regenerate with\n * scripts/gen-resources.mjs.\n */\nexport default {\n \"common\": {\n \"dismiss\": \"Fermer\",\n \"notifications\": \"Notifications\",\n \"retry\": \"Réessayer\",\n \"undo\": \"Annuler\",\n \"close\": \"Fermer\",\n \"cancel\": \"Annuler\",\n \"back\": \"Retour\",\n \"loading\": \"Chargement\",\n \"clearSearch\": \"Effacer la recherche\",\n \"clear\": \"Effacer\",\n \"save\": \"Enregistrer\"\n },\n \"auth\": {\n \"headline\": \"Transformez n’importe quelle base de données en tableau de bord.\",\n \"trust\": \"Cœur AGPL · Auto-hébergé · Vos données restent les vôtres\",\n \"signIn\": {\n \"title\": \"Bon retour\",\n \"subtitle\": \"Connectez-vous à votre espace de travail Adminium.\",\n \"email\": \"E-mail\",\n \"emailInvalid\": \"Saisissez une adresse e-mail valide.\",\n \"password\": \"Mot de passe\",\n \"passwordRequired\": \"Saisissez votre mot de passe.\",\n \"showPassword\": \"Afficher le mot de passe\",\n \"hidePassword\": \"Masquer le mot de passe\",\n \"remember\": \"Rester connecté\",\n \"forgot\": \"Oublié ?\",\n \"submit\": \"Se connecter\",\n \"invalid\": \"E-mail ou mot de passe invalide.\",\n \"rateLimited\": \"Trop de tentatives — réessayez dans une minute.\",\n \"failed\": \"Échec de la connexion. Vérifiez votre connexion et réessayez.\"\n },\n \"forgot\": {\n \"title\": \"Réinitialiser votre mot de passe\",\n \"email\": \"E-mail\",\n \"emailInvalid\": \"Saisissez une adresse e-mail valide.\",\n \"submit\": \"Envoyer le lien de réinitialisation\",\n \"sentTitle\": \"Consultez votre boîte mail\",\n \"resend\": \"Renvoyer\",\n \"back\": \"Retour à la connexion\",\n \"done\": \"Retour à la connexion\",\n \"rateLimited\": \"Trop de demandes — réessayez plus tard.\",\n \"failed\": \"Une erreur s’est produite. Réessayez.\",\n \"smtpUnconfigured\": \"Cet Adminium n'a pas de serveur e-mail configuré : il ne peut pas envoyer de lien de réinitialisation. Demandez à un administrateur de réinitialiser votre mot de passe.\"\n },\n \"reset\": {\n \"title\": \"Définir un nouveau mot de passe\",\n \"subtitle\": \"8 caractères minimum.\",\n \"password\": \"Nouveau mot de passe\",\n \"confirm\": \"Confirmer le mot de passe\",\n \"showPassword\": \"Afficher le mot de passe\",\n \"hidePassword\": \"Masquer le mot de passe\",\n \"strength\": \"Robustesse du mot de passe\",\n \"weak\": \"Faible\",\n \"fair\": \"Moyen\",\n \"good\": \"Bon\",\n \"strong\": \"Fort\",\n \"tooShort\": \"Utilisez au moins 8 caractères.\",\n \"submit\": \"Réinitialiser le mot de passe\",\n \"failed\": \"Échec de la réinitialisation. Réessayez.\"\n },\n \"otp\": {\n \"title\": \"Authentification à deux facteurs\",\n \"subtitle\": \"Saisissez le code à 6 chiffres de votre application d’authentification.\",\n \"code\": \"Code à usage unique\",\n \"recoveryCode\": \"Code de récupération\",\n \"useRecovery\": \"Appareil perdu ? Utilisez un code de récupération\",\n \"useAuthenticator\": \"Utiliser plutôt votre application d’authentification\",\n \"submit\": \"Vérifier\",\n \"invalid\": \"Ce code n’a pas fonctionné. Réessayez.\",\n \"failed\": \"Échec de la vérification. Vérifiez votre connexion et réessayez.\"\n }\n },\n \"nav\": {\n \"home\": \"Accueil\",\n \"primary\": \"Principal\",\n \"account\": \"Compte\",\n \"signOut\": \"Se déconnecter\",\n \"empty\": \"Les pages apparaîtront ici une fois une base de données connectée.\",\n \"connection\": {\n \"shared\": \"Partagé\",\n \"unnamed\": \"Connexion\"\n },\n \"imports\": \"Importer des données\",\n \"exports\": \"Exports de données\",\n \"emailTemplates\": \"Modèles d’e-mail\",\n \"notificationSettings\": \"Paramètres de notification\",\n \"scheduledReports\": \"Rapports planifiés\",\n \"group\": {\n \"workspace\": \"Espace de travail\",\n \"library\": \"Bibliothèque\",\n \"planning\": \"Planification\",\n \"people\": \"Personnes\",\n \"account\": \"Compte\"\n }\n },\n \"topbar\": {\n \"search\": \"Rechercher…\",\n \"notifications\": \"Notifications\",\n \"notificationsLoading\": \"Chargement des notifications\",\n \"notificationsError\": \"Impossible de charger les notifications.\",\n \"notificationsEmpty\": \"Vous êtes à jour.\",\n \"theme\": \"Basculer clair / sombre\",\n \"userMenu\": \"Menu du compte\",\n \"profile\": \"Profil\",\n \"preferences\": \"Préférences\",\n \"signOut\": \"Se déconnecter\"\n },\n \"palette\": {\n \"dialog\": \"Palette de commandes\",\n \"placeholder\": \"Saisissez une commande ou recherchez…\",\n \"navigate\": \"Naviguer\",\n \"actions\": \"Actions\",\n \"askAi\": \"Demander à l’IA\",\n \"shortcuts\": \"Raccourcis clavier\",\n \"signOut\": \"Se déconnecter\",\n \"themeDark\": \"Passer au thème sombre\",\n \"themeLight\": \"Passer au thème clair\",\n \"footerNavigate\": \"naviguer\",\n \"footerOpen\": \"sélectionner\",\n \"footerClose\": \"fermer\"\n },\n \"shortcuts\": {\n \"title\": \"Raccourcis clavier\",\n \"subtitle\": \"Travaillez plus vite dans tout Adminium\",\n \"close\": \"Fermer\",\n \"dismiss\": \"Fermer ou ignorer\",\n \"palette\": \"Ouvrir la palette de commandes\",\n \"panel\": \"Afficher le panneau des raccourcis\",\n \"search\": \"Activer la recherche\",\n \"sidebar\": \"Afficher/masquer la barre latérale\",\n \"theme\": \"Basculer clair / sombre\",\n \"then\": \"puis\",\n \"footerPre\": \"Appuyez sur\",\n \"footerPost\": \"à tout moment pour ouvrir ce panneau.\"\n },\n \"states\": {\n \"checked\": \"vérifié il y a 8 s\",\n \"diagnostics\": \"Diagnostics\"\n },\n \"notFound\": {\n \"title\": \"Cette page a disparu\",\n \"errorLine\": \"Erreur 404\",\n \"searchPlaceholder\": \"Rechercher une page…\",\n \"matches\": \"Pages correspondantes\",\n \"popular\": \"Destinations populaires\",\n \"goBack\": \"Retour\",\n \"backToDashboard\": \"Retour au tableau de bord\"\n },\n \"page\": {\n \"invalid\": {\n \"title\": \"La configuration de cette page est invalide\",\n \"body\": \"Le document de page enregistré a échoué à la validation et ne peut pas être affiché.\"\n },\n \"renderError\": {\n \"title\": \"Cette page n’a pas pu s’afficher\"\n },\n \"tooNew\": {\n \"title\": \"Cette page nécessite une version plus récente d’Adminium\"\n },\n \"unknownTemplate\": {\n \"title\": \"Modèle de page inconnu\"\n }\n },\n \"mutation\": {\n \"created\": \"Enregistrement créé\",\n \"updated\": \"Enregistrement mis à jour\",\n \"deleted\": \"Enregistrement supprimé\"\n },\n \"undo\": {\n \"done\": \"Modification annulée\",\n \"failed\": \"Impossible d’annuler cette modification\"\n },\n \"prefs\": {\n \"theme\": {\n \"label\": \"Thème\",\n \"light\": \"Clair\",\n \"dark\": \"Sombre\",\n \"system\": \"Système\"\n },\n \"accent\": {\n \"label\": \"Couleur d’accent\",\n \"indigo\": \"Indigo\",\n \"blue\": \"Bleu\",\n \"teal\": \"Bleu canard\",\n \"violet\": \"Violet\",\n \"rose\": \"Rose\",\n \"red\": \"Rouge\",\n \"orange\": \"Orange\",\n \"black\": \"Noir\"\n },\n \"density\": {\n \"label\": \"Densité\",\n \"comfortable\": \"Confortable\",\n \"compact\": \"Compacte\"\n },\n \"locale\": {\n \"label\": \"Langue\",\n \"directionNote\": \"Sens du texte : de droite à gauche (défini automatiquement par la langue)\"\n }\n },\n \"account\": {\n \"title\": \"Compte\",\n \"subtitle\": \"L'identité de votre session en cours. Gérez les préférences d'affichage et les paramètres de notification sur leurs pages dédiées.\",\n \"preferencesLink\": \"Préférences\",\n \"notificationsLink\": \"Paramètres de notification\",\n \"name\": \"Nom\",\n \"email\": \"E-mail\",\n \"roles\": \"Rôles\",\n \"twoFactor\": \"Double authentification\",\n \"on\": \"Activée\",\n \"off\": \"Désactivée\",\n \"preferences\": {\n \"title\": \"Préférences\",\n \"subtitle\": \"L’apparence et la langue d’Adminium pour vous — sur cet appareil et tous ceux où vous vous connectez.\",\n \"workspaceDefault\": \"Valeur de l’espace de travail\",\n \"personal\": \"Personnel\",\n \"usingDefault\": \"Valeur par défaut de l’espace de travail utilisée ({value})\",\n \"reset\": \"Rétablir la valeur de l’espace de travail\",\n \"resetFailed\": \"Impossible de réinitialiser cette préférence. Réessayez.\",\n \"appliesInstantly\": \"Les changements s’appliquent immédiatement et sont enregistrés dans votre profil.\"\n }\n },\n \"settings\": {\n \"defaults\": {\n \"title\": \"Valeurs par défaut globales\",\n \"subtitle\": \"Apparence et langue par défaut pour tout l’espace de travail.\",\n \"explainer\": \"Ces valeurs par défaut s’appliquent à tous les utilisateurs tant qu’ils ne les remplacent pas. Chacun peut définir ses propres préférences dans Profil → Préférences — les préférences personnelles l’emportent toujours pour cet utilisateur.\",\n \"appearanceHeading\": \"Apparence par défaut\",\n \"languageHeading\": \"Langue et région par défaut\",\n \"adoption\": \"{following, number} sur {total, plural, one {# utilisateur} other {# utilisateurs}} suivent cette valeur par défaut.\",\n \"weekStartNote\": \"Le premier jour de la semaine et les formats de nombres suivent la langue.\",\n \"save\": \"Enregistrer les valeurs par défaut\",\n \"saved\": \"Valeurs par défaut de l’espace de travail mises à jour\",\n \"saveFailed\": \"Impossible d’enregistrer les valeurs par défaut. Réessayez.\",\n \"liveNote\": \"L’enregistrement diffuse le changement en direct — les utilisateurs connectés qui suivent une valeur par défaut la voient s’appliquer sans recharger.\"\n },\n \"notifications\": {\n \"subtitle\": \"Choisissez de quoi vous êtes notifié et comment\",\n \"matrixLabel\": \"Me notifier pour\",\n \"rowHeader\": \"Événement\",\n \"saving\": \"Enregistrement…\",\n \"saved\": \"Enregistré\",\n \"unavailable\": \"Pas encore disponible\",\n \"loading\": \"Chargement des préférences\",\n \"errorTitle\": \"Ces paramètres n’ont pas pu être chargés\",\n \"emptyTitle\": \"Rien à configurer pour l’instant\",\n \"emptyBody\": \"Les événements de notification apparaissent ici à mesure que leurs producteurs sont livrés.\",\n \"saveFailed\": \"Impossible d’enregistrer cette modification.\"\n }\n },\n \"studio\": {\n \"source\": {\n \"engine\": {\n \"label\": \"Moteur de base de données\",\n \"postgres\": \"PostgreSQL\",\n \"mysql\": \"MySQL / MariaDB\",\n \"sqlite\": \"SQLite\"\n },\n \"format\": {\n \"label\": \"Format du schéma\",\n \"helper\": \"Laissez la détection automatique, sauf si elle se trompe.\",\n \"auto\": \"Détection automatique\",\n \"sql\": \"DDL SQL / pg_dump\",\n \"prisma\": \"Schéma Prisma\",\n \"drizzle\": \"Drizzle ORM\",\n \"typeorm\": \"Entités TypeORM\",\n \"sequelize\": \"Modèles Sequelize\",\n \"rails\": \"Rails schema.rb\",\n \"django\": \"Django models.py\",\n \"json\": \"JSON Adminium\"\n },\n \"sqlite\": {\n \"file\": \"Chemin du fichier de base de données\",\n \"helper\": \"SQLite est un fichier, pas un serveur — indiquez le chemin absolu sur la machine qui exécute Adminium.\"\n },\n \"file\": {\n \"detectedAs\": \"Détecté : {format}\",\n \"moreWarnings\": \"+{count} avertissements supplémentaires — la liste complète apparaît à l’étape d’analyse.\",\n \"dropTitle\": \"Déposez votre fichier de schéma ici, ou parcourez\",\n \"dropHint\": \"SQL DDL / pg_dump, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, modèles Django, Adminium JSON\",\n \"pitch\": \"Aucune connexion à la base requise — nous analysons votre fichier de schéma et construisons les mêmes tableaux de bord.\",\n \"parsing\": \"Lecture du fichier de schéma téléversé…\",\n \"tables\": \"tables\",\n \"columns\": \"colonnes\",\n \"warnings\": \"avertissements\",\n \"errorTitle\": \"Impossible d’analyser le fichier\",\n \"parseFailed\": \"Nous n’avons pas pu analyser ce fichier. Si la détection automatique s’est trompée, choisissez le format explicitement et réessayez.\",\n \"unsupported\": \"Format non reconnu — SQL DDL, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, modèles Django et Adminium JSON sont pris en charge. Choisissez-en un explicitement et réessayez.\",\n \"requestFailed\": \"Échec du téléversement — vérifiez votre connexion et réessayez.\"\n },\n \"title\": \"Connectez votre base de données\",\n \"subtitle\": \"Pointez Adminium vers une base de données et nous générerons un tableau de bord d’administration à partir de son schéma.\",\n \"name\": \"Nom de la connexion\",\n \"namePlaceholder\": \"Postgres de production\",\n \"modeLabel\": \"Mode de saisie de la source\",\n \"mode\": {\n \"dsn\": \"Chaîne de connexion\",\n \"fields\": \"Champs individuels\",\n \"file\": \"Fichier de schéma\"\n },\n \"dsn\": {\n \"label\": \"Chaîne de connexion\",\n \"helper\": \"postgres://utilisateur:motdepasse@hote:5432/base — mysql:// et sqlite: fonctionnent aussi.\",\n \"incomplete\": \"Ajoutez l’hôte et la base, p. ex. postgres://user@host:5432/db\",\n \"invalidScheme\": \"Schéma non reconnu — attendu : postgres://, mysql://, mariadb:// ou sqlite:\",\n \"quickFill\": \"Remplissage rapide :\"\n },\n \"fields\": {\n \"host\": \"Hôte\",\n \"port\": \"Port\",\n \"database\": \"Base de données\",\n \"user\": \"Utilisateur\",\n \"password\": \"Mot de passe\",\n \"ssl\": \"Mode SSL\",\n \"preview\": \"Aperçu de la chaîne de connexion :\"\n },\n \"readOnlyRole\": {\n \"title\": \"Utilisez un rôle en lecture seule\",\n \"body\": \"Adminium n’écrit jamais dans votre base — la configuration n’utilise que les métadonnées du schéma. Nous recommandons un utilisateur dédié avec des droits SELECT uniquement ; vous choisirez où Adminium range ses propres tables à l’étape du stockage méta.\"\n }\n },\n \"capability\": {\n \"mysqlApproxRows\": \"Les nombres de lignes MySQL sont des estimations du moteur de stockage (dérive possible jusqu’à ±40 %) — affichés avec ≈.\",\n \"mysqlFkEnum\": \"Les métadonnées FK/enum de MySQL sont plus limitées : les tables MyISAM ne déclarent pas de clés étrangères, les enums sont des types enum(…) par colonne et les contraintes CHECK requièrent MySQL 8.0.16+ / MariaDB 10.2+.\",\n \"sqliteCheckEnums\": \"SQLite n’a pas de type enum natif — les enums sont synthétisés à partir des contraintes CHECK (col IN (…)).\",\n \"sqliteNoComments\": \"SQLite n’a pas de commentaires de colonne — utilisez l’éditeur de remappage du schéma pour ajouter des libellés.\",\n \"importNoRowCounts\": \"Les fichiers de schéma ne contiennent pas de nombres de lignes — la liste des tables affiche — plutôt que des chiffres inventés.\",\n \"importNoLiveHealth\": \"Pas de connexion à une base de données réelle — les contrôles de santé et la détection de dérive du schéma sont indisponibles pour cette source.\",\n \"rowsUnavailable\": \"Les fichiers de schéma n’ont pas de base de données réelle — les nombres de lignes restent inconnus tant que vous n’en connectez pas une.\",\n \"rowsRunAnalyze\": \"Pas encore d’estimation — exécutez ANALYZE sur la base pour obtenir les nombres de lignes.\",\n \"rowsNoEstimate\": \"Le moteur n’a communiqué aucune estimation pour cette table.\",\n \"rowsApproximate\": \"Estimation du moteur de stockage — dérive possible jusqu’à ±40 % avec InnoDB.\"\n },\n \"test\": {\n \"log\": {\n \"moreWarnings\": \"+{count} avertissements du parseur supplémentaires\",\n \"connecting\": \"Établissement d’une connexion sécurisée…\",\n \"connected\": \"Connecté ({latency} ms) · introspection en lecture seule\",\n \"connectFailed\": \"Échec de la connexion.\",\n \"readingSchema\": \"Lecture du schéma : public\",\n \"readingFile\": \"Lecture du fichier de schéma téléversé…\",\n \"parsingFile\": \"Analyse de {file}…\",\n \"detected\": \"{tables} tables · {columns} colonnes détectées\",\n \"found\": \"{tables} tables · {columns} colonnes trouvées\",\n \"mapping\": \"Correspondance des types de colonnes → widgets de saisie\",\n \"relations\": \"Détection des relations…\",\n \"piiScan\": \"Recherche de colonnes PII…\",\n \"piiDone\": \"Analyse PII terminée — {count} colonnes masquées par défaut\",\n \"piiDoneUnknown\": \"Analyse PII terminée\",\n \"jobFailed\": \"Échec de l’introspection.\",\n \"networkFailed\": \"Échec de la requête — vérifiez votre connexion et réessayez.\",\n \"ready\": \"Prêt\"\n },\n \"title\": \"Analyse de votre schéma\",\n \"subtitle\": \"Introspection des tables, colonnes et relations. Cela prend quelques secondes.\",\n \"trust\": \"Nous ne faisons que lire votre schéma et vos données. Rien n’est modifié.\",\n \"errorTitle\": \"Échec de la connexion\",\n \"retry\": \"Réessayer\",\n \"logLabel\": \"Journal d’introspection\",\n \"hint\": {\n \"auth\": \"Échec de l’authentification — vérifiez le nom d’utilisateur et le mot de passe dans votre DSN.\",\n \"hostUnreachable\": \"Hôte injoignable — vérifiez le nom d’hôte et le port, et que la base accepte les connexions depuis cette machine (ajoutez nos IP à la liste d’autorisation).\",\n \"metaPlacement\": \"Cette source ne peut pas héberger les tables méta d’Adminium — continuez avec une base méta séparée.\",\n \"permission\": \"Le rôle s’est connecté mais n’a pas les droits de lecture du schéma — accordez USAGE sur le schéma à votre rôle d’introspection.\",\n \"timeout\": \"La base n’a pas répondu à temps — vérifiez le chemin réseau et la charge, puis réessayez.\",\n \"tls\": \"Échec de la négociation TLS — essayez sslmode=require, ou téléversez le certificat CA attendu par votre serveur.\",\n \"unknown\": \"Échec de la connexion — vérifiez la DSN et réessayez.\"\n }\n },\n \"tables\": {\n \"importNoCounts\": \"Les fichiers de schéma ne contiennent pas de nombres de lignes — la colonne affiche — tant qu’aucune base réelle n’est connectée.\",\n \"title\": \"Choisissez vos tables\",\n \"subtitle\": \"Choisissez lesquelles inclure. Vous pourrez en changer à tout moment.\",\n \"search\": \"Filtrer les tables…\",\n \"listLabel\": \"Tables incluables\",\n \"emptyFilter\": \"Aucune table ne correspond à votre filtre.\",\n \"pii\": \"PII\",\n \"highVolume\": \"gros volume\",\n \"highVolumeNote\": \"Les tables de plus de 100 000 lignes démarrent décochées — les tables techniques ont rarement leur place dans un tableau de bord.\",\n \"joinHidden\": \"{count} tables de jointure/système sont masquées d’avance — elles alimentent toujours les relations plusieurs-à-plusieurs.\"\n },\n \"hub\": {\n \"title\": \"Connexions de données\",\n \"subtitle\": \"{healthy, number} sur {total, plural, one {# connexion} other {# connexions}} en bonne santé\",\n \"connectNew\": \"Nouvelle connexion\",\n \"stats\": {\n \"connections\": \"Connexions\",\n \"healthy\": \"En bonne santé\",\n \"tables\": \"Tables incluses\",\n \"pages\": \"Pages générées\"\n },\n \"status\": {\n \"connected\": \"Connectée\",\n \"error\": \"Erreur\",\n \"unconfigured\": \"Brouillon\",\n \"testing\": \"Test en cours…\"\n },\n \"card\": {\n \"readOnly\": \"Lecture seule\",\n \"tables\": \"Tables\",\n \"pages\": \"Pages\",\n \"latency\": \"Latence\",\n \"latencyMs\": \"{latency, number} ms\",\n \"lastIntrospected\": \"Dernière introspection\",\n \"never\": \"Jamais\"\n },\n \"action\": {\n \"test\": \"Tester\",\n \"reintrospect\": \"Réintrospecter\",\n \"reintrospectFile\": \"Les sources de type fichier de schéma n’ont pas de base de données active — téléversez à nouveau le fichier.\",\n \"remap\": \"Remapper le schéma\",\n \"delete\": \"Supprimer\"\n },\n \"test\": {\n \"ok\": \"Connexion en bonne santé · {latency, number} ms\",\n \"failed\": \"Échec du test de connexion\"\n },\n \"introspect\": {\n \"noChanges\": \"Schéma inchangé — aucun nouvel instantané.\",\n \"updated\": \"Schéma réintrospecté\",\n \"masksProposed\": \"{count, plural, one {# colonne proposée} other {# colonnes proposées}} au masquage — à vérifier dans l’éditeur de remappage.\",\n \"failed\": \"Échec de l’introspection. Réessayez.\"\n },\n \"delete\": {\n \"title\": \"Supprimer la connexion\",\n \"body\": \"Cette action supprime « {name} » et les pages générées. Votre base de données n’est jamais touchée.\",\n \"prompt\": \"Saisissez {name} pour confirmer\",\n \"confirm\": \"Supprimer la connexion\",\n \"cancel\": \"Annuler\",\n \"close\": \"Fermer\",\n \"success\": \"Connexion « {name} » supprimée\",\n \"failed\": \"Impossible de supprimer la connexion. Réessayez.\"\n },\n \"empty\": {\n \"title\": \"Aucune source de données\",\n \"body\": \"Connectez une base de données : Adminium génère votre panneau d’administration à partir de son schéma.\",\n \"cta\": \"Connecter une base de données\"\n }\n },\n \"settingsHub\": {\n \"title\": \"Paramètres de l’espace de travail\",\n \"subtitle\": \"Identité, sécurité et actions destructrices pour cet espace de travail.\",\n \"save\": \"Enregistrer les modifications\",\n \"saved\": \"Paramètres de l’espace de travail mis à jour\",\n \"saveFailed\": \"Impossible d’enregistrer les paramètres de l’espace de travail. Réessayez.\",\n \"superAdminOnlyTitle\": \"Super administrateur requis\",\n \"superAdminOnly\": \"Seul un super administrateur peut modifier l’identité et les paramètres de sécurité de l’espace de travail.\",\n \"identity\": {\n \"heading\": \"Identité de l’espace de travail\",\n \"appName\": {\n \"label\": \"Nom de l’application\",\n \"helper\": \"Affiché dans la barre latérale, le titre du navigateur et les e-mails.\",\n \"error\": \"Saisissez un nom de 60 caractères maximum.\"\n }\n },\n \"security\": {\n \"heading\": \"Sécurité\",\n \"require2fa\": {\n \"label\": \"Exiger l’authentification à deux facteurs\",\n \"desc\": \"Chaque membre doit activer la 2FA pour se connecter.\"\n },\n \"allowSignup\": {\n \"label\": \"Autoriser l’auto-inscription\",\n \"desc\": \"N’importe qui peut créer un compte — désactivé, l’espace de travail reste sur invitation uniquement.\"\n },\n \"sessionTtl\": {\n \"label\": \"Durée de session (heures)\",\n \"error\": \"Entre {min, number} et {max, number} heures.\"\n },\n \"passwordMin\": {\n \"label\": \"Longueur minimale du mot de passe\",\n \"error\": \"Entre {min, number} et {max, number} caractères.\"\n }\n },\n \"review\": {\n \"title\": \"Enregistrer les paramètres de l’espace de travail\",\n \"subtitle\": \"Vérifiez vos modifications avant d’enregistrer.\",\n \"confirm\": \"Enregistrer les modifications\",\n \"cancel\": \"Annuler\",\n \"close\": \"Fermer\",\n \"on\": \"Activé\",\n \"off\": \"Désactivé\",\n \"change\": \"{before} → {after}\"\n },\n \"defaultsCard\": {\n \"heading\": \"Valeurs par défaut d’apparence et de langue\",\n \"body\": \"Le thème, la couleur d’accent, la densité et la langue de tout l’espace de travail se trouvent dans les valeurs par défaut globales.\",\n \"cta\": \"Ouvrir les valeurs par défaut globales\"\n },\n \"danger\": {\n \"heading\": \"Zone de danger\",\n \"subtitle\": \"Actions irréversibles.\",\n \"empty\": \"Rien à supprimer — aucune connexion pour l’instant.\",\n \"deleteDesc\": \"Supprime la connexion et les pages générées. Votre base de données n’est pas touchée. Irréversible.\",\n \"deleteCta\": \"Supprimer la connexion\"\n },\n \"aiCard\": {\n \"heading\": \"Enrichissement par IA\",\n \"body\": \"Configurez un fournisseur IA (ou l’aller-retour copier-coller) pour enrichir libellés, groupes et relations.\",\n \"cta\": \"Ouvrir les réglages IA\"\n }\n },\n \"settingsAi\": {\n \"title\": \"Enrichissement par IA\",\n \"subtitle\": \"Connectez un modèle pour qu’Adminium suggère des libellés, des groupes, des relations et plus encore — toujours revus sous forme de diff avant toute application.\",\n \"saved\": \"Fournisseur IA enregistré\",\n \"saveFailed\": \"Impossible d’enregistrer le fournisseur IA. Réessayez.\",\n \"save\": \"Enregistrer le fournisseur\",\n \"test\": \"Tester la connexion\",\n \"testHintDirty\": \"Enregistrez vos modifications avant de tester.\",\n \"testing\": \"Test du fournisseur en cours…\",\n \"testError\": \"Échec du test\",\n \"testErrorBody\": \"Impossible de joindre le fournisseur. Vérifiez la clé et l’URL de base.\",\n \"testOk\": \"Connecté à {model} en {latency} ms\",\n \"testUnknownModel\": \"le fournisseur\",\n \"provider\": {\n \"heading\": \"Fournisseur IA\",\n \"subtitle\": \"Choisissez comment Adminium atteint un modèle pour enrichir votre schéma. Les clés sont stockées chiffrées et ne sont jamais réaffichées.\",\n \"active\": \"Actif\",\n \"anthropic\": {\n \"label\": \"Anthropic\",\n \"desc\": \"Modèles Claude via l’API Anthropic.\"\n },\n \"openai\": {\n \"label\": \"OpenAI\",\n \"desc\": \"Modèles GPT via l’API OpenAI.\"\n },\n \"openaiCompatible\": {\n \"label\": \"Compatible OpenAI\",\n \"desc\": \"Tout point de terminaison au format OpenAI — Groq, Together, vLLM, LM Studio.\"\n },\n \"ollama\": {\n \"label\": \"Ollama (local)\",\n \"desc\": \"Modèles exécutés localement via Ollama — sans clé, sans cloud.\"\n },\n \"requiresNetwork\": \"Nécessite Internet et une clé API\",\n \"networkDisabledTitle\": \"Les fournisseurs IA directs sont désactivés sur cette installation\",\n \"networkDisabledBody\": \"Cet Adminium est configuré sans accès Internet sortant : il ne peut joindre aucune API de fournisseur. Utilisez l'aller-retour copier-coller ci-dessous — ni clé ni réseau requis.\"\n },\n \"configure\": {\n \"heading\": \"Configurer {provider}\"\n },\n \"field\": {\n \"baseUrl\": \"URL de base\",\n \"baseUrlOptional\": \"Laissez tel quel, sauf si Ollama tourne sur un autre hôte.\",\n \"baseUrlHelper\": \"La racine du point de terminaison qui sert /chat/completions.\",\n \"model\": \"Modèle\",\n \"modelFreeText\": \"Saisissez l’identifiant exact du modèle servi par votre point de terminaison.\",\n \"modelLive\": \"Chargé en direct depuis le fournisseur.\",\n \"modelStatic\": \"Une liste éprouvée ; saisissez un identifiant personnalisé après l’enregistrement pour l’actualiser.\",\n \"modelLoading\": \"Chargement…\",\n \"modelPlaceholder\": \"Sélectionner un modèle…\",\n \"key\": \"Clé API\",\n \"keyStored\": \"Stockée chiffrée. Remplacez-la pour utiliser une autre clé.\",\n \"keyMask\": \"sk-…{last4}\",\n \"keyReplace\": \"Remplacer la clé\",\n \"keyOptional\": \"Facultatif — certains points de terminaison n’exigent aucune clé.\",\n \"keyWriteOnly\": \"En écriture seule : une fois enregistrée, elle n’est jamais réaffichée.\",\n \"noKeyTitle\": \"Aucune clé API requise\",\n \"noKeyBody\": \"Ollama tourne localement, donc rien ne quitte cette machine.\"\n },\n \"runStatus\": {\n \"draft\": \"Brouillon\",\n \"running\": \"En cours\",\n \"awaitingResponse\": \"En attente de réponse\",\n \"validated\": \"Validé\",\n \"applied\": \"Appliqué\",\n \"partiallyApplied\": \"Partiellement appliqué\",\n \"failed\": \"Échoué\",\n \"discarded\": \"Abandonné\"\n },\n \"byo\": {\n \"heading\": \"Pas de clé ? Utilisez votre propre outil IA\",\n \"subtitle\": \"L’aller-retour copier-coller — rien ne quitte cette machine.\",\n \"body\": \"Studio peut générer un prompt autonome à partir de votre schéma. Exécutez-le dans Claude Code, ChatGPT ou l’outil de votre choix, puis collez le JSON renvoyé dans l’assistant de connexion. Même validation, même revue, même résultat que la voie directe.\",\n \"guaranteeTitle\": \"Garantie sans télémétrie\",\n \"guarantee1\": \"Le prompt ne contient que votre schéma et des statistiques agrégées — jamais de données de lignes par défaut.\",\n \"guarantee2\": \"Aucun identifiant, URL d’instance ni justificatif n’y est intégré.\",\n \"guarantee3\": \"Les exécutions BYO ne font aucun appel réseau.\",\n \"promptVersion\": \"Prompt {version}\",\n \"schemaVersion\": \"Schéma {version}\",\n \"headingRecommended\": \"Utilisez votre propre outil IA — aucune clé requise\",\n \"recommended\": \"Recommandé\"\n },\n \"history\": {\n \"heading\": \"Historique des exécutions\",\n \"subtitle\": \"Exécutions d’enrichissement passées. Ouvrez-en une pour revoir ses suggestions.\",\n \"tableLabel\": \"Exécutions d’enrichissement\",\n \"colDate\": \"Date\",\n \"colSource\": \"Source\",\n \"colStatus\": \"Statut\",\n \"colChunks\": \"Blocs\",\n \"openReview\": \"Ouvrir la revue de l’exécution du {date}\",\n \"connection\": \"Connexion\",\n \"empty\": \"Aucune exécution d’enrichissement pour l’instant. Enrichissez un schéma depuis l’assistant de connexion pour voir l’historique ici.\",\n \"errorTitle\": \"Impossible de charger les exécutions\",\n \"errorBody\": \"Rechargez la page pour réessayer.\",\n \"noConnections\": \"Connectez d’abord une base de données — les exécutions d’enrichissement sont enregistrées par connexion.\",\n \"byo\": \"BYO\",\n \"directPath\": \"Directe\"\n }\n },\n \"enrich\": {\n \"title\": \"Enrichir avec l’IA\",\n \"subtitle\": \"Affinez éventuellement les libellés, groupes, énumérations et tableaux de bord générés à l’aide d’un LLM. La base heuristique fonctionne sans cela — ceci ajoute seulement des suggestions que vous vérifiez avant toute application.\",\n \"intentLabel\": \"Comment souhaitez-vous enrichir ?\",\n \"sectionsLegend\": \"Que doit décider l’IA ?\",\n \"localesLegend\": \"Traduire les libellés en\",\n \"localeLocked\": \"(requis)\",\n \"samplingTitle\": \"Inclure des valeurs d’exemple\",\n \"samplingHint\": \"Inclut jusqu’à 20 valeurs réelles par colonne non-PII dans l’invite.\",\n \"samplingPreviewTitle\": \"Ce qui quitte cette machine\",\n \"samplingPreviewBody\": \"Jusqu’à 20 valeurs les plus fréquentes par colonne non-PII, plus min/max pour les colonnes numériques et de date. Les colonnes marquées PII ne sont jamais échantillonnées. Tout le reste demeure purement agrégé. Vérifiez l’invite exacte avant de copier (BYO) — rien n’est envoyé sans votre action.\",\n \"noSections\": \"Sélectionnez au moins un groupe de décisions à enrichir.\",\n \"generatePrompt\": \"Générer l’invite\",\n \"startProvider\": \"Démarrer l’enrichissement\",\n \"startOver\": \"Recommencer\",\n \"copied\": \"Copié\",\n \"createFailed\": \"Impossible de construire l’invite d’enrichissement — réessayez.\",\n \"createFailedTitle\": \"Impossible de démarrer\",\n \"providerFallback\": \"votre fournisseur d’IA\",\n \"fileTitle\": \"L’enrichissement par IA nécessite une base de données active\",\n \"fileBody\": \"Les sources de type fichier de schéma n’ont pas encore d’instantané à enrichir. Connectez une base de données active pour utiliser l’enrichissement par IA, ou continuez — la base heuristique génère tout de même une application complète.\",\n \"section\": {\n \"labels\": \"Libellés et descriptions\",\n \"groups\": \"Groupes de navigation\",\n \"enums\": \"Sémantique des énumérations\",\n \"relations\": \"Relations\",\n \"keys\": \"Colonnes clés\",\n \"templates\": \"Modèles de page\",\n \"widgets\": \"Widgets de tableau de bord\",\n \"pii\": \"PII et masquage\",\n \"icons\": \"Icônes\",\n \"microcopy\": \"Microcopie\"\n },\n \"provider\": {\n \"title\": \"Utiliser mon fournisseur d’IA\",\n \"description\": \"Lancez l’enrichissement maintenant avec votre fournisseur configuré. Vous vérifiez chaque suggestion sous forme de diff.\",\n \"unconfigured\": \"Aucun fournisseur d’IA n’est encore configuré — copiez une invite dans votre propre outil ci-dessous, ou configurez d’abord un fournisseur.\",\n \"settingsHint\": \"Vous voulez le lancer directement ?\",\n \"settingsLink\": \"Configurer un fournisseur dans Paramètres → IA\",\n \"networkDisabled\": \"Cet Adminium n'a pas d'accès Internet sortant : il ne peut joindre aucune API de fournisseur. Utilisez plutôt l'aller-retour copier-coller — même invite, même revue.\"\n },\n \"byo\": {\n \"cardTitle\": \"Copier une invite vers mon propre outil d’IA\",\n \"cardDescription\": \"Copiez une invite autonome dans Claude Code, ChatGPT, n’importe quoi — puis recollez le JSON. Aucune clé nécessaire, rien ne quitte cette machine automatiquement.\",\n \"guidance\": \"Exécutez ceci dans n’importe quel outil d’IA — Claude Code, ChatGPT, peu importe. Collez le JSON renvoyé ci-dessous.\",\n \"promptLabel\": \"Invite d’enrichissement\",\n \"promptLabelN\": \"Invite d’enrichissement {index} sur {total}\",\n \"tokenChip\": \"≈ {tokens} jetons\",\n \"copyPrompt\": \"Copier l’invite\",\n \"copyPromptDone\": \"Invite copiée\",\n \"download\": \"Télécharger .md\",\n \"chunkTabs\": \"Segments d’invite\",\n \"chunkTab\": \"Invite {index}\",\n \"chunkValid\": \"Segment {index} validé\",\n \"pasteLabel\": \"Collez la réponse JSON\",\n \"pastePlaceholder\": \"Collez la réponse JSON ici…\",\n \"validate\": \"Valider\",\n \"valid\": \"Réponse validée\",\n \"mergedTitle\": \"Les {count} segments sont validés et fusionnés\",\n \"mergedTitleSingle\": \"Réponse validée\",\n \"mergedBody\": \"Les suggestions sont prêtes à être vérifiées par rapport à la base heuristique.\",\n \"errorsTitle\": \"La validation a trouvé {count} problèmes\",\n \"copyErrors\": \"Copier les erreurs pour votre outil d’IA\",\n \"copyErrorsDone\": \"Erreurs copiées\",\n \"copyErrorsHint\": \"Recollez ceci dans votre outil d’IA pour obtenir une réponse corrigée.\",\n \"droppedItems\": \"{count} suggestions ont été écartées lors de la validation — la vérification montre le reste.\",\n \"pendingTitle\": \"Validez chaque invite pour continuer\",\n \"pendingBody\": \"Collez la réponse JSON ci-dessus et validez-la pour passer à la vérification.\",\n \"pendingBodyChunked\": \"Chaque segment doit être validé avant la fusion des suggestions. Collez et validez chaque invite ci-dessus.\",\n \"requestFailed\": \"Impossible de joindre le serveur pour valider — réessayez.\",\n \"continueReview\": \"Continuer vers la vérification\",\n \"wholeDocument\": \"document entier\",\n \"cardTitleRecommended\": \"Copier une invite vers mon propre outil IA — recommandé\"\n },\n \"direct\": {\n \"title\": \"Enrichissement par IA\",\n \"subtitle\": \"Envoi de votre schéma à\",\n \"building\": \"Construction de l’invite…\",\n \"logLabel\": \"Journal d’enrichissement\",\n \"cancel\": \"Annuler\",\n \"back\": \"Retour aux options\",\n \"retry\": \"Réessayer\",\n \"done\": \"Enrichissement terminé — vérifiez les suggestions.\",\n \"continueReview\": \"Continuer vers la vérification\",\n \"failed\": \"L’exécution du fournisseur a échoué. Vérifiez vos paramètres d’IA et réessayez.\",\n \"jobFailed\": \"L’exécution de l’enrichissement ne s’est pas terminée.\",\n \"startFailed\": \"Impossible de démarrer l’exécution — réessayez.\",\n \"errorTitle\": \"Échec de l’enrichissement\"\n },\n \"skip\": {\n \"title\": \"Ignorer — utiliser uniquement l’heuristique\",\n \"description\": \"Générer à partir de la base heuristique. Vous pourrez enrichir plus tard depuis Paramètres → IA — ignorer n’est jamais pénalisé.\",\n \"confirmTitle\": \"Poursuite avec l’heuristique\",\n \"confirmBody\": \"L’application générée utilisera les libellés, groupes et tableaux de bord heuristiques. Continuez la génération — vous pouvez lancer l’enrichissement par IA à tout moment depuis Paramètres → IA.\"\n }\n },\n \"review\": {\n \"unavailableTitle\": \"Écran de revue indisponible\",\n \"unavailableBody\": \"Cette version n’inclut pas encore l’écran de revue d’enrichissement (06-T14). Il arrive avec le flux diff-et-application.\"\n },\n \"llmRuns\": {\n \"review\": {\n \"header\": {\n \"title\": \"Examiner les suggestions de l’IA\",\n \"model\": \"Modèle\",\n \"snapshot\": \"Instantané\",\n \"byo\": \"BYO\",\n \"pathDirect\": \"API directe\",\n \"pathByo\": \"Copier-coller\",\n \"agree\": \"{n} d’accord\",\n \"conflict\": \"{n} en conflit\",\n \"new\": \"{n} nouvelles\",\n \"rejects\": \"{n} rejets\",\n \"countsAria\": \"Nombre de suggestions\"\n },\n \"bulk\": {\n \"thresholdLabel\": \"Seuil de confiance\",\n \"thresholdAria\": \"Seuil de confiance pour « Tout accepter »\",\n \"acceptAll\": \"Tout accepter ≥ {pct}%\",\n \"clear\": \"Effacer la sélection\"\n },\n \"section\": {\n \"selectAllAria\": \"Tout sélectionner dans {group}\",\n \"acceptedCount\": \"{n} acceptées\"\n },\n \"group\": {\n \"labels\": \"Libellés et traductions\",\n \"navigation\": \"Navigation et domaines\",\n \"enums\": \"Sémantique des énumérations\",\n \"relations\": \"Relations\",\n \"keys\": \"Colonnes clés\",\n \"templates\": \"Modèles de page\",\n \"dashboards\": \"Tableaux de bord et widgets\",\n \"pii\": \"DCP et masquage\",\n \"icons\": \"Icônes\",\n \"microcopy\": \"Microcopie\"\n },\n \"status\": {\n \"agree\": \"Concorde\",\n \"conflict\": \"Conflit\",\n \"new\": \"Nouveau\",\n \"heuristicOnly\": \"Heuristique seule\",\n \"rejects\": \"Rejette l’heuristique\",\n \"locked\": \"Verrouillé\"\n },\n \"row\": {\n \"acceptAria\": \"Accepter la suggestion {noun} pour {target}\",\n \"keptEdited\": \"conservé — modifié par vous\",\n \"rejectsCallout\": \"L’IA rejette une décision heuristique — confirmez avant d’accepter.\",\n \"showTranslations\": \"Afficher les traductions\",\n \"hideTranslations\": \"Masquer les traductions\",\n \"confidenceAria\": \"Confiance {pct}%\",\n \"noAi\": \"Aucune suggestion de l’IA\"\n },\n \"value\": {\n \"none\": \"Aucune valeur\",\n \"absent\": \"Aucun\",\n \"dash\": \"—\",\n \"display\": \"Affichage\",\n \"key\": \"Clé\",\n \"rank\": \"rang {n}\",\n \"span\": \"largeur {n}\",\n \"tableCount\": \"{n} tables\",\n \"widgetCount\": \"{n} widgets\",\n \"enumWorkflow\": \"Flux\",\n \"enumCategory\": \"Catégorie\",\n \"notPii\": \"Pas de DCP\",\n \"label\": \"Libellé\",\n \"description\": \"Description\",\n \"subtitle\": \"Sous-titre de page\",\n \"headline\": \"Titre de l’état vide\",\n \"guidance\": \"Conseil de l’état vide\"\n },\n \"apply\": {\n \"title\": \"Appliquer {n} suggestions\",\n \"subtitle\": \"Ces modifications sont écrites en une seule transaction et peuvent être annulées.\",\n \"empty\": \"Rien à appliquer.\",\n \"confirm\": \"Appliquer les modifications\"\n },\n \"footer\": {\n \"count\": \"{n} suggestions sélectionnées\",\n \"apply\": \"Appliquer {n} suggestions acceptées\",\n \"failed\": \"Échec de l’application\"\n },\n \"toast\": {\n \"applied\": \"{n} suggestions appliquées\",\n \"appliedPartial\": \"{n} suggestions appliquées (certaines ignorées)\",\n \"applyFailed\": \"Impossible d’appliquer les suggestions\",\n \"undoFailed\": \"Impossible d’annuler cette modification\"\n },\n \"error\": {\n \"title\": \"Impossible de charger cette exécution\"\n },\n \"notReady\": {\n \"title\": \"Cette exécution n’a pas encore de suggestions à examiner\",\n \"body\": \"Une exécution doit être validée avant que ses suggestions puissent être examinées. Générez ou collez d’abord une réponse.\"\n },\n \"applied\": {\n \"title\": \"Cette exécution a été appliquée\",\n \"body\": \"Les suggestions acceptées ci-dessous sont en lecture seule.\"\n },\n \"empty\": {\n \"title\": \"Aucune suggestion\",\n \"body\": \"Cette exécution n’a produit aucune suggestion à examiner.\"\n },\n \"cat\": {\n \"label\": \"libellé\",\n \"key\": \"colonnes clés\",\n \"enum\": \"énumération\",\n \"relation\": \"relation\",\n \"pii\": \"DCP\",\n \"template\": \"modèle de page\",\n \"group\": \"groupe de navigation\",\n \"dashboard\": \"tableau de bord\",\n \"widget\": \"widget\",\n \"copy\": \"microcopie\"\n }\n }\n },\n \"wizard\": {\n \"title\": \"Nouvelle connexion\",\n \"back\": \"Retour\",\n \"continue\": \"Continuer\",\n \"progress\": \"Progression de la configuration\",\n \"persistFailed\": \"Impossible d’enregistrer votre sélection de tables — réessayez.\",\n \"persistFailedTitle\": \"Échec de l’enregistrement\",\n \"step\": {\n \"source\": \"Source\",\n \"test\": \"Analyser\",\n \"tables\": \"Tables\",\n \"meta\": \"Stockage méta\",\n \"intent\": \"Intention\",\n \"enrich\": \"Enrichir\",\n \"generate\": \"Générer\"\n }\n },\n \"meta\": {\n \"title\": \"Où Adminium doit-il ranger ses propres tables ?\",\n \"subtitle\": \"Pages, rôles, journal d’audit et paramètres vivent dans des tables préfixées adminium_ — jamais mêlés à vos données.\",\n \"sameDb\": {\n \"title\": \"Même base de données\",\n \"description\": \"Les tables adminium_* sont créées à côté de vos tables sources. La configuration la plus simple — nécessite un rôle avec droits d’écriture et CREATE TABLE.\",\n \"disabledReadOnly\": \"Votre rôle est en lecture seule — Adminium n’écrit jamais dans cette base. Choisissez une base séparée pour les tables d’Adminium.\",\n \"disabledNoDdl\": \"Ce rôle ne peut pas exécuter de DDL — les migrations d’Adminium exigent CREATE TABLE. Choisissez une base séparée pour les tables d’Adminium.\",\n \"disabledFile\": \"Un fichier de schéma n’a pas de base active — choisissez une base séparée pour les tables d’Adminium.\"\n },\n \"separate\": {\n \"title\": \"Base de données séparée\",\n \"description\": \"Adminium garde ses tables dans une autre base. Votre source reste intacte — requis pour les sources en lecture seule.\",\n \"dsn\": \"Chaîne de connexion de la base méta\",\n \"helper\": \"Nécessite des droits d’écriture + DDL — Adminium y exécute ses propres migrations.\",\n \"test\": \"Tester la connexion\",\n \"ok\": \"Compatible — écriture ✓ · DDL ✓\",\n \"insufficient\": \"Ce rôle ne peut pas héberger le magasin méta — Adminium y a besoin des droits d’écriture et CREATE TABLE.\",\n \"errorTitle\": \"Magasin méta incompatible\"\n },\n \"testFailed\": \"Échec de la connexion.\",\n \"v1Note\": {\n \"title\": \"À propos de cette installation\",\n \"body\": \"Ce serveur a choisi son magasin méta au premier démarrage. Cette étape vérifie que votre choix est compatible avec cette connexion et l’enregistre — le serveur applique la même règle indépendamment (409 META_PLACEMENT_INVALID). Déplacer un magasin méta existant est une tâche d’exploitation (M10).\"\n }\n },\n \"intent\": {\n \"title\": \"De quoi avez-vous besoin ?\",\n \"subtitle\": \"L’intention détermine quelles pages sont générées. Vous pourrez la changer plus tard — la changer propose une régénération, jamais une réécriture silencieuse.\",\n \"trust\": \"Nous ne lisons que votre schéma — jamais vos données de lignes pendant la configuration.\",\n \"fullAdmin\": {\n \"title\": \"Panneau d’administration complet\",\n \"description\": \"Tableaux de bord, pages CRUD, recherche, imports et exports — tout ce que votre schéma permet.\"\n },\n \"analytics\": {\n \"title\": \"Analytique en lecture seule\",\n \"description\": \"Tableaux de bord, graphiques et grilles en lecture seule. Pas de formulaires, pas d’écritures — chaque rôle plafonné à Lecteur.\"\n },\n \"crud\": {\n \"title\": \"Tables CRUD\",\n \"description\": \"Une page d’édition par table plus recherche et import/export — un accueil minimal, sans tableaux de bord.\"\n },\n \"support\": {\n \"title\": \"Console de support\",\n \"description\": \"Files d’attente, pages de tickets et de fiches clients d’abord. Suppressions désactivées par défaut. (Les modèles de files arrivent en M7 — l’ensemble de pages v1 correspond à l’admin complet.)\"\n }\n },\n \"generate\": {\n \"title\": \"Générez votre application\",\n \"subtitle\": \"Une page par table incluse plus des tableaux de bord par domaine — intention :\",\n \"run\": \"Générer le tableau de bord\",\n \"openApp\": \"Ouvrir votre application\",\n \"logLabel\": \"Journal de génération\",\n \"log\": {\n \"classifying\": \"Classification du schéma…\",\n \"composing\": \"Composition des modèles…\",\n \"writing\": \"Écriture des pages…\",\n \"done\": \"{pages} pages générées dans {groups} groupes de navigation\"\n },\n \"successTitle\": \"Votre tableau de bord est prêt\",\n \"successBody\": \"{pages} pages dans {groups} groupes de navigation — générées depuis votre schéma, modifiables dans le Studio.\",\n \"errorTitle\": \"Échec de la génération\",\n \"failed\": \"Échec de la génération — réessayez, ou relancez d’abord l’introspection.\",\n \"fileTitle\": \"Fichier de schéma analysé — la génération nécessite une base active\",\n \"fileBody\": \"Votre schéma a été analysé proprement et l’aperçu ci-dessus est réel. Générer une application fonctionnelle directement depuis un fichier de schéma (avec des lignes fictives) n’est pas encore disponible — connectez une base active pour générer dès aujourd’hui.\"\n },\n \"remap\": {\n \"column\": {\n \"nullable\": \"nullable\",\n \"labelOverride\": \"Libellé d’affichage\",\n \"labelHelper\": \"Inféré : {name}\",\n \"logicalType\": \"Type logique\",\n \"logicalTypeHelper\": \"Inféré : {type} (depuis {dbType}) — mappé par l’adaptateur ; non remplaçable en v1.\",\n \"semantic\": \"Type sémantique\",\n \"unclassified\": \"Pas encore classifié.\",\n \"semanticHelper\": \"Classificateur : {tag} · confiance {confidence}% · source : {source}\",\n \"semanticInferred\": \"inféré : {tag}\",\n \"currency\": \"Devise\",\n \"currencyHelper\": \"Code ISO 4217 appliqué au formatage monétaire.\",\n \"pii\": \"Masquer par défaut\",\n \"piiHelper\": \"Les valeurs masquées s’affichent caviardées ; le démasquage requiert la permission data.unmask_pii et est consigné dans le journal d’audit.\",\n \"enum\": \"Sémantique de l’énumération\",\n \"enumKind\": \"Nature de l’énumération\",\n \"enumWorkflow\": \"Flux\",\n \"enumCategory\": \"Catégorie\",\n \"enumLabelFor\": \"Libellé pour {value}\",\n \"enumToneFor\": \"Tonalité pour {value}\",\n \"enumToneAuto\": \"auto\",\n \"enumHelper\": \"Les énumérations de flux pilotent les pastilles de statut et les colonnes de tableau ; les tonalités associent les valeurs à l’échelle de teintes sémantiques.\"\n },\n \"diff\": {\n \"one\": \"1 modification\",\n \"count\": \"{count} modifications\",\n \"saved\": \"Remplacements enregistrés.\",\n \"revertOne\": \"Annuler {change}\",\n \"regenerate\": \"Régénérer les pages\",\n \"revertAll\": \"Tout annuler\",\n \"save\": \"Enregistrer les remplacements\"\n },\n \"table\": {\n \"iconPicker\": \"Icône de la table\",\n \"system\": \"Système\",\n \"labelOverride\": \"Libellé d’affichage\",\n \"labelHelper\": \"Inféré : {name}\",\n \"icon\": \"Icône\",\n \"navGroup\": \"Groupe de navigation\",\n \"navGroupHelper\": \"Le placement dans la navigation est décidé par le générateur — un remplacement table.navGroup ne fait pas partie du vocabulaire v1.\",\n \"include\": \"Inclure dans l’application générée\",\n \"includeHelper\": \"Les tables exclues n’ont aucune page et disparaissent de la navigation.\",\n \"shape\": \"Forme de la table (classifiée)\",\n \"role\": \"Rôle\",\n \"unclassified\": \"Non classifiée\",\n \"kind\": \"Nature\",\n \"hierarchy\": \"Hiérarchie\",\n \"selfFk\": \"Auto-référence via {column}\",\n \"polymorphic\": \"Paires polymorphes\",\n \"rows\": \"Estimation du nombre de lignes\",\n \"shapeHelper\": \"La classification est recalculée à chaque introspection ; les remplacements se superposent et survivent à la régénération.\"\n },\n \"relations\": {\n \"declared\": \"Clés étrangères déclarées\",\n \"noneDeclared\": \"Aucune clé étrangère déclarée ne touche cette table.\",\n \"inferred\": \"Relations inférées\",\n \"noneInferred\": \"Rien d’inféré pour cette table.\",\n \"confidence\": \"inférée · {pct}%\",\n \"accepted\": \"Acceptée\",\n \"suppressed\": \"Écartée\",\n \"accept\": \"Accepter\",\n \"suppress\": \"Écarter\",\n \"overrides\": \"Relations de remplacement (appliquées)\",\n \"overrideBadge\": \"remplacement\",\n \"add\": \"Ajouter une relation virtuelle\",\n \"fromColumn\": \"Colonne source\",\n \"noColumns\": \"Aucune colonne correspondante\",\n \"fromPlaceholder\": \"customer_id\",\n \"toTable\": \"Table cible\",\n \"noTables\": \"Aucune table correspondante\",\n \"toColumn\": \"Colonne cible\",\n \"cardinality\": \"Cardinalité\",\n \"addButton\": \"Ajouter la relation\"\n },\n \"toast\": {\n \"saved\": \"Remplacements de schéma enregistrés\",\n \"savedDetail\": \"Le schéma appliqué ci-dessous reflète vos modifications.\",\n \"regenerated\": \"{created} créées · {updated} mises à jour · {unchanged} inchangées\",\n \"regeneratedDetail\": \"Les pages que vous avez modifiées à la main sont préservées — seules les pages dont le generated_hash est intact ont été régénérées sur place.\",\n \"regenerateFailed\": \"Échec de la régénération\"\n },\n \"title\": \"Remappage du schéma\",\n \"subtitle\": \"{tables} tables · {applied} remplacements appliqués\",\n \"saveFailed\": \"Échec de l’enregistrement : {message}\",\n \"loadFailed\": \"Impossible de charger le schéma de cette connexion.\",\n \"inspector\": \"Inspecteur\",\n \"empty\": {\n \"title\": \"Choisissez une table ou une colonne\",\n \"description\": \"Sélectionnez un élément dans l’arborescence du schéma pour remapper son libellé, son type, ses relations ou son masquage.\"\n },\n \"tabs\": {\n \"details\": \"Détails\",\n \"relations\": \"Relations\"\n },\n \"tree\": {\n \"label\": \"Schéma\",\n \"search\": \"Rechercher des tables et des colonnes\",\n \"searchPlaceholder\": \"Rechercher des tables…\",\n \"noMatches\": \"Aucune table ne correspond à votre recherche.\",\n \"collapse\": \"Replier la table\",\n \"expand\": \"Déplier la table\",\n \"unsaved\": \"Modification non enregistrée\",\n \"excluded\": \"Exclue\"\n },\n \"badge\": {\n \"pk\": \"PK\",\n \"fk\": \"FK\",\n \"unique\": \"UNIQUE\",\n \"pii\": \"PII\",\n \"masked\": \"Masquée\"\n }\n }\n },\n \"onboarding\": {\n \"title\": \"Prise en main\",\n \"subtitle\": \"Quelques étapes pour préparer votre espace de travail.\",\n \"loading\": \"Chargement de votre liste de configuration…\",\n \"welcome\": \"Bienvenue sur Adminium, {name} 👋\",\n \"progressBody\": \"Vous avez terminé {done} étapes de configuration sur {total}. Terminez les autres pour débloquer tout l’espace de travail.\",\n \"completeBody\": \"Tout est prêt — votre espace de travail est entièrement configuré.\",\n \"ringLabel\": \"{done} étapes sur {total} terminées\",\n \"done\": \"Terminé\",\n \"skip\": \"Plus tard\",\n \"goToWorkspace\": \"Aller à l’espace de travail\",\n \"help\": {\n \"title\": \"Besoin d’aide ?\",\n \"body\": \"Nous sommes là pour vous aider à configurer rapidement.\"\n },\n \"steps\": {\n \"connectDatabase\": {\n \"title\": \"Connecter une base de données\",\n \"desc\": \"Reliez Adminium à votre base Postgres, MySQL ou SQLite — un rôle en lecture seule suffit.\",\n \"time\": \"5 min\",\n \"action\": \"Connecter\"\n },\n \"chooseTables\": {\n \"title\": \"Choisir vos tables\",\n \"desc\": \"Choisissez les tables qui deviennent des pages — les données personnelles sont masquées par défaut.\",\n \"time\": \"2 min\",\n \"action\": \"Choisir\"\n },\n \"inviteTeammates\": {\n \"title\": \"Inviter des coéquipiers\",\n \"desc\": \"Faites venir votre équipe pour explorer et collaborer.\",\n \"time\": \"2 min\",\n \"action\": \"Inviter\"\n },\n \"workspaceDefaults\": {\n \"title\": \"Définir les valeurs par défaut\",\n \"desc\": \"Thème, accent, densité et langue pour tout le monde.\",\n \"time\": \"1 min\",\n \"action\": \"Définir\"\n }\n },\n \"entry\": {\n \"wayBack\": \"Prise en main · {done}/{total}\",\n \"dismiss\": \"Masquer la liste de configuration\",\n \"continue\": \"Continuer la configuration\",\n \"banner\": \"Terminez la configuration de votre espace — {done} étapes sur {total} effectuées.\"\n }\n },\n \"views\": {\n \"baseView\": \"Tous les enregistrements\",\n \"menuLabel\": \"Vues enregistrées\",\n \"saveAs\": \"Enregistrer la vue actuelle…\",\n \"updateActive\": \"Mettre à jour « {name} »\",\n \"rename\": \"Renommer…\",\n \"setDefault\": \"Définir par défaut\",\n \"delete\": \"Supprimer…\",\n \"saveTitle\": \"Enregistrer la vue\",\n \"save\": \"Enregistrer la vue\",\n \"renameTitle\": \"Renommer la vue\",\n \"saveName\": \"Enregistrer le nom\",\n \"nameLabel\": \"Nom de la vue\",\n \"namePlaceholder\": \"ex. Actifs ce mois-ci\",\n \"nameRequired\": \"Saisissez un nom pour cette vue.\",\n \"saveFailed\": \"Impossible d’enregistrer la vue.\",\n \"deleteTitle\": \"Supprimer la vue\",\n \"deleteBody\": \"Cela supprime la vue enregistrée. Vos données ne sont pas affectées.\",\n \"deletePrompt\": \"Saisissez le nom de la vue pour confirmer\",\n \"deleteConfirm\": \"Supprimer la vue\",\n \"savedToast\": \"Vue « {name} » enregistrée.\",\n \"updatedToast\": \"Vue « {name} » mise à jour.\",\n \"defaultToast\": \"« {name} » est désormais la vue par défaut.\",\n \"deletedToast\": \"Vue « {name} » supprimée.\"\n },\n \"builder\": {\n \"view\": \"Aperçu\",\n \"edit\": \"Modifier\",\n \"done\": \"Terminé\",\n \"addWidget\": \"Ajouter un widget\",\n \"saveLayout\": \"Enregistrer la disposition\",\n \"saving\": \"Enregistrement…\",\n \"savedShort\": \"Enregistré\",\n \"options\": \"Options du tableau de bord\",\n \"resetLayout\": \"Réinitialiser la disposition\",\n \"resetTitle\": \"Réinitialiser à la disposition partagée ?\",\n \"resetBody\": \"Cela supprime vos modifications personnelles et restaure le tableau de bord que tout le monde voit. Vos données ne sont pas affectées.\",\n \"resetConfirm\": \"Réinitialiser la disposition\",\n \"resetDone\": \"Disposition réinitialisée sur la valeur partagée par défaut.\",\n \"sharedNote\": \"Vous modifiez le tableau de bord partagé que tout le monde voit.\",\n \"personalNote\": \"Vous modifiez votre disposition personnelle — vous seul voyez ces changements.\",\n \"savedShared\": \"Tableau de bord enregistré pour tous les utilisateurs autorisés.\",\n \"empty\": \"Ce tableau de bord ne contient encore aucun widget.\",\n \"emptyAction\": \"Ajouter un widget\",\n \"palette\": {\n \"title\": \"Ajouter un widget\",\n \"count\": \"{count} widgets\",\n \"searchLabel\": \"Rechercher des widgets\",\n \"searchPlaceholder\": \"Rechercher des widgets…\",\n \"clear\": \"Effacer la recherche\",\n \"noResults\": \"Aucun widget ne correspond à « {query} ».\",\n \"add\": \"Ajouter {name}\",\n \"added\": \"{name} ajouté.\"\n },\n \"inspector\": {\n \"title\": \"Configurer le widget\",\n \"empty\": \"Ce widget n’a aucune option à configurer.\",\n \"locked\": \"Verrouillé\",\n \"lockedHint\": \"Ce champ est défini par la source et ne peut pas être modifié ici.\",\n \"selectPlaceholder\": \"Sélectionner…\",\n \"increment\": \"Augmenter\",\n \"decrement\": \"Diminuer\",\n \"done\": \"Terminé\"\n },\n \"item\": {\n \"configure\": \"Configurer {name}\",\n \"duplicate\": \"Dupliquer {name}\",\n \"remove\": \"Supprimer {name}\",\n \"removed\": \"{name} supprimé.\",\n \"duplicated\": \"{name} dupliqué.\"\n },\n \"families\": {\n \"kpi\": \"Indicateurs\",\n \"charts\": \"Graphiques\",\n \"tables\": \"Tableaux\",\n \"feeds\": \"Flux\",\n \"calendar\": \"Calendrier\",\n \"boards\": \"Tableaux Kanban\",\n \"geo\": \"Cartes\",\n \"media\": \"Médias\",\n \"communication\": \"Communication\",\n \"forms\": \"Formulaires\",\n \"chrome\": \"Navigation\",\n \"system\": \"Système\",\n \"domain\": \"Domaine\"\n },\n \"versions\": \"Versions\",\n \"versionsEmpty\": \"Aucune version enregistrée pour l’instant\",\n \"saveAsVersion\": \"Enregistrer comme version\",\n \"saveVersionTitle\": \"Enregistrer une version\",\n \"saveVersionBody\": \"Capture l’état actuel du document. Restaurez-le à tout moment depuis Versions.\",\n \"versionName\": \"Nom de la version\",\n \"versionNamePlaceholder\": \"p. ex. Avant le changement des tarifs T3\"\n },\n \"setup\": {\n \"title\": \"Configurer Adminium\",\n \"subtitle\": \"Créez le premier administrateur. Cela n’arrive qu’une fois.\",\n \"progress\": \"Progression de la configuration\",\n \"steps\": {\n \"account\": \"Compte administrateur\",\n \"consent\": \"Confidentialité\"\n },\n \"account\": {\n \"name\": \"Votre nom\",\n \"email\": \"E-mail\",\n \"emailInvalid\": \"Saisissez une adresse e-mail valide.\",\n \"password\": \"Mot de passe\",\n \"passwordHelper\": \"Au moins {min} caractères.\",\n \"passwordTooShort\": \"Utilisez au moins {min} caractères.\",\n \"confirm\": \"Confirmer le mot de passe\",\n \"passwordMismatch\": \"Les mots de passe ne correspondent pas.\",\n \"continue\": \"Continuer\",\n \"strength\": \"Robustesse du mot de passe\",\n \"strengthLevels\": {\n \"weak\": \"Faible\",\n \"fair\": \"Moyen\",\n \"good\": \"Bon\",\n \"strong\": \"Fort\"\n }\n },\n \"consent\": {\n \"telemetry\": {\n \"title\": \"Partager des données d’usage anonymes\",\n \"description\": \"Nous aide à voir quels moteurs de base de données prioriser. Désactivé tant que vous ne l’activez pas.\"\n },\n \"updates\": {\n \"title\": \"Rechercher les nouvelles versions\",\n \"description\": \"Affiche un avis lorsqu’une nouvelle version — y compris un correctif de sécurité — est disponible. Cela interroge GitHub sur la dernière version, ce qui lui révèle l’adresse IP et la version de cette instance. Rien d’autre n’est envoyé.\"\n },\n \"sentTitle\": \"Exactement ce qui est envoyé :\",\n \"sent\": {\n \"instanceId\": \"Un identifiant d’instance aléatoire (un UUID généré ici ; non dérivé de votre nom, de votre hôte ni de votre base de données)\",\n \"version\": \"La version d’Adminium exécutée par cette instance\",\n \"engines\": \"Les types de moteurs de base de données connectés (par ex. « postgres ») — les types seulement\"\n },\n \"neverTitle\": \"Jamais envoyé :\",\n \"never\": {\n \"schema\": \"Votre schéma — aucun nom de table, de colonne ni d’énumération\",\n \"rows\": \"Vos données — pas une seule ligne, jamais\",\n \"connections\": \"Chaînes de connexion, noms d’hôte ou identifiants\",\n \"people\": \"E-mails, noms ou identifiants d’utilisateurs\",\n \"llm\": \"Invites d’IA ou contenus d’exécution\"\n },\n \"reversible\": \"Les deux sont désactivés par défaut et vous pourrez les modifier plus tard dans les Paramètres.\",\n \"back\": \"Retour\",\n \"finish\": \"Créer le compte administrateur\"\n },\n \"error\": {\n \"alreadyCompleted\": \"Cette instance a déjà été configurée. Connectez-vous avec le compte administrateur existant.\",\n \"rejected\": \"Le serveur a refusé ces informations. Vérifiez l’e-mail et le mot de passe, puis réessayez.\",\n \"failed\": \"Échec de la configuration. Vérifiez votre connexion et réessayez.\"\n }\n },\n \"about\": {\n \"title\": \"À propos d’Adminium\",\n \"subtitle\": \"Version, licence et emplacement du code source de cette instance.\",\n \"version\": \"Version\",\n \"license\": \"Licence\",\n \"metaStore\": \"Métabase\",\n \"node\": \"Node.js\",\n \"engine\": {\n \"postgres\": \"PostgreSQL\",\n \"mysql\": \"MySQL / MariaDB\",\n \"sqlite\": \"SQLite\"\n },\n \"licenseCard\": {\n \"title\": \"Libre et open source\",\n \"body\": \"Adminium est distribué sous licence GNU Affero General Public License v3.0. Vous êtes libre de l’exécuter, de l’étudier, de le modifier et de le partager. Si vous proposez une version modifiée à d’autres via un réseau, l’AGPL vous demande de leur proposer aussi son code source.\"\n },\n \"viewLicense\": \"Lire la licence\",\n \"viewSource\": \"Obtenir le code source\",\n \"updates\": {\n \"title\": \"Mises à jour\",\n \"description\": \"Si cette instance recherche de nouvelles versions.\"\n },\n \"update\": {\n \"disabled\": \"La recherche de mises à jour est désactivée : cette instance ne contacte jamais GitHub. Activez-la dans les Paramètres pour être informé des nouvelles versions.\",\n \"current\": \"Vous utilisez la dernière version.\",\n \"available\": \"Adminium {version} est disponible\",\n \"availableBody\": \"Vous utilisez actuellement {version}.\",\n \"viewRelease\": \"Voir les notes de version\"\n },\n \"desktop\": {\n \"unknown\": \"Inconnu\",\n \"appVersion\": \"Version de l’application\",\n \"serverVersion\": \"Version du serveur\",\n \"migration\": \"Migration du méta-store\",\n \"electron\": \"Electron\",\n \"chromium\": \"Chromium\",\n \"runtimeNode\": \"Runtime Node\",\n \"system\": {\n \"title\": \"Système\"\n },\n \"dataDir\": \"Répertoire de données\",\n \"reveal\": \"Afficher dans le dossier\",\n \"secret\": {\n \"title\": \"Stockage du secret\",\n \"safe\": \"Chiffré par votre système d’exploitation\",\n \"plainWarning\": \"Cet ordinateur ne dispose d’aucun trousseau système, votre secret Adminium est donc stocké en clair sur le disque. Toute personne pouvant lire les fichiers de cette machine peut le lire. Configurez un trousseau de connexion (ou un service de secrets Linux) et redémarrez Adminium pour le protéger.\"\n },\n \"updates\": {\n \"title\": \"Mises à jour\",\n \"mode\": {\n \"notify\": \"M’avertir des nouvelles versions\",\n \"manual\": \"Uniquement quand je vérifie\",\n \"disabled\": \"Désactivé (hors ligne)\"\n },\n \"disabledBody\": \"Les mises à jour automatiques sont désactivées (hors ligne). Installez les nouvelles versions manuellement.\",\n \"check\": \"Rechercher des mises à jour\",\n \"checking\": \"Vérification…\",\n \"lastChecked\": \"Dernière vérification {when}\",\n \"available\": \"La version {version} est disponible\",\n \"none\": \"Vous utilisez la dernière version.\",\n \"unavailable\": \"Les mises à jour sont désactivées dans cette installation.\",\n \"error\": \"Impossible de rechercher des mises à jour.\",\n \"download\": \"Télécharger la mise à jour\",\n \"downloading\": \"Téléchargement… {percent} %\",\n \"downloaded\": \"La version {version} est prête à être installée\",\n \"restart\": \"Redémarrer pour installer\",\n \"downloadError\": \"Le téléchargement ne s’est pas terminé. Vous pouvez réessayer.\",\n \"toast\": {\n \"available\": \"Une nouvelle version d’Adminium est disponible\",\n \"view\": \"Afficher\",\n \"downloaded\": \"Mise à jour prête à installer\",\n \"restart\": \"Redémarrer maintenant\"\n }\n },\n \"legal\": {\n \"title\": \"Licences\",\n \"agpl\": \"Adminium Desktop est un logiciel libre sous licence GNU Affero General Public License v3.0.\",\n \"viewLicense\": \"Voir la licence\",\n \"licenseTitle\": \"GNU Affero General Public License v3.0\",\n \"licenseUnavailable\": \"Le fichier de licence intégré n’est pas disponible dans cette version.\",\n \"viewNotices\": \"Licences tierces\",\n \"noticesTitle\": \"Mentions des tiers\",\n \"noticesUnavailable\": \"Les mentions des tiers sont générées lors de l’empaquetage de l’application et ne sont pas disponibles dans cette version.\",\n \"source\": \"Code source\",\n \"close\": \"Fermer\"\n },\n \"telemetry\": {\n \"title\": \"Données d’utilisation anonymes\",\n \"label\": \"Partager des données d’utilisation anonymes\",\n \"description\": \"Nous aide à décider quels moteurs de base de données prioriser. Désactivé sauf si vous l’activez ; aucun schéma, donnée ou information personnelle n’est jamais envoyé.\",\n \"saveFailed\": \"Impossible d’enregistrer ce paramètre. Réessayez.\"\n },\n \"diagnostics\": {\n \"title\": \"Diagnostics\",\n \"description\": \"Détails utiles pour signaler un problème. Aucun schéma ni donnée n’est inclus.\",\n \"copy\": \"Copier les infos de diagnostic\",\n \"copied\": \"Copié\",\n \"showLogs\": \"Afficher les journaux\",\n \"dataSize\": \"Taille des données : {size}\"\n }\n }\n },\n \"apiKeys\": {\n \"title\": \"Clés d’API et jetons\",\n \"subtitle\": \"Gérez l’accès programmatique à votre espace de travail.\",\n \"createButton\": \"Créer une clé\",\n \"copy\": \"Copier\",\n \"copied\": \"Copié\",\n \"revoke\": \"Révoquer la clé\",\n \"neverUsed\": \"Jamais utilisée\",\n \"lastUsed\": \"Dernière utilisation {since}\",\n \"scopesOverflow\": \"+{count} de plus\",\n \"status\": {\n \"active\": \"Active\",\n \"revoked\": \"Révoquée\",\n \"expired\": \"Expirée\"\n },\n \"list\": {\n \"title\": \"Clés\",\n \"activeCount\": \"{count, plural, one {# clé active} other {# clés actives}}\"\n },\n \"empty\": {\n \"title\": \"Aucune clé d’API\",\n \"body\": \"Créez-en une pour appeler l’API Adminium depuis votre propre code.\"\n },\n \"revealed\": {\n \"title\": \"Nouvelle clé créée\",\n \"body\": \"Copiez-la maintenant — vous ne pourrez plus jamais la voir.\"\n },\n \"rolesUnavailable\": {\n \"title\": \"Les rôles ne vous sont pas visibles\",\n \"body\": \"Créer une clé, c’est choisir le rôle sous lequel elle agit, et votre compte ne peut pas lire la liste des rôles. Demandez à un administrateur la permission « Gérer les rôles ».\"\n },\n \"quickStart\": {\n \"title\": \"Démarrage rapide\",\n \"body\": \"Authentifiez vos requêtes avec votre clé dans l’en-tête Authorization.\"\n },\n \"create\": {\n \"title\": \"Créer une clé d’API\",\n \"description\": \"La clé agit avec les permissions du rôle que vous choisissez.\",\n \"name\": \"Nom\",\n \"namePlaceholder\": \"ex. Pipeline analytique\",\n \"role\": \"Rôle\",\n \"roleHelper\": \"Choisissez le rôle le moins privilégié qui suffise.\",\n \"expires\": \"Expire le\",\n \"expiresHelper\": \"Laissez vide pour une clé qui n’expire jamais.\",\n \"submit\": \"Créer la clé\",\n \"failed\": \"Impossible de créer la clé\"\n },\n \"revokeConfirm\": {\n \"title\": \"Révoquer la clé d’API\",\n \"body\": \"Tout code appelant encore l’API avec « {name} » échouera immédiatement. C’est irréversible.\",\n \"prompt\": \"Saisissez « {name} » pour confirmer\",\n \"confirm\": \"Révoquer la clé\"\n }\n },\n \"changelog\": {\n \"title\": \"Journal des modifications\",\n \"subtitle\": \"Nouveautés produit et versions.\",\n \"allReleases\": \"Toutes les versions\",\n \"tag\": {\n \"new\": \"Nouveau\",\n \"improved\": \"Amélioré\",\n \"fixed\": \"Corrigé\",\n \"security\": \"Sécurité\"\n },\n \"filter\": {\n \"all\": \"Tout\",\n \"label\": \"Filtrer les modifications par type\"\n },\n \"empty\": {\n \"title\": \"Rien sous ce filtre\",\n \"body\": \"Aucune version n’a encore comporté de modification de ce type.\",\n \"clear\": \"Afficher toutes les modifications\"\n }\n },\n \"kb\": {\n \"title\": \"Base de connaissances\",\n \"subtitle\": \"{count, plural, one {# guide} other {# guides}} · documentation complète sur docs.adminium.dev\",\n \"openDocs\": \"Ouvrir la documentation\",\n \"browse\": \"Parcourir par thème\",\n \"hero\": {\n \"title\": \"Comment pouvons-nous vous aider ?\",\n \"subtitle\": \"Cherchez dans les guides, la doc API et le dépannage.\",\n \"placeholder\": \"Rechercher dans la base de connaissances…\",\n \"label\": \"Rechercher dans la base de connaissances\",\n \"clear\": \"Effacer la recherche\"\n },\n \"category\": {\n \"start\": \"Premiers pas\",\n \"connect\": \"Connecter des données\",\n \"api\": \"API et développement\",\n \"security\": \"Sécurité et accès\",\n \"selfhost\": \"Auto-hébergement\",\n \"trouble\": \"Dépannage\",\n \"count\": \"{count, plural, one {# article} other {# articles}}\",\n \"selected\": \"Filtré\"\n },\n \"list\": {\n \"all\": \"Tous les guides\",\n \"clear\": \"Effacer le filtre\"\n },\n \"empty\": {\n \"title\": \"Aucun guide ne correspond à votre recherche\",\n \"body\": \"Essayez un autre mot, ou cherchez dans la documentation complète sur docs.adminium.dev.\",\n \"openDocs\": \"Ouvrir la documentation\"\n },\n \"article\": {\n \"install\": {\n \"title\": \"Installer Adminium\",\n \"excerpt\": \"Lancez depuis un dépôt source ou via docker run, et atteignez l’assistant de première exécution en une minute.\"\n },\n \"firstAdmin\": {\n \"title\": \"Créer votre premier super-administrateur\",\n \"excerpt\": \"Ce que demande l’assistant de première exécution, et pourquoi il ne peut s’exécuter qu’une fois.\"\n },\n \"connectDb\": {\n \"title\": \"Connecter votre première base de données\",\n \"excerpt\": \"Pointez Adminium vers PostgreSQL, MySQL ou SQLite et générez une application d’administration.\"\n },\n \"schemaFile\": {\n \"title\": \"Générer depuis un fichier de schéma\",\n \"excerpt\": \"Importez un schéma Prisma, un models.py Django, un schema.rb Rails ou un dump .sql — sans aucune connexion.\"\n },\n \"readOnly\": {\n \"title\": \"Utiliser un rôle en lecture seule\",\n \"excerpt\": \"L’introspection ne lit que les métadonnées du schéma. Donnez à Adminium le minimum de privilèges.\"\n },\n \"apiKeys\": {\n \"title\": \"S’authentifier avec des clés d’API\",\n \"excerpt\": \"Créer et révoquer des clés, et pourquoi une clé ne vous est montrée qu’une seule fois.\"\n },\n \"rest\": {\n \"title\": \"Référence de l’API REST\",\n \"excerpt\": \"Tous les points d’accès exposés par l’application générée, avec les formats de requête et de réponse.\"\n },\n \"manifest\": {\n \"title\": \"Le manifeste de page\",\n \"excerpt\": \"Comment une page se décrit en configuration, et comment en modifier une à la main.\"\n },\n \"roles\": {\n \"title\": \"Rôles et permissions\",\n \"excerpt\": \"Attribuez Lecteur, Éditeur et Admin, et construisez vos propres rôles depuis la matrice de permissions.\"\n },\n \"audit\": {\n \"title\": \"Lire le journal d’audit\",\n \"excerpt\": \"Qui a changé quoi, quand, et depuis où.\"\n },\n \"secrets\": {\n \"title\": \"Comment Adminium stocke vos secrets\",\n \"excerpt\": \"Les identifiants de connexion sont chiffrés au repos avec ADMINIUM_SECRET. Les clés d’API sont hachées.\"\n },\n \"docker\": {\n \"title\": \"Auto-héberger avec Docker\",\n \"excerpt\": \"L’image officielle, docker-compose, et l’usage d’une base méta séparée.\"\n },\n \"backup\": {\n \"title\": \"Sauvegarder et déplacer une instance\",\n \"excerpt\": \"export-zip regroupe votre configuration serveur ; l’import rejoue la même installation ailleurs.\"\n },\n \"telemetry\": {\n \"title\": \"Télémétrie et vérification des mises à jour\",\n \"excerpt\": \"Les deux sont opt-in et désactivées par défaut. Ce qui est envoyé si vous les activez.\"\n },\n \"connectionFails\": {\n \"title\": \"Une connexion à la base échoue\",\n \"excerpt\": \"Lisez la carte de diagnostic : hôte, port, TLS, et l’IP que votre base doit autoriser.\"\n },\n \"missingTables\": {\n \"title\": \"Des tables manquent après l’introspection\",\n \"excerpt\": \"Visibilité du schéma, tables exclues, et relance de la génération.\"\n }\n }\n },\n \"desktop\": {\n \"menu\": {\n \"file\": \"Fichier\",\n \"fileNewDatabase\": \"Nouvelle base de données locale…\",\n \"fileOpenSqlite\": \"Ouvrir un fichier SQLite…\",\n \"fileBackupNow\": \"Sauvegarder maintenant…\",\n \"fileRestore\": \"Restaurer depuis une sauvegarde…\",\n \"edit\": \"Édition\",\n \"view\": \"Affichage\",\n \"window\": \"Fenêtre\",\n \"help\": \"Aide\",\n \"helpDocs\": \"Documentation Adminium\",\n \"helpShortcuts\": \"Raccourcis clavier\",\n \"helpLogs\": \"Afficher les journaux\",\n \"helpCheckForUpdates\": \"Rechercher des mises à jour…\",\n \"helpAbout\": \"À propos d’Adminium\"\n },\n \"settings\": {\n \"explainer\": \"Ces paramètres s’appliquent uniquement à l’application Adminium sur cet ordinateur. Ils sont enregistrés sur cette machine, pas dans votre espace de travail.\"\n },\n \"security\": {\n \"heading\": \"Connexion\"\n },\n \"requireLogin\": {\n \"label\": \"Exiger une connexion sur cet appareil\",\n \"description\": \"Adminium vous connecte normalement de façon automatique sur cet ordinateur. Activez cette option pour demander votre mot de passe à chaque démarrage — utile si d’autres personnes peuvent utiliser cette machine. La modification prend effet au prochain démarrage d’Adminium.\",\n \"savedOn\": \"Connexion requise au prochain démarrage\",\n \"savedOff\": \"Adminium ignorera la connexion sur cet ordinateur\",\n \"saveFailed\": \"Impossible d’enregistrer ce paramètre. Réessayez.\"\n },\n \"chip\": {\n \"local\": \"Local\",\n \"lanShare\": \"Local · Partagé sur le réseau\",\n \"remoteDb\": \"Local + base distante\",\n \"remoteDbOffline\": \"Base distante hors ligne\",\n \"remoteDbOfflineDetail\": \"Impossible de joindre {names}. Les pages de ces connexions affichent un état de reconnexion.\"\n },\n \"lan\": {\n \"heading\": \"Partager sur le réseau local\",\n \"label\": \"Autoriser les autres appareils de ce réseau à utiliser Adminium\",\n \"description\": \"Les autres ordinateurs, tablettes et téléphones du même réseau peuvent ouvrir Adminium dans un navigateur et se connecter avec leur propre compte. Adminium doit rester ouvert sur cet ordinateur pour qu'ils puissent y accéder.\",\n \"savedOn\": \"Partagé sur votre réseau local\",\n \"savedOff\": \"Partage arrêté — Adminium est de nouveau limité à cet ordinateur\",\n \"saveFailed\": \"Impossible de modifier le partage réseau\",\n \"noUsers\": \"Vous êtes la seule personne à avoir un compte, donc personne d'autre ne peut encore se connecter. Le partage fonctionne quand même — il vous suffira d'inviter des personnes avant qu'elles puissent l'utiliser.\",\n \"usersUnknown\": \"Adminium n'a pas pu vérifier qui d'autre possède un compte sur cet ordinateur. Le partage fonctionne toujours et toute personne disposant d'un compte peut se connecter — seule cette vérification a échoué.\",\n \"acknowledge\": \"J'ai compris — j'inviterai des personnes ensuite\",\n \"port\": \"Port\",\n \"portHelper\": \"Par défaut {port}\",\n \"portInvalid\": \"Utilisez un nombre entre 1024 et 65535.\",\n \"applyPort\": \"Changer de port\",\n \"portInUse\": \"Le port {port} est déjà utilisé par un autre programme.\",\n \"portInUseHint\": \"Rien n'a été modifié — le partage est toujours désactivé.\",\n \"portInUseNoSuggestion\": \"Rien n'a été modifié. Essayez un autre port.\",\n \"tryPort\": \"Essayer {port}\",\n \"urlsHeading\": \"Ouvrir ceci sur un autre appareil\",\n \"noUrls\": \"Cet ordinateur n'est connecté à aucun réseau pour le moment, il n'y a donc aucune adresse à partager. Connectez-vous au Wi-Fi ou branchez un câble et cette liste se remplira.\",\n \"copyUrl\": \"Copier\",\n \"sessions\": \"{count, plural, =0 {Aucun appareil connecté depuis ce réseau} one {# appareil connecté depuis ce réseau} other {# appareils connectés depuis ce réseau}}\",\n \"sessionsUnknown\": \"Vérification des appareils connectés…\",\n \"pending\": \"Démarrage du partage…\",\n \"mismatch\": \"Adminium reste accessible sur ce réseau\",\n \"mismatchBody\": \"Le partage est désactivé, mais le serveur n'a pas encore libéré le réseau. Redémarrez Adminium pour le fermer.\",\n \"transportTitle\": \"Le trafic sur votre réseau local n'est pas chiffré.\",\n \"transportBody\": \"Ne partagez que sur des réseaux de confiance. Pour un accès à distance, utilisez Adminium self-host derrière HTTPS.\",\n \"firewall\": \"La première fois que vous partagez, votre système d'exploitation vous demandera d'autoriser les connexions entrantes — choisissez Autoriser, sinon les autres appareils ne pourront pas accéder à Adminium.\"\n },\n \"setup\": {\n \"title\": \"Bienvenue dans Adminium\",\n \"subtitle\": \"Quatre étapes rapides et Adminium aura construit une application d’administration à partir de votre base de données. Tout reste sur cet ordinateur.\",\n \"progress\": \"Progression de la configuration\",\n \"back\": \"Retour\",\n \"continue\": \"Continuer\",\n \"createAccount\": \"Créer le compte et continuer\",\n \"step\": {\n \"location\": \"Bienvenue\",\n \"database\": \"Votre première base de données\",\n \"account\": \"Votre compte\",\n \"generate\": \"Générer\"\n },\n \"dataDir\": {\n \"heading\": \"Où Adminium doit-il conserver vos données ?\",\n \"description\": \"Vos bases de données, vos réglages et vos sauvegardes vivent tous dans ce dossier. Tout reste sur cet ordinateur — rien n’est envoyé nulle part.\",\n \"label\": \"Dossier de données\",\n \"loading\": \"Lecture de l’emplacement actuel…\",\n \"pending\": \"Adminium redémarre lorsque vous continuez, afin de basculer vers ce dossier.\",\n \"change\": \"Modifier…\",\n \"revert\": \"Annuler\",\n \"dialogTitle\": \"Choisissez où Adminium conserve vos données\",\n \"cloudSyncTitle\": \"Ce dossier est synchronisé avec le cloud\",\n \"cloudSyncWarning\": \"Adminium stocke ses données dans des fichiers SQLite. {provider} synchronise les fichiers de « {folder} » en les copiant en arrière-plan, ce qui peut corrompre une base de données ouverte — et faire perdre des données sans avertissement. Choisissez un dossier en dehors de {provider}.\",\n \"chooseAnother\": \"Choisir un autre dossier\",\n \"useAnyway\": \"L’utiliser quand même — j’accepte le risque\",\n \"unusableTitle\": \"Adminium ne peut pas utiliser ce dossier\",\n \"failed\": \"Adminium n’a pas pu utiliser ce dossier.\"\n },\n \"source\": {\n \"heading\": \"À partir de quoi Adminium doit-il construire ?\",\n \"description\": \"Adminium lit le schéma d’une base de données et en génère une application d’administration. Vous pourrez ajouter d’autres bases plus tard.\",\n \"groupLabel\": \"Source de la base de données\",\n \"local\": {\n \"title\": \"Créer une base de données locale\",\n \"description\": \"Partez de zéro, ou d’un fichier de schéma que vous avez déjà. La base est créée dans votre dossier de données.\",\n \"name\": \"Nom de la base de données\",\n \"namePlaceholder\": \"Opérations\",\n \"nameUnusable\": \"Utilisez au moins une lettre ou un chiffre — le nom du fichier en est dérivé.\",\n \"fileHelper\": \"Crée {file}\",\n \"schemaLabel\": \"Partir de\",\n \"blank\": \"Vide\",\n \"fromFile\": \"Un fichier de schéma\",\n \"schemaFile\": \"Fichier de schéma\",\n \"schemaFileHelper\": \".sql, pg_dump, Prisma, Drizzle, TypeORM, Sequelize, schema.rb, Django ou JSON Adminium. Adminium le traduit en SQLite.\",\n \"placeholder\": \"Générer automatiquement des entrées d’exemple\",\n \"placeholderHelper\": \"Vous avez importé un schéma sans lignes. Remplissez chaque table de données d’exemple réalistes pour que vos tableaux de bord et graphiques s’affichent immédiatement.\"\n },\n \"openSqlite\": {\n \"title\": \"Ouvrir un fichier SQLite existant\",\n \"description\": \"Pointez Adminium vers un fichier .sqlite de cet ordinateur. Il est ouvert là où il se trouve — rien n’est copié ni déplacé.\",\n \"browse\": \"Choisir un fichier .sqlite…\",\n \"change\": \"Choisir un autre fichier…\",\n \"networkTitle\": \"Ce fichier se trouve sur un partage réseau\",\n \"networkBody\": \"Le verrouillage SQLite n’est pas fiable sur les partages de fichiers réseau, et une connexion interrompue en pleine écriture peut corrompre la base. Une copie sur le disque de cet ordinateur est plus sûre.\"\n },\n \"remote\": {\n \"title\": \"Se connecter à une base de données serveur\",\n \"description\": \"PostgreSQL ou MySQL. Nécessite une base de données accessible sur le réseau ; les tables propres à Adminium restent malgré tout sur cet ordinateur.\",\n \"networkNote\": \"Nécessite une base de données accessible sur le réseau\",\n \"metaNote\": \"Les tables propres à Adminium — vos pages, vos réglages et votre connexion — restent dans le dossier de données de cet ordinateur dans tous les cas.\",\n \"engine\": \"Moteur\",\n \"name\": \"Nom de la connexion\",\n \"namePlaceholder\": \"Production\",\n \"dsn\": \"Chaîne de connexion\",\n \"dsnHelper\": \"Adminium la teste au moment de se connecter. Utilisez un rôle en lecture seule si vous ne voulez que des tableaux de bord.\"\n },\n \"demo\": {\n \"title\": \"Explorer la base de démonstration\",\n \"description\": \"Une base d’exploitation d’équipe prête à l’emploi, pour voir ce qu’Adminium construit avant de le pointer vers vos propres données. Supprimez-la quand vous voulez.\",\n \"unavailable\": \"Cette version n’inclut pas les données de démonstration, il n’y a donc rien à charger. Choisissez l’une des options ci-dessus.\"\n }\n },\n \"account\": {\n \"heading\": \"Créez votre compte\",\n \"description\": \"Il s’agit du compte administrateur de cette copie d’Adminium. Le mot de passe protège vos sauvegardes et toute personne avec qui vous partagez sur votre réseau — il ne vous sera pas demandé à chaque lancement.\",\n \"name\": \"Votre nom\",\n \"email\": \"E-mail\",\n \"password\": \"Mot de passe\",\n \"passwordHelper\": \"Au moins {min} caractères.\",\n \"confirm\": \"Confirmer le mot de passe\",\n \"strength\": \"Force du mot de passe\",\n \"strengthLevels\": {\n \"weak\": \"Faible\",\n \"fair\": \"Moyen\",\n \"good\": \"Bon\",\n \"strong\": \"Fort\"\n },\n \"singleUser\": \"Ignorer la connexion sur cet ordinateur\",\n \"singleUserHelper\": \"Adminium vous connecte automatiquement lorsque vous l’ouvrez ici. Désactivez cette option si d’autres personnes utilisent cette machine. Vous pourrez la modifier plus tard dans Réglages → Bureau.\",\n \"locale\": \"Langue\",\n \"theme\": \"Apparence\",\n \"alreadyExists\": \"Cette copie d’Adminium possède déjà un compte. Connectez-vous avec celui-ci.\",\n \"failed\": \"Adminium n’a pas pu créer ce compte.\"\n },\n \"generate\": {\n \"creating\": \"Configuration de votre base de données…\",\n \"introspecting\": \"Lecture de votre schéma — tables, colonnes et relations…\",\n \"working\": \"En cours…\",\n \"offlineNote\": \"Tout cela se passe sur cet ordinateur.\",\n \"failedTitle\": \"Adminium n’a pas pu configurer cette base de données\",\n \"failedBody\": \"Un problème est survenu. Réessayez.\",\n \"retry\": \"Réessayer\"\n }\n }\n },\n \"capabilities\": {\n \"heading\": \"Autorisations des applications\",\n \"description\": \"Les applications que vous installez peuvent demander à utiliser le matériel de cet ordinateur. Vous approuvez chacune d’elles et pouvez révoquer l’accès à tout moment.\",\n \"grantedTo\": \"Autorisé pour {app}\",\n \"status\": {\n \"available\": \"Disponible\",\n \"stub\": \"Pas encore disponible\",\n \"unavailable\": \"Indisponible\"\n },\n \"allow\": {\n \"action\": \"Autoriser…\"\n },\n \"revoke\": {\n \"action\": \"Révoquer\",\n \"saved\": \"Accès révoqué\",\n \"failed\": \"Impossible de révoquer l’accès. Réessayez.\"\n },\n \"grant\": {\n \"saved\": \"Accès autorisé\",\n \"failed\": \"Impossible d’autoriser l’accès. Réessayez.\"\n },\n \"catalog\": {\n \"printerEscpos\": {\n \"name\": \"Imprimante de reçus (ESC/POS)\",\n \"scope\": \"Imprimer sur des imprimantes de reçus et ouvrir un tiroir-caisse connecté\"\n }\n },\n \"consent\": {\n \"title\": \"Autoriser {app} ?\",\n \"subtitle\": \"{app} demande à utiliser le matériel de cet ordinateur.\",\n \"willAllow\": \"Cela permettra à {app} de :\",\n \"revokeNote\": \"Vous pouvez révoquer ceci à tout moment dans Paramètres → Bureau. N’autorisez que les applications de confiance.\",\n \"deny\": \"Pas maintenant\",\n \"approve\": \"Autoriser\"\n }\n },\n \"emailTemplates\": {\n \"title\": \"Modèles d’e-mail\",\n \"subtitle\": \"Les e-mails transactionnels et de cycle de vie envoyés par votre espace de travail.\",\n \"search\": \"Rechercher des modèles…\",\n \"loadFailed\": \"Impossible de charger les modèles\",\n \"empty\": \"Aucun modèle d’e-mail pour l’instant\",\n \"emptyBody\": \"Les modèles apparaissent ici dès que le serveur les crée ou que vous en créez.\",\n \"noMatches\": \"Aucun modèle correspondant\",\n \"noMatchesBody\": \"Essayez une autre recherche.\",\n \"live\": \"Actif\",\n \"disabled\": \"Désactivé\",\n \"name\": \"Nom du modèle\",\n \"subject\": \"Objet\",\n \"enabled\": \"Activé\"\n },\n \"board\": {\n \"addCard\": \"Ajouter une carte\",\n \"compose\": {\n \"placeholder\": \"Titre de la carte…\",\n \"add\": \"Ajouter\",\n \"cancel\": \"Annuler\"\n },\n \"empty\": {\n \"title\": \"Aucune colonne de tableau\",\n \"body\": \"Ajoutez un champ de statut pour regrouper les cartes en colonnes.\"\n }\n },\n \"calendar\": {\n \"dateRange\": \"Plage de dates\",\n \"compose\": {\n \"placeholder\": \"Titre de l’événement…\",\n \"add\": \"Ajouter\",\n \"cancel\": \"Annuler\",\n \"open\": \"Ajouter un événement\"\n },\n \"agenda\": {\n \"empty\": \"Rien de prévu\"\n }\n },\n \"scheduler\": {\n \"prevWeek\": \"Semaine précédente\",\n \"nextWeek\": \"Semaine suivante\",\n \"week\": \"Semaine\",\n \"month\": \"Mois\",\n \"resource\": \"Ressource\",\n \"coverage\": \"Couverture\",\n \"addShift\": \"Ajouter un créneau\",\n \"shiftCount\": \"{n} créneaux\"\n },\n \"planning\": {\n \"drawer\": {\n \"close\": \"Fermer\",\n \"loading\": \"Chargement de l’enregistrement\",\n \"error\": \"Impossible de charger cet enregistrement.\"\n }\n },\n \"files\": {\n \"uploadsUnavailable\": \"Les téléversements ne sont pas encore disponibles sur cette page.\"\n },\n \"chat\": {\n \"messageSent\": \"Message envoyé\",\n \"sendFailed\": \"Le message n’a pas pu être envoyé.\"\n },\n \"templates\": {\n \"crud\": {\n \"title\": \"Enregistrements\"\n },\n \"dashboard\": {\n \"title\": \"Tableau de bord\"\n },\n \"board\": {\n \"title\": \"Tableau\"\n },\n \"calendar\": {\n \"title\": \"Calendrier\"\n },\n \"scheduler\": {\n \"title\": \"Planning\"\n },\n \"logViewer\": {\n \"title\": \"Journaux\"\n },\n \"files\": {\n \"title\": \"Fichiers\"\n },\n \"chat\": {\n \"title\": \"Discussion\"\n },\n \"builder\": {\n \"title\": \"Éditeur\"\n },\n \"wizard\": {\n \"title\": \"Assistant\"\n },\n \"settings\": {\n \"title\": \"Paramètres\"\n },\n \"directory\": {\n \"title\": \"Annuaire\",\n \"searchPlaceholder\": \"Rechercher des personnes…\",\n \"allFilter\": \"Tous\",\n \"clearFilters\": \"Effacer les filtres\",\n \"detailTitle\": \"Personne\",\n \"emptyTitle\": \"Aucune personne pour l’instant\",\n \"emptyBody\": \"Les personnes apparaissent ici à mesure que des lignes arrivent dans la table.\",\n \"noMatchesTitle\": \"Aucune personne correspondante\",\n \"noMatchesBody\": \"Essayez une autre recherche ou retirez un filtre.\",\n \"errorTitle\": \"Cet annuaire n’a pas pu être chargé\",\n \"loading\": \"Chargement des personnes\",\n \"memberCount\": \"{count} personnes\"\n },\n \"masterDetail\": {\n \"title\": \"Liste et détail\",\n \"allFilter\": \"Tous\",\n \"clearFilters\": \"Effacer les filtres\",\n \"emptyTitle\": \"Rien ici pour l’instant\",\n \"emptyBody\": \"Les enregistrements apparaissent ici à mesure que des lignes arrivent dans la table.\",\n \"noMatchesTitle\": \"Aucun enregistrement correspondant\",\n \"noMatchesBody\": \"Essayez de retirer un filtre.\",\n \"errorTitle\": \"Cette liste n’a pas pu être chargée\",\n \"loading\": \"Chargement des enregistrements\",\n \"selectPrompt\": \"Sélectionnez un enregistrement\"\n },\n \"queueInbox\": {\n \"title\": \"File d’attente\",\n \"approve\": \"Approuver\",\n \"reject\": \"Rejeter\",\n \"allSegment\": \"Tous\",\n \"approvedToast\": \"{count} approuvés.\",\n \"rejectedToast\": \"{count} rejetés.\",\n \"undoneToast\": \"Décision annulée.\",\n \"failedToast\": \"Échec de la décision.\",\n \"bulkFailed\": \"{failed} des {total} lignes sélectionnées n’ont pas pu être mises à jour.\",\n \"undoFailedToast\": \"Impossible d’annuler cette décision.\",\n \"rejectTitle\": \"Rejeter les demandes\",\n \"rejectCount\": \"Sélection · {count}\",\n \"rejectNote\": \"Le demandeur sera notifié avec votre note.\",\n \"rejectPlaceholder\": \"Ajoutez une note pour le demandeur…\",\n \"rejectConfirm\": \"Rejeter\",\n \"emptyTitle\": \"Rien dans la file d’attente\",\n \"emptyBody\": \"Les nouvelles demandes apparaissent ici dès leur arrivée.\",\n \"caughtUpTitle\": \"Vous êtes à jour\",\n \"caughtUpBody\": \"Aucune demande dans cet onglet pour le moment.\",\n \"errorTitle\": \"Cette file d’attente n’a pas pu être chargée\",\n \"loading\": \"Chargement de la file d’attente\",\n \"selectPrompt\": \"Sélectionnez une demande\",\n \"daysUnit\": \"{count} jours\"\n }\n },\n \"dataio\": {\n \"back\": \"Retour\",\n \"import\": {\n \"title\": \"Importer des données\",\n \"stepUpload\": \"Téléverser\",\n \"stepMap\": \"Mapper les colonnes\",\n \"stepValidate\": \"Valider\",\n \"stepRun\": \"Importer et vérifier\",\n \"targetLabel\": \"Table cible\",\n \"targetPlaceholder\": \"Choisissez une page de table…\",\n \"notATable\": \"Cette page n’est pas une table — choisissez une page de table pour l’import.\",\n \"dropTitle\": \"Déposez un fichier CSV à importer\",\n \"dropHint\": \"CSV jusqu’à 32 Mo — la première ligne doit être l’en-tête\",\n \"skipTarget\": \"Ne pas importer\",\n \"mapHint\": \"{count} lignes de données dans {file} — choisissez une cible pour chaque colonne.\",\n \"validating\": \"Validation…\",\n \"toValidate\": \"Valider\",\n \"validateFailed\": \"Échec de la validation.\",\n \"validationSummary\": \"{valid} lignes sur {total} prêtes à l’import — {invalid} seront ignorées.\",\n \"allValid\": \"Toutes les lignes ont passé la validation\",\n \"run\": \"Lancer l’import\",\n \"runSkipping\": \"Importer {valid} lignes (ignorer {invalid})\",\n \"progressLabel\": \"Progression de l’import\",\n \"running\": \"Import en cours…\",\n \"kpiTotal\": \"Lignes dans le fichier\",\n \"kpiCreated\": \"Créées\",\n \"kpiUpdated\": \"Mises à jour\",\n \"kpiSkipped\": \"Ignorées\",\n \"inconsistent\": \"Les totaux de l’import sont incohérents — le total doit égaler créées + mises à jour + ignorées.\",\n \"downloadErrors\": \"Télécharger le rapport des lignes ignorées (CSV)\",\n \"runFailed\": \"L’import a échoué.\"\n },\n \"exports\": {\n \"title\": \"Exports de données\",\n \"tableLabel\": \"Table\",\n \"tablePlaceholder\": \"Choisissez une table…\",\n \"notATable\": \"Cette page n’est pas une table — choisissez une page de table à exporter.\",\n \"formatLabel\": \"Format\",\n \"create\": \"Exporter\",\n \"createFailed\": \"Impossible de demander l’export.\",\n \"retention\": \"Les exports sont conservés 30 jours, puis expirent.\",\n \"statusProcessing\": \"Traitement…\",\n \"statusReady\": \"Prêt — {rows} lignes · cliquez pour télécharger\",\n \"statusFailed\": \"Échec — {error}\",\n \"statusCancelled\": \"Annulé\",\n \"statusExpired\": \"Expiré\",\n \"emptyTitle\": \"Aucun export pour l’instant\",\n \"emptyBody\": \"Demandez-en un ci-dessus — les artefacts apparaissent ici avec leur statut.\"\n }\n },\n \"reports\": {\n \"title\": \"Rapports planifiés\",\n \"subtitle\": \"Instantanés de données récurrents d’une page, livrés sous forme de notifications dans l’application.\",\n \"new\": \"Nouveau rapport\",\n \"loadFailed\": \"Impossible de charger les rapports planifiés.\",\n \"saveFailed\": \"Impossible d’enregistrer ce rapport.\",\n \"nextRun\": \"Prochaine exécution\",\n \"emptyTitle\": \"Aucun rapport planifié pour l’instant\",\n \"emptyBody\": \"Créez-en un pour obtenir un instantané de données récurrent de n’importe quelle page de table.\",\n \"createTitle\": \"Nouveau rapport planifié\",\n \"editTitle\": \"Modifier le rapport planifié\",\n \"nameLabel\": \"Nom\",\n \"namePlaceholder\": \"p. ex. Chiffre d’affaires hebdomadaire\",\n \"pageLabel\": \"Page\",\n \"pagePlaceholder\": \"Choisissez une page…\",\n \"frequencyLabel\": \"Fréquence\",\n \"frequency\": {\n \"daily\": \"Quotidien\",\n \"weekly\": \"Hebdomadaire\",\n \"monthly\": \"Mensuel\"\n },\n \"dayOfWeekLabel\": \"Jour\",\n \"dayOfMonthLabel\": \"Jour du mois\",\n \"timeLabel\": \"Heure\",\n \"timezoneLabel\": \"Fuseau horaire\",\n \"formatLabel\": \"Livraison\",\n \"formatHint\": \"Instantané de données (le rendu PDF/PNG arrivera dans une version ultérieure) — chaque exécution produit un instantané CSV et une notification dans l’application.\",\n \"recipientsLabel\": \"Destinataires\",\n \"recipientsHint\": \"Enregistrés avec le rapport. La livraison par e-mail arrivera dans une version ultérieure — pour l’instant, les exécutions vous notifient dans l’application.\",\n \"deliveryBadge\": \"Instantané CSV\",\n \"delete\": \"Supprimer\",\n \"create\": \"Créer\",\n \"cadence\": {\n \"daily\": \"Quotidien à {time} ({zone})\",\n \"weekly\": \"Hebdomadaire · {day} à {time} ({zone})\",\n \"monthly\": \"Mensuel · le {day} à {time} ({zone})\"\n }\n },\n \"notifications\": {\n \"channel\": {\n \"inApp\": \"Dans l’application\",\n \"email\": \"E-mail\",\n \"push\": \"Push\"\n },\n \"event\": {\n \"reportReady\": \"Rapport planifié prêt\",\n \"reportFailed\": \"Échec du rapport planifié\",\n \"backupCompleted\": \"Sauvegarde terminée\"\n }\n }\n};\n//# sourceMappingURL=common.js.map"],"names":["common"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e={common:{dismiss:"Zavřít",notifications:"Oznámení",retry:"Zkusit znovu",undo:"Vrátit zpět",close:"Zavřít",cancel:"Zrušit",back:"Zpět",loading:"Načítání",clearSearch:"Vymazat hledání",clear:"Vymazat",save:"Uložit"},auth:{headline:"Proměňte jakoukoli databázi v přehledový panel.",trust:"Jádro pod licencí AGPL · Vlastní hosting · Vaše data zůstávají vaše",signIn:{title:"Vítejte zpět",subtitle:"Přihlaste se do svého pracovního prostoru Adminium.",email:"E-mail",emailInvalid:"Zadejte platnou e-mailovou adresu.",password:"Heslo",passwordRequired:"Zadejte své heslo.",showPassword:"Zobrazit heslo",hidePassword:"Skrýt heslo",remember:"Zůstat přihlášen(a)",forgot:"Zapomněli jste?",submit:"Přihlásit se",invalid:"Neplatný e-mail nebo heslo.",rateLimited:"Příliš mnoho pokusů — zkuste to znovu za minutu.",failed:"Přihlášení se nezdařilo. Zkontrolujte připojení a zkuste to znovu."},forgot:{title:"Obnovení hesla",email:"E-mail",emailInvalid:"Zadejte platnou e-mailovou adresu.",submit:"Odeslat odkaz pro obnovení",sentTitle:"Zkontrolujte svůj e-mail",resend:"Odeslat znovu",back:"Zpět na přihlášení",done:"Zpět na přihlášení",rateLimited:"Příliš mnoho požadavků — zkuste to později.",failed:"Něco se pokazilo. Zkuste to znovu.",smtpUnconfigured:"Toto Adminium nemá nastavený e-mailový server, takže nemůže odeslat odkaz pro obnovení hesla. Požádejte správce, aby vám heslo obnovil."},reset:{title:"Nastavte si nové heslo",subtitle:"Musí mít alespoň 8 znaků.",password:"Nové heslo",confirm:"Potvrzení hesla",showPassword:"Zobrazit heslo",hidePassword:"Skrýt heslo",strength:"Síla hesla",weak:"Slabé",fair:"Ucházející",good:"Dobré",strong:"Silné",tooShort:"Použijte alespoň 8 znaků.",submit:"Obnovit heslo",failed:"Obnovení se nezdařilo. Zkuste to znovu."},otp:{title:"Dvoufázové ověření",subtitle:"Zadejte 6místný kód z ověřovací aplikace.",code:"Jednorázový kód",recoveryCode:"Záložní kód",useRecovery:"Ztratili jste zařízení? Použijte záložní kód",useAuthenticator:"Použít místo toho ověřovací aplikaci",submit:"Ověřit",invalid:"Tento kód nefunguje. Zkuste to znovu.",failed:"Ověření se nezdařilo. Zkontrolujte připojení a zkuste to znovu."}},nav:{home:"Domů",primary:"Hlavní",account:"Účet",signOut:"Odhlásit se",empty:"Jakmile připojíte databázi, objeví se zde stránky.",connection:{shared:"Sdílené",unnamed:"Připojení"},imports:"Import dat",exports:"Exporty dat",emailTemplates:"E-mailové šablony",notificationSettings:"Nastavení oznámení",scheduledReports:"Naplánované sestavy",group:{workspace:"Pracovní prostor",library:"Knihovna",planning:"Plánování",people:"Lidé",account:"Účet"}},topbar:{search:"Hledat…",notifications:"Oznámení",notificationsLoading:"Načítání oznámení",notificationsError:"Oznámení se nepodařilo načíst.",notificationsEmpty:"Vše vyřízeno.",theme:"Přepnout světlý / tmavý režim",userMenu:"Nabídka účtu",profile:"Profil",preferences:"Předvolby",signOut:"Odhlásit se"},palette:{dialog:"Paleta příkazů",placeholder:"Zadejte příkaz nebo hledejte…",navigate:"Navigace",actions:"Akce",askAi:"Zeptat se AI",shortcuts:"Klávesové zkratky",signOut:"Odhlásit se",themeDark:"Přepnout na tmavý motiv",themeLight:"Přepnout na světlý motiv",footerNavigate:"navigace",footerOpen:"vybrat",footerClose:"zavřít"},shortcuts:{title:"Klávesové zkratky",subtitle:"Pracujte v Adminiu rychleji",close:"Zavřít",dismiss:"Zavřít nebo zrušit",palette:"Otevřít paletu příkazů",panel:"Zobrazit panel zkratek",search:"Přejít na hledání",sidebar:"Přepnout postranní panel",theme:"Přepnout světlý / tmavý režim",then:"pak",footerPre:"Stiskněte",footerPost:"a tento panel kdykoli otevřete."},states:{checked:"zkontrolováno před 8 s",diagnostics:"Diagnostika"},notFound:{title:"Tato stránka se ztratila",errorLine:"Chyba 404",searchPlaceholder:"Hledat stránku…",matches:"Odpovídající stránky",popular:"Oblíbené cíle",goBack:"Zpět",backToDashboard:"Zpět na přehled"},page:{invalid:{title:"Konfigurace této stránky je neplatná",body:"Uložený dokument stránky neprošel validací a nelze jej vykreslit."},renderError:{title:"Tuto stránku se nepodařilo vykreslit"},tooNew:{title:"Tato stránka vyžaduje novější Adminium"},unknownTemplate:{title:"Neznámá šablona stránky"}},mutation:{created:"Záznam vytvořen",updated:"Záznam aktualizován",deleted:"Záznam smazán"},undo:{done:"Změna vrácena zpět",failed:"Tuto změnu se nepodařilo vrátit zpět"},prefs:{theme:{label:"Motiv",light:"Světlý",dark:"Tmavý",system:"Podle systému"},accent:{label:"Barva zvýraznění",indigo:"Indigová",blue:"Modrá",teal:"Modrozelená",violet:"Fialová",rose:"Růžová",red:"Červená",orange:"Oranžová",black:"Černá"},density:{label:"Hustota",comfortable:"Pohodlná",compact:"Kompaktní"},locale:{label:"Jazyk",directionNote:"Směr textu: zprava doleva (nastaveno automaticky podle jazyka)"}},account:{title:"Účet",subtitle:"Identita vaší aktuální relace. Předvolby zobrazení a nastavení oznámení spravujete na samostatných stránkách.",preferencesLink:"Předvolby",notificationsLink:"Nastavení oznámení",name:"Jméno",email:"E-mail",roles:"Role",twoFactor:"Dvoufázové ověření",on:"Zapnuto",off:"Vypnuto",preferences:{title:"Předvolby",subtitle:"Jak Adminium vypadá a v jakém jazyce se vám zobrazuje — na tomto i na každém dalším zařízení, kde se přihlásíte.",workspaceDefault:"Výchozí nastavení prostoru",personal:"Osobní",usingDefault:"Používá se výchozí nastavení prostoru ({value})",reset:"Vrátit na výchozí nastavení prostoru",resetFailed:"Tuto předvolbu se nepodařilo obnovit. Zkuste to znovu.",appliesInstantly:"Změny se projeví okamžitě a uloží se do vašeho profilu."}},settings:{defaults:{title:"Globální výchozí nastavení",subtitle:"Výchozí vzhled a jazyk pro celý pracovní prostor.",explainer:"Tato výchozí nastavení platí pro všechny uživatele, dokud si je nepřenastaví. Každý si může nastavit vlastní předvolby v Profil → Předvolby — osobní předvolby mají pro daného uživatele vždy přednost.",appearanceHeading:"Výchozí vzhled",languageHeading:"Výchozí jazyk a region",adoption:"Tímto výchozím nastavením se řídí {following, number} z {total, plural, one {# uživatele} few {# uživatelů} many {# uživatele} other {# uživatelů}}.",weekStartNote:"Začátek týdne a formáty čísel se řídí jazykem.",save:"Uložit výchozí nastavení",saved:"Výchozí nastavení prostoru aktualizována",saveFailed:"Výchozí nastavení prostoru se nepodařilo uložit. Zkuste to znovu.",liveNote:"Uložení rozešle změnu naživo — přihlášení uživatelé, kteří se řídí výchozím nastavením, ji uvidí bez opětovného načtení."},notifications:{subtitle:"Zvolte, o čem a jak budete informováni",matrixLabel:"Upozornit mě na",rowHeader:"Událost",saving:"Ukládání…",saved:"Uloženo",unavailable:"Zatím není k dispozici",loading:"Načítání předvoleb",errorTitle:"Tato nastavení se nepodařilo načíst",emptyTitle:"Zatím není co nastavovat",emptyBody:"Události oznámení se zde objeví, jakmile budou jejich producenti nasazeni.",saveFailed:"Tuto změnu se nepodařilo uložit."}},studio:{source:{engine:{label:"Databázový engine",postgres:"PostgreSQL",mysql:"MySQL / MariaDB",sqlite:"SQLite"},format:{label:"Formát schématu",helper:"Ponechte automatickou detekci, pokud se nemýlí.",auto:"Rozpoznat automaticky",sql:"SQL DDL / pg_dump",prisma:"Schéma Prisma",drizzle:"Drizzle ORM",typeorm:"Entity TypeORM",sequelize:"Modely Sequelize",rails:"Rails schema.rb",django:"Django models.py",json:"Adminium JSON"},sqlite:{file:"Cesta k souboru databáze",helper:"SQLite je soubor, ne server — zadejte absolutní cestu na stroji, kde běží Adminium."},file:{detectedAs:"Rozpoznáno: {format}",moreWarnings:"+{count} dalších varování — úplný seznam se zobrazí v kroku analýzy.",dropTitle:"Přetáhněte sem soubor schématu, nebo procházejte",dropHint:"SQL DDL / pg_dump, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, modely Django, Adminium JSON",pitch:"Není potřeba připojení k databázi — zpracujeme váš soubor schématu a postavíme stejné nástěnky.",parsing:"Načítání nahraného souboru schématu…",tables:"tabulek",columns:"sloupců",warnings:"varování",errorTitle:"Soubor se nepodařilo zpracovat",parseFailed:"Tento soubor se nepodařilo zpracovat. Pokud automatická detekce odhadla špatně, zvolte formát ručně a zkuste to znovu.",unsupported:"Tento formát nebyl rozpoznán — podporovány jsou SQL DDL, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, modely Django a Adminium JSON. Zvolte jeden ručně a zkuste to znovu.",requestFailed:"Nahrání se nezdařilo — zkontrolujte připojení a zkuste to znovu."},title:"Připojte svou databázi",subtitle:"Nasměrujte Adminium na databázi a my z jejího schématu vygenerujeme administrační nástěnku.",name:"Název připojení",namePlaceholder:"Produkční Postgres",modeLabel:"Režim zadání zdroje",mode:{dsn:"Připojovací řetězec",fields:"Jednotlivá pole",file:"Soubor schématu"},dsn:{label:"Připojovací řetězec",helper:"postgres://uzivatel:heslo@host:5432/databaze — fungují také mysql:// a sqlite:.",incomplete:"Doplňte hostitele a databázi, např. postgres://user@host:5432/db",invalidScheme:"Nerozpoznané schéma — očekává se postgres://, mysql://, mariadb:// nebo sqlite:",quickFill:"Rychlé vyplnění:"},fields:{host:"Hostitel",port:"Port",database:"Databáze",user:"Uživatel",password:"Heslo",ssl:"Režim SSL",preview:"Náhled připojovacího řetězce:"},readOnlyRole:{title:"Použijte roli jen pro čtení",body:"Adminium do vaší databáze nikdy nezapisuje — nastavení používá pouze metadata schématu. Doporučujeme vyhrazeného uživatele s právy pouze SELECT; kde bude mít Adminium své vlastní tabulky, rozhodnete v kroku úložiště metadat."}},capability:{mysqlApproxRows:"Počty řádků v MySQL jsou odhady úložného enginu (odchylka až ±40 %) — zobrazují se se znakem ≈.",mysqlFkEnum:"Metadata cizích klíčů a enumů jsou v MySQL slabší: tabulky MyISAM nedeklarují cizí klíče, enumy jsou sloupcové typy enum(…) a omezení CHECK vyžadují MySQL 8.0.16+ / MariaDB 10.2+.",sqliteCheckEnums:"SQLite nemá nativní typ enum — enumy se syntetizují z omezení CHECK (col IN (…)).",sqliteNoComments:"SQLite nepodporuje komentáře sloupců — popisky přidejte v editoru přemapování schématu.",importNoRowCounts:"Soubory se schématem neobsahují počty řádků — seznam tabulek zobrazuje — místo smyšlených čísel.",importNoLiveHealth:"Bez živého databázového připojení — kontroly stavu a detekce driftu schématu nejsou pro tento zdroj dostupné.",rowsUnavailable:"Soubory se schématem nemají živou databázi — počty řádků zůstanou neznámé, dokud nějakou nepřipojíte.",rowsRunAnalyze:"Zatím žádný odhad — spusťte na databázi ANALYZE, aby se počty řádků doplnily.",rowsNoEstimate:"Engine pro tuto tabulku nenahlásil žádný odhad.",rowsApproximate:"Odhad úložného enginu — u InnoDB se může lišit až o ±40 %."},test:{log:{moreWarnings:"+{count} dalších varování parseru",connecting:"Navazuje se zabezpečené připojení…",connected:"Připojeno ({latency} ms) · introspekce jen pro čtení",connectFailed:"Připojení se nezdařilo.",readingSchema:"Čtení schématu: public",readingFile:"Načítání nahraného souboru schématu…",parsingFile:"Zpracovává se {file}…",detected:"Zjištěno {tables} tabulek · {columns} sloupců",found:"Nalezeno {tables} tabulek · {columns} sloupců",mapping:"Mapování typů sloupců → vstupní widgety",relations:"Zjišťování vztahů…",piiScan:"Vyhledávání sloupců s PII…",piiDone:"Kontrola PII dokončena — {count} sloupců ve výchozím stavu maskováno",piiDoneUnknown:"Kontrola PII dokončena",jobFailed:"Introspekce se nezdařila.",networkFailed:"Požadavek se nezdařil — zkontrolujte připojení a zkuste to znovu.",ready:"Připraveno"},title:"Analýza vašeho schématu",subtitle:"Probíhá introspekce tabulek, sloupců a vztahů. Zabere to pár sekund.",trust:"Vaše schéma a data pouze čteme. Nic se nemění.",errorTitle:"Připojení se nezdařilo",retry:"Zkusit znovu",logLabel:"Protokol introspekce",hint:{auth:"Ověření se nezdařilo — zkontrolujte uživatelské jméno a heslo v DSN.",hostUnreachable:"Hostitel je nedostupný — zkontrolujte název hostitele a port a že databáze přijímá připojení z tohoto stroje (povolte naše IP adresy).",metaPlacement:"Tento zdroj nemůže hostit meta tabulky Adminia — pokračujte se samostatnou meta databází.",permission:"Role se připojila, ale nemá oprávnění číst schéma — udělte introspekční roli právo USAGE na schéma.",timeout:"Databáze neodpověděla včas — zkontrolujte síťovou cestu a zátěž a zkuste to znovu.",tls:"Vyjednávání TLS se nezdařilo — zkuste sslmode=require, nebo nahrajte certifikát CA, který váš server očekává.",unknown:"Připojení se nezdařilo — ověřte DSN a zkuste to znovu."}},tables:{importNoCounts:"Soubory se schématem neobsahují počty řádků — sloupec zobrazuje —, dokud nepřipojíte živou databázi.",title:"Vyberte tabulky",subtitle:"Zvolte, které zahrnout. Kdykoli to můžete změnit.",search:"Filtrovat tabulky…",listLabel:"Tabulky k zahrnutí",emptyFilter:"Žádné tabulky neodpovídají filtru.",pii:"PII",highVolume:"velký objem",highVolumeNote:"Tabulky s více než 100 000 řádky začínají odškrtnuté — provozní tabulky do nástěnky patří jen zřídka.",joinHidden:"{count} spojovacích/systémových tabulek je předem skryto — vztahy M:N ale stále zajišťují."},hub:{title:"Datová připojení",subtitle:"{healthy, number} z {total, plural, one {# připojení} few {# připojení} other {# připojení}} v pořádku",connectNew:"Nové připojení",stats:{connections:"Připojení",healthy:"V pořádku",tables:"Zahrnuté tabulky",pages:"Vygenerované stránky"},status:{connected:"Připojeno",error:"Chyba",unconfigured:"Koncept",testing:"Testuje se…"},card:{readOnly:"Jen pro čtení",tables:"Tabulky",pages:"Stránky",latency:"Latence",latencyMs:"{latency, number} ms",lastIntrospected:"Poslední introspekce",never:"Nikdy"},action:{test:"Otestovat",reintrospect:"Znovu introspektovat",reintrospectFile:"Zdroje ze souboru se schématem nemají živou databázi — nahrajte soubor znovu.",remap:"Přemapovat schéma",delete:"Smazat"},test:{ok:"Připojení v pořádku · {latency, number} ms",failed:"Test připojení selhal"},introspect:{noChanges:"Schéma beze změn — žádný nový snímek.",updated:"Schéma znovu introspektováno",masksProposed:"{count, plural, one {# sloupec navržen} few {# sloupce navrženy} other {# sloupců navrženo}} k maskování — zkontrolujte v editoru přemapování.",failed:"Introspekce selhala. Zkuste to znovu."},delete:{title:"Smazat připojení",body:"Tímto smažete „{name}“ a z něj vygenerované stránky. Vaší databáze se to nijak nedotkne.",prompt:"Potvrďte zadáním {name}",confirm:"Smazat připojení",cancel:"Zrušit",close:"Zavřít",success:"Připojení „{name}“ smazáno",failed:"Připojení se nepodařilo smazat. Zkuste to znovu."},empty:{title:"Zatím žádné zdroje dat",body:"Připojte databázi a Adminium z jejího schématu vygeneruje váš administrační panel.",cta:"Připojit databázi"}},settingsHub:{title:"Nastavení workspace",subtitle:"Identita, zabezpečení a destruktivní akce tohoto workspace.",save:"Uložit změny",saved:"Nastavení workspace aktualizováno",saveFailed:"Nastavení workspace se nepodařilo uložit. Zkuste to znovu.",superAdminOnlyTitle:"Vyžadován super admin",superAdminOnly:"Identitu a zabezpečení workspace může měnit pouze super admin.",identity:{heading:"Identita workspace",appName:{label:"Název aplikace",helper:"Zobrazuje se v postranním panelu, v titulku prohlížeče a v e-mailech.",error:"Zadejte název o délce nejvýše 60 znaků."}},security:{heading:"Zabezpečení",require2fa:{label:"Vyžadovat dvoufaktorové ověření",desc:"Každý člen musí mít pro přihlášení zapnuté 2FA."},allowSignup:{label:"Povolit samoregistraci",desc:"Účet si může založit kdokoli — při vypnutí zůstává workspace jen na pozvánky."},sessionTtl:{label:"Životnost relace (hodiny)",error:"Mezi {min, number} a {max, number} hodinami."},passwordMin:{label:"Minimální délka hesla",error:"Mezi {min, number} a {max, number} znaky."}},review:{title:"Uložit nastavení workspace",subtitle:"Před uložením zkontrolujte změny.",confirm:"Uložit změny",cancel:"Zrušit",close:"Zavřít",on:"Zapnuto",off:"Vypnuto",change:"{before} → {after}"},defaultsCard:{heading:"Výchozí vzhled a jazyk",body:"Motiv, akcentová barva, hustota a jazyk pro celý workspace najdete ve výchozím globálním nastavení.",cta:"Otevřít globální výchozí nastavení"},danger:{heading:"Nebezpečná zóna",subtitle:"Nevratné akce.",empty:"Není co mazat — zatím žádná připojení.",deleteDesc:"Smaže připojení a z něj vygenerované stránky. Vaší databáze se to nedotkne. Nelze vzít zpět.",deleteCta:"Smazat připojení"},aiCard:{heading:"Obohacení pomocí AI",body:"Nastavte poskytovatele AI (nebo okruh kopírovat-vložit) k obohacení popisků, skupin a vztahů.",cta:"Otevřít nastavení AI"}},settingsAi:{title:"Obohacení pomocí AI",subtitle:"Připojte model, aby Adminium navrhoval popisky, skupiny, vztahy a další — vždy zkontrolováno jako rozdíl, než se cokoli použije.",saved:"Poskytovatel AI uložen",saveFailed:"Poskytovatele AI se nepodařilo uložit. Zkuste to znovu.",save:"Uložit poskytovatele",test:"Otestovat připojení",testHintDirty:"Před testem uložte změny.",testing:"Kontaktuji poskytovatele…",testError:"Test selhal",testErrorBody:"Poskytovatele se nepodařilo kontaktovat. Zkontrolujte klíč a základní URL.",testOk:"Připojeno k {model} za {latency} ms",testUnknownModel:"poskytovateli",provider:{heading:"Poskytovatel AI",subtitle:"Vyberte, jak Adminium osloví model pro obohacení vašeho schématu. Klíče se ukládají zašifrované a už se nikdy nezobrazí.",active:"Aktivní",anthropic:{label:"Anthropic",desc:"Modely Claude přes API Anthropic."},openai:{label:"OpenAI",desc:"Modely GPT přes API OpenAI."},openaiCompatible:{label:"Kompatibilní s OpenAI",desc:"Jakýkoli koncový bod ve formátu OpenAI — Groq, Together, vLLM, LM Studio."},ollama:{label:"Ollama (lokálně)",desc:"Modely běžící lokálně přes Ollama — bez klíče, bez cloudu."},requiresNetwork:"Vyžaduje internet a API klíč",networkDisabledTitle:"Přímí AI poskytovatelé jsou v této instalaci vypnuti",networkDisabledBody:"Toto Adminium je nastaveno bez odchozího přístupu k internetu, takže nemůže oslovit API poskytovatele. Použijte níže kolečko kopírovat-vložit — nepotřebuje klíč ani síť."},configure:{heading:"Nastavit {provider}"},field:{baseUrl:"Základní URL",baseUrlOptional:"Ponechte beze změny, pokud Ollama neběží na jiném hostiteli.",baseUrlHelper:"Kořen koncového bodu, který obsluhuje /chat/completions.",model:"Model",modelFreeText:"Zadejte přesné ID modelu, který váš koncový bod obsluhuje.",modelLive:"Načteno živě od poskytovatele.",modelStatic:"Ověřený seznam; po uložení zadejte vlastní ID pro obnovení.",modelLoading:"Načítání…",modelPlaceholder:"Vyberte model…",key:"Klíč API",keyStored:"Uloženo zašifrované. Nahraďte jej, chcete-li použít jiný klíč.",keyMask:"sk-…{last4}",keyReplace:"Nahradit klíč",keyOptional:"Volitelné — některé koncové body žádný klíč nepotřebují.",keyWriteOnly:"Pouze pro zápis: po uložení se už nikdy nezobrazí.",noKeyTitle:"Klíč API není potřeba",noKeyBody:"Ollama běží lokálně, takže nic neopouští tento počítač."},runStatus:{draft:"Koncept",running:"Probíhá",awaitingResponse:"Čeká na odpověď",validated:"Ověřeno",applied:"Použito",partiallyApplied:"Částečně použito",failed:"Selhalo",discarded:"Zahozeno"},byo:{heading:"Bez klíče? Použijte svůj vlastní nástroj AI",subtitle:"Okruh kopírovat-vložit — nic neopouští tento počítač.",body:"Studio umí z vašeho schématu vygenerovat samostatný prompt. Spusťte jej v Claude Code, ChatGPT nebo libovolném nástroji a vrácené JSON vložte zpět do průvodce připojením. Stejná validace, stejná kontrola, stejný výsledek jako přímá cesta.",guaranteeTitle:"Záruka bez telemetrie",guarantee1:"Prompt nese jen vaše schéma a agregované statistiky — ve výchozím stavu nikdy data řádků.",guarantee2:"Nejsou vloženy žádné přihlašovací údaje, URL instance ani identifikátory.",guarantee3:"Běhy BYO nedělají žádné síťové volání.",promptVersion:"Prompt {version}",schemaVersion:"Schéma {version}",headingRecommended:"Použijte vlastní AI nástroj — klíč není potřeba",recommended:"Doporučeno"},history:{heading:"Historie běhů",subtitle:"Předchozí běhy obohacení. Otevřete některý pro kontrolu jeho návrhů.",tableLabel:"Běhy obohacení",colDate:"Datum",colSource:"Zdroj",colStatus:"Stav",colChunks:"Bloky",openReview:"Otevřít kontrolu běhu z {date}",connection:"Připojení",empty:"Zatím žádné běhy obohacení. Obohaťte schéma z průvodce připojením a historie se zobrazí zde.",errorTitle:"Běhy se nepodařilo načíst",errorBody:"Zkuste to znovu obnovením stránky.",noConnections:"Nejprve připojte databázi — běhy obohacení se zaznamenávají u každého připojení.",byo:"BYO",directPath:"Přímá"}},enrich:{title:"Obohatit pomocí AI",subtitle:"Volitelně vylepšete vygenerované popisky, skupiny, výčty a nástěnky pomocí LLM. Heuristický základ funguje i bez toho — toto pouze přidává návrhy, které před použitím zkontrolujete.",intentLabel:"Jak chcete obohatit?",sectionsLegend:"O čem má AI rozhodovat?",localesLegend:"Přeložit popisky do",localeLocked:"(povinné)",samplingTitle:"Zahrnout ukázkové hodnoty",samplingHint:"Do promptu zahrne až 20 skutečných hodnot na sloupec bez PII.",samplingPreviewTitle:"Co opouští tento počítač",samplingPreviewBody:"Až 20 nejčastějších hodnot na sloupec bez PII, plus min/max u číselných a datumových sloupců. Sloupce označené jako PII se nikdy nevzorkují. Vše ostatní zůstává pouze agregované. Před kopírováním (BYO) zkontrolujte přesný prompt — bez vaší akce se nic neodešle.",noSections:"Vyberte alespoň jednu skupinu rozhodnutí k obohacení.",generatePrompt:"Vygenerovat prompt",startProvider:"Spustit obohacení",startOver:"Začít znovu",copied:"Zkopírováno",createFailed:"Prompt pro obohacení se nepodařilo sestavit — zkuste to znovu.",createFailedTitle:"Nelze spustit",providerFallback:"váš poskytovatel AI",fileTitle:"Obohacení pomocí AI vyžaduje živou databázi",fileBody:"Zdroje ze souboru se schématem zatím nemají snímek k obohacení. Připojte živou databázi pro obohacení pomocí AI, nebo pokračujte — heuristický základ i tak vygeneruje kompletní aplikaci.",section:{labels:"Popisky a popisy",groups:"Navigační skupiny",enums:"Sémantika výčtů",relations:"Vztahy",keys:"Klíčové sloupce",templates:"Šablony stránek",widgets:"Widgety nástěnky",pii:"PII a maskování",icons:"Ikony",microcopy:"Mikrotexty"},provider:{title:"Použít mého poskytovatele AI",description:"Spusťte obohacení nyní s nakonfigurovaným poskytovatelem. Každý návrh zkontrolujete jako rozdíl.",unconfigured:"Zatím není nakonfigurován žádný poskytovatel AI — zkopírujte prompt do vlastního nástroje níže, nebo nejprve nakonfigurujte poskytovatele.",settingsHint:"Chcete jej spustit přímo?",settingsLink:"Nakonfigurujte poskytovatele v Nastavení → AI",networkDisabled:"Toto Adminium nemá odchozí přístup k internetu, takže nemůže oslovit API poskytovatele. Použijte místo toho kolečko kopírovat-vložit — stejný prompt, stejná kontrola."},byo:{cardTitle:"Zkopírovat prompt do vlastního nástroje AI",cardDescription:"Zkopírujte samostatný prompt do Claude Code, ChatGPT, čehokoli — a poté vložte JSON zpět. Není potřeba klíč, nic tento počítač automaticky neopouští.",guidance:"Spusťte to v jakémkoli nástroji AI — Claude Code, ChatGPT, cokoli. Vložte vrácený JSON níže.",promptLabel:"Prompt obohacení",promptLabelN:"Prompt obohacení {index} z {total}",tokenChip:"≈ {tokens} tokenů",copyPrompt:"Kopírovat prompt",copyPromptDone:"Prompt zkopírován",download:"Stáhnout .md",chunkTabs:"Části promptu",chunkTab:"Prompt {index}",chunkValid:"Část {index} ověřena",pasteLabel:"Vložte odpověď JSON",pastePlaceholder:"Sem vložte odpověď JSON…",validate:"Ověřit",valid:"Odpověď ověřena",mergedTitle:"Všech {count} částí ověřeno a sloučeno",mergedTitleSingle:"Odpověď ověřena",mergedBody:"Návrhy jsou připraveny ke kontrole vůči heuristickému základu.",errorsTitle:"Ověření našlo {count} problémů",copyErrors:"Kopírovat chyby pro váš nástroj AI",copyErrorsDone:"Chyby zkopírovány",copyErrorsHint:"Vložte to zpět do svého nástroje AI a získejte opravenou odpověď.",droppedItems:"{count} návrhů bylo při ověření vyřazeno — kontrola zobrazuje zbytek.",pendingTitle:"Pokračujte ověřením každého promptu",pendingBody:"Vložte odpověď JSON výše a ověřte ji, abyste mohli pokračovat ke kontrole.",pendingBodyChunked:"Každá část musí být ověřena, než se návrhy sloučí. Vložte a ověřte každý prompt výše.",requestFailed:"Server nebyl pro ověření dostupný — zkuste to znovu.",continueReview:"Pokračovat ke kontrole",wholeDocument:"celý dokument",cardTitleRecommended:"Zkopírovat prompt do vlastního AI nástroje — doporučeno"},direct:{title:"Obohacování pomocí AI",subtitle:"Odesílání vašeho schématu do",building:"Sestavování promptu…",logLabel:"Protokol obohacení",cancel:"Zrušit",back:"Zpět na možnosti",retry:"Zkusit znovu",done:"Obohacení dokončeno — zkontrolujte návrhy.",continueReview:"Pokračovat ke kontrole",failed:"Běh poskytovatele selhal. Zkontrolujte nastavení AI a zkuste to znovu.",jobFailed:"Běh obohacení nebyl dokončen.",startFailed:"Běh se nepodařilo spustit — zkuste to znovu.",errorTitle:"Obohacení selhalo"},skip:{title:"Přeskočit — použít pouze heuristiku",description:"Generovat z heuristického základu. Obohatit můžete později v Nastavení → AI — přeskočení není nikdy penalizováno.",confirmTitle:"Pokračování s heuristikou",confirmBody:"Vygenerovaná aplikace použije heuristické popisky, skupiny a nástěnky. Pokračujte v generování — obohacení pomocí AI můžete kdykoli spustit v Nastavení → AI."}},review:{unavailableTitle:"Obrazovka kontroly není k dispozici",unavailableBody:"Tento build zatím obrazovku kontroly obohacení neobsahuje (06-T14). Přijde s tokem rozdílu a použití."},llmRuns:{review:{header:{title:"Zkontrolovat návrhy AI",model:"Model",snapshot:"Snímek",byo:"BYO",pathDirect:"Přímé API",pathByo:"Kopírovat a vložit",agree:"{n} shodných",conflict:"{n} konfliktů",new:"{n} nových",rejects:"{n} zamítnutí",countsAria:"Počty návrhů"},bulk:{thresholdLabel:"Práh spolehlivosti",thresholdAria:"Práh spolehlivosti pro „Přijmout vše“",acceptAll:"Přijmout vše ≥ {pct}%",clear:"Zrušit výběr"},section:{selectAllAria:"Vybrat vše v {group}",acceptedCount:"{n} přijato"},group:{labels:"Popisky a překlady",navigation:"Navigace a domény",enums:"Sémantika výčtů",relations:"Vztahy",keys:"Klíčové sloupce",templates:"Šablony stránek",dashboards:"Nástěnky a widgety",pii:"Osobní údaje a maskování",icons:"Ikony",microcopy:"Mikrotexty"},status:{agree:"Souhlasí",conflict:"Konflikt",new:"Nový",heuristicOnly:"Pouze heuristika",rejects:"Zamítá heuristiku",locked:"Uzamčeno"},row:{acceptAria:"Přijmout návrh {noun} pro {target}",keptEdited:"ponecháno – upraveno vámi",rejectsCallout:"AI zamítá heuristické rozhodnutí – před přijetím potvrďte.",showTranslations:"Zobrazit překlady",hideTranslations:"Skrýt překlady",confidenceAria:"Spolehlivost {pct}%",noAi:"Žádný návrh AI"},value:{none:"Žádná hodnota",absent:"Žádná",dash:"—",display:"Zobrazení",key:"Klíč",rank:"pořadí {n}",span:"šířka {n}",tableCount:"{n} tabulek",widgetCount:"{n} widgetů",enumWorkflow:"Pracovní postup",enumCategory:"Kategorie",notPii:"Nejsou osobní údaje",label:"Popisek",description:"Popis",subtitle:"Podtitul stránky",headline:"Nadpis prázdného stavu",guidance:"Pokyn prázdného stavu"},apply:{title:"Použít {n} návrhů",subtitle:"Tyto změny se zapíší v jedné transakci a lze je vrátit zpět.",empty:"Není vybráno nic k použití.",confirm:"Použít změny"},footer:{count:"Vybráno {n} návrhů",apply:"Použít {n} přijatých návrhů",failed:"Použití selhalo"},toast:{applied:"Použito {n} návrhů",appliedPartial:"Použito {n} návrhů (některé přeskočeny)",applyFailed:"Návrhy se nepodařilo použít",undoFailed:"Tuto změnu se nepodařilo vrátit zpět"},error:{title:"Tento běh se nepodařilo načíst"},notReady:{title:"Tento běh zatím nemá návrhy ke kontrole",body:"Běh musí být ověřen, než bude možné jeho návrhy zkontrolovat. Nejprve vygenerujte nebo vložte odpověď."},applied:{title:"Tento běh byl použit",body:"Přijaté návrhy níže jsou pouze ke čtení."},empty:{title:"Žádné návrhy",body:"Tento běh nevytvořil žádné návrhy ke kontrole."},cat:{label:"popisek",key:"klíčové sloupce",enum:"výčet",relation:"vztah",pii:"osobní údaje",template:"šablona stránky",group:"navigační skupina",dashboard:"nástěnka",widget:"widget",copy:"mikrotext"}}},wizard:{title:"Nové připojení",back:"Zpět",continue:"Pokračovat",progress:"Průběh nastavení",persistFailed:"Výběr tabulek se nepodařilo uložit — zkuste to znovu.",persistFailedTitle:"Uložení se nezdařilo",step:{source:"Zdroj",test:"Analyzovat",tables:"Tabulky",meta:"Úložiště metadat",intent:"Záměr",enrich:"Obohatit",generate:"Generovat"}},meta:{title:"Kde má Adminium uchovávat své vlastní tabulky?",subtitle:"Stránky, role, auditní log a nastavení žijí v tabulkách s předponou adminium_ — nikdy se nemíchají s vašimi daty.",sameDb:{title:"Stejná databáze",description:"Tabulky adminium_* se vytvoří vedle vašich zdrojových tabulek. Nejjednodušší nastavení — vyžaduje roli s právy zápisu a CREATE TABLE.",disabledReadOnly:"Vaše role je jen pro čtení — Adminium do této databáze nikdy nezapisuje. Zvolte pro vlastní tabulky Adminia samostatnou databázi.",disabledNoDdl:"Tato role nemůže spouštět DDL — migrace Adminia vyžadují CREATE TABLE. Zvolte pro vlastní tabulky Adminia samostatnou databázi.",disabledFile:"Soubor schématu nemá živou databázi — zvolte pro vlastní tabulky Adminia samostatnou databázi."},separate:{title:"Samostatná databáze",description:"Adminium drží své tabulky v jiné databázi. Váš zdroj zůstává nedotčen — vyžadováno pro zdroje jen pro čtení.",dsn:"Připojovací řetězec meta databáze",helper:"Vyžaduje práva zápisu + DDL — Adminium tam spouští vlastní migrace.",test:"Otestovat připojení",ok:"Kompatibilní — zápis ✓ · DDL ✓",insufficient:"Tato role nemůže hostit meta úložiště — Adminium tam potřebuje práva zápisu a CREATE TABLE.",errorTitle:"Meta úložiště není kompatibilní"},testFailed:"Připojení se nezdařilo.",v1Note:{title:"O této instalaci",body:"Tento server si zvolil své meta úložiště při prvním spuštění. Tento krok ověří, že je vaše volba kompatibilní s tímto připojením, a zaznamená ji — server vynucuje stejné pravidlo nezávisle (409 META_PLACEMENT_INVALID). Přesun existujícího meta úložiště je provozní úkol (M10)."}},intent:{title:"Co potřebujete?",subtitle:"Záměr určuje, které stránky se vygenerují. Později ho můžete změnit — změna navrhne regeneraci, nikdy tiché přepsání.",trust:"Čteme pouze vaše schéma — během nastavení nikdy vaše řádková data.",fullAdmin:{title:"Kompletní administrace",description:"Nástěnky, CRUD stránky, vyhledávání, importy a exporty — vše, co vaše schéma podporuje."},analytics:{title:"Analytika jen pro čtení",description:"Nástěnky, grafy a mřížky jen pro čtení. Žádné formuláře, žádné zápisy — každá role omezena na Prohlížejícího."},crud:{title:"CRUD tabulky",description:"Jedna editační stránka na tabulku plus vyhledávání a import/export — minimální domov, žádné nástěnky."},support:{title:"Konzole podpory",description:"Nejprve fronty, stránky tiketů a detailů zákazníků. Mazání ve výchozím stavu vypnuto. (Šablony front přijdou v M7 — sada stránek v1 odpovídá kompletní administraci.)"}},generate:{title:"Vygenerujte svou aplikaci",subtitle:"Jedna stránka na zahrnutou tabulku plus nástěnky podle domény — záměr:",run:"Vygenerovat nástěnku",openApp:"Otevřít aplikaci",logLabel:"Protokol generování",log:{classifying:"Klasifikace schématu…",composing:"Skládání šablon…",writing:"Zapisování stránek…",done:"Vygenerováno {pages} stránek v {groups} navigačních skupinách"},successTitle:"Vaše nástěnka je připravena",successBody:"{pages} stránek v {groups} navigačních skupinách — vygenerováno z vašeho schématu, upravitelné ve Studiu.",errorTitle:"Generování se nezdařilo",failed:"Generování se nezdařilo — zkuste to znovu, nebo nejprve znovu spusťte introspekci.",fileTitle:"Soubor schématu zpracován — generování vyžaduje živou databázi",fileBody:"Vaše schéma se zpracovalo čistě a náhled výše je skutečný. Generování běžící aplikace přímo ze souboru schématu (se zástupnými řádky) zatím není k dispozici — připojte živou databázi a generujte hned."},remap:{column:{nullable:"může být NULL",labelOverride:"Zobrazovaný popisek",labelHelper:"Odvozeno: {name}",logicalType:"Logický typ",logicalTypeHelper:"Odvozeno: {type} (z {dbType}) — mapuje adaptér; ve v1 nelze přepsat.",semantic:"Sémantický typ",unclassified:"Zatím neklasifikováno.",semanticHelper:"Klasifikátor: {tag} · spolehlivost {confidence}% · zdroj: {source}",semanticInferred:"odvozeno: {tag}",currency:"Měna",currencyHelper:"Kód ISO 4217 použitý při formátování peněžních částek.",pii:"Ve výchozím stavu maskovat",piiHelper:"Maskované hodnoty se zobrazují skryté; odmaskování vyžaduje oprávnění data.unmask_pii a zaznamenává se do auditního logu.",enum:"Sémantika výčtu",enumKind:"Druh výčtu",enumWorkflow:"Pracovní postup",enumCategory:"Kategorie",enumLabelFor:"Popisek pro {value}",enumToneFor:"Tón pro {value}",enumToneAuto:"automaticky",enumHelper:"Výčty typu pracovní postup řídí stavové štítky a sloupce kanbanu; tóny mapují hodnoty na škálu sémantických odstínů."},diff:{one:"1 změna",count:"Změny: {count}",saved:"Úpravy uloženy.",revertOne:"Vrátit {change} zpět",regenerate:"Znovu vygenerovat stránky",revertAll:"Vrátit vše zpět",save:"Uložit úpravy"},table:{iconPicker:"Ikona tabulky",system:"Systémová",labelOverride:"Zobrazovaný popisek",labelHelper:"Odvozeno: {name}",icon:"Ikona",navGroup:"Navigační skupina",navGroupHelper:"Umístění v navigaci určuje generátor — úprava table.navGroup není ve slovníku v1.",include:"Zahrnout do vygenerované aplikace",includeHelper:"Vyloučené tabulky nedostanou žádné stránky a zmizí z navigace.",shape:"Tvar tabulky (klasifikovaný)",role:"Role",unclassified:"Neklasifikováno",kind:"Druh",hierarchy:"Hierarchie",selfFk:"Odkaz na sebe přes {column}",polymorphic:"Polymorfní dvojice",rows:"Odhad počtu řádků",shapeHelper:"Klasifikace se přepočítává při každé introspekci; úpravy se vrství navrch a přežijí regeneraci."},relations:{declared:"Deklarované cizí klíče",noneDeclared:"Této tabulky se nedotýkají žádné deklarované cizí klíče.",inferred:"Odvozené vztahy",noneInferred:"Pro tuto tabulku nebylo nic odvozeno.",confidence:"odvozeno · {pct}%",accepted:"Přijato",suppressed:"Potlačeno",accept:"Přijmout",suppress:"Potlačit",overrides:"Úpravy vztahů (použité)",overrideBadge:"úprava",add:"Přidat virtuální vztah",fromColumn:"Ze sloupce",noColumns:"Žádný odpovídající sloupec",fromPlaceholder:"customer_id",toTable:"Do tabulky",noTables:"Žádná odpovídající tabulka",toColumn:"Do sloupce",cardinality:"Kardinalita",addButton:"Přidat vztah"},toast:{saved:"Úpravy schématu uloženy",savedDetail:"Použité schéma níže odráží vaše změny.",regenerated:"{created} vytvořeno · {updated} aktualizováno · {unchanged} beze změny",regeneratedDetail:"Ručně upravené stránky zůstávají zachovány — na místě byly znovu vygenerovány pouze stránky s nedotčeným generated_hash.",regenerateFailed:"Regenerace se nezdařila"},title:"Přemapování schématu",subtitle:"{tables} tabulek · použito {applied} úprav",saveFailed:"Uložení se nezdařilo: {message}",loadFailed:"Schéma pro toto připojení se nepodařilo načíst.",inspector:"Inspektor",empty:{title:"Vyberte tabulku nebo sloupec",description:"Vyberte něco ve stromu schématu a přemapujte jeho popisek, typ, vztahy nebo maskování."},tabs:{details:"Podrobnosti",relations:"Vztahy"},tree:{label:"Schéma",search:"Hledat tabulky a sloupce",searchPlaceholder:"Hledat tabulky…",noMatches:"Vašemu hledání neodpovídají žádné tabulky.",collapse:"Sbalit tabulku",expand:"Rozbalit tabulku",unsaved:"Neuložená změna",excluded:"Vyloučeno"},badge:{pk:"PK",fk:"FK",unique:"UNIQUE",pii:"PII",masked:"Maskováno"}}},onboarding:{title:"Začínáme",subtitle:"Několik kroků k přípravě vašeho pracovního prostoru.",loading:"Načítání kontrolního seznamu…",welcome:"Vítejte v Adminiu, {name} 👋",progressBody:"Dokončili jste {done} z {total} kroků nastavení. Dokončete zbytek a odemkněte plný pracovní prostor.",completeBody:"Hotovo — váš pracovní prostor je plně nastaven.",ringLabel:"{done} z {total} kroků dokončeno",done:"Hotovo",skip:"Zatím přeskočit",goToWorkspace:"Přejít do prostoru",help:{title:"Potřebujete pomoc?",body:"Rádi vám pomůžeme s rychlým nastavením."},steps:{connectDatabase:{title:"Připojit databázi",desc:"Nasměrujte Adminium na svou databázi Postgres, MySQL nebo SQLite — stačí i role jen pro čtení.",time:"5 min",action:"Připojit"},chooseTables:{title:"Vyberte tabulky",desc:"Vyberte, které tabulky se stanou stránkami — osobní údaje jsou ve výchozím nastavení maskovány.",time:"2 min",action:"Vybrat"},inviteTeammates:{title:"Pozvat členy týmu",desc:"Přizvěte svůj tým k prozkoumávání a spolupráci.",time:"2 min",action:"Pozvat"},workspaceDefaults:{title:"Nastavit výchozí hodnoty",desc:"Motiv, akcent, hustota a jazyk pro všechny.",time:"1 min",action:"Nastavit"}},entry:{wayBack:"Začínáme · {done}/{total}",dismiss:"Skrýt kontrolní seznam",continue:"Pokračovat v nastavení",banner:"Dokončete nastavení prostoru — hotovo {done} z {total} kroků."}},views:{baseView:"Všechny záznamy",menuLabel:"Uložené pohledy",saveAs:"Uložit aktuální jako pohled…",updateActive:"Aktualizovat „{name}“",rename:"Přejmenovat…",setDefault:"Nastavit jako výchozí",delete:"Odstranit…",saveTitle:"Uložit pohled",save:"Uložit pohled",renameTitle:"Přejmenovat pohled",saveName:"Uložit název",nameLabel:"Název pohledu",namePlaceholder:"např. Aktivní tento měsíc",nameRequired:"Zadejte název tohoto pohledu.",saveFailed:"Pohled se nepodařilo uložit.",deleteTitle:"Odstranit pohled",deleteBody:"Tímto se odstraní uložený pohled. Vaše data nejsou dotčena.",deletePrompt:"Pro potvrzení zadejte název pohledu",deleteConfirm:"Odstranit pohled",savedToast:"Pohled „{name}“ uložen.",updatedToast:"Pohled „{name}“ aktualizován.",defaultToast:"„{name}“ je nyní výchozí pohled.",deletedToast:"Pohled „{name}“ odstraněn."},builder:{view:"Zobrazit",edit:"Upravit",done:"Hotovo",addWidget:"Přidat widget",saveLayout:"Uložit rozvržení",saving:"Ukládání…",savedShort:"Uloženo",options:"Možnosti dashboardu",resetLayout:"Obnovit rozvržení",resetTitle:"Obnovit na sdílené rozvržení?",resetBody:"Tím se odeberou vaše osobní změny a obnoví se dashboard, který vidí všichni. Vaše data nebudou dotčena.",resetConfirm:"Obnovit rozvržení",resetDone:"Rozvržení obnoveno na sdílené výchozí.",sharedNote:"Upravujete sdílený dashboard, který vidí všichni.",personalNote:"Upravujete své osobní rozvržení — tyto změny vidíte jen vy.",savedShared:"Dashboard uložen pro všechny s přístupem.",empty:"Tento dashboard zatím nemá žádné widgety.",emptyAction:"Přidat widget",palette:{title:"Přidat widget",count:"{count} widgetů",searchLabel:"Hledat widgety",searchPlaceholder:"Hledat widgety…",clear:"Vymazat hledání",noResults:"Žádné widgety neodpovídají „{query}“.",add:"Přidat {name}",added:"{name} přidán."},inspector:{title:"Konfigurovat widget",empty:"Tento widget nemá žádné možnosti konfigurace.",locked:"Uzamčeno",lockedHint:"Toto pole je nastaveno zdrojem a nelze jej zde upravit.",selectPlaceholder:"Vybrat…",increment:"Zvýšit",decrement:"Snížit",done:"Hotovo"},item:{configure:"Konfigurovat {name}",duplicate:"Duplikovat {name}",remove:"Odebrat {name}",removed:"{name} odebrán.",duplicated:"{name} duplikován."},families:{kpi:"KPI",charts:"Grafy",tables:"Tabulky",feeds:"Kanály",calendar:"Kalendář",boards:"Nástěnky",geo:"Mapy",media:"Média",communication:"Komunikace",forms:"Formuláře",chrome:"Navigace",system:"Systém",domain:"Doména"},versions:"Verze",versionsEmpty:"Zatím žádné uložené verze",saveAsVersion:"Uložit jako verzi",saveVersionTitle:"Uložit verzi",saveVersionBody:"Vytvoří snímek aktuálního dokumentu. Kdykoli jej obnovíte z Verzí.",versionName:"Název verze",versionNamePlaceholder:"např. Před změnou sazeb za Q3"},setup:{title:"Nastavení Adminia",subtitle:"Vytvořte prvního správce. To se děje jen jednou.",progress:"Průběh nastavení",steps:{account:"Účet správce",consent:"Soukromí"},account:{name:"Vaše jméno",email:"E-mail",emailInvalid:"Zadejte platnou e-mailovou adresu.",password:"Heslo",passwordHelper:"Nejméně {min} znaků.",passwordTooShort:"Použijte nejméně {min} znaků.",confirm:"Potvrzení hesla",passwordMismatch:"Hesla se neshodují.",continue:"Pokračovat",strength:"Síla hesla",strengthLevels:{weak:"Slabé",fair:"Průměrné",good:"Dobré",strong:"Silné"}},consent:{telemetry:{title:"Sdílet anonymní data o používání",description:"Pomáhá nám zjistit, které databázové enginy upřednostnit. Dokud to nezapnete, je vypnuto."},updates:{title:"Kontrolovat nové verze",description:"Zobrazí upozornění, když je k dispozici nová verze — včetně bezpečnostní opravy. Dotazuje se GitHubu na nejnovější vydání, čímž GitHubu prozradí IP adresu a verzi této instance. Nic dalšího se neodesílá."},sentTitle:"Přesně toto se odesílá:",sent:{instanceId:"Náhodné ID instance (UUID vygenerované zde; neodvozuje se z vašeho jména, hostitele ani databáze)",version:"Verze Adminia, kterou tato instance používá",engines:"Které typy databázových enginů jsou připojeny (např. „postgres“) — pouze typy"},neverTitle:"Nikdy se neodesílá:",never:{schema:"Vaše schéma — žádné názvy tabulek, sloupců ani výčtů",rows:"Vaše data — nikdy ani jeden řádek",connections:"Připojovací řetězce, názvy hostitelů ani přihlašovací údaje",people:"E-maily, jména ani ID uživatelů",llm:"Zadání pro AI ani obsah běhů"},reversible:"Obojí je ve výchozím stavu vypnuté a kdykoli později to změníte v Nastavení.",back:"Zpět",finish:"Vytvořit účet správce"},error:{alreadyCompleted:"Tato instance už byla nastavena. Přihlaste se stávajícím účtem správce.",rejected:"Server tyto údaje odmítl. Zkontrolujte e-mail a heslo a zkuste to znovu.",failed:"Nastavení se nezdařilo. Zkontrolujte připojení a zkuste to znovu."}},about:{title:"O Adminiu",subtitle:"Verze, licence a kde najdete zdrojový kód této instance.",version:"Verze",license:"Licence",metaStore:"Meta úložiště",node:"Node.js",engine:{postgres:"PostgreSQL",mysql:"MySQL / MariaDB",sqlite:"SQLite"},licenseCard:{title:"Svobodný a otevřený software",body:"Adminium je licencováno pod GNU Affero General Public License v3.0. Můžete jej volně spouštět, studovat, upravovat a sdílet. Pokud upravenou verzi nabídnete ostatním po síti, AGPL vyžaduje, abyste jim nabídli i její zdrojový kód."},viewLicense:"Přečíst licenci",viewSource:"Získat zdrojový kód",updates:{title:"Aktualizace",description:"Zda tato instance kontroluje nové verze."},update:{disabled:"Kontrola aktualizací je vypnutá, takže tato instance nikdy nekontaktuje GitHub. Zapněte ji v Nastavení, abyste se dozvěděli o nových verzích.",current:"Používáte nejnovější verzi.",available:"Je k dispozici Adminium {version}",availableBody:"Aktuálně používáte {version}.",viewRelease:"Zobrazit poznámky k vydání"},desktop:{unknown:"Neznámé",appVersion:"Verze aplikace",serverVersion:"Verze serveru",migration:"Migrace meta-úložiště",electron:"Electron",chromium:"Chromium",runtimeNode:"Běhové prostředí Node",system:{title:"Systém"},dataDir:"Datový adresář",reveal:"Zobrazit ve složce",secret:{title:"Úložiště tajemství",safe:"Šifrováno vaším operačním systémem",plainWarning:"Tento počítač nemá k dispozici systémovou klíčenku, takže vaše tajemství Adminium je uloženo na disku nezašifrované. Přečíst je může kdokoli, kdo má přístup k souborům tohoto počítače. Nastavte přihlašovací klíčenku (nebo linuxovou službu tajemství) a restartujte Adminium, abyste je ochránili."},updates:{title:"Aktualizace",mode:{notify:"Upozornit na nové verze",manual:"Jen když zkontroluji",disabled:"Vypnuto (bez sítě)"},disabledBody:"Automatické aktualizace jsou vypnuté (bez sítě). Nové verze instalujte ručně.",check:"Zkontrolovat aktualizace",checking:"Kontroluji…",lastChecked:"Naposledy zkontrolováno {when}",available:"Je dostupná verze {version}",none:"Máte nejnovější verzi.",unavailable:"Aktualizace jsou v této instalaci vypnuté.",error:"Aktualizace se nepodařilo zkontrolovat.",download:"Stáhnout aktualizaci",downloading:"Stahování… {percent} %",downloaded:"Verze {version} je připravena k instalaci",restart:"Restartovat a nainstalovat",downloadError:"Stahování se nedokončilo. Můžete to zkusit znovu.",toast:{available:"Je dostupná nová verze Adminia",view:"Zobrazit",downloaded:"Aktualizace je připravena k instalaci",restart:"Restartovat nyní"}},legal:{title:"Licence",agpl:"Adminium Desktop je svobodný software pod licencí GNU Affero General Public License v3.0.",viewLicense:"Zobrazit licenci",licenseTitle:"GNU Affero General Public License v3.0",licenseUnavailable:"Přibalený licenční soubor není v tomto sestavení k dispozici.",viewNotices:"Licence třetích stran",noticesTitle:"Oznámení třetích stran",noticesUnavailable:"Oznámení třetích stran se generují při balení aplikace a nejsou v tomto sestavení k dispozici.",source:"Zdrojový kód",close:"Zavřít"},telemetry:{title:"Anonymní data o používání",label:"Sdílet anonymní data o používání",description:"Pomáhá nám rozhodnout, které databázové enginy upřednostnit. Vypnuto, dokud to nezapnete; nikdy se neodesílá schéma, data ani osobní údaje.",saveFailed:"Toto nastavení se nepodařilo uložit. Zkuste to znovu."},diagnostics:{title:"Diagnostika",description:"Údaje, které pomohou při hlášení problému. Neobsahuje žádné schéma ani data.",copy:"Kopírovat diagnostické údaje",copied:"Zkopírováno",showLogs:"Zobrazit protokoly",dataSize:"Velikost dat: {size}"}}},apiKeys:{title:"Klíče API a tokeny",subtitle:"Spravujte programový přístup ke svému pracovnímu prostoru.",createButton:"Vytvořit klíč",copy:"Kopírovat",copied:"Zkopírováno",revoke:"Odvolat klíč",neverUsed:"Nikdy nepoužit",lastUsed:"Naposledy použit {since}",scopesOverflow:"+{count} dalších",status:{active:"Aktivní",revoked:"Odvolaný",expired:"Vypršelý"},list:{title:"Klíče",activeCount:"{count, plural, one {# aktivní klíč} few {# aktivní klíče} many {# aktivního klíče} other {# aktivních klíčů}}"},empty:{title:"Zatím žádné klíče API",body:"Vytvořte si klíč a volejte API Adminia z vlastního kódu."},revealed:{title:"Nový klíč vytvořen",body:"Zkopírujte si ho hned — už ho nikdy neuvidíte."},rolesUnavailable:{title:"Role pro vás nejsou viditelné",body:"Vytvořit klíč znamená zvolit roli, pod kterou jedná, a váš účet nemůže číst seznam rolí. Požádejte správce o oprávnění „Spravovat role“."},quickStart:{title:"Rychlý start",body:"Požadavky ověřujte klíčem v hlavičce Authorization."},create:{title:"Vytvořit klíč API",description:"Klíč jedná s oprávněními role, kterou zvolíte.",name:"Název",namePlaceholder:"např. Analytická pipeline",role:"Role",roleHelper:"Zvolte roli s nejnižšími oprávněními, která na to stačí.",expires:"Platnost do",expiresHelper:"Ponechte prázdné pro klíč bez expirace.",submit:"Vytvořit klíč",failed:"Klíč se nepodařilo vytvořit"},revokeConfirm:{title:"Odvolat klíč API",body:"Každý kód, který ještě volá API klíčem „{name}“, začne okamžitě selhávat. Tuto akci nelze vrátit.",prompt:"Pro potvrzení napište „{name}“",confirm:"Odvolat klíč"}},changelog:{title:"Seznam změn",subtitle:"Novinky produktu a vydání.",allReleases:"Všechna vydání",tag:{new:"Novinka",improved:"Vylepšeno",fixed:"Opraveno",security:"Bezpečnost"},filter:{all:"Vše",label:"Filtrovat změny podle typu"},empty:{title:"Pod tímto filtrem nic není",body:"Zatím žádné vydání neobsahovalo změnu tohoto druhu.",clear:"Zobrazit všechny změny"}},kb:{title:"Znalostní báze",subtitle:"{count, plural, one {# návod} few {# návody} many {# návodu} other {# návodů}} · kompletní dokumentace na docs.adminium.dev",openDocs:"Otevřít dokumentaci",browse:"Procházet podle témat",hero:{title:"S čím vám můžeme pomoci?",subtitle:"Prohledejte návody, dokumentaci API a řešení potíží.",placeholder:"Hledat ve znalostní bázi…",label:"Hledat ve znalostní bázi",clear:"Vymazat hledání"},category:{start:"Začínáme",connect:"Připojení dat",api:"API a vývoj",security:"Zabezpečení a přístup",selfhost:"Vlastní hosting",trouble:"Řešení potíží",count:"{count, plural, one {# článek} few {# články} many {# článku} other {# článků}}",selected:"Filtrováno"},list:{all:"Všechny návody",clear:"Zrušit filtr"},empty:{title:"Vašemu hledání neodpovídá žádný návod",body:"Zkuste jiné slovo nebo prohledejte úplnou dokumentaci na docs.adminium.dev.",openDocs:"Otevřít dokumentaci"},article:{install:{title:"Instalace Adminia",excerpt:"Spusťte ze zdrojového checkoutu nebo přes docker run a během minuty jste u průvodce prvním spuštěním."},firstAdmin:{title:"Vytvoření prvního supersprávce",excerpt:"Na co se průvodce prvním spuštěním ptá a proč může proběhnout jen jednou."},connectDb:{title:"Připojení první databáze",excerpt:"Nasměrujte Adminium na PostgreSQL, MySQL nebo SQLite a vygenerujte administraci."},schemaFile:{title:"Generování ze souboru se schématem",excerpt:"Nahrajte schéma Prisma, models.py z Djanga, schema.rb z Rails nebo výpis .sql — bez připojení."},readOnly:{title:"Použití role jen pro čtení",excerpt:"Introspekce čte pouze metadata schématu. Dejte Adminiu co nejméně oprávnění."},apiKeys:{title:"Ověřování pomocí klíčů API",excerpt:"Vytváření a odvolávání klíčů — a proč se vám klíč ukáže jen jednou."},rest:{title:"Referenční příručka REST API",excerpt:"Každý koncový bod vygenerované aplikace, s tvarem požadavku i odpovědi."},manifest:{title:"Manifest stránky",excerpt:"Jak je stránka popsána konfigurací a jak ji upravit ručně."},roles:{title:"Role a oprávnění",excerpt:"Přidělte role Divák, Editor a Správce a sestavte si vlastní z matice oprávnění."},audit:{title:"Čtení auditního záznamu",excerpt:"Kdo co změnil, kdy a odkud."},secrets:{title:"Jak Adminium ukládá vaše tajemství",excerpt:"Přihlašovací údaje k připojení jsou šifrovány pomocí ADMINIUM_SECRET. Klíče API se hashují."},docker:{title:"Vlastní hosting s Dockerem",excerpt:"Oficiální image, docker-compose a provoz samostatné meta databáze."},backup:{title:"Záloha a přesun instance",excerpt:"export-zip zabalí konfiguraci serveru; import ji jinde přehraje ve stejné podobě."},telemetry:{title:"Telemetrie a kontrola aktualizací",excerpt:"Obojí je dobrovolné a ve výchozím stavu vypnuté. Co se odesílá, když je zapnete."},connectionFails:{title:"Připojení k databázi selhává",excerpt:"Přečtěte si diagnostickou kartu: host, port, TLS a IP, kterou musí databáze povolit."},missingTables:{title:"Po introspekci chybí tabulky",excerpt:"Viditelnost schématu, vyloučené tabulky a opětovné spuštění generování."}}},desktop:{menu:{file:"Soubor",fileNewDatabase:"Nová místní databáze…",fileOpenSqlite:"Otevřít soubor SQLite…",fileBackupNow:"Zálohovat nyní…",fileRestore:"Obnovit ze zálohy…",edit:"Úpravy",view:"Zobrazení",window:"Okno",help:"Nápověda",helpDocs:"Dokumentace Adminium",helpShortcuts:"Klávesové zkratky",helpLogs:"Zobrazit protokoly",helpCheckForUpdates:"Zkontrolovat aktualizace…",helpAbout:"O aplikaci Adminium"},settings:{explainer:"Tato nastavení platí pouze pro aplikaci Adminium na tomto počítači. Ukládají se na tomto zařízení, ne ve vašem pracovním prostoru."},security:{heading:"Přihlášení"},requireLogin:{label:"Vyžadovat přihlášení na tomto zařízení",description:"Adminium vás na tomto počítači obvykle přihlásí automaticky. Zapněte tuto volbu, pokud chcete zadávat heslo při každém spuštění — hodí se, když počítač může používat i někdo další. Změna se projeví při příštím spuštění Adminia.",savedOn:"Při příštím spuštění bude vyžadováno přihlášení",savedOff:"Adminium na tomto počítači přihlášení přeskočí",saveFailed:"Nastavení se nepodařilo uložit. Zkuste to znovu."},chip:{local:"Místní",lanShare:"Místní · Sdíleno v síti",remoteDb:"Místní + vzdálená databáze",remoteDbOffline:"Vzdálená databáze offline",remoteDbOfflineDetail:"Nelze se připojit k {names}. Stránky těchto připojení zobrazují stav opětovného připojení."},lan:{heading:"Sdílet v místní síti",label:"Umožnit ostatním zařízením v této síti používat Adminium",description:"Ostatní počítače, tablety a telefony ve stejné síti mohou otevřít Adminium v prohlížeči a přihlásit se vlastním účtem. Aby se k němu dostaly, musí Adminium na tomto počítači zůstat spuštěné.",savedOn:"Sdílení v místní síti je zapnuté",savedOff:"Sdílení ukončeno — Adminium je opět jen na tomto počítači",saveFailed:"Sdílení v síti se nepodařilo změnit",noUsers:"Jste jediný člověk s účtem, takže se zatím nikdo jiný nemůže přihlásit. Sdílení přesto funguje — jen budete muset lidi nejdřív pozvat.",usersUnknown:"Adminium nemohlo zjistit, kdo další má na tomto počítači účet. Sdílení funguje dál a kdokoli s účtem se může přihlásit — selhala pouze tato kontrola.",acknowledge:"Rozumím — lidi pozvu vzápětí",port:"Port",portHelper:"Výchozí {port}",portInvalid:"Použijte číslo mezi 1024 a 65535.",applyPort:"Změnit port",portInUse:"Port {port} už používá jiný program.",portInUseHint:"Nic se nezměnilo — sdílení je stále vypnuté.",portInUseNoSuggestion:"Nic se nezměnilo. Zkuste jiný port.",tryPort:"Zkusit {port}",urlsHeading:"Otevřete to na jiném zařízení",noUrls:"Tento počítač teď není připojený k síti, takže není co sdílet. Připojte se k Wi-Fi nebo zapojte kabel a seznam se doplní.",copyUrl:"Kopírovat",sessions:"{count, plural, =0 {Z této sítě není přihlášené žádné zařízení} one {# zařízení přihlášené z této sítě} few {# zařízení přihlášená z této sítě} many {# zařízení přihlášeno z této sítě} other {# zařízení přihlášeno z této sítě}}",sessionsUnknown:"Zjišťujeme, kdo je připojený…",pending:"Spouštíme sdílení…",mismatch:"Adminium je v této síti stále dostupné",mismatchBody:"Sdílení je vypnuté, ale server síť zatím neuvolnil. Zavřete ji restartem Adminia.",transportTitle:"Provoz ve vaší místní síti není šifrovaný.",transportBody:"Sdílejte jen v sítích, kterým důvěřujete. Pro vzdálený přístup použijte vlastní hosting Adminia za HTTPS.",firewall:"Při prvním sdílení se váš operační systém zeptá, zda povolit příchozí připojení — zvolte Povolit, jinak se k Adminiu ostatní zařízení nedostanou."},setup:{title:"Vítejte v Adminiu",subtitle:"Čtyři krátké kroky a Adminium z vaší databáze postaví administrační aplikaci. Vše zůstává v tomto počítači.",progress:"Průběh nastavení",back:"Zpět",continue:"Pokračovat",createAccount:"Vytvořit účet a pokračovat",step:{location:"Vítejte",database:"Vaše první databáze",account:"Váš účet",generate:"Generovat"},dataDir:{heading:"Kam má Adminium ukládat vaše data?",description:"Vaše databáze, nastavení i zálohy žijí v této složce. Vše zůstává v tomto počítači — nikam se nic nenahrává.",label:"Složka s daty",loading:"Načítá se aktuální umístění…",pending:"Adminium se po pokračování restartuje, aby přešlo do této složky.",change:"Změnit…",revert:"Vrátit zpět",dialogTitle:"Vyberte, kam má Adminium ukládat vaše data",cloudSyncTitle:"Tato složka se synchronizuje do cloudu",cloudSyncWarning:"Adminium ukládá data do souborů SQLite. {provider} synchronizuje soubory ve složce „{folder}“ tak, že je na pozadí kopíruje, což může poškodit otevřenou databázi — a bez varování ztratit data. Zvolte složku mimo {provider}.",chooseAnother:"Zvolit jinou složku",useAnyway:"Přesto ji použít — beru riziko na vědomí",unusableTitle:"Adminium tuto složku nemůže použít",failed:"Adminium tuto složku nemohlo použít."},source:{heading:"Z čeho má Adminium stavět?",description:"Adminium přečte schéma databáze a vygeneruje z něj administrační aplikaci. Další databáze můžete přidat později.",groupLabel:"Zdroj databáze",local:{title:"Vytvořit novou místní databázi",description:"Začněte od nuly, nebo ze souboru se schématem, který už máte. Databáze se vytvoří ve vaší složce s daty.",name:"Název databáze",namePlaceholder:"Provoz",nameUnusable:"Použijte alespoň jedno písmeno nebo číslici — z toho se sestaví název souboru.",fileHelper:"Vytvoří {file}",schemaLabel:"Začít z",blank:"Prázdné",fromFile:"Souboru se schématem",schemaFile:"Soubor se schématem",schemaFileHelper:".sql, pg_dump, Prisma, Drizzle, TypeORM, Sequelize, schema.rb, Django nebo JSON Adminia. Adminium jej přeloží do SQLite.",placeholder:"Automaticky vygenerovat ukázkové záznamy",placeholderHelper:"Naimportovali jste schéma bez řádků. Naplňte každou tabulku realistickými ukázkovými daty, aby se vaše přehledy a grafy vykreslily hned."},openSqlite:{title:"Otevřít existující soubor SQLite",description:"Nasměrujte Adminium na soubor .sqlite v tomto počítači. Otevře se tam, kde je — nic se nekopíruje ani nepřesouvá.",browse:"Vybrat soubor .sqlite…",change:"Vybrat jiný soubor…",networkTitle:"Tento soubor je na síťovém sdílení",networkBody:"Zamykání SQLite je přes síťová sdílení nespolehlivé a přerušené spojení uprostřed zápisu může databázi poškodit. Kopie na disku tohoto počítače je bezpečnější."},remote:{title:"Připojit se k serverové databázi",description:"PostgreSQL nebo MySQL. Vyžaduje dostupnou síťovou databázi; vlastní tabulky Adminia i tak zůstanou v tomto počítači.",networkNote:"Vyžaduje dostupnou síťovou databázi",metaNote:"Vlastní tabulky Adminia — vaše stránky, nastavení a přihlášení — zůstávají tak jako tak ve složce s daty v tomto počítači.",engine:"Engine",name:"Název připojení",namePlaceholder:"Produkce",dsn:"Připojovací řetězec",dsnHelper:"Adminium jej při připojení otestuje. Pokud chcete jen přehledy, použijte roli jen pro čtení."},demo:{title:"Prozkoumat ukázkovou databázi",description:"Hotová databáze týmového provozu, abyste viděli, co Adminium postaví, ještě než ho nasměrujete na vlastní data. Kdykoli ji smažete.",unavailable:"Tento build ukázková data neobsahuje, není tedy co načíst. Zvolte některou z možností výše."}},account:{heading:"Vytvořte si účet",description:"Toto je účet správce této kopie Adminia. Heslo chrání vaše zálohy i všechny, s nimiž sdílíte po síti — při každém spuštění o něj nebudete žádáni.",name:"Vaše jméno",email:"E-mail",password:"Heslo",passwordHelper:"Alespoň {min} znaků.",confirm:"Potvrďte heslo",strength:"Síla hesla",strengthLevels:{weak:"Slabé",fair:"Ucházející",good:"Dobré",strong:"Silné"},singleUser:"Přeskočit přihlášení v tomto počítači",singleUserHelper:"Adminium vás zde po otevření přihlásí automaticky. Vypněte to, pokud tento počítač používají i jiní lidé. Změnit to můžete později v Nastavení → Desktop.",locale:"Jazyk",theme:"Vzhled",alreadyExists:"Tato kopie Adminia už účet má. Přihlaste se místo toho jím.",failed:"Adminium nemohlo tento účet vytvořit."},generate:{creating:"Nastavuje se vaše databáze…",introspecting:"Čte se vaše schéma — tabulky, sloupce a vztahy…",working:"Pracuje se…",offlineNote:"Vše se odehrává v tomto počítači.",failedTitle:"Adminium nemohlo tuto databázi nastavit",failedBody:"Něco se pokazilo. Zkuste to znovu.",retry:"Zkusit znovu"}}},capabilities:{heading:"Oprávnění aplikací",description:"Aplikace, které nainstalujete, mohou požádat o přístup k hardwaru tohoto počítače. Každou z nich schvalujete a přístup můžete kdykoli odvolat.",grantedTo:"Povoleno pro {app}",status:{available:"Dostupné",stub:"Zatím nedostupné",unavailable:"Nedostupné"},allow:{action:"Povolit…"},revoke:{action:"Odvolat",saved:"Přístup odvolán",failed:"Přístup se nepodařilo odvolat. Zkuste to znovu."},grant:{saved:"Přístup povolen",failed:"Přístup se nepodařilo povolit. Zkuste to znovu."},catalog:{printerEscpos:{name:"Tiskárna účtenek (ESC/POS)",scope:"Tisknout na tiskárnách účtenek a otevřít připojenou pokladní zásuvku"}},consent:{title:"Povolit {app}?",subtitle:"{app} žádá o použití hardwaru tohoto počítače.",willAllow:"Toto umožní aplikaci {app}:",revokeNote:"Toto můžete kdykoli odvolat v Nastavení → Plocha. Povolujte jen aplikace, kterým důvěřujete.",deny:"Teď ne",approve:"Povolit"}},emailTemplates:{title:"E-mailové šablony",subtitle:"Transakční e-maily a e-maily životního cyklu, které váš pracovní prostor odesílá.",search:"Hledat šablony…",loadFailed:"Šablony se nepodařilo načíst",empty:"Zatím žádné e-mailové šablony",emptyBody:"Šablony se zde objeví, jakmile je server založí nebo je vytvoříte.",noMatches:"Žádné odpovídající šablony",noMatchesBody:"Zkuste jiné hledání.",live:"Aktivní",disabled:"Vypnuto",name:"Název šablony",subject:"Předmět",enabled:"Zapnuto"},board:{addCard:"Přidat kartu",compose:{placeholder:"Název karty…",add:"Přidat",cancel:"Zrušit"},empty:{title:"Žádné sloupce nástěnky",body:"Přidejte stavové pole, aby se karty seskupily do sloupců."}},calendar:{dateRange:"Rozsah dat",compose:{placeholder:"Název události…",add:"Přidat",cancel:"Zrušit",open:"Přidat událost"},agenda:{empty:"Nic naplánováno"}},scheduler:{prevWeek:"Předchozí týden",nextWeek:"Další týden",week:"Týden",month:"Měsíc",resource:"Zdroj",coverage:"Pokrytí",addShift:"Přidat směnu",shiftCount:"{n} směn"},planning:{drawer:{close:"Zavřít",loading:"Načítání záznamu",error:"Tento záznam se nepodařilo načíst."}},files:{uploadsUnavailable:"Nahrávání na této stránce zatím není k dispozici."},chat:{messageSent:"Zpráva odeslána",sendFailed:"Zprávu se nepodařilo odeslat."},templates:{crud:{title:"Záznamy"},dashboard:{title:"Přehled"},board:{title:"Nástěnka"},calendar:{title:"Kalendář"},scheduler:{title:"Plánovač"},logViewer:{title:"Protokoly"},files:{title:"Soubory"},chat:{title:"Chat"},builder:{title:"Editor"},wizard:{title:"Průvodce"},settings:{title:"Nastavení"},directory:{title:"Adresář",searchPlaceholder:"Hledat osoby…",allFilter:"Vše",clearFilters:"Vymazat filtry",detailTitle:"Osoba",emptyTitle:"Zatím žádné osoby",emptyBody:"Osoby se zde objeví, jakmile do tabulky přibudou řádky.",noMatchesTitle:"Žádné odpovídající osoby",noMatchesBody:"Zkuste jiné hledání nebo odeberte filtr.",errorTitle:"Tento adresář se nepodařilo načíst",loading:"Načítání osob",memberCount:"{count} osob"},masterDetail:{title:"Seznam a detail",allFilter:"Vše",clearFilters:"Vymazat filtry",emptyTitle:"Zatím tu nic není",emptyBody:"Záznamy se zde objeví, jakmile do tabulky přibudou řádky.",noMatchesTitle:"Žádné odpovídající záznamy",noMatchesBody:"Zkuste odebrat filtr.",errorTitle:"Tento seznam se nepodařilo načíst",loading:"Načítání záznamů",selectPrompt:"Vyberte záznam"},queueInbox:{title:"Fronta",approve:"Schválit",reject:"Zamítnout",allSegment:"Vše",approvedToast:"{count} schváleno.",rejectedToast:"{count} zamítnuto.",undoneToast:"Rozhodnutí vráceno zpět.",failedToast:"Rozhodnutí se nezdařilo.",bulkFailed:"{failed} z {total} vybraných řádků se nepodařilo aktualizovat.",undoFailedToast:"Toto rozhodnutí se nepodařilo vrátit zpět.",rejectTitle:"Zamítnout žádosti",rejectCount:"Vybráno · {count}",rejectNote:"Žadatel bude informován spolu s vaší poznámkou.",rejectPlaceholder:"Přidejte poznámku pro žadatele…",rejectConfirm:"Zamítnout",emptyTitle:"Ve frontě nic není",emptyBody:"Nové žádosti se zde objeví, jakmile dorazí.",caughtUpTitle:"Vše vyřízeno",caughtUpBody:"V této záložce teď nejsou žádné žádosti.",errorTitle:"Tuto frontu se nepodařilo načíst",loading:"Načítání fronty",selectPrompt:"Vyberte žádost",daysUnit:"{count} dní"}},dataio:{back:"Zpět",import:{title:"Import dat",stepUpload:"Nahrát",stepMap:"Namapovat sloupce",stepValidate:"Ověřit",stepRun:"Importovat a zkontrolovat",targetLabel:"Cílová tabulka",targetPlaceholder:"Vyberte stránku tabulky…",notATable:"Tato stránka není tabulka — vyberte stránku tabulky, do které se má importovat.",dropTitle:"Přetáhněte sem soubor CSV k importu",dropHint:"CSV do 32 MB — první řádek musí být hlavička",skipTarget:"Neimportovat",mapHint:"{count} datových řádků v {file} — vyberte cíl pro každý sloupec.",validating:"Ověřování…",toValidate:"Ověřit",validateFailed:"Ověření se nezdařilo.",validationSummary:"{valid} z {total} řádků připraveno k importu — {invalid} bude přeskočeno.",allValid:"Všechny řádky prošly ověřením",run:"Spustit import",runSkipping:"Importovat {valid} řádků (přeskočit {invalid})",progressLabel:"Průběh importu",running:"Importuje se…",kpiTotal:"Řádků v souboru",kpiCreated:"Vytvořeno",kpiUpdated:"Aktualizováno",kpiSkipped:"Přeskočeno",inconsistent:"Čísla importu nesedí — celkem se musí rovnat vytvořeno + aktualizováno + přeskočeno.",downloadErrors:"Stáhnout report přeskočených řádků (CSV)",runFailed:"Import se nezdařil."},exports:{title:"Exporty dat",tableLabel:"Tabulka",tablePlaceholder:"Vyberte tabulku…",notATable:"Tato stránka není tabulka — vyberte stránku tabulky k exportu.",formatLabel:"Formát",create:"Exportovat",createFailed:"Export se nepodařilo vyžádat.",retention:"Exporty se uchovávají 30 dní, poté vyprší.",statusProcessing:"Zpracovává se…",statusReady:"Hotovo — {rows} řádků · stáhnete klepnutím",statusFailed:"Nezdařilo se — {error}",statusCancelled:"Zrušeno",statusExpired:"Vypršelo",emptyTitle:"Zatím žádné exporty",emptyBody:"Vyžádejte si jeden výše — artefakty se zde objeví se svým stavem."}},reports:{title:"Naplánované sestavy",subtitle:"Opakované datové snímky stránky doručované jako oznámení v aplikaci.",new:"Nová sestava",loadFailed:"Naplánované sestavy se nepodařilo načíst.",saveFailed:"Tuto sestavu se nepodařilo uložit.",nextRun:"Další spuštění",emptyTitle:"Zatím žádné naplánované sestavy",emptyBody:"Vytvořte jednu a získáte opakovaný datový snímek libovolné stránky tabulky.",createTitle:"Nová naplánovaná sestava",editTitle:"Upravit naplánovanou sestavu",nameLabel:"Název",namePlaceholder:"např. Týdenní tržby",pageLabel:"Stránka",pagePlaceholder:"Vyberte stránku…",frequencyLabel:"Frekvence",frequency:{daily:"Denně",weekly:"Týdně",monthly:"Měsíčně"},dayOfWeekLabel:"Den",dayOfMonthLabel:"Den v měsíci",timeLabel:"Čas",timezoneLabel:"Časové pásmo",formatLabel:"Doručení",formatHint:"Datový snímek (vykreslování PDF/PNG dorazí v pozdější verzi) — každé spuštění vytvoří CSV snímek a oznámení v aplikaci.",recipientsLabel:"Příjemci",recipientsHint:"Uloženo se sestavou. Doručování e-mailem dorazí v pozdější verzi — spuštění vás zatím upozorní v aplikaci.",deliveryBadge:"CSV snímek",delete:"Smazat",create:"Vytvořit",cadence:{daily:"Denně v {time} ({zone})",weekly:"Týdně · {day} v {time} ({zone})",monthly:"Měsíčně · {day}. den v {time} ({zone})"}},notifications:{channel:{inApp:"V aplikaci",email:"E-mail",push:"Push"},event:{reportReady:"Naplánovaná sestava připravena",reportFailed:"Naplánovaná sestava selhala",backupCompleted:"Záloha dokončena"}}};export{e as default};
|
|
2
|
+
//# sourceMappingURL=common-BdlXKpcB.js.map
|