pgkiln 0.82.0 → 0.83.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/db/migrations/153_component_events.sql +21 -0
  2. package/docs/apex-feature-parity.md +3 -3
  3. package/docs/guide/03-builder.md +8 -1
  4. package/docs/guide/04-pages-and-regions.md +2 -1
  5. package/docs/guide/07-dynamic-actions.md +27 -0
  6. package/docs/guide/11-from-apex.md +2 -1
  7. package/docs/guide/12-development.md +9 -1
  8. package/package.json +1 -1
  9. package/public/app.css +2 -0
  10. package/public/app.js +85 -4
  11. package/public/builder.css +25 -2
  12. package/public/data-modeler.js +8 -5
  13. package/public/sql-monitor.js +5 -2
  14. package/src/builder/ai-builder.ts +50 -46
  15. package/src/builder/api.ts +49 -49
  16. package/src/builder/autorest.ts +92 -87
  17. package/src/builder/changelog.ts +39 -37
  18. package/src/builder/components.ts +5 -4
  19. package/src/builder/data-modeler.ts +89 -84
  20. package/src/builder/data-security.ts +39 -37
  21. package/src/builder/dataload.ts +69 -65
  22. package/src/builder/datapump.ts +108 -97
  23. package/src/builder/ddl-tools.ts +38 -34
  24. package/src/builder/document-view.ts +11 -11
  25. package/src/builder/i18n/de.ts +1627 -0
  26. package/src/builder/i18n/en.ts +1627 -0
  27. package/src/builder/i18n/es.ts +1627 -0
  28. package/src/builder/i18n/fr.ts +1627 -0
  29. package/src/builder/i18n/it.ts +1627 -0
  30. package/src/builder/i18n/ja.ts +1627 -0
  31. package/src/builder/i18n/ko.ts +1627 -0
  32. package/src/builder/i18n/nl.ts +1627 -0
  33. package/src/builder/i18n/pt.ts +1627 -0
  34. package/src/builder/i18n/zh-cn.ts +1627 -0
  35. package/src/builder/i18n/zh-tw.ts +1627 -0
  36. package/src/builder/i18n.ts +18 -0
  37. package/src/builder/object-actions.ts +18 -16
  38. package/src/builder/object-browser.ts +2 -2
  39. package/src/builder/querybuilder.ts +42 -36
  40. package/src/builder/quicksql.ts +16 -18
  41. package/src/builder/region-settings.ts +201 -199
  42. package/src/builder/report-settings.ts +64 -60
  43. package/src/builder/rest-modules.ts +145 -143
  44. package/src/builder/sampledata.ts +59 -52
  45. package/src/builder/scheduling.ts +180 -159
  46. package/src/builder/scripts.ts +71 -65
  47. package/src/builder/sql-charts.ts +36 -30
  48. package/src/builder/sql-monitor.ts +95 -89
  49. package/src/builder/sql-utilities.ts +47 -40
  50. package/src/builder/top-sql.ts +21 -17
  51. package/src/builder/unload.ts +48 -44
  52. package/src/builder/worksheet.ts +3 -3
  53. package/src/cron-schedule.ts +47 -17
  54. package/src/metadata.ts +3 -1
  55. package/src/runtime/calendar.ts +3 -2
  56. package/src/runtime/context.ts +2 -0
  57. package/src/runtime/grid.ts +1 -0
  58. package/src/runtime/maps.ts +7 -4
  59. package/src/runtime/render.ts +6 -1
  60. package/src/runtime/routes.ts +4 -0
  61. package/src/runtime/tree.ts +4 -3
