@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-BqqhgMgB.js","sources":["../../../../packages/i18n/dist/resources/de-de/common.js"],"sourcesContent":["/**\n * GENERATED MIRROR of ../../../locales/de-DE/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\": \"Schließen\",\n \"notifications\": \"Benachrichtigungen\",\n \"retry\": \"Erneut versuchen\",\n \"undo\": \"Rückgängig\",\n \"close\": \"Schließen\",\n \"cancel\": \"Abbrechen\",\n \"back\": \"Zurück\",\n \"loading\": \"Wird geladen\",\n \"clearSearch\": \"Suche löschen\",\n \"clear\": \"Leeren\",\n \"save\": \"Speichern\"\n },\n \"auth\": {\n \"headline\": \"Machen Sie aus jeder Datenbank ein Dashboard.\",\n \"trust\": \"AGPL-Kern · Selbst gehostet · Ihre Daten bleiben Ihre\",\n \"signIn\": {\n \"title\": \"Willkommen zurück\",\n \"subtitle\": \"Melden Sie sich in Ihrem Adminium-Workspace an.\",\n \"email\": \"E-Mail\",\n \"emailInvalid\": \"Geben Sie eine gültige E-Mail-Adresse ein.\",\n \"password\": \"Passwort\",\n \"passwordRequired\": \"Geben Sie Ihr Passwort ein.\",\n \"showPassword\": \"Passwort anzeigen\",\n \"hidePassword\": \"Passwort verbergen\",\n \"remember\": \"Angemeldet bleiben\",\n \"forgot\": \"Vergessen?\",\n \"submit\": \"Anmelden\",\n \"invalid\": \"E-Mail oder Passwort ist ungültig.\",\n \"rateLimited\": \"Zu viele Versuche — versuchen Sie es in einer Minute erneut.\",\n \"failed\": \"Anmeldung fehlgeschlagen. Prüfen Sie Ihre Verbindung und versuchen Sie es erneut.\"\n },\n \"forgot\": {\n \"title\": \"Passwort zurücksetzen\",\n \"email\": \"E-Mail\",\n \"emailInvalid\": \"Geben Sie eine gültige E-Mail-Adresse ein.\",\n \"submit\": \"Link zum Zurücksetzen senden\",\n \"sentTitle\": \"Prüfen Sie Ihr E-Mail-Postfach\",\n \"resend\": \"Erneut senden\",\n \"back\": \"Zurück zur Anmeldung\",\n \"done\": \"Zurück zur Anmeldung\",\n \"rateLimited\": \"Zu viele Anfragen — versuchen Sie es später erneut.\",\n \"failed\": \"Etwas ist schiefgelaufen. Versuchen Sie es erneut.\",\n \"smtpUnconfigured\": \"Für dieses Adminium ist kein E-Mail-Server konfiguriert, daher kann kein Link zum Zurücksetzen gesendet werden. Bitten Sie eine Administratorin oder einen Administrator, Ihr Passwort zurückzusetzen.\"\n },\n \"reset\": {\n \"title\": \"Neues Passwort festlegen\",\n \"subtitle\": \"Mindestens 8 Zeichen.\",\n \"password\": \"Neues Passwort\",\n \"confirm\": \"Passwort bestätigen\",\n \"showPassword\": \"Passwort anzeigen\",\n \"hidePassword\": \"Passwort verbergen\",\n \"strength\": \"Passwortstärke\",\n \"weak\": \"Schwach\",\n \"fair\": \"Ausreichend\",\n \"good\": \"Gut\",\n \"strong\": \"Stark\",\n \"tooShort\": \"Verwenden Sie mindestens 8 Zeichen.\",\n \"submit\": \"Passwort zurücksetzen\",\n \"failed\": \"Zurücksetzen fehlgeschlagen. Versuchen Sie es erneut.\"\n },\n \"otp\": {\n \"title\": \"Zwei-Faktor-Authentifizierung\",\n \"subtitle\": \"Geben Sie den 6-stelligen Code aus Ihrer Authenticator-App ein.\",\n \"code\": \"Einmalcode\",\n \"recoveryCode\": \"Wiederherstellungscode\",\n \"useRecovery\": \"Gerät verloren? Wiederherstellungscode verwenden\",\n \"useAuthenticator\": \"Stattdessen die Authenticator-App verwenden\",\n \"submit\": \"Bestätigen\",\n \"invalid\": \"Dieser Code hat nicht funktioniert. Versuchen Sie es erneut.\",\n \"failed\": \"Bestätigung fehlgeschlagen. Prüfen Sie Ihre Verbindung und versuchen Sie es erneut.\"\n }\n },\n \"nav\": {\n \"home\": \"Start\",\n \"primary\": \"Hauptbereich\",\n \"account\": \"Konto\",\n \"signOut\": \"Abmelden\",\n \"empty\": \"Sobald eine Datenbank verbunden ist, erscheinen hier Seiten.\",\n \"connection\": {\n \"shared\": \"Gemeinsam\",\n \"unnamed\": \"Verbindung\"\n },\n \"imports\": \"Daten importieren\",\n \"exports\": \"Datenexporte\",\n \"emailTemplates\": \"E-Mail-Vorlagen\",\n \"notificationSettings\": \"Benachrichtigungseinstellungen\",\n \"scheduledReports\": \"Geplante Berichte\",\n \"group\": {\n \"workspace\": \"Arbeitsbereich\",\n \"library\": \"Bibliothek\",\n \"planning\": \"Planung\",\n \"people\": \"Personen\",\n \"account\": \"Konto\"\n }\n },\n \"topbar\": {\n \"search\": \"Suchen…\",\n \"notifications\": \"Benachrichtigungen\",\n \"notificationsLoading\": \"Benachrichtigungen werden geladen\",\n \"notificationsError\": \"Benachrichtigungen konnten nicht geladen werden.\",\n \"notificationsEmpty\": \"Alles erledigt.\",\n \"theme\": \"Hell / Dunkel umschalten\",\n \"userMenu\": \"Kontomenü\",\n \"profile\": \"Profil\",\n \"preferences\": \"Einstellungen\",\n \"signOut\": \"Abmelden\"\n },\n \"palette\": {\n \"dialog\": \"Befehlspalette\",\n \"placeholder\": \"Befehl eingeben oder suchen…\",\n \"navigate\": \"Navigation\",\n \"actions\": \"Aktionen\",\n \"askAi\": \"KI fragen\",\n \"shortcuts\": \"Tastaturkürzel\",\n \"signOut\": \"Abmelden\",\n \"themeDark\": \"Zum dunklen Design wechseln\",\n \"themeLight\": \"Zum hellen Design wechseln\",\n \"footerNavigate\": \"navigieren\",\n \"footerOpen\": \"auswählen\",\n \"footerClose\": \"schließen\"\n },\n \"shortcuts\": {\n \"title\": \"Tastaturkürzel\",\n \"subtitle\": \"Schneller arbeiten in ganz Adminium\",\n \"close\": \"Schließen\",\n \"dismiss\": \"Schließen oder verwerfen\",\n \"palette\": \"Befehlspalette öffnen\",\n \"panel\": \"Kürzel-Übersicht anzeigen\",\n \"search\": \"Suche fokussieren\",\n \"sidebar\": \"Seitenleiste umschalten\",\n \"theme\": \"Hell / Dunkel umschalten\",\n \"then\": \"dann\",\n \"footerPre\": \"Drücken Sie\",\n \"footerPost\": \", um diese Übersicht jederzeit zu öffnen.\"\n },\n \"states\": {\n \"checked\": \"vor 8 s geprüft\",\n \"diagnostics\": \"Diagnose\"\n },\n \"notFound\": {\n \"title\": \"Diese Seite ist verschwunden\",\n \"errorLine\": \"Fehler 404\",\n \"searchPlaceholder\": \"Nach einer Seite suchen…\",\n \"matches\": \"Passende Seiten\",\n \"popular\": \"Beliebte Ziele\",\n \"goBack\": \"Zurück\",\n \"backToDashboard\": \"Zurück zum Dashboard\"\n },\n \"page\": {\n \"invalid\": {\n \"title\": \"Die Konfiguration dieser Seite ist ungültig\",\n \"body\": \"Das gespeicherte Seitendokument hat die Validierung nicht bestanden und kann nicht dargestellt werden.\"\n },\n \"renderError\": {\n \"title\": \"Diese Seite konnte nicht dargestellt werden\"\n },\n \"tooNew\": {\n \"title\": \"Diese Seite benötigt ein neueres Adminium\"\n },\n \"unknownTemplate\": {\n \"title\": \"Unbekannte Seitenvorlage\"\n }\n },\n \"mutation\": {\n \"created\": \"Datensatz erstellt\",\n \"updated\": \"Datensatz aktualisiert\",\n \"deleted\": \"Datensatz gelöscht\"\n },\n \"undo\": {\n \"done\": \"Änderung rückgängig gemacht\",\n \"failed\": \"Diese Änderung konnte nicht rückgängig gemacht werden\"\n },\n \"prefs\": {\n \"theme\": {\n \"label\": \"Design\",\n \"light\": \"Hell\",\n \"dark\": \"Dunkel\",\n \"system\": \"System\"\n },\n \"accent\": {\n \"label\": \"Akzentfarbe\",\n \"indigo\": \"Indigo\",\n \"blue\": \"Blau\",\n \"teal\": \"Petrol\",\n \"violet\": \"Violett\",\n \"rose\": \"Rosé\",\n \"red\": \"Rot\",\n \"orange\": \"Orange\",\n \"black\": \"Schwarz\"\n },\n \"density\": {\n \"label\": \"Dichte\",\n \"comfortable\": \"Komfortabel\",\n \"compact\": \"Kompakt\"\n },\n \"locale\": {\n \"label\": \"Sprache\",\n \"directionNote\": \"Textrichtung: rechts nach links (wird automatisch durch die Sprache festgelegt)\"\n }\n },\n \"account\": {\n \"title\": \"Konto\",\n \"subtitle\": \"Die Identität Ihrer aktuellen Sitzung. Anzeigeeinstellungen und Benachrichtigungen verwalten Sie auf ihren eigenen Seiten.\",\n \"preferencesLink\": \"Einstellungen\",\n \"notificationsLink\": \"Benachrichtigungseinstellungen\",\n \"name\": \"Name\",\n \"email\": \"E-Mail\",\n \"roles\": \"Rollen\",\n \"twoFactor\": \"Zwei-Faktor\",\n \"on\": \"Aktiviert\",\n \"off\": \"Aus\",\n \"preferences\": {\n \"title\": \"Einstellungen\",\n \"subtitle\": \"Wie Adminium für Sie aussieht und sich liest — auf diesem und jedem anderen Gerät, an dem Sie sich anmelden.\",\n \"workspaceDefault\": \"Workspace-Standard\",\n \"personal\": \"Persönlich\",\n \"usingDefault\": \"Workspace-Standard wird verwendet ({value})\",\n \"reset\": \"Auf Workspace-Standard zurücksetzen\",\n \"resetFailed\": \"Diese Einstellung konnte nicht zurückgesetzt werden. Versuchen Sie es erneut.\",\n \"appliesInstantly\": \"Änderungen gelten sofort und werden in Ihrem Profil gespeichert.\"\n }\n },\n \"settings\": {\n \"defaults\": {\n \"title\": \"Globale Standards\",\n \"subtitle\": \"Workspace-weite Standards für Darstellung und Sprache.\",\n \"explainer\": \"Diese Standards gelten für alle Benutzer, sofern sie sie nicht überschreiben. Jeder kann unter Profil → Einstellungen eigene Werte festlegen — persönliche Einstellungen haben für diesen Benutzer immer Vorrang.\",\n \"appearanceHeading\": \"Darstellungs-Standards\",\n \"languageHeading\": \"Standards für Sprache & Region\",\n \"adoption\": \"{following, number} von {total, plural, one {# Benutzer} other {# Benutzern}} folgen diesem Standard.\",\n \"weekStartNote\": \"Wochenbeginn und Zahlenformate richten sich nach der Sprache.\",\n \"save\": \"Standards speichern\",\n \"saved\": \"Workspace-Standards aktualisiert\",\n \"saveFailed\": \"Die Workspace-Standards konnten nicht gespeichert werden. Versuchen Sie es erneut.\",\n \"liveNote\": \"Beim Speichern wird die Änderung live übertragen — angemeldete Benutzer, die einem Standard folgen, sehen sie ohne Neuladen.\"\n },\n \"notifications\": {\n \"subtitle\": \"Wählen Sie, worüber und wie Sie benachrichtigt werden\",\n \"matrixLabel\": \"Benachrichtigen bei\",\n \"rowHeader\": \"Ereignis\",\n \"saving\": \"Wird gespeichert…\",\n \"saved\": \"Gespeichert\",\n \"unavailable\": \"Noch nicht verfügbar\",\n \"loading\": \"Einstellungen werden geladen\",\n \"errorTitle\": \"Diese Einstellungen konnten nicht geladen werden\",\n \"emptyTitle\": \"Noch nichts zu konfigurieren\",\n \"emptyBody\": \"Benachrichtigungsereignisse erscheinen hier, sobald ihre Produzenten ausgeliefert werden.\",\n \"saveFailed\": \"Diese Änderung konnte nicht gespeichert werden.\"\n }\n },\n \"studio\": {\n \"source\": {\n \"engine\": {\n \"label\": \"Datenbank-Engine\",\n \"postgres\": \"PostgreSQL\",\n \"mysql\": \"MySQL / MariaDB\",\n \"sqlite\": \"SQLite\"\n },\n \"format\": {\n \"label\": \"Schemaformat\",\n \"helper\": \"Bei automatischer Erkennung belassen, sofern sie nicht danebenliegt.\",\n \"auto\": \"Automatisch erkennen\",\n \"sql\": \"SQL-DDL / pg_dump\",\n \"prisma\": \"Prisma-Schema\",\n \"drizzle\": \"Drizzle ORM\",\n \"typeorm\": \"TypeORM-Entitäten\",\n \"sequelize\": \"Sequelize-Modelle\",\n \"rails\": \"Rails schema.rb\",\n \"django\": \"Django models.py\",\n \"json\": \"Adminium-JSON\"\n },\n \"sqlite\": {\n \"file\": \"Pfad zur Datenbankdatei\",\n \"helper\": \"SQLite ist eine Datei, kein Server — geben Sie den absoluten Pfad auf der Maschine an, auf der Adminium läuft.\"\n },\n \"file\": {\n \"detectedAs\": \"Erkannt: {format}\",\n \"moreWarnings\": \"+{count} weitere Warnungen — die vollständige Liste erscheint im Analyse-Schritt.\",\n \"dropTitle\": \"Schemadatei hier ablegen oder durchsuchen\",\n \"dropHint\": \"SQL DDL / pg_dump, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, Django-Modelle, Adminium JSON\",\n \"pitch\": \"Keine Datenbankverbindung nötig — wir parsen Ihre Schemadatei und bauen dieselben Dashboards.\",\n \"parsing\": \"Hochgeladene Schemadatei wird gelesen…\",\n \"tables\": \"Tabellen\",\n \"columns\": \"Spalten\",\n \"warnings\": \"Warnungen\",\n \"errorTitle\": \"Datei konnte nicht geparst werden\",\n \"parseFailed\": \"Diese Datei konnte nicht geparst werden. Falls die automatische Erkennung falsch lag, wählen Sie das Format explizit und versuchen Sie es erneut.\",\n \"unsupported\": \"Dieses Format wird nicht erkannt — unterstützt werden SQL DDL, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, Django-Modelle und Adminium JSON. Wählen Sie eines explizit und versuchen Sie es erneut.\",\n \"requestFailed\": \"Upload fehlgeschlagen — prüfen Sie Ihre Verbindung und versuchen Sie es erneut.\"\n },\n \"title\": \"Verbinden Sie Ihre Datenbank\",\n \"subtitle\": \"Richten Sie Adminium auf eine Datenbank — wir generieren aus ihrem Schema ein Admin-Dashboard.\",\n \"name\": \"Verbindungsname\",\n \"namePlaceholder\": \"Produktions-Postgres\",\n \"modeLabel\": \"Eingabemodus der Quelle\",\n \"mode\": {\n \"dsn\": \"Verbindungszeichenfolge\",\n \"fields\": \"Einzelne Felder\",\n \"file\": \"Schemadatei\"\n },\n \"dsn\": {\n \"label\": \"Verbindungszeichenfolge\",\n \"helper\": \"postgres://benutzer:passwort@host:5432/datenbank — mysql:// und sqlite: funktionieren ebenfalls.\",\n \"incomplete\": \"Host und Datenbank ergänzen, z. B. postgres://user@host:5432/db\",\n \"invalidScheme\": \"Unbekanntes Schema — erwartet werden postgres://, mysql://, mariadb:// oder sqlite:\",\n \"quickFill\": \"Schnellausfüllen:\"\n },\n \"fields\": {\n \"host\": \"Host\",\n \"port\": \"Port\",\n \"database\": \"Datenbank\",\n \"user\": \"Benutzer\",\n \"password\": \"Passwort\",\n \"ssl\": \"SSL-Modus\",\n \"preview\": \"Vorschau der Verbindungszeichenfolge:\"\n },\n \"readOnlyRole\": {\n \"title\": \"Verwenden Sie eine schreibgeschützte Rolle\",\n \"body\": \"Adminium schreibt nie in Ihre Datenbank — die Einrichtung nutzt nur Schema-Metadaten. Wir empfehlen einen dedizierten Benutzer mit reinen SELECT-Rechten; wo Adminium seine eigenen Tabellen ablegt, entscheiden Sie im Meta-Speicher-Schritt.\"\n }\n },\n \"capability\": {\n \"mysqlApproxRows\": \"MySQL-Zeilenzahlen sind Schätzungen der Storage-Engine (Abweichungen bis ±40 % möglich) — sie werden mit ≈ angezeigt.\",\n \"mysqlFkEnum\": \"MySQL liefert schwächere FK-/Enum-Metadaten: MyISAM-Tabellen deklarieren keine Fremdschlüssel, Enums sind spaltengebundene enum(…)-Typen, und CHECK-Constraints erfordern MySQL 8.0.16+ / MariaDB 10.2+.\",\n \"sqliteCheckEnums\": \"SQLite hat keinen nativen Enum-Typ — Enums werden aus CHECK-(col IN (…))-Constraints abgeleitet.\",\n \"sqliteNoComments\": \"SQLite kennt keine Spaltenkommentare — verwenden Sie den Schema-Remap-Editor, um Beschriftungen zu vergeben.\",\n \"importNoRowCounts\": \"Schemadateien enthalten keine Zeilenzahlen — die Tabellenliste zeigt — statt erfundener Werte.\",\n \"importNoLiveHealth\": \"Keine Live-Datenbankverbindung — Health-Checks und Schema-Drift-Erkennung sind für diese Quelle nicht verfügbar.\",\n \"rowsUnavailable\": \"Schemadateien haben keine Live-Datenbank — Zeilenzahlen sind unbekannt, bis Sie eine verbinden.\",\n \"rowsRunAnalyze\": \"Noch keine Schätzung — führen Sie ANALYZE auf der Datenbank aus, um Zeilenzahlen zu erhalten.\",\n \"rowsNoEstimate\": \"Die Engine hat für diese Tabelle keine Schätzung gemeldet.\",\n \"rowsApproximate\": \"Schätzung der Storage-Engine — kann bei InnoDB um bis zu ±40 % abweichen.\"\n },\n \"test\": {\n \"log\": {\n \"moreWarnings\": \"+{count} weitere Parser-Warnungen\",\n \"connecting\": \"Sichere Verbindung wird aufgebaut…\",\n \"connected\": \"Verbunden ({latency} ms) · schreibgeschützte Introspektion\",\n \"connectFailed\": \"Verbindung fehlgeschlagen.\",\n \"readingSchema\": \"Schema wird gelesen: public\",\n \"readingFile\": \"Hochgeladene Schemadatei wird gelesen…\",\n \"parsingFile\": \"{file} wird geparst…\",\n \"detected\": \"{tables} Tabellen · {columns} Spalten erkannt\",\n \"found\": \"{tables} Tabellen · {columns} Spalten gefunden\",\n \"mapping\": \"Spaltentypen → Eingabe-Widgets werden zugeordnet\",\n \"relations\": \"Beziehungen werden erkannt…\",\n \"piiScan\": \"Suche nach PII-Spalten…\",\n \"piiDone\": \"PII-Scan abgeschlossen — {count} Spalten standardmäßig maskiert\",\n \"piiDoneUnknown\": \"PII-Scan abgeschlossen\",\n \"jobFailed\": \"Introspektion fehlgeschlagen.\",\n \"networkFailed\": \"Anfrage fehlgeschlagen — prüfen Sie Ihre Verbindung und versuchen Sie es erneut.\",\n \"ready\": \"Bereit\"\n },\n \"title\": \"Ihr Schema wird analysiert\",\n \"subtitle\": \"Tabellen, Spalten und Beziehungen werden introspiziert. Das dauert ein paar Sekunden.\",\n \"trust\": \"Wir lesen nur Ihr Schema und Ihre Daten. Nichts wird verändert.\",\n \"errorTitle\": \"Verbindung fehlgeschlagen\",\n \"retry\": \"Erneut versuchen\",\n \"logLabel\": \"Introspektionsprotokoll\",\n \"hint\": {\n \"auth\": \"Authentifizierung fehlgeschlagen — prüfen Sie Benutzername und Passwort in Ihrer DSN.\",\n \"hostUnreachable\": \"Host nicht erreichbar — prüfen Sie Hostname und Port und dass die Datenbank Verbindungen von dieser Maschine akzeptiert (unsere IPs freigeben).\",\n \"metaPlacement\": \"Diese Quelle kann Adminiums Meta-Tabellen nicht aufnehmen — fahren Sie mit einer separaten Meta-Datenbank fort.\",\n \"permission\": \"Die Rolle hat sich verbunden, darf das Schema aber nicht lesen — erteilen Sie Ihrer Introspektionsrolle USAGE auf dem Schema.\",\n \"timeout\": \"Die Datenbank hat nicht rechtzeitig geantwortet — prüfen Sie Netzwerkpfad und Auslastung und versuchen Sie es erneut.\",\n \"tls\": \"TLS-Aushandlung fehlgeschlagen — versuchen Sie sslmode=require oder laden Sie das CA-Zertifikat hoch, das Ihr Server erwartet.\",\n \"unknown\": \"Verbindung fehlgeschlagen — prüfen Sie die DSN und versuchen Sie es erneut.\"\n }\n },\n \"tables\": {\n \"importNoCounts\": \"Schemadateien enthalten keine Zeilenzahlen — die Spalte zeigt —, bis eine Live-Datenbank verbunden ist.\",\n \"title\": \"Wählen Sie Ihre Tabellen\",\n \"subtitle\": \"Wählen Sie, welche enthalten sein sollen. Sie können das jederzeit ändern.\",\n \"search\": \"Tabellen filtern…\",\n \"listLabel\": \"Einbeziehbare Tabellen\",\n \"emptyFilter\": \"Keine Tabellen entsprechen Ihrem Filter.\",\n \"pii\": \"PII\",\n \"highVolume\": \"hohes Volumen\",\n \"highVolumeNote\": \"Tabellen mit über 100.000 Zeilen sind anfangs abgewählt — Ops-Tabellen gehören selten in ein Dashboard.\",\n \"joinHidden\": \"{count} Join-/Systemtabellen sind vorab ausgeblendet — sie treiben weiterhin m:n-Beziehungen an.\"\n },\n \"hub\": {\n \"title\": \"Datenverbindungen\",\n \"subtitle\": \"{healthy, number} von {total, plural, one {# Verbindung} other {# Verbindungen}} fehlerfrei\",\n \"connectNew\": \"Neue Verbindung\",\n \"stats\": {\n \"connections\": \"Verbindungen\",\n \"healthy\": \"Fehlerfrei\",\n \"tables\": \"Einbezogene Tabellen\",\n \"pages\": \"Generierte Seiten\"\n },\n \"status\": {\n \"connected\": \"Verbunden\",\n \"error\": \"Fehler\",\n \"unconfigured\": \"Entwurf\",\n \"testing\": \"Wird getestet…\"\n },\n \"card\": {\n \"readOnly\": \"Schreibgeschützt\",\n \"tables\": \"Tabellen\",\n \"pages\": \"Seiten\",\n \"latency\": \"Latenz\",\n \"latencyMs\": \"{latency, number} ms\",\n \"lastIntrospected\": \"Zuletzt introspiziert\",\n \"never\": \"Nie\"\n },\n \"action\": {\n \"test\": \"Testen\",\n \"reintrospect\": \"Neu introspizieren\",\n \"reintrospectFile\": \"Schemadatei-Quellen haben keine Live-Datenbank — laden Sie stattdessen die Datei erneut hoch.\",\n \"remap\": \"Schema neu zuordnen\",\n \"delete\": \"Löschen\"\n },\n \"test\": {\n \"ok\": \"Verbindung fehlerfrei · {latency, number} ms\",\n \"failed\": \"Verbindungstest fehlgeschlagen\"\n },\n \"introspect\": {\n \"noChanges\": \"Schema unverändert — kein neuer Snapshot.\",\n \"updated\": \"Schema neu introspiziert\",\n \"masksProposed\": \"{count, plural, one {# Spalte} other {# Spalten}} zur Maskierung vorgeschlagen — im Remap-Editor prüfen.\",\n \"failed\": \"Introspektion fehlgeschlagen. Versuchen Sie es erneut.\"\n },\n \"delete\": {\n \"title\": \"Verbindung löschen\",\n \"body\": \"Dies löscht „{name}“ und die daraus generierten Seiten. Ihre Datenbank selbst bleibt unangetastet.\",\n \"prompt\": \"Geben Sie {name} zur Bestätigung ein\",\n \"confirm\": \"Verbindung löschen\",\n \"cancel\": \"Abbrechen\",\n \"close\": \"Schließen\",\n \"success\": \"Verbindung „{name}“ gelöscht\",\n \"failed\": \"Die Verbindung konnte nicht gelöscht werden. Versuchen Sie es erneut.\"\n },\n \"empty\": {\n \"title\": \"Noch keine Datenquellen\",\n \"body\": \"Verbinden Sie eine Datenbank — Adminium generiert Ihr Admin-Panel aus deren Schema.\",\n \"cta\": \"Datenbank verbinden\"\n }\n },\n \"settingsHub\": {\n \"title\": \"Workspace-Einstellungen\",\n \"subtitle\": \"Identität, Sicherheit und destruktive Aktionen für diesen Workspace.\",\n \"save\": \"Änderungen speichern\",\n \"saved\": \"Workspace-Einstellungen aktualisiert\",\n \"saveFailed\": \"Die Workspace-Einstellungen konnten nicht gespeichert werden. Versuchen Sie es erneut.\",\n \"superAdminOnlyTitle\": \"Super-Admin erforderlich\",\n \"superAdminOnly\": \"Nur ein Super-Admin kann Identität und Sicherheitseinstellungen des Workspace ändern.\",\n \"identity\": {\n \"heading\": \"Workspace-Identität\",\n \"appName\": {\n \"label\": \"Anwendungsname\",\n \"helper\": \"Erscheint in der Seitenleiste, im Browser-Titel und in E-Mails.\",\n \"error\": \"Geben Sie einen Namen mit höchstens 60 Zeichen ein.\"\n }\n },\n \"security\": {\n \"heading\": \"Sicherheit\",\n \"require2fa\": {\n \"label\": \"Zwei-Faktor-Authentifizierung verlangen\",\n \"desc\": \"Jedes Mitglied muss 2FA aktivieren, um sich anzumelden.\"\n },\n \"allowSignup\": {\n \"label\": \"Selbstregistrierung erlauben\",\n \"desc\": \"Jeder kann ein Konto erstellen — deaktiviert bleibt der Workspace nur per Einladung zugänglich.\"\n },\n \"sessionTtl\": {\n \"label\": \"Sitzungsdauer (Stunden)\",\n \"error\": \"Zwischen {min, number} und {max, number} Stunden.\"\n },\n \"passwordMin\": {\n \"label\": \"Minimale Passwortlänge\",\n \"error\": \"Zwischen {min, number} und {max, number} Zeichen.\"\n }\n },\n \"review\": {\n \"title\": \"Workspace-Einstellungen speichern\",\n \"subtitle\": \"Prüfen Sie Ihre Änderungen vor dem Speichern.\",\n \"confirm\": \"Änderungen speichern\",\n \"cancel\": \"Abbrechen\",\n \"close\": \"Schließen\",\n \"on\": \"An\",\n \"off\": \"Aus\",\n \"change\": \"{before} → {after}\"\n },\n \"defaultsCard\": {\n \"heading\": \"Standards für Darstellung & Sprache\",\n \"body\": \"Workspace-weite Einstellungen für Theme, Akzentfarbe, Dichte und Sprache finden Sie unter „Globale Standards“.\",\n \"cta\": \"Globale Standards öffnen\"\n },\n \"danger\": {\n \"heading\": \"Gefahrenzone\",\n \"subtitle\": \"Unumkehrbare Aktionen.\",\n \"empty\": \"Nichts zu löschen — noch keine Verbindungen.\",\n \"deleteDesc\": \"Löscht die Verbindung und die daraus generierten Seiten. Ihre Datenbank bleibt unangetastet. Kann nicht rückgängig gemacht werden.\",\n \"deleteCta\": \"Verbindung löschen\"\n },\n \"aiCard\": {\n \"heading\": \"KI-Anreicherung\",\n \"body\": \"Konfigurieren Sie einen KI-Anbieter (oder den Kopieren-Einfügen-Umlauf), um Bezeichnungen, Gruppen und Beziehungen anzureichern.\",\n \"cta\": \"KI-Einstellungen öffnen\"\n }\n },\n \"settingsAi\": {\n \"title\": \"KI-Anreicherung\",\n \"subtitle\": \"Verbinden Sie ein Modell, damit Adminium Bezeichnungen, Gruppen, Beziehungen und mehr vorschlägt — immer als Diff geprüft, bevor etwas übernommen wird.\",\n \"saved\": \"KI-Anbieter gespeichert\",\n \"saveFailed\": \"Der KI-Anbieter konnte nicht gespeichert werden. Erneut versuchen.\",\n \"save\": \"Anbieter speichern\",\n \"test\": \"Verbindung testen\",\n \"testHintDirty\": \"Speichern Sie Ihre Änderungen vor dem Test.\",\n \"testing\": \"Anbieter wird angepingt…\",\n \"testError\": \"Test fehlgeschlagen\",\n \"testErrorBody\": \"Der Anbieter war nicht erreichbar. Prüfen Sie Schlüssel und Basis-URL.\",\n \"testOk\": \"Verbunden mit {model} in {latency} ms\",\n \"testUnknownModel\": \"dem Anbieter\",\n \"provider\": {\n \"heading\": \"KI-Anbieter\",\n \"subtitle\": \"Wählen Sie, wie Adminium ein Modell zur Anreicherung Ihres Schemas erreicht. Schlüssel werden verschlüsselt gespeichert und nie wieder angezeigt.\",\n \"active\": \"Aktiv\",\n \"anthropic\": {\n \"label\": \"Anthropic\",\n \"desc\": \"Claude-Modelle über die Anthropic-API.\"\n },\n \"openai\": {\n \"label\": \"OpenAI\",\n \"desc\": \"GPT-Modelle über die OpenAI-API.\"\n },\n \"openaiCompatible\": {\n \"label\": \"OpenAI-kompatibel\",\n \"desc\": \"Jeder Endpunkt, der das OpenAI-Format spricht — Groq, Together, vLLM, LM Studio.\"\n },\n \"ollama\": {\n \"label\": \"Ollama (lokal)\",\n \"desc\": \"Modelle laufen lokal über Ollama — kein Schlüssel, keine Cloud.\"\n },\n \"requiresNetwork\": \"Erfordert Internet und einen API-Schlüssel\",\n \"networkDisabledTitle\": \"Direkte KI-Anbieter sind in dieser Installation deaktiviert\",\n \"networkDisabledBody\": \"Dieses Adminium ist ohne ausgehenden Internetzugang konfiguriert und kann keine Anbieter-API erreichen. Nutzen Sie unten den Kopieren-und-Einfügen-Weg — er braucht weder Schlüssel noch Netzwerk.\"\n },\n \"configure\": {\n \"heading\": \"{provider} konfigurieren\"\n },\n \"field\": {\n \"baseUrl\": \"Basis-URL\",\n \"baseUrlOptional\": \"Unverändert lassen, außer Ollama läuft auf einem anderen Host.\",\n \"baseUrlHelper\": \"Die Endpunkt-Wurzel, die /chat/completions bereitstellt.\",\n \"model\": \"Modell\",\n \"modelFreeText\": \"Geben Sie die genaue Modell-ID ein, die Ihr Endpunkt bereitstellt.\",\n \"modelLive\": \"Live vom Anbieter geladen.\",\n \"modelStatic\": \"Eine bewährte Liste; geben Sie nach dem Speichern eine eigene ID ein, um sie zu aktualisieren.\",\n \"modelLoading\": \"Wird geladen…\",\n \"modelPlaceholder\": \"Modell auswählen…\",\n \"key\": \"API-Schlüssel\",\n \"keyStored\": \"Verschlüsselt gespeichert. Ersetzen Sie ihn, um einen anderen Schlüssel zu verwenden.\",\n \"keyMask\": \"sk-…{last4}\",\n \"keyReplace\": \"Schlüssel ersetzen\",\n \"keyOptional\": \"Optional — manche Endpunkte brauchen keinen Schlüssel.\",\n \"keyWriteOnly\": \"Nur schreibend: einmal gespeichert, wird er nie wieder angezeigt.\",\n \"noKeyTitle\": \"Kein API-Schlüssel nötig\",\n \"noKeyBody\": \"Ollama läuft lokal, es verlässt also nichts diesen Rechner.\"\n },\n \"runStatus\": {\n \"draft\": \"Entwurf\",\n \"running\": \"Läuft\",\n \"awaitingResponse\": \"Wartet auf Antwort\",\n \"validated\": \"Validiert\",\n \"applied\": \"Übernommen\",\n \"partiallyApplied\": \"Teilweise übernommen\",\n \"failed\": \"Fehlgeschlagen\",\n \"discarded\": \"Verworfen\"\n },\n \"byo\": {\n \"heading\": \"Kein Schlüssel? Nutzen Sie Ihr eigenes KI-Tool\",\n \"subtitle\": \"Der Kopieren-Einfügen-Umlauf — nichts verlässt diesen Rechner.\",\n \"body\": \"Studio kann aus Ihrem Schema einen eigenständigen Prompt erzeugen. Führen Sie ihn in Claude Code, ChatGPT oder einem beliebigen Tool aus und fügen Sie das zurückgegebene JSON wieder in den Verbindungsassistenten ein. Gleiche Validierung, gleiche Prüfung, gleiches Ergebnis wie der direkte Weg.\",\n \"guaranteeTitle\": \"Telemetriefreie Garantie\",\n \"guarantee1\": \"Der Prompt enthält nur Ihr Schema und aggregierte Statistiken — standardmäßig nie Zeilendaten.\",\n \"guarantee2\": \"Keine Anmeldedaten, keine Instanz-URL, keine Kennungen sind eingebettet.\",\n \"guarantee3\": \"BYO-Läufe machen keinerlei Netzwerkaufrufe.\",\n \"promptVersion\": \"Prompt {version}\",\n \"schemaVersion\": \"Schema {version}\",\n \"headingRecommended\": \"Eigenes KI-Tool verwenden — kein Schlüssel nötig\",\n \"recommended\": \"Empfohlen\"\n },\n \"history\": {\n \"heading\": \"Laufverlauf\",\n \"subtitle\": \"Frühere Anreicherungsläufe. Öffnen Sie einen, um seine Vorschläge zu prüfen.\",\n \"tableLabel\": \"Anreicherungsläufe\",\n \"colDate\": \"Datum\",\n \"colSource\": \"Quelle\",\n \"colStatus\": \"Status\",\n \"colChunks\": \"Blöcke\",\n \"openReview\": \"Prüfung für den Lauf vom {date} öffnen\",\n \"connection\": \"Verbindung\",\n \"empty\": \"Noch keine Anreicherungsläufe. Reichern Sie ein Schema im Verbindungsassistenten an, um hier Verlauf zu sehen.\",\n \"errorTitle\": \"Läufe konnten nicht geladen werden\",\n \"errorBody\": \"Laden Sie die Seite neu, um es erneut zu versuchen.\",\n \"noConnections\": \"Verbinden Sie zuerst eine Datenbank — Anreicherungsläufe werden pro Verbindung erfasst.\",\n \"byo\": \"BYO\",\n \"directPath\": \"Direkt\"\n }\n },\n \"enrich\": {\n \"title\": \"Mit KI anreichern\",\n \"subtitle\": \"Verfeinern Sie die generierten Bezeichnungen, Gruppen, Enums und Dashboards optional mit einem LLM. Die heuristische Grundlage funktioniert auch ohne — dies fügt nur Vorschläge hinzu, die Sie prüfen, bevor etwas angewendet wird.\",\n \"intentLabel\": \"Wie möchten Sie anreichern?\",\n \"sectionsLegend\": \"Worüber soll die KI entscheiden?\",\n \"localesLegend\": \"Bezeichnungen übersetzen in\",\n \"localeLocked\": \"(erforderlich)\",\n \"samplingTitle\": \"Beispielwerte einbeziehen\",\n \"samplingHint\": \"Nimmt bis zu 20 echte Werte pro Nicht-PII-Spalte in den Prompt auf.\",\n \"samplingPreviewTitle\": \"Was diesen Rechner verlässt\",\n \"samplingPreviewBody\": \"Bis zu 20 häufigste Werte pro Nicht-PII-Spalte, plus Min/Max für numerische und Datumsspalten. Als PII markierte Spalten werden nie beprobt. Alles Übrige bleibt rein aggregiert. Prüfen Sie den genauen Prompt vor dem Kopieren (BYO) — ohne Ihr Zutun wird nichts gesendet.\",\n \"noSections\": \"Wählen Sie mindestens eine Entscheidungsgruppe zum Anreichern.\",\n \"generatePrompt\": \"Prompt erzeugen\",\n \"startProvider\": \"Anreicherung starten\",\n \"startOver\": \"Von vorn beginnen\",\n \"copied\": \"Kopiert\",\n \"createFailed\": \"Der Anreicherungs-Prompt konnte nicht erstellt werden — erneut versuchen.\",\n \"createFailedTitle\": \"Konnte nicht starten\",\n \"providerFallback\": \"Ihr KI-Anbieter\",\n \"fileTitle\": \"KI-Anreicherung benötigt eine aktive Datenbank\",\n \"fileBody\": \"Schema-Datei-Quellen haben noch keinen Snapshot zum Anreichern. Verbinden Sie eine aktive Datenbank für die KI-Anreicherung, oder fahren Sie fort — die heuristische Grundlage erzeugt weiterhin eine vollständige App.\",\n \"section\": {\n \"labels\": \"Bezeichnungen & Beschreibungen\",\n \"groups\": \"Navigationsgruppen\",\n \"enums\": \"Enum-Semantik\",\n \"relations\": \"Beziehungen\",\n \"keys\": \"Schlüsselspalten\",\n \"templates\": \"Seitenvorlagen\",\n \"widgets\": \"Dashboard-Widgets\",\n \"pii\": \"PII & Maskierung\",\n \"icons\": \"Symbole\",\n \"microcopy\": \"Mikrotexte\"\n },\n \"provider\": {\n \"title\": \"Meinen KI-Anbieter verwenden\",\n \"description\": \"Führen Sie die Anreicherung jetzt mit Ihrem konfigurierten Anbieter aus. Sie prüfen jeden Vorschlag als Diff.\",\n \"unconfigured\": \"Es ist noch kein KI-Anbieter konfiguriert — kopieren Sie unten einen Prompt in Ihr eigenes Tool, oder konfigurieren Sie zuerst einen Anbieter.\",\n \"settingsHint\": \"Möchten Sie es direkt ausführen?\",\n \"settingsLink\": \"Anbieter in Einstellungen → KI konfigurieren\",\n \"networkDisabled\": \"Dieses Adminium hat keinen ausgehenden Internetzugang und kann keine Anbieter-API erreichen. Nutzen Sie stattdessen den Kopieren-und-Einfügen-Weg — gleicher Prompt, gleiche Prüfung.\"\n },\n \"byo\": {\n \"cardTitle\": \"Einen Prompt in mein eigenes KI-Tool kopieren\",\n \"cardDescription\": \"Kopieren Sie einen eigenständigen Prompt in Claude Code, ChatGPT oder ein beliebiges Tool — und fügen Sie das JSON zurück ein. Kein Schlüssel nötig, nichts verlässt diesen Rechner automatisch.\",\n \"guidance\": \"Führen Sie dies in einem beliebigen KI-Tool aus — Claude Code, ChatGPT, egal. Fügen Sie das zurückgegebene JSON unten ein.\",\n \"promptLabel\": \"Anreicherungs-Prompt\",\n \"promptLabelN\": \"Anreicherungs-Prompt {index} von {total}\",\n \"tokenChip\": \"≈ {tokens} Tokens\",\n \"copyPrompt\": \"Prompt kopieren\",\n \"copyPromptDone\": \"Prompt kopiert\",\n \"download\": \".md herunterladen\",\n \"chunkTabs\": \"Prompt-Abschnitte\",\n \"chunkTab\": \"Prompt {index}\",\n \"chunkValid\": \"Abschnitt {index} validiert\",\n \"pasteLabel\": \"JSON-Antwort einfügen\",\n \"pastePlaceholder\": \"JSON-Antwort hier einfügen…\",\n \"validate\": \"Validieren\",\n \"valid\": \"Antwort validiert\",\n \"mergedTitle\": \"Alle {count} Abschnitte validiert und zusammengeführt\",\n \"mergedTitleSingle\": \"Antwort validiert\",\n \"mergedBody\": \"Die Vorschläge können nun gegen die heuristische Grundlage geprüft werden.\",\n \"errorsTitle\": \"Die Validierung fand {count} Probleme\",\n \"copyErrors\": \"Fehler für Ihr KI-Tool kopieren\",\n \"copyErrorsDone\": \"Fehler kopiert\",\n \"copyErrorsHint\": \"Fügen Sie dies in Ihr KI-Tool zurück ein, um eine korrigierte Antwort zu erhalten.\",\n \"droppedItems\": \"{count} Vorschläge wurden bei der Validierung verworfen — die Prüfung zeigt die übrigen.\",\n \"pendingTitle\": \"Validieren Sie jeden Prompt, um fortzufahren\",\n \"pendingBody\": \"Fügen Sie die JSON-Antwort oben ein und validieren Sie sie, um zur Prüfung fortzufahren.\",\n \"pendingBodyChunked\": \"Jeder Abschnitt muss validiert werden, bevor die Vorschläge zusammengeführt werden. Fügen Sie jeden Prompt oben ein und validieren Sie ihn.\",\n \"requestFailed\": \"Der Server war für die Validierung nicht erreichbar — erneut versuchen.\",\n \"continueReview\": \"Weiter zur Prüfung\",\n \"wholeDocument\": \"gesamtes Dokument\",\n \"cardTitleRecommended\": \"Prompt in mein eigenes KI-Tool kopieren — empfohlen\"\n },\n \"direct\": {\n \"title\": \"Anreicherung mit KI\",\n \"subtitle\": \"Ihr Schema wird gesendet an\",\n \"building\": \"Prompt wird erstellt…\",\n \"logLabel\": \"Anreicherungsprotokoll\",\n \"cancel\": \"Abbrechen\",\n \"back\": \"Zurück zu den Optionen\",\n \"retry\": \"Erneut versuchen\",\n \"done\": \"Anreicherung abgeschlossen — prüfen Sie die Vorschläge.\",\n \"continueReview\": \"Weiter zur Prüfung\",\n \"failed\": \"Der Anbieterlauf ist fehlgeschlagen. Prüfen Sie Ihre KI-Einstellungen und versuchen Sie es erneut.\",\n \"jobFailed\": \"Der Anreicherungslauf wurde nicht abgeschlossen.\",\n \"startFailed\": \"Der Lauf konnte nicht gestartet werden — erneut versuchen.\",\n \"errorTitle\": \"Anreicherung fehlgeschlagen\"\n },\n \"skip\": {\n \"title\": \"Überspringen — nur Heuristik verwenden\",\n \"description\": \"Aus der heuristischen Grundlage generieren. Sie können später über Einstellungen → KI anreichern — Überspringen wird nie bestraft.\",\n \"confirmTitle\": \"Weiter mit Heuristik\",\n \"confirmBody\": \"Die generierte App verwendet die heuristischen Bezeichnungen, Gruppen und Dashboards. Fahren Sie mit dem Generieren fort — Sie können die KI-Anreicherung jederzeit über Einstellungen → KI ausführen.\"\n }\n },\n \"review\": {\n \"unavailableTitle\": \"Prüfungsansicht nicht verfügbar\",\n \"unavailableBody\": \"Dieser Build enthält die Anreicherungs-Prüfungsansicht noch nicht (06-T14). Sie kommt mit dem Diff-und-Übernehmen-Ablauf.\"\n },\n \"llmRuns\": {\n \"review\": {\n \"header\": {\n \"title\": \"KI-Vorschläge prüfen\",\n \"model\": \"Modell\",\n \"snapshot\": \"Snapshot\",\n \"byo\": \"BYO\",\n \"pathDirect\": \"Direkte API\",\n \"pathByo\": \"Kopieren & Einfügen\",\n \"agree\": \"{n} übereinstimmend\",\n \"conflict\": \"{n} Konflikt\",\n \"new\": \"{n} neu\",\n \"rejects\": \"{n} Ablehnungen\",\n \"countsAria\": \"Anzahl der Vorschläge\"\n },\n \"bulk\": {\n \"thresholdLabel\": \"Konfidenzschwelle\",\n \"thresholdAria\": \"Konfidenzschwelle für „Alle übernehmen“\",\n \"acceptAll\": \"Alle ≥ {pct}% übernehmen\",\n \"clear\": \"Auswahl aufheben\"\n },\n \"section\": {\n \"selectAllAria\": \"Alle in {group} auswählen\",\n \"acceptedCount\": \"{n} übernommen\"\n },\n \"group\": {\n \"labels\": \"Bezeichnungen & Übersetzungen\",\n \"navigation\": \"Navigation & Domänen\",\n \"enums\": \"Enum-Semantik\",\n \"relations\": \"Beziehungen\",\n \"keys\": \"Schlüsselspalten\",\n \"templates\": \"Seitenvorlagen\",\n \"dashboards\": \"Dashboards & Widgets\",\n \"pii\": \"PII & Maskierung\",\n \"icons\": \"Symbole\",\n \"microcopy\": \"Mikrotexte\"\n },\n \"status\": {\n \"agree\": \"Stimmt überein\",\n \"conflict\": \"Konflikt\",\n \"new\": \"Neu\",\n \"heuristicOnly\": \"Nur Heuristik\",\n \"rejects\": \"Lehnt Heuristik ab\",\n \"locked\": \"Gesperrt\"\n },\n \"row\": {\n \"acceptAria\": \"{noun}-Vorschlag für {target} übernehmen\",\n \"keptEdited\": \"beibehalten – von Ihnen bearbeitet\",\n \"rejectsCallout\": \"Die KI lehnt eine heuristische Entscheidung ab – vor dem Übernehmen bestätigen.\",\n \"showTranslations\": \"Übersetzungen anzeigen\",\n \"hideTranslations\": \"Übersetzungen ausblenden\",\n \"confidenceAria\": \"Konfidenz {pct}%\",\n \"noAi\": \"Kein KI-Vorschlag\"\n },\n \"value\": {\n \"none\": \"Kein Wert\",\n \"absent\": \"Keiner\",\n \"dash\": \"—\",\n \"display\": \"Anzeige\",\n \"key\": \"Schlüssel\",\n \"rank\": \"Rang {n}\",\n \"span\": \"Breite {n}\",\n \"tableCount\": \"{n} Tabellen\",\n \"widgetCount\": \"{n} Widgets\",\n \"enumWorkflow\": \"Workflow\",\n \"enumCategory\": \"Kategorie\",\n \"notPii\": \"Keine PII\",\n \"label\": \"Bezeichnung\",\n \"description\": \"Beschreibung\",\n \"subtitle\": \"Seitenuntertitel\",\n \"headline\": \"Überschrift für leeren Zustand\",\n \"guidance\": \"Hinweis für leeren Zustand\"\n },\n \"apply\": {\n \"title\": \"{n} Vorschläge übernehmen\",\n \"subtitle\": \"Diese Änderungen werden in einer Transaktion geschrieben und können rückgängig gemacht werden.\",\n \"empty\": \"Nichts zum Übernehmen ausgewählt.\",\n \"confirm\": \"Änderungen übernehmen\"\n },\n \"footer\": {\n \"count\": \"{n} Vorschläge ausgewählt\",\n \"apply\": \"{n} übernommene Vorschläge anwenden\",\n \"failed\": \"Anwenden fehlgeschlagen\"\n },\n \"toast\": {\n \"applied\": \"{n} Vorschläge übernommen\",\n \"appliedPartial\": \"{n} Vorschläge übernommen (einige übersprungen)\",\n \"applyFailed\": \"Vorschläge konnten nicht übernommen werden\",\n \"undoFailed\": \"Diese Änderung konnte nicht rückgängig gemacht werden\"\n },\n \"error\": {\n \"title\": \"Dieser Lauf konnte nicht geladen werden\"\n },\n \"notReady\": {\n \"title\": \"Dieser Lauf hat noch keine Vorschläge zur Prüfung\",\n \"body\": \"Ein Lauf muss validiert sein, bevor seine Vorschläge geprüft werden können. Erzeugen oder fügen Sie zuerst eine Antwort ein.\"\n },\n \"applied\": {\n \"title\": \"Dieser Lauf wurde angewendet\",\n \"body\": \"Die übernommenen Vorschläge unten sind schreibgeschützt.\"\n },\n \"empty\": {\n \"title\": \"Keine Vorschläge\",\n \"body\": \"Dieser Lauf hat keine Vorschläge zur Prüfung erzeugt.\"\n },\n \"cat\": {\n \"label\": \"Bezeichnung\",\n \"key\": \"Schlüsselspalten\",\n \"enum\": \"Enum\",\n \"relation\": \"Beziehung\",\n \"pii\": \"PII\",\n \"template\": \"Seitenvorlage\",\n \"group\": \"Navigationsgruppe\",\n \"dashboard\": \"Dashboard\",\n \"widget\": \"Widget\",\n \"copy\": \"Mikrotext\"\n }\n }\n },\n \"wizard\": {\n \"title\": \"Neue Verbindung\",\n \"back\": \"Zurück\",\n \"continue\": \"Weiter\",\n \"progress\": \"Einrichtungsfortschritt\",\n \"persistFailed\": \"Ihre Tabellenauswahl konnte nicht gespeichert werden — versuchen Sie es erneut.\",\n \"persistFailedTitle\": \"Speichern fehlgeschlagen\",\n \"step\": {\n \"source\": \"Quelle\",\n \"test\": \"Analysieren\",\n \"tables\": \"Tabellen\",\n \"meta\": \"Meta-Speicher\",\n \"intent\": \"Zweck\",\n \"enrich\": \"Anreichern\",\n \"generate\": \"Generieren\"\n }\n },\n \"meta\": {\n \"title\": \"Wo soll Adminium seine eigenen Tabellen ablegen?\",\n \"subtitle\": \"Seiten, Rollen, Audit-Log und Einstellungen liegen in Tabellen mit adminium_-Präfix — nie mit Ihren Daten vermischt.\",\n \"sameDb\": {\n \"title\": \"Gleiche Datenbank\",\n \"description\": \"adminium_*-Tabellen werden neben Ihren Quelltabellen angelegt. Einfachste Einrichtung — benötigt eine Rolle mit Schreib- und CREATE-TABLE-Rechten.\",\n \"disabledReadOnly\": \"Ihre Rolle ist schreibgeschützt — Adminium schreibt nie in diese Datenbank. Wählen Sie für Adminiums eigene Tabellen eine separate Datenbank.\",\n \"disabledNoDdl\": \"Diese Rolle darf kein DDL ausführen — Adminium-Migrationen benötigen CREATE TABLE. Wählen Sie für Adminiums eigene Tabellen eine separate Datenbank.\",\n \"disabledFile\": \"Eine Schemadatei hat keine Live-Datenbank — wählen Sie für Adminiums eigene Tabellen eine separate Datenbank.\"\n },\n \"separate\": {\n \"title\": \"Separate Datenbank\",\n \"description\": \"Adminium hält seine Tabellen in einer anderen Datenbank. Ihre Quelle bleibt unangetastet — erforderlich für schreibgeschützte Quellen.\",\n \"dsn\": \"Verbindungszeichenfolge der Meta-Datenbank\",\n \"helper\": \"Benötigt Schreib- und DDL-Rechte — Adminium führt dort seine eigenen Migrationen aus.\",\n \"test\": \"Verbindung testen\",\n \"ok\": \"Kompatibel — Schreiben ✓ · DDL ✓\",\n \"insufficient\": \"Diese Rolle kann den Meta-Store nicht aufnehmen — Adminium benötigt dort Schreib- und CREATE-TABLE-Rechte.\",\n \"errorTitle\": \"Meta-Store nicht kompatibel\"\n },\n \"testFailed\": \"Verbindung fehlgeschlagen.\",\n \"v1Note\": {\n \"title\": \"Über diese Installation\",\n \"body\": \"Dieser Server hat seinen Meta-Store beim ersten Start gewählt. Dieser Schritt prüft, ob Ihre Wahl mit dieser Verbindung kompatibel ist, und hält sie fest — der Server erzwingt dieselbe Regel unabhängig (409 META_PLACEMENT_INVALID). Einen bestehenden Meta-Store zu verschieben ist eine Ops-Aufgabe (M10).\"\n }\n },\n \"intent\": {\n \"title\": \"Was brauchen Sie?\",\n \"subtitle\": \"Der Zweck bestimmt, welche Seiten generiert werden. Sie können ihn später ändern — eine Änderung schlägt eine Neugenerierung vor, nie ein stilles Überschreiben.\",\n \"trust\": \"Wir lesen nur Ihr Schema — während der Einrichtung nie Ihre Zeilendaten.\",\n \"fullAdmin\": {\n \"title\": \"Vollständiges Admin-Panel\",\n \"description\": \"Dashboards, CRUD-Seiten, Suche, Importe und Exporte — alles, was Ihr Schema unterstützt.\"\n },\n \"analytics\": {\n \"title\": \"Schreibgeschützte Analysen\",\n \"description\": \"Dashboards, Diagramme und schreibgeschützte Tabellen. Keine Formulare, keine Schreibvorgänge — jede Rolle auf Betrachter begrenzt.\"\n },\n \"crud\": {\n \"title\": \"CRUD-Tabellen\",\n \"description\": \"Eine Bearbeitungsseite pro Tabelle plus Suche und Import/Export — ein minimales Zuhause, keine Dashboards.\"\n },\n \"support\": {\n \"title\": \"Support-Konsole\",\n \"description\": \"Zuerst Warteschlangen, Ticket- und Kundendetailseiten. Löschen standardmäßig aus. (Queue-Vorlagen kommen mit M7 — der v1-Seitensatz entspricht dem vollständigen Admin.)\"\n }\n },\n \"generate\": {\n \"title\": \"Generieren Sie Ihre App\",\n \"subtitle\": \"Eine Seite pro einbezogener Tabelle plus Dashboards je Domäne — Zweck:\",\n \"run\": \"Dashboard generieren\",\n \"openApp\": \"App öffnen\",\n \"logLabel\": \"Generierungsprotokoll\",\n \"log\": {\n \"classifying\": \"Schema wird klassifiziert…\",\n \"composing\": \"Vorlagen werden zusammengestellt…\",\n \"writing\": \"Seiten werden geschrieben…\",\n \"done\": \"{pages} Seiten in {groups} Navigationsgruppen generiert\"\n },\n \"successTitle\": \"Ihr Dashboard ist bereit\",\n \"successBody\": \"{pages} Seiten in {groups} Navigationsgruppen — aus Ihrem Schema generiert, im Studio bearbeitbar.\",\n \"errorTitle\": \"Generierung fehlgeschlagen\",\n \"failed\": \"Generierung fehlgeschlagen — versuchen Sie es erneut oder führen Sie zuerst die Introspektion erneut aus.\",\n \"fileTitle\": \"Schemadatei geparst — die Generierung benötigt eine Live-Datenbank\",\n \"fileBody\": \"Ihr Schema wurde sauber geparst und die Vorschau oben ist echt. Eine laufende App direkt aus einer Schemadatei (mit Platzhalterzeilen) zu generieren ist noch nicht verfügbar — verbinden Sie eine Live-Datenbank, um heute zu generieren.\"\n },\n \"remap\": {\n \"column\": {\n \"nullable\": \"nullable\",\n \"labelOverride\": \"Anzeigebezeichnung\",\n \"labelHelper\": \"Abgeleitet: {name}\",\n \"logicalType\": \"Logischer Typ\",\n \"logicalTypeHelper\": \"Abgeleitet: {type} (aus {dbType}) — vom Adapter zugeordnet; in v1 nicht überschreibbar.\",\n \"semantic\": \"Semantischer Typ\",\n \"unclassified\": \"Noch nicht klassifiziert.\",\n \"semanticHelper\": \"Klassifizierer: {tag} · {confidence}% Konfidenz · Quelle: {source}\",\n \"semanticInferred\": \"abgeleitet: {tag}\",\n \"currency\": \"Währung\",\n \"currencyHelper\": \"ISO-4217-Code für die Formatierung von Geldbeträgen.\",\n \"pii\": \"Standardmäßig maskieren\",\n \"piiHelper\": \"Maskierte Werte werden geschwärzt dargestellt; das Aufheben der Maskierung erfordert die Berechtigung data.unmask_pii und wird im Audit-Log protokolliert.\",\n \"enum\": \"Enum-Semantik\",\n \"enumKind\": \"Enum-Art\",\n \"enumWorkflow\": \"Workflow\",\n \"enumCategory\": \"Kategorie\",\n \"enumLabelFor\": \"Bezeichnung für {value}\",\n \"enumToneFor\": \"Farbton für {value}\",\n \"enumToneAuto\": \"auto\",\n \"enumHelper\": \"Workflow-Enums steuern Status-Pills und Board-Spalten; Farbtöne ordnen Werte der semantischen Farbtonskala zu.\"\n },\n \"diff\": {\n \"one\": \"1 Änderung\",\n \"count\": \"{count} Änderungen\",\n \"saved\": \"Überschreibungen gespeichert.\",\n \"revertOne\": \"{change} verwerfen\",\n \"regenerate\": \"Seiten neu generieren\",\n \"revertAll\": \"Alle verwerfen\",\n \"save\": \"Überschreibungen speichern\"\n },\n \"table\": {\n \"iconPicker\": \"Tabellensymbol\",\n \"system\": \"System\",\n \"labelOverride\": \"Anzeigebezeichnung\",\n \"labelHelper\": \"Abgeleitet: {name}\",\n \"icon\": \"Symbol\",\n \"navGroup\": \"Navigationsgruppe\",\n \"navGroupHelper\": \"Die Platzierung in der Navigation entscheidet der Generator — eine table.navGroup-Überschreibung ist nicht Teil des v1-Vokabulars.\",\n \"include\": \"In die generierte App einbeziehen\",\n \"includeHelper\": \"Ausgeschlossene Tabellen erhalten keine Seiten und verschwinden aus der Navigation.\",\n \"shape\": \"Tabellenform (klassifiziert)\",\n \"role\": \"Rolle\",\n \"unclassified\": \"Nicht klassifiziert\",\n \"kind\": \"Art\",\n \"hierarchy\": \"Hierarchie\",\n \"selfFk\": \"Selbstreferenz über {column}\",\n \"polymorphic\": \"Polymorphe Paare\",\n \"rows\": \"Geschätzte Zeilenzahl\",\n \"shapeHelper\": \"Die Klassifikation wird bei jeder Introspektion neu berechnet; Überschreibungen liegen darüber und überstehen die Neugenerierung.\"\n },\n \"relations\": {\n \"declared\": \"Deklarierte Fremdschlüssel\",\n \"noneDeclared\": \"Keine deklarierten Fremdschlüssel berühren diese Tabelle.\",\n \"inferred\": \"Abgeleitete Beziehungen\",\n \"noneInferred\": \"Für diese Tabelle wurde nichts abgeleitet.\",\n \"confidence\": \"abgeleitet · {pct}%\",\n \"accepted\": \"Übernommen\",\n \"suppressed\": \"Unterdrückt\",\n \"accept\": \"Übernehmen\",\n \"suppress\": \"Unterdrücken\",\n \"overrides\": \"Beziehungs-Überschreibungen (angewendet)\",\n \"overrideBadge\": \"Überschreibung\",\n \"add\": \"Virtuelle Beziehung hinzufügen\",\n \"fromColumn\": \"Quellspalte\",\n \"noColumns\": \"Keine passende Spalte\",\n \"fromPlaceholder\": \"customer_id\",\n \"toTable\": \"Zieltabelle\",\n \"noTables\": \"Keine passende Tabelle\",\n \"toColumn\": \"Zielspalte\",\n \"cardinality\": \"Kardinalität\",\n \"addButton\": \"Beziehung hinzufügen\"\n },\n \"toast\": {\n \"saved\": \"Schema-Überschreibungen gespeichert\",\n \"savedDetail\": \"Das angewendete Schema unten spiegelt Ihre Änderungen wider.\",\n \"regenerated\": \"{created} erstellt · {updated} aktualisiert · {unchanged} unverändert\",\n \"regeneratedDetail\": \"Von Hand bearbeitete Seiten bleiben erhalten — nur Seiten mit unangetastetem generated_hash wurden an Ort und Stelle neu generiert.\",\n \"regenerateFailed\": \"Neugenerierung fehlgeschlagen\"\n },\n \"title\": \"Schema neu zuordnen\",\n \"subtitle\": \"{tables} Tabellen · {applied} Überschreibungen angewendet\",\n \"saveFailed\": \"Speichern fehlgeschlagen: {message}\",\n \"loadFailed\": \"Das Schema für diese Verbindung konnte nicht geladen werden.\",\n \"inspector\": \"Inspektor\",\n \"empty\": {\n \"title\": \"Wählen Sie eine Tabelle oder Spalte\",\n \"description\": \"Wählen Sie etwas im Schemabaum aus, um Bezeichnung, Typ, Beziehungen oder Maskierung neu zuzuordnen.\"\n },\n \"tabs\": {\n \"details\": \"Details\",\n \"relations\": \"Beziehungen\"\n },\n \"tree\": {\n \"label\": \"Schema\",\n \"search\": \"Tabellen und Spalten durchsuchen\",\n \"searchPlaceholder\": \"Tabellen durchsuchen…\",\n \"noMatches\": \"Keine Tabellen entsprechen Ihrer Suche.\",\n \"collapse\": \"Tabelle einklappen\",\n \"expand\": \"Tabelle ausklappen\",\n \"unsaved\": \"Ungespeicherte Änderung\",\n \"excluded\": \"Ausgeschlossen\"\n },\n \"badge\": {\n \"pk\": \"PK\",\n \"fk\": \"FK\",\n \"unique\": \"UNIQUE\",\n \"pii\": \"PII\",\n \"masked\": \"Maskiert\"\n }\n }\n },\n \"onboarding\": {\n \"title\": \"Erste Schritte\",\n \"subtitle\": \"Ein paar Schritte, um Ihren Workspace einzurichten.\",\n \"loading\": \"Setup-Checkliste wird geladen…\",\n \"welcome\": \"Willkommen bei Adminium, {name} 👋\",\n \"progressBody\": \"Sie haben {done} von {total} Einrichtungsschritten abgeschlossen. Schließen Sie die übrigen ab, um den vollen Workspace freizuschalten.\",\n \"completeBody\": \"Alles erledigt — Ihr Workspace ist vollständig eingerichtet.\",\n \"ringLabel\": \"{done} von {total} Schritten abgeschlossen\",\n \"done\": \"Erledigt\",\n \"skip\": \"Später\",\n \"goToWorkspace\": \"Zum Workspace\",\n \"help\": {\n \"title\": \"Brauchen Sie Hilfe?\",\n \"body\": \"Wir helfen Ihnen gern beim schnellen Einrichten.\"\n },\n \"steps\": {\n \"connectDatabase\": {\n \"title\": \"Datenbank verbinden\",\n \"desc\": \"Verbinden Sie Adminium mit Ihrer Postgres-, MySQL- oder SQLite-Datenbank — eine Nur-Lese-Rolle genügt.\",\n \"time\": \"5 Min.\",\n \"action\": \"Verbinden\"\n },\n \"chooseTables\": {\n \"title\": \"Tabellen auswählen\",\n \"desc\": \"Wählen Sie, welche Tabellen zu Seiten werden — PII wird standardmäßig maskiert.\",\n \"time\": \"2 Min.\",\n \"action\": \"Auswählen\"\n },\n \"inviteTeammates\": {\n \"title\": \"Teammitglieder einladen\",\n \"desc\": \"Holen Sie Ihr Team zum Erkunden und Zusammenarbeiten dazu.\",\n \"time\": \"2 Min.\",\n \"action\": \"Einladen\"\n },\n \"workspaceDefaults\": {\n \"title\": \"Workspace-Standards festlegen\",\n \"desc\": \"Design, Akzent, Dichte und Sprache für alle.\",\n \"time\": \"1 Min.\",\n \"action\": \"Festlegen\"\n }\n },\n \"entry\": {\n \"wayBack\": \"Erste Schritte · {done}/{total}\",\n \"dismiss\": \"Setup-Checkliste ausblenden\",\n \"continue\": \"Setup fortsetzen\",\n \"banner\": \"Richten Sie Ihren Workspace fertig ein — {done} von {total} Schritten erledigt.\"\n }\n },\n \"views\": {\n \"baseView\": \"Alle Datensätze\",\n \"menuLabel\": \"Gespeicherte Ansichten\",\n \"saveAs\": \"Aktuelle als Ansicht speichern…\",\n \"updateActive\": \"„{name}“ aktualisieren\",\n \"rename\": \"Umbenennen…\",\n \"setDefault\": \"Als Standard festlegen\",\n \"delete\": \"Löschen…\",\n \"saveTitle\": \"Ansicht speichern\",\n \"save\": \"Ansicht speichern\",\n \"renameTitle\": \"Ansicht umbenennen\",\n \"saveName\": \"Namen speichern\",\n \"nameLabel\": \"Ansichtsname\",\n \"namePlaceholder\": \"z. B. Diesen Monat aktiv\",\n \"nameRequired\": \"Geben Sie einen Namen für diese Ansicht ein.\",\n \"saveFailed\": \"Ansicht konnte nicht gespeichert werden.\",\n \"deleteTitle\": \"Ansicht löschen\",\n \"deleteBody\": \"Dies entfernt die gespeicherte Ansicht. Ihre Daten sind nicht betroffen.\",\n \"deletePrompt\": \"Zum Bestätigen den Ansichtsnamen eingeben\",\n \"deleteConfirm\": \"Ansicht löschen\",\n \"savedToast\": \"Ansicht „{name}“ gespeichert.\",\n \"updatedToast\": \"Ansicht „{name}“ aktualisiert.\",\n \"defaultToast\": \"„{name}“ ist jetzt die Standardansicht.\",\n \"deletedToast\": \"Ansicht „{name}“ gelöscht.\"\n },\n \"builder\": {\n \"view\": \"Ansicht\",\n \"edit\": \"Bearbeiten\",\n \"done\": \"Fertig\",\n \"addWidget\": \"Widget hinzufügen\",\n \"saveLayout\": \"Layout speichern\",\n \"saving\": \"Wird gespeichert …\",\n \"savedShort\": \"Gespeichert\",\n \"options\": \"Dashboard-Optionen\",\n \"resetLayout\": \"Layout zurücksetzen\",\n \"resetTitle\": \"Auf das geteilte Layout zurücksetzen?\",\n \"resetBody\": \"Dadurch werden deine persönlichen Änderungen entfernt und das Dashboard wiederhergestellt, das alle sehen. Deine Daten sind nicht betroffen.\",\n \"resetConfirm\": \"Layout zurücksetzen\",\n \"resetDone\": \"Layout auf die geteilte Standardansicht zurückgesetzt.\",\n \"sharedNote\": \"Du bearbeitest das geteilte Dashboard, das alle sehen.\",\n \"personalNote\": \"Du bearbeitest dein persönliches Layout – nur du siehst diese Änderungen.\",\n \"savedShared\": \"Dashboard für alle mit Zugriff gespeichert.\",\n \"empty\": \"Dieses Dashboard enthält noch keine Widgets.\",\n \"emptyAction\": \"Widget hinzufügen\",\n \"palette\": {\n \"title\": \"Widget hinzufügen\",\n \"count\": \"{count} Widgets\",\n \"searchLabel\": \"Widgets durchsuchen\",\n \"searchPlaceholder\": \"Widgets durchsuchen …\",\n \"clear\": \"Suche löschen\",\n \"noResults\": \"Keine Widgets passen zu „{query}“.\",\n \"add\": \"{name} hinzufügen\",\n \"added\": \"{name} hinzugefügt.\"\n },\n \"inspector\": {\n \"title\": \"Widget konfigurieren\",\n \"empty\": \"Dieses Widget hat keine konfigurierbaren Optionen.\",\n \"locked\": \"Gesperrt\",\n \"lockedHint\": \"Dieses Feld wird von der Quelle festgelegt und kann hier nicht bearbeitet werden.\",\n \"selectPlaceholder\": \"Auswählen …\",\n \"increment\": \"Erhöhen\",\n \"decrement\": \"Verringern\",\n \"done\": \"Fertig\"\n },\n \"item\": {\n \"configure\": \"{name} konfigurieren\",\n \"duplicate\": \"{name} duplizieren\",\n \"remove\": \"{name} entfernen\",\n \"removed\": \"{name} entfernt.\",\n \"duplicated\": \"{name} dupliziert.\"\n },\n \"families\": {\n \"kpi\": \"KPIs\",\n \"charts\": \"Diagramme\",\n \"tables\": \"Tabellen\",\n \"feeds\": \"Feeds\",\n \"calendar\": \"Kalender\",\n \"boards\": \"Boards\",\n \"geo\": \"Karten\",\n \"media\": \"Medien\",\n \"communication\": \"Kommunikation\",\n \"forms\": \"Formulare\",\n \"chrome\": \"Navigation\",\n \"system\": \"System\",\n \"domain\": \"Domäne\"\n },\n \"versions\": \"Versionen\",\n \"versionsEmpty\": \"Noch keine gespeicherten Versionen\",\n \"saveAsVersion\": \"Als Version speichern\",\n \"saveVersionTitle\": \"Version speichern\",\n \"saveVersionBody\": \"Erstellt einen Schnappschuss des aktuellen Dokuments. Über „Versionen“ jederzeit wiederherstellbar.\",\n \"versionName\": \"Versionsname\",\n \"versionNamePlaceholder\": \"z. B. Vor der Q3-Preisänderung\"\n },\n \"setup\": {\n \"title\": \"Adminium einrichten\",\n \"subtitle\": \"Legen Sie den ersten Administrator an. Das geschieht nur einmal.\",\n \"progress\": \"Einrichtungsfortschritt\",\n \"steps\": {\n \"account\": \"Administratorkonto\",\n \"consent\": \"Datenschutz\"\n },\n \"account\": {\n \"name\": \"Ihr Name\",\n \"email\": \"E-Mail\",\n \"emailInvalid\": \"Geben Sie eine gültige E-Mail-Adresse ein.\",\n \"password\": \"Passwort\",\n \"passwordHelper\": \"Mindestens {min} Zeichen.\",\n \"passwordTooShort\": \"Verwenden Sie mindestens {min} Zeichen.\",\n \"confirm\": \"Passwort bestätigen\",\n \"passwordMismatch\": \"Die Passwörter stimmen nicht überein.\",\n \"continue\": \"Weiter\",\n \"strength\": \"Passwortstärke\",\n \"strengthLevels\": {\n \"weak\": \"Schwach\",\n \"fair\": \"Mittel\",\n \"good\": \"Gut\",\n \"strong\": \"Stark\"\n }\n },\n \"consent\": {\n \"telemetry\": {\n \"title\": \"Anonyme Nutzungsdaten teilen\",\n \"description\": \"Hilft uns zu erkennen, welche Datenbank-Engines Priorität haben. Standardmäßig aus, bis Sie es aktivieren.\"\n },\n \"updates\": {\n \"title\": \"Nach neuen Versionen suchen\",\n \"description\": \"Zeigt einen Hinweis, wenn eine neue Version — auch ein Sicherheitsfix — verfügbar ist. Dabei wird GitHub nach dem neuesten Release gefragt, wodurch GitHub die IP-Adresse und Version dieser Instanz erfährt. Mehr wird nicht gesendet.\"\n },\n \"sentTitle\": \"Genau das wird gesendet:\",\n \"sent\": {\n \"instanceId\": \"Eine zufällige Instanz-ID (eine hier erzeugte UUID; nicht aus Ihrem Namen, Host oder Ihrer Datenbank abgeleitet)\",\n \"version\": \"Die Adminium-Version dieser Instanz\",\n \"engines\": \"Welche Datenbank-Engine-Typen verbunden sind (z. B. „postgres“) — nur die Typen\"\n },\n \"neverTitle\": \"Wird niemals gesendet:\",\n \"never\": {\n \"schema\": \"Ihr Schema — keine Tabellen-, Spalten- oder Enum-Namen\",\n \"rows\": \"Ihre Daten — niemals auch nur eine Zeile\",\n \"connections\": \"Verbindungszeichenfolgen, Hostnamen oder Zugangsdaten\",\n \"people\": \"E-Mail-Adressen, Namen oder IDs von Benutzern\",\n \"llm\": \"KI-Prompts oder Lauf-Inhalte\"\n },\n \"reversible\": \"Beides ist standardmäßig aus und lässt sich später jederzeit in den Einstellungen ändern.\",\n \"back\": \"Zurück\",\n \"finish\": \"Administratorkonto anlegen\"\n },\n \"error\": {\n \"alreadyCompleted\": \"Diese Instanz wurde bereits eingerichtet. Melden Sie sich mit dem vorhandenen Administratorkonto an.\",\n \"rejected\": \"Der Server hat diese Angaben abgelehnt. Prüfen Sie E-Mail und Passwort und versuchen Sie es erneut.\",\n \"failed\": \"Einrichtung fehlgeschlagen. Prüfen Sie Ihre Verbindung und versuchen Sie es erneut.\"\n }\n },\n \"about\": {\n \"title\": \"Über Adminium\",\n \"subtitle\": \"Version, Lizenz und wo der Quellcode dieser Instanz liegt.\",\n \"version\": \"Version\",\n \"license\": \"Lizenz\",\n \"metaStore\": \"Meta-Speicher\",\n \"node\": \"Node.js\",\n \"engine\": {\n \"postgres\": \"PostgreSQL\",\n \"mysql\": \"MySQL / MariaDB\",\n \"sqlite\": \"SQLite\"\n },\n \"licenseCard\": {\n \"title\": \"Frei und quelloffen\",\n \"body\": \"Adminium steht unter der GNU Affero General Public License v3.0. Sie dürfen es ausführen, untersuchen, verändern und weitergeben. Wenn Sie eine veränderte Fassung anderen über ein Netzwerk anbieten, verlangt die AGPL, dass Sie ihnen auch deren Quellcode anbieten.\"\n },\n \"viewLicense\": \"Lizenz lesen\",\n \"viewSource\": \"Quellcode herunterladen\",\n \"updates\": {\n \"title\": \"Aktualisierungen\",\n \"description\": \"Ob diese Instanz nach neuen Versionen sucht.\"\n },\n \"update\": {\n \"disabled\": \"Die Update-Prüfung ist aus, daher kontaktiert diese Instanz GitHub nie. Aktivieren Sie sie in den Einstellungen, um von neuen Versionen zu erfahren.\",\n \"current\": \"Sie nutzen die neueste Version.\",\n \"available\": \"Adminium {version} ist verfügbar\",\n \"availableBody\": \"Sie nutzen derzeit {version}.\",\n \"viewRelease\": \"Release-Notes ansehen\"\n },\n \"desktop\": {\n \"unknown\": \"Unbekannt\",\n \"appVersion\": \"App-Version\",\n \"serverVersion\": \"Server-Version\",\n \"migration\": \"Meta-Store-Migration\",\n \"electron\": \"Electron\",\n \"chromium\": \"Chromium\",\n \"runtimeNode\": \"Node-Laufzeit\",\n \"system\": {\n \"title\": \"System\"\n },\n \"dataDir\": \"Datenverzeichnis\",\n \"reveal\": \"Im Ordner anzeigen\",\n \"secret\": {\n \"title\": \"Geheimnisspeicher\",\n \"safe\": \"Von Ihrem Betriebssystem verschlüsselt\",\n \"plainWarning\": \"Auf diesem Computer ist kein System-Schlüsselbund verfügbar, daher wird Ihr Adminium-Geheimnis unverschlüsselt auf der Festplatte gespeichert. Jeder, der die Dateien dieses Rechners lesen kann, kann es lesen. Richten Sie einen Anmelde-Schlüsselbund (oder einen Linux-Secret-Service) ein und starten Sie Adminium neu, um es zu schützen.\"\n },\n \"updates\": {\n \"title\": \"Updates\",\n \"mode\": {\n \"notify\": \"Über neue Versionen benachrichtigen\",\n \"manual\": \"Nur wenn ich prüfe\",\n \"disabled\": \"Aus (offline)\"\n },\n \"disabledBody\": \"Automatische Updates sind aus (offline). Installieren Sie neue Versionen manuell.\",\n \"check\": \"Nach Updates suchen\",\n \"checking\": \"Wird geprüft…\",\n \"lastChecked\": \"Zuletzt geprüft {when}\",\n \"available\": \"Version {version} ist verfügbar\",\n \"none\": \"Sie verwenden die neueste Version.\",\n \"unavailable\": \"Updates sind in dieser Installation deaktiviert.\",\n \"error\": \"Nach Updates konnte nicht gesucht werden.\",\n \"download\": \"Update herunterladen\",\n \"downloading\": \"Wird heruntergeladen… {percent} %\",\n \"downloaded\": \"Version {version} ist installationsbereit\",\n \"restart\": \"Zum Installieren neu starten\",\n \"downloadError\": \"Der Download wurde nicht abgeschlossen. Sie können es erneut versuchen.\",\n \"toast\": {\n \"available\": \"Eine neue Version von Adminium ist verfügbar\",\n \"view\": \"Anzeigen\",\n \"downloaded\": \"Update installationsbereit\",\n \"restart\": \"Jetzt neu starten\"\n }\n },\n \"legal\": {\n \"title\": \"Lizenzen\",\n \"agpl\": \"Adminium Desktop ist freie Software unter der GNU Affero General Public License v3.0.\",\n \"viewLicense\": \"Lizenz anzeigen\",\n \"licenseTitle\": \"GNU Affero General Public License v3.0\",\n \"licenseUnavailable\": \"Die mitgelieferte Lizenzdatei ist in diesem Build nicht verfügbar.\",\n \"viewNotices\": \"Drittanbieter-Lizenzen\",\n \"noticesTitle\": \"Drittanbieter-Hinweise\",\n \"noticesUnavailable\": \"Drittanbieter-Hinweise werden beim Paketieren der App erzeugt und sind in diesem Build nicht verfügbar.\",\n \"source\": \"Quellcode\",\n \"close\": \"Schließen\"\n },\n \"telemetry\": {\n \"title\": \"Anonyme Nutzungsdaten\",\n \"label\": \"Anonyme Nutzungsdaten teilen\",\n \"description\": \"Hilft uns zu entscheiden, welche Datenbank-Engines wir priorisieren. Aus, sofern Sie es nicht aktivieren; es werden niemals Schema, Daten oder personenbezogene Informationen gesendet.\",\n \"saveFailed\": \"Diese Einstellung konnte nicht gespeichert werden. Bitte erneut versuchen.\"\n },\n \"diagnostics\": {\n \"title\": \"Diagnose\",\n \"description\": \"Details, die bei einer Problemmeldung helfen. Kein Schema und keine Daten sind enthalten.\",\n \"copy\": \"Diagnoseinfo kopieren\",\n \"copied\": \"Kopiert\",\n \"showLogs\": \"Protokolle anzeigen\",\n \"dataSize\": \"Datengröße: {size}\"\n }\n }\n },\n \"apiKeys\": {\n \"title\": \"API-Schlüssel & Tokens\",\n \"subtitle\": \"Programmatischen Zugriff auf Ihren Workspace verwalten.\",\n \"createButton\": \"Schlüssel erstellen\",\n \"copy\": \"Kopieren\",\n \"copied\": \"Kopiert\",\n \"revoke\": \"Schlüssel widerrufen\",\n \"neverUsed\": \"Nie verwendet\",\n \"lastUsed\": \"Zuletzt verwendet {since}\",\n \"scopesOverflow\": \"+{count} weitere\",\n \"status\": {\n \"active\": \"Aktiv\",\n \"revoked\": \"Widerrufen\",\n \"expired\": \"Abgelaufen\"\n },\n \"list\": {\n \"title\": \"Schlüssel\",\n \"activeCount\": \"{count, plural, one {# aktiver Schlüssel} other {# aktive Schlüssel}}\"\n },\n \"empty\": {\n \"title\": \"Noch keine API-Schlüssel\",\n \"body\": \"Erstellen Sie einen, um die Adminium-API aus eigenem Code aufzurufen.\"\n },\n \"revealed\": {\n \"title\": \"Neuer Schlüssel erstellt\",\n \"body\": \"Kopieren Sie ihn jetzt — Sie werden ihn nie wieder sehen können.\"\n },\n \"rolesUnavailable\": {\n \"title\": \"Rollen sind für Sie nicht sichtbar\",\n \"body\": \"Einen Schlüssel zu erstellen heißt, die Rolle zu wählen, mit der er handelt — und Ihr Konto darf die Rollenliste nicht lesen. Bitten Sie eine Administratorin um die Berechtigung „Rollen verwalten“.\"\n },\n \"quickStart\": {\n \"title\": \"Schnellstart\",\n \"body\": \"Authentifizieren Sie Anfragen mit Ihrem Schlüssel im Authorization-Header.\"\n },\n \"create\": {\n \"title\": \"API-Schlüssel erstellen\",\n \"description\": \"Der Schlüssel handelt mit den Berechtigungen der gewählten Rolle.\",\n \"name\": \"Name\",\n \"namePlaceholder\": \"z. B. Analytics-Pipeline\",\n \"role\": \"Rolle\",\n \"roleHelper\": \"Wählen Sie die Rolle mit den geringsten Rechten, die ausreicht.\",\n \"expires\": \"Läuft ab\",\n \"expiresHelper\": \"Leer lassen für einen Schlüssel, der nie abläuft.\",\n \"submit\": \"Schlüssel erstellen\",\n \"failed\": \"Schlüssel konnte nicht erstellt werden\"\n },\n \"revokeConfirm\": {\n \"title\": \"API-Schlüssel widerrufen\",\n \"body\": \"Jeder Code, der die API noch mit „{name}“ aufruft, schlägt ab sofort fehl. Das lässt sich nicht rückgängig machen.\",\n \"prompt\": \"Geben Sie „{name}“ ein, um zu bestätigen\",\n \"confirm\": \"Schlüssel widerrufen\"\n }\n },\n \"changelog\": {\n \"title\": \"Änderungsprotokoll\",\n \"subtitle\": \"Produkt-Updates & Releases.\",\n \"allReleases\": \"Alle Releases\",\n \"tag\": {\n \"new\": \"Neu\",\n \"improved\": \"Verbessert\",\n \"fixed\": \"Behoben\",\n \"security\": \"Sicherheit\"\n },\n \"filter\": {\n \"all\": \"Alle\",\n \"label\": \"Änderungen nach Typ filtern\"\n },\n \"empty\": {\n \"title\": \"Nichts unter diesem Filter\",\n \"body\": \"Bisher enthielt kein Release eine Änderung dieser Art.\",\n \"clear\": \"Alle Änderungen anzeigen\"\n }\n },\n \"kb\": {\n \"title\": \"Wissensdatenbank\",\n \"subtitle\": \"{count, plural, one {# Anleitung} other {# Anleitungen}} · vollständige Doku unter docs.adminium.dev\",\n \"openDocs\": \"Doku öffnen\",\n \"browse\": \"Nach Thema stöbern\",\n \"hero\": {\n \"title\": \"Wie können wir helfen?\",\n \"subtitle\": \"Anleitungen, API-Doku und Fehlerbehebung durchsuchen.\",\n \"placeholder\": \"Wissensdatenbank durchsuchen…\",\n \"label\": \"Wissensdatenbank durchsuchen\",\n \"clear\": \"Suche leeren\"\n },\n \"category\": {\n \"start\": \"Erste Schritte\",\n \"connect\": \"Daten verbinden\",\n \"api\": \"API & Entwicklung\",\n \"security\": \"Sicherheit & Zugriff\",\n \"selfhost\": \"Self-Hosting\",\n \"trouble\": \"Fehlerbehebung\",\n \"count\": \"{count, plural, one {# Artikel} other {# Artikel}}\",\n \"selected\": \"Gefiltert\"\n },\n \"list\": {\n \"all\": \"Alle Anleitungen\",\n \"clear\": \"Filter zurücksetzen\"\n },\n \"empty\": {\n \"title\": \"Keine Anleitung passt zu Ihrer Suche\",\n \"body\": \"Versuchen Sie ein anderes Wort oder durchsuchen Sie die vollständige Dokumentation auf docs.adminium.dev.\",\n \"openDocs\": \"Doku öffnen\"\n },\n \"article\": {\n \"install\": {\n \"title\": \"Adminium installieren\",\n \"excerpt\": \"Aus einem Quell-Checkout oder per docker run starten und in einer Minute beim Ersteinrichtungs-Assistenten sein.\"\n },\n \"firstAdmin\": {\n \"title\": \"Ersten Super-Admin anlegen\",\n \"excerpt\": \"Was der Ersteinrichtungs-Assistent abfragt und warum er nur einmal laufen kann.\"\n },\n \"connectDb\": {\n \"title\": \"Ihre erste Datenbank verbinden\",\n \"excerpt\": \"Adminium auf PostgreSQL, MySQL oder SQLite richten und eine Admin-App generieren.\"\n },\n \"schemaFile\": {\n \"title\": \"Aus einer Schemadatei generieren\",\n \"excerpt\": \"Ein Prisma-Schema, eine Django-models.py, eine Rails-schema.rb oder einen .sql-Dump hochladen — ganz ohne Verbindung.\"\n },\n \"readOnly\": {\n \"title\": \"Eine Nur-Lese-Rolle verwenden\",\n \"excerpt\": \"Die Introspektion liest nur Schema-Metadaten. Geben Sie Adminium so wenig Rechte wie möglich.\"\n },\n \"apiKeys\": {\n \"title\": \"Authentifizierung mit API-Schlüsseln\",\n \"excerpt\": \"Schlüssel erstellen und widerrufen — und warum ein Schlüssel Ihnen nur ein einziges Mal gezeigt wird.\"\n },\n \"rest\": {\n \"title\": \"REST-API-Referenz\",\n \"excerpt\": \"Jeder Endpunkt der generierten App, mit Request- und Response-Formaten.\"\n },\n \"manifest\": {\n \"title\": \"Das Seiten-Manifest\",\n \"excerpt\": \"Wie eine Seite als Konfiguration beschrieben wird und wie Sie eine von Hand bearbeiten.\"\n },\n \"roles\": {\n \"title\": \"Rollen & Berechtigungen\",\n \"excerpt\": \"Viewer, Editor und Admin vergeben — und eigene Rollen aus der Berechtigungsmatrix bauen.\"\n },\n \"audit\": {\n \"title\": \"Das Audit-Log lesen\",\n \"excerpt\": \"Wer hat was geändert, wann und von wo.\"\n },\n \"secrets\": {\n \"title\": \"Wie Adminium Ihre Geheimnisse speichert\",\n \"excerpt\": \"Verbindungsdaten werden mit ADMINIUM_SECRET verschlüsselt gespeichert. API-Schlüssel werden gehasht.\"\n },\n \"docker\": {\n \"title\": \"Self-Hosting mit Docker\",\n \"excerpt\": \"Das offizielle Image, docker-compose und der Betrieb einer separaten Meta-Datenbank.\"\n },\n \"backup\": {\n \"title\": \"Eine Instanz sichern und umziehen\",\n \"excerpt\": \"export-zip bündelt Ihre Serverkonfiguration; beim Import wird dieselbe Einrichtung andernorts nachgespielt.\"\n },\n \"telemetry\": {\n \"title\": \"Telemetrie und Update-Prüfungen\",\n \"excerpt\": \"Beides ist opt-in und standardmäßig aus. Was gesendet wird, wenn Sie es einschalten.\"\n },\n \"connectionFails\": {\n \"title\": \"Eine Datenbankverbindung schlägt fehl\",\n \"excerpt\": \"Lesen Sie die Diagnosekarte: Host, Port, TLS — und die IP, die Ihre Datenbank zulassen muss.\"\n },\n \"missingTables\": {\n \"title\": \"Nach der Introspektion fehlen Tabellen\",\n \"excerpt\": \"Schema-Sichtbarkeit, ausgeschlossene Tabellen und ein erneuter Generierungslauf.\"\n }\n }\n },\n \"desktop\": {\n \"menu\": {\n \"file\": \"Datei\",\n \"fileNewDatabase\": \"Neue lokale Datenbank…\",\n \"fileOpenSqlite\": \"SQLite-Datei öffnen…\",\n \"fileBackupNow\": \"Jetzt sichern…\",\n \"fileRestore\": \"Aus Sicherung wiederherstellen…\",\n \"edit\": \"Bearbeiten\",\n \"view\": \"Ansicht\",\n \"window\": \"Fenster\",\n \"help\": \"Hilfe\",\n \"helpDocs\": \"Adminium-Dokumentation\",\n \"helpShortcuts\": \"Tastaturkürzel\",\n \"helpLogs\": \"Protokolle anzeigen\",\n \"helpCheckForUpdates\": \"Nach Updates suchen…\",\n \"helpAbout\": \"Über Adminium\"\n },\n \"settings\": {\n \"explainer\": \"Diese Einstellungen gelten nur für die Adminium-App auf diesem Computer. Sie werden auf diesem Gerät gespeichert, nicht in Ihrem Workspace.\"\n },\n \"security\": {\n \"heading\": \"Anmeldung\"\n },\n \"requireLogin\": {\n \"label\": \"Anmeldung auf diesem Gerät verlangen\",\n \"description\": \"Adminium meldet Sie auf diesem Computer normalerweise automatisch an. Aktivieren Sie diese Option, um bei jedem Start nach Ihrem Passwort zu fragen — sinnvoll, wenn andere Personen diesen Computer nutzen können. Die Änderung gilt ab dem nächsten Start von Adminium.\",\n \"savedOn\": \"Beim nächsten Start ist eine Anmeldung erforderlich\",\n \"savedOff\": \"Adminium überspringt die Anmeldung auf diesem Computer\",\n \"saveFailed\": \"Einstellung konnte nicht gespeichert werden. Bitte erneut versuchen.\"\n },\n \"chip\": {\n \"local\": \"Lokal\",\n \"lanShare\": \"Lokal · Im Netzwerk freigegeben\",\n \"remoteDb\": \"Lokal + Remote-Datenbank\",\n \"remoteDbOffline\": \"Remote-Datenbank offline\",\n \"remoteDbOfflineDetail\": \"{names} ist nicht erreichbar. Seiten dieser Verbindungen zeigen einen Wiederverbindungs-Status.\"\n },\n \"lan\": {\n \"heading\": \"Im lokalen Netzwerk freigeben\",\n \"label\": \"Anderen Geräten in diesem Netzwerk die Nutzung von Adminium erlauben\",\n \"description\": \"Andere Computer, Tablets und Telefone im selben Netzwerk können Adminium im Browser öffnen und sich mit ihrem eigenen Konto anmelden. Adminium muss auf diesem Computer geöffnet bleiben, damit sie es erreichen.\",\n \"savedOn\": \"Im lokalen Netzwerk freigegeben\",\n \"savedOff\": \"Freigabe beendet — Adminium läuft wieder nur auf diesem Computer\",\n \"saveFailed\": \"Netzwerkfreigabe konnte nicht geändert werden\",\n \"noUsers\": \"Sie sind die einzige Person mit einem Konto, deshalb kann sich sonst noch niemand anmelden. Die Freigabe funktioniert trotzdem — Sie müssen nur Personen einladen, bevor sie sie nutzen können.\",\n \"usersUnknown\": \"Adminium konnte nicht prüfen, wer sonst noch ein Konto auf diesem Computer hat. Die Freigabe funktioniert weiterhin, und jede Person mit einem Konto kann sich anmelden — nur diese Prüfung ist fehlgeschlagen.\",\n \"acknowledge\": \"Verstanden — ich lade als Nächstes Personen ein\",\n \"port\": \"Port\",\n \"portHelper\": \"Standard {port}\",\n \"portInvalid\": \"Verwenden Sie eine Zahl zwischen 1024 und 65535.\",\n \"applyPort\": \"Port ändern\",\n \"portInUse\": \"Port {port} wird bereits von einem anderen Programm verwendet.\",\n \"portInUseHint\": \"Es wurde nichts geändert — die Freigabe ist weiterhin aus.\",\n \"portInUseNoSuggestion\": \"Es wurde nichts geändert. Versuchen Sie einen anderen Port.\",\n \"tryPort\": \"{port} versuchen\",\n \"urlsHeading\": \"Auf einem anderen Gerät öffnen\",\n \"noUrls\": \"Dieser Computer ist gerade mit keinem Netzwerk verbunden, deshalb gibt es keine Adresse zum Teilen. Verbinden Sie sich mit dem WLAN oder stecken Sie ein Kabel ein, dann füllt sich diese Liste.\",\n \"copyUrl\": \"Kopieren\",\n \"sessions\": \"{count, plural, =0 {Keine Geräte aus diesem Netzwerk angemeldet} one {# Gerät aus diesem Netzwerk angemeldet} other {# Geräte aus diesem Netzwerk angemeldet}}\",\n \"sessionsUnknown\": \"Verbundene Geräte werden geprüft…\",\n \"pending\": \"Freigabe wird gestartet…\",\n \"mismatch\": \"Adminium ist in diesem Netzwerk weiterhin erreichbar\",\n \"mismatchBody\": \"Die Freigabe ist ausgeschaltet, aber der Server hat das Netzwerk noch nicht freigegeben. Starten Sie Adminium neu, um sie zu schließen.\",\n \"transportTitle\": \"Der Datenverkehr in Ihrem lokalen Netzwerk ist nicht verschlüsselt.\",\n \"transportBody\": \"Geben Sie nur in Netzwerken frei, denen Sie vertrauen. Nutzen Sie für den Fernzugriff Adminium self-host hinter HTTPS.\",\n \"firewall\": \"Beim ersten Freigeben fragt Ihr Betriebssystem, ob eingehende Verbindungen erlaubt werden sollen — wählen Sie Zulassen, sonst können andere Geräte Adminium nicht erreichen.\"\n },\n \"setup\": {\n \"title\": \"Willkommen bei Adminium\",\n \"subtitle\": \"Vier kurze Schritte und Adminium hat aus Ihrer Datenbank eine Admin-App gebaut. Alles bleibt auf diesem Computer.\",\n \"progress\": \"Einrichtungsfortschritt\",\n \"back\": \"Zurück\",\n \"continue\": \"Weiter\",\n \"createAccount\": \"Konto erstellen und fortfahren\",\n \"step\": {\n \"location\": \"Willkommen\",\n \"database\": \"Ihre erste Datenbank\",\n \"account\": \"Ihr Konto\",\n \"generate\": \"Generieren\"\n },\n \"dataDir\": {\n \"heading\": \"Wo soll Adminium Ihre Daten speichern?\",\n \"description\": \"Ihre Datenbanken, Einstellungen und Backups liegen alle in diesem Ordner. Alles bleibt auf diesem Computer — nichts wird irgendwohin hochgeladen.\",\n \"label\": \"Datenordner\",\n \"loading\": \"Aktueller Speicherort wird gelesen…\",\n \"pending\": \"Adminium startet beim Fortfahren neu, um in diesen Ordner zu wechseln.\",\n \"change\": \"Ändern…\",\n \"revert\": \"Rückgängig\",\n \"dialogTitle\": \"Wählen Sie, wo Adminium Ihre Daten speichert\",\n \"cloudSyncTitle\": \"Dieser Ordner wird mit der Cloud synchronisiert\",\n \"cloudSyncWarning\": \"Adminium speichert seine Daten in SQLite-Dateien. {provider} synchronisiert Dateien in „{folder}“, indem es sie im Hintergrund kopiert — das kann eine geöffnete Datenbank beschädigen und ohne Warnung Daten vernichten. Wählen Sie einen Ordner außerhalb von {provider}.\",\n \"chooseAnother\": \"Anderen Ordner wählen\",\n \"useAnyway\": \"Trotzdem verwenden — ich akzeptiere das Risiko\",\n \"unusableTitle\": \"Adminium kann diesen Ordner nicht verwenden\",\n \"failed\": \"Adminium konnte diesen Ordner nicht verwenden.\"\n },\n \"source\": {\n \"heading\": \"Woraus soll Adminium bauen?\",\n \"description\": \"Adminium liest das Schema einer Datenbank und generiert daraus eine Admin-App. Weitere Datenbanken können Sie später hinzufügen.\",\n \"groupLabel\": \"Datenbankquelle\",\n \"local\": {\n \"title\": \"Neue lokale Datenbank erstellen\",\n \"description\": \"Beginnen Sie bei null oder mit einer Schemadatei, die Sie bereits haben. Die Datenbank wird in Ihrem Datenordner angelegt.\",\n \"name\": \"Datenbankname\",\n \"namePlaceholder\": \"Betrieb\",\n \"nameUnusable\": \"Verwenden Sie mindestens einen Buchstaben oder eine Ziffer — daraus wird der Dateiname gebildet.\",\n \"fileHelper\": \"Erstellt {file}\",\n \"schemaLabel\": \"Beginnen mit\",\n \"blank\": \"Leer\",\n \"fromFile\": \"Einer Schemadatei\",\n \"schemaFile\": \"Schemadatei\",\n \"schemaFileHelper\": \".sql, pg_dump, Prisma, Drizzle, TypeORM, Sequelize, schema.rb, Django oder Adminium-JSON. Adminium übersetzt es nach SQLite.\",\n \"placeholder\": \"Platzhaltereinträge automatisch erzeugen\",\n \"placeholderHelper\": \"Sie haben ein Schema ohne Zeilen importiert. Befüllen Sie jede Tabelle mit realistischen Beispieldaten, damit Ihre Dashboards und Diagramme sofort etwas anzeigen.\"\n },\n \"openSqlite\": {\n \"title\": \"Vorhandene SQLite-Datei öffnen\",\n \"description\": \"Richten Sie Adminium auf eine .sqlite-Datei auf diesem Computer. Sie wird dort geöffnet, wo sie liegt — nichts wird kopiert oder verschoben.\",\n \"browse\": \".sqlite-Datei auswählen…\",\n \"change\": \"Andere Datei auswählen…\",\n \"networkTitle\": \"Diese Datei liegt auf einer Netzwerkfreigabe\",\n \"networkBody\": \"Die Sperrmechanik von SQLite ist über Netzwerkfreigaben unzuverlässig, und eine abbrechende Verbindung mitten im Schreibvorgang kann die Datenbank beschädigen. Eine Kopie auf der lokalen Festplatte dieses Computers ist sicherer.\"\n },\n \"remote\": {\n \"title\": \"Mit einer Server-Datenbank verbinden\",\n \"description\": \"PostgreSQL oder MySQL. Erfordert eine erreichbare Netzwerkdatenbank; Adminiums eigene Tabellen bleiben trotzdem auf diesem Computer.\",\n \"networkNote\": \"Erfordert eine erreichbare Netzwerkdatenbank\",\n \"metaNote\": \"Adminiums eigene Tabellen — Ihre Seiten, Einstellungen und Anmeldung — bleiben in jedem Fall im Datenordner auf diesem Computer.\",\n \"engine\": \"Engine\",\n \"name\": \"Verbindungsname\",\n \"namePlaceholder\": \"Produktion\",\n \"dsn\": \"Verbindungszeichenfolge\",\n \"dsnHelper\": \"Adminium testet dies beim Verbinden. Verwenden Sie eine Nur-Lese-Rolle, wenn Sie nur Dashboards möchten.\"\n },\n \"demo\": {\n \"title\": \"Demo-Datenbank erkunden\",\n \"description\": \"Eine fertige Team-Betriebsdatenbank, damit Sie sehen, was Adminium baut, bevor Sie es auf Ihre eigenen Daten richten. Löschen Sie sie, wann immer Sie möchten.\",\n \"unavailable\": \"Dieses Build enthält die Demodaten nicht, es gibt also nichts zu laden. Wählen Sie eine der Optionen oben.\"\n }\n },\n \"account\": {\n \"heading\": \"Konto erstellen\",\n \"description\": \"Dies ist das Administratorkonto für diese Adminium-Installation. Das Passwort schützt Ihre Backups und alle, mit denen Sie im Netzwerk teilen — bei jedem Start wird es nicht abgefragt.\",\n \"name\": \"Ihr Name\",\n \"email\": \"E-Mail\",\n \"password\": \"Passwort\",\n \"passwordHelper\": \"Mindestens {min} Zeichen.\",\n \"confirm\": \"Passwort bestätigen\",\n \"strength\": \"Passwortstärke\",\n \"strengthLevels\": {\n \"weak\": \"Schwach\",\n \"fair\": \"Mittel\",\n \"good\": \"Gut\",\n \"strong\": \"Stark\"\n },\n \"singleUser\": \"Anmeldung auf diesem Computer überspringen\",\n \"singleUserHelper\": \"Adminium meldet Sie hier automatisch an. Schalten Sie dies aus, wenn andere Personen diesen Computer nutzen. Sie können es später unter Einstellungen → Desktop ändern.\",\n \"locale\": \"Sprache\",\n \"theme\": \"Darstellung\",\n \"alreadyExists\": \"Diese Adminium-Installation hat bereits ein Konto. Melden Sie sich stattdessen damit an.\",\n \"failed\": \"Adminium konnte dieses Konto nicht erstellen.\"\n },\n \"generate\": {\n \"creating\": \"Ihre Datenbank wird eingerichtet…\",\n \"introspecting\": \"Ihr Schema wird gelesen — Tabellen, Spalten und Beziehungen…\",\n \"working\": \"Wird ausgeführt…\",\n \"offlineNote\": \"All dies geschieht auf diesem Computer.\",\n \"failedTitle\": \"Adminium konnte diese Datenbank nicht einrichten\",\n \"failedBody\": \"Etwas ist schiefgelaufen. Versuchen Sie es erneut.\",\n \"retry\": \"Erneut versuchen\"\n }\n }\n },\n \"capabilities\": {\n \"heading\": \"App-Berechtigungen\",\n \"description\": \"Von Ihnen installierte Apps können den Zugriff auf die Hardware dieses Computers anfordern. Sie genehmigen jede einzeln und können den Zugriff jederzeit widerrufen.\",\n \"grantedTo\": \"Erlaubt für {app}\",\n \"status\": {\n \"available\": \"Verfügbar\",\n \"stub\": \"Noch nicht verfügbar\",\n \"unavailable\": \"Nicht verfügbar\"\n },\n \"allow\": {\n \"action\": \"Erlauben…\"\n },\n \"revoke\": {\n \"action\": \"Widerrufen\",\n \"saved\": \"Zugriff widerrufen\",\n \"failed\": \"Zugriff konnte nicht widerrufen werden. Bitte erneut versuchen.\"\n },\n \"grant\": {\n \"saved\": \"Zugriff erlaubt\",\n \"failed\": \"Zugriff konnte nicht erlaubt werden. Bitte erneut versuchen.\"\n },\n \"catalog\": {\n \"printerEscpos\": {\n \"name\": \"Bondrucker (ESC/POS)\",\n \"scope\": \"Auf Bondruckern drucken und eine angeschlossene Kassenschublade öffnen\"\n }\n },\n \"consent\": {\n \"title\": \"{app} erlauben?\",\n \"subtitle\": \"{app} möchte die Hardware dieses Computers verwenden.\",\n \"willAllow\": \"Dies erlaubt {app}:\",\n \"revokeNote\": \"Sie können dies jederzeit unter Einstellungen → Desktop widerrufen. Erlauben Sie nur Apps, denen Sie vertrauen.\",\n \"deny\": \"Nicht jetzt\",\n \"approve\": \"Erlauben\"\n }\n },\n \"emailTemplates\": {\n \"title\": \"E-Mail-Vorlagen\",\n \"subtitle\": \"Transaktions- und Lifecycle-E-Mails, die dieser Workspace versendet.\",\n \"search\": \"Vorlagen durchsuchen…\",\n \"loadFailed\": \"Vorlagen konnten nicht geladen werden\",\n \"empty\": \"Noch keine E-Mail-Vorlagen\",\n \"emptyBody\": \"Vorlagen erscheinen hier, sobald der Server welche anlegt oder Sie welche erstellen.\",\n \"noMatches\": \"Keine passenden Vorlagen\",\n \"noMatchesBody\": \"Versuchen Sie eine andere Suche.\",\n \"live\": \"Aktiv\",\n \"disabled\": \"Deaktiviert\",\n \"name\": \"Vorlagenname\",\n \"subject\": \"Betreff\",\n \"enabled\": \"Aktiviert\"\n },\n \"board\": {\n \"addCard\": \"Karte hinzufügen\",\n \"compose\": {\n \"placeholder\": \"Kartentitel…\",\n \"add\": \"Hinzufügen\",\n \"cancel\": \"Abbrechen\"\n },\n \"empty\": {\n \"title\": \"Keine Board-Spalten\",\n \"body\": \"Fügen Sie ein Statusfeld hinzu, um Karten in Spalten zu gruppieren.\"\n }\n },\n \"calendar\": {\n \"dateRange\": \"Zeitraum\",\n \"compose\": {\n \"placeholder\": \"Termintitel…\",\n \"add\": \"Hinzufügen\",\n \"cancel\": \"Abbrechen\",\n \"open\": \"Termin hinzufügen\"\n },\n \"agenda\": {\n \"empty\": \"Nichts geplant\"\n }\n },\n \"scheduler\": {\n \"prevWeek\": \"Vorherige Woche\",\n \"nextWeek\": \"Nächste Woche\",\n \"week\": \"Woche\",\n \"month\": \"Monat\",\n \"resource\": \"Ressource\",\n \"coverage\": \"Abdeckung\",\n \"addShift\": \"Schicht hinzufügen\",\n \"shiftCount\": \"{n} Schichten\"\n },\n \"planning\": {\n \"drawer\": {\n \"close\": \"Schließen\",\n \"loading\": \"Datensatz wird geladen\",\n \"error\": \"Dieser Datensatz konnte nicht geladen werden.\"\n }\n },\n \"files\": {\n \"uploadsUnavailable\": \"Uploads sind auf dieser Seite noch nicht verfügbar.\"\n },\n \"chat\": {\n \"messageSent\": \"Nachricht gesendet\",\n \"sendFailed\": \"Die Nachricht konnte nicht gesendet werden.\"\n },\n \"templates\": {\n \"crud\": {\n \"title\": \"Datensätze\"\n },\n \"dashboard\": {\n \"title\": \"Dashboard\"\n },\n \"board\": {\n \"title\": \"Board\"\n },\n \"calendar\": {\n \"title\": \"Kalender\"\n },\n \"scheduler\": {\n \"title\": \"Dienstplan\"\n },\n \"logViewer\": {\n \"title\": \"Protokolle\"\n },\n \"files\": {\n \"title\": \"Dateien\"\n },\n \"chat\": {\n \"title\": \"Chat\"\n },\n \"builder\": {\n \"title\": \"Editor\"\n },\n \"wizard\": {\n \"title\": \"Assistent\"\n },\n \"settings\": {\n \"title\": \"Einstellungen\"\n },\n \"directory\": {\n \"title\": \"Verzeichnis\",\n \"searchPlaceholder\": \"Personen suchen…\",\n \"allFilter\": \"Alle\",\n \"clearFilters\": \"Filter zurücksetzen\",\n \"detailTitle\": \"Person\",\n \"emptyTitle\": \"Noch keine Personen\",\n \"emptyBody\": \"Personen erscheinen hier, sobald Zeilen in der Tabelle ankommen.\",\n \"noMatchesTitle\": \"Keine passenden Personen\",\n \"noMatchesBody\": \"Versuchen Sie eine andere Suche oder entfernen Sie einen Filter.\",\n \"errorTitle\": \"Dieses Verzeichnis konnte nicht geladen werden\",\n \"loading\": \"Personen werden geladen\",\n \"memberCount\": \"{count} Personen\"\n },\n \"masterDetail\": {\n \"title\": \"Liste & Detail\",\n \"allFilter\": \"Alle\",\n \"clearFilters\": \"Filter zurücksetzen\",\n \"emptyTitle\": \"Noch nichts vorhanden\",\n \"emptyBody\": \"Datensätze erscheinen hier, sobald Zeilen in der Tabelle ankommen.\",\n \"noMatchesTitle\": \"Keine passenden Datensätze\",\n \"noMatchesBody\": \"Entfernen Sie einen Filter.\",\n \"errorTitle\": \"Diese Liste konnte nicht geladen werden\",\n \"loading\": \"Datensätze werden geladen\",\n \"selectPrompt\": \"Datensatz auswählen\"\n },\n \"queueInbox\": {\n \"title\": \"Warteschlange\",\n \"approve\": \"Genehmigen\",\n \"reject\": \"Ablehnen\",\n \"allSegment\": \"Alle\",\n \"approvedToast\": \"{count} genehmigt.\",\n \"rejectedToast\": \"{count} abgelehnt.\",\n \"undoneToast\": \"Entscheidung rückgängig gemacht.\",\n \"failedToast\": \"Entscheidung fehlgeschlagen.\",\n \"bulkFailed\": \"{failed} von {total} ausgewählten Zeilen konnten nicht aktualisiert werden.\",\n \"undoFailedToast\": \"Diese Entscheidung konnte nicht rückgängig gemacht werden.\",\n \"rejectTitle\": \"Anfragen ablehnen\",\n \"rejectCount\": \"Ausgewählt · {count}\",\n \"rejectNote\": \"Der Antragsteller wird mit Ihrer Notiz benachrichtigt.\",\n \"rejectPlaceholder\": \"Notiz für den Antragsteller hinzufügen…\",\n \"rejectConfirm\": \"Ablehnen\",\n \"emptyTitle\": \"Nichts in der Warteschlange\",\n \"emptyBody\": \"Neue Anfragen erscheinen hier, sobald sie eintreffen.\",\n \"caughtUpTitle\": \"Alles erledigt\",\n \"caughtUpBody\": \"Derzeit keine Anfragen in diesem Tab.\",\n \"errorTitle\": \"Diese Warteschlange konnte nicht geladen werden\",\n \"loading\": \"Warteschlange wird geladen\",\n \"selectPrompt\": \"Anfrage auswählen\",\n \"daysUnit\": \"{count} Tage\"\n }\n },\n \"dataio\": {\n \"back\": \"Zurück\",\n \"import\": {\n \"title\": \"Daten importieren\",\n \"stepUpload\": \"Hochladen\",\n \"stepMap\": \"Spalten zuordnen\",\n \"stepValidate\": \"Prüfen\",\n \"stepRun\": \"Importieren & prüfen\",\n \"targetLabel\": \"Zieltabelle\",\n \"targetPlaceholder\": \"Tabellenseite wählen…\",\n \"notATable\": \"Diese Seite ist keine Tabelle — wählen Sie eine Tabellenseite als Ziel.\",\n \"dropTitle\": \"CSV-Datei zum Import hier ablegen\",\n \"dropHint\": \"CSV bis 32 MB — die erste Zeile muss die Kopfzeile sein\",\n \"skipTarget\": \"Nicht importieren\",\n \"mapHint\": \"{count} Datenzeilen in {file} — wählen Sie für jede Spalte ein Ziel.\",\n \"validating\": \"Wird geprüft…\",\n \"toValidate\": \"Prüfen\",\n \"validateFailed\": \"Prüfung fehlgeschlagen.\",\n \"validationSummary\": \"{valid} von {total} Zeilen bereit zum Import — {invalid} werden übersprungen.\",\n \"allValid\": \"Alle Zeilen haben die Prüfung bestanden\",\n \"run\": \"Import starten\",\n \"runSkipping\": \"{valid} Zeilen importieren ({invalid} überspringen)\",\n \"progressLabel\": \"Importfortschritt\",\n \"running\": \"Wird importiert…\",\n \"kpiTotal\": \"Zeilen in der Datei\",\n \"kpiCreated\": \"Erstellt\",\n \"kpiUpdated\": \"Aktualisiert\",\n \"kpiSkipped\": \"Übersprungen\",\n \"inconsistent\": \"Importzahlen sind inkonsistent — Gesamt muss Erstellt + Aktualisiert + Übersprungen entsprechen.\",\n \"downloadErrors\": \"Bericht der übersprungenen Zeilen herunterladen (CSV)\",\n \"runFailed\": \"Der Import ist fehlgeschlagen.\"\n },\n \"exports\": {\n \"title\": \"Datenexporte\",\n \"tableLabel\": \"Tabelle\",\n \"tablePlaceholder\": \"Tabelle wählen…\",\n \"notATable\": \"Diese Seite ist keine Tabelle — wählen Sie eine Tabellenseite zum Export.\",\n \"formatLabel\": \"Format\",\n \"create\": \"Exportieren\",\n \"createFailed\": \"Der Export konnte nicht angefordert werden.\",\n \"retention\": \"Exporte werden 30 Tage aufbewahrt und laufen dann ab.\",\n \"statusProcessing\": \"Wird verarbeitet…\",\n \"statusReady\": \"Fertig — {rows} Zeilen · zum Herunterladen klicken\",\n \"statusFailed\": \"Fehlgeschlagen — {error}\",\n \"statusCancelled\": \"Abgebrochen\",\n \"statusExpired\": \"Abgelaufen\",\n \"emptyTitle\": \"Noch keine Exporte\",\n \"emptyBody\": \"Oben einen anfordern — Artefakte erscheinen hier mit ihrem Status.\"\n }\n },\n \"reports\": {\n \"title\": \"Geplante Berichte\",\n \"subtitle\": \"Wiederkehrende Daten-Schnappschüsse einer Seite, zugestellt als In-App-Benachrichtigungen.\",\n \"new\": \"Neuer Bericht\",\n \"loadFailed\": \"Geplante Berichte konnten nicht geladen werden.\",\n \"saveFailed\": \"Dieser Bericht konnte nicht gespeichert werden.\",\n \"nextRun\": \"Nächste Ausführung\",\n \"emptyTitle\": \"Noch keine geplanten Berichte\",\n \"emptyBody\": \"Erstellen Sie einen, um wiederkehrende Daten-Schnappschüsse einer Tabellenseite zu erhalten.\",\n \"createTitle\": \"Neuer geplanter Bericht\",\n \"editTitle\": \"Geplanten Bericht bearbeiten\",\n \"nameLabel\": \"Name\",\n \"namePlaceholder\": \"z. B. Wöchentlicher Umsatz\",\n \"pageLabel\": \"Seite\",\n \"pagePlaceholder\": \"Seite wählen…\",\n \"frequencyLabel\": \"Häufigkeit\",\n \"frequency\": {\n \"daily\": \"Täglich\",\n \"weekly\": \"Wöchentlich\",\n \"monthly\": \"Monatlich\"\n },\n \"dayOfWeekLabel\": \"Tag\",\n \"dayOfMonthLabel\": \"Tag im Monat\",\n \"timeLabel\": \"Uhrzeit\",\n \"timezoneLabel\": \"Zeitzone\",\n \"formatLabel\": \"Zustellung\",\n \"formatHint\": \"Daten-Schnappschuss (PDF/PNG-Rendering folgt in einer späteren Version) — jede Ausführung erzeugt einen CSV-Schnappschuss und eine In-App-Benachrichtigung.\",\n \"recipientsLabel\": \"Empfänger\",\n \"recipientsHint\": \"Wird mit dem Bericht gespeichert. E-Mail-Zustellung folgt in einer späteren Version — Ausführungen benachrichtigen vorerst in der App.\",\n \"deliveryBadge\": \"CSV-Schnappschuss\",\n \"delete\": \"Löschen\",\n \"create\": \"Erstellen\",\n \"cadence\": {\n \"daily\": \"Täglich um {time} ({zone})\",\n \"weekly\": \"Wöchentlich · {day} um {time} ({zone})\",\n \"monthly\": \"Monatlich · Tag {day} um {time} ({zone})\"\n }\n },\n \"notifications\": {\n \"channel\": {\n \"inApp\": \"In der App\",\n \"email\": \"E-Mail\",\n \"push\": \"Push\"\n },\n \"event\": {\n \"reportReady\": \"Geplanter Bericht fertig\",\n \"reportFailed\": \"Geplanter Bericht fehlgeschlagen\",\n \"backupCompleted\": \"Sicherung abgeschlossen\"\n }\n }\n};\n//# sourceMappingURL=common.js.map"],"names":["common"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e={common:{dismiss:"Luk",notifications:"Notifikationer",retry:"Prøv igen",undo:"Fortryd",close:"Luk",cancel:"Annuller",back:"Tilbage",loading:"Indlæser",clearSearch:"Ryd søgning",clear:"Ryd",save:"Gem"},auth:{headline:"Forvandl enhver database til et dashboard.",trust:"AGPL-kerne · Selvhostet · Dine data forbliver dine",signIn:{title:"Velkommen tilbage",subtitle:"Log ind på dit Adminium-arbejdsområde.",email:"E-mail",emailInvalid:"Indtast en gyldig e-mailadresse.",password:"Adgangskode",passwordRequired:"Indtast din adgangskode.",showPassword:"Vis adgangskode",hidePassword:"Skjul adgangskode",remember:"Forbliv logget ind",forgot:"Glemt?",submit:"Log ind",invalid:"Ugyldig e-mail eller adgangskode.",rateLimited:"For mange forsøg — prøv igen om et minut.",failed:"Login mislykkedes. Tjek din forbindelse, og prøv igen."},forgot:{title:"Nulstil din adgangskode",email:"E-mail",emailInvalid:"Indtast en gyldig e-mailadresse.",submit:"Send nulstillingslink",sentTitle:"Tjek din e-mail",resend:"Send igen",back:"Tilbage til login",done:"Tilbage til login",rateLimited:"For mange anmodninger — prøv igen senere.",failed:"Noget gik galt. Prøv igen.",smtpUnconfigured:"Dette Adminium har ingen mailserver konfigureret og kan derfor ikke sende et nulstillingslink. Bed en administrator om at nulstille din adgangskode."},reset:{title:"Vælg en ny adgangskode",subtitle:"Skal være på mindst 8 tegn.",password:"Ny adgangskode",confirm:"Bekræft adgangskode",showPassword:"Vis adgangskode",hidePassword:"Skjul adgangskode",strength:"Adgangskodens styrke",weak:"Svag",fair:"Rimelig",good:"God",strong:"Stærk",tooShort:"Brug mindst 8 tegn.",submit:"Nulstil adgangskode",failed:"Nulstilling mislykkedes. Prøv igen."},otp:{title:"Tofaktorgodkendelse",subtitle:"Indtast den 6-cifrede kode fra din godkendelsesapp.",code:"Engangskode",recoveryCode:"Gendannelseskode",useRecovery:"Mistet din enhed? Brug en gendannelseskode",useAuthenticator:"Brug din godkendelsesapp i stedet",submit:"Bekræft",invalid:"Koden virkede ikke. Prøv igen.",failed:"Bekræftelse mislykkedes. Tjek din forbindelse, og prøv igen."}},nav:{home:"Hjem",primary:"Primær",account:"Konto",signOut:"Log ud",empty:"Sider vises her, når en database er forbundet.",connection:{shared:"Delt",unnamed:"Forbindelse"},imports:"Importér data",exports:"Dataeksporter",emailTemplates:"E-mailskabeloner",notificationSettings:"Notifikationsindstillinger",scheduledReports:"Planlagte rapporter",group:{workspace:"Arbejdsområde",library:"Bibliotek",planning:"Planlægning",people:"Personer",account:"Konto"}},topbar:{search:"Søg…",notifications:"Notifikationer",notificationsLoading:"Indlæser notifikationer",notificationsError:"Notifikationerne kunne ikke indlæses.",notificationsEmpty:"Du er helt ajour.",theme:"Skift mellem lys / mørk",userMenu:"Kontomenu",profile:"Profil",preferences:"Præferencer",signOut:"Log ud"},palette:{dialog:"Kommandopalet",placeholder:"Skriv en kommando, eller søg…",navigate:"Naviger",actions:"Handlinger",askAi:"Spørg AI",shortcuts:"Tastaturgenveje",signOut:"Log ud",themeDark:"Skift til mørkt tema",themeLight:"Skift til lyst tema",footerNavigate:"naviger",footerOpen:"vælg",footerClose:"luk"},shortcuts:{title:"Tastaturgenveje",subtitle:"Arbejd hurtigere i hele Adminium",close:"Luk",dismiss:"Luk eller afvis",palette:"Åbn kommandopaletten",panel:"Vis genvejspanelet",search:"Fokusér søgning",sidebar:"Slå sidepanelet til/fra",theme:"Skift mellem lys / mørk",then:"derefter",footerPre:"Tryk på",footerPost:"når som helst for at åbne dette panel."},states:{checked:"tjekket for 8 sek. siden",diagnostics:"Diagnostik"},notFound:{title:"Denne side er forsvundet",errorLine:"Fejl 404",searchPlaceholder:"Søg efter en side…",matches:"Matchende sider",popular:"Populære destinationer",goBack:"Gå tilbage",backToDashboard:"Tilbage til dashboardet"},page:{invalid:{title:"Denne sides konfiguration er ugyldig",body:"Det gemte sidedokument bestod ikke valideringen og kan ikke vises."},renderError:{title:"Denne side kunne ikke vises"},tooNew:{title:"Denne side kræver et nyere Adminium"},unknownTemplate:{title:"Ukendt sideskabelon"}},mutation:{created:"Post oprettet",updated:"Post opdateret",deleted:"Post slettet"},undo:{done:"Ændring fortrudt",failed:"Ændringen kunne ikke fortrydes"},prefs:{theme:{label:"Tema",light:"Lys",dark:"Mørk",system:"System"},accent:{label:"Accentfarve",indigo:"Indigo",blue:"Blå",teal:"Blågrøn",violet:"Violet",rose:"Rosa",red:"Rød",orange:"Orange",black:"Sort"},density:{label:"Tæthed",comfortable:"Komfortabel",compact:"Kompakt"},locale:{label:"Sprog",directionNote:"Tekstretning: højre mod venstre (indstilles automatisk af sproget)"}},account:{title:"Konto",subtitle:"Identiteten for din aktuelle session. Visningspræferencer og notifikationsindstillinger administreres på deres egne sider.",preferencesLink:"Præferencer",notificationsLink:"Notifikationsindstillinger",name:"Navn",email:"E-mail",roles:"Roller",twoFactor:"Tofaktor",on:"Slået til",off:"Slået fra",preferences:{title:"Præferencer",subtitle:"Hvordan Adminium ser ud og læses for dig — på denne og alle andre enheder, du logger ind fra.",workspaceDefault:"Arbejdsområdets standard",personal:"Personlig",usingDefault:"Bruger arbejdsområdets standard ({value})",reset:"Nulstil til arbejdsområdets standard",resetFailed:"Denne præference kunne ikke nulstilles. Prøv igen.",appliesInstantly:"Ændringer træder i kraft med det samme og gemmes i din profil."}},settings:{defaults:{title:"Globale standarder",subtitle:"Standarder for udseende og sprog for hele arbejdsområdet.",explainer:"Disse standarder gælder for alle brugere, medmindre de tilsidesætter dem. Alle kan vælge deres egne præferencer under Profil → Præferencer — personlige præferencer vinder altid for den bruger.",appearanceHeading:"Standarder for udseende",languageHeading:"Standarder for sprog og region",adoption:"{following, number} af {total, plural, one {# bruger} other {# brugere}} følger denne standard.",weekStartNote:"Ugens første dag og talformater følger sproget.",save:"Gem standarder",saved:"Arbejdsområdets standarder er opdateret",saveFailed:"Arbejdsområdets standarder kunne ikke gemmes. Prøv igen.",liveNote:"Når du gemmer, udsendes ændringen live — loggede brugere, der følger en standard, ser den uden at genindlæse."},notifications:{subtitle:"Vælg, hvad du får besked om, og hvordan",matrixLabel:"Giv mig besked om",rowHeader:"Hændelse",saving:"Gemmer…",saved:"Gemt",unavailable:"Ikke tilgængelig endnu",loading:"Indlæser præferencer",errorTitle:"Disse indstillinger kunne ikke indlæses",emptyTitle:"Intet at konfigurere endnu",emptyBody:"Notifikationshændelser vises her, efterhånden som producenterne udgives.",saveFailed:"Denne ændring kunne ikke gemmes."}},studio:{source:{engine:{label:"Databasemotor",postgres:"PostgreSQL",mysql:"MySQL / MariaDB",sqlite:"SQLite"},format:{label:"Skemaformat",helper:"Lad automatisk registrering være slået til, medmindre den tager fejl.",auto:"Registrér automatisk",sql:"SQL DDL / pg_dump",prisma:"Prisma-skema",drizzle:"Drizzle ORM",typeorm:"TypeORM-entiteter",sequelize:"Sequelize-modeller",rails:"Rails schema.rb",django:"Django models.py",json:"Adminium JSON"},sqlite:{file:"Sti til databasefil",helper:"SQLite er en fil, ikke en server — angiv den absolutte sti på den maskine, der kører Adminium."},file:{detectedAs:"Registreret: {format}",moreWarnings:"+{count} flere advarsler — den fulde liste vises i analysetrinnet.",dropTitle:"Slip din skemafil her, eller gennemse",dropHint:"SQL DDL / pg_dump, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, Django-modeller, Adminium JSON",pitch:"Ingen databaseforbindelse påkrævet — vi fortolker din skemafil og bygger de samme dashboards.",parsing:"Læser den uploadede skemafil…",tables:"tabeller",columns:"kolonner",warnings:"advarsler",errorTitle:"Kunne ikke fortolke filen",parseFailed:"Vi kunne ikke fortolke den fil. Hvis auto-genkendelsen gættede forkert, så vælg formatet eksplicit og prøv igen.",unsupported:"Formatet blev ikke genkendt — SQL DDL, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, Django-modeller og Adminium JSON understøttes. Vælg ét eksplicit og prøv igen.",requestFailed:"Upload mislykkedes — tjek din forbindelse og prøv igen."},title:"Forbind din database",subtitle:"Peg Adminium mod en database, så genererer vi et admin-dashboard ud fra dens skema.",name:"Forbindelsesnavn",namePlaceholder:"Produktions-Postgres",modeLabel:"Kildeinputtilstand",mode:{dsn:"Forbindelsesstreng",fields:"Enkelte felter",file:"Skemafil"},dsn:{label:"Forbindelsesstreng",helper:"postgres://bruger:kodeord@vaert:5432/database — mysql:// og sqlite: virker også.",incomplete:"Tilføj vært og database, f.eks. postgres://user@host:5432/db",invalidScheme:"Ukendt skema — forventede postgres://, mysql://, mariadb:// eller sqlite:",quickFill:"Hurtig udfyldning:"},fields:{host:"Vært",port:"Port",database:"Database",user:"Bruger",password:"Adgangskode",ssl:"SSL-tilstand",preview:"Forhåndsvisning af forbindelsesstreng:"},readOnlyRole:{title:"Brug en skrivebeskyttet rolle",body:"Adminium skriver aldrig til din database — opsætningen bruger kun skema-metadata. Vi anbefaler en dedikeret bruger med rene SELECT-rettigheder; hvor Adminium gemmer sine egne tabeller, beslutter du i metalagringstrinnet."}},capability:{mysqlApproxRows:"MySQL-rækkeantal er estimater fra lagringsmotoren (kan afvige op til ±40 %) — vises med ≈.",mysqlFkEnum:"MySQL’s FK-/enum-metadata er svagere: MyISAM-tabeller deklarerer ingen fremmednøgler, enums er kolonnetyper som enum(…), og CHECK-begrænsninger kræver MySQL 8.0.16+ / MariaDB 10.2+.",sqliteCheckEnums:"SQLite har ingen indbygget enum-type — enums syntetiseres fra CHECK (col IN (…))-begrænsninger.",sqliteNoComments:"SQLite har ingen kolonnekommentarer — brug skema-remap-editoren til at tilføje etiketter.",importNoRowCounts:"Skemafiler indeholder ingen rækkeantal — tabellisten viser — i stedet for opdigtede tal.",importNoLiveHealth:"Ingen live databaseforbindelse — sundhedstjek og registrering af skemadrift er ikke tilgængelige for denne kilde.",rowsUnavailable:"Skemafiler har ingen live database — rækkeantal er ukendte, indtil du forbinder en.",rowsRunAnalyze:"Intet estimat endnu — kør ANALYZE på databasen for at få rækkeantal.",rowsNoEstimate:"Motoren rapporterede intet estimat for denne tabel.",rowsApproximate:"Estimat fra lagringsmotoren — kan afvige op til ±40 % på InnoDB."},test:{log:{moreWarnings:"+{count} flere parser-advarsler",connecting:"Etablerer sikker forbindelse…",connected:"Forbundet ({latency} ms) · skrivebeskyttet introspektion",connectFailed:"Forbindelsen mislykkedes.",readingSchema:"Læser skema: public",readingFile:"Læser den uploadede skemafil…",parsingFile:"Fortolker {file}…",detected:"Registrerede {tables} tabeller · {columns} kolonner",found:"Fandt {tables} tabeller · {columns} kolonner",mapping:"Kortlægger kolonnetyper → inputwidgets",relations:"Registrerer relationer…",piiScan:"Scanner efter PII-kolonner…",piiDone:"PII-scanning fuldført — {count} kolonner maskeret som standard",piiDoneUnknown:"PII-scanning fuldført",jobFailed:"Introspektion mislykkedes.",networkFailed:"Anmodningen mislykkedes — tjek din forbindelse og prøv igen.",ready:"Klar"},title:"Analyserer dit skema",subtitle:"Introspekterer tabeller, kolonner og relationer. Det tager et par sekunder.",trust:"Vi læser kun dit skema og dine data. Intet ændres.",errorTitle:"Forbindelsen mislykkedes",retry:"Prøv igen",logLabel:"Introspektionslog",hint:{auth:"Godkendelse mislykkedes — tjek brugernavn og adgangskode i din DSN.",hostUnreachable:"Vært utilgængelig — tjek værtsnavn og port, og at databasen accepterer forbindelser fra denne maskine (tilføj vores IP'er til tilladelseslisten).",metaPlacement:"Denne kilde kan ikke huse Adminiums metatabeller — fortsæt med en separat metadatabase.",permission:"Rollen fik forbindelse, men mangler skema-læserettigheder — giv USAGE på skemaet til din introspektionsrolle.",timeout:"Databasen svarede ikke i tide — tjek netværkssti og belastning, og prøv igen.",tls:"TLS-forhandling mislykkedes — prøv sslmode=require, eller upload det CA-certifikat din server forventer.",unknown:"Forbindelsen mislykkedes — kontrollér DSN'en og prøv igen."}},tables:{importNoCounts:"Skemafiler indeholder ingen rækkeantal — kolonnen viser —, indtil en live database er forbundet.",title:"Vælg dine tabeller",subtitle:"Vælg hvilke der skal med. Du kan altid ændre det.",search:"Filtrér tabeller…",listLabel:"Tabeller der kan medtages",emptyFilter:"Ingen tabeller matcher dit filter.",pii:"PII",highVolume:"stor volumen",highVolumeNote:"Tabeller med over 100.000 rækker starter fravalgt — driftstabeller hører sjældent hjemme i et dashboard.",joinHidden:"{count} join-/systemtabeller er skjult på forhånd — de driver stadig mange-til-mange-relationer."},hub:{title:"Dataforbindelser",subtitle:"{healthy, number} af {total, plural, one {# forbindelse} other {# forbindelser}} sunde",connectNew:"Ny forbindelse",stats:{connections:"Forbindelser",healthy:"Sunde",tables:"Inkluderede tabeller",pages:"Genererede sider"},status:{connected:"Forbundet",error:"Fejl",unconfigured:"Kladde",testing:"Tester…"},card:{readOnly:"Skrivebeskyttet",tables:"Tabeller",pages:"Sider",latency:"Latenstid",latencyMs:"{latency, number} ms",lastIntrospected:"Senest introspiceret",never:"Aldrig"},action:{test:"Test",reintrospect:"Introspicer igen",reintrospectFile:"Skemafil-kilder har ingen aktiv database — upload filen igen i stedet.",remap:"Ommap skema",delete:"Slet"},test:{ok:"Forbindelsen er sund · {latency, number} ms",failed:"Forbindelsestest mislykkedes"},introspect:{noChanges:"Skemaet er uændret — intet nyt snapshot.",updated:"Skemaet er introspiceret igen",masksProposed:"{count, plural, one {# kolonne} other {# kolonner}} foreslået til maskering — gennemgå i ommapnings-editoren.",failed:"Introspektion mislykkedes. Prøv igen."},delete:{title:"Slet forbindelse",body:"Dette sletter “{name}” og de genererede sider. Selve din database røres aldrig.",prompt:"Skriv {name} for at bekræfte",confirm:"Slet forbindelse",cancel:"Annuller",close:"Luk",success:"Forbindelsen “{name}” er slettet",failed:"Forbindelsen kunne ikke slettes. Prøv igen."},empty:{title:"Ingen datakilder endnu",body:"Forbind en database, så genererer Adminium dit adminpanel ud fra dens skema.",cta:"Forbind en database"}},settingsHub:{title:"Arbejdsområdeindstillinger",subtitle:"Identitet, sikkerhed og destruktive handlinger for dette arbejdsområde.",save:"Gem ændringer",saved:"Arbejdsområdeindstillinger opdateret",saveFailed:"Arbejdsområdeindstillingerne kunne ikke gemmes. Prøv igen.",superAdminOnlyTitle:"Superadmin påkrævet",superAdminOnly:"Kun en superadmin kan ændre arbejdsområdets identitet og sikkerhedsindstillinger.",identity:{heading:"Arbejdsområdets identitet",appName:{label:"Applikationsnavn",helper:"Vises i sidepanelet, browsertitlen og e-mails.",error:"Angiv et navn på højst 60 tegn."}},security:{heading:"Sikkerhed",require2fa:{label:"Kræv tofaktorgodkendelse",desc:"Alle medlemmer skal aktivere 2FA for at logge ind."},allowSignup:{label:"Tillad selvregistrering",desc:"Alle kan oprette en konto — slået fra er arbejdsområdet kun på invitation."},sessionTtl:{label:"Sessionslevetid (timer)",error:"Mellem {min, number} og {max, number} timer."},passwordMin:{label:"Minimal adgangskodelængde",error:"Mellem {min, number} og {max, number} tegn."}},review:{title:"Gem arbejdsområdeindstillinger",subtitle:"Gennemgå dine ændringer, før du gemmer.",confirm:"Gem ændringer",cancel:"Annuller",close:"Luk",on:"Til",off:"Fra",change:"{before} → {after}"},defaultsCard:{heading:"Standarder for udseende og sprog",body:"Tema, accentfarve, tæthed og sprog for hele arbejdsområdet findes under globale standarder.",cta:"Åbn globale standarder"},danger:{heading:"Farezone",subtitle:"Uigenkaldelige handlinger.",empty:"Intet at slette — ingen forbindelser endnu.",deleteDesc:"Sletter forbindelsen og de genererede sider. Din database røres ikke. Kan ikke fortrydes.",deleteCta:"Slet forbindelse"},aiCard:{heading:"AI-berigelse",body:"Konfigurér en AI-udbyder (eller kopiér-indsæt-turen) for at berige etiketter, grupper og relationer.",cta:"Åbn AI-indstillinger"}},settingsAi:{title:"AI-berigelse",subtitle:"Forbind en model, så Adminium kan foreslå etiketter, grupper, relationer og mere — altid gennemgået som en diff, før noget anvendes.",saved:"AI-udbyder gemt",saveFailed:"AI-udbyderen kunne ikke gemmes. Prøv igen.",save:"Gem udbyder",test:"Test forbindelse",testHintDirty:"Gem dine ændringer, før du tester.",testing:"Kontakter udbyderen…",testError:"Testen mislykkedes",testErrorBody:"Kunne ikke nå udbyderen. Tjek nøglen og basis-URL.",testOk:"Forbundet til {model} på {latency} ms",testUnknownModel:"udbyderen",provider:{heading:"AI-udbyder",subtitle:"Vælg, hvordan Adminium når en model til at berige dit skema. Nøgler gemmes krypteret og vises aldrig igen.",active:"Aktiv",anthropic:{label:"Anthropic",desc:"Claude-modeller via Anthropic-API’en."},openai:{label:"OpenAI",desc:"GPT-modeller via OpenAI-API’en."},openaiCompatible:{label:"OpenAI-kompatibel",desc:"Ethvert endpoint, der taler OpenAI-formatet — Groq, Together, vLLM, LM Studio."},ollama:{label:"Ollama (lokal)",desc:"Modeller kører lokalt via Ollama — ingen nøgle, ingen sky."},requiresNetwork:"Kræver internet og en API-nøgle",networkDisabledTitle:"Direkte AI-udbydere er slået fra i denne installation",networkDisabledBody:"Dette Adminium er konfigureret uden udgående internetadgang og kan ikke nå en udbyder-API. Brug kopier-indsæt-turen nedenfor — den kræver hverken nøgle eller netværk."},configure:{heading:"Konfigurér {provider}"},field:{baseUrl:"Basis-URL",baseUrlOptional:"Lad stå, medmindre Ollama kører på en anden vært.",baseUrlHelper:"Endpoint-roden, der leverer /chat/completions.",model:"Model",modelFreeText:"Indtast det præcise model-id, dit endpoint leverer.",modelLive:"Indlæst live fra udbyderen.",modelStatic:"En gennemprøvet liste; skriv et brugerdefineret id efter at have gemt for at opdatere den.",modelLoading:"Indlæser…",modelPlaceholder:"Vælg en model…",key:"API-nøgle",keyStored:"Gemt krypteret. Erstat den for at bruge en anden nøgle.",keyMask:"sk-…{last4}",keyReplace:"Erstat nøgle",keyOptional:"Valgfri — nogle endpoints kræver ingen nøgle.",keyWriteOnly:"Kun skrivning: når den er gemt, vises den aldrig igen.",noKeyTitle:"Ingen API-nøgle nødvendig",noKeyBody:"Ollama kører lokalt, så intet forlader denne maskine."},runStatus:{draft:"Kladde",running:"Kører",awaitingResponse:"Afventer svar",validated:"Valideret",applied:"Anvendt",partiallyApplied:"Delvist anvendt",failed:"Mislykkedes",discarded:"Kasseret"},byo:{heading:"Ingen nøgle? Brug dit eget AI-værktøj",subtitle:"Kopiér-indsæt-turen — intet forlader denne maskine.",body:"Studio kan generere en selvstændig prompt ud fra dit skema. Kør den i Claude Code, ChatGPT eller et hvilket som helst værktøj, og indsæt derefter den returnerede JSON tilbage i forbindelsesguiden. Samme validering, samme gennemgang, samme resultat som den direkte vej.",guaranteeTitle:"Telemetrifri garanti",guarantee1:"Prompten indeholder kun dit skema og aggregeret statistik — aldrig rækkedata som standard.",guarantee2:"Ingen legitimationsoplysninger, instans-URL eller identifikatorer er indlejret.",guarantee3:"BYO-kørsler foretager ingen netværkskald.",promptVersion:"Prompt {version}",schemaVersion:"Skema {version}",headingRecommended:"Brug dit eget AI-værktøj — ingen nøgle nødvendig",recommended:"Anbefalet"},history:{heading:"Kørselshistorik",subtitle:"Tidligere berigelseskørsler. Åbn en for at gennemgå dens forslag.",tableLabel:"Berigelseskørsler",colDate:"Dato",colSource:"Kilde",colStatus:"Status",colChunks:"Blokke",openReview:"Åbn gennemgang for kørslen fra {date}",connection:"Forbindelse",empty:"Ingen berigelseskørsler endnu. Berig et skema fra forbindelsesguiden for at se historik her.",errorTitle:"Kunne ikke indlæse kørsler",errorBody:"Genindlæs siden for at prøve igen.",noConnections:"Forbind først en database — berigelseskørsler registreres pr. forbindelse.",byo:"BYO",directPath:"Direkte"}},enrich:{title:"Berig med AI",subtitle:"Forfin eventuelt de genererede etiketter, grupper, enums og dashboards med en LLM. Det heuristiske grundlag fungerer uden — dette tilføjer kun forslag, som du gennemgår, før noget anvendes.",intentLabel:"Hvordan vil du berige?",sectionsLegend:"Hvad skal AI’en beslutte?",localesLegend:"Oversæt etiketter til",localeLocked:"(påkrævet)",samplingTitle:"Inkludér eksempelværdier",samplingHint:"Inkluderer op til 20 rigtige værdier pr. ikke-PII-kolonne i prompten.",samplingPreviewTitle:"Hvad forlader denne maskine",samplingPreviewBody:"Op til 20 hyppigste værdier pr. ikke-PII-kolonne, plus min/maks for numeriske og datokolonner. PII-markerede kolonner udtages aldrig. Alt andet forbliver kun aggregeret. Gennemgå den præcise prompt før kopiering (BYO) — intet sendes uden din handling.",noSections:"Vælg mindst én beslutningsgruppe at berige.",generatePrompt:"Generér prompt",startProvider:"Start berigelse",startOver:"Start forfra",copied:"Kopieret",createFailed:"Berigelsesprompten kunne ikke bygges — prøv igen.",createFailedTitle:"Kunne ikke starte",providerFallback:"din AI-udbyder",fileTitle:"AI-berigelse kræver en live-database",fileBody:"Skemafil-kilder har endnu ikke et snapshot at berige. Forbind en live-database for at bruge AI-berigelse, eller fortsæt — det heuristiske grundlag genererer stadig en komplet app.",section:{labels:"Etiketter og beskrivelser",groups:"Navigationsgrupper",enums:"Enum-semantik",relations:"Relationer",keys:"Nøglekolonner",templates:"Sideskabeloner",widgets:"Dashboard-widgets",pii:"PII og maskering",icons:"Ikoner",microcopy:"Mikrotekst"},provider:{title:"Brug min AI-udbyder",description:"Kør berigelsen nu mod din konfigurerede udbyder. Du gennemgår hvert forslag som en diff.",unconfigured:"Der er endnu ikke konfigureret nogen AI-udbyder — kopiér en prompt til dit eget værktøj nedenfor, eller konfigurér først en udbyder.",settingsHint:"Vil du køre den direkte?",settingsLink:"Konfigurér en udbyder i Indstillinger → AI",networkDisabled:"Dette Adminium har ingen udgående internetadgang og kan ikke nå en udbyder-API. Brug kopier-indsæt-turen i stedet — samme prompt, samme gennemgang."},byo:{cardTitle:"Kopiér en prompt til mit eget AI-værktøj",cardDescription:"Kopiér en selvstændig prompt ind i Claude Code, ChatGPT, hvad som helst — og indsæt så JSON’en tilbage. Ingen nøgle nødvendig, intet forlader denne maskine automatisk.",guidance:"Kør dette i et hvilket som helst AI-værktøj — Claude Code, ChatGPT, hvad som helst. Indsæt den returnerede JSON nedenfor.",promptLabel:"Berigelsesprompt",promptLabelN:"Berigelsesprompt {index} af {total}",tokenChip:"≈ {tokens} tokens",copyPrompt:"Kopiér prompt",copyPromptDone:"Prompt kopieret",download:"Download .md",chunkTabs:"Prompt-dele",chunkTab:"Prompt {index}",chunkValid:"Del {index} valideret",pasteLabel:"Indsæt JSON-svaret",pastePlaceholder:"Indsæt JSON-svaret her…",validate:"Validér",valid:"Svar valideret",mergedTitle:"Alle {count} dele valideret og flettet",mergedTitleSingle:"Svar valideret",mergedBody:"Forslagene er klar til gennemgang mod det heuristiske grundlag.",errorsTitle:"Valideringen fandt {count} problemer",copyErrors:"Kopiér fejl til dit AI-værktøj",copyErrorsDone:"Fejl kopieret",copyErrorsHint:"Indsæt dette tilbage i dit AI-værktøj for at få et rettet svar.",droppedItems:"{count} forslag blev frasorteret under valideringen — gennemgangen viser resten.",pendingTitle:"Validér hver prompt for at fortsætte",pendingBody:"Indsæt JSON-svaret ovenfor og validér det for at fortsætte til gennemgang.",pendingBodyChunked:"Hver del skal valideres, før forslagene flettes. Indsæt og validér hver prompt ovenfor.",requestFailed:"Kunne ikke nå serveren for at validere — prøv igen.",continueReview:"Fortsæt til gennemgang",wholeDocument:"hele dokumentet",cardTitleRecommended:"Kopiér en prompt til mit eget AI-værktøj — anbefalet"},direct:{title:"Beriger med AI",subtitle:"Sender dit skema til",building:"Bygger prompt…",logLabel:"Berigelseslog",cancel:"Annullér",back:"Tilbage til valg",retry:"Prøv igen",done:"Berigelse fuldført — gennemgå forslagene.",continueReview:"Fortsæt til gennemgang",failed:"Udbyderkørslen mislykkedes. Tjek dine AI-indstillinger, og prøv igen.",jobFailed:"Berigelseskørslen blev ikke fuldført.",startFailed:"Kunne ikke starte kørslen — prøv igen.",errorTitle:"Berigelse mislykkedes"},skip:{title:"Spring over — brug kun heuristik",description:"Generér fra det heuristiske grundlag. Du kan berige senere fra Indstillinger → AI — at springe over straffes aldrig.",confirmTitle:"Fortsætter med heuristik",confirmBody:"Den genererede app vil bruge de heuristiske etiketter, grupper og dashboards. Fortsæt for at generere — du kan køre AI-berigelse når som helst fra Indstillinger → AI."}},review:{unavailableTitle:"Gennemgangsskærm ikke tilgængelig",unavailableBody:"Denne build indeholder endnu ikke berigelsens gennemgangsskærm (06-T14). Den kommer med diff-og-anvend-flowet."},llmRuns:{review:{header:{title:"Gennemgå AI-forslag",model:"Model",snapshot:"Øjebliksbillede",byo:"BYO",pathDirect:"Direkte API",pathByo:"Kopiér-indsæt",agree:"{n} enige",conflict:"{n} konflikt",new:"{n} nye",rejects:"{n} afvisninger",countsAria:"Antal forslag"},bulk:{thresholdLabel:"Tillidstærskel",thresholdAria:"Tillidstærskel for “Accepter alle”",acceptAll:"Accepter alle ≥ {pct}%",clear:"Ryd markering"},section:{selectAllAria:"Vælg alle i {group}",acceptedCount:"{n} accepteret"},group:{labels:"Etiketter og oversættelser",navigation:"Navigation og domæner",enums:"Enum-semantik",relations:"Relationer",keys:"Nøglekolonner",templates:"Sideskabeloner",dashboards:"Dashboards og widgets",pii:"Personoplysninger og maskering",icons:"Ikoner",microcopy:"Mikrotekst"},status:{agree:"Stemmer overens",conflict:"Konflikt",new:"Ny",heuristicOnly:"Kun heuristik",rejects:"Afviser heuristik",locked:"Låst"},row:{acceptAria:"Accepter {noun}-forslag for {target}",keptEdited:"bevaret – redigeret af dig",rejectsCallout:"AI’en afviser en heuristisk beslutning – bekræft før accept.",showTranslations:"Vis oversættelser",hideTranslations:"Skjul oversættelser",confidenceAria:"Tillid {pct}%",noAi:"Intet AI-forslag"},value:{none:"Ingen værdi",absent:"Ingen",dash:"—",display:"Visning",key:"Nøgle",rank:"rang {n}",span:"bredde {n}",tableCount:"{n} tabeller",widgetCount:"{n} widgets",enumWorkflow:"Arbejdsgang",enumCategory:"Kategori",notPii:"Ikke personoplysninger",label:"Etiket",description:"Beskrivelse",subtitle:"Sideundertekst",headline:"Overskrift for tom tilstand",guidance:"Vejledning for tom tilstand"},apply:{title:"Anvend {n} forslag",subtitle:"Disse ændringer skrives i én transaktion og kan fortrydes.",empty:"Intet valgt at anvende.",confirm:"Anvend ændringer"},footer:{count:"{n} forslag valgt",apply:"Anvend {n} accepterede forslag",failed:"Anvendelse mislykkedes"},toast:{applied:"Anvendte {n} forslag",appliedPartial:"Anvendte {n} forslag (nogle sprunget over)",applyFailed:"Kunne ikke anvende forslag",undoFailed:"Kunne ikke fortryde denne ændring"},error:{title:"Kunne ikke indlæse denne kørsel"},notReady:{title:"Denne kørsel har endnu ingen forslag til gennemgang",body:"En kørsel skal være valideret, før dens forslag kan gennemgås. Generér eller indsæt et svar først."},applied:{title:"Denne kørsel er blevet anvendt",body:"De accepterede forslag nedenfor er skrivebeskyttede."},empty:{title:"Ingen forslag",body:"Denne kørsel gav ingen forslag til gennemgang."},cat:{label:"etiket",key:"nøglekolonner",enum:"enum",relation:"relation",pii:"personoplysninger",template:"sideskabelon",group:"navigationsgruppe",dashboard:"dashboard",widget:"widget",copy:"mikrotekst"}}},wizard:{title:"Ny forbindelse",back:"Tilbage",continue:"Fortsæt",progress:"Opsætningsforløb",persistFailed:"Dit tabelvalg kunne ikke gemmes — prøv igen.",persistFailedTitle:"Kunne ikke gemme",step:{source:"Kilde",test:"Analysér",tables:"Tabeller",meta:"Metalagring",intent:"Formål",enrich:"Berig",generate:"Generér"}},meta:{title:"Hvor skal Adminium gemme sine egne tabeller?",subtitle:"Sider, roller, auditlog og indstillinger bor i tabeller med adminium_-præfiks — aldrig blandet med dine data.",sameDb:{title:"Samme database",description:"adminium_*-tabeller oprettes ved siden af dine kildetabeller. Enkleste opsætning — kræver en rolle med skrive- og CREATE TABLE-rettigheder.",disabledReadOnly:"Din rolle er skrivebeskyttet — Adminium skriver aldrig til denne database. Vælg en separat database til Adminiums egne tabeller.",disabledNoDdl:"Denne rolle kan ikke køre DDL — Adminium-migreringer kræver CREATE TABLE. Vælg en separat database til Adminiums egne tabeller.",disabledFile:"En skemafil har ingen live database — vælg en separat database til Adminiums egne tabeller."},separate:{title:"Separat database",description:"Adminium holder sine tabeller i en anden database. Din kilde forbliver urørt — påkrævet for skrivebeskyttede kilder.",dsn:"Forbindelsesstreng til metadatabasen",helper:"Kræver skrive- + DDL-rettigheder — Adminium kører sine egne migreringer dér.",test:"Test forbindelse",ok:"Kompatibel — skrivning ✓ · DDL ✓",insufficient:"Denne rolle kan ikke huse metalageret — Adminium behøver skrive- og CREATE TABLE-rettigheder dér.",errorTitle:"Metalager ikke kompatibelt"},testFailed:"Forbindelsen mislykkedes.",v1Note:{title:"Om denne installation",body:"Denne server valgte sit metalager ved første opstart. Dette trin validerer, at dit valg er kompatibelt med denne forbindelse, og registrerer det — serveren håndhæver samme regel uafhængigt (409 META_PLACEMENT_INVALID). Flytning af et eksisterende metalager er en driftsopgave (M10)."}},intent:{title:"Hvad har du brug for?",subtitle:"Formålet afgør, hvilke sider der genereres. Du kan ændre det senere — en ændring foreslår en regenerering, aldrig en stille omskrivning.",trust:"Vi læser kun dit skema — aldrig dine rækkedata under opsætningen.",fullAdmin:{title:"Fuldt adminpanel",description:"Dashboards, CRUD-sider, søgning, import og eksport — alt hvad dit skema understøtter."},analytics:{title:"Skrivebeskyttet analyse",description:"Dashboards, diagrammer og skrivebeskyttede tabeller. Ingen formularer, ingen skrivninger — hver rolle begrænset til Fremviser."},crud:{title:"CRUD-tabeller",description:"Én redigeringsside pr. tabel plus søgning og import/eksport — et minimalt hjem, ingen dashboards."},support:{title:"Supportkonsol",description:"Køer, ticket- og kundedetaljesider først. Sletning slået fra som standard. (Kø-skabeloner lander i M7 — v1-sidesættet svarer til fuldt admin.)"}},generate:{title:"Generér din app",subtitle:"Én side pr. medtaget tabel plus dashboards pr. domæne — formål:",run:"Generér dashboard",openApp:"Åbn din app",logLabel:"Genereringslog",log:{classifying:"Klassificerer skema…",composing:"Sammensætter skabeloner…",writing:"Skriver sider…",done:"{pages} sider genereret på tværs af {groups} navigationsgrupper"},successTitle:"Dit dashboard er klar",successBody:"{pages} sider i {groups} navigationsgrupper — genereret fra dit skema, redigerbare i Studio.",errorTitle:"Generering mislykkedes",failed:"Generering mislykkedes — prøv igen, eller kør introspektionen igen først.",fileTitle:"Skemafil fortolket — generering kræver en live database",fileBody:"Dit skema blev fortolket rent, og forhåndsvisningen ovenfor er ægte. Generering af en kørende app direkte fra en skemafil (med pladsholderrækker) er ikke tilgængelig endnu — forbind en live database for at generere i dag."},remap:{column:{nullable:"nullable",labelOverride:"Visningsetiket",labelHelper:"Udledt: {name}",logicalType:"Logisk type",logicalTypeHelper:"Udledt: {type} (fra {dbType}) — kortlagt af adapteren; kan ikke tilsidesættes i v1.",semantic:"Semantisk type",unclassified:"Endnu ikke klassificeret.",semanticHelper:"Klassifikator: {tag} · {confidence}% tillid · kilde: {source}",semanticInferred:"udledt: {tag}",currency:"Valuta",currencyHelper:"ISO 4217-kode anvendt på beløbsformatering.",pii:"Maskér som standard",piiHelper:"Maskerede værdier vises slørede; afmaskering kræver tilladelsen data.unmask_pii og logges i auditloggen.",enum:"Enum-semantik",enumKind:"Enum-art",enumWorkflow:"Arbejdsgang",enumCategory:"Kategori",enumLabelFor:"Etiket for {value}",enumToneFor:"Tone for {value}",enumToneAuto:"auto",enumHelper:"Arbejdsgangs-enums driver statusmærker og tavlekolonner; toner knytter værdierne til den semantiske farvetoneskala."},diff:{one:"1 ændring",count:"{count} ændringer",saved:"Tilsidesættelser gemt.",revertOne:"Fortryd {change}",regenerate:"Regenerér sider",revertAll:"Fortryd alle",save:"Gem tilsidesættelser"},table:{iconPicker:"Tabelikon",system:"System",labelOverride:"Visningsetiket",labelHelper:"Udledt: {name}",icon:"Ikon",navGroup:"Navigationsgruppe",navGroupHelper:"Navigationsplaceringen bestemmes af generatoren — en table.navGroup-tilsidesættelse er ikke en del af v1-vokabularet.",include:"Medtag i den genererede app",includeHelper:"Udeladte tabeller får ingen sider og forsvinder fra navigationen.",shape:"Tabelform (klassificeret)",role:"Rolle",unclassified:"Ikke klassificeret",kind:"Art",hierarchy:"Hierarki",selfFk:"Selvreference via {column}",polymorphic:"Polymorfe par",rows:"Rækkeestimat",shapeHelper:"Klassificeringen genberegnes ved hver introspektion; tilsidesættelser lægges ovenpå og overlever regenerering."},relations:{declared:"Deklarerede fremmednøgler",noneDeclared:"Ingen deklarerede fremmednøgler berører denne tabel.",inferred:"Udledte relationer",noneInferred:"Intet udledt for denne tabel.",confidence:"udledt · {pct}%",accepted:"Accepteret",suppressed:"Undertrykt",accept:"Accepter",suppress:"Undertryk",overrides:"Relationer fra tilsidesættelser (anvendt)",overrideBadge:"tilsidesættelse",add:"Tilføj virtuel relation",fromColumn:"Fra kolonne",noColumns:"Ingen matchende kolonne",fromPlaceholder:"customer_id",toTable:"Til tabel",noTables:"Ingen matchende tabel",toColumn:"Til kolonne",cardinality:"Kardinalitet",addButton:"Tilføj relation"},toast:{saved:"Skema-tilsidesættelser gemt",savedDetail:"Det anvendte skema nedenfor afspejler dine ændringer.",regenerated:"{created} oprettet · {updated} opdateret · {unchanged} uændret",regeneratedDetail:"Sider, du har redigeret i hånden, bevares — kun sider med en urørt generated_hash blev regenereret på stedet.",regenerateFailed:"Regenerering mislykkedes"},title:"Skema-ommapning",subtitle:"{tables} tabeller · {applied} tilsidesættelser anvendt",saveFailed:"Lagring mislykkedes: {message}",loadFailed:"Kunne ikke indlæse skemaet for denne forbindelse.",inspector:"Inspektør",empty:{title:"Vælg en tabel eller kolonne",description:"Vælg noget i skematræet for at ommappe dets etiket, type, relationer eller maskering."},tabs:{details:"Detaljer",relations:"Relationer"},tree:{label:"Skema",search:"Søg i tabeller og kolonner",searchPlaceholder:"Søg i tabeller…",noMatches:"Ingen tabeller matcher din søgning.",collapse:"Fold tabel sammen",expand:"Fold tabel ud",unsaved:"Ugemt ændring",excluded:"Udeladt"},badge:{pk:"PK",fk:"FK",unique:"UNIK",pii:"PII",masked:"Maskeret"}}},onboarding:{title:"Kom godt i gang",subtitle:"Nogle få trin for at gøre dit arbejdsområde klar.",loading:"Indlæser din tjekliste…",welcome:"Velkommen til Adminium, {name} 👋",progressBody:"Du har gennemført {done} af {total} opsætningstrin. Gennemfør resten for at låse hele arbejdsområdet op.",completeBody:"Alt er klar — dit arbejdsområde er fuldt konfigureret.",ringLabel:"{done} af {total} trin gennemført",done:"Færdig",skip:"Spring over for nu",goToWorkspace:"Gå til arbejdsområde",help:{title:"Brug for hjælp?",body:"Vi er her for at hjælpe dig hurtigt i gang."},steps:{connectDatabase:{title:"Forbind en database",desc:"Peg Adminium mod din Postgres, MySQL eller SQLite — en skrivebeskyttet rolle er nok.",time:"5 min",action:"Forbind"},chooseTables:{title:"Vælg dine tabeller",desc:"Vælg hvilke tabeller der bliver til sider — personlige data maskeres som standard.",time:"2 min",action:"Vælg"},inviteTeammates:{title:"Inviter holdkammerater",desc:"Få dit team med til at udforske og samarbejde.",time:"2 min",action:"Inviter"},workspaceDefaults:{title:"Angiv standarder",desc:"Tema, accent, tæthed og sprog for alle.",time:"1 min",action:"Angiv"}},entry:{wayBack:"Kom godt i gang · {done}/{total}",dismiss:"Skjul tjeklisten",continue:"Fortsæt opsætning",banner:"Færdiggør opsætningen af dit arbejdsområde — {done} af {total} trin klaret."}},views:{baseView:"Alle poster",menuLabel:"Gemte visninger",saveAs:"Gem aktuel som visning…",updateActive:"Opdater „{name}“",rename:"Omdøb…",setDefault:"Angiv som standard",delete:"Slet…",saveTitle:"Gem visning",save:"Gem visning",renameTitle:"Omdøb visning",saveName:"Gem navn",nameLabel:"Visningsnavn",namePlaceholder:"f.eks. Aktive denne måned",nameRequired:"Angiv et navn til denne visning.",saveFailed:"Visningen kunne ikke gemmes.",deleteTitle:"Slet visning",deleteBody:"Dette fjerner den gemte visning. Dine data påvirkes ikke.",deletePrompt:"Skriv visningens navn for at bekræfte",deleteConfirm:"Slet visning",savedToast:"Visning „{name}“ gemt.",updatedToast:"Visning „{name}“ opdateret.",defaultToast:"„{name}“ er nu standardvisningen.",deletedToast:"Visning „{name}“ slettet."},builder:{view:"Vis",edit:"Rediger",done:"Færdig",addWidget:"Tilføj widget",saveLayout:"Gem layout",saving:"Gemmer…",savedShort:"Gemt",options:"Dashboard-indstillinger",resetLayout:"Nulstil layout",resetTitle:"Nulstil til det delte layout?",resetBody:"Dette fjerner dine personlige ændringer og gendanner det dashboard, alle ser. Dine data påvirkes ikke.",resetConfirm:"Nulstil layout",resetDone:"Layout nulstillet til den delte standard.",sharedNote:"Du redigerer det delte dashboard, som alle ser.",personalNote:"Du redigerer dit personlige layout — kun du ser disse ændringer.",savedShared:"Dashboard gemt for alle med adgang.",empty:"Dette dashboard har endnu ingen widgets.",emptyAction:"Tilføj widget",palette:{title:"Tilføj widget",count:"{count} widgets",searchLabel:"Søg widgets",searchPlaceholder:"Søg widgets…",clear:"Ryd søgning",noResults:"Ingen widgets matcher “{query}”.",add:"Tilføj {name}",added:"{name} tilføjet."},inspector:{title:"Konfigurer widget",empty:"Denne widget har ingen indstillinger at konfigurere.",locked:"Låst",lockedHint:"Dette felt er angivet af kilden og kan ikke redigeres her.",selectPlaceholder:"Vælg…",increment:"Forøg",decrement:"Formindsk",done:"Færdig"},item:{configure:"Konfigurer {name}",duplicate:"Dupliker {name}",remove:"Fjern {name}",removed:"{name} fjernet.",duplicated:"{name} duplikeret."},families:{kpi:"KPI’er",charts:"Diagrammer",tables:"Tabeller",feeds:"Feeds",calendar:"Kalender",boards:"Tavler",geo:"Kort",media:"Medier",communication:"Kommunikation",forms:"Formularer",chrome:"Navigation",system:"System",domain:"Domæne"},versions:"Versioner",versionsEmpty:"Ingen gemte versioner endnu",saveAsVersion:"Gem som version",saveVersionTitle:"Gem en version",saveVersionBody:"Tager et øjebliksbillede af det aktuelle dokument. Gendan det når som helst fra Versioner.",versionName:"Versionsnavn",versionNamePlaceholder:"f.eks. Før Q3-satsændringen"},setup:{title:"Konfigurer Adminium",subtitle:"Opret den første administrator. Det sker kun én gang.",progress:"Opsætningsforløb",steps:{account:"Administratorkonto",consent:"Privatliv"},account:{name:"Dit navn",email:"E-mail",emailInvalid:"Indtast en gyldig e-mailadresse.",password:"Adgangskode",passwordHelper:"Mindst {min} tegn.",passwordTooShort:"Brug mindst {min} tegn.",confirm:"Bekræft adgangskode",passwordMismatch:"Adgangskoderne er ikke ens.",continue:"Fortsæt",strength:"Adgangskodens styrke",strengthLevels:{weak:"Svag",fair:"Nogenlunde",good:"God",strong:"Stærk"}},consent:{telemetry:{title:"Del anonyme brugsdata",description:"Hjælper os med at se, hvilke databasemotorer vi skal prioritere. Slået fra, indtil du slår det til."},updates:{title:"Søg efter nye udgivelser",description:"Viser en besked, når en ny version — også en sikkerhedsrettelse — er tilgængelig. Det spørger GitHub om den nyeste udgivelse, hvilket afslører denne instans’ IP-adresse og version over for GitHub. Der sendes ikke andet."},sentTitle:"Præcis hvad der sendes:",sent:{instanceId:"Et tilfældigt instans-id (en UUID genereret her; ikke udledt af dit navn, din vært eller din database)",version:"Den Adminium-version, denne instans kører",engines:"Hvilke typer databasemotorer der er forbundet (f.eks. “postgres”) — kun typerne"},neverTitle:"Sendes aldrig:",never:{schema:"Dit skema — ingen tabel-, kolonne- eller enum-navne",rows:"Dine data — ikke en eneste række, aldrig",connections:"Forbindelsesstrenge, værtsnavne eller legitimationsoplysninger",people:"Brugeres e-mails, navne eller id’er",llm:"AI-prompter eller kørselsindhold"},reversible:"Begge dele er slået fra som standard, og du kan ændre dem senere under Indstillinger.",back:"Tilbage",finish:"Opret administratorkonto"},error:{alreadyCompleted:"Denne instans er allerede sat op. Log ind med den eksisterende administratorkonto.",rejected:"Serveren afviste de oplysninger. Tjek e-mail og adgangskode, og prøv igen.",failed:"Opsætningen mislykkedes. Tjek din forbindelse, og prøv igen."}},about:{title:"Om Adminium",subtitle:"Version, licens og hvor denne instans’ kildekode findes.",version:"Version",license:"Licens",metaStore:"Metalager",node:"Node.js",engine:{postgres:"PostgreSQL",mysql:"MySQL / MariaDB",sqlite:"SQLite"},licenseCard:{title:"Frit og open source",body:"Adminium er licenseret under GNU Affero General Public License v3.0. Du må frit køre, studere, ændre og dele det. Hvis du tilbyder en ændret version til andre over et netværk, beder AGPL dig om også at tilbyde dem kildekoden."},viewLicense:"Læs licensen",viewSource:"Hent kildekoden",updates:{title:"Opdateringer",description:"Om denne instans søger efter nye udgivelser."},update:{disabled:"Opdateringstjek er slået fra, så denne instans kontakter aldrig GitHub. Slå det til under Indstillinger for at høre om nye udgivelser.",current:"Du kører den nyeste udgivelse.",available:"Adminium {version} er tilgængelig",availableBody:"Du kører {version}.",viewRelease:"Se udgivelsesnoter"},desktop:{unknown:"Ukendt",appVersion:"App-version",serverVersion:"Serverversion",migration:"Meta-store-migrering",electron:"Electron",chromium:"Chromium",runtimeNode:"Node-runtime",system:{title:"System"},dataDir:"Datamappe",reveal:"Vis i mappe",secret:{title:"Hemmelighedslager",safe:"Krypteret af dit operativsystem",plainWarning:"Denne computer har ingen tilgængelig systemnøglering, så din Adminium-hemmelighed gemmes ukrypteret på disken. Alle, der kan læse denne maskines filer, kan læse den. Opret en login-nøglering (eller en Linux-secret-service), og genstart Adminium for at beskytte den."},updates:{title:"Opdateringer",mode:{notify:"Underret mig om nye versioner",manual:"Kun når jeg tjekker",disabled:"Fra (offline)"},disabledBody:"Automatiske opdateringer er slået fra (offline). Installér nye versioner manuelt.",check:"Søg efter opdateringer",checking:"Tjekker…",lastChecked:"Sidst tjekket {when}",available:"Version {version} er tilgængelig",none:"Du har den nyeste version.",unavailable:"Opdateringer er slået fra i denne installation.",error:"Kunne ikke søge efter opdateringer.",download:"Hent opdatering",downloading:"Henter… {percent} %",downloaded:"Version {version} er klar til installation",restart:"Genstart for at installere",downloadError:"Overførslen blev ikke gennemført. Du kan prøve igen.",toast:{available:"En ny version af Adminium er tilgængelig",view:"Vis",downloaded:"Opdateringen er klar til installation",restart:"Genstart nu"}},legal:{title:"Licenser",agpl:"Adminium Desktop er fri software under GNU Affero General Public License v3.0.",viewLicense:"Vis licens",licenseTitle:"GNU Affero General Public License v3.0",licenseUnavailable:"Den medfølgende licensfil er ikke tilgængelig i denne build.",viewNotices:"Tredjepartslicenser",noticesTitle:"Tredjepartsmeddelelser",noticesUnavailable:"Tredjepartsmeddelelser genereres, når appen pakkes, og er ikke tilgængelige i denne build.",source:"Kildekode",close:"Luk"},telemetry:{title:"Anonyme brugsdata",label:"Del anonyme brugsdata",description:"Hjælper os med at beslutte, hvilke databasemotorer vi skal prioritere. Slået fra, medmindre du slår det til; der sendes aldrig skema, data eller personlige oplysninger.",saveFailed:"Indstillingen kunne ikke gemmes. Prøv igen."},diagnostics:{title:"Diagnostik",description:"Oplysninger, der hjælper, når du rapporterer et problem. Der medtages intet skema eller data.",copy:"Kopiér diagnostiske oplysninger",copied:"Kopieret",showLogs:"Vis logfiler",dataSize:"Datastørrelse: {size}"}}},apiKeys:{title:"API-nøgler og tokens",subtitle:"Administrér programmatisk adgang til dit workspace.",createButton:"Opret nøgle",copy:"Kopiér",copied:"Kopieret",revoke:"Tilbagekald nøgle",neverUsed:"Aldrig brugt",lastUsed:"Sidst brugt {since}",scopesOverflow:"+{count} mere",status:{active:"Aktiv",revoked:"Tilbagekaldt",expired:"Udløbet"},list:{title:"Nøgler",activeCount:"{count, plural, one {# aktiv nøgle} other {# aktive nøgler}}"},empty:{title:"Ingen API-nøgler endnu",body:"Opret en for at kalde Adminiums API fra din egen kode."},revealed:{title:"Ny nøgle oprettet",body:"Kopiér den nu — du får den aldrig at se igen."},rolesUnavailable:{title:"Roller er ikke synlige for dig",body:"At oprette en nøgle er at vælge den rolle, den handler som, og din konto må ikke læse rollelisten. Bed en administrator om rettigheden „Administrér roller“."},quickStart:{title:"Kom hurtigt i gang",body:"Godkend forespørgsler med din nøgle i Authorization-headeren."},create:{title:"Opret API-nøgle",description:"Nøglen handler med rettighederne fra den rolle, du vælger.",name:"Navn",namePlaceholder:"f.eks. Analytics-pipeline",role:"Rolle",roleHelper:"Vælg den mindst privilegerede rolle, der kan klare opgaven.",expires:"Udløber",expiresHelper:"Lad feltet stå tomt for en nøgle, der aldrig udløber.",submit:"Opret nøgle",failed:"Nøglen kunne ikke oprettes"},revokeConfirm:{title:"Tilbagekald API-nøgle",body:"Al kode, der stadig kalder API’et med „{name}“, begynder straks at fejle. Det kan ikke fortrydes.",prompt:"Skriv „{name}“ for at bekræfte",confirm:"Tilbagekald nøgle"}},changelog:{title:"Ændringslog",subtitle:"Produktnyheder og udgivelser.",allReleases:"Alle udgivelser",tag:{new:"Nyt",improved:"Forbedret",fixed:"Rettet",security:"Sikkerhed"},filter:{all:"Alle",label:"Filtrér ændringer efter type"},empty:{title:"Intet under dette filter",body:"Ingen udgivelse har endnu indeholdt en ændring af den slags.",clear:"Vis alle ændringer"}},kb:{title:"Vidensbase",subtitle:"{count, plural, one {# guide} other {# guides}} · fuld dokumentation på docs.adminium.dev",openDocs:"Åbn dokumentationen",browse:"Gennemse efter emne",hero:{title:"Hvad kan vi hjælpe med?",subtitle:"Søg i guides, API-dokumentation og fejlfinding.",placeholder:"Søg i vidensbasen…",label:"Søg i vidensbasen",clear:"Ryd søgning"},category:{start:"Kom godt i gang",connect:"Forbind data",api:"API og udvikling",security:"Sikkerhed og adgang",selfhost:"Selv-hosting",trouble:"Fejlfinding",count:"{count, plural, one {# artikel} other {# artikler}}",selected:"Filtreret"},list:{all:"Alle guides",clear:"Ryd filter"},empty:{title:"Ingen guides matcher din søgning",body:"Prøv et andet ord, eller søg i den fulde dokumentation på docs.adminium.dev.",openDocs:"Åbn dokumentationen"},article:{install:{title:"Installér Adminium",excerpt:"Kør fra et kildekode-checkout eller med docker run, og nå førstegangsguiden på et minut."},firstAdmin:{title:"Opret din første superadministrator",excerpt:"Hvad førstegangsguiden spørger om, og hvorfor den kun kan køre én gang."},connectDb:{title:"Forbind din første database",excerpt:"Peg Adminium mod PostgreSQL, MySQL eller SQLite og generér en adminapp."},schemaFile:{title:"Generér ud fra en skemafil",excerpt:"Upload et Prisma-skema, en Django-models.py, en Rails-schema.rb eller et .sql-dump — uden forbindelse."},readOnly:{title:"Brug en skrivebeskyttet rolle",excerpt:"Introspektion læser kun skemametadata. Giv Adminium færrest mulige rettigheder."},apiKeys:{title:"Godkendelse med API-nøgler",excerpt:"Opret og tilbagekald nøgler — og hvorfor en nøgle kun vises for dig én gang."},rest:{title:"REST API-reference",excerpt:"Hvert endpoint den genererede app udstiller, med request- og responseformater."},manifest:{title:"Sidemanifestet",excerpt:"Hvordan en side beskrives som konfiguration, og hvordan du redigerer en i hånden."},roles:{title:"Roller og rettigheder",excerpt:"Tildel Læser, Redaktør og Admin, og byg dine egne roller ud fra rettighedsmatricen."},audit:{title:"Læs revisionsloggen",excerpt:"Hvem ændrede hvad, hvornår og hvorfra."},secrets:{title:"Sådan opbevarer Adminium dine hemmeligheder",excerpt:"Forbindelsesoplysninger krypteres med ADMINIUM_SECRET. API-nøgler hashes."},docker:{title:"Selv-hosting med Docker",excerpt:"Det officielle image, docker-compose og drift af en separat metadatabase."},backup:{title:"Sikkerhedskopiér og flyt en instans",excerpt:"export-zip samler din serverkonfiguration; importér den for at genskabe samme opsætning et andet sted."},telemetry:{title:"Telemetri og opdateringstjek",excerpt:"Begge er tilvalg og slået fra som standard. Hvad der sendes, hvis du slår dem til."},connectionFails:{title:"En databaseforbindelse fejler",excerpt:"Læs diagnosekortet: vært, port, TLS og den IP, din database skal tillade."},missingTables:{title:"Tabeller mangler efter introspektion",excerpt:"Skemasynlighed, udeladte tabeller og en ny generering."}}},desktop:{menu:{file:"Fil",fileNewDatabase:"Ny lokal database…",fileOpenSqlite:"Åbn SQLite-fil…",fileBackupNow:"Sikkerhedskopiér nu…",fileRestore:"Gendan fra sikkerhedskopi…",edit:"Rediger",view:"Vis",window:"Vindue",help:"Hjælp",helpDocs:"Adminium-dokumentation",helpShortcuts:"Tastaturgenveje",helpLogs:"Vis logfiler",helpCheckForUpdates:"Søg efter opdateringer…",helpAbout:"Om Adminium"},settings:{explainer:"Disse indstillinger gælder kun for Adminium-appen på denne computer. De gemmes på denne maskine, ikke i dit workspace."},security:{heading:"Login"},requireLogin:{label:"Kræv login på denne enhed",description:"Adminium logger dig normalt ind automatisk på denne computer. Slå dette til for at blive bedt om din adgangskode ved hver opstart — en god idé, hvis andre kan bruge maskinen. Det træder i kraft, næste gang du åbner Adminium.",savedOn:"Der kræves login ved næste opstart",savedOff:"Adminium springer login over på denne computer",saveFailed:"Indstillingen kunne ikke gemmes. Prøv igen."},chip:{local:"Lokal",lanShare:"Lokal · Deles på netværket",remoteDb:"Lokal + fjerndatabase",remoteDbOffline:"Fjerndatabase offline",remoteDbOfflineDetail:"Kan ikke nå {names}. Sider for disse forbindelser viser en genforbindelsestilstand."},lan:{heading:"Del på lokalt netværk",label:"Lad andre enheder på dette netværk bruge Adminium",description:"Andre computere, tablets og telefoner på samme netværk kan åbne Adminium i en browser og logge ind med deres egen konto. Adminium skal blive ved med at være åbent på denne computer, for at de kan nå det.",savedOn:"Deler på dit lokale netværk",savedOff:"Deling stoppet — Adminium er tilbage på kun denne computer",saveFailed:"Kunne ikke ændre netværksdeling",noUsers:"Du er den eneste med en konto, så ingen andre kan logge ind endnu. Deling virker alligevel — du skal bare invitere folk, før de kan bruge det.",usersUnknown:"Adminium kunne ikke tjekke, hvem der ellers har en konto på denne computer. Deling virker stadig, og alle med en konto kan logge ind — det er kun dette tjek, der fejlede.",acknowledge:"Forstået — jeg inviterer folk bagefter",port:"Port",portHelper:"Standard {port}",portInvalid:"Brug et tal mellem 1024 og 65535.",applyPort:"Skift port",portInUse:"Port {port} bruges allerede af et andet program.",portInUseHint:"Intet blev ændret — deling er stadig slået fra.",portInUseNoSuggestion:"Intet blev ændret. Prøv en anden port.",tryPort:"Prøv {port}",urlsHeading:"Åbn dette på en anden enhed",noUrls:"Denne computer er ikke forbundet til et netværk lige nu, så der er ingen adresse at dele. Forbind til Wi-Fi eller sæt et kabel i, så udfyldes listen.",copyUrl:"Kopiér",sessions:"{count, plural, =0 {Ingen enheder er logget ind fra dette netværk} one {# enhed logget ind fra dette netværk} other {# enheder logget ind fra dette netværk}}",sessionsUnknown:"Tjekker hvem der er forbundet…",pending:"Starter deling…",mismatch:"Adminium kan stadig nås på dette netværk",mismatchBody:"Deling er slået fra, men serveren har endnu ikke frigivet netværket. Genstart Adminium for at lukke det.",transportTitle:"Trafik på dit lokale netværk er ikke krypteret.",transportBody:"Del kun på netværk, du stoler på. Brug Adminium self-host bag HTTPS til fjernadgang.",firewall:"Første gang du deler, spørger dit styresystem, om indgående forbindelser skal tillades — vælg Tillad, ellers kan andre enheder ikke nå Adminium."},setup:{title:"Velkommen til Adminium",subtitle:"Fire korte trin, og Adminium har bygget en administrationsapp ud fra din database. Alt bliver på denne computer.",progress:"Opsætningsforløb",back:"Tilbage",continue:"Fortsæt",createAccount:"Opret konto og fortsæt",step:{location:"Velkommen",database:"Din første database",account:"Din konto",generate:"Generér"},dataDir:{heading:"Hvor skal Adminium gemme dine data?",description:"Dine databaser, indstillinger og sikkerhedskopier ligger alle i denne mappe. Alt bliver på denne computer — intet uploades nogen steder.",label:"Datamappe",loading:"Læser den nuværende placering…",pending:"Adminium genstarter, når du fortsætter, så det kan flytte til denne mappe.",change:"Skift…",revert:"Fortryd",dialogTitle:"Vælg, hvor Adminium gemmer dine data",cloudSyncTitle:"Denne mappe synkroniseres til skyen",cloudSyncWarning:"Adminium gemmer sine data i SQLite-filer. {provider} synkroniserer filer i “{folder}” ved at kopiere dem i baggrunden, hvilket kan ødelægge en database, der er åben — og miste data uden varsel. Vælg en mappe uden for {provider}.",chooseAnother:"Vælg en anden mappe",useAnyway:"Brug den alligevel — jeg accepterer risikoen",unusableTitle:"Adminium kan ikke bruge den mappe",failed:"Adminium kunne ikke bruge den mappe."},source:{heading:"Hvad skal Adminium bygge ud fra?",description:"Adminium læser en databases skema og genererer en administrationsapp ud fra det. Du kan tilføje flere databaser senere.",groupLabel:"Databasekilde",local:{title:"Opret en ny lokal database",description:"Start fra ingenting, eller fra en skemafil du allerede har. Databasen oprettes inde i din datamappe.",name:"Databasenavn",namePlaceholder:"Drift",nameUnusable:"Brug mindst ét bogstav eller tal — filnavnet bygges ud fra dette.",fileHelper:"Opretter {file}",schemaLabel:"Start fra",blank:"Tom",fromFile:"En skemafil",schemaFile:"Skemafil",schemaFileHelper:".sql, pg_dump, Prisma, Drizzle, TypeORM, Sequelize, schema.rb, Django eller Adminium-JSON. Adminium oversætter det til SQLite.",placeholder:"Generér pladsholderposter automatisk",placeholderHelper:"Du importerede et skema uden rækker. Fyld hver tabel med realistiske eksempeldata, så dine dashboards og diagrammer vises med det samme."},openSqlite:{title:"Åbn en eksisterende SQLite-fil",description:"Peg Adminium mod en .sqlite-fil på denne computer. Den åbnes, hvor den ligger — intet kopieres eller flyttes.",browse:"Vælg en .sqlite-fil…",change:"Vælg en anden fil…",networkTitle:"Den fil ligger på et netværksdrev",networkBody:"SQLite-låsning er upålidelig over netværksdrev, og en afbrudt forbindelse midt i en skrivning kan ødelægge databasen. En kopi på denne computers egen disk er sikrere."},remote:{title:"Forbind til en serverdatabase",description:"PostgreSQL eller MySQL. Kræver en database, der kan nås på netværket; Adminiums egne tabeller bliver stadig på denne computer.",networkNote:"Kræver en database, der kan nås på netværket",metaNote:"Adminiums egne tabeller — dine sider, indstillinger og login — bliver i datamappen på denne computer under alle omstændigheder.",engine:"Motor",name:"Forbindelsesnavn",namePlaceholder:"Produktion",dsn:"Forbindelsesstreng",dsnHelper:"Adminium tester den, når det forbinder. Brug en skrivebeskyttet rolle, hvis du kun vil have dashboards."},demo:{title:"Udforsk demodatabasen",description:"En færdig database over teamdrift, så du kan se, hvad Adminium bygger, før du peger det mod dine egne data. Slet den, når du vil.",unavailable:"Denne udgave indeholder ikke demodataene, så der er intet at indlæse. Vælg en af mulighederne ovenfor."}},account:{heading:"Opret din konto",description:"Dette er administratorkontoen for denne kopi af Adminium. Adgangskoden beskytter dine sikkerhedskopier og alle, du deler med på dit netværk — du bliver ikke spurgt om den ved hver opstart.",name:"Dit navn",email:"E-mail",password:"Adgangskode",passwordHelper:"Mindst {min} tegn.",confirm:"Bekræft adgangskode",strength:"Adgangskodens styrke",strengthLevels:{weak:"Svag",fair:"Nogenlunde",good:"God",strong:"Stærk"},singleUser:"Spring login over på denne computer",singleUserHelper:"Adminium logger dig automatisk ind, når du åbner det her. Slå dette fra, hvis andre bruger denne maskine. Du kan ændre det senere under Indstillinger → Skrivebord.",locale:"Sprog",theme:"Udseende",alreadyExists:"Denne kopi af Adminium har allerede en konto. Log ind med den i stedet.",failed:"Adminium kunne ikke oprette den konto."},generate:{creating:"Sætter din database op…",introspecting:"Læser dit skema — tabeller, kolonner og relationer…",working:"Arbejder…",offlineNote:"Alt dette sker på denne computer.",failedTitle:"Adminium kunne ikke sætte den database op",failedBody:"Noget gik galt. Prøv igen.",retry:"Prøv igen"}}},capabilities:{heading:"App-tilladelser",description:"Apps, du installerer, kan bede om at bruge denne computers hardware. Du godkender hver enkelt og kan tilbagekalde adgang når som helst.",grantedTo:"Tilladt for {app}",status:{available:"Tilgængelig",stub:"Ikke tilgængelig endnu",unavailable:"Utilgængelig"},allow:{action:"Tillad…"},revoke:{action:"Tilbagekald",saved:"Adgang tilbagekaldt",failed:"Kunne ikke tilbagekalde adgang. Prøv igen."},grant:{saved:"Adgang tilladt",failed:"Kunne ikke tillade adgang. Prøv igen."},catalog:{printerEscpos:{name:"Kvitteringsprinter (ESC/POS)",scope:"Udskriv på kvitteringsprintere og åbn en tilsluttet kasseskuffe"}},consent:{title:"Tillad {app}?",subtitle:"{app} beder om at bruge denne computers hardware.",willAllow:"Dette vil tillade {app} at:",revokeNote:"Du kan tilbagekalde dette når som helst under Indstillinger → Skrivebord. Tillad kun apps, du stoler på.",deny:"Ikke nu",approve:"Tillad"}},emailTemplates:{title:"E-mailskabeloner",subtitle:"Transaktions- og livscyklus-e-mails, som dit arbejdsområde sender.",search:"Søg i skabeloner…",loadFailed:"Skabelonerne kunne ikke indlæses",empty:"Ingen e-mailskabeloner endnu",emptyBody:"Skabeloner vises her, når serveren opretter dem, eller du selv opretter en.",noMatches:"Ingen matchende skabeloner",noMatchesBody:"Prøv en anden søgning.",live:"Aktiv",disabled:"Deaktiveret",name:"Skabelonnavn",subject:"Emne",enabled:"Aktiveret"},board:{addCard:"Tilføj kort",compose:{placeholder:"Korttitel…",add:"Tilføj",cancel:"Annuller"},empty:{title:"Ingen tavlekolonner",body:"Tilføj et statusfelt for at gruppere kort i kolonner."}},calendar:{dateRange:"Datointerval",compose:{placeholder:"Begivenhedstitel…",add:"Tilføj",cancel:"Annuller",open:"Tilføj begivenhed"},agenda:{empty:"Intet planlagt"}},scheduler:{prevWeek:"Forrige uge",nextWeek:"Næste uge",week:"Uge",month:"Måned",resource:"Ressource",coverage:"Dækning",addShift:"Tilføj vagt",shiftCount:"{n} vagter"},planning:{drawer:{close:"Luk",loading:"Indlæser post",error:"Denne post kunne ikke indlæses."}},files:{uploadsUnavailable:"Upload er ikke tilgængeligt på denne side endnu."},chat:{messageSent:"Besked sendt",sendFailed:"Beskeden kunne ikke sendes."},templates:{crud:{title:"Poster"},dashboard:{title:"Dashboard"},board:{title:"Tavle"},calendar:{title:"Kalender"},scheduler:{title:"Vagtplan"},logViewer:{title:"Logfiler"},files:{title:"Filer"},chat:{title:"Chat"},builder:{title:"Editor"},wizard:{title:"Guide"},settings:{title:"Indstillinger"},directory:{title:"Katalog",searchPlaceholder:"Søg efter personer…",allFilter:"Alle",clearFilters:"Ryd filtre",detailTitle:"Person",emptyTitle:"Ingen personer endnu",emptyBody:"Personer vises her, efterhånden som rækker lander i tabellen.",noMatchesTitle:"Ingen matchende personer",noMatchesBody:"Prøv en anden søgning, eller fjern et filter.",errorTitle:"Dette katalog kunne ikke indlæses",loading:"Indlæser personer",memberCount:"{count} personer"},masterDetail:{title:"Liste og detaljer",allFilter:"Alle",clearFilters:"Ryd filtre",emptyTitle:"Intet her endnu",emptyBody:"Poster vises her, efterhånden som rækker lander i tabellen.",noMatchesTitle:"Ingen matchende poster",noMatchesBody:"Prøv at fjerne et filter.",errorTitle:"Denne liste kunne ikke indlæses",loading:"Indlæser poster",selectPrompt:"Vælg en post"},queueInbox:{title:"Kø",approve:"Godkend",reject:"Afvis",allSegment:"Alle",approvedToast:"{count} godkendt.",rejectedToast:"{count} afvist.",undoneToast:"Beslutning fortrudt.",failedToast:"Beslutningen mislykkedes.",bulkFailed:"{failed} af {total} valgte rækker kunne ikke opdateres.",undoFailedToast:"Beslutningen kunne ikke fortrydes.",rejectTitle:"Afvis anmodninger",rejectCount:"Valgt · {count}",rejectNote:"Anmoderen får besked sammen med din note.",rejectPlaceholder:"Tilføj en note til anmoderen…",rejectConfirm:"Afvis",emptyTitle:"Intet i køen",emptyBody:"Nye anmodninger vises her, når de ankommer.",caughtUpTitle:"Du er helt ajour",caughtUpBody:"Ingen anmodninger under denne fane lige nu.",errorTitle:"Denne kø kunne ikke indlæses",loading:"Indlæser kø",selectPrompt:"Vælg en anmodning",daysUnit:"{count} dage"}},dataio:{back:"Tilbage",import:{title:"Importér data",stepUpload:"Upload",stepMap:"Tilknyt kolonner",stepValidate:"Validér",stepRun:"Importér og gennemgå",targetLabel:"Måltabel",targetPlaceholder:"Vælg en tabelside…",notATable:"Den side er ikke en tabel — vælg en tabelside at importere til.",dropTitle:"Slip en CSV-fil for at importere",dropHint:"CSV op til 32 MB — første række skal være headeren",skipTarget:"Importér ikke",mapHint:"{count} datarækker i {file} — vælg et mål for hver kolonne.",validating:"Validerer…",toValidate:"Validér",validateFailed:"Validering mislykkedes.",validationSummary:"{valid} af {total} rækker klar til import — {invalid} springes over.",allValid:"Alle rækker bestod valideringen",run:"Kør import",runSkipping:"Importér {valid} rækker (spring {invalid} over)",progressLabel:"Importfremdrift",running:"Importerer…",kpiTotal:"Rækker i filen",kpiCreated:"Oprettet",kpiUpdated:"Opdateret",kpiSkipped:"Sprunget over",inconsistent:"Importtallene stemmer ikke — total skal være lig oprettet + opdateret + sprunget over.",downloadErrors:"Download rapporten over oversprungne rækker (CSV)",runFailed:"Importen mislykkedes."},exports:{title:"Dataeksporter",tableLabel:"Tabel",tablePlaceholder:"Vælg en tabel…",notATable:"Den side er ikke en tabel — vælg en tabelside at eksportere.",formatLabel:"Format",create:"Eksportér",createFailed:"Eksporten kunne ikke startes.",retention:"Eksporter gemmes i 30 dage og udløber derefter.",statusProcessing:"Behandler…",statusReady:"Klar — {rows} rækker · klik for at downloade",statusFailed:"Mislykkedes — {error}",statusCancelled:"Annulleret",statusExpired:"Udløbet",emptyTitle:"Ingen eksporter endnu",emptyBody:"Anmod om en ovenfor — artefakter vises her med deres status."}},reports:{title:"Planlagte rapporter",subtitle:"Tilbagevendende dataøjebliksbilleder af en side, leveret som notifikationer i appen.",new:"Ny rapport",loadFailed:"Planlagte rapporter kunne ikke indlæses.",saveFailed:"Denne rapport kunne ikke gemmes.",nextRun:"Næste kørsel",emptyTitle:"Ingen planlagte rapporter endnu",emptyBody:"Opret en for at få et tilbagevendende dataøjebliksbillede af enhver tabelside.",createTitle:"Ny planlagt rapport",editTitle:"Redigér planlagt rapport",nameLabel:"Navn",namePlaceholder:"f.eks. Ugentlig omsætning",pageLabel:"Side",pagePlaceholder:"Vælg en side…",frequencyLabel:"Frekvens",frequency:{daily:"Dagligt",weekly:"Ugentligt",monthly:"Månedligt"},dayOfWeekLabel:"Dag",dayOfMonthLabel:"Dag i måneden",timeLabel:"Tidspunkt",timezoneLabel:"Tidszone",formatLabel:"Levering",formatHint:"Dataøjebliksbillede (PDF/PNG-gengivelse kommer i en senere udgivelse) — hver kørsel producerer et CSV-øjebliksbillede og en notifikation i appen.",recipientsLabel:"Modtagere",recipientsHint:"Gemmes med rapporten. E-mail-levering kommer i en senere udgivelse — kørsler giver dig indtil videre besked i appen.",deliveryBadge:"CSV-øjebliksbillede",delete:"Slet",create:"Opret",cadence:{daily:"Dagligt kl. {time} ({zone})",weekly:"Ugentligt · {day} kl. {time} ({zone})",monthly:"Månedligt · dag {day} kl. {time} ({zone})"}},notifications:{channel:{inApp:"I appen",email:"E-mail",push:"Push"},event:{reportReady:"Planlagt rapport klar",reportFailed:"Planlagt rapport mislykkedes",backupCompleted:"Backup fuldført"}}};export{e as default};
|
|
2
|
+
//# sourceMappingURL=common-BribWmIo.js.map
|