@@ -2422,4 +2422,1631 @@ export const de: BuilderMessages = {
2422
2422
  'gallery.item.autocomplete': 'Textfeld mit Autovervollständigung',
2423
2423
  'gallery.item.percent_graph': 'Prozentgrafik',
2424
2424
  'gallery.item.display_map': 'Karte anzeigen',
2425
+ // ------------------------------------------------------------ SQL Monitor, Top SQL (sprint 162, CD-8)
2426
+ 'sm.views': 'Ansichten des SQL-Monitors',
2427
+ 'sm.sessions': 'Sitzungen',
2428
+ 'sm.active': 'Aktiv',
2429
+ 'sm.idle_tx': 'Untätig in einer Transaktion',
2430
+ 'sm.blocked': 'Blockiert',
2431
+ 'sm.longest': 'Längste Laufzeit (s)',
2432
+ 'sm.cancel': 'Abbrechen',
2433
+ 'sm.terminate': 'Beenden',
2434
+ 'sm.cancel_confirm': 'Die Anweisung abbrechen, die Sitzung {pid} ausführt?',
2435
+ 'sm.terminate_confirm': 'Sitzung {pid} beenden? Ihre offene Transaktion wird zurückgesetzt und der Client getrennt.',
2436
+ 'sm.cancel_label': 'Anweisung von Sitzung {pid} abbrechen',
2437
+ 'sm.terminate_label': 'Sitzung {pid} beenden',
2438
+ 'sm.sessions_intro': 'Die Client-Sitzungen dieser Datenbank (pg_stat_activity) ohne untätige, aktive zuerst.',
2439
+ 'sm.sessions_intro_all': 'Die Client-Sitzungen dieser Datenbank (pg_stat_activity), aktive zuerst.',
2440
+ 'sm.hide_idle': 'Untätige Sitzungen ausblenden',
2441
+ 'sm.show_idle': 'Untätige Sitzungen anzeigen',
2442
+ 'sm.query_text_note': 'Der Text einer Abfrage wird nur für Rollen angezeigt, deren Statistiken der Eigentümer lesen darf ({role}).',
2443
+ 'sm.col.user': 'Benutzer',
2444
+ 'sm.col.application': 'Anwendung',
2445
+ 'sm.col.state': 'Status',
2446
+ 'sm.col.wait': 'Warten',
2447
+ 'sm.col.running': 'Läuft (s)',
2448
+ 'sm.col.blocked_by': 'Blockiert durch',
2449
+ 'sm.col.query': 'Abfrage',
2450
+ 'sm.col.actions': 'Aktionen',
2451
+ 'sm.statement_link': 'Statistiken und Plan dieser Anweisung',
2452
+ 'sm.no_other': 'Keine anderen Sitzungen.',
2453
+ 'sm.no_busy': 'Keine beschäftigten Sitzungen.',
2454
+ 'sm.waits': 'Warteereignisse',
2455
+ 'sm.waits_intro': 'Worauf die aktiven Sitzungen des Servers gerade warten ({cpu}, wenn sie nicht warten).',
2456
+ 'sm.cpu_running': 'CPU: läuft',
2457
+ 'sm.col.type': 'Typ',
2458
+ 'sm.col.event': 'Ereignis',
2459
+ 'sm.no_other_active': 'Keine anderen aktiven Sitzungen.',
2460
+ 'sm.in_progress': 'In Bearbeitung',
2461
+ 'sm.col.command': 'Befehl',
2462
+ 'sm.col.object': 'Objekt',
2463
+ 'sm.col.phase': 'Phase',
2464
+ 'sm.col.done': 'Erledigt',
2465
+ 'sm.updated': 'Aktualisiert {time} UTC',
2466
+ 'sm.refresh': 'Aktualisieren',
2467
+ 'sm.refresh_every': 'Aktualisieren alle',
2468
+ 'sm.seconds': '{n} Sekunden',
2469
+ 'sm.pause': 'Pause',
2470
+ 'sm.not_client': 'Sitzung {pid} ist (nicht mehr) eine Client-Sitzung dieser Datenbank.',
2471
+ 'sm.cancelled': 'Sitzung {pid} wurde gebeten, ihre Anweisung abzubrechen.',
2472
+ 'sm.terminated': 'Sitzung {pid} beendet.',
2473
+ 'sm.not_signalled': 'Sitzung {pid} konnte kein Signal erhalten.',
2474
+ 'sm.col.role': 'Rolle',
2475
+ 'sm.col.calls': 'Aufrufe',
2476
+ 'sm.col.total_ms': 'Gesamt ms',
2477
+ 'sm.col.mean_ms': 'Mittel ms',
2478
+ 'sm.col.rows': 'Zeilen',
2479
+ 'sm.col.hit': 'Blocktreffer',
2480
+ 'sm.col.read': 'Gelesene Blöcke',
2481
+ 'sm.col.statement': 'Anweisung',
2482
+ 'sm.sort_by': 'Sortieren nach {column}',
2483
+ 'sm.contains': 'Anweisung enthält',
2484
+ 'sm.no_match': 'Keine Anweisungen passen.',
2485
+ 'sm.none_yet': 'Noch keine Anweisungen aufgezeichnet.',
2486
+ 'sm.since': 'Statistiken seit {time}.',
2487
+ 'sm.at_most': 'Höchstens 100 Anweisungen werden angezeigt; Literale und Bind-Variablen erscheinen als {p1}, {p2}….',
2488
+ 'sm.reset_confirm': 'Die Anweisungsstatistiken des gesamten Servers löschen?',
2489
+ 'sm.reset': 'Statistiken zurücksetzen',
2490
+ 'sm.reset_done': 'Anweisungsstatistiken zurückgesetzt.',
2491
+ 'sm.top_intro': 'Die Anweisungen dieser Datenbank aus {ext}, alle Rollen. Klicken Sie auf eine Anweisung für ihren Plan.',
2492
+ 'sm.statement': 'Anweisung',
2493
+ 'sm.temp_blocks_written': 'Geschriebene temporäre Blöcke',
2494
+ 'sm.text': 'Text',
2495
+ 'sm.sql_text': 'SQL-Text',
2496
+ 'sm.open_worksheet': 'Im Arbeitsblatt öffnen',
2497
+ 'sm.back_top': 'Zurück zu Top-SQL',
2498
+ 'sm.by_role': 'Nach Rolle',
2499
+ 'sm.nested': 'verschachtelt',
2500
+ 'sm.col.stddev_ms': 'Std.-Abw. ms',
2501
+ 'sm.col.min_ms': 'Min. ms',
2502
+ 'sm.col.max_ms': 'Max. ms',
2503
+ 'sm.col.hit_short': 'Treffer',
2504
+ 'sm.col.read_short': 'Gelesen',
2505
+ 'sm.col.temp_read': 'Temp. gelesen',
2506
+ 'sm.col.temp_written': 'Temp. geschrieben',
2507
+ 'sm.explain_plan': 'Ausführungsplan',
2508
+ 'sm.explain_intro': 'EXPLAIN, ohne die Anweisung auszuführen. Unqualifizierte Namen werden zuerst im gewählten Schema gesucht.',
2509
+ 'sm.explain_intro_params': 'EXPLAIN, ohne die Anweisung auszuführen: Ihre Parameter ($1, …) erhalten einen generischen Plan. Unqualifizierte Namen werden zuerst im gewählten Schema gesucht.',
2510
+ 'sm.schema': 'Schema',
2511
+ 'sm.search_path': '(der Suchpfad)',
2512
+ 'sm.explain': 'Erklären',
2513
+ 'sm.err.one': 'Nur eine SQL-Anweisung kann erklärt werden.',
2514
+ 'sm.err.kind': 'Nur SELECT-, INSERT-, UPDATE-, DELETE-, MERGE- und VALUES-Anweisungen haben einen Plan.',
2515
+ 'sm.err.generic': 'Die Anweisung hat Parameter ($1, …): PostgreSQL 16 oder neuer kann sie mit einem generischen Plan erklären. Öffnen Sie sie im Arbeitsblatt und geben Sie Werte ein.',
2516
+ 'sm.err.params': 'Die Anweisung hat zu viele Parameter, um sie zu erklären.',
2517
+ 'topsql.not_installed': 'Die Erweiterung {ext} ist in dieser Datenbank nicht installiert. Zum Einschalten: {setting} setzen (postgresql.conf oder {alter}), PostgreSQL neu starten, dann als Superuser: {create}',
2518
+ 'topsql.not_loaded': 'Der Server lädt {ext} noch nicht. Setzen Sie {setting} (die Entwicklungsdatei {compose} tut das) und starten Sie PostgreSQL neu.',
2519
+ 'topsql.read_error': 'Die Statistiken konnten nicht gelesen werden: {message}',
2520
+ 'topsql.sort_by': 'Sortieren nach {total} {mean} {calls} {rows}',
2521
+ 'topsql.sort.total': 'Gesamtzeit',
2522
+ 'topsql.sort.mean': 'Zeit pro Aufruf',
2523
+ 'topsql.sort.calls': 'Aufrufe',
2524
+ 'topsql.sort.rows': 'Zeilen',
2525
+ 'topsql.share': 'Anteil',
2526
+ 'topsql.reset_confirm': 'Die Statistiken der Rolle {role} löschen?',
2527
+ 'topsql.reset': 'Statistiken zurücksetzen',
2528
+ 'topsql.none_yet': 'Noch keine Anweisungen für {role} aufgezeichnet. Verwenden Sie die Anwendung und kommen Sie dann zurück.',
2529
+ 'topsql.no_role': 'Diese Anwendung läuft als Eigentümerrolle, daher lassen sich ihre Anweisungen nicht unterscheiden. Geben Sie ihr in den Einstellungen eine Datenbankrolle.',
2530
+ 'topsql.owner': '(Eigentümer)',
2531
+ 'topsql.intro': 'Anweisungen, die seit dem letzten Zurücksetzen der Statistiken als Rolle {role} liefen, aus {ext}. Literale und Bind-Variablen erscheinen als {p1}, {p2}…; Anwendungen mit derselben Rolle teilen diese Liste.',
2532
+ 'topsql.back_activity': 'Zurück zur Aktivität',
2533
+ 'topsql.activity': 'Aktivität',
2534
+ 'topsql.no_db_role': 'Die Anwendung hat keine Datenbankrolle.',
2535
+ 'topsql.reset_done': 'Statistiken zurückgesetzt.',
2536
+ // ------------------------------------------------------------ SQL Monitor and Data Modeler in the browser (sprint 162)
2537
+ 'js.sm.resume': 'Fortsetzen',
2538
+ 'js.sm.pause': 'Pause',
2539
+ 'js.sm.stopped': 'Aktualisierung gestoppt: Der Monitor war nicht erreichbar (abgemeldet?). Laden Sie die Seite neu.',
2540
+ 'js.dm.unsaved': 'Ungespeicherte Änderungen',
2541
+ 'js.dm.saving': 'Wird gespeichert…',
2542
+ 'js.dm.saved': 'Gespeichert',
2543
+ 'js.dm.not_saved': 'Nicht gespeichert ({error}): erneut versuchen',
2544
+ 'js.dm.no_png': 'Das PNG konnte nicht erstellt werden: Exportieren Sie stattdessen SVG',
2545
+ // ------------------------------------------------------------ Quick SQL, SQL Scripts (sprint 162, CD-8)
2546
+ 'qs.syntax': 'Syntax',
2547
+ 'qs.syntax.tables': 'Ein Tabellenname in einer eigenen Zeile, darunter eingerückt die Spalten. Eine unter einer anderen Tabelle eingerückte Tabelle ist eine Kindtabelle: Sie erhält `<parent>_id`, das auf die Elterntabelle verweist.',
2548
+ 'qs.syntax.types': 'Spaltentypen aus dem Namen (`*_id` bigint, `*_at` timestamptz, `*_date`/`*_on` date, `is_*` boolean, `price`/`amount` numeric, sonst text) oder dahinter geschrieben: `vc200`, `num`, `num(10,2)`, `int`, `date`, `ts`, `tstz`, `clob`, `blob`, `json`, `bool`, `uuid`.',
2549
+ 'qs.syntax.directives': 'Spaltendirektiven: `/nn`, `/pk`, `/unique`, `/idx`, `/fk table`, `/check a, b`, `/between 1 and 10`, `/default value`, `/lower`, `/upper`; `[a comment]`. Tabellendirektive: `/auditcols`.',
2550
+ 'qs.syntax.settings': 'Einstellungen: `# pk: identity | seq | guid | none`, `# schema: name`, `# prefix: xx`, `# drop: true`, `# auditcols: true` oder `# settings = { pk: "guid", schema: "app" }`.',
2551
+ 'qs.syntax.views': '`view name table1 table2`: eine View, die die Tabellen über ihre Fremdschlüssel verknüpft. `--` beginnt einen Kommentar.',
2552
+ 'qs.generate': 'SQL generieren',
2553
+ 'qs.line': 'Zeile {line}: {message}',
2554
+ 'qs.generated': 'Generiertes SQL',
2555
+ 'qs.save_or_run': 'Speichern oder ausführen',
2556
+ 'qs.script_name': 'Skriptname',
2557
+ 'qs.save_script': 'Als Skript speichern',
2558
+ 'qs.run': 'Ausführen',
2559
+ 'qs.too_large': 'Das Quick SQL ist größer als 1 MB.',
2560
+ 'qs.script_too_large': 'Das generierte Skript ist zu groß.',
2561
+ 'qs.saved': 'Als Skript „{name}“ gespeichert.',
2562
+ 'scr.error': 'Fehler',
2563
+ 'scr.skipped': 'Übersprungen',
2564
+ 'scr.not_run': 'Nicht ausgeführt',
2565
+ 'scr.summary': '{n} Anweisung(en): {ok} erfolgreich, {failed} fehlgeschlagen.',
2566
+ 'scr.summary_rest': '{n} Anweisung(en): {ok} erfolgreich, {failed} fehlgeschlagen, {rest} nicht ausgeführt oder übersprungen.',
2567
+ 'scr.rolled_back_note': 'Die Transaktion wurde zurückgesetzt: Nichts wurde geändert.',
2568
+ 'scr.no_statements': 'Das Skript enthält keine Anweisungen.',
2569
+ 'scr.line': 'Zeile {line}',
2570
+ 'scr.done': 'erledigt',
2571
+ 'scr.rows': '{n} Zeile(n)',
2572
+ 'scr.first_rows': 'Erste {shown} von {n} Zeile(n).',
2573
+ 'scr.when_fails': 'Wenn eine Anweisung fehlschlägt',
2574
+ 'scr.stop': 'Skript anhalten',
2575
+ 'scr.continue': 'Mit der nächsten Anweisung fortfahren',
2576
+ 'scr.one_tx': 'In einer Transaktion ausführen (mit „Anhalten“ setzt ein Fehler das ganze Skript zurück)',
2577
+ 'scr.col.started': 'Gestartet',
2578
+ 'scr.col.script': 'Skript',
2579
+ 'scr.col.by': 'Von',
2580
+ 'scr.col.statements': 'Anweisungen',
2581
+ 'scr.col.failed': 'Fehlgeschlagen',
2582
+ 'scr.col.result': 'Ergebnis',
2583
+ 'scr.rolled_back': 'Zurückgesetzt',
2584
+ 'scr.errors': 'Fehler',
2585
+ 'scr.no_runs': 'Noch keine Ausführungen.',
2586
+ 'scr.col.updated': 'Geändert',
2587
+ 'scr.col.size': 'Größe',
2588
+ 'scr.col.last_run': 'Letzte Ausführung',
2589
+ 'scr.col.open': 'Öffnen',
2590
+ 'scr.by': 'von {user}',
2591
+ 'scr.never': 'nie',
2592
+ 'scr.worksheet': 'Arbeitsblatt',
2593
+ 'scr.download': 'Herunterladen',
2594
+ 'scr.none_yet': 'Noch keine Skripte. Erstellen Sie eines, laden Sie eine .sql-Datei hoch oder generieren Sie eines mit Quick SQL.',
2595
+ 'scr.create': 'Skript erstellen',
2596
+ 'scr.scripts': 'Skripte',
2597
+ 'scr.upload_title': 'Skript hochladen',
2598
+ 'scr.file': '.sql-Datei (UTF-8, bis {mb} MB)',
2599
+ 'scr.upload': 'Hochladen',
2600
+ 'scr.recent_runs': 'Letzte Ausführungen',
2601
+ 'scr.name': 'Name',
2602
+ 'scr.description': 'Beschreibung',
2603
+ 'scr.content_help': 'Anweisungen enden mit einem Semikolon (außerhalb von Zeichenketten, Kommentaren und $$-Rümpfen). psql-Befehle (\\set, \\i …) werden übersprungen.',
2604
+ 'scr.statements': '{n} Anweisung(en).',
2605
+ 'scr.save': 'Speichern',
2606
+ 'scr.save_run': 'Speichern und ausführen',
2607
+ 'scr.delete_confirm': 'Dieses Skript und seinen Ausführungsverlauf löschen?',
2608
+ 'scr.delete': 'Löschen',
2609
+ 'scr.new': 'Neues Skript',
2610
+ 'scr.script_title': 'Skript: {name}',
2611
+ 'scr.runs': 'Ausführungen',
2612
+ 'scr.err.name': 'Geben Sie dem Skript einen Namen (höchstens 200 Zeichen).',
2613
+ 'scr.err.size': 'Das Skript ist größer als {mb} MB.',
2614
+ 'scr.err.exists': 'Ein Skript namens „{name}“ existiert bereits.',
2615
+ 'scr.saved': 'Skript „{name}“ gespeichert.',
2616
+ 'scr.deleted': 'Skript „{name}“ gelöscht.',
2617
+ 'scr.err.choose': 'Wählen Sie eine .sql-Datei.',
2618
+ 'scr.err.file_size': 'Die Datei ist größer als {mb} MB.',
2619
+ 'scr.err.utf8': 'Die Datei ist kein UTF-8-Text.',
2620
+ 'scr.err.text': 'Die Datei ist keine Textdatei.',
2621
+ 'scr.uploaded': 'Skript „{name}“ hochgeladen.',
2622
+ 'scr.opt.stop': 'bei Fehler anhalten',
2623
+ 'scr.opt.continue': 'bei Fehler fortfahren',
2624
+ 'scr.opt.one_tx': 'eine Transaktion',
2625
+ 'scr.results_title': 'Skriptergebnisse',
2626
+ 'scr.results': 'Ergebnisse',
2627
+ 'scr.results_of': 'Ergebnisse: {name}',
2628
+ 'scr.run_by': 'Ausgeführt von {user} um {time} in {ms} ms ({options}).',
2629
+ 'scr.edit': 'Skript bearbeiten',
2630
+ // ------------------------------------------------------------ Generate DDL, Schema Comparison, Change Log (sprint 162, CD-8)
2631
+ 'ddl.type.types': 'Typen und Domänen',
2632
+ 'ddl.type.sequences': 'Sequenzen',
2633
+ 'ddl.type.tables': 'Tabellen (Constraints, Indizes)',
2634
+ 'ddl.type.views': 'Views und materialisierte Views',
2635
+ 'ddl.type.functions': 'Funktionen und Prozeduren',
2636
+ 'ddl.type.triggers': 'Trigger',
2637
+ 'ddl.type.policies': 'Sicherheit auf Zeilenebene und Richtlinien',
2638
+ 'ddl.choose_schema': '- Schema wählen -',
2639
+ 'ddl.of': 'DDL von {schema}',
2640
+ 'ddl.objects_review': '{n} Objekt(e). Prüfen Sie das Skript, bevor Sie es ausführen (SQL Workshop → SQL-Skripte).',
2641
+ 'ddl.download': '{file} herunterladen',
2642
+ 'ddl.intro': 'Die DDL der Objekte eines Schemas aus dem Datenbankkatalog, in einer lauffähigen Reihenfolge: Typen, Sequenzen, Tabellen, Funktionen, Views, Constraints, Indizes, Trigger, Sicherheit auf Zeilenebene, Kommentare und Berechtigungen (APEX: DDL generieren). Objekte von Erweiterungen werden ausgelassen.',
2643
+ 'ddl.objects': 'Objekte',
2644
+ 'ddl.comments': 'Kommentare',
2645
+ 'ddl.grants': 'Berechtigungen',
2646
+ 'ddl.generate': 'Generieren',
2647
+ 'cmp.only_source': 'Nur in der Quelle',
2648
+ 'cmp.only_target': 'Nur im Ziel',
2649
+ 'cmp.different': 'Unterschiedlich',
2650
+ 'cmp.n_only_source': '{n} nur in der Quelle',
2651
+ 'cmp.n_only_target': '{n} nur im Ziel',
2652
+ 'cmp.n_different': '{n} unterschiedlich',
2653
+ 'cmp.apply_confirm': 'Das Änderungsskript in einer Transaktion auf {target} ausführen?',
2654
+ 'cmp.apply': 'Anwenden und aufzeichnen',
2655
+ 'cmp.apply_note': 'Führt das Skript auf {target} aus (auskommentierte Drops bleiben draußen) und zeichnet es im {log} auf.',
2656
+ 'cmp.change_log': 'Änderungsprotokoll',
2657
+ 'cmp.two_different': 'Wählen Sie zwei verschiedene Schemas.',
2658
+ 'cmp.summary': 'Zusammenfassung',
2659
+ 'cmp.differences': '{n} Unterschied(e): {parts}; {same} Objekt(e) gleich.',
2660
+ 'cmp.same': 'Die Schemas sind gleich ({n} Objekte).',
2661
+ 'cmp.both': '{source} und {target}',
2662
+ 'cmp.script_title': 'Änderungsskript: {target} wie {source} machen',
2663
+ 'cmp.script_intro': 'Erstellt, was nur {source} hat, ändert, was sich unterscheidet, und listet, was nur {target} hat, als auskommentierte Drops; Spalten, deren Identity oder Generierung sich ändert, sowie abweichende Typen, Domänen und Sequenzen bleiben zur Prüfung. Nichts läuft, bis Sie „Anwenden und aufzeichnen“ wählen.',
2664
+ 'cmp.change_script': 'Änderungsskript',
2665
+ 'cmp.intro': 'Vergleicht die Objekte zweier Schemas dieser Datenbank anhand ihrer DDL (APEX: Schemavergleich), z. B. eine Entwicklungskopie mit ihrem Ursprungsschema, und schreibt ein Skript, das das Ziel wie die Quelle macht. Die Reihenfolge der Spalten einer Tabelle wird nicht verglichen.',
2666
+ 'cmp.source': 'Quelle',
2667
+ 'cmp.target': 'Ziel (wird wie die Quelle)',
2668
+ 'cmp.compare': 'Vergleichen',
2669
+ 'cmp.nothing': '{target} ist bereits wie {source}: nichts anzuwenden.',
2670
+ 'cmp.failed': 'Nichts wurde geändert: Das Änderungsskript lief in einer Transaktion, die zurückgesetzt wurde. {error}',
2671
+ 'cmp.applied': '{target} ist jetzt wie {source}: {n} Anweisung(en), im Änderungsprotokoll aufgezeichnet.',
2672
+ 'cl.from.table': 'Tabelleneigenschaften',
2673
+ 'cl.schemas': 'Schemas',
2674
+ 'cl.col.change_set': 'Änderungssatz',
2675
+ 'cl.col.author': 'Autor',
2676
+ 'cl.col.recorded': 'Aufgezeichnet',
2677
+ 'cl.col.from': 'Aus',
2678
+ 'cl.col.latest_export': 'Letzter App-Export',
2679
+ 'cl.col.migration_file': 'Migrationsdatei',
2680
+ 'cl.rename': 'Umbenennen',
2681
+ 'cl.delete_confirm': 'Änderungssatz {n} aus dem Protokoll löschen? Die Datenbank wird nicht geändert, und seine Nummer wird nicht erneut vergeben.',
2682
+ 'cl.in_it': 'enthalten',
2683
+ 'cl.after_it': 'danach',
2684
+ 'cl.written': 'geschrieben {time}',
2685
+ 'cl.not_yet': 'noch nicht',
2686
+ 'cl.none_yet': 'Noch keine Änderungssätze. DDL, die Sie im SQL-Arbeitsblatt ausführen, in den Tabelleneigenschaften oder aus dem Schemavergleich anwenden, wird hier aufgezeichnet.',
2687
+ 'cl.compare_with': 'Vergleichen mit dem letzten Export von',
2688
+ 'cl.show': 'Anzeigen',
2689
+ 'cl.export_note': '✓ enthalten: vor dem letzten Export der Anwendung aufgezeichnet, eine Bereitstellung dieses Exports erwartet also die Änderung. {after}: wird erst mit dem nächsten Export ausgeliefert.',
2690
+ 'cl.no_exports': 'Noch keine Anwendung dieses Workspace wurde aus dem Builder exportiert (Anwendung › Export): Die Änderungssätze lassen sich nicht mit einem Export vergleichen.',
2691
+ 'cl.format': 'Format',
2692
+ 'cl.format.flyway': 'Flyway: V0001__name.sql-Dateien (ein Zip für mehrere)',
2693
+ 'cl.format.liquibase': 'Liquibase: formatiertes SQL-Changelog',
2694
+ 'cl.format.sql': 'Einfaches SQL-Skript',
2695
+ 'cl.change_sets': 'Änderungssätze',
2696
+ 'cl.which.pending': 'Noch nicht in eine Datei geschrieben ({n})',
2697
+ 'cl.which.all': 'Alle von {schema} ({n})',
2698
+ 'cl.which.after': 'Nach dem letzten Export von {app} ({n})',
2699
+ 'cl.download': 'Migration herunterladen',
2700
+ 'cl.intro': 'Das Änderungsprotokoll (Liquibase, Flyway): DDL aus dem SQL-Arbeitsblatt, den Tabelleneigenschaften und dem Schemavergleich wird als Änderungssätze pro Schema aufbewahrt, mit Ausführendem und Zeitpunkt. Laden Sie sie als Migration für eine andere Datenbank herunter: versionierte Flyway-Dateien, ein formatiertes Liquibase-SQL-Changelog oder ein einfaches Skript. Nur erfolgreiche Anweisungen werden aufbewahrt; Datenänderungen (INSERT, UPDATE, DELETE) nicht.',
2701
+ 'cl.change_sets_of': 'Änderungssätze von {schema}',
2702
+ 'cl.nothing_to_write': 'Keine Änderungssätze zu schreiben: Jeder ist bereits in einer früheren Datei. Wählen Sie „Alle“.',
2703
+ 'cl.bad_name': 'Ein Name besteht aus Kleinbuchstaben, Ziffern und _ (höchstens 60) und beginnt mit einem Buchstaben oder einer Ziffer.',
2704
+ 'cl.renamed': 'Änderungssatz {n} heißt jetzt {file}.',
2705
+ 'cl.deleted': 'Änderungssatz {n} aus dem Protokoll entfernt; die Datenbank ist unverändert.',
2706
+ // ------------------------------------------------------------ Charts, Unload Data (sprint 162, CD-8)
2707
+ 'ch.kind.bar': 'Balken',
2708
+ 'ch.kind.column': 'Säulen',
2709
+ 'ch.kind.stacked': 'Gestapelte Balken',
2710
+ 'ch.kind.line': 'Linie',
2711
+ 'ch.kind.area': 'Fläche',
2712
+ 'ch.kind.donut': 'Ring',
2713
+ 'ch.kind.pie': 'Kreis',
2714
+ 'ch.kind.scatter': 'Streuung',
2715
+ 'ch.type': 'Typ',
2716
+ 'ch.labels': 'Beschriftungen',
2717
+ 'ch.values': 'Werte',
2718
+ 'ch.no_number': 'Die Abfrage hat keine Zahlenspalte zum Zeichnen.',
2719
+ 'ch.row_one': '1 Zeile.',
2720
+ 'ch.rows': '{n} Zeilen.',
2721
+ 'ch.rows_first': '{n} Zeilen (die ersten {n}).',
2722
+ 'ch.intro': 'Als Diagramme gezeichnete Abfragen. Erstellen Sie eines aus einer Abfrage im {worksheet} (Registerkarte Diagramm, Strg+F11) und speichern Sie es.',
2723
+ 'ch.all': 'Alle Diagramme',
2724
+ 'ch.chart': 'Diagramm',
2725
+ 'ch.on_dashboard_col': 'Im Dashboard',
2726
+ 'ch.changed': 'Geändert',
2727
+ 'ch.yes': 'Ja',
2728
+ 'ch.no': 'Nein',
2729
+ 'ch.none_yet': 'Noch keine Diagramme.',
2730
+ 'ch.on_dashboard': 'Im Diagramm-Dashboard',
2731
+ 'ch.query': 'Die Abfrage',
2732
+ 'ch.open_worksheet': 'Im Arbeitsblatt öffnen',
2733
+ 'ch.delete_confirm': 'Das Diagramm {name} löschen?',
2734
+ 'ch.deleted': 'Diagramm {name} gelöscht.',
2735
+ 'ch.err.name': 'Ein Diagramm braucht einen Namen (höchstens 120 Zeichen).',
2736
+ 'ch.err.exists': 'Ein Diagramm namens „{name}“ existiert bereits.',
2737
+ 'ch.saved': 'Diagramm {name} gespeichert.',
2738
+ 'ch.err.select': 'Nur ein Diagramm aus einem SELECT kann gespeichert werden.',
2739
+ 'ch.err.name_new': 'Benennen Sie das Diagramm, um es zu speichern (höchstens 120 Zeichen).',
2740
+ 'ch.saved_new': 'Diagramm {name} gespeichert: Es ist im Diagramm-Dashboard.',
2741
+ 'ul.fmt.xlsx': 'Excel (.xlsx)',
2742
+ 'ul.fmt.sql': 'SQL-Inserts',
2743
+ 'ul.separator': 'Trennzeichen',
2744
+ 'ul.sep.comma': 'Komma ,',
2745
+ 'ul.sep.semicolon': 'Semikolon ;',
2746
+ 'ul.sep.tab': 'Tabulator',
2747
+ 'ul.sep.pipe': 'Senkrechter Strich |',
2748
+ 'ul.enclosed': 'Eingeschlossen von',
2749
+ 'ul.enc.double': 'Doppeltes Anführungszeichen "',
2750
+ 'ul.enc.single': 'Einfaches Anführungszeichen \'',
2751
+ 'ul.enclosed_help': 'Nur Werte, die das Trennzeichen, das Einschlusszeichen oder einen Zeilenumbruch enthalten, werden eingeschlossen.',
2752
+ 'ul.header': 'Erste Zeile: Spaltennamen',
2753
+ 'ul.bom': 'UTF-8-Byte-Order-Mark (für Excel)',
2754
+ 'ul.root': 'Wurzelelement',
2755
+ 'ul.row': 'Zeilenelement',
2756
+ 'ul.row_help': 'Ein Kindelement pro Spalte; leere (null) Werte werden ausgelassen.',
2757
+ 'ul.from': 'Entladen aus',
2758
+ 'ul.table_or_view': 'Tabelle oder View',
2759
+ 'ul.intro': 'Laden Sie die Zeilen einer Tabelle, einer View oder einer Abfrage als CSV, JSON, Excel oder XML herunter (bis zu {n} Zeilen).',
2760
+ 'ul.intro2': 'Läuft über die Eigentümerverbindung des Builders (bei einem isolierten Workspace über dessen Entwickleranmeldung) in einer schreibgeschützten Transaktion. Um eine Datei in eine Tabelle zu laden, verwenden Sie {load}.',
2761
+ 'ul.unload_query': 'Eine Abfrage entladen',
2762
+ 'ul.one_select': 'Eine SELECT-Anweisung (oder WITH … SELECT).',
2763
+ 'ul.choose_table': '- Tabelle oder View wählen -',
2764
+ 'ul.view': '(View)',
2765
+ 'ul.choose': 'Wählen',
2766
+ 'ul.unload_table': 'Eine Tabelle oder View entladen',
2767
+ 'ul.unload_of': '{name} entladen',
2768
+ 'ul.columns': 'Spalten',
2769
+ 'ul.where': 'Where',
2770
+ 'ul.eg': 'z. B. {x}',
2771
+ 'ul.where_help': 'Optional: eine Bedingung, ohne das Wort WHERE.',
2772
+ 'ul.order': 'Order by',
2773
+ 'ul.order_help': 'Optional: Spalten, ohne die Wörter ORDER BY.',
2774
+ 'ul.err.table': 'Wählen Sie eine Tabelle oder View.',
2775
+ 'ul.err.column': 'Wählen Sie mindestens eine Spalte.',
2776
+ 'ul.err.failed': 'Die Abfrage ist fehlgeschlagen: {error}',
2777
+ // ------------------------------------------------------------ Sample Data (sprint 162, CD-8)
2778
+ 'sd.help': 'Generatoren und ihre Optionen',
2779
+ 'sd.intro': 'Erzeugen Sie realistische Zeilen für die Tabellen eines Schemas: Namen, E-Mail-Adressen, Daten und Zahlen in einem Bereich, Werte aus einer Liste, Fremdschlüssel, die vorhandene Elternzeilen wählen. Zeigen Sie sie in der Vorschau an, fügen Sie sie in einer Transaktion ein (Eltern zuerst) oder laden Sie sie als SQL oder CSV herunter. Läuft über die Eigentümerverbindung des Builders (bei einem isolierten Workspace über dessen Entwickleranmeldung), wie das {worksheet}.',
2780
+ 'sd.none_saved': 'Noch keine gespeicherten Generatoren: Erzeugen Sie unten Zeilen und speichern Sie dann die Definition, um sie erneut auszuführen.',
2781
+ 'sd.table_one': '1 Tabelle',
2782
+ 'sd.tables_n': '{n} Tabellen',
2783
+ 'sd.tables_of': 'Tabellen von {schema}',
2784
+ 'sd.about_rows': '~{n} Zeilen',
2785
+ 'sd.propose': 'Generatoren vorschlagen',
2786
+ 'sd.own_schema': 'Wählen Sie ein eigenes Schema: nicht meta, information_schema oder pg_*.',
2787
+ 'sd.new': 'Neuer Generator',
2788
+ 'sd.saved_title': 'Gespeicherte Generatoren',
2789
+ 'sd.generator': 'Generator',
2790
+ 'sd.col_generator': '{column}: Generator',
2791
+ 'sd.col_options': '{column}: Optionen',
2792
+ 'sd.options': 'Optionen',
2793
+ 'sd.col_nulls': '{column}: % null',
2794
+ 'sd.pct_null': '% null',
2795
+ 'sd.missing': 'Nicht mehr gefunden, ausgelassen: {tables}.',
2796
+ 'sd.seed': 'Startwert',
2797
+ 'sd.seed_help': 'Derselbe Startwert ergibt dieselben Zeilen (für dieselben Tabellen und Elternzeilen). Leer: ein neuer Startwert bei jedem Lauf; eine Vorschau trägt ihn ein, sodass Einfügen dann die gesehenen Zeilen hinzufügt.',
2798
+ 'sd.change_tables': 'Tabellen ändern',
2799
+ 'sd.preview': 'Vorschau',
2800
+ 'sd.insert': 'Zeilen einfügen',
2801
+ 'sd.download_sql': 'SQL herunterladen',
2802
+ 'sd.download_csv': 'CSV herunterladen',
2803
+ 'sd.save_def': 'Definition speichern',
2804
+ 'sd.save_new': 'Als neuen Generator speichern',
2805
+ 'sd.delete_confirm': 'Diese Generatordefinition löschen? Bereits eingefügte Zeilen bleiben.',
2806
+ 'sd.delete': 'Generator löschen',
2807
+ 'sd.inserted': 'Eingefügt',
2808
+ 'sd.inserted_counts': '{counts} eingefügt (Startwert {seed}).',
2809
+ 'sd.rolled_back': 'Zurückgesetzt: Nichts wurde gespeichert.',
2810
+ 'sd.seed_is': 'Startwert {seed}',
2811
+ 'sd.first_of': 'erste {shown} von {n}',
2812
+ 'sd.no_rows': 'Keine Zeilen.',
2813
+ 'sd.err.name': 'Geben Sie dem Generator einen Namen, um ihn zu speichern.',
2814
+ 'sd.err.length': 'Der Name hat höchstens 100 Zeichen, die Beschreibung 1000.',
2815
+ 'sd.err.table': 'Wählen Sie mindestens eine Tabelle.',
2816
+ 'sd.saved': 'Generator {name} gespeichert.',
2817
+ 'sd.err.action': 'Unbekannte Aktion.',
2818
+ 'sd.nothing_inserted': 'Nichts wurde eingefügt: Die Transaktion wurde zurückgesetzt.',
2819
+ 'sd.deleted': 'Generator {name} gelöscht.',
2820
+ // ------------------------------------------------------------ Sample Data generators (run-time keys sd.gen.*, sd.opt.*)
2821
+ 'sd.gen.skip': 'Überspringen (Standard / Identity)',
2822
+ 'sd.gen.first_name': 'Vorname',
2823
+ 'sd.gen.last_name': 'Nachname',
2824
+ 'sd.gen.full_name': 'Vollständiger Name',
2825
+ 'sd.gen.email': 'E-Mail-Adresse',
2826
+ 'sd.gen.username': 'Benutzername',
2827
+ 'sd.gen.phone': 'Telefonnummer',
2828
+ 'sd.gen.company': 'Firmenname',
2829
+ 'sd.gen.job_title': 'Berufsbezeichnung',
2830
+ 'sd.gen.address': 'Straßenadresse',
2831
+ 'sd.gen.postal_code': 'Postleitzahl',
2832
+ 'sd.gen.city': 'Stadt',
2833
+ 'sd.gen.country': 'Land',
2834
+ 'sd.gen.word': 'Wort',
2835
+ 'sd.gen.words': 'Wörter (Titel)',
2836
+ 'sd.gen.sentence': 'Satz',
2837
+ 'sd.gen.code': 'Code (Muster)',
2838
+ 'sd.gen.url': 'Webadresse',
2839
+ 'sd.gen.uuid': 'UUID',
2840
+ 'sd.gen.integer': 'Ganzzahl (Bereich)',
2841
+ 'sd.gen.decimal': 'Dezimalzahl (Bereich)',
2842
+ 'sd.gen.date': 'Datum (Bereich)',
2843
+ 'sd.gen.timestamp': 'Zeitstempel (Bereich)',
2844
+ 'sd.gen.time': 'Uhrzeit (Bereich)',
2845
+ 'sd.gen.boolean': 'Boolesch (% wahr)',
2846
+ 'sd.gen.list': 'Wert aus einer Liste',
2847
+ 'sd.gen.sequence': 'Folge (Start, Schritt)',
2848
+ 'sd.gen.foreign_key': 'Fremdschlüssel (vorhandene Elternzeile)',
2849
+ 'sd.gen.fixed': 'Fester Wert',
2850
+ 'sd.opt.skip': 'nicht eingefügt: Spaltenstandard, Identity oder null',
2851
+ 'sd.opt.first_name': 'keine Optionen',
2852
+ 'sd.opt.last_name': 'keine Optionen',
2853
+ 'sd.opt.full_name': 'keine Optionen',
2854
+ 'sd.opt.email': 'keine Optionen',
2855
+ 'sd.opt.username': 'keine Optionen',
2856
+ 'sd.opt.phone': 'keine Optionen',
2857
+ 'sd.opt.company': 'keine Optionen',
2858
+ 'sd.opt.job_title': 'keine Optionen',
2859
+ 'sd.opt.address': 'keine Optionen',
2860
+ 'sd.opt.postal_code': 'keine Optionen',
2861
+ 'sd.opt.city': 'keine Optionen',
2862
+ 'sd.opt.country': 'keine Optionen',
2863
+ 'sd.opt.word': 'keine Optionen',
2864
+ 'sd.opt.words': 'Anzahl Wörter, z. B. 1..3',
2865
+ 'sd.opt.sentence': 'Anzahl Wörter, z. B. 4..12',
2866
+ 'sd.opt.code': 'Muster: A Buchstabe, a Kleinbuchstabe, 9 Ziffer, andere Zeichen wie eingegeben, z. B. AAA-9999',
2867
+ 'sd.opt.url': 'keine Optionen',
2868
+ 'sd.opt.uuid': 'keine Optionen',
2869
+ 'sd.opt.integer': 'min..max, z. B. 1..1000; oder eine andere Spalte plus Bereich, z. B. quantity + 0..10',
2870
+ 'sd.opt.decimal': 'min..max; die Nachkommastellen der Spalte oder der Zahlen, z. B. 0.00..999.99; oder Spalte + min..max',
2871
+ 'sd.opt.date': 'von..bis, z. B. 2021-01-01..2026-12-31; oder eine andere Spalte plus Tage, z. B. start_date + 0..14',
2872
+ 'sd.opt.timestamp': 'von..bis (Daten), z. B. 2021-01-01..2026-12-31; oder Spalte + min..max Tage, z. B. created_at + 0..2',
2873
+ 'sd.opt.time': 'von..bis, z. B. 08:00..18:00',
2874
+ 'sd.opt.boolean': 'Prozentsatz wahr, z. B. 50',
2875
+ 'sd.opt.list': 'durch Kommas getrennte Werte, z. B. NEW, OPEN, CLOSED',
2876
+ 'sd.opt.sequence': 'Start oder Start, Schritt, z. B. 1000, 10',
2877
+ 'sd.opt.foreign_key': 'eine zufällige vorhandene Elternzeile; im selben Lauf erzeugte Eltern werden zuerst eingefügt',
2878
+ 'sd.opt.fixed': 'der Wert',
2879
+ // ------------------------------------------------------------ Query Builder (sprint 162, CD-8)
2880
+ 'qb.tables': 'Tabellen und Views',
2881
+ 'qb.tables_of': 'Tabellen und Views von {schema}',
2882
+ 'qb.view': 'View',
2883
+ 'qb.no_tables': 'Dieses Schema hat keine Tabellen oder Views.',
2884
+ 'qb.apply': 'Anwenden',
2885
+ 'qb.columns_help': 'Keine angehakt: alle Spalten. Eine Funktion (count, sum, …) gruppiert die Zeilen nach den anderen gewählten Spalten. Ziehen Sie eine Tabelle an ihrem Griff (oder fokussieren Sie den Griff und nutzen Sie die Pfeiltasten); ziehen Sie den Punkt neben einer Spalte auf eine Spalte einer anderen Tabelle, um sie zu verknüpfen.',
2886
+ 'qb.distinct': 'Eindeutige Zeilen',
2887
+ 'qb.move': '{table} verschieben (Pfeiltasten)',
2888
+ 'qb.drag_move': 'Zum Verschieben ziehen',
2889
+ 'qb.function_for': 'Funktion für {column}',
2890
+ 'qb.join_label': '{column} mit einer Spalte einer anderen Tabelle verknüpfen',
2891
+ 'qb.join_title': 'Auf eine Spalte einer anderen Tabelle ziehen, um sie zu verknüpfen',
2892
+ 'qb.joins': 'Verknüpfungen',
2893
+ 'qb.joins_help': 'Aus den Fremdschlüsseln zwischen den gewählten Tabellen oder den Spalten, die Sie verknüpft haben.',
2894
+ 'qb.cross_join': 'Kein Fremdschlüssel verbindet {table} mit den anderen Tabellen: Es wird ein Kreuzprodukt gebildet. Verknüpfen Sie zwei ihrer Spalten auf der Zeichenfläche oder unter Verknüpfungen.',
2895
+ 'qb.on': 'über',
2896
+ 'qb.and': 'und',
2897
+ 'qb.cross': 'Kreuzprodukt',
2898
+ 'qb.join_type': 'Verknüpfungsart für {table}',
2899
+ 'qb.inner': 'Inner Join',
2900
+ 'qb.left': 'Left Join (Zeilen ohne Treffer behalten)',
2901
+ 'qb.join_two': 'Zwei Spalten verknüpfen',
2902
+ 'qb.join_a': 'Verknüpfung: Spalte',
2903
+ 'qb.join_b': 'Verknüpfung: Spalte einer anderen Tabelle',
2904
+ 'qb.conditions': 'Bedingungen',
2905
+ 'qb.rows_match': 'Zeilen müssen erfüllen',
2906
+ 'qb.all': 'alle Bedingungen',
2907
+ 'qb.any': 'eine beliebige Bedingung',
2908
+ 'qb.cond_column': 'Bedingung {n}: Spalte',
2909
+ 'qb.cond_operator': 'Bedingung {n}: Operator',
2910
+ 'qb.cond_value': 'Bedingung {n}: Wert',
2911
+ 'qb.add_condition': 'Anwenden / Bedingung hinzufügen',
2912
+ 'qb.sort_limit': 'Sortieren und begrenzen',
2913
+ 'qb.sort_column': 'Sortierung {n}: Spalte',
2914
+ 'qb.sort_dir': 'Sortierung {n}: Richtung',
2915
+ 'qb.asc': 'aufsteigend',
2916
+ 'qb.desc': 'absteigend',
2917
+ 'qb.limit': 'Höchstens (Zeilen)',
2918
+ 'qb.run': 'Im SQL-Arbeitsblatt ausführen',
2919
+ 'qb.fn.count': 'Anzahl',
2920
+ 'qb.fn.count_distinct': 'Anzahl eindeutiger',
2921
+ 'qb.fn.sum': 'Summe',
2922
+ 'qb.fn.avg': 'Durchschnitt',
2923
+ 'qb.fn.min': 'Minimum',
2924
+ 'qb.fn.max': 'Maximum',
2925
+ 'qb.op.eq': 'gleich',
2926
+ 'qb.op.ne': 'ungleich',
2927
+ 'qb.op.lt': 'kleiner als',
2928
+ 'qb.op.le': 'höchstens',
2929
+ 'qb.op.gt': 'größer als',
2930
+ 'qb.op.ge': 'mindestens',
2931
+ 'qb.op.like': 'wie (% _)',
2932
+ 'qb.op.ilike': 'wie, ohne Groß-/Kleinschreibung',
2933
+ 'qb.op.in': 'in (a, b, c)',
2934
+ 'qb.op.is_null': 'ist leer',
2935
+ 'qb.op.is_not_null': 'ist nicht leer',
2936
+ // ------------------------------------------------------------ Object actions menu (sprint 162, CD-8)
2937
+ 'oa.actions_for': 'Aktionen für {name}',
2938
+ 'oa.open': 'Öffnen',
2939
+ 'oa.edit': 'Bearbeiten…',
2940
+ 'oa.template': 'Als Vorlage verwenden',
2941
+ 'oa.security': 'Sicherheit…',
2942
+ 'oa.load': 'Daten laden',
2943
+ 'oa.fulltext': 'Volltextsuche hinzufügen…',
2944
+ 'oa.vector': 'Vektorspalte hinzufügen…',
2945
+ 'oa.document': 'Dokument-View…',
2946
+ 'oa.index': 'Index hinzufügen',
2947
+ 'oa.trigger': 'Trigger hinzufügen',
2948
+ 'oa.policy': 'Richtlinie hinzufügen',
2949
+ 'oa.rest': 'REST › Aktivieren / Deaktivieren',
2950
+ 'oa.ddl': 'Schnell-DDL ins Arbeitsblatt',
2951
+ 'oa.ddl_file': 'Schnell-DDL als Datei',
2952
+ 'oa.drop': 'Löschen…',
2953
+ 'oa.flash.ddl': 'Die DDL von {name}.',
2954
+ 'oa.flash.drop': 'Prüfen Sie die DROP-Anweisung und führen Sie sie selbst aus: Noch wurde nichts gelöscht.',
2955
+ 'oa.flash.fill': 'Ergänzen Sie die Anweisung und führen Sie sie aus: Noch wurde nichts geändert.',
2956
+ // ------------------------------------------------------------ Data Modeler (sprint 162, CD-8)
2957
+ 'dm.diagrams': 'Diagramme',
2958
+ 'dm.delete_confirm': 'Das Diagramm {name} löschen? Die Tabellen bleiben, wie sie sind.',
2959
+ 'dm.delete_confirm_short': 'Das Diagramm {name} löschen?',
2960
+ 'dm.none_yet': 'Noch keine Diagramme in diesem Workspace.',
2961
+ 'dm.name_placeholder': 'Kerntabellen',
2962
+ 'dm.objects_placeholder': 'orders, customers oder *',
2963
+ 'dm.objects_help': 'Namen durch Kommas oder Leerzeichen getrennt; `*` für alle, `ord*` für die, die mit ord beginnen. Sie können später weitere hinzufügen.',
2964
+ 'dm.create': 'Diagramm erstellen',
2965
+ 'dm.intro': 'Relationale Diagramme der Tabellen und Views eines Schemas: ihre Spalten, Schlüssel und die Fremdschlüssel dazwischen. Aus einem Diagramm: seine DDL und ein Datenwörterbuch.',
2966
+ 'dm.schema_gone': 'Das Schema {schema} existiert nicht mehr, oder dieser Workspace kann es nicht verwenden.',
2967
+ 'dm.delete_diagram': 'Diagramm löschen',
2968
+ 'dm.diagram': 'Diagramm',
2969
+ 'dm.undo': 'Rückgängig',
2970
+ 'dm.redo': 'Wiederholen',
2971
+ 'dm.zoom_out': 'Verkleinern',
2972
+ 'dm.zoom_in': 'Vergrößern',
2973
+ 'dm.fit': 'Einpassen',
2974
+ 'dm.auto': 'Automatisches Layout',
2975
+ 'dm.minimap': 'Übersichtskarte',
2976
+ 'dm.export_svg': 'SVG exportieren',
2977
+ 'dm.print': 'Drucken',
2978
+ 'dm.dictionary': 'Datenwörterbuch',
2979
+ 'dm.add_objects': 'Objekte hinzufügen',
2980
+ 'dm.objects_in': 'Objekte in diesem Diagramm',
2981
+ 'dm.kind': 'Art',
2982
+ 'dm.references': 'Verweist auf',
2983
+ 'dm.remove_label': '{name} aus dem Diagramm entfernen',
2984
+ 'dm.remove': 'Entfernen',
2985
+ 'dm.no_objects': 'Noch keine Objekte: Fügen Sie unten welche hinzu.',
2986
+ 'dm.search_label': 'Tabellen und Views von {schema} durchsuchen',
2987
+ 'dm.search_placeholder': 'Teil eines Namens, emp* oder * für alle',
2988
+ 'dm.found': '{n} gefunden',
2989
+ 'dm.found_first': '500 gefunden (die ersten 500)',
2990
+ 'dm.add_to': 'Zum Diagramm hinzufügen',
2991
+ 'dm.nothing_matches': 'Sonst passt nichts zu {q}.',
2992
+ 'dm.settings': 'Diagramm umbenennen oder löschen',
2993
+ 'dm.head': 'Schema {schema} · {n} Objekte · geändert {time} von {user}',
2994
+ 'dm.missing': 'Nicht mehr in {schema}: {names}. Beim Speichern des Diagramms werden sie ausgelassen.',
2995
+ 'dm.canvas_label': 'Diagramm {name}: Ziehen Sie ein Feld, um es zu verschieben, oder fokussieren Sie es und nutzen Sie die Pfeiltasten',
2996
+ 'dm.legend': 'P Primärschlüssel · F Fremdschlüssel · U eindeutig · {star} nicht null · eine Linie läuft von der verweisenden Tabelle (Krähenfuß: viele) zur referenzierten (Strich: eins); gestrichelt, wenn der Fremdschlüssel leer sein darf.',
2997
+ 'dm.legend_opens_table': 'Der Name eines Felds öffnet die Tabelleneigenschaften.',
2998
+ 'dm.legend_opens_object': 'Der Name eines Felds öffnet das Objekt.',
2999
+ 'dm.add_title': 'Objekte zum Diagramm hinzufügen',
3000
+ 'dm.con.p': 'Primärschlüssel',
3001
+ 'dm.con.u': 'Eindeutig',
3002
+ 'dm.con.f': 'Fremdschlüssel',
3003
+ 'dm.con.c': 'Prüfung',
3004
+ 'dm.dict_title': 'Datenwörterbuch: {name}',
3005
+ 'dm.dict_head': 'Schema {schema} · {n} Objekte · erstellt {time} UTC',
3006
+ 'dm.columns_of': 'Spalten von {name}',
3007
+ 'dm.col.column': 'Spalte',
3008
+ 'dm.col.null': 'Null',
3009
+ 'dm.col.default': 'Standard',
3010
+ 'dm.col.key': 'Schlüssel',
3011
+ 'dm.col.comment': 'Kommentar',
3012
+ 'dm.constraints': 'Constraints',
3013
+ 'dm.constraints_of': 'Constraints von {name}',
3014
+ 'dm.definition': 'Definition',
3015
+ 'dm.referenced_by': 'Referenziert von',
3016
+ 'dm.err.name': 'Ein Diagramm braucht einen Namen.',
3017
+ 'dm.created_n': 'Diagramm {name} mit {n} Objekten erstellt.',
3018
+ 'dm.created_empty': 'Diagramm {name} erstellt: Fügen Sie Objekte hinzu.',
3019
+ 'dm.err.exists': 'In diesem Workspace gibt es bereits ein Diagramm {name}.',
3020
+ 'dm.removed': '{name} aus dem Diagramm entfernt (die Tabelle bleibt, wie sie ist).',
3021
+ 'dm.err.nothing': 'Nichts hinzuzufügen: Wählen Sie Tabellen oder Views des Schemas, die nicht im Diagramm sind.',
3022
+ 'dm.added': '{n} Objekt(e) hinzugefügt: {names}.',
3023
+ 'dm.laid_out': 'Die Felder wurden neu angeordnet.',
3024
+ 'dm.saved': 'Diagramm gespeichert.',
3025
+ 'dm.renamed': 'Diagramm umbenannt in {name}.',
3026
+ 'dm.deleted': 'Diagramm {name} gelöscht.',
3027
+ 'dm.ddl_intro': 'Die CREATE-Anweisungen der {n} Objekte des Diagramms in Schema {schema}: Tabellen, ihre Schlüssel, Indizes, Trigger, Sicherheit auf Zeilenebene, Richtlinien, Kommentare und Berechtigungen sowie Views. Vor dem Ausführen prüfen.',
3028
+ 'dm.back': 'Zurück zum Diagramm',
3029
+ 'dm.open_worksheet': 'Im SQL-Arbeitsblatt öffnen',
3030
+ 'dm.download_html': 'HTML herunterladen',
3031
+ 'dm.print_pdf': 'Drucken oder als PDF speichern',
3032
+ // ------------------------------------------------------------ Data Modeler (singular)
3033
+ 'dm.added_one': '1 Objekt hinzugefügt: {names}.',
3034
+ // ------------------------------------------------------------ Change Log (note)
3035
+ 'cl.after_it_title': 'Danach',
3036
+ // ------------------------------------------------------------ SQL Workshop Utilities, Object Reports, About Database (sprint 162, CD-8)
3037
+ 'su.title': 'SQL-Workshop-Dienstprogramme',
3038
+ 'su.failed': 'Der Bericht ist fehlgeschlagen.',
3039
+ 'su.nothing': 'Nichts gefunden.',
3040
+ 'su.over': 'Über die Schemas, die {role} verwenden darf.',
3041
+ 'su.col.owner': 'Eigentümer',
3042
+ 'su.tables': 'Tabellen',
3043
+ 'su.setting': 'Einstellung',
3044
+ 'su.value': 'Wert',
3045
+ 'su.extension': 'Erweiterung',
3046
+ 'su.version': 'Version',
3047
+ 'su.database': 'Datenbank',
3048
+ 'su.running_since': 'Läuft seit',
3049
+ 'su.runs_as': 'Der SQL Workshop läuft als {user} (angemeldet als {login}).',
3050
+ 'su.settings': 'Einstellungen',
3051
+ 'su.extensions': 'Erweiterungen',
3052
+ 'su.no_schemas': 'Keine Schemas.',
3053
+ 'su.r.no_primary_key': 'Tabellen ohne Primärschlüssel',
3054
+ 'su.r.no_primary_key.about': 'Formulare, interaktive Raster und REST-Rückschreiben brauchen einen Schlüssel, um eine Zeile wiederzufinden.',
3055
+ 'su.r.unindexed_foreign_keys': 'Fremdschlüssel ohne Index',
3056
+ 'su.r.unindexed_foreign_keys.about': 'Das Löschen oder Ändern einer Elternzeile durchsucht die Kindtabelle, und Verknüpfungen vom Elternteil aus sind langsamer. Ein Index auf den Fremdschlüsselspalten (in dieser Reihenfolge) vermeidet das.',
3057
+ 'su.r.rls_without_policies': 'Sicherheit auf Zeilenebene ohne Richtlinien',
3058
+ 'su.r.rls_without_policies.about': 'Sicherheit auf Zeilenebene ist aktiviert, aber die Tabelle hat keine Richtlinie: Jede Rolle außer dem Eigentümer (und Rollen, die RLS umgehen) sieht keine Zeilen und kann keine ändern.',
3059
+ 'su.r.no_row_level_security': 'Tabellen ohne Sicherheit auf Zeilenebene',
3060
+ 'su.r.no_row_level_security.about': 'Jede Rolle mit einer Berechtigung auf diesen Tabellen sieht und ändert alle Zeilen. In Ordnung für Nachschlagetabellen; aktivieren Sie Sicherheit auf Zeilenebene, wo Zeilen Benutzern oder Mandanten gehören.',
3061
+ 'su.r.public_grants': 'An PUBLIC vergebene Berechtigungen',
3062
+ 'su.r.public_grants.about': 'Jede Datenbankrolle, auch später angelegte, hat diese Berechtigungen.',
3063
+ 'su.r.unused_indexes': 'Ungenutzte Indizes',
3064
+ 'su.r.unused_indexes.about': 'Indizes, die seit dem letzten Zurücksetzen der Statistiken von keiner Abfrage verwendet wurden (keine Primärschlüssel oder eindeutigen). Sie verlangsamen Schreibvorgänge und belegen Platz; prüfen Sie jeden Server (Replikate zählen selbst), bevor Sie einen löschen.',
3065
+ 'su.r.largest_tables': 'Größte Tabellen',
3066
+ 'su.r.largest_tables.about': 'Die 100 größten Tabellen mit ihren Indizes und TOAST-Daten.',
3067
+ 'su.r.no_comments': 'Tabellen ohne Kommentar',
3068
+ 'su.r.no_comments.about': 'Kommentare (COMMENT ON) dokumentieren ein Datenmodell; der App Builder und seine KI lesen sie. SQL Workshop → KI → Tabellen beschreiben entwirft sie.',
3069
+ 'su.col.rows': 'Zeilen (Schätzung)',
3070
+ 'su.col.constraint': 'Fremdschlüssel',
3071
+ 'su.col.columns': 'Spalten',
3072
+ 'su.col.parent': 'Verweist auf',
3073
+ 'su.col.suggestion': 'Index',
3074
+ 'su.col.forced': 'Für den Eigentümer erzwungen',
3075
+ 'su.col.grants': 'Vergeben an',
3076
+ 'su.col.kind': 'Art',
3077
+ 'su.col.privileges': 'Berechtigungen',
3078
+ 'su.col.index': 'Index',
3079
+ 'su.col.size': 'Größe',
3080
+ 'su.col.table_size': 'Tabelle',
3081
+ 'su.col.index_size': 'Indizes',
3082
+ 'su.col.total': 'Gesamt',
3083
+ 'su.col.commented': 'Mit Kommentar',
3084
+ // ------------------------------------------------------------ SQL Workshop AI (sprint 162, CD-8)
3085
+ 'swai.service': 'KI-Dienst: {name} ({provider}, {model}). Tabellen- und Spaltennamen, Typen und Beschreibungen sowie Ihre Eingaben werden an ihn gesendet.',
3086
+ 'swai.no_service': 'Der App Builder hat noch keinen KI-Dienst: Bitten Sie einen Administrator, hier einen zu wählen.',
3087
+ 'swai.service_label': 'KI-Dienst des App Builders (Administratoren)',
3088
+ 'swai.none': '- keiner: keine KI im App Builder -',
3089
+ 'swai.service_help': 'Tabellen- und Spaltennamen, Typen und Beschreibungen (nie Zeilen) sowie die Eingaben der Entwickler werden an ihn gesendet. Seine Aufrufe werden ohne Anwendung protokolliert.',
3090
+ 'swai.describe_link': 'Tabellen für KI beschreiben',
3091
+ 'swai.describe_why': '(bessere Antworten: sagen Sie, was Tabellen und Spalten bedeuten)',
3092
+ 'swai.question_title': 'SQL aus einer Frage',
3093
+ 'swai.question_intro': 'Die Antwort wird angezeigt, nie ausgeführt: Prüfen Sie sie und führen Sie sie bei Bedarf im SQL-Arbeitsblatt aus.',
3094
+ 'swai.question': 'Frage',
3095
+ 'swai.question_placeholder': 'z. B. Mitarbeiter pro Abteilung mit ihrem Durchschnittsgehalt',
3096
+ 'swai.thinking': 'Denkt nach…',
3097
+ 'swai.write_sql': 'SQL schreiben',
3098
+ 'swai.explain_title': 'Eine Abfrage oder einen Fehler erklären',
3099
+ 'swai.schema_optional': 'Schema (optional)',
3100
+ 'swai.none_short': '- keines -',
3101
+ 'swai.error_optional': 'Fehlermeldung (optional)',
3102
+ 'swai.back': 'SQL-Workshop-KI',
3103
+ 'swai.describe_intro': 'Sagen Sie, was Tabellen und Spalten bedeuten: Die Beschreibungen gehen mit der Tabellenliste mit, wenn der App Builder ein Modell um SQL oder Seiten bittet. Ohne Beschreibung wird der Datenbankkommentar verwendet.',
3104
+ 'swai.choose': '- wählen -',
3105
+ 'swai.show_tables': 'Tabellen anzeigen',
3106
+ 'swai.described': 'beschrieben',
3107
+ 'swai.drafted': 'Von der KI aus Namen und Typen entworfen: Prüfen und ändern Sie die Beschreibungen, dann speichern.',
3108
+ 'swai.the_kind': 'Beschreibung ({kind})',
3109
+ 'swai.key': 'Schlüssel',
3110
+ 'swai.description_of': 'Beschreibung von {name}',
3111
+ 'swai.as_comments': 'Auch als Datenbankkommentare speichern (COMMENT ON)',
3112
+ 'swai.save_descriptions': 'Beschreibungen speichern',
3113
+ 'swai.draft': 'Mit KI entwerfen',
3114
+ 'swai.describe_crumb': 'Tabellen beschreiben',
3115
+ 'swai.proposed': 'Vorgeschlagenes SQL',
3116
+ 'swai.not_run': 'SQL (nicht ausgeführt)',
3117
+ 'swai.explanation': 'Erklärung',
3118
+ 'swai.err.question': 'Geben Sie eine Frage ein.',
3119
+ 'swai.err.schema': 'Wählen Sie ein Schema.',
3120
+ 'swai.err.paste': 'Fügen Sie eine Abfrage, eine Fehlermeldung oder beides ein.',
3121
+ 'swai.err.no_such': 'Es gibt keinen KI-Dienst {name}.',
3122
+ 'swai.uses': 'Der App Builder verwendet den KI-Dienst {name}.',
3123
+ 'swai.uses_none': 'Der App Builder verwendet keinen KI-Dienst.',
3124
+ 'swai.saved': 'Beschreibungen von {name} gespeichert.',
3125
+ 'swai.saved_comments': 'Beschreibungen von {name} gespeichert, auch als Datenbankkommentare.',
3126
+ 'swai.not_saved': 'Nicht gespeichert: {error}',
3127
+ // ------------------------------------------------------------ Schema Export / Import (sprint 162, CD-8)
3128
+ 'dp.content.all': 'Definitionen und Daten',
3129
+ 'dp.content.definitions': 'Nur Definitionen',
3130
+ 'dp.content.data': 'Nur Daten',
3131
+ 'dp.admins_only': 'Nur Administratoren exportieren und importieren Schemas: Ein Export enthält jede Zeile eines Schemas, ein Import führt sein SQL als Eigentümerrolle von pgkiln aus.',
3132
+ 'dp.status.uploaded': 'hochgeladen',
3133
+ 'dp.status.running': 'läuft',
3134
+ 'dp.status.succeeded': 'erfolgreich',
3135
+ 'dp.status.failed': 'fehlgeschlagen',
3136
+ 'dp.status.cancelled': 'abgebrochen',
3137
+ 'dp.what.export': 'Export von {schema}',
3138
+ 'dp.plain_sql': '(einfaches SQL)',
3139
+ 'dp.what.upload': 'Upload {file}',
3140
+ 'dp.what.import': 'Import von {schema} in {target}',
3141
+ 'dp.tools': '{version} und pg_restore für einen PostgreSQL-{server}-Server. Dateien werden {n} Tage im Dump-Verzeichnis aufbewahrt.',
3142
+ 'dp.tools_one': '{version} und pg_restore für einen PostgreSQL-{server}-Server. Dateien werden {n} Tag im Dump-Verzeichnis aufbewahrt.',
3143
+ 'dp.need_tools': 'Export und Import brauchen pg_dump und pg_restore.',
3144
+ 'dp.found': 'Gefunden: {list}.',
3145
+ 'dp.col.job': 'Job',
3146
+ 'dp.col.what': 'Was',
3147
+ 'dp.col.seconds': 'Sekunden',
3148
+ 'dp.intro': 'Ein Schema mit pg_dump in eine Datei und eine Datei mit pg_restore in ein Schema (Data Pump), als Hintergrundjobs.',
3149
+ 'dp.export_schema': 'Ein Schema exportieren',
3150
+ 'dp.import': 'Importieren',
3151
+ 'dp.jobs': 'Jobs',
3152
+ 'dp.removed': 'entfernt',
3153
+ 'dp.no_jobs': 'Noch keine Exporte oder Importe.',
3154
+ 'dp.export_of': '{schema} exportieren',
3155
+ 'dp.fmt.custom': 'Custom (komprimiert; Import hier mit pg_restore)',
3156
+ 'dp.fmt.plain': 'Einfaches SQL (für psql; hier nicht importierbar)',
3157
+ 'dp.content': 'Inhalt',
3158
+ 'dp.tables': 'Tabellen, Views und Sequenzen',
3159
+ 'dp.mode.all': 'Das ganze Schema',
3160
+ 'dp.mode.only': 'Nur die angehakten',
3161
+ 'dp.mode.except': 'Alle außer den angehakten',
3162
+ 'dp.no_tables': 'Das Schema hat keine Tabellen, Views oder Sequenzen.',
3163
+ 'dp.some_tables_note': 'Nur einige Tabellen: Die Datei hat kein CREATE SCHEMA, und Funktionen, Typen und die anderen Objekte des Schemas bleiben draußen.',
3164
+ 'dp.start_export': 'Export starten',
3165
+ 'dp.export': 'Export',
3166
+ 'dp.col.file': 'Datei',
3167
+ 'dp.col.made': 'Erstellt',
3168
+ 'dp.upload_title': 'Einen Dump hochladen',
3169
+ 'dp.upload_label': 'Ein Custom- oder Tar-Archiv eines Schemas (pg_dump -Fc oder -Ft), bis {mb} MB',
3170
+ 'dp.upload_note': 'Die nächste Seite zeigt den Inhalt des Archivs, bevor etwas läuft. Ein Dump ist Code: Seine Funktionen und Trigger laufen als Eigentümerrolle von pgkiln, importieren Sie also nur Dumps, denen Sie vertrauen.',
3171
+ 'dp.or_export': 'Oder ein Export dieses Servers',
3172
+ 'dp.import_dots': 'Importieren…',
3173
+ 'dp.no_exports': 'Es werden keine Exporte im Custom-Format aufbewahrt.',
3174
+ 'dp.no_create_schema': '(einige Tabellen: kein CREATE SCHEMA)',
3175
+ 'dp.none': 'keine',
3176
+ 'dp.data_of': '(Daten von {n})',
3177
+ 'dp.object_type': 'Objekttyp',
3178
+ 'dp.entries': 'Einträge',
3179
+ 'dp.import_into': 'Importieren in',
3180
+ 'dp.target_help': 'Ein neues Schema wird angelegt; in ein vorhandenes werden die Objekte des Dumps hinzugefügt (oder ersetzt, siehe unten). Ein anderer Name als {schema} benennt das Schema des Dumps in derselben Transaktion um.',
3181
+ 'dp.clean': 'Zuerst die Objekte des Dumps im Schema löschen',
3182
+ 'dp.one_tx_note': 'Alles läuft in einer Transaktion: Ein Fehler setzt alles zurück. Objekte gehören der Eigentümerrolle von pgkiln. Namen in PL/pgSQL-Rümpfen sind Text: Nach einer Umbenennung steht dort weiterhin {schema}.',
3183
+ 'dp.start_import': 'Import starten',
3184
+ 'dp.holds': 'Was {file} enthält',
3185
+ 'dp.job': 'Job #{id}',
3186
+ 'dp.opt.format': 'Format {format}',
3187
+ 'dp.opt.only': 'nur {list}',
3188
+ 'dp.opt.without': 'ohne {list}',
3189
+ 'dp.opt.cleaned': 'vorhandene Objekte zuerst gelöscht',
3190
+ 'dp.created': 'Angelegt',
3191
+ 'dp.finished': 'Beendet',
3192
+ 'dp.options': 'Optionen',
3193
+ 'dp.job_lower': 'Job #{id}',
3194
+ 'dp.kept_until': 'aufbewahrt bis {time}',
3195
+ 'dp.delete_with_file': 'Mit Datei löschen',
3196
+ 'dp.job_kind': 'Job #{id}: {kind}',
3197
+ 'dp.kind.export': 'Export',
3198
+ 'dp.kind.import': 'Import',
3199
+ 'dp.log': 'Protokoll',
3200
+ 'dp.nothing_logged': 'Nichts protokolliert.',
3201
+ 'dp.nothing_logged_yet': 'Noch nichts protokolliert.',
3202
+ 'dp.err.check_tables': 'Haken Sie die zu exportierenden Tabellen an.',
3203
+ 'dp.err.not_importable': 'Diese Datei kann (nicht mehr) importiert werden.',
3204
+ 'dp.err.schema_name': 'Das Schema: Buchstaben, Ziffern, _ und $, bis 63, nicht mit einer Ziffer beginnend.',
3205
+ 'dp.err.choose_file': 'Wählen Sie eine Datei.',
3206
+ 'dp.err.too_large': 'Die Datei ist größer als {mb} MB (PGKILN_DUMP_MAX_MB).',
3207
+ 'dp.err.empty': 'Die Datei ist leer.',
3208
+ 'dp.cancelling': 'Der Job wird abgebrochen.',
3209
+ 'dp.not_running': 'Der Job läuft (nicht mehr) auf diesem Server.',
3210
+ 'dp.deleted': 'Job #{id} gelöscht.',
3211
+ // ------------------------------------------------------------ Scheduling (sprint 162, CD-8)
3212
+ 'cr.job_n': 'Job {id}',
3213
+ 'cr.job_n_lower': 'Job {id}',
3214
+ 'cr.admins_only': 'Nur Administratoren planen Datenbankjobs: pg_cron führt sie auf dem Server aus, als beliebige Rolle.',
3215
+ 'cr.next_runs': 'Nächste Läufe ({tz}):',
3216
+ 'cr.no_times': 'Keine geplanten Zeiten: Er läuft beim Start des Datenbankservers.',
3217
+ 'cr.inactive': 'inaktiv',
3218
+ 'cr.at_start': 'beim Serverstart',
3219
+ 'cr.unreadable': 'unlesbar',
3220
+ 'cr.never_ran': 'nie gelaufen',
3221
+ 'cr.step1': 'Installieren Sie das pg_cron-Paket auf dem Datenbankserver (zum Beispiel {apt} oder die pg_cron-Option Ihres Cloud-Anbieters).',
3222
+ 'cr.step2': 'In {conf} (oder {alter}): {preload} und {db}; optional {tz} (sonst GMT). PostgreSQL neu starten.',
3223
+ 'cr.step3': 'Als Superuser in dieser Datenbank: {create}',
3224
+ 'cr.why.not_available': 'pg_cron ist auf diesem Datenbankserver nicht installiert.',
3225
+ 'cr.why.not_loaded': 'pg_cron ist auf dem Server installiert, aber nicht geladen: Es steht nicht in {preload}.',
3226
+ 'cr.why.other_database': 'pg_cron läuft in der Datenbank {other} ({setting}), nicht in {db}. Setzen Sie {set} und starten Sie neu, oder planen Sie aus jener Datenbank (Jobs können hier weiterhin mit {fn} laufen).',
3227
+ 'cr.why.not_created': 'pg_cron ist geladen, aber die Erweiterung ist in dieser Datenbank noch nicht angelegt.',
3228
+ 'cr.why.no_access': 'pg_cron ist installiert, aber die Eigentümerverbindung von pgkiln kann seine Jobs nicht lesen: {message}. Gewähren Sie Zugriff (als Superuser: {grant}) oder verbinden Sie pgkiln als die Rolle, der die Jobs gehören.',
3229
+ 'cr.why.old': 'Dieses pg_cron ({version}) ist zu alt: pgkiln braucht Version 1.4 oder neuer ({fn1}, {fn2}). {update}',
3230
+ 'cr.to_schedule': 'So planen Sie SQL mit pg_cron:',
3231
+ 'cr.own_scheduler': 'pgkilns eigener Planer funktioniert ohne: Die {automations} einer Anwendung führen SQL nach Zeitplan als Anwendung aus, und Ausführungsketten im Hintergrund laufen als {jobs}. Sie sind unten aufgeführt.',
3232
+ 'cr.automations_path': 'Gemeinsame Komponenten › Automatisierungen',
3233
+ 'cr.process_jobs_lower': 'Prozessjobs',
3234
+ 'cr.col.automation': 'Automatisierung',
3235
+ 'cr.col.schedule': 'Zeitplan',
3236
+ 'cr.col.next_run': 'Nächster Lauf',
3237
+ 'cr.col.last_run': 'Letzter Lauf',
3238
+ 'cr.col.started_by': 'Gestartet von',
3239
+ 'cr.col.queued': 'Eingereiht',
3240
+ 'cr.col.ended': 'Beendet',
3241
+ 'cr.automations': 'Automatisierungen',
3242
+ 'cr.automations_intro': 'Von pgkiln selbst geplant, pro Anwendung (Gemeinsame Komponenten › Automatisierungen), in der Zeitzone jeder Automatisierung.',
3243
+ 'cr.disabled': 'deaktiviert',
3244
+ 'cr.soon': 'bald',
3245
+ 'cr.no_automations': 'Keine Automatisierungen.',
3246
+ 'cr.process_jobs': 'Prozessjobs',
3247
+ 'cr.process_jobs_intro': 'Die neuesten Ausführungsketten, die Seiten im Hintergrund gestartet haben.',
3248
+ 'cr.no_process_jobs': 'Keine Prozessjobs.',
3249
+ 'cr.col.run_as': 'Ausführen als',
3250
+ 'cr.create': 'Job erstellen',
3251
+ 'cr.history': 'Laufhistorie',
3252
+ 'cr.jobs': 'Jobs',
3253
+ 'cr.failed_last': 'Beim letzten Lauf fehlgeschlagen',
3254
+ 'cr.pg_cron_jobs': 'pg_cron-Jobs',
3255
+ 'cr.list_intro': 'pg_cron {version} führt diese Jobs auf dem Datenbankserver aus; Zeiten sind in seiner Zeitzone {tz} ({setting}).',
3256
+ 'cr.own_only': 'Die Eigentümerverbindung von pgkiln ({user}) sieht nur ihre eigenen Jobs: pg_cron zeigt jeder Rolle ihre eigenen.',
3257
+ 'cr.search': 'Jobs durchsuchen',
3258
+ 'cr.failures': '{n} Fehlschläge in den letzten 10 Läufen',
3259
+ 'cr.no_match': 'Keine Jobs passen.',
3260
+ 'cr.none_yet': 'Noch keine Jobs. {create}.',
3261
+ 'cr.create_one': 'Einen erstellen',
3262
+ 'cr.own_work': 'pgkilns eigene geplante Arbeit (Automatisierungen, Prozessjobs)',
3263
+ 'cr.job': 'Job',
3264
+ 'cr.name_placeholder': 'nächtliches Vacuum',
3265
+ 'cr.name_help': 'Eindeutig pro Rolle, als die er läuft.',
3266
+ 'cr.database_help': 'pg_cron verbindet sich damit, um den Befehl auszuführen.',
3267
+ 'cr.run_as_help': 'Die Rolle, als die der Befehl läuft. Nur ein Superuser plant Jobs für eine andere Rolle.',
3268
+ 'cr.active_help': 'Ein inaktiver Job behält seinen Zeitplan und läuft nicht.',
3269
+ 'cr.command': 'Befehl',
3270
+ 'cr.command_help': 'SQL läuft außerhalb eines Transaktionsblocks, wie pg_cron es ausführt: `vacuum analyze` funktioniert; mehrere Anweisungen werden jeweils einzeln festgeschrieben.',
3271
+ 'cr.schedule_help': 'Fünf Felder, `minute hour day-of-month month day-of-week`; `n seconds` (1 bis 59); oder `@hourly`, `@daily`, `@weekly`, `@monthly`, `@yearly`, `@reboot`.',
3272
+ 'cr.presets': 'Gängige Zeitpläne',
3273
+ 'cr.choose': 'Wählen…',
3274
+ 'cr.use': 'Verwenden',
3275
+ 'cr.builder': 'Zeitplan-Generator',
3276
+ 'cr.use_fields': 'Diese Felder verwenden',
3277
+ 'cr.review': 'SQL prüfen',
3278
+ 'cr.review_intro': 'Diese Anweisungen laufen beim Anwenden in einer Transaktion auf der Eigentümerverbindung von pgkiln: alle oder keine.',
3279
+ 'cr.nothing': 'Nichts zu ändern.',
3280
+ 'cr.failed_box': '{nothing}: Die Anweisungen liefen in einer Transaktion, die zurückgesetzt wurde.',
3281
+ 'cr.nothing_changed': 'Nichts wurde geändert',
3282
+ 'cr.edit_title': '{name} bearbeiten',
3283
+ 'cr.edit': 'Bearbeiten',
3284
+ 'cr.create_crumb': 'Erstellen',
3285
+ 'cr.err.clash': '{user} hat bereits einen Job namens {name}.',
3286
+ 'cr.change_title': '{name} ändern',
3287
+ 'cr.create_title': 'Job {name} erstellen',
3288
+ 'cr.back_form': 'Zurück zum Formular',
3289
+ 'cr.review_crumb': 'Prüfen',
3290
+ 'cr.err.changed_form': 'Die Anweisungen haben sich seit Ihrer Prüfung geändert (der Job oder das Formular hat sich geändert): Prüfen Sie sie erneut.',
3291
+ 'cr.changed': 'Job {name} geändert.',
3292
+ 'cr.created': 'Job {name} erstellt.',
3293
+ 'cr.col.run': 'Lauf',
3294
+ 'cr.col.duration': 'Dauer',
3295
+ 'cr.col.message': 'Meldung',
3296
+ 'cr.no_runs': 'Keine Läufe.',
3297
+ 'cr.run_confirm': '{name} jetzt ausführen, als {user} in {db}?',
3298
+ 'cr.run_now': 'Jetzt ausführen',
3299
+ 'cr.disable': 'Deaktivieren',
3300
+ 'cr.enable': 'Aktivieren',
3301
+ 'cr.unschedule_dots': 'Planung entfernen…',
3302
+ 'cr.job_id': 'Job-ID',
3303
+ 'cr.recent_runs': 'Letzte Läufe',
3304
+ 'cr.all_runs': 'Alle Läufe dieses Jobs',
3305
+ 'cr.purge_its': 'Seine Historie bereinigen',
3306
+ 'cr.enable_failed': 'Aktivieren fehlgeschlagen: {error}',
3307
+ 'cr.disable_failed': 'Deaktivieren fehlgeschlagen: {error}',
3308
+ 'cr.enabled': '{name} aktiviert: {sql}',
3309
+ 'cr.disabled_flash': '{name} deaktiviert: {sql}',
3310
+ 'cr.err.changed': 'Die Anweisungen haben sich seit Ihrer Prüfung geändert: Prüfen Sie sie erneut.',
3311
+ 'cr.unscheduled': 'Planung von {name} entfernt. Seine Laufhistorie bleibt, bis Sie sie bereinigen.',
3312
+ 'cr.unschedule_title': 'Planung von {name} entfernen',
3313
+ 'cr.unschedule_note': 'pg_cron vergisst den Job; seine Läufe bleiben in der Historie, bis sie bereinigt werden.',
3314
+ 'cr.unschedule': 'Planung entfernen',
3315
+ 'cr.ran': '{what} in {secs}, als {user} in {db}: {message}',
3316
+ 'cr.ran_ok': 'Ausgeführt',
3317
+ 'cr.ran_failed': 'Fehlgeschlagen',
3318
+ 'cr.run_now_note': 'Jetzt ausführen führt den Befehl aus pgkiln aus, nicht aus pg_cron: Er steht nicht in der Laufhistorie von pg_cron, aber im Aktivitätsprotokoll von pgkiln.',
3319
+ 'cr.purge_dots': 'Bereinigen…',
3320
+ 'cr.runs': 'Läufe',
3321
+ 'cr.history_intro': 'pg_crons {table}, neueste zuerst (höchstens 200); Zeiten in {tz}. pg_cron behält jeden Lauf, bis er bereinigt wird.',
3322
+ 'cr.all_jobs': 'Alle Jobs',
3323
+ 'cr.any_status': 'Jeder Status',
3324
+ 'cr.search_messages_label': 'Meldungen und Befehle durchsuchen',
3325
+ 'cr.search_messages': 'Meldungen durchsuchen',
3326
+ 'cr.filter': 'Filtern',
3327
+ 'cr.older_7': 'älter als 7 Tage',
3328
+ 'cr.older_30': 'älter als 30 Tage',
3329
+ 'cr.older_90': 'älter als 90 Tage',
3330
+ 'cr.purge_all': 'alle',
3331
+ 'cr.purged': 'Laufhistorie bereinigt.',
3332
+ 'cr.purge_title': 'Laufhistorie bereinigen',
3333
+ 'cr.which_runs': 'Welche Läufe',
3334
+ 'cr.runs_of': 'Läufe von {name}',
3335
+ 'cr.would_delete_one': '1 Lauf würde gelöscht.',
3336
+ 'cr.would_delete': '{n} Läufe würden gelöscht.',
3337
+ 'cr.purge': 'Bereinigen',
3338
+ // ------------------------------------------------------------ Scheduling: fields, statuses, presets, schedules in words (cron.*)
3339
+ 'cr.f.minute': 'Minute',
3340
+ 'cr.f.minute_help': '0-59',
3341
+ 'cr.f.hour': 'Stunde',
3342
+ 'cr.f.hour_help': '0-23',
3343
+ 'cr.f.day': 'Tag des Monats',
3344
+ 'cr.f.day_help': '1-31, $ = letzter',
3345
+ 'cr.f.month': 'Monat',
3346
+ 'cr.f.month_help': '1-12 oder jan-dec',
3347
+ 'cr.f.weekday': 'Wochentag',
3348
+ 'cr.f.weekday_help': '0-6 (0 = Sonntag) oder sun-sat',
3349
+ 'cr.status.starting': 'startet',
3350
+ 'cr.status.running': 'läuft',
3351
+ 'cr.status.sending': 'sendet',
3352
+ 'cr.status.connecting': 'verbindet',
3353
+ 'cr.status.succeeded': 'erfolgreich',
3354
+ 'cr.status.failed': 'fehlgeschlagen',
3355
+ 'cr.preset.p1': 'Jede Minute',
3356
+ 'cr.preset.p2': 'Alle 30 Sekunden',
3357
+ 'cr.preset.p3': 'Alle 5 Minuten',
3358
+ 'cr.preset.p4': 'Alle 15 Minuten',
3359
+ 'cr.preset.p5': 'Jede Stunde',
3360
+ 'cr.preset.p6': 'Täglich um 02:00',
3361
+ 'cr.preset.p7': 'Täglich um Mitternacht',
3362
+ 'cr.preset.p8': 'Werktags um 07:00',
3363
+ 'cr.preset.p9': 'Jeden Sonntag um 03:00',
3364
+ 'cr.preset.p10': 'Erster Tag des Monats um 01:00',
3365
+ 'cr.preset.p11': 'Letzter Tag des Monats um 23:00',
3366
+ 'cr.preset.p12': 'Jedes Jahr am 1. Januar',
3367
+ 'cron.reboot': 'Beim Start des Datenbankservers',
3368
+ 'cron.every_second': 'Jede Sekunde',
3369
+ 'cron.every_seconds': 'Alle {n} Sekunden',
3370
+ 'cron.every_minute': 'Jede Minute',
3371
+ 'cron.every_minutes': 'Alle {n} Minuten',
3372
+ 'cron.every_hour': 'Jede Stunde',
3373
+ 'cron.minute_of_hour': 'In Minute {m} jeder Stunde',
3374
+ 'cron.minutes_of_hour': 'In den Minuten {list} jeder Stunde',
3375
+ 'cron.at': 'Um {times}',
3376
+ 'cron.at_minute': 'In Minute {m}',
3377
+ 'cron.at_minutes': 'In den Minuten {list}',
3378
+ 'cron.of_every_hours': '{mins} alle {n} Stunden',
3379
+ 'cron.past_hours': '{mins} der Stunden {list}',
3380
+ 'cron.day_and_last': 'am Tag {list} und am letzten Tag des Monats',
3381
+ 'cron.last_day': 'am letzten Tag des Monats',
3382
+ 'cron.day_of_month': 'am Tag {list} des Monats',
3383
+ 'cron.weekdays': 'werktags',
3384
+ 'cron.on_days': 'am {list}',
3385
+ 'cron.a_days': 'ein {list}',
3386
+ 'cron.either': '{dom} oder {dow}',
3387
+ 'cron.if': '{dom}, wenn es {dow} ist',
3388
+ 'cron.every_day': 'täglich',
3389
+ 'cron.in_months': 'im {list}',
3390
+ 'cron.range': '{from} bis {to}',
3391
+ // ------------------------------------------------------------ Region and report settings (CD-8)
3392
+ 'rs.set_items': 'Elemente setzen',
3393
+ 'rs.text_when_there_are_no': 'Text, wenn es keine Zeilen gibt',
3394
+ 'rs.fill_colour_lines_polygons': 'Füllfarbe (Linien / Polygone)',
3395
+ 'rs.line_colour': 'Linienfarbe',
3396
+ 'rs.line_width': 'Linienbreite',
3397
+ 'rs.opacity_0_1': 'Deckkraft (0–1)',
3398
+ 'rs.rows_per_page': 'Zeilen pro Seite',
3399
+ 'rs.aggregates_in_the_footer': 'Aggregate in der Fußzeile',
3400
+ 'rs.frozen_columns': 'Fixierte Spalten',
3401
+ 'rs.public_reports_by': 'Öffentliche Berichte durch',
3402
+ 'rs.as_a_master_column_of': 'Als Master: Spalte der gewählten Zeile',
3403
+ 'rs.goes_into_item': '… kommt in das Element',
3404
+ 'rs.as_a_detail_follows_item': 'Als Detail: folgt Element',
3405
+ 'rs.and_new_rows_get_it': '… und neue Zeilen erhalten es in Spalte',
3406
+ 'rs.load': 'Laden',
3407
+ 'rs.name_legend': 'Name (Legende)',
3408
+ 'rs.show_places_as': 'Orte zeigen als',
3409
+ 'rs.query': 'Abfrage',
3410
+ 'rs.each_place_links_to_page': 'Jeder Ort verweist auf Seite',
3411
+ 'rs.report_region': 'Berichtsregion',
3412
+ 'rs.filter_by': 'Filtern nach',
3413
+ 'rs.suggestions_per_facet_0_10': 'Vorschläge pro Facette (0–10)',
3414
+ 'rs.placeholder_of_the_search_field': 'Platzhalter des Suchfelds',
3415
+ 'rs.shown_first': 'Zuerst angezeigt',
3416
+ 'rs.week_and_day_views_from': 'Wochen- und Tagesansicht ab Stunde',
3417
+ 'rs.until_hour': 'Bis Stunde',
3418
+ 'rs.sql_that_moves_an_event': 'SQL, das ein Ereignis verschiebt',
3419
+ 'rs.key_column': 'Schlüsselspalte',
3420
+ 'rs.who_may_drag': 'Wer ziehen darf',
3421
+ 'rs.show_as': 'Anzeigen als',
3422
+ 'rs.carousel_next_region_every_seconds': 'Karussell: nächste Region alle (Sekunden)',
3423
+ 'rs.chart_type': 'Diagrammtyp',
3424
+ 'rs.sql_that_moves_a_task': 'SQL, das eine Aufgabe verschiebt',
3425
+ 'rs.steps': 'Schritte',
3426
+ 'rs.style': 'Stil',
3427
+ 'rs.list': 'Liste',
3428
+ 'rs.template': 'Vorlage',
3429
+ 'rs.layer_name_legend': 'Ebenenname (Legende)',
3430
+ 'rs.height': 'Höhe',
3431
+ 'rs.zoom_for_a_single_place': 'Zoom für einen einzelnen Ort (1–19)',
3432
+ 'rs.levels_open_at_first': 'Anfangs geöffnete Ebenen',
3433
+ 'rs.show': 'Anzeigen',
3434
+ 'rs.behaviour': 'Verhalten',
3435
+ 'rs.totals_and_columns': 'Summen und Spalten',
3436
+ 'rs.views': 'Ansichten',
3437
+ 'rs.row_actions': 'Zeilenaktionen',
3438
+ 'rs.master_detail': 'Master-Detail',
3439
+ 'rs.columns': 'Spalten',
3440
+ 'rs.filter_a_report': 'Einen Bericht filtern',
3441
+ 'rs.filters': 'Filter',
3442
+ 'rs.facets': 'Facetten',
3443
+ 'rs.drag_and_drop': 'Ziehen und Ablegen',
3444
+ 'rs.appearance': 'Darstellung',
3445
+ 'rs.regions': 'Regionen',
3446
+ 'rs.gauge': 'Messanzeige',
3447
+ 'rs.gantt_drag_and_drop': 'Gantt: Ziehen und Ablegen',
3448
+ 'rs.workflows': 'Workflows',
3449
+ 'rs.tasks': 'Aufgaben',
3450
+ 'rs.saving_needs_a_process_of': 'Zum Speichern braucht diese Region einen Prozess vom Typ "grid_dml"; ohne ihn ist das Raster schreibgeschützt.',
3451
+ 'rs.column_sum_avg_count_min': 'Spalte=sum, avg, count, min oder max; Spalten mit ";" trennen. Über alle Zeilen der Suche berechnet, nicht nur die Seite. Benutzer können eigene hinzufügen (Aktionen → Aggregat).',
3452
+ 'rs.stay_in_view_while_the': 'Bleiben sichtbar, während das Raster seitlich scrollt. Benutzer können es ändern sowie Spalten verschieben, in der Größe ändern und ausblenden; "layout" im JSON legt Standardreihenfolge und -breiten fest.',
3453
+ 'rs.views_users_may_switch_to': 'Ansichten, zu denen Benutzer neben dem Raster wechseln können. Die Einzelzeilenansicht bearbeitet jeweils eine Zeile (auch über das Zeilenaktionsmenü); Gruppieren und Diagramm werden unter Aktionen eingerichtet.',
3454
+ 'rs.a_master_grid_s_selected': 'Die gewählte Zeile eines Master-Rasters legt ihren Wert in ein Seitenelement; Detailraster und Berichte verwenden ihn in ihrer Abfrage (:P1_ID) und werden ohne Neuladen der Seite aktualisiert. Andere Regionstypen folgen mit {"master": {"item": "P1_ID"}}.',
3455
+ 'rs.edit_as_picks_a_shared': '"Bearbeiten als" wählt eine gemeinsame Werteliste (Gemeinsame Komponenten → Wertelisten) für eine Auswahlliste.',
3456
+ 'rs.the_visible_area_and_vector': 'Der sichtbare Bereich und Vektorkacheln brauchen `lat`/`lng` (oder eine PostGIS-Geometrie) und laden neu, wenn die Karte bewegt wird. Vektorkacheln zeichnen Punkte, Linien und Flächen, ohne Gruppierung oder Liste.',
3457
+ 'rs.the_same_columns_as_the': 'Dieselben Spalten wie die Abfrage der Karte. Leeren Sie die Abfrage, um die Ebene zu entfernen.',
3458
+ 'rs.the_condition_runs_on_the': 'Die Bedingung läuft auf dem Server: mit installiertem PostGIS auf einer geometry/geography-Spalte, sonst auf Breite und Länge.',
3459
+ 'rs.users_switch_between_the_ticked': 'Benutzer wechseln zwischen den angehakten Ansichten. Stunden außerhalb des Bereichs werden ergänzt, wenn ein Ereignis sie braucht.',
3460
+ 'rs.runs_as_the_application_s': 'Läuft als Datenbankrolle der Anwendung (Sicherheit auf Zeilenebene gilt) mit `:EVENT_ID` (Wert der Schlüsselspalte), `:NEW_START` und `:NEW_END` (gleiche Dauer wie vorher). Leer: Ereignisse lassen sich nicht ziehen.',
3461
+ 'rs.only_events_the_user_sees': 'Nur Ereignisse, die der Benutzer in diesem Kalender sieht, lassen sich verschieben; ohne Maus ändert der Bearbeitungslink die Daten.',
3462
+ 'rs.not_while_the_pointer_or': 'Nicht, solange Zeiger oder Fokus im Karussell sind, und nicht für Benutzer, die reduzierte Bewegung bevorzugen. Ein Karussell hat kein "Alle anzeigen".',
3463
+ 'rs.a_chosen_region_gets_display': 'Eine gewählte Region erhält `"display_selector": true` in ihren Einstellungen (ein Reiter nach ihr benannt) oder den Reiternamen: Regionen mit demselben Reiternamen teilen sich einen Reiter (z. B. Smart Filters und ihr Bericht). Ohne JavaScript werden alle Regionen angezeigt, mit Links zu jeder.',
3464
+ 'rs.gauge_charts_only_a_warning': 'Nur Messanzeige-Diagramme. Liegt die Warnschwelle über der kritischen, sind niedrige Werte schlecht (z. B. Warnung 50, kritisch 20).',
3465
+ 'rs.drill_down_column_takes_the': 'Drilldown: `#column#` nimmt den Wert aus der Zeile des Punkts, `#series#` den Namen seiner Reihe. Spalten, auf die nur der Link verweist, werden nicht gezeichnet.',
3466
+ 'rs.gantt_charts_with_a_task': 'Gantt-Diagramme mit einer Spalte `task_id`. Läuft als Datenbankrolle der Anwendung (Sicherheit auf Zeilenebene gilt) mit `:TASK_ID`, `:NEW_START` und `:NEW_END` (`YYYY-MM-DD` oder stundenweise `YYYY-MM-DDTHH:MM`; ein Meilenstein erhält gleichen Start und gleiches Ende). Leer: Aufgaben lassen sich nicht ziehen.',
3467
+ 'rs.only_tasks_the_user_sees': 'Nur Aufgaben, die der Benutzer in diesem Diagramm sieht, lassen sich verschieben; danach wird das Diagramm neu aus seiner Abfrage gezeichnet.',
3468
+ 'rs.column': 'Spalte',
3469
+ 'rs.heading': 'Überschrift',
3470
+ 'rs.shown': 'Angezeigt',
3471
+ 'rs.read_only': 'Schreibgeschützt',
3472
+ 'rs.required': 'Pflicht',
3473
+ 'rs.edit_as': 'Bearbeiten als',
3474
+ 'rs.facet': 'Facette',
3475
+ 'rs.label': 'Beschriftung',
3476
+ 'rs.type': 'Typ',
3477
+ 'rs.values_shown': 'Angezeigte Werte',
3478
+ 'rs.exclude': 'Ausschließen',
3479
+ 'rs.ranges': 'Bereiche',
3480
+ 'rs.from_to': 'Von/bis',
3481
+ 'rs.chart': 'Diagramm',
3482
+ 'rs.order': 'Reihenfolge',
3483
+ 'rs.region': 'Region',
3484
+ 'rs.in_a_tab': 'In einem Reiter',
3485
+ 'rs.tab_name': 'Reitername',
3486
+ 'rs.no_columns_yet': 'Noch keine Spalten.',
3487
+ 'rs.the_report_has_no_columns': 'Der Bericht hat keine Spalten.',
3488
+ 'rs.there_are_no_other_regions': 'Auf dieser Seite gibt es keine anderen Regionen.',
3489
+ 'rs.shows_a_list_from_shared': 'Zeigt eine Liste aus Gemeinsame Komponenten → Listen. Einträge, die der Benutzer nicht öffnen darf, werden ausgelassen.',
3490
+ 'rs.these_fields_write_the_region': 'Diese Felder schreiben das Einstellungs-JSON der Region oben (andere Schlüssel bleiben erhalten).',
3491
+ 'rs.users_may_add_rows': 'Benutzer dürfen Zeilen hinzufügen',
3492
+ 'rs.users_may_change_rows': 'Benutzer dürfen Zeilen ändern',
3493
+ 'rs.users_may_delete_rows': 'Benutzer dürfen Zeilen löschen',
3494
+ 'rs.actions_menu_columns_aggregates_saved': 'Aktionsmenü (Spalten, Aggregate, gespeicherte Berichte)',
3495
+ 'rs.users_may_save_grid_reports': 'Benutzer dürfen Rasterberichte speichern',
3496
+ 'rs.row_actions_menu': 'Zeilenaktionsmenü',
3497
+ 'rs.duplicate': 'Duplizieren',
3498
+ 'rs.delete': 'Löschen',
3499
+ 'rs.read_the_search_as_a': 'Die Suche als Satz lesen ("Sachbearbeiter mit Gehalt zwischen 1000 und 3000") und als Filter anbieten',
3500
+ 'rs.a_search_field_searches_all': 'Ein Suchfeld (durchsucht alle Spalten des Berichts)',
3501
+ 'rs.show_all_choice_shows_every': 'Auswahl "Alle anzeigen" (zeigt jede Region)',
3502
+ 'rs.remember_the_choice_during_the': 'Die Auswahl während der Sitzung merken',
3503
+ 'rs.group_markers_that_are_close': 'Nahe beieinander liegende Markierungen gruppieren (Clustering)',
3504
+ 'rs.include_completed_and_terminated_workflows': 'Abgeschlossene und beendete Workflows einschließen',
3505
+ 'rs.include_completed_and_cancelled_tasks': 'Erledigte und abgebrochene Aufgaben einschließen',
3506
+ 'rs.no_link': '- kein Link -',
3507
+ 'rs.text_field': '- Textfeld -',
3508
+ 'rs.nobody': '- niemand -',
3509
+ 'rs.not_a_master': '- kein Master -',
3510
+ 'rs.all_rows_with_the_page': 'Alle Zeilen mit der Seite',
3511
+ 'rs.rows_in_the_visible_area': 'Zeilen im sichtbaren Bereich',
3512
+ 'rs.vector_tiles_large_data_sets': 'Vektorkacheln (große Datenmengen)',
3513
+ 'rs.markers': 'Markierungen',
3514
+ 'rs.heat_map': 'Heatmap',
3515
+ 'rs.lines': 'Linien',
3516
+ 'rs.polygons': 'Polygone',
3517
+ 'rs.extruded_polygons_shaded_by_height': 'Extrudierte Polygone (nach Höhe schattiert)',
3518
+ 'rs.none': '- keine -',
3519
+ 'rs.the_visible_area': 'Der sichtbare Bereich',
3520
+ 'rs.distance_from_the_centre': 'Entfernung vom Mittelpunkt',
3521
+ 'rs.none_2': 'Keine',
3522
+ 'rs.bar': 'Balken',
3523
+ 'rs.pie': 'Kreis',
3524
+ 'rs.choose': '- wählen -',
3525
+ 'rs.everyone_who_sees_the_calendar': 'Alle, die den Kalender sehen',
3526
+ 'rs.signed_in_users': 'Angemeldete Benutzer',
3527
+ 'rs.tabs': 'Reiter',
3528
+ 'rs.select_list': 'Auswahlliste',
3529
+ 'rs.carousel_one_at_a_time': 'Karussell (eine nach der anderen, Zurück und Weiter)',
3530
+ 'rs.everyone_who_sees_the_chart': 'Alle, die das Diagramm sehen',
3531
+ 'rs.days_or_hours_when_a': 'Tage, oder Stunden, wenn eine Aufgabe eine Uhrzeit hat',
3532
+ 'rs.days': 'Tage',
3533
+ 'rs.hours': 'Stunden',
3534
+ 'rs.cards': 'Karten',
3535
+ 'rs.kpi_tiles_metric': 'KPI-Kacheln (Kennzahl)',
3536
+ 'rs.links_nested': 'Links (verschachtelt)',
3537
+ 'rs.badge_list': 'Plakettenliste',
3538
+ 'rs.cards_menu': 'Karten (Menü)',
3539
+ 'rs.wizard_progress_numbered_steps': 'Assistentenfortschritt (nummerierte Schritte)',
3540
+ 'rs.small': 'Klein',
3541
+ 'rs.medium': 'Mittel',
3542
+ 'rs.large': 'Groß',
3543
+ 'rs.workflows_i_started': 'Von mir gestartete Workflows',
3544
+ 'rs.workflows_i_administer': 'Von mir verwaltete Workflows',
3545
+ 'rs.my_tasks_to_act_on': 'Meine Aufgaben: zu bearbeiten, zu übernehmen oder mir zugewiesen',
3546
+ 'rs.tasks_i_requested': 'Von mir angeforderte Aufgaben',
3547
+ 'rs.tasks_i_administer': 'Von mir verwaltete Aufgaben',
3548
+ 'rs.aria_list_of_values_of': 'Werteliste von {name}',
3549
+ 'rs.aria_heading_of': 'Überschrift von {name}',
3550
+ 'rs.aria_show': '{name} anzeigen',
3551
+ 'rs.aria_facet_on': 'Facette auf {name}',
3552
+ 'rs.aria_label_of': 'Beschriftung von {name}',
3553
+ 'rs.aria_type_of_the_facet_on': 'Typ der Facette auf {name}',
3554
+ 'rs.aria_values_shown_for': 'Angezeigte Werte für {name}',
3555
+ 'rs.aria_users_may_exclude_values_of': 'Benutzer dürfen Werte von {name} ausschließen',
3556
+ 'rs.aria_ranges_of': 'Bereiche von {name}',
3557
+ 'rs.aria_users_may_type_a_range': 'Benutzer dürfen einen Bereich für {name} eingeben',
3558
+ 'rs.aria_chart_of_the_facet_on': 'Diagramm der Facette auf {name}',
3559
+ 'rs.aria_order_of': 'Reihenfolge von {name}',
3560
+ 'rs.aria_show_in_the_display_selector': '{name} im Anzeigeselektor zeigen',
3561
+ 'rs.aria_tab_name_of': 'Reitername von {name}',
3562
+ 'rs.no_data_found': 'Keine Daten gefunden',
3563
+ 'rs.search_or_filter': 'Suchen oder filtern…',
3564
+ 'rs.link': 'Link',
3565
+ 'rs.link_help': 'ELEMENT=#column#, durch Kommas getrennt; #column# wird durch den Wert der Zeile ersetzt.',
3566
+ 'rs.links_to_page': '{what} verweist auf Seite',
3567
+ 'rs.w.edit': 'Bearbeiten',
3568
+ 'rs.row_actions_edit': 'Zeilenaktionen: bearbeiten',
3569
+ 'rs.w.event': 'Jedes Ereignis',
3570
+ 'rs.edit_link': 'Bearbeitungslink',
3571
+ 'rs.w.slot': 'Ein leerer Tages- oder Stundenplatz',
3572
+ 'rs.create_on_click': 'Anlegen per Klick',
3573
+ 'rs.create_help': 'ELEMENT=#start#, #end# oder #date#: der angeklickte Platz (YYYY-MM-DD, oder YYYY-MM-DD HH:MI für einen Stundenplatz).',
3574
+ 'rs.w.point': 'Jeder Datenpunkt',
3575
+ 'rs.w.card': 'Jede Karte',
3576
+ 'rs.w.place': 'Jeder Ort',
3577
+ 'rs.w.node': 'Jeder Knoten',
3578
+ 'rs.layer_n': 'Ebene {n}: {name}',
3579
+ 'rs.add_layer': 'Eine Ebene hinzufügen',
3580
+ 'rs.group_markers': 'Nahe Markierungen gruppieren',
3581
+ 'rs.off_at_first': 'Anfangs aus',
3582
+ 'rs.map_report_help': 'Benutzer können nur die Zeilen im sichtbaren Kartenbereich zeigen ("Diesen Bereich in der Liste zeigen") oder nahe seinem Mittelpunkt. Der Bericht braucht die Spalten lat und lng (oder location) oder eine PostGIS-geometry/geography-Spalte.',
3583
+ 'rs.map_report_none': 'Fügen Sie dieser Seite eine Berichtsregion hinzu, um sie nach dem Kartenbereich zu filtern.',
3584
+ 'rs.report_smart_help': 'Der Bericht auf dieser Seite, den die Smart Filters filtern. Speichern Sie, um seine Spalten aufzulisten.',
3585
+ 'rs.report_facets_help': 'Der Bericht auf dieser Seite, den die Facetten filtern. Speichern Sie, um seine Spalten aufzulisten.',
3586
+ 'rs.report_first': 'Fügen Sie dieser Seite zuerst eine Berichtsregion hinzu.',
3587
+ 'rs.untitled': '(ohne Titel)',
3588
+ 'rs.gauge.min': 'Minimum',
3589
+ 'rs.gauge.max': 'Maximum',
3590
+ 'rs.gauge.warning': 'Warnung ab',
3591
+ 'rs.gauge.critical': 'Kritisch ab',
3592
+ 'rs.t.settings': 'Einstellungen',
3593
+ 'rs.t.grid': 'Rastereinstellungen',
3594
+ 'rs.t.chart': 'Diagrammeinstellungen',
3595
+ 'rs.t.cards': 'Karteneinstellungen',
3596
+ 'rs.t.calendar': 'Kalendereinstellungen',
3597
+ 'rs.t.facets': 'Einstellungen der Facettensuche',
3598
+ 'rs.t.smart': 'Smart-Filters-Einstellungen',
3599
+ 'rs.t.selector': 'Einstellungen des Anzeigeselektors',
3600
+ 'rs.t.list': 'Listeneinstellungen',
3601
+ 'rs.t.map': 'Karteneinstellungen',
3602
+ 'rs.t.tree': 'Baumeinstellungen',
3603
+ 'rs.t.workflows': 'Einstellungen der Workflow-Konsole',
3604
+ 'rs.t.tasks': 'Einstellungen der Aufgabenliste',
3605
+ 'rs.saved': 'Einstellungen gespeichert.',
3606
+ 'rs.chart.bar': 'Balken (waagerecht)',
3607
+ 'rs.chart.column': 'Säulen',
3608
+ 'rs.chart.stacked': 'Gestapelte Säulen',
3609
+ 'rs.chart.line': 'Linie',
3610
+ 'rs.chart.area': 'Fläche',
3611
+ 'rs.chart.combo': 'Säulen und Linie (erste Reihe als Säulen)',
3612
+ 'rs.chart.scatter': 'Streuung (erste Spalte ist x)',
3613
+ 'rs.chart.donut': 'Ring',
3614
+ 'rs.chart.pie': 'Kreis',
3615
+ 'rs.chart.bubble': 'Blasen (Spalten label, x, y und size)',
3616
+ 'rs.chart.gauge': 'Messanzeige (eine Skala pro Zeile)',
3617
+ 'rs.chart.funnel': 'Trichter (Stufen in Abfragereihenfolge)',
3618
+ 'rs.chart.radar': 'Netz (eine Achse pro Zeile)',
3619
+ 'rs.chart.gantt': 'Gantt (Spalten task, start und end)',
3620
+ 'rs.chart.treemap': 'Treemap (label und value; node_id, parent_id für eine Hierarchie)',
3621
+ 'rs.chart.sunburst': 'Sunburst (label und value; node_id, parent_id für eine Hierarchie)',
3622
+ 'rs.chart.timeline': 'Zeitleiste (label, start, end; eine series-Spalte für Bahnen)',
3623
+ 'rs.chart.pyramid': 'Pyramide (eine Reihe; zwei Reihen Rücken an Rücken)',
3624
+ 'rs.chart.polar': 'Polarfläche (ein Sektor pro Zeile)',
3625
+ 'rs.chart.range': 'Bereich (Spalten low und high: schwebende Säulen)',
3626
+ 'rs.chart.boxplot': 'Boxplot (ein Wert pro Zeile, oder min, Q1, median, Q3 und max)',
3627
+ 'rs.chart.stock': 'Kurs (Spalten open, high, low und close: Kerzen)',
3628
+ 'rs.gridview.row': 'Einzelzeilenansicht',
3629
+ 'rs.gridview.group': 'Gruppieren nach',
3630
+ 'rs.gridview.chart': 'Diagramm',
3631
+ 'rs.facet.checkbox': 'Kontrollkästchen',
3632
+ 'rs.facet.range': 'Bereiche',
3633
+ 'rs.facet.star': 'Sternebewertung',
3634
+ 'rs.view.month': 'Monat',
3635
+ 'rs.view.week': 'Woche',
3636
+ 'rs.view.day': 'Tag',
3637
+ 'rs.view.list': 'Liste',
3638
+ 'rpt.rows_per_page': 'Zeilen pro Seite',
3639
+ 'rpt.on_phones': 'Auf Telefonen',
3640
+ 'rpt.text_when_there_are_no': 'Text, wenn es keine Zeilen gibt',
3641
+ 'rpt.who_may_save_public_reports': 'Wer öffentliche Berichte speichern darf',
3642
+ 'rpt.pagination': 'Seitennummerierung',
3643
+ 'rpt.keyset_columns': 'Keyset-Spalten',
3644
+ 'rpt.maximum_row_count': 'Maximale Zeilenanzahl',
3645
+ 'rpt.cache': 'Cache',
3646
+ 'rpt.cache_for_seconds': 'Cache für (Sekunden)',
3647
+ 'rpt.columns_read_from_a_json': 'Aus einer json- oder jsonb-Spalte gelesene Spalten',
3648
+ 'rpt.link_column': 'Linkspalte',
3649
+ 'rpt.to_page': 'Zu Seite',
3650
+ 'rpt.set_items': 'Elemente setzen',
3651
+ 'rpt.value_column': 'Wertspalte',
3652
+ 'rpt.into_item': 'In Element',
3653
+ 'rpt.report_layout': 'Berichtslayout',
3654
+ 'rpt.behaviour': 'Verhalten',
3655
+ 'rpt.large_tables': 'Große Tabellen',
3656
+ 'rpt.json_path_columns': 'JSON-Pfad-Spalten',
3657
+ 'rpt.columns': 'Spalten',
3658
+ 'rpt.link': 'Link',
3659
+ 'rpt.row_selection': 'Zeilenauswahl',
3660
+ 'rpt.pdf': 'PDF',
3661
+ 'rpt.row_ranges_skip_counting_the': 'Zeilenbereiche zählen die Zeilen nicht: Verwenden Sie sie für große Tabellen.',
3662
+ 'rpt.with_row_ranges_columns_that': 'Mit Zeilenbereichen: Spalten, die eine Zeile eindeutig machen (durch Kommas getrennt, indiziert). Weiter und Zurück setzen dann nach der letzten Zeile fort, statt Zeilen zu überspringen (schnelle tiefe Seiten).',
3663
+ 'rpt.the_report_and_its_downloads': 'Der Bericht (und seine Downloads) liest höchstens so viele Zeilen.',
3664
+ 'rpt.a_submit_of_the_page': 'Ein Absenden der Seite leert ihren Cache.',
3665
+ 'rpt.format_masks_numbers_like_999g999g990d00': 'Formatmasken: Zahlen wie 999G999G990D00, FML999G990D00 (Währung), 990D0% oder 0000 (G und D sind die Trennzeichen der Sprache); Daten wie DD-MON-YYYY. Leer: die Formate der Anwendung. Excel- und CSV-Downloads behalten die Rohwerte.',
3666
+ 'rpt.item_column_comma_separated_column': 'ELEMENT=#column#, durch Kommas getrennt; #column# wird durch den Wert der Zeile ersetzt.',
3667
+ 'rpt.a_checkbox_per_row_on': 'Ein Kontrollkästchen pro Zeile; beim Absenden erreichen die Werte der angehakten Zeilen das Element, durch Doppelpunkte getrennt (z. B. 7839:7902). Meist ein verborgenes Element. Behandeln Sie die Werte in Ihrem Prozess als Benutzereingabe.',
3668
+ 'rpt.layouts_are_under_shared_components': 'Layouts finden Sie unter Gemeinsame Komponenten → Berichtslayouts.',
3669
+ 'rpt.column': 'Spalte',
3670
+ 'rpt.heading': 'Überschrift',
3671
+ 'rpt.format_mask': 'Formatmaske',
3672
+ 'rpt.display': 'Anzeige',
3673
+ 'rpt.shown': 'Angezeigt',
3674
+ 'rpt.in_pdf': 'Im PDF',
3675
+ 'rpt.pdf_width_mm': 'PDF-Breite (mm)',
3676
+ 'rpt.these_fields_write_the_region': 'Diese Felder schreiben das Einstellungs-JSON der Region oben (andere Schlüssel bleiben erhalten).',
3677
+ 'rpt.no_columns_yet': 'Noch keine Spalten.',
3678
+ 'rpt.search_box': 'Suchfeld',
3679
+ 'rpt.actions_menu_filters_break_aggregates': 'Aktionsmenü (Filter, Gruppenwechsel, Aggregate, Downloads…)',
3680
+ 'rpt.sortable': 'Sortierbar',
3681
+ 'rpt.users_may_save_reports': 'Benutzer dürfen Berichte speichern',
3682
+ 'rpt.load_after_the_page_shows': 'Nach dem Anzeigen der Seite laden (verzögertes Laden)',
3683
+ 'rpt.normal': 'Normal',
3684
+ 'rpt.cards_reflow': 'Karten (umbrechend)',
3685
+ 'rpt.scrolling_table': 'Scrollende Tabelle',
3686
+ 'rpt.nobody': '- niemand -',
3687
+ 'rpt.rows_x_y_of_z': 'Zeilen X–Y von Z (zählt die Gesamtzahl)',
3688
+ 'rpt.row_ranges_x_y_no': 'Zeilenbereiche X–Y (ohne Gesamtzahl)',
3689
+ 'rpt.no_cache': '- kein Cache -',
3690
+ 'rpt.per_user': 'Pro Benutzer',
3691
+ 'rpt.per_session': 'Pro Sitzung',
3692
+ 'rpt.for_all_users_with_the': 'Für alle Benutzer (mit denselben Rollen)',
3693
+ 'rpt.no_link': '- kein Link -',
3694
+ 'rpt.choose': '- wählen -',
3695
+ 'rpt.no_row_selection': '- keine Zeilenauswahl -',
3696
+ 'rpt.aria_heading_of': 'Überschrift von {name}',
3697
+ 'rpt.aria_format_mask_of': 'Formatmaske von {name}',
3698
+ 'rpt.aria_display_of': 'Anzeige von {name}',
3699
+ 'rpt.aria_show': '{name} anzeigen',
3700
+ 'rpt.aria_print': '{name} drucken',
3701
+ 'rpt.aria_pdf_width_of': 'PDF-Breite von {name}',
3702
+ 'rpt.no_data_found': 'Keine Daten gefunden',
3703
+ 'rpt.saved_without': 'Berichtseinstellungen gespeichert, ohne diese Formatmasken: {masks}.',
3704
+ 'rpt.saved': 'Berichtseinstellungen gespeichert.',
3705
+ // ------------------------------------------------------------ Region settings help (CD-8)
3706
+ 'rs.not_in_query': 'nicht in der Abfrage',
3707
+ 'rpt.report_settings': 'Berichtseinstellungen',
3708
+ 'rpt.save_report_settings': 'Berichtseinstellungen speichern',
3709
+ 'rs.no_position_alert': 'Der Bericht hat keine Spalten `lat`/`lng` oder `location`, daher kann der Kartenbereich ihn nicht filtern.',
3710
+ 'rs.facets_help': 'Kontrollkästchen zeigen die häufigsten Werte (mit Ausschließen filtern Benutzer sie stattdessen heraus). Bereiche und Von/bis brauchen eine Zahl- oder Datumsspalte: Bereiche sind `from..to = label`, getrennt durch `;`, ein offenes Ende bleibt leer (`..1000`, `2020-01-01..`); ein Bereich schließt seinen Anfang ein, nicht sein Ende. Eine Sternebewertung bietet „4 Sterne und mehr“ usw. (bis 5; `"max"` im JSON ändert das).',
3711
+ 'rs.facets_help_chart': 'Diagramm: ein Balken- oder Kreisdiagramm der Anzahlen unter der Facette (eingeklappt); ein Balken oder Segment filtert nach seinem Wert.',
3712
+ 'rs.calendar_help': 'Die Abfrage liefert `start_date`, `title` und optional `end_date` (Datumswerte für ganztägige Termine, Zeitstempel für Termine mit Uhrzeit).',
3713
+ 'rs.chart_help': 'Die erste Spalte ist die Beschriftung; jede folgende numerische Spalte ist eine Reihe (bis zu 8). Ein Gantt-Diagramm liest `label, start, end` (Datum oder Zeitstempel; ein leeres Ende ist ein Meilenstein) und optionale Spalten namens `progress` (0 bis 100), `task_id` und `depends_on` (die IDs, auf die eine Aufgabe wartet, z. B. `3,4`).',
3714
+ 'rs.map_help': 'Jede Zeile ist eine Markierung bei `lat`, `lng` (oder `location` als "lat,lng"), mit `title` und `body` im Popup; eine Spalte `geojson` zeichnet Linien und Flächen (mit installiertem PostGIS geht auch eine Spalte `geometry` oder `geography` in WGS 84). Eine Heatmap gewichtet jeden Ort nach einer Spalte `weight`.',
3715
+ 'rs.tree_help': 'Die Abfrage liefert `id`, `parent_id` und `label` (und optional `icon`); Zeilen, deren Elternzeile nicht im Ergebnis ist, sind die Wurzeln.',
3716
+ 'rs.workflow_help': 'Workflows stammen aus Workflow-Definitionen (Gemeinsame Komponenten); Anwendungs-SQL startet sie mit `meta.start_workflow(…)`.',
3717
+ 'rs.task_help': 'Aufgaben stammen aus Aufgabendefinitionen (Gemeinsame Komponenten); Anwendungs-SQL erstellt sie mit `meta.create_task(…)`.',
3718
+ // ------------------------------------------------------------ SQL Workshop › RESTful Services › Modules (CD-8)
3719
+ 'rm.type.collection': 'Sammlungsabfrage: Zeilen, seitenweise',
3720
+ 'rm.type.item': 'Einzelne Zeile: ein Objekt, 404 ohne Zeile',
3721
+ 'rm.type.sql': 'SQL: die erste Zeile der letzten Anweisung',
3722
+ 'rm.type.plpgsql': 'PL/pgSQL-Block: meta.rest_reply(body, status)',
3723
+ 'rm.type.media': 'Medienressource: content_type und content',
3724
+ 'rm.modules': 'Module',
3725
+ 'rm.module': 'Modul',
3726
+ 'rm.autorest_tab': 'AutoREST (Tabellen und Views)',
3727
+ 'rm.run_only_suffix': 'Setzen Sie sie auf „Ausführen und erstellen“ zurück, um sie zu ändern.',
3728
+ 'rm.locked_suffix': 'Änderungen werden abgelehnt, bis sie entsperrt ist.',
3729
+ 'rm.or': 'oder',
3730
+ 'rm.public': 'öffentlich',
3731
+ 'rm.token': 'Token',
3732
+ 'rm.module_role': 'Modulrolle {roles}',
3733
+ 'rm.role': 'Rolle {roles}',
3734
+ 'rm.tree_aria': 'Vorlagen und Handler',
3735
+ 'rm.disabled_suffix': 'deaktiviert',
3736
+ 'rm.base_path': 'Basispfad',
3737
+ 'rm.application': 'Anwendung',
3738
+ 'rm.templates': 'Vorlagen',
3739
+ 'rm.template': 'Vorlage',
3740
+ 'rm.handlers': 'Handler',
3741
+ 'rm.privilege': 'Berechtigung',
3742
+ 'rm.off': 'aus',
3743
+ 'rm.any_token': 'jedes Token',
3744
+ 'rm.none_yet': 'Noch keine REST-Module. Erstellen Sie unten eines: einen Basispfad, dann Vorlagen und Handler.',
3745
+ 'rm.app_help': 'Ihre Datenbankrolle führt die Handler aus; ihre Tokens und Rollen entscheiden, wer sie aufrufen darf.',
3746
+ 'rm.base_path_rule': 'Kleinbuchstaben, Ziffern, _ und - (höchstens 40)',
3747
+ 'rm.eg': 'z. B. {example}',
3748
+ 'rm.eg_sales_api': 'z. B. Vertriebs-API',
3749
+ 'rm.title': 'Titel',
3750
+ 'rm.privilege_roles': 'Berechtigung: Rollen',
3751
+ 'rm.any_caller': 'jeder Aufrufer mit Token',
3752
+ 'rm.roles_help_app': 'Durch Kommas getrennt: Jeder Handler braucht eine dieser Anwendungsrollen.',
3753
+ 'rm.roles_help': 'Durch Kommas getrennt: Jeder Handler braucht eine dieser Rollen.',
3754
+ 'rm.description': 'Beschreibung',
3755
+ 'rm.create_module': 'Modul erstellen',
3756
+ 'rm.create_a_module': 'Ein Modul erstellen',
3757
+ 'rm.list_title': 'RESTful Services: Module',
3758
+ 'rm.enabled': 'Aktiviert',
3759
+ 'rm.status': 'Status',
3760
+ 'rm.disabled_404': 'Deaktiviert (404)',
3761
+ 'rm.save': 'Speichern',
3762
+ 'rm.saved': 'Gespeichert.',
3763
+ 'rm.no_templates': 'Noch keine Vorlagen.',
3764
+ 'rm.uri_template': 'URI-Vorlage',
3765
+ 'rm.add_template': 'Vorlage hinzufügen',
3766
+ 'rm.checks': 'Prüfungen',
3767
+ 'rm.delete_module': 'Modul löschen',
3768
+ 'rm.module_title': 'REST-Modul {name}',
3769
+ 'rm.method': 'Methode',
3770
+ 'rm.source_type': 'Quelltyp',
3771
+ 'rm.access': 'Zugriff',
3772
+ 'rm.no_handlers': 'Noch keine Handler: Die URI antwortet mit 404.',
3773
+ 'rm.add_handler': 'Handler hinzufügen',
3774
+ 'rm.url': 'URL:',
3775
+ 'rm.uri_rename_help': 'Beim Umbenennen werden ihre Handler mitverschoben.',
3776
+ 'rm.delete_template': 'Vorlage löschen',
3777
+ 'rm.source': 'Quelle',
3778
+ 'rm.none_here': 'hier keine',
3779
+ 'rm.who': 'Wer sie aufrufen darf',
3780
+ 'rm.auth_token': 'Ein Bearer-Token der Anwendung',
3781
+ 'rm.auth_public': 'Öffentlich: kein Token',
3782
+ 'rm.roles': 'Rollen',
3783
+ 'rm.no_further_role': 'keine weitere Rolle',
3784
+ 'rm.roles_help_handler': 'Durch Kommas getrennt: Der Aufrufer braucht zusätzlich eine davon.',
3785
+ 'rm.page_size': 'Seitengröße',
3786
+ 'rm.page_size_help': 'Sammlungsabfragen: Zeilen ohne ?limit=.',
3787
+ 'rm.status_ph': '201 für POST, sonst 200',
3788
+ 'rm.status_help': 'SQL- und PL/pgSQL-Handler.',
3789
+ 'rm.params': 'Parameter (Dokumentation)',
3790
+ 'rm.create_handler': 'Handler erstellen',
3791
+ 'rm.delete_handler': 'Handler löschen',
3792
+ 'rm.new_handler_for': 'Neuer Handler für {uri}',
3793
+ 'rm.new_handler': 'Neuer Handler',
3794
+ 'rm.response': 'Antwort',
3795
+ 'rm.no_token': 'kein Token',
3796
+ 'rm.no_token_option': 'Kein Token',
3797
+ 'rm.try_it': 'Ausprobieren',
3798
+ 'rm.as': 'Als',
3799
+ 'rm.query_string': 'Abfragezeichenfolge',
3800
+ 'rm.json_body': 'JSON-Body',
3801
+ 'rm.send': '{method} senden',
3802
+ 'rm.content': 'Inhalt',
3803
+ 'rm.characters': '({n} Zeichen)',
3804
+ 'rm.bytes_of': '({n} Bytes {type})',
3805
+ 'rm.openapi_doc': 'Das OpenAPI-3-Dokument des Moduls (ohne das SQL):',
3806
+ 'rm.openapi_help': 'Importieren Sie es in Swagger UI, Postman oder einen Client-Generator. Die dokumentierten Parameter der Handler werden zu seinen Query-Parametern und Request-Bodies.',
3807
+ 'rm.delete_module_confirm': 'Das Modul {name} mit allen Vorlagen und Handlern löschen?',
3808
+ 'rm.delete_template_confirm': 'Die Vorlage {uri} und ihre {n} Handler löschen?',
3809
+ 'rm.delete_handler_confirm': 'Den Handler {method} {uri} löschen?',
3810
+ 'rm.auth_token_role': 'Ein Bearer-Token der Anwendung mit der Modulrolle {roles}',
3811
+ 'rm.auth_public_help': '(läuft als `nobody`)',
3812
+ 'rm.auth_public_403': '(läuft als `nobody`; die Rollen des Moduls gelten weiterhin, daher antwortet er mit 403)',
3813
+ 'rm.uri_help': 'Segmente und `:parameters` (gebunden als `:ID`)',
3814
+ 'rm.chk.runs_as': 'Handler laufen als `{role}`, mit `meta.app_user()` als Aufrufer',
3815
+ 'rm.chk.role_problem': 'Die Datenbankrolle der Anwendung: {problem} Ihre Handler antworten mit 403.',
3816
+ 'rm.chk.no_role': 'Die Anwendung hat keine Datenbankrolle: Handler laufen als Laufzeitrolle von pgkiln. Geben Sie ihr eine eigene Rolle (Anwendung › Einstellungen), damit Berechtigungen und Row Level Security ihre eigenen sind.',
3817
+ 'rm.chk.disabled': 'Deaktiviert: Jeder Handler antwortet mit 404',
3818
+ 'rm.chk.privilege': 'Berechtigung: Aufrufer brauchen die Rolle {roles}',
3819
+ 'rm.chk.no_privilege': 'Keine Berechtigungsrollen: jedes gültige Token der Anwendung (Handler können Rollen hinzufügen)',
3820
+ 'rm.response_as': '{request} als {as}',
3821
+ 'rm.try_intro': 'Sendet die Anfrage an den echten Endpunkt: Ein PUT, POST oder DELETE ändert Daten. {as} ein Konto stellt ein kurzlebiges Token dafür aus, wie es App › REST API tut; ohne sehen Sie, was ein Aufrufer ohne Token erhält.',
3822
+ 'rm.intro': 'Module der RESTful Services: Ein Modul ist ein Basispfad einer Anwendung, seine Vorlagen sind URIs mit `:parameters`, und jede Vorlage hat Handler pro Methode mit ihrer Quelle: einer Sammlungsabfrage, einer einzelnen Zeile, SQL, einem PL/pgSQL-Block oder einer Medienressource. Handler laufen als Datenbankrolle der Anwendung mit dem Aufrufer als `meta.app_user()`, sodass deren Berechtigungen und Row Level Security gelten; Parameter werden gebunden, nie in das SQL eingefügt. Jedes Modul hat ein OpenAPI-Dokument. Module gehören zu ihrer Anwendung: Sie reisen mit deren Export (auch unter Gemeinsame Komponenten › RESTful Services).',
3823
+ 'rm.source_help': 'Bindungen, in Großbuchstaben: Pfadparameter ({params}), Query-Parameter und Felder des JSON-Body; `:BODY` ist der ganze Body; `:APP_USER` ist der Aufrufer. Werte werden gebunden, nie in das SQL eingefügt. PL/pgSQL: ein Block (`declare … begin … end` oder Anweisungen), der mit `perform meta.rest_reply(jsonb_build_object(…), 201)` antwortet. Medien: eine Abfrage, die `content_type`, `content` und optional `filename` liefert.',
3824
+ 'rm.params_help': 'Einer pro Zeile: `name query|body [{types}] [required] [description]`. Sie kommen in das OpenAPI-Dokument und das Formular „Ausprobieren“; fehlt ein erforderlicher, lautet die Antwort 400.',
3825
+ 'rm.e.params_line': 'Parameter, Zeile {n}: Schreiben Sie "name query" oder "name body", dann optional einen Typ ({types}), "required" und eine Beschreibung.',
3826
+ 'rm.e.choose_app': 'Wählen Sie eine Anwendung dieses Workspace.',
3827
+ 'rm.e.base_path': 'Der Basispfad beginnt mit einem Kleinbuchstaben: Buchstaben, Ziffern, _ und - (höchstens 40).',
3828
+ 'rm.e.title': 'Der Titel hat 1 bis 200 Zeichen.',
3829
+ 'rm.created': 'Modul {name} unter {path} erstellt. Fügen Sie als Nächstes eine Vorlage hinzu.',
3830
+ 'rm.e.exists': '{app} hat bereits ein Modul {name}.',
3831
+ 'rm.deleted': 'Modul {name} gelöscht: Seine URLs antworten mit 404.',
3832
+ 'rm.e.template_exists': 'Die Vorlage {uri} gibt es bereits.',
3833
+ 'rm.e.template_gone': 'Die Vorlage existiert nicht mehr.',
3834
+ 'rm.template_deleted': 'Vorlage {uri} und ihre Handler gelöscht.',
3835
+ 'rm.e.handler_gone': 'Der Handler existiert nicht mehr.',
3836
+ 'rm.handler_deleted': 'Handler {method} {uri} gelöscht.',
3837
+ 'rm.e.choose_account': 'Wählen Sie ein Konto mit Zugriff auf die Anwendung.',
3838
+ 'rm.e.bad_json': 'Der Body ist kein gültiges JSON.',
3839
+ 'rm.e.module_gone': 'Das Modul existiert nicht mehr.',
3840
+ 'rm.e.auth': 'Wählen Sie, wer ihn aufrufen darf: ein Token der Anwendung oder öffentlich.',
3841
+ 'rm.e.role_length': 'Rollennamen haben höchstens 100 Zeichen.',
3842
+ 'rm.e.page_size': 'Die Seitengröße ist 1 bis 500.',
3843
+ 'rm.e.status': 'Der Status ist 200 bis 299.',
3844
+ // ------------------------------------------------------------ SQL Workshop › RESTful Services › AutoREST (CD-8)
3845
+ 'ar.kind.table': 'Tabelle',
3846
+ 'ar.kind.view': 'View',
3847
+ 'ar.kind.mview': 'materialisierte View',
3848
+ 'ar.kind.foreign': 'Fremdtabelle',
3849
+ 'ar.m.get': 'Zeilen und eine Zeile',
3850
+ 'ar.m.post': 'eine Zeile einfügen',
3851
+ 'ar.m.put': 'eine Zeile ändern',
3852
+ 'ar.m.delete': 'eine Zeile löschen',
3853
+ 'ar.methods': 'Methoden',
3854
+ 'ar.auth_token_help': '(das Token eines Kontos oder ein OAuth-Client, App › REST API)',
3855
+ 'ar.auth_public': 'Öffentlich: jeder, ohne Token',
3856
+ 'ar.auth_public_help': '(läuft als `nobody`; Berechtigungen und Row Level Security gelten weiterhin)',
3857
+ 'ar.object': 'Objekt',
3858
+ 'ar.none_yet': 'Noch keine Tabellen oder Views veröffentlicht. Aktivieren Sie unten eine oder mit {menu} im ⋯-Menü eines Objekts.',
3859
+ 'ar.menu_enable': 'REST › Aktivieren',
3860
+ 'ar.table_or_view': 'Tabelle oder View',
3861
+ 'ar.choose': '- auswählen -',
3862
+ 'ar.runs_as': 'läuft als {role}',
3863
+ 'ar.app_help': 'Ihre Datenbankrolle führt die Anweisungen aus, ihre Tokens und Rollen entscheiden, wer sie aufrufen darf.',
3864
+ 'ar.url_name': 'URL-Name',
3865
+ 'ar.object_name_ph': 'der Name des Objekts',
3866
+ 'ar.url_name_rule': 'Kleinbuchstaben, Ziffern, _ und -',
3867
+ 'ar.any_caller': 'jeder Aufrufer',
3868
+ 'ar.roles_help': 'Durch Kommas getrennt: Der Aufrufer braucht eine dieser Anwendungsrollen.',
3869
+ 'ar.page_size_help': 'Zeilen pro Seite ohne ?limit= (höchstens {max}).',
3870
+ 'ar.enable': 'Aktivieren',
3871
+ 'ar.no_usable_app': 'Keine Anwendung dieses Workspace hat eine Datenbankrolle, unter der sie laufen kann.',
3872
+ 'ar.intro': 'RESTful Services: Veröffentlichen Sie eine Tabelle oder View als REST-Endpunkte (AutoREST). Zeilen kommen seitenweise als JSON, mit Filtern; ein Primärschlüssel ermöglicht GET, PUT und DELETE einzelner Zeilen. Anfragen laufen als Datenbankrolle der veröffentlichenden Anwendung mit dem Aufrufer als `meta.app_user()`, sodass deren Berechtigungen und Row Level Security gelten.',
3873
+ 'ar.intro_module': 'Für maßgeschneiderte Endpunkte mit eigenem SQL oder PL/pgSQL erstellen Sie ein {module}.',
3874
+ 'ar.module_link': 'Modul',
3875
+ 'ar.published': 'Veröffentlichte Objekte',
3876
+ 'ar.enable_a': 'Eine Tabelle oder View aktivieren',
3877
+ 'ar.gone': 'Das Objekt existiert nicht mehr: Seine Endpunkte antworten mit 404.',
3878
+ 'ar.chk.runs_as': 'Läuft als `{role}`: nicht der Eigentümer, kein Superuser, keine Umgehung der Row Level Security',
3879
+ 'ar.chk.may': '`{role}` darf {priv}',
3880
+ 'ar.chk.may_not': '`{role}` darf nicht {priv}',
3881
+ 'ar.chk.rls_on_1': 'Row Level Security ist an (1 Policy)',
3882
+ 'ar.chk.rls_on': 'Row Level Security ist an ({n} Policies)',
3883
+ 'ar.chk.rls_off': 'Row Level Security ist aus: Aufrufer sehen jede Zeile, die die Rolle lesen darf',
3884
+ 'ar.chk.invoker': 'Die View ist security_invoker: Die Row Level Security der Tabellen gilt für den Aufrufer',
3885
+ 'ar.chk.definer': 'Die View läuft mit den Rechten ihres Eigentümers, daher gilt die Row Level Security der zugrunde liegenden Tabellen nicht:',
3886
+ 'ar.chk.key': 'Primärschlüssel {columns}: einzelne Zeilen unter',
3887
+ 'ar.chk.no_key': 'Kein Primärschlüssel: nur die Sammlung (GET und POST)',
3888
+ 'ar.chk.hidden_columns': 'Spalten, die die Rolle nicht lesen darf, werden weggelassen: {columns}',
3889
+ 'ar.ep.rows': 'Zeilen, seitenweise: ?limit= (1–{max}, Standard {size}) &offset= ; ?<column>=<value> ; ?q=<text> ; ?order=<column>.desc',
3890
+ 'ar.ep.post': 'Ein JSON-Objekt mit Spaltenwerten: die neue Zeile (201)',
3891
+ 'ar.ep.one': 'Eine Zeile (404, wenn es keine gibt)',
3892
+ 'ar.ep.put': 'Die Spalten ändern, die das JSON-Objekt nennt',
3893
+ 'ar.ep.delete': 'Die Zeile löschen (204)',
3894
+ 'ar.enabled_l': 'aktiviert',
3895
+ 'ar.disabled_alert': 'Deaktiviert: Die Endpunkte antworten mit 404.',
3896
+ 'ar.endpoints': 'Endpunkte',
3897
+ 'ar.does': 'Bewirkt',
3898
+ 'ar.openapi_note': '(die öffentlichen Objekte; senden Sie ein Token für alle)',
3899
+ 'ar.public_no_token': 'Öffentlich: kein Token nötig.',
3900
+ 'ar.get_token': 'Holen Sie {token} aus {link}: Stellen Sie ein Token für ein Konto aus oder verwenden Sie das Access Token eines OAuth-Clients.',
3901
+ 'ar.caller_needs': 'Der Aufrufer braucht die Rolle {roles}.',
3902
+ 'ar.status_codes': 'Ohne gültiges Token antworten die Endpunkte mit 401; ohne die Rolle oder eine Berechtigung mit 403.',
3903
+ 'ar.settings': 'Einstellungen',
3904
+ 'ar.published_by': 'Veröffentlicht von {app} (läuft als {role}) unter {path}.',
3905
+ 'ar.remove': 'REST deaktivieren (entfernen)',
3906
+ 'ar.remove_help': 'Die Endpunkte antworten sofort mit 404; die Tabelle selbst wird nicht geändert.',
3907
+ 'ar.e.no_role': 'Die Anwendung hat keine Datenbankrolle. AutoREST läuft als Rolle der Anwendung: Legen Sie eine in ihren Einstellungen fest.',
3908
+ 'ar.e.role_problem': 'Die Datenbankrolle der Anwendung: {problem}',
3909
+ 'ar.e.owner': '"{role}" besitzt {object} (oder ist Mitglied seines Eigentümers): Berechtigungen und Row Level Security würden nicht gelten. Veröffentlichen Sie es über eine Anwendung, deren Rolle es nicht besitzt.',
3910
+ 'ar.e.method': 'Wählen Sie mindestens eine Methode.',
3911
+ 'ar.e.page_size': 'Die Seitengröße ist 1 bis {max}.',
3912
+ 'ar.e.mview': 'Eine materialisierte View beantwortet nur GET.',
3913
+ 'ar.e.no_key': 'PUT und DELETE brauchen einen Primärschlüssel; dieses Objekt hat keinen.',
3914
+ 'ar.e.choose_object': 'Wählen Sie eine Tabelle oder View eines Schemas, das der SQL Workshop verwenden darf.',
3915
+ 'ar.e.url_name': 'Der URL-Name beginnt mit einem Kleinbuchstaben: Buchstaben, Ziffern, _ und - (höchstens 63).',
3916
+ 'ar.published_at': '{object} ist unter {path} veröffentlicht.',
3917
+ 'ar.e.alias_taken': '{app} veröffentlicht bereits etwas als {alias}: Wählen Sie einen anderen URL-Namen.',
3918
+ 'ar.e.already': '{app} veröffentlicht {object} bereits.',
3919
+ 'ar.unpublished': '{object} ist nicht mehr veröffentlicht.',
3920
+ // ------------------------------------------------------------ SQL Workshop › Load Data (CD-8)
3921
+ 'dl.row': 'Zeile',
3922
+ 'dl.error': 'Fehler',
3923
+ 'dl.first_errors': 'Die ersten {n} Fehler werden angezeigt.',
3924
+ 'dl.failed': '{n} Zeile(n) konnten nicht geladen werden, daher wurde nichts geladen. Korrigieren Sie die Datei oder kreuzen Sie „Zeilen mit Fehlern überspringen“ an.',
3925
+ 'dl.inserted': '{n} Zeile(n) eingefügt',
3926
+ 'dl.updated': '{n} aktualisiert',
3927
+ 'dl.skipped': '{n} übersprungen',
3928
+ 'dl.from_file': 'Daten aus einer Datei laden',
3929
+ 'dl.intro': 'CSV oder TSV (UTF-8 oder Windows-1252; das Trennzeichen wird erkannt), Excel .xlsx (das erste Blatt), JSON (ein Array von Objekten oder JSON Lines) oder XML (Zeilen aus einem sich wiederholenden Element), bis {mb} MB. Danach wählen Sie eine neue oder vorhandene Tabelle. Das Laden läuft über die Eigentümerverbindung des Builders.',
3930
+ 'dl.intro_unload': 'Um eine Tabelle oder Abfrage als Datei herunterzuladen, verwenden Sie {link}.',
3931
+ 'dl.file': 'Datei',
3932
+ 'dl.headers': 'Erste Zeile enthält Spaltennamen',
3933
+ 'dl.row_tag': 'XML-Zeilenelement',
3934
+ 'dl.row_tag_ph': 'z. B. employee (leer: erkannt)',
3935
+ 'dl.row_tag_help': 'Nur XML. DTDs und Entity-Deklarationen werden nicht akzeptiert.',
3936
+ 'dl.no_definition': '- keine: Tabelle als Nächstes wählen -',
3937
+ 'dl.definition_help': 'Gemeinsame Komponenten einer Anwendung: Tabelle, Spaltenzuordnung und Transformationen.',
3938
+ 'dl.next': 'Weiter',
3939
+ 'dl.e.no_file': 'Wählen Sie eine Datei.',
3940
+ 'dl.e.too_large': 'Die Datei ist größer als {mb} MB.',
3941
+ 'dl.info': '{rows} Zeile(n), {columns} Spalte(n)',
3942
+ 'dl.xml_rows': 'XML-Zeilen {path}',
3943
+ 'dl.delimiter': 'Trennzeichen {d}',
3944
+ 'dl.tab': 'Tabulator',
3945
+ 'dl.first_shown': '(die ersten {n} angezeigt)',
3946
+ 'dl.another_file': 'Andere Datei wählen',
3947
+ 'dl.def_into': 'Definition {def}: in {table}, Modus {mode}',
3948
+ 'dl.def_skipping': 'Zeilen mit Fehlern werden übersprungen',
3949
+ 'dl.def_by_name': 'Dateispalten werden den Tabellenspalten nach Namen zugeordnet.',
3950
+ 'dl.after_mapping': 'Nach der Zuordnung und den Transformationen:',
3951
+ 'dl.after_mapping_first': 'Nach der Zuordnung und den Transformationen (erste {n} Zeilen):',
3952
+ 'dl.load_into': 'In {table} laden',
3953
+ 'dl.preview': 'Vorschau',
3954
+ 'dl.load_with': 'Mit {name} laden',
3955
+ 'dl.skip_errors': 'Zeilen mit Fehlern überspringen (sonst wird nichts geladen, wenn eine Zeile fehlschlägt)',
3956
+ 'dl.table_name': 'Tabellenname',
3957
+ 'dl.table_name_help': 'schema.table; die Tabelle erhält einen Identity-Primärschlüssel `id`.',
3958
+ 'dl.file_column': 'Dateispalte',
3959
+ 'dl.column_name': 'Spaltenname (leer = überspringen)',
3960
+ 'dl.type': 'Typ',
3961
+ 'dl.aria_name': 'Spaltenname für {column}',
3962
+ 'dl.aria_type': 'Typ von {column}',
3963
+ 'dl.create_and_load': 'Tabelle erstellen und laden',
3964
+ 'dl.table_column': 'Tabellenspalte',
3965
+ 'dl.aria_map': 'Tabellenspalte für {column}',
3966
+ 'dl.skip': '- überspringen -',
3967
+ 'dl.key': 'Schlüssel',
3968
+ 'dl.mode': 'Modus',
3969
+ 'dl.mode_append': 'Anhängen: alle Zeilen einfügen',
3970
+ 'dl.mode_merge': 'Zusammenführen: Zeilen mit demselben Primärschlüssel aktualisieren, die anderen einfügen',
3971
+ 'dl.mode_replace': 'Ersetzen: zuerst alle Zeilen löschen',
3972
+ 'dl.save_mapping': 'Diese Zuordnung als Datenladedefinition speichern',
3973
+ 'dl.save_mapping_help': 'Für den data_load-Prozess einer Anwendung und um Dateien wie diese erneut zu laden.',
3974
+ 'dl.name': 'Name',
3975
+ 'dl.save_definition': 'Als Definition speichern',
3976
+ 'dl.table': 'Tabelle',
3977
+ 'dl.choose_table': '- Tabelle wählen -',
3978
+ 'dl.map_columns': 'Spalten zuordnen',
3979
+ 'dl.into_new': 'In eine neue Tabelle laden',
3980
+ 'dl.into_existing': 'In eine vorhandene Tabelle laden',
3981
+ 'dl.def_saved': 'Datenladedefinition {name} gespeichert.',
3982
+ 'dl.def_not_saved': 'Die Definition konnte nicht gespeichert werden: {reason}',
3983
+ 'dl.def_exists': 'die Anwendung hat bereits eine Definition namens {name}.',
3984
+ 'dl.e.def_gone': 'Die Datenladedefinition existiert nicht mehr.',
3985
+ 'dl.e.no_columns': 'Geben Sie mindestens einer Spalte einen Namen.',
3986
+ 'dl.view': '{table} anzeigen',
3987
+ 'dl.load_another': 'Weitere Datei laden',
3988
+ // ------------------------------------------------------------ SQL Workshop › Object Browser › Security and Document view (CD-8)
3989
+ 'ds.roles_and_columns': 'Datenbankrollen und Spalten',
3990
+ 'ds.db_role': 'Datenbankrolle',
3991
+ 'ds.masked_in': 'Maskiert in {view}',
3992
+ 'ds.masked': 'maskiert',
3993
+ 'ds.runs': 'führt {apps} aus',
3994
+ 'ds.read': 'lesen',
3995
+ 'ds.update': 'ändern',
3996
+ 'ds.no_grants': 'Keine Datenbankrolle hat Berechtigungen auf diese Tabelle, und keine Anwendung des Workspace läuft mit einer Datenbankrolle.',
3997
+ 'ds.excluded': 'Nicht in der Matrix, weil Spaltenberechtigungen sie nicht einschränken können:',
3998
+ 'ds.masks_per_column': 'Masken pro Spalte',
3999
+ 'ds.column': 'Spalte',
4000
+ 'ds.mask': 'Maske',
4001
+ 'ds.role_sees': '{role} sieht ihn',
4002
+ 'ds.others_see': 'Alle anderen sehen ihn',
4003
+ 'ds.aria_mask': 'Maske von {column}',
4004
+ 'ds.not_masked': 'Nicht maskiert',
4005
+ 'ds.mask.null': 'leer (null)',
4006
+ 'ds.mask.stars': '***',
4007
+ 'ds.mask.partial': '*** + letzte 4',
4008
+ 'ds.aria_role_sees': '{role} sieht {column}',
4009
+ 'ds.aria_others_see': 'Alle anderen sehen {column}',
4010
+ 'ds.rows': 'Zeilen',
4011
+ 'ds.rls_is': 'Row Level Security ist {state}',
4012
+ 'ds.rls_on_owner': 'an, auch für den Eigentümer',
4013
+ 'ds.rls_on': 'an',
4014
+ 'ds.rls_off': 'aus',
4015
+ 'ds.rls_off_detail': 'jede Rolle, die die Tabelle lesen darf, liest jede Zeile',
4016
+ 'ds.rls_how': '{props} schaltet sie ein; {policy} schreibt eine im Arbeitsblatt.',
4017
+ 'ds.table_properties': 'Tabelleneigenschaften',
4018
+ 'ds.add_policy': 'Policy hinzufügen',
4019
+ 'ds.policy': 'Policy',
4020
+ 'ds.command': 'Befehl',
4021
+ 'ds.roles': 'Rollen',
4022
+ 'ds.restrictive': 'restriktiv',
4023
+ 'ds.no_policies': 'Keine Policies.',
4024
+ 'ds.no_policies_rls': 'Keine Policies: Bei eingeschalteter Row Level Security lesen die Rollen unten gar keine Zeilen.',
4025
+ 'ds.columns': 'Spalten',
4026
+ 'ds.columns_help': 'Was jede Datenbankrolle pro Spalte lesen und ändern darf. Eine Spalte, die eine Rolle nicht lesen darf, verweigert PostgreSQL, wer auch immer die Abfrage sendet: Seiten, REST-Handler, AutoREST, KI-Werkzeuge, MCP oder psql.',
4027
+ 'ds.values': 'Werte',
4028
+ 'ds.values_help': 'Maskierte Spalten zeigen ihren Wert nur den Anwendungsrollen, die Sie ankreuzen (`meta.has_role()` des angemeldeten Benutzers); andere sehen die Maske. Die Masken liegen in einer View neben der Tabelle, die die Rollen oben anstelle der Tabelle lesen.',
4029
+ 'ds.masking_view': 'Maskierungs-View',
4030
+ 'ds.view_name': 'View-Name',
4031
+ 'ds.app_roles': 'Anwendungsrollen',
4032
+ 'ds.app_roles_help': 'Durch Kommas getrennt. Geänderte Rollen erhalten ihre Spalte in der Tabelle unten nach „SQL-Vorschau“.',
4033
+ 'ds.no_changes': 'Keine Änderungen: Die Sicherheit der Tabelle ist so, wie das Formular sie zeigt.',
4034
+ 'ds.preview_sql': 'SQL-Vorschau',
4035
+ 'ds.changed_1': 'Sicherheit von {table} geändert: 1 Anweisung.',
4036
+ 'ds.changed': 'Sicherheit von {table} geändert: {n} Anweisungen.',
4037
+ 'ds.rolled_back': 'Nichts wurde geändert: Die Anweisungen liefen in einer Transaktion, die zurückgerollt wurde.',
4038
+ 'ds.failed_statement': 'Fehlgeschlagene Anweisung',
4039
+ 'ds.title': 'Sicherheit von {table}',
4040
+ 'ds.security': 'Sicherheit',
4041
+ 'docv.no_key': '{table} hat keinen Primärschlüssel: Eine Dokument-View findet ihre Zeilen darüber.',
4042
+ 'docv.doc_is_key': 'Die Dokumentspalte darf nicht den Namen einer Schlüsselspalte haben ({name}).',
4043
+ 'docv.made': 'Die Dokument-View {view} ist erstellt.',
4044
+ 'docv.children': 'Kindtabellen im Dokument',
4045
+ 'docv.list': 'Liste im Dokument',
4046
+ 'docv.fk': 'Fremdschlüssel',
4047
+ 'docv.no_children': 'Keine andere Tabelle verweist auf {table}: Das Dokument ist nur die Zeile.',
4048
+ 'docv.children_help': 'Jede Kindzeile ist ein Objekt in ihrer Liste, ohne die Fremdschlüsselspalten. Das Schreiben eines Dokuments aktualisiert die aufgeführten Kinder über ihren Schlüssel, fügt die ohne Schlüssel ein und löscht die weggelassenen; ein Dokument ohne die Liste lässt die Kinder unverändert.',
4049
+ 'docv.view': 'View',
4050
+ 'docv.doc_column': 'Dokumentspalte',
4051
+ 'docv.intro': 'Eine Dokument-View zeigt jede Zeile von {table} mit ihren Kindzeilen als ein JSON-Dokument, wie eine Oracle JSON Relational Duality View. Berichte, REST (AutoREST auf der View) und MCP lesen ganze Dokumente; ein Update der Dokumentspalte schreibt die Zeile und ihre Kinder in einer Anweisung zurück. Row Level Security und Berechtigungen der Tabelle gelten (die View ist security_invoker und erhält die Berechtigungen der Tabelle).',
2425
4052
  };