@object-ui/i18n 17.5.0 → 17.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +4954 -0
  2. package/README.md +234 -13
  3. package/dist/builtinAggregateLabels.d.ts +40 -0
  4. package/dist/builtinAggregateLabels.js +23 -0
  5. package/dist/currency.d.ts +27 -3
  6. package/dist/currency.js +28 -4
  7. package/dist/fallbackInterpolation.d.ts +79 -0
  8. package/dist/fallbackInterpolation.js +124 -0
  9. package/dist/i18n.d.ts +28 -2
  10. package/dist/i18n.js +99 -17
  11. package/dist/index.d.ts +17 -23
  12. package/dist/index.js +51 -27
  13. package/dist/locales/ar.d.ts +1113 -370
  14. package/dist/locales/ar.js +1276 -428
  15. package/dist/locales/de.d.ts +785 -370
  16. package/dist/locales/de.js +896 -401
  17. package/dist/locales/en.d.ts +800 -385
  18. package/dist/locales/en.js +1261 -419
  19. package/dist/locales/es.d.ts +867 -370
  20. package/dist/locales/es.js +976 -398
  21. package/dist/locales/fr.d.ts +867 -370
  22. package/dist/locales/fr.js +976 -399
  23. package/dist/locales/index.d.ts +8682 -3761
  24. package/dist/locales/index.js +68 -29
  25. package/dist/locales/ja.d.ts +785 -370
  26. package/dist/locales/ja.js +891 -395
  27. package/dist/locales/ko.d.ts +785 -370
  28. package/dist/locales/ko.js +893 -399
  29. package/dist/locales/pt.d.ts +867 -370
  30. package/dist/locales/pt.js +975 -397
  31. package/dist/locales/registry.d.ts +102 -0
  32. package/dist/locales/registry.js +220 -0
  33. package/dist/locales/rtl.d.ts +24 -0
  34. package/dist/locales/rtl.js +26 -0
  35. package/dist/locales/ru.d.ts +949 -370
  36. package/dist/locales/ru.js +1093 -419
  37. package/dist/locales/zh.d.ts +803 -388
  38. package/dist/locales/zh.js +899 -388
  39. package/dist/pickLocalized.d.ts +67 -0
  40. package/dist/pickLocalized.js +114 -0
  41. package/dist/provider.d.ts +102 -13
  42. package/dist/provider.js +335 -50
  43. package/dist/translateFn.d.ts +29 -0
  44. package/dist/translateFn.js +8 -0
  45. package/dist/useDisplayLocale.d.ts +11 -0
  46. package/dist/useDisplayLocale.js +13 -2
  47. package/dist/useObjectLabel.d.ts +118 -22
  48. package/dist/useObjectLabel.js +148 -23
  49. package/dist/useSafeTranslation.js +41 -43
  50. package/dist/utils/formatting.d.ts +16 -0
  51. package/dist/utils/formatting.js +23 -3
  52. package/dist/utils/index.d.ts +4 -4
  53. package/dist/utils/index.js +4 -4
  54. package/dist/utils/spec-formatters.d.ts +13 -23
  55. package/dist/utils/spec-formatters.js +41 -2
  56. package/dist/utils/spec-translations.d.ts +16 -3
  57. package/dist/utils/spec-translations.js +52 -13
  58. package/package.json +12 -6
@@ -19,10 +19,12 @@ const de = {
19
19
  manage_users: "Benutzer verwalten",
20
20
  manage_org_users: "Organisationsbenutzer verwalten",
21
21
  manage_metadata: "Metadaten verwalten",
22
+ manage_org_presentation: "Organisationsdarstellung verwalten",
22
23
  manage_platform_settings: "Plattformeinstellungen verwalten",
23
24
  setup_access: "Zugriff auf die Einrichtung",
24
25
  setup_write: "Einstellungen schreiben",
25
26
  studio_access: "Studio-Zugriff",
27
+ manage_sharing: "Freigaben verwalten",
26
28
  },
27
29
  group: {
28
30
  platform: 'Plattform',
@@ -39,12 +41,16 @@ const de = {
39
41
  more: "+{{count}} weitere",
40
42
  objects: "{{count}} Objekte",
41
43
  objects_one: "{{count}} Objekt",
44
+ objects_other: "{{count}} Objekte",
42
45
  fields: "{{count}} Feldregeln",
43
46
  fields_one: "{{count}} Feldregel",
47
+ fields_other: "{{count}} Feldregeln",
44
48
  rls: "{{count}} RLS-Richtlinien",
45
49
  rls_one: "{{count}} RLS-Richtlinie",
50
+ rls_other: "{{count}} RLS-Richtlinien",
46
51
  tabs: "{{count}} Registerkarten-Regeln",
47
52
  tabs_one: "{{count}} Registerkarten-Regel",
53
+ tabs_other: "{{count}} Registerkarten-Regeln",
48
54
  adminScope: "Delegierte Administration konfiguriert",
49
55
  designInStudio: "Im Studio gestalten →",
50
56
  designInStudioHint: "Im Studio gestalten",
@@ -63,7 +69,8 @@ const de = {
63
69
  selectFirst: 'Zuerst {{fields}} auswählen',
64
70
  selectRecord: 'Datensatz auswählen',
65
71
  recordCount: '{{count}} Datensätze',
66
- recordCountOne: '1 Datensatz',
72
+ recordCount_one: '{{count}} Datensatz',
73
+ recordCount_other: '{{count}} Datensätze',
67
74
  pageOf: 'Seite {{current}} von {{total}}',
68
75
  filters: 'Filter',
69
76
  clear: 'Zurücksetzen',
@@ -82,6 +89,7 @@ const de = {
82
89
  removeFromFavorites: "Aus Favoriten entfernen",
83
90
  loading: "Wird geladen…",
84
91
  save: "Speichern",
92
+ discard: "Verwerfen",
85
93
  cancel: "Abbrechen",
86
94
  delete: "Löschen",
87
95
  edit: "Bearbeiten",
@@ -115,7 +123,8 @@ const de = {
115
123
  closePanel: "Panel schließen",
116
124
  resizeDrawer: "Panelbreite anpassen",
117
125
  itemCount: "{{count}} Elemente",
118
- itemCountOne: "{{count}} Element",
126
+ itemCount_one: "{{count}} Element",
127
+ itemCount_other: "{{count}} Elemente",
119
128
  toggleSidebar: "Seitenleiste umschalten",
120
129
  package: "Paket",
121
130
  done: "Fertig",
@@ -123,6 +132,16 @@ const de = {
123
132
  record: "Datensatz",
124
133
  retry: "Erneut versuchen",
125
134
  printDialogHint: "Öffnet den Druckdialog Ihres Browsers (kein PDF-Export)",
135
+ // The non-grid row ceiling's footnote (objectui#7210). Two keys because
136
+ // there are two conditions: a reported `total` states the fact with BOTH
137
+ // numbers, a missing one cannot name how many. Kept terse deliberately —
138
+ // this copy is eagerly loaded, and since objectui#7399 these bytes are
139
+ // budgeted by the `i18n-locales` chunk, not `framework`. ⛔ That ceiling's
140
+ // headroom is deliberately NOT restated here — it moves on every
141
+ // re-baseline, and the figure that was here went stale.
142
+ // `pnpm check:eager-closure` prints it.
143
+ rowCeilingNote: "Erste {{shown}} von {{total}} Datensätzen. Filter eingrenzen.",
144
+ rowCeilingNoteUnknownTotal: "Erste {{shown}} Datensätze. Filter eingrenzen.",
126
145
  },
127
146
  actions: {
128
147
  decisionOutput: {
@@ -134,6 +153,14 @@ const de = {
134
153
  acknowledge: 'Ich habe ihn gespeichert',
135
154
  copyAll: 'Alle kopieren',
136
155
  },
156
+ notAvailableHere: '„{{action}}“ ist auf der aktuellen Seite nicht verfügbar.',
157
+ completedSuccessfully: 'Aktion erfolgreich abgeschlossen',
158
+ failed: 'Aktion fehlgeschlagen',
159
+ parallelFailed: 'Eine oder mehrere parallele Aktionen sind fehlgeschlagen',
160
+ undo: 'Rückgängig',
161
+ undone: 'Änderung rückgängig gemacht',
162
+ undoneOperation: 'Rückgängig: {{description}}',
163
+ redoneOperation: 'Wiederholen: {{description}}',
137
164
  },
138
165
  validation: {
139
166
  required: "{{field}} ist erforderlich",
@@ -151,19 +178,45 @@ const de = {
151
178
  },
152
179
  form: {
153
180
  noPermissionToSave: "Sie haben keine Berechtigung, diesen Datensatz zu speichern.",
181
+ noPermissionToCreate: "Sie haben keine Berechtigung, „{{object}}“-Datensätze zu erstellen. Die Felder sind schreibgeschützt.",
182
+ noPermissionToEdit: "Sie haben keine Berechtigung, „{{object}}“-Datensätze zu bearbeiten. Die Felder sind schreibgeschützt.",
154
183
  submitFailed: "Speichern fehlgeschlagen. Bitte versuchen Sie es erneut.",
184
+ uploadInFlight: "Warten Sie, bis der Upload abgeschlossen ist, bevor Sie speichern.",
185
+ clearedOnHide: "Geleert, was für die aktuellen Werte nicht mehr gilt: {{fields}}",
186
+ visibleWhenFaulted: "Absenden nicht möglich: Die visibleWhen-Regel von {{fields}} konnte nicht ausgewertet werden. Die Regel muss korrigiert werden, bevor dieses Formular abgesendet werden kann.",
155
187
  discardTitle: "Änderungen verwerfen?",
156
188
  discardMessage: "Sie haben ungespeicherte Änderungen. Wenn Sie dieses Formular jetzt schließen, gehen Ihre Bearbeitungen verloren.",
157
189
  // objectui#4024 — the create/edit dialog's `sr-only` accessible
158
190
  // description, used when the form declares no `description` of its own.
159
191
  dialogDescriptionFallback: "Füllen Sie die Formularfelder aus und senden Sie ab oder brechen Sie ab.",
192
+ deniedDescription: "Sie haben keinen Bearbeitungszugriff auf dieses Feld.",
193
+ masterDetail: {
194
+ loadingColumns: "Spalten werden geladen…",
195
+ subtotal: "Zwischensumme",
196
+ tax: "Steuer ({{rate}} %)",
197
+ total: "Gesamt",
198
+ lineItem: "Position",
199
+ rowTitle: "{{title}} — Zeile {{row}}",
200
+ applyRow: "Übernehmen",
201
+ editorDescription: "Erfassen Sie den Datensatz und seine Positionen und speichern Sie anschließend.",
202
+ noChildObject: "Für diese Sammlung ist kein untergeordnetes Objekt konfiguriert: Setzen Sie {{property}} auf das Objekt, dessen Zeilen sie auflistet.",
203
+ schemaUnavailable: "Das Schema von {{object}} konnte nicht geladen werden, daher hat diese Sammlung keine Spalten zum Anzeigen. Prüfen Sie, ob das Objekt existiert und lesbar ist, und laden Sie dann neu.",
204
+ noRelationshipField: "Es konnte nicht ermittelt werden, wie {{object}} mit {{parent}} verknüpft ist: Kein lookup- oder master_detail-Feld darin verweist auf das übergeordnete Objekt. Setzen Sie {{property}} in dieser Sammlung auf das Feld, das den übergeordneten Datensatz enthält.",
205
+ },
206
+ lineItems: {
207
+ title: "Positionen",
208
+ saveRecordFirst: "Speichern Sie zuerst den Datensatz, um Positionen hinzuzufügen.",
209
+ notLoaded: "Die Positionen dieses Datensatzes wurden nicht geladen.",
210
+ loadFailed: "Positionen konnten nicht geladen werden",
211
+ saveFailed: "Positionen konnten nicht gespeichert werden",
212
+ noChildObject: "Für dieses Panel ist kein untergeordnetes Objekt konfiguriert: Setzen Sie {{property}} auf das Objekt, dessen Zeilen es auflistet.",
213
+ },
160
214
  keepEditing: "Weiter bearbeiten",
161
215
  discard: "Verwerfen",
162
216
  conflictTitle: "Speicherkonflikt",
163
217
  conflictMessage: "Dieser Datensatz wurde während Ihrer Bearbeitung von jemand anderem geändert. Beim Überschreiben werden dessen Änderungen durch Ihre ersetzt.",
164
218
  conflictLatestVersion: "Deren Speicherung: {{time}}",
165
219
  conflictOverwrite: "Überschreiben",
166
- addItem: "Element hinzufügen",
167
220
  removeItem: "Element entfernen",
168
221
  fieldRequired: "Dieses Feld ist erforderlich",
169
222
  invalidFormat: "Ungültiges Format",
@@ -181,6 +234,12 @@ const de = {
181
234
  createSuccess: "{{object}} erfolgreich erstellt",
182
235
  updateSuccess: "{{object}} erfolgreich aktualisiert",
183
236
  deleteSuccess: "{{object}} erfolgreich gelöscht",
237
+ created: "Erstellt",
238
+ saved: "Gespeichert",
239
+ savedNamed: "{{title}} gespeichert",
240
+ submitted: "Gesendet",
241
+ errorLoading: "Fehler beim Laden des Formulars",
242
+ navigateRefused: "Das für dieses Formular deklarierte `navigateOnSuccess`-Ziel wurde abgelehnt, daher fand keine Navigation statt.",
184
243
  fullscreen: {
185
244
  title: "Text bearbeiten",
186
245
  description: "Bearbeiten Sie den vollständigen Textwert und speichern oder verwerfen Sie dann Ihre Änderungen.",
@@ -205,6 +264,8 @@ const de = {
205
264
  },
206
265
  relativeDate: {
207
266
  overdue: "{{count}} T. überfällig",
267
+ overdue_one: "{{count}} T. überfällig",
268
+ overdue_other: "{{count}} T. überfällig",
208
269
  },
209
270
  file: {
210
271
  dragDropHere: 'Dateien hierher ziehen und ablegen',
@@ -221,6 +282,7 @@ const de = {
221
282
  remove: '{{name}} entfernen',
222
283
  exceedsMaxSize: '„{{name}}“ überschreitet die maximale Größe ({{max}} MB)',
223
284
  uploadFailed: 'Hochladen von „{{name}}“ fehlgeschlagen: {{error}}',
285
+ uploadIncomplete: 'Hochladen von „{{name}}“ wurde nicht abgeschlossen: Es wurde keine Datei-ID zurückgegeben, nichts wurde gespeichert',
224
286
  },
225
287
  richText: {
226
288
  format: "Format: {{format}}",
@@ -248,6 +310,9 @@ const de = {
248
310
  selectBusinessUnit: "Geschäftseinheit auswählen",
249
311
  selectPosition: "Position auswählen",
250
312
  selectUnitAndSubordinates: "Geschäftseinheit auswählen",
313
+ selectField: "Benutzerfeld auswählen",
314
+ noUserFields: "Dieses Objekt hat keine Benutzerfelder",
315
+ fieldNotUserTyped: "{{name}} — kein Benutzerfeld",
251
316
  },
252
317
  filterCondition: {
253
318
  selectObjectFirst: "Wählen Sie zuerst ein Objekt.",
@@ -258,13 +323,51 @@ const de = {
258
323
  editAsJson: "Als JSON bearbeiten",
259
324
  useVisualBuilder: "Visuellen Builder verwenden",
260
325
  },
326
+ object: {
327
+ invalidJson: "Ungültiges JSON",
328
+ },
329
+ location: {
330
+ refusedFormat: "Nicht gespeichert: Geben Sie ein Paar aus Breitengrad, Längengrad ein (Beispiel: 30.2741, 120.1551).",
331
+ refusedRange: "Nicht gespeichert: {{detail}}",
332
+ latitude: "Breitengrad",
333
+ longitude: "Längengrad",
334
+ refusedResidueOne: "Nicht gespeichert: {{name}} „{{text}}“ ist keine Zahl. Geben Sie einfache Dezimalzahlen ein (Beispiel: 30.2741, 120.1551).",
335
+ refusedResidue: "Nicht gespeichert: {{name}} „{{text}}“ und {{otherName}} „{{otherText}}“ sind keine Zahlen. Geben Sie einfache Dezimalzahlen ein (Beispiel: 30.2741, 120.1551).",
336
+ },
337
+ date: {
338
+ impossibleDay: "Der gespeicherte Wert „{{value}}“ ist kein gültiges Datum. Wählen Sie ein Datum, um ihn zu ersetzen.",
339
+ },
340
+ dateTime: {
341
+ impossibleDay: "Der gespeicherte Wert „{{value}}“ ist kein gültiges Datum. Wählen Sie Datum und Uhrzeit, um ihn zu ersetzen.",
342
+ },
343
+ number: {
344
+ badInput: "Nicht gespeichert: Der Text in diesem Feld ist keine Zahl. Geben Sie eine einfache Dezimalzahl ein (Beispiel: {{example}}).",
345
+ },
261
346
  tags: {
262
347
  placeholder: "Tippen und mit der Eingabetaste hinzufügen…",
263
348
  },
349
+ // objectui#4028 — `AddressField`'s five sub-labels.
350
+ address: {
351
+ street: "Straße und Hausnummer",
352
+ city: "Stadt",
353
+ state: "Bundesland / Provinz",
354
+ postalCode: "Postleitzahl",
355
+ country: "Land",
356
+ },
264
357
  textarea: {
265
358
  characterCount: "Zeichenanzahl: {{count}} von {{max}}",
266
359
  charactersRemaining: "Verbleibende Zeichen: {{count}}",
267
360
  },
361
+ grid: {
362
+ addLine: "Zeile hinzufügen",
363
+ noItems: "Keine Einträge",
364
+ noItemsAddHint: "Noch keine Einträge – klicken Sie auf „{{label}}“, um zu beginnen.",
365
+ optionalColumns: "Optionale Spalten",
366
+ computed: "Berechnet",
367
+ openRow: "Zeile öffnen",
368
+ duplicateRow: "Zeile duplizieren",
369
+ removeRow: "Zeile entfernen",
370
+ },
268
371
  },
269
372
  table: {
270
373
  rowsPerPage: "Zeilen pro Seite",
@@ -293,23 +396,35 @@ const de = {
293
396
  open: "Öffnen",
294
397
  search: "Suchen…",
295
398
  modified: "{{count}} Zeile geändert",
399
+ modified_one: "{{count}} Zeile geändert",
400
+ modified_other: "{{count}} Zeilen geändert",
296
401
  saveFailed: 'Speichern fehlgeschlagen',
297
402
  selected: "{{count}} ausgewählt",
403
+ selected_one: "{{count}} ausgewählt",
404
+ selected_other: "{{count}} ausgewählt",
298
405
  edit: "Bearbeiten",
299
406
  delete: "Löschen",
300
407
  },
301
408
  grid: {
302
409
  bulkSelected: "{{count}} ausgewählt",
410
+ bulkSelected_one: "{{count}} ausgewählt",
411
+ bulkSelected_other: "{{count}} ausgewählt",
303
412
  bulkSelectedAllMatches: "{{count}} ausgewählt (alle Treffer)",
304
413
  bulkClear: "Auswahl aufheben",
305
414
  bulkAllOnPage: "Alle {{count}} auf dieser Seite sind ausgewählt.",
415
+ bulkAllOnPage_one: "{{count}} Datensatz auf dieser Seite ist ausgewählt.",
416
+ bulkAllOnPage_other: "Alle {{count}} auf dieser Seite sind ausgewählt.",
306
417
  bulkSelectAllMatching: "Alle {{count}} Treffer auswählen",
307
418
  bulkAllMatchingSelected: "Alle {{count}} übereinstimmenden Datensätze sind ausgewählt.",
308
419
  bulk: {
309
420
  confirmDefault: "Dies wird auf {{count}} Datensätze angewendet.",
421
+ confirmDefault_one: "Dies wird auf {{count}} Datensatz angewendet.",
422
+ confirmDefault_other: "Dies wird auf {{count}} Datensätze angewendet.",
310
423
  overLimit: "Die Auswahl ({{count}}) überschreitet das Aktionslimit ({{limit}}). Verkleinern Sie die Auswahl, um fortzufahren.",
311
424
  affectedRecords: "Betroffene Datensätze ({{count}}):",
312
425
  skippedIneligible: '{{count}} der ausgewählten Datensätze sind für diese Aktion nicht zulässig und werden übersprungen.',
426
+ skippedIneligible_one: '{{count}} der ausgewählten Datensätze ist für diese Aktion nicht zulässig und wird übersprungen.',
427
+ skippedIneligible_other: '{{count}} der ausgewählten Datensätze sind für diese Aktion nicht zulässig und werden übersprungen.',
313
428
  rowFallback: "Zeile {{index}}",
314
429
  andMore: "… und {{count}} weitere",
315
430
  processed: "{{count}} / {{total}} verarbeitet",
@@ -327,7 +442,6 @@ const de = {
327
442
  undo: "Rückgängig",
328
443
  undoing: "Wird rückgängig gemacht…",
329
444
  done: "Fertig",
330
- selectPlaceholder: "Auswählen…",
331
445
  loading: "Wird geladen…",
332
446
  },
333
447
  actions: "Aktionen",
@@ -346,6 +460,14 @@ const de = {
346
460
  yes: "Ja",
347
461
  no: "Nein",
348
462
  systemFields: "System",
463
+ // objectui#10881 — the grouped grid's two refusals: over a data source
464
+ // that cannot answer the group header query, and over rows a host
465
+ // handed in while declaring them one page of more. `queryGroupHeaders`
466
+ // is the member's name and stays untranslated.
467
+ grouping: {
468
+ needsHeaderQuery: "Diese Ansicht ist gruppiert, aber ihre Datenquelle implementiert queryGroupHeaders nicht, daher können die Gruppen nicht gezählt werden. Entfernen Sie die Gruppierung, um die Datensätze anzuzeigen.",
469
+ needsWholeRows: "Die Gruppierung benötigt alle Datensätze, aber dieses Raster hat nur eine Seite davon erhalten, daher können die Gruppen nicht gezählt werden. Übergeben Sie alle Datensätze oder lassen Sie das Raster sie aus einer Datenquelle laden, die queryGroupHeaders implementiert.",
470
+ },
349
471
  // objectui#4024 — column-footer aggregate prefixes, keyed by the spec's
350
472
  // `ColumnSummary` vocabulary. `pattern` owns the label/value join so this
351
473
  // pack controls its own separator and word order.
@@ -372,10 +494,14 @@ const de = {
372
494
  },
373
495
  import: {
374
496
  downloadTemplate: "Vorlage herunterladen",
375
- downloadTemplateHint: "Laden Sie eine CSV mit den richtigen Spalten herunter (Pflichtfelder sind mit * markiert).",
497
+ downloadTemplateHint: "Laden Sie eine Excel-Datei mit den importierbaren Spalten herunter (Pflichtfelder sind mit * markiert), samt Ausfüllhinweisen.",
376
498
  templateFileName: "{{object}}-import-template",
499
+ templateDownloadFailed: "Die Vorlage konnte nicht heruntergeladen werden. Bitte versuchen Sie es erneut.",
500
+ templateNotPermitted: "Sie sind nicht berechtigt, Datensätze dieses Objekts zu erstellen, daher ist die Importvorlage nicht verfügbar.",
377
501
  autoMatched: "Automatisch zugeordnet",
378
502
  autoMatchedSummary: "{{count}} Spalte(n) automatisch zugeordnet — unten prüfen und anpassen.",
503
+ autoMatchedSummary_one: "{{count}} Spalte automatisch zugeordnet — unten prüfen und anpassen.",
504
+ autoMatchedSummary_other: "{{count}} Spalten automatisch zugeordnet — unten prüfen und anpassen.",
379
505
  confidence: {
380
506
  high: "Hohe Konfidenz",
381
507
  medium: "Mittlere Konfidenz",
@@ -388,8 +514,14 @@ const de = {
388
514
  cancelImport: "Import abbrechen",
389
515
  importCancelled: "Import abgebrochen",
390
516
  resultsTruncated: "Es werden die ersten {{count}} Zeilenergebnisse (von {{total}}) angezeigt.",
517
+ resultsTruncated_one: "Es wird das erste {{count}} Zeilenergebnis (von {{total}}) angezeigt.",
518
+ resultsTruncated_other: "Es werden die ersten {{count}} Zeilenergebnisse (von {{total}}) angezeigt.",
391
519
  createdCount: "{{count}} erstellt",
520
+ createdCount_one: "{{count}} erstellt",
521
+ createdCount_other: "{{count}} erstellt",
392
522
  updatedCount: "{{count}} aktualisiert",
523
+ updatedCount_one: "{{count}} aktualisiert",
524
+ updatedCount_other: "{{count}} aktualisiert",
393
525
  downloadFailed: "Fehlgeschlagene Zeilen herunterladen",
394
526
  options: "Importoptionen",
395
527
  writeMode: "Wenn eine Zeile zu einem vorhandenen Datensatz passt",
@@ -437,6 +569,8 @@ const de = {
437
569
  historyColResult: "Ergebnis",
438
570
  historyColTime: "Wann",
439
571
  errorCount: "{{count}} Fehler",
572
+ errorCount_one: "{{count}} Fehler",
573
+ errorCount_other: "{{count}} Fehler",
440
574
  undoImport: "Import rückgängig machen",
441
575
  undoing: "Wird rückgängig gemacht…",
442
576
  undoConfirm: "Diesen Import rückgängig machen? Dabei erstellte Datensätze werden gelöscht und aktualisierte Datensätze auf ihre vorherigen Werte zurückgesetzt.",
@@ -497,7 +631,11 @@ const de = {
497
631
  mapped: "Zugeordnet",
498
632
  skipped: "Übersprungen",
499
633
  rowsWithErrors: "{{count}} Zeile(n) mit Fehlern",
634
+ rowsWithErrors_one: "{{count}} Zeile mit Fehlern",
635
+ rowsWithErrors_other: "{{count}} Zeilen mit Fehlern",
500
636
  rowsCorrected: "{{count}} Zeile(n) korrigiert",
637
+ rowsCorrected_one: "{{count}} Zeile korrigiert",
638
+ rowsCorrected_other: "{{count}} Zeilen korrigiert",
501
639
  clickToFix: "— klicken Sie auf eine hervorgehobene Zelle, um sie zu bearbeiten.",
502
640
  showingRows: "{{shown}} von {{total}} Zeilen angezeigt",
503
641
  importing: "Importiere… {{progress}}%",
@@ -505,11 +643,15 @@ const de = {
505
643
  imported: "{{count}} importiert",
506
644
  skippedCount: "{{count}} übersprungen",
507
645
  moreErrors: "…und {{count}} weitere Fehler",
646
+ moreErrors_one: "…und {{count}} weiterer Fehler",
647
+ moreErrors_other: "…und {{count}} weitere Fehler",
508
648
  cancel: "Abbrechen",
509
649
  back: "Zurück",
510
650
  next: "Weiter",
511
651
  close: "Schließen",
512
652
  importNRows: "{{count}} Zeilen importieren",
653
+ importNRows_one: "{{count}} Zeile importieren",
654
+ importNRows_other: "{{count}} Zeilen importieren",
513
655
  importingProgress: "Importiere…",
514
656
  requiredMark: "*",
515
657
  required: "Erforderlich",
@@ -521,11 +663,37 @@ const de = {
521
663
  month: "Monat",
522
664
  week: "Woche",
523
665
  day: "Tag",
524
- agenda: "Agenda",
525
666
  allDay: "Ganztägig",
526
- noEvents: "Keine Termine",
527
667
  newEvent: "Neuer Termin",
528
668
  moreEvents: "+{{count}} weitere",
669
+ unscheduled: "Nicht geplant ({{count}})",
670
+ loading: "Kalender wird geladen…",
671
+ loadError: "Fehler: {{message}}",
672
+ configRequired: "Kalenderkonfiguration erforderlich. Bitte startDateField angeben, den einzigen erforderlichen Schlüssel des Kalenders; der Termintitel wird auch ohne titleField aufgelöst.",
673
+ configRequiredHint: "Sie gehört in den calendar-Block der Ansicht. Eine Interface-Seite hat keinen eigenen Kalender-Slot: Richten Sie ihr sourceView auf eine Ansicht, die einen deklariert.",
674
+ eventDetails: "Termindetails",
675
+ pullToRefresh: "Zum Aktualisieren ziehen",
676
+ refreshing: "Wird aktualisiert…",
677
+ onDate: "Am {{date}}",
678
+ eventTitle: "Titel",
679
+ eventTitlePlaceholder: "Worum geht es bei diesem Termin?",
680
+ creating: "Wird erstellt…",
681
+ titleRequired: "Titel ist erforderlich",
682
+ a11y: {
683
+ region: "Kalender",
684
+ grid: "Kalenderraster",
685
+ goToToday: "Zu heute springen",
686
+ previousPeriod: "Vorheriger Zeitraum",
687
+ nextPeriod: "Nächster Zeitraum",
688
+ currentDate: "Aktuelles Datum: {{date}}",
689
+ dayCell: "{{date}}, {{count}} Termine",
690
+ dayCell_one: "{{date}}, {{count}} Termin",
691
+ dayCell_other: "{{date}}, {{count}} Termine",
692
+ resizeEventEnd: "Ende des Termins ändern",
693
+ resizeEventEndHint: "Ziehen, um das Enddatum zu ändern",
694
+ resizeStart: "Beginn ändern",
695
+ resizeEnd: "Ende ändern",
696
+ },
529
697
  },
530
698
  list: {
531
699
  firstRunTitle: "Hier ist noch nichts",
@@ -568,7 +736,8 @@ const de = {
568
736
  refresh: "Aktualisieren",
569
737
  loading: "Datensätze werden geladen…",
570
738
  recordCount: "{{count}} Datensätze",
571
- recordCountOne: "{{count}} Datensatz",
739
+ recordCount_one: "{{count}} Datensatz",
740
+ recordCount_other: "{{count}} Datensätze",
572
741
  addRecord: "Datensatz hinzufügen",
573
742
  tabs: "Tabs",
574
743
  allRecords: "Alle Datensätze",
@@ -600,7 +769,7 @@ const de = {
600
769
  hideFieldsTitle: "Felder ausblenden",
601
770
  dataLimitReached: "Die ersten {{limit}} Datensätze werden angezeigt. Möglicherweise sind weitere Daten verfügbar.",
602
771
  viewSettings: "Ansichtseinstellungen",
603
- viewSettingsHint: "Gruppierung, Farbe, Dichte und sichtbare Felder.",
772
+ viewSettingsHint: "Gruppierung, Farbe, Dichte und sichtbare Felder. Gilt für alle Benutzer dieser Ansicht.",
604
773
  addGroup: "Gruppenfeld hinzufügen",
605
774
  collapsedByDefault: "Standardmäßig eingeklappt",
606
775
  removeGroup: "Entfernen",
@@ -665,6 +834,17 @@ const de = {
665
834
  },
666
835
  gantt: {
667
836
  rowLabel: "Elemente",
837
+ unusableRange: {
838
+ malformedDate: "Unbrauchbarer Gantt-Datumsbereich — {{path}} ist {{value}} und damit kein gültiges Datum. Jedes Gantt-Datum muss parsebar sein: startDate und endDate jedes Zeilenelements sowie ein am Schema gesetztes minDate / maxDate.",
839
+ malformedRow: "Unbrauchbare Gantt-Zeilen — {{path}} ist {{value}} und damit keine Zeilenform. Ein Gantt liest items als Liste von Zeilen, jede Zeile als Objekt mit label und eigenen items und die items jeder Zeile als Liste von Balken; ein null, eine Zahl, ein String oder ein einfaches Objekt an einer dieser Stellen kann nicht gezeichnet werden.",
840
+ inverted: "Unbrauchbarer Gantt-Datumsbereich — minDate {{minDate}} liegt nach maxDate {{maxDate}}. Ein gesetztes minDate / maxDate überschreibt den aus den Zeilen berechneten Bereich, daher hat diese Achse keine Spalten und es kann kein Balken platziert werden; vertauschen Sie die beiden Werte.",
841
+ },
842
+ },
843
+ unsupported: {
844
+ objectBoundGantt: "Nicht unterstützte Variante „gantt“ — eine objektgebundene Timeline rendert die Feed-Varianten ({{variants}}). Gantt benötigt literale Zeilen mit jeweils eigenen verschachtelten items; die Gantt-Achse (scale) hat hier daher keine Wirkung.",
845
+ },
846
+ unconfigured: {
847
+ noDateAxis: "Zeitachse für die Timeline erforderlich — diese Ansicht deklariert kein Datumsfeld, und eine objektgebundene Timeline erfindet keines. Deklarieren Sie eines von: {{fields}}. Das erste ist die Spec-Schreibweise, die übrigen sind veraltete Aliase.",
668
848
  },
669
849
  },
670
850
  gantt: {
@@ -682,6 +862,7 @@ const de = {
682
862
  },
683
863
  aria: {
684
864
  taskList: "Vorgangsliste",
865
+ refreshing: "Aktualisiere…",
685
866
  },
686
867
  tooltip: {
687
868
  days: "T",
@@ -727,13 +908,19 @@ const de = {
727
908
  conflict: {
728
909
  title: "Terminkonflikt",
729
910
  body: "Diese Verschiebung verstößt gegen Abhängigkeitsbedingungen. {{count}} betroffene Vorgänge automatisch neu planen?",
911
+ body_one: "Diese Verschiebung verstößt gegen Abhängigkeitsbedingungen. {{count}} betroffenen Vorgang automatisch neu planen?",
912
+ body_other: "Diese Verschiebung verstößt gegen Abhängigkeitsbedingungen. {{count}} betroffene Vorgänge automatisch neu planen?",
730
913
  confirm: "Automatisch neu planen",
731
914
  cancel: "Unverändert lassen",
732
915
  },
733
916
  autoScheduleDlg: {
734
917
  title: "Automatisch planen",
735
918
  body: "{{count}} Vorgänge nach hinten verschieben, um die Abhängigkeiten einzuhalten?",
919
+ body_one: "{{count}} Vorgang nach hinten verschieben, um die Abhängigkeiten einzuhalten?",
920
+ body_other: "{{count}} Vorgänge nach hinten verschieben, um die Abhängigkeiten einzuhalten?",
736
921
  skipped: "{{count}} gesperrte Vorgänge verletzen die Verknüpfungen ebenfalls und wurden übersprungen.",
922
+ skipped_one: "{{count}} gesperrter Vorgang verletzt die Verknüpfungen ebenfalls und wurde übersprungen.",
923
+ skipped_other: "{{count}} gesperrte Vorgänge verletzen die Verknüpfungen ebenfalls und wurden übersprungen.",
737
924
  confirm: "Anwenden",
738
925
  cancel: "Abbrechen",
739
926
  none: "Alle Abhängigkeiten sind erfüllt — nichts neu zu planen.",
@@ -812,6 +999,7 @@ const de = {
812
999
  tabActionsFor: "Ansichtsaktionen für {{name}}",
813
1000
  readonlyAriaLabel: "Schreibgeschützte Ansicht",
814
1001
  readonlyTooltip: "Systemansicht — im Code definiert, schreibgeschützt.",
1002
+ malformedFilter: "Der Filter dieser Ansicht ist fehlerhaft, daher werden keine Datensätze angezeigt: Die Bedingung {{subject}} kann nicht angewendet werden.",
815
1003
  },
816
1004
  designer: {
817
1005
  undo: "Rückgängig",
@@ -837,7 +1025,8 @@ const de = {
837
1025
  pageHeaderActions: "Aktionen der Seitenkopfzeile",
838
1026
  emojiPicker: "Emoji-Auswahl",
839
1027
  reactionCount: "{{emoji}} {{count}} Reaktionen",
840
- reactionCountOne: "{{emoji}} {{count}} Reaktion",
1028
+ reactionCount_one: "{{emoji}} {{count}} Reaktion",
1029
+ reactionCount_other: "{{emoji}} {{count}} Reaktionen",
841
1030
  recordDetail: "Datensatzdetails",
842
1031
  recordDetailWithLabel: "{{label}}-Details",
843
1032
  openAsFullPage: "Als ganze Seite öffnen",
@@ -855,7 +1044,7 @@ const de = {
855
1044
  relatedRecords: "{{count}} Datensätze",
856
1045
  relatedRecordOne: "{{count}} Datensatz",
857
1046
  noRelatedRecords: "Keine verknüpften Datensätze gefunden",
858
- loading: "Laden…",
1047
+ loading: "Wird geladen…",
859
1048
  copyToClipboard: "In Zwischenablage kopieren",
860
1049
  copied: "Kopiert!",
861
1050
  deleteConfirmation: "Sind Sie sicher, dass Sie diesen Datensatz löschen möchten?",
@@ -864,7 +1053,6 @@ const de = {
864
1053
  viewAll: "Alle anzeigen",
865
1054
  new: "Neu",
866
1055
  add: "Hinzufügen",
867
- emptyValue: "—",
868
1056
  comments: "Kommentare",
869
1057
  searchComments: "Kommentare suchen…",
870
1058
  addCommentPlaceholder: "Kommentar hinzufügen… (Strg+Enter zum Senden)",
@@ -875,11 +1063,18 @@ const de = {
875
1063
  unpin: "Lösen",
876
1064
  justNow: "gerade eben",
877
1065
  minutesAgo: "vor {{count}} Min.",
1066
+ minutesAgo_one: "vor {{count}} Min.",
1067
+ minutesAgo_other: "vor {{count}} Min.",
878
1068
  hoursAgo: "vor {{count}} Std.",
1069
+ hoursAgo_one: "vor {{count}} Std.",
1070
+ hoursAgo_other: "vor {{count}} Std.",
879
1071
  daysAgo: "vor {{count}} Tg.",
1072
+ daysAgo_one: "vor {{count}} Tg.",
1073
+ daysAgo_other: "vor {{count}} Tg.",
880
1074
  dropFilesToUpload: "Dateien hierher ziehen oder klicken zum Hochladen",
881
1075
  attachmentCount: "{{count}} Anhang",
882
- attachmentCountPlural: "{{count}} Anhänge",
1076
+ attachmentCount_one: "{{count}} Anhang",
1077
+ attachmentCount_other: "{{count}} Anhänge",
883
1078
  removeAttachment: "Anhang entfernen",
884
1079
  // Record Attachments panel (enable.files, objectstack#4358)
885
1080
  attachments: "Anhänge",
@@ -893,11 +1088,10 @@ const de = {
893
1088
  attachmentDownloadDenied: "Sie sind nicht berechtigt, diesen Anhang herunterzuladen.",
894
1089
  attachmentAuthRequired: "Bitte melden Sie sich an, um diesen Anhang herunterzuladen.",
895
1090
  attachmentPermissionDenied: "Sie haben keine Berechtigung für diese Aktion.",
896
- unifiedDiff: "Einheitliche Ansicht",
897
- sideBySideDiff: "Nebeneinander-Ansicht",
898
- noChanges: "Keine Änderungen",
899
- previousVersion: "Vorherige",
900
- currentVersion: "Aktuelle",
1091
+ attachmentsAccessDenied: "Sie haben keinen Zugriff auf diese Anhänge.",
1092
+ attachmentsLoadFailed: "Die Anhänge dieses Datensatzes konnten nicht geladen werden.",
1093
+ attachmentsApiUnavailable: "Die Anhangsliste ist für dieses Objekt nicht verfügbar.",
1094
+ retryLoadAttachments: "Erneut versuchen",
901
1095
  discussion: "Diskussion",
902
1096
  showDiscussion: "Diskussion anzeigen ({{count}})",
903
1097
  hideDiscussion: "Diskussion ausblenden",
@@ -912,25 +1106,35 @@ const de = {
912
1106
  writeComment: "Kommentar schreiben…",
913
1107
  subscribedTooltip: "Abonniert — Klicken zum Abbestellen",
914
1108
  unsubscribedTooltip: "Benachrichtigungen abonnieren",
915
- firstRecord: "Erster Datensatz (Pos1)",
916
- previousRecordKey: "Vorheriger Datensatz (←)",
917
- nextRecordKey: "Nächster Datensatz (→)",
918
- lastRecord: "Letzter Datensatz (Ende)",
919
1109
  noRecords: "Keine Datensätze",
920
- searchWhileNavigating: "Während der Navigation suchen",
921
- searchRecords: "Datensätze suchen…",
922
1110
  allActivity: "Alle Aktivitäten",
923
1111
  commentsOnly: "Nur Kommentare",
924
1112
  fieldChangesFilter: "Feldänderungen",
925
1113
  tasksOnly: "Nur Aufgaben",
926
1114
  leaveCommentPlaceholder: "Kommentar hinterlassen… (Strg+Enter zum Senden)",
927
1115
  noActivity: "Keine Aktivitäten aufgezeichnet",
1116
+ activityAccessDenied: "Sie haben keine Berechtigung, die Aktivitäten dieses Datensatzes anzuzeigen.",
1117
+ commentsAccessDenied: "Sie haben keine Berechtigung, die Kommentare zu diesem Datensatz anzuzeigen.",
1118
+ // objectui#7149 — the rest of `ActivityTimeline`. The four chip labels the
1119
+ // `detail.*` pack did not already name, and the `formatFieldChange`
1120
+ // sentences, which are assembled in code and so need interpolation holes.
1121
+ allFilter: 'Alle',
1122
+ createsFilter: 'Erstellungen',
1123
+ deletesFilter: 'Löschungen',
1124
+ statusChangesFilter: 'Statusänderungen',
1125
+ activityEmptyValue: '(leer)',
1126
+ activityFieldChanged: '{{field}} von „{{old}}“ zu „{{new}}“ geändert',
1127
+ activityCreated: 'Diesen Datensatz erstellt',
1128
+ activityDeleted: 'Diesen Datensatz gelöscht',
1129
+ activityStatusChanged: 'Status zu „{{value}}“ geändert',
1130
+ activityUpdated: 'Datensatz aktualisiert',
928
1131
  loadMore: "Mehr laden",
929
1132
  edited: "(bearbeitet)",
930
1133
  via: "über {{source}}",
931
1134
  viewSource: "Quelle anzeigen",
932
1135
  replyCount: "{{count}} Antwort",
933
- replyCountPlural: "{{count}} Antworten",
1136
+ replyCount_one: "{{count}} Antwort",
1137
+ replyCount_other: "{{count}} Antworten",
934
1138
  replyPlaceholder: "Antworten…",
935
1139
  filterActivity: "Aktivität filtern",
936
1140
  openDiscussion: "Diskussionspanel öffnen",
@@ -944,6 +1148,9 @@ const de = {
944
1148
  writeStrippedTitle: "Gespeichert — einige Felder wurden jedoch nicht übernommen",
945
1149
  writeStrippedReadonly: "Schreibgeschützt und daher nicht übernommen: {{fields}}",
946
1150
  writeStrippedByState: "Im aktuellen Status dieses Datensatzes nicht bearbeitbar und daher nicht übernommen: {{fields}}",
1151
+ writeStrippedPrimaryKey: "Die Kennung des Datensatzes kann beim Speichern nicht geändert werden und wurde daher nicht übernommen: {{fields}}",
1152
+ writeStrippedComputed: "Wird vom Server per Formel berechnet, daher wurde der gesendete Wert nicht übernommen: {{fields}}",
1153
+ writeStrippedUnknownReason: "Vom Server nicht übernommen: {{fields}}",
947
1154
  approvalPendingEditable: "In Genehmigung · bearbeitbar",
948
1155
  approvalPendingTooltip: "Dieser Datensatz hat eine ausstehende Genehmigungsanfrage; dieser Schritt erlaubt weiterhin die Bearbeitung",
949
1156
  approvalProgress: "Genehmigungen — {{got}} von {{need}}",
@@ -956,7 +1163,16 @@ const de = {
956
1163
  cancelApprovalTooltipUnlocked: "Ausstehende Genehmigungsanfrage zurückziehen",
957
1164
  cancelApprovalFailed: "Genehmigung konnte nicht zurückgezogen werden",
958
1165
  cancelApprovalUnavailable: "Das Zurückziehen von Genehmigungen wird bei dieser Datenquelle nicht unterstützt",
1166
+ pathLabel: 'Datensatzpfad',
1167
+ pathStageCompleted: '{{stage}}, abgeschlossen',
1168
+ pathStageCurrent: '{{stage}}, aktuelle Phase',
1169
+ pathStageUpcoming: '{{stage}}, ausstehend',
1170
+ pathStageLostCurrent: '{{stage}}, verloren, aktuelle Phase',
1171
+ pathStageLostUpcoming: '{{stage}}, verloren, nicht erreicht',
1172
+ pathStageWonUpcoming: '{{stage}}, Zielphase, nicht erreicht',
959
1173
  linkCopied: "Link in die Zwischenablage kopiert",
1174
+ commentFailed: "Ihr Kommentar wurde nicht veröffentlicht. Es wurde nichts gespeichert – bitte versuchen Sie es erneut.",
1175
+ reactionFailed: "Ihre Reaktion wurde nicht gespeichert. Bitte versuchen Sie es erneut.",
960
1176
  linkCopyFailed: "Link konnte nicht kopiert werden",
961
1177
  cancel: "Abbrechen",
962
1178
  cancelEdit: "Änderungen verwerfen",
@@ -986,6 +1202,7 @@ const de = {
986
1202
  sortBy: "Sortieren nach",
987
1203
  filterPlaceholder: "Filtern…",
988
1204
  highlightFields: "Schlüsselfelder",
1205
+ highlightsLabel: "Schlüsselfelder des Datensatzes",
989
1206
  createdBy: "Erstellt von",
990
1207
  updatedBy: "Aktualisiert von",
991
1208
  created: "Erstellt",
@@ -999,86 +1216,50 @@ const de = {
999
1216
  copyPhone: "Telefonnummer kopieren",
1000
1217
  copyRecordId: "Datensatz-ID kopieren",
1001
1218
  showEmptyFields: "{{count}} leere Felder anzeigen",
1219
+ showEmptyFields_one: "{{count}} leeres Feld anzeigen",
1220
+ showEmptyFields_other: "{{count}} leere Felder anzeigen",
1002
1221
  hideEmptyFields: "Leere Felder ausblenden",
1003
1222
  noValue: "Kein Wert",
1223
+ unresolvedReference: "Nicht aufgelöste Referenz: {{value}} wurde keinem Benutzer zugeordnet",
1224
+ unresolvedLookupReference: "Nicht aufgelöste Referenz: {{value}} wurde auf dieser Ansicht keinem Datensatz zugeordnet",
1225
+ repeaterItemCount: "{{count}} Einträge",
1226
+ repeaterItemCount_one: "{{count}} Eintrag",
1227
+ repeaterItemCount_other: "{{count}} Einträge",
1228
+ fileCount: "{{count}} Dateien",
1229
+ fileCount_one: "{{count}} Datei",
1230
+ fileCount_other: "{{count}} Dateien",
1004
1231
  },
1005
1232
  chart: {
1006
- noData: "Keine Diagrammdaten verfügbar",
1007
1233
  loading: "Diagramm wird geladen…",
1234
+ refreshing: "Wird aktualisiert…",
1008
1235
  nullCategory: "(Ohne Angabe)",
1009
- },
1010
- map: {
1011
- searchLocations: "Orte suchen…",
1012
- locationDetails: "Standortdetails",
1013
- markersCount: "{{count}} Markierungen",
1014
- invalidCoordinates: "{{count}} Datensatz mit fehlenden oder ungültigen Koordinaten von der Karte ausgeschlossen.",
1015
- invalidCoordinatesPlural: "{{count}} Datensätze mit fehlenden oder ungültigen Koordinaten von der Karte ausgeschlossen.",
1016
- },
1017
- workflow: {
1018
- draft: "Entwurf",
1019
- active: "Aktiv",
1020
- paused: "Pausiert",
1021
- completed: "Abgeschlossen",
1022
- cancelled: "Abgebrochen",
1023
- save: "Speichern",
1024
- publish: "Veröffentlichen",
1025
- addNode: "Knoten hinzufügen",
1026
- workflowFlow: "Workflow-Ablauf",
1027
- properties: "Eigenschaften",
1028
- connections: "Verbindungen",
1029
- quickConnect: "Schnellverbindung",
1030
- fromPlaceholder: "Von…",
1031
- toPlaceholder: "Nach…",
1032
- connect: "Verbinden",
1033
- label: "Bezeichnung",
1034
- type: "Typ",
1035
- description: "Beschreibung",
1036
- assignee: "Zuständiger",
1037
- assigneeType: "Zuständigkeitstyp",
1038
- user: "Benutzer",
1039
- role: "Rolle",
1040
- group: "Gruppe",
1041
- expression: "Ausdruck",
1042
- timeoutMinutes: "Zeitlimit (Minuten)",
1043
- selectNodeToEdit: "Knoten auswählen, um Eigenschaften zu bearbeiten",
1044
- workflowTitle: "Workflow-Titel",
1045
- newWorkflow: "Neuer Workflow",
1046
- outConnections: "{{count}} Ausgänge",
1047
- start: "Start",
1048
- end: "Ende",
1049
- task: "Aufgabe",
1050
- userTask: "Benutzeraufgabe",
1051
- serviceTask: "Serviceaufgabe",
1052
- scriptTask: "Skriptaufgabe",
1053
- approval: "Genehmigung",
1054
- condition: "Bedingung",
1055
- parallelGateway: "Paralleles Gateway",
1056
- joinGateway: "Zusammenführungs-Gateway",
1057
- boundaryEvent: "Grenzereignis",
1058
- delay: "Verzögerung",
1059
- notification: "Benachrichtigung",
1060
- webhook: "Webhook",
1061
- allowConcurrency: "Erlauben (gleichzeitig ausführen)",
1062
- forbidConcurrency: "Verbieten (neue überspringen)",
1063
- replaceConcurrency: "Ersetzen (bestehende abbrechen)",
1064
- queueConcurrency: "Warteschlange (nach aktuellem ausführen)",
1065
- conditionEvent: "Bedingung",
1066
- manualEvent: "Manuell",
1067
- webhookEvent: "Webhook",
1068
- timerEvent: "Timer",
1069
- signalEvent: "Signal",
1070
- versionHistory: "Versionshistorie",
1071
- importBpmn: "BPMN importieren",
1072
- exportBpmn: "BPMN exportieren",
1073
- undo: "Rückgängig",
1074
- redo: "Wiederholen",
1075
- resetZoom: "Zoom zurücksetzen",
1236
+ scatterOneMeasure: "Ein Streudiagramm zeichnet genau eine Kennzahl. Behalten Sie nur eine Datenreihe:",
1237
+ unconfigured: {
1238
+ noCategoryAxis: "Kategorieachse des Diagramms erforderlich — ein objektgebundenes Diagramm erfindet keine. Deklarieren Sie eine davon:",
1239
+ },
1076
1240
  },
1077
1241
  dashboard: {
1078
- noRows: "Keine Zeilen",
1242
+ // objectui#7063 — the DEFAULT empty state every dashboard widget renders
1243
+ // when its query SUCCEEDED and returned nothing. It replaced the terse
1244
+ // per-widget `noRows` / `noDataAvailable` fragments at the render site;
1245
+ // objectui#7125 deleted those two keys from all ten packs once nothing
1246
+ // read them. The copy here has to read as a state rather than a failure,
1247
+ // which is why it says the widget loaded. `sourceLabel` carries its own
1248
+ // punctuation so the call site concatenates no separator (see
1249
+ // `WidgetEmptyState`).
1250
+ empty: {
1251
+ title: "Noch keine Daten",
1252
+ message: "Dieses Widget wurde erfolgreich geladen, die Abfrage hat aber noch keine Datensätze zurückgegeben.",
1253
+ sourceLabel: "Datenquelle:",
1254
+ },
1079
1255
  loading: "Wird geladen…",
1256
+ refreshing: "Wird aktualisiert…",
1257
+ refreshAll: "Alle aktualisieren",
1258
+ refreshDashboard: "Dashboard aktualisieren",
1080
1259
  pickMeasures: "Wählen Sie Kennzahlen (Werte) für dieses Dataset-Widget.",
1081
1260
  datasetUnsupported: "Diese Datenquelle unterstützt keine Dataset-Abfragen.",
1261
+ widgetForbiddenTitle: "Kein Zugriff",
1262
+ widgetForbiddenMessage: "Sie haben keine Berechtigung, die Daten dieses Widgets anzuzeigen.",
1082
1263
  details: "Details",
1083
1264
  exportCsv: "CSV exportieren",
1084
1265
  openInList: "In Liste öffnen",
@@ -1106,13 +1287,110 @@ const de = {
1106
1287
  },
1107
1288
  },
1108
1289
  addWidget: "Widget hinzufügen",
1109
- removeWidget: "Widget entfernen",
1110
1290
  editLayout: "Layout bearbeiten",
1111
1291
  saveLayout: "Layout speichern",
1112
1292
  resetLayout: "Layout zurücksetzen",
1113
1293
  total: "Gesamt",
1114
- noDataAvailable: "Keine Daten verfügbar",
1115
1294
  noDataSourceFor: "Keine Datenquelle verfügbar für",
1295
+ config: {
1296
+ breadcrumb: {
1297
+ dashboard: "Dashboard",
1298
+ configuration: "Konfiguration",
1299
+ widget: "Widget",
1300
+ chart: "Diagramm",
1301
+ table: "Tabelle",
1302
+ pivotTable: "Pivot-Tabelle",
1303
+ },
1304
+ section: {
1305
+ general: "Allgemein",
1306
+ layout: "Layout",
1307
+ data: "Daten",
1308
+ dataBinding: "Datenbindung",
1309
+ appearance: "Darstellung",
1310
+ },
1311
+ field: {
1312
+ title: "Titel",
1313
+ description: "Beschreibung",
1314
+ columns: "Spalten",
1315
+ gap: "Abstand",
1316
+ rowHeight: "Zeilenhöhe (px)",
1317
+ autoRefresh: "Automatisch aktualisieren",
1318
+ showDescription: "Beschreibung anzeigen",
1319
+ theme: "Design",
1320
+ widgetType: "Widget-Typ",
1321
+ colorVariant: "Farbvariante",
1322
+ dataset: "Datensatz",
1323
+ dimensions: "Dimensionen",
1324
+ values: "Werte",
1325
+ width: "Breite (Spalten)",
1326
+ height: "Höhe (Zeilen)",
1327
+ },
1328
+ placeholder: {
1329
+ dashboardTitle: "Dashboard-Titel",
1330
+ dashboardDescription: "Kurze Zusammenfassung unter dem Titel",
1331
+ widgetTitle: "Widget-Titel",
1332
+ widgetDescription: "Widget-Beschreibung",
1333
+ datasetName: "Name des Datensatzes",
1334
+ selectDataset: "Datensatz auswählen…",
1335
+ searchDatasets: "Datensätze suchen…",
1336
+ addDimension: "Dimension hinzufügen…",
1337
+ addMeasure: "Kennzahl hinzufügen…",
1338
+ searchMembers: "Suchen…",
1339
+ },
1340
+ empty: {
1341
+ datasets: "Keine Datensätze gefunden.",
1342
+ dimensions: "Keine Dimensionen ausgewählt.",
1343
+ measures: "Keine Kennzahlen ausgewählt.",
1344
+ nothingToAdd: "Nichts mehr hinzuzufügen.",
1345
+ },
1346
+ help: {
1347
+ dataset: "Der Semantic-Layer-Datensatz, an den dieses Widget gebunden ist (ADR-0021).",
1348
+ dimensions: "Werte nach diesen Datensatz-Dimensionen gruppieren/aufteilen.",
1349
+ dimensionsPivot: "Felder zum Gruppieren/Aufteilen. Die letzte Dimension wird als Spalten ausgebreitet.",
1350
+ values: "Anzuzeigende Kennzahlen aus dem Datensatz (mindestens eine).",
1351
+ },
1352
+ action: {
1353
+ add: "Hinzufügen",
1354
+ remove: "{{name}} entfernen",
1355
+ },
1356
+ refresh: {
1357
+ off: "Aus",
1358
+ every30s: "Alle 30 s",
1359
+ every1m: "Jede Minute",
1360
+ every5m: "Alle 5 Min.",
1361
+ every15m: "Alle 15 Min.",
1362
+ every30m: "Alle 30 Min.",
1363
+ every1h: "Jede Stunde",
1364
+ },
1365
+ themeOption: {
1366
+ light: "Hell",
1367
+ dark: "Dunkel",
1368
+ auto: "Automatisch",
1369
+ },
1370
+ widgetType: {
1371
+ metric: "Kennzahl",
1372
+ bar: "Balkendiagramm",
1373
+ horizontalBar: "Horizontale Balken",
1374
+ line: "Liniendiagramm",
1375
+ pie: "Kreisdiagramm",
1376
+ donut: "Ringdiagramm",
1377
+ area: "Flächendiagramm",
1378
+ scatter: "Streudiagramm",
1379
+ funnel: "Trichter",
1380
+ table: "Tabelle",
1381
+ pivot: "Pivot-Tabelle",
1382
+ },
1383
+ color: {
1384
+ default: "Standard",
1385
+ blue: "Blau",
1386
+ teal: "Petrol",
1387
+ orange: "Orange",
1388
+ purple: "Lila",
1389
+ success: "Erfolg",
1390
+ warning: "Warnung",
1391
+ danger: "Gefahr",
1392
+ },
1393
+ },
1116
1394
  trend: {
1117
1395
  vsLastQuarter: "vs. letztes Quartal",
1118
1396
  vsLastMonth: "vs. letzten Monat",
@@ -1122,24 +1400,6 @@ const de = {
1122
1400
  vsPreviousPeriod: "vs. vorherige Periode",
1123
1401
  },
1124
1402
  },
1125
- configPanel: {
1126
- save: "Speichern",
1127
- discard: "Verwerfen",
1128
- close: "Schließen",
1129
- layout: "Layout",
1130
- columns: "Spalten",
1131
- gap: "Abstand",
1132
- rowHeight: "Zeilenhöhe",
1133
- data: "Daten",
1134
- refreshInterval: "Aktualisierungsintervall",
1135
- appearance: "Darstellung",
1136
- title: "Titel",
1137
- showDescription: "Beschreibung anzeigen",
1138
- theme: "Design",
1139
- configuration: "Konfiguration",
1140
- general: "Allgemein",
1141
- advanced: "Erweitert",
1142
- },
1143
1403
  appDesigner: {
1144
1404
  createApp: "Anwendung erstellen",
1145
1405
  editApp: "Anwendung bearbeiten",
@@ -1152,10 +1412,6 @@ const de = {
1152
1412
  appDescription: "Beschreibung",
1153
1413
  appIcon: "Symbol",
1154
1414
  template: "Vorlage",
1155
- layout: "Layout",
1156
- layoutSidebar: "Seitenleiste",
1157
- layoutHeader: "Kopfzeile",
1158
- layoutEmpty: "Leer",
1159
1415
  selectObjects: "Objekte auswählen",
1160
1416
  searchObjects: "Objekte suchen…",
1161
1417
  selectAll: "Alle auswählen",
@@ -1164,7 +1420,6 @@ const de = {
1164
1420
  addGroup: "Gruppe hinzufügen",
1165
1421
  addUrl: "URL hinzufügen",
1166
1422
  addSeparator: "Trenner hinzufügen",
1167
- noNavItems: "Noch keine Navigationselemente.",
1168
1423
  logoUrl: "Logo-URL",
1169
1424
  primaryColor: "Primärfarbe",
1170
1425
  faviconUrl: "Favicon-URL",
@@ -1190,16 +1445,13 @@ const de = {
1190
1445
  showSort: "Sortierung anzeigen",
1191
1446
  appearance: "Erscheinungsbild",
1192
1447
  rowHeight: "Zeilenhöhe",
1193
- stripedRows: "Gestreifte Zeilen",
1194
- bordered: "Umrandet",
1195
1448
  livePreview: "Echtzeit-Vorschau",
1196
- stepBasicDesc: "Name, Titel und Layout",
1449
+ stepBasicDesc: "Name, Titel und Symbol",
1197
1450
  stepObjectsDesc: "Geschäftsobjekte auswählen",
1198
1451
  stepNavigationDesc: "Navigationsbaum erstellen",
1199
1452
  stepBrandingDesc: "Logo, Farben und Favicon",
1200
1453
  noObjectsFound: "Keine Objekte gefunden.",
1201
1454
  noNavItemsHint: "Noch keine Navigationselemente. Wählen Sie Objekte im vorherigen Schritt aus oder fügen Sie manuell hinzu.",
1202
- separator: "Trennlinie",
1203
1455
  separatorLabel: "— Trennlinie —",
1204
1456
  newGroup: "Neue Gruppe",
1205
1457
  newLink: "Neuer Link",
@@ -1233,6 +1485,7 @@ const de = {
1233
1485
  navTypeSeparator: "Trenner",
1234
1486
  navTypeAction: "Aktion",
1235
1487
  navTypeComponent: "Komponente",
1488
+ navTypeDoc: "Dokument",
1236
1489
  navEditIcon: "Symbol bearbeiten",
1237
1490
  navToggleVisible: "Sichtbarkeit umschalten",
1238
1491
  navHidden: "Ausgeblendet",
@@ -1305,17 +1558,13 @@ const de = {
1305
1558
  unique: "Eindeutig",
1306
1559
  readOnly: "Nur lesen",
1307
1560
  hidden: "Ausgeblendet",
1308
- indexed: "Indiziert",
1309
1561
  externalId: "Externe ID",
1310
1562
  trackHistory: "Verlauf verfolgen",
1311
1563
  defaultValue: "Standardwert",
1312
1564
  placeholder: "Platzhalter",
1313
1565
  referenceTo: "Verweis auf",
1314
- formula: "Formel",
1315
1566
  options: "Optionen",
1316
1567
  addOption: "Option hinzufügen",
1317
- validationRules: "Validierungsregeln",
1318
- addRule: "Regel hinzufügen",
1319
1568
  systemBadge: "System",
1320
1569
  ungrouped: "Allgemein",
1321
1570
  deleteConfirmTitle: "Feld löschen?",
@@ -1334,7 +1583,21 @@ const de = {
1334
1583
  },
1335
1584
  },
1336
1585
  console: {
1586
+ studio: {
1587
+ backToHome: "Zurück zur Startseite",
1588
+ },
1337
1589
  saveAdvisoryTitle: "Gespeichert — die Autorenprüfung ergab {{count}} Hinweis(e)",
1590
+ saveAdvisoryTitle_one: "Gespeichert — die Autorenprüfung ergab {{count}} Hinweis",
1591
+ saveAdvisoryTitle_other: "Gespeichert — die Autorenprüfung ergab {{count}} Hinweise",
1592
+ publishAdvisoryTitle: "Veröffentlicht — die Autorenprüfung ergab {{count}} Hinweis(e)",
1593
+ publishAdvisoryTitle_one: "Veröffentlicht — die Autorenprüfung ergab {{count}} Hinweis",
1594
+ publishAdvisoryTitle_other: "Veröffentlicht — die Autorenprüfung ergab {{count}} Hinweise",
1595
+ importMappingsUnavailable: "Gespeicherte Importzuordnungen für {{object}} konnten nicht geladen werden",
1596
+ importMappingsRefused: "Der Server hat diese Anfrage abgelehnt. Die Liste ist also leer, weil sie nicht gelesen werden konnte — nicht, weil nichts registriert ist. Melden Sie sich erneut an oder bitten Sie eine Administratorin oder einen Administrator um Zugriff.",
1597
+ importMappingsUnreadable: "Diese Liste ist leer, weil sie nicht gelesen werden konnte, nicht weil nichts registriert ist. Versuchen Sie es erneut und melden Sie das Problem, wenn es weiterhin auftritt.",
1598
+ savedViewsUnavailable: "Gespeicherte Ansichten für {{object}} konnten nicht geladen werden",
1599
+ savedViewsRefused: "Der Server hat diese Anfrage abgelehnt. Die Liste ist also leer, weil sie nicht gelesen werden konnte — nicht, weil dieses Objekt keine gespeicherten Ansichten hätte. Melden Sie sich erneut an oder bitten Sie eine Administratorin oder einen Administrator um Zugriff.",
1600
+ savedViewsUnreadable: "Diese Liste ist leer, weil sie nicht gelesen werden konnte, nicht weil dieses Objekt keine gespeicherten Ansichten hätte. Versuchen Sie es erneut und melden Sie das Problem, wenn es weiterhin auftritt.",
1338
1601
  settingsHub: {
1339
1602
  title: "Einstellungen",
1340
1603
  subtitle: "Konfigurieren Sie Ihren Workspace, Integrationen und Feature-Flags.",
@@ -1379,6 +1642,13 @@ const de = {
1379
1642
  passwordsDownload: "CSV herunterladen",
1380
1643
  },
1381
1644
  ai: {
1645
+ pendingDrafts: {
1646
+ count: "{{count}} Änderung(en) sind noch nicht veröffentlicht — Benutzer können sie nicht sehen.",
1647
+ publish: "Veröffentlichen",
1648
+ published: "Alle ausstehenden Änderungen sind live.",
1649
+ failed: "Veröffentlichen fehlgeschlagen.",
1650
+ publishedWithFindings: "Veröffentlicht, aber die Laufzeitprüfungen haben Probleme gemeldet: {{detail}}",
1651
+ },
1382
1652
  usage: {
1383
1653
  title: "KI-Nutzung",
1384
1654
  meterBuild: "Erstellen",
@@ -1388,9 +1658,16 @@ const de = {
1388
1658
  statusFull: "Limit erreicht",
1389
1659
  resetsDaily: "Wird heute Nacht zurückgesetzt",
1390
1660
  resetsMonthly: "Wird im nächsten Zyklus zurückgesetzt",
1661
+ resetsWeeklyDays: "Wird in {{count}} Tagen zurückgesetzt",
1662
+ resetsWeeklyDays_one: "Wird in {{count}} Tag zurückgesetzt",
1663
+ resetsWeeklyDays_other: "Wird in {{count}} Tagen zurückgesetzt",
1664
+ resetsWeeklyHours: "Wird in {{count}} Stunden zurückgesetzt",
1665
+ resetsWeeklyHours_one: "Wird in {{count}} Stunde zurückgesetzt",
1666
+ resetsWeeklyHours_other: "Wird in {{count}} Stunden zurückgesetzt",
1391
1667
  ctaUpgrade: "Upgraden, um weiterzumachen",
1392
1668
  ctaTopUp: "Credits hinzufügen, um fortzufahren",
1393
1669
  ariaLabel: "KI-Nutzung: {{status}}",
1670
+ breakdownTitle: "Bisher verbraucht",
1394
1671
  },
1395
1672
  workspaceTitle: "KI-Workspace",
1396
1673
  workspaceSubtitle: "Fragen stellen, prüfen und Unterhaltungen fortsetzen",
@@ -1400,6 +1677,31 @@ const de = {
1400
1677
  share: "Teilen",
1401
1678
  shareTitle: "Diese Unterhaltung teilen",
1402
1679
  shareDisabledTitle: "Beginnen Sie zu chatten, um das Teilen zu aktivieren",
1680
+ buildDoctor: "Build-Diagnose",
1681
+ buildDoctorTitle: "Build-Diagnose — was ist tatsächlich angekommen?",
1682
+ buildDoctorDisabledTitle: "Senden Sie zuerst eine Nachricht",
1683
+ buildDoctorDrawer: {
1684
+ description: 'Was der Agent behauptet hat und was tatsächlich live ist. Schreibgeschützte Diagnose.',
1685
+ reconciling: 'Wird abgeglichen…',
1686
+ notAvailable: 'Nicht verfügbar — die Unterhaltung wurde nicht gefunden oder Sie sind nicht berechtigt.',
1687
+ untitled: '(ohne Titel)',
1688
+ summary: '{{turns}} Runde(n) · {{messages}} Nachr. · {{tokens}} Tok. · {{seconds}} s LLM',
1689
+ allLive: 'Alle {{count}} versuchten Änderung(en) sind live — nichts ist verloren gegangen.',
1690
+ discrepancies: '{{count}} Abweichung(en) — was der Chat gesagt hat, stimmt nicht mit dem überein, was live ist.',
1691
+ orphanedTitle: 'Vorgeschlagen, aber nie angewendet',
1692
+ orphanedHint: 'Eine Bestätigungskarte, die der Agent vorgeschlagen hat, die aber keine spätere Runde angewendet hat — die Änderung ist stillschweigend verloren gegangen.',
1693
+ missingTitle: 'Behauptet, aber fehlend',
1694
+ missingHint: 'Ein Tool-Ergebnis meldete die Änderung als angewendet, aber das Artefakt ist in sys_metadata nicht live.',
1695
+ toolErrorsTitle: 'Tool-Fehler',
1696
+ toolErrorsHint: 'Tool-Aufrufe, die während des Builds einen Fehler zurückgegeben haben.',
1697
+ verifyTitle: 'Build-Prüfung (verify_build)',
1698
+ yourApp: 'Ihre App:',
1699
+ noIssues: '0 Probleme',
1700
+ issueCount: '{{count}} Problem(e)',
1701
+ platformNoise: '{{count}} Plattform-sys_*-Befund(e) ausgeblendet',
1702
+ pendingActions: 'Ausstehende Aktionen',
1703
+ timeline: 'Zeitleiste ({{count}})',
1704
+ },
1403
1705
  newChat: "Neu",
1404
1706
  searchChats: "Chats durchsuchen…",
1405
1707
  noChatsYet: "Noch keine Chats",
@@ -1429,7 +1731,7 @@ const de = {
1429
1731
  empty: {
1430
1732
  build: {
1431
1733
  title: "Mit KI erstellen",
1432
- description: "Beschreiben Sie eine App oder einen Workflow in einfachen Worten — ich entwerfe die Objekte, Bildschirme und Automatisierungen, dann prüfen und veröffentlichen Sie.",
1734
+ description: "Beschreiben Sie eine App in einfachen Worten — ich entwerfe die Objekte, Bildschirme und Beispieldaten, dann prüfen und veröffentlichen Sie.",
1433
1735
  },
1434
1736
  ask: {
1435
1737
  title: "Ihre Daten fragen",
@@ -1438,7 +1740,7 @@ const de = {
1438
1740
  editApp: {
1439
1741
  title: "„{{app}}“ wird bearbeitet",
1440
1742
  titleGeneric: "Diese App bearbeiten",
1441
- description: "Was möchten Sie ändern? Ich passe diese App direkt an — ein Feld, Objekt, eine Ansicht oder Automatisierung hinzufügen oder Vorhandenes anpassen.",
1743
+ description: "Was möchten Sie ändern? Ich passe diese App direkt an — ein Feld, Objekt, eine Ansicht oder ein Dashboard hinzufügen oder Vorhandenes anpassen.",
1442
1744
  },
1443
1745
  },
1444
1746
  clearConversation: "Leeren",
@@ -1491,29 +1793,52 @@ const de = {
1491
1793
  recentRecords: "Liste die 5 zuletzt erstellten Datensätze auf.",
1492
1794
  recordCounts: "Zähle die Datensätze je Objekt.",
1493
1795
  },
1796
+ // cloud#1984 — these five chips are the maker's own recommendations, so
1797
+ // they may only ask for what ADR-0112 v1 BUILDS: objects, fields, views
1798
+ // (grid/kanban/calendar/gallery), pages, dashboards and sample data. No
1799
+ // wording that promises autonomous behaviour (alert / remind / notify /
1800
+ // automate / status workflow) — v1 has no flows, actions or schedules, and
1801
+ // the model silently degrades such a request into a board or a filtered
1802
+ // view, so the chip would promise an alert and deliver a page. REVERT to
1803
+ // the automation wording when ADR-0112 v2 re-adds flows and actions.
1494
1804
  metadataAssistant: {
1495
- buildCrm: "Erstelle ein Vertriebs-CRM — Kunden, Kontakte und eine Deal-Pipeline, die ich nach Phase summieren kann.",
1496
- buildApp: "Erstelle einen Projekt-Tracker — Projekte, Aufgaben mit Verantwortlichen und Fälligkeitsdaten sowie ein Board nach Status.",
1497
- buildFlow: "Entwirf einen Support-Desk — Tickets mit Priorität, einen Status-Workflow und Kundenverknüpfungen.",
1498
- buildInventory: "Erstelle eine Bestands-App — Produkte, Lagerbestände, Lieferanten und Sichtbarkeit niedriger Bestände.",
1499
- buildRecruiting: "Erstelle einen Bewerber-Tracker — Kandidaten, offene Stellen, Interviewphasen und Notizen.",
1805
+ buildCrm: "Erstelle ein Vertriebs-CRM — Kunden, Kontakte und Deals mit einem Phasenfeld sowie ein Dashboard, das den Deal-Wert je Phase summiert.",
1806
+ buildApp: "Erstelle einen Projekt-Tracker — Projekte, Aufgaben mit Verantwortlichen und Fälligkeitsdaten, ein Board nach Status und einen Kalender der Fälligkeiten.",
1807
+ buildFlow: "Entwirf einen Support-Desk — Tickets mit Prioritäts- und Statusfeld, ein Board nach Status und Verknüpfungen zu Kunden.",
1808
+ buildInventory: "Erstelle eine Bestands-App — Produkte, Lagerbestände, Lieferanten und eine Ansicht, die Artikel unter ihrem Meldebestand filtert.",
1809
+ buildRecruiting: "Erstelle einen Bewerber-Tracker — Kandidaten, offene Stellen, ein Feld für die Interviewphase und ein Board nach Phase.",
1500
1810
  },
1501
1811
  generic: {
1502
1812
  help: "Wobei kannst du mir helfen?",
1503
1813
  availableObjects: "Liste die verfügbaren Datenobjekte auf.",
1504
1814
  recentActivity: "Fasse meine letzten Aktivitäten zusammen.",
1505
1815
  },
1816
+ // objectui#7709 — the edit-mode starters, shown when the maker is bound
1817
+ // to an EXISTING app (`?package=`). Same rule as the five above: they
1818
+ // may only ask for what ADR-0112 v1 BUILDS. The fourth chip used to be
1819
+ // `addAutomation` ("an approval, a status flow, or a notification") and
1820
+ // every capability it named is refused by v1 (cloud#1956 / PR #1970), so
1821
+ // it now asks for sample data — `seed` IS on v1's whitelist, and having
1822
+ // no data is what an existing app most often lacks. REVERT: when
1823
+ // ADR-0112 v2 re-adds flows and actions, THIS chip's automation wording
1824
+ // comes back as `addAutomation`; the retired string is pinned for every
1825
+ // pack in `packages/i18n/src/__tests__/makerEditChips-v1-scope-7709.test.ts`.
1506
1826
  editApp: {
1507
1827
  addField: "Füge einem der Objekte ein Feld hinzu.",
1508
1828
  addObject: "Füge ein neues Objekt hinzu und verknüpfe es mit einem bestehenden.",
1509
1829
  addDashboard: "Füge ein Dashboard für die wichtigsten Kennzahlen hinzu.",
1510
- addAutomation: "Füge eine Automatisierung hinzu — eine Freigabe, einen Statusablauf oder eine Benachrichtigung.",
1830
+ addSampleData: "Fülle die vorhandenen Objekte mit realistischen Beispieldatensätzen, damit ich die App vorführen kann.",
1511
1831
  },
1512
1832
  },
1513
1833
  changesTitle: "Änderungen bestätigen",
1514
1834
  changesConfirmed: "Bestätigt",
1515
1835
  changesConfirm: "Bestätigen",
1516
1836
  changesConfirmHint: "Antworten Sie, um diese Änderung zu bestätigen oder anzupassen.",
1837
+ changesApplying: "Wird angewendet…",
1838
+ changesApplied: "Angewendet",
1839
+ changesDrafted: "Als Entwurf gespeichert",
1840
+ changesFailed: "Nicht angewendet",
1841
+ discussing: "Thema: {{target}}",
1517
1842
  changeVerb: {
1518
1843
  createObject: "Objekt erstellen",
1519
1844
  addField: "Feld hinzufügen",
@@ -1584,6 +1909,13 @@ const de = {
1584
1909
  pages: "Seiten",
1585
1910
  reports: "Berichte",
1586
1911
  system: "System",
1912
+ marketplace: "Marktplatz",
1913
+ settings: 'Einstellungen',
1914
+ apps: 'Apps',
1915
+ profile: 'Profil',
1916
+ approvals: 'Genehmigungen',
1917
+ aiApprovals: 'KI-Genehmigungen',
1918
+ auditLog: 'Audit-Protokoll',
1587
1919
  },
1588
1920
  // objectui#4024 — the single-namespace settings screen. Its sibling
1589
1921
  // `settingsHub` above already resolved through this pack; the view was the
@@ -1675,6 +2007,21 @@ const de = {
1675
2007
  records: "Datensätze",
1676
2008
  recentRecords: "Zuletzt angesehen",
1677
2009
  },
2010
+ // objectui#9954 — see the `en` pack for what raises each case.
2011
+ readRate: {
2012
+ ratioTitle: 'Ungewöhnliches Lesevolumen in dieser Umgebung',
2013
+ ratio: 'Pro geschriebener Zeile werden {{ratio}} Zeilen gelesen. Die Plattform meldet alles über {{threshold}}. Es wird nichts begrenzt oder blockiert; dies ist ein Bericht, damit das Lesemuster geprüft werden kann.',
2014
+ noWritesTitle: 'Lesevorgänge ganz ohne Schreibvorgänge in dieser Umgebung',
2015
+ noWrites: 'Es werden Zeilen gelesen, aber überhaupt keine geschrieben, sodass die Leserate keine Obergrenze hat. Das ist der schwerwiegendste Messwert. Die Plattform meldet alles über {{threshold}}. Es wird nichts begrenzt oder blockiert; dies ist ein Bericht, damit das Lesemuster geprüft werden kann.',
2016
+ },
2017
+ // objectui#10439 — see the `en` pack for what raises each case.
2018
+ storageUsage: {
2019
+ warningTitle: 'Der Speicher ist fast voll',
2020
+ warning: '{{used}} MB von {{limit}} MB belegt. Uploads und Importe werden pausiert, sobald der Speicher voll ist.',
2021
+ blockedTitle: 'Speicher voll: Uploads und Importe sind pausiert',
2022
+ blocked: '{{used}} MB von {{limit}} MB belegt. Vorhandene Daten bleiben unverändert; Lesen, Exportieren und das Bearbeiten einzelner Datensätze funktionieren weiterhin.',
2023
+ upgrade: 'Upgraden, um fortzufahren',
2024
+ },
1678
2025
  errors: {
1679
2026
  somethingWentWrong: "Etwas ist schiefgelaufen",
1680
2027
  unexpectedError: "Beim Rendern dieser Ansicht ist ein unerwarteter Fehler aufgetreten.",
@@ -1705,6 +2052,7 @@ const de = {
1705
2052
  viewNameInvalid: "Verwenden Sie Kleinbuchstaben, Ziffern und Unterstriche; beginnen Sie mit einem Buchstaben oder Unterstrich.",
1706
2053
  systemViewReadonly: "Systemansicht — im Code definiert, schreibgeschützt.",
1707
2054
  cannotEditMetaView: "Diese Ansicht ist integriert und im Code definiert – sie kann nicht geändert werden.",
2055
+ viewConfigPermissionDenied: "Ansichtseinstellungen gelten für alle Benutzer dieser Ansicht. Ihre Änderung erfordert daher die Berechtigung „Metadaten verwalten“. Bitten Sie einen Administrator, diese Änderung vorzunehmen.",
1708
2056
  cannotDeleteMetaView: "Diese Ansicht ist integriert und im Code definiert – sie kann nicht gelöscht werden.",
1709
2057
  expandToPage: "Als ganze Seite öffnen",
1710
2058
  objectNotFound: "Objekt nicht gefunden",
@@ -1713,101 +2061,33 @@ const de = {
1713
2061
  filterOrNotSavable: "Dieser Filter verknüpft Bedingungen mit ODER, was eine gespeicherte Ansicht noch nicht ablegen kann. Er gilt weiterhin für diese Liste – entfernen Sie die ODER-Gruppierung, um ihn in der Ansicht zu speichern.",
1714
2062
  filterNestedNotSavable: "Dieser Filter verwendet verschachtelte Bedingungsgruppen, die eine gespeicherte Ansicht nicht ablegen kann. Reduzieren Sie ihn auf eine einzelne Bedingungsliste, um ihn in der Ansicht zu speichern.",
1715
2063
  allRecords: "Alle Datensätze",
1716
- exitDesignMode: "Designmodus beenden",
1717
- enterDesignMode: "Designmodus starten",
1718
- metadataInspector: "Metadaten-Inspektor",
1719
- editView: "Ansicht bearbeiten",
1720
- addView: "Ansicht hinzufügen",
1721
- designTools: "Design-Werkzeuge",
1722
2064
  new: "Neu",
1723
2065
  configureView: "Ansicht konfigurieren",
1724
- closePanel: "Panel schließen",
1725
- page: "Seite",
1726
- pageConfigHint: "Symbolleiste, Navigation & Ansichts-Shell-Einstellungen",
1727
- listConfigHint: "Daten-Rendering, Spalten & Erscheinungsbild für diesen Listentyp",
1728
- general: "Allgemein",
1729
- generalHint: "Ansichtstitel, Beschreibung und Typ",
1730
- toolbar: "Symbolleiste",
1731
- toolbarHint: "Suche, Filter, Sortierung, Gruppierung und Dichteumschaltung",
1732
2066
  toolbarEnabledCount: "{{count}} von {{total}} aktiviert",
1733
- navigationSection: "Navigation",
1734
- navigationHint: "Zeilenklickverhalten und Detailansichtseinstellungen",
1735
- records: "Datensätze",
1736
- recordsHint: "Auswahlmodus, Datensatz hinzufügen und Inline-Bearbeitung",
1737
- exportPrint: "Export & Drucken",
1738
- exportPrintHint: "Exportformate, Drucken und Anzeige der Datensatzanzahl",
1739
- showAllFields: "Alle anzeigen",
1740
- hideAllFields: "Alle ausblenden",
1741
2067
  searchFields: "Felder suchen…",
1742
2068
  title: "Titel",
1743
- description: "Beschreibung",
1744
- data: "Daten",
1745
- source: "Quelle",
1746
- columns: "Spalten",
1747
- filterBy: "Filtern nach",
1748
- sortBy: "Sortieren nach",
1749
- appearance: "Darstellung",
1750
- showDescription: "Beschreibung anzeigen",
1751
2069
  viewType: "Ansichtstyp",
1752
- userFilters: "Benutzerfilter",
1753
- enableSearch: "Suche aktivieren",
1754
- enableFilter: "Filter aktivieren",
1755
- enableSort: "Sortierung aktivieren",
1756
- enableHideFields: "Felder ausblenden aktivieren",
1757
- enableGroup: "Gruppierung aktivieren",
1758
- enableColor: "Farbe aktivieren",
1759
- enableDensity: "Dichte aktivieren",
1760
- userActions: "Benutzeraktionen",
1761
- addRecordViaForm: "Datensätze über Formular hinzufügen",
1762
- advanced: "Erweitert",
1763
- allowExport: "Export erlauben",
1764
2070
  recordCount: "{{count}} Datensätze",
1765
- noDescription: "Keine Beschreibung",
1766
- none: "Keine",
1767
- columnsConfigured: "{{count}} Spalten",
2071
+ recordCount_one: "{{count}} Datensatz",
2072
+ recordCount_other: "{{count}} Datensätze",
1768
2073
  save: "Speichern",
1769
2074
  discard: "Verwerfen",
1770
2075
  createView: "Ansicht erstellen",
1771
2076
  newView: "Neue Ansicht",
1772
- typeOptions: "Typoptionen",
1773
2077
  groupByField: "Gruppierungsfeld",
1774
2078
  startDateField: "Startdatumsfeld",
1775
2079
  titleField: "Titelfeld",
1776
2080
  latitudeField: "Breitengradfeld",
1777
2081
  longitudeField: "Längengradfeld",
1778
2082
  imageField: "Bildfeld",
1779
- dateField: "Datumsfeld",
1780
2083
  selectField: "Feld auswählen…",
1781
- gridOptionsHint: "Die Tabellenansicht verwendet die oben konfigurierten Spalten.",
1782
- groupBy: "Gruppieren nach",
1783
- prefixField: "Präfixfeld",
1784
- fields: "Felder",
1785
- fieldsVisible: "{{count}} sichtbar",
1786
- sortsCount: "{{count}} Sortierungen",
1787
- filtersCount: "{{count}} Filter",
1788
2084
  endDateField: "Enddatumsfeld",
1789
- color: "Farbe",
1790
- fieldTextColor: "Feldtextfarbe",
1791
- rowHeight: "Zeilenhöhe",
1792
- wrapHeaders: "Kopfzeilen umbrechen",
1793
- showFieldDescriptions: "Feldbeschreibungen anzeigen",
1794
- collapseAllByDefault: "Standardmäßig alle einklappen",
1795
- striped: "Gestreifte Zeilen",
1796
- bordered: "Umrandete Zellen",
1797
- inlineEdit: "Datensätze inline bearbeiten",
1798
- addDeleteRecordsInline: "Datensätze inline hinzufügen/löschen",
1799
- clickIntoRecordDetails: "Klicken für Datensatzdetails",
1800
- navigationMode: "Navigationsmodus",
1801
- navigationWidth: "Navigationsbreite",
1802
- navigationWidthHint: "Verfügbar für Schublade-, Modal- und Split-Navigationsmodi",
1803
- openNewTab: "In neuem Tab öffnen",
1804
- openNewTabHint: "Verfügbar für Seiten- und Neues-Fenster-Navigationsmodi",
1805
2085
  import: "Importieren",
1806
2086
  importTitle: "Aus CSV importieren",
1807
2087
  importedToast: "{{count}} Zeile(n) importiert.",
2088
+ importedToast_one: "{{count}} Zeile importiert.",
2089
+ importedToast_other: "{{count}} Zeilen importiert.",
1808
2090
  importedWithSkipped: "{{ok}} Zeile(n) importiert; {{skipped}} übersprungen.",
1809
- showAdvancedSettings: "Erweiterte Einstellungen anzeigen",
1810
- showFewerSettings: "Weniger Einstellungen anzeigen",
1811
2091
  createViewDesc: "Wählen Sie einen Ansichtstyp und geben Sie ihm einen Namen. Alle Einstellungen können danach geändert werden.",
1812
2092
  cancel: "Abbrechen",
1813
2093
  create: "Erstellen",
@@ -1815,6 +2095,8 @@ const de = {
1815
2095
  deleteViewTitle: "Ansicht löschen",
1816
2096
  deleteViewConfirm: "Möchten Sie die Ansicht „{{name}}“ wirklich löschen? Dies kann nicht rückgängig gemacht werden.",
1817
2097
  bulkDeleteConfirm: "{{count}} ausgewählte Datensätze löschen? Dies kann nicht rückgängig gemacht werden.",
2098
+ bulkDeleteConfirm_one: "{{count}} ausgewählten Datensatz löschen? Dies kann nicht rückgängig gemacht werden.",
2099
+ bulkDeleteConfirm_other: "{{count}} ausgewählte Datensätze löschen? Dies kann nicht rückgängig gemacht werden.",
1818
2100
  duplicateViewName: "Eine Ansicht mit diesem Namen existiert bereits.",
1819
2101
  viewTypeGrid: "Raster",
1820
2102
  viewTypeGridDesc: "Tabellenkalkulationsartige Tabelle von Datensätzen.",
@@ -1851,62 +2133,17 @@ const de = {
1851
2133
  chartTypePie: "Kreisdiagramm",
1852
2134
  chartTypeArea: "Flächendiagramm",
1853
2135
  chartTypeScatter: "Streudiagramm",
1854
- xAxisField: "X-Achse-Feld",
1855
- xAxisFieldHelp: "Die kategoriale oder zeitliche Dimension.",
1856
- yAxisField: "Y-Achse-Feld",
1857
- yAxisFieldHelp: "Das numerische Feld zur Aggregation.",
1858
- selectionMode: "Auswahlmodus",
1859
- selectionNone: "Keine",
1860
- selectionSingle: "Einzeln",
1861
- selectionMultiple: "Mehrfach",
1862
- pageSize: "Seitengröße",
1863
- pageSizeOptions: "Seitengrößenoptionen",
1864
- exportFormats: "Exportformate",
1865
- exportMaxRecords: "Maximale Datensätze",
1866
- exportIncludeHeaders: "Kopfzeilen einschließen",
1867
- exportFileNamePrefix: "Dateinamenpräfix",
1868
- searchableFields: "Durchsuchbare Felder",
1869
- filterableFields: "Filterbare Felder",
1870
- resizableColumns: "Größenveränderbare Spalten",
1871
- densityCompact: "Kompakt",
1872
- densityComfortable: "Normal",
1873
- densitySpacious: "Großzügig",
1874
- densityMode: "Dichtemodus",
1875
- hiddenFields: "Ausgeblendete Felder",
1876
- rowActions: "Zeilenaktionen",
1877
- bulkActions: "Massenaktionen",
1878
- sharing: "Teilen",
1879
- sharingEnabled: "Teilen aktivieren",
1880
- sharingVisibility: "Sichtbarkeit",
1881
- addRecordEnabled: "Datensatz hinzufügen aktivieren",
1882
- addRecordPosition: "Position",
1883
- addRecordMode: "Modus",
1884
- addRecordFormView: "Formularansicht",
1885
- conditionalFormatting: "Bedingte Formatierung",
1886
- addRule: "Regel hinzufügen",
1887
- quickFilters: "Schnellfilter",
1888
- addQuickFilter: "Schnellfilter hinzufügen",
1889
- ufElements: "Elemente",
1890
- ufDropdown: "Dropdown",
2136
+ dataset: "Datensatz",
2137
+ datasetHelp: "Das Diagramm liest seine Werte aus diesem Datensatz des Objekts.",
2138
+ chartMeasure: "Kennzahl",
2139
+ chartMeasureHelp: "Die Kennzahl des Datensatzes auf der Werteachse.",
2140
+ chartDimension: "Dimension",
2141
+ chartDimensionHelp: "Die Dimension des Datensatzes, nach der die Werte gruppiert werden (optional).",
2142
+ viewTypeUnavailableDataset: "Dieses Objekt stellt keinen Datensatz für Diagramme bereit.",
2143
+ noDatasetMeasure: "Dieser Datensatz deklariert keine Kennzahl für ein Diagramm.",
1891
2144
  ufTabs: "Registerkarten",
1892
- ufToggle: "Umschalten",
1893
2145
  ufAddField: "+ Filterfeld hinzufügen…",
1894
- ufNoFields: "Keine Felder verfügbar",
1895
- ufAddTab: "+ Registerkarte hinzufügen",
1896
- ufTabLabel: "Bezeichnung",
1897
2146
  ufShowAllRecords: "Registerkarte „Alle Datensätze“ anzeigen",
1898
- ufAllowAddTab: "Registerkarten hinzufügen erlauben",
1899
- showRecordCount: "Datensatzanzahl anzeigen",
1900
- allowPrinting: "Drucken erlauben",
1901
- virtualScroll: "Virtuelles Scrollen",
1902
- emptyStateTitle: "Leerzustands-Titel",
1903
- emptyStateMessage: "Leerzustands-Nachricht",
1904
- emptyStateIcon: "Leerzustands-Symbol",
1905
- ariaLabel: "ARIA-Bezeichnung",
1906
- ariaDescribedBy: "ARIA-Beschreibung",
1907
- ariaLive: "ARIA-Live",
1908
- accessibility: "Barrierefreiheit",
1909
- viewTabs: "Ansichts-Registerkarten",
1910
2147
  },
1911
2148
  localeSwitcher: {
1912
2149
  label: "Sprache",
@@ -1917,6 +2154,9 @@ const de = {
1917
2154
  unpinItem: "{{name}} loslösen",
1918
2155
  dragToReorder: "Zum Neuanordnen ziehen",
1919
2156
  favorites: "Favoriten",
2157
+ launcherLabel: "App-Launcher",
2158
+ menuLabel: "App-Navigation",
2159
+ menuEmpty: "Diese App hat keine Navigationseinträge, die Sie öffnen können.",
1920
2160
  },
1921
2161
  },
1922
2162
  auth: {
@@ -1970,6 +2210,8 @@ const de = {
1970
2210
  resendOtpCountdownText: "Erneut senden in {seconds} s",
1971
2211
  usePhoneOtpText: "Mit Bestätigungscode anmelden",
1972
2212
  usePasswordSignInText: "Stattdessen mit Passwort anmelden",
2213
+ socialButton: "Weiter mit {provider}",
2214
+ orText: "oder mit E-Mail fortfahren",
1973
2215
  },
1974
2216
  register: {
1975
2217
  title: "Konto erstellen",
@@ -1988,8 +2230,12 @@ const de = {
1988
2230
  submittingButton: "Konto wird erstellt…",
1989
2231
  hasAccountText: "Bereits ein Konto?",
1990
2232
  signInText: "Anmelden",
2233
+ socialButton: "Mit {provider} registrieren",
2234
+ orText: "oder mit E-Mail fortfahren",
1991
2235
  errors: {
1992
2236
  userExists: "Ein Konto mit dieser E-Mail existiert bereits. Versuchen Sie sich anzumelden.",
2237
+ selfRegistrationClosed: "Die Selbstregistrierung ist in dieser Umgebung nicht möglich. Bitten Sie einen Administrator um eine Einladung.",
2238
+ emailDomainNotAllowed: "Die Domain dieser E-Mail-Adresse ist für die Registrierung hier nicht zugelassen. Verwenden Sie die E-Mail-Adresse Ihrer Organisation oder bitten Sie einen Administrator um eine Einladung.",
1993
2239
  },
1994
2240
  verifyInbox: {
1995
2241
  title: "Überprüfen Sie Ihren Posteingang",
@@ -2008,7 +2254,7 @@ const de = {
2008
2254
  submitButton: "Link zum Zurücksetzen senden",
2009
2255
  submittingButton: "Wird gesendet…",
2010
2256
  successTitle: "Überprüfen Sie Ihre E-Mails",
2011
- successDescription: "Wir haben einen Link zum Zurücksetzen des Passworts an {{email}} gesendet. Bitte überprüfen Sie Ihren Posteingang.",
2257
+ successDescription: "Wir haben einen Link zum Zurücksetzen des Passworts an {email} gesendet. Bitte überprüfen Sie Ihren Posteingang.",
2012
2258
  backToSignInText: "Zurück zur Anmeldung",
2013
2259
  rememberPasswordText: "Passwort doch bekannt?",
2014
2260
  signInText: "Anmelden",
@@ -2089,20 +2335,20 @@ const de = {
2089
2335
  approveWarning: "Genehmigen Sie nur, wenn Sie diese Verbindung soeben selbst gestartet haben. Nach der Genehmigung kann diese Laufzeitumgebung auf die privaten Pakete Ihrer Organisation zugreifen.",
2090
2336
  loggedInAs: "Angemeldet als {{email}}",
2091
2337
  approve: "Gerät genehmigen",
2092
- approving: "Genehmige…",
2338
+ approving: "Wird genehmigt…",
2093
2339
  approvedTitle: "Gerät autorisiert",
2094
2340
  approvedDescription: "Sie können zum Gerät zurückkehren — es sollte sich in Kürze anmelden.",
2095
2341
  approveSuccess: "Gerät autorisiert",
2096
2342
  approveSuccessDescription: "Sie können dieses Fenster schließen.",
2097
2343
  approveFailed: "Genehmigung fehlgeschlagen",
2098
2344
  deny: "Anfrage ablehnen",
2099
- denying: "Ablehne…",
2345
+ denying: "Wird abgelehnt…",
2100
2346
  deniedTitle: "Zugriff verweigert",
2101
2347
  deniedDescription: "Dem Gerät wird kein Zugriff gewährt.",
2102
2348
  denyFailed: "Anfrage konnte nicht abgelehnt werden",
2103
2349
  invalidTitle: "Ungültiger Gerätelink",
2104
2350
  invalidDescription: "In der URL wurde kein Gerätecode angegeben.",
2105
- loading: "Lade…",
2351
+ loading: "Wird geladen…",
2106
2352
  cancel: "Abbrechen",
2107
2353
  // objectui#3546 slice three — device-authorization plugin switched off.
2108
2354
  disabledTitle: "Geräteautorisierung nicht aktiviert",
@@ -2188,6 +2434,15 @@ const de = {
2188
2434
  role: "Rolle",
2189
2435
  save: "Änderungen speichern",
2190
2436
  },
2437
+ language: {
2438
+ title: "Sprache",
2439
+ description: "Die Sprache für Benachrichtigungen und Nachrichten, die an Sie gesendet werden. Die Oberflächensprache wird separat über das Globus-Menü gewählt.",
2440
+ label: "Bevorzugte Sprache",
2441
+ systemDefault: "Standard der Bereitstellung verwenden",
2442
+ save: "Speichern",
2443
+ saved: "Spracheinstellung aktualisiert.",
2444
+ readOnly: "Die Sprache Ihres Kontos wird von Ihrer Administration verwaltet.",
2445
+ },
2191
2446
  password: {
2192
2447
  changeTitle: "Passwort ändern",
2193
2448
  setTitle: "Lokales Passwort festlegen",
@@ -2219,7 +2474,6 @@ const de = {
2219
2474
  label: "Arbeitsbereiche",
2220
2475
  default: "Mein Arbeitsbereich",
2221
2476
  switch: "Arbeitsbereich wechseln",
2222
- create: "Arbeitsbereich erstellen",
2223
2477
  createTitle: "Arbeitsbereich erstellen",
2224
2478
  createDescription: "Ein Arbeitsbereich ist ein gemeinsamer Raum für Ihr Team zur Zusammenarbeit.",
2225
2479
  createButton: "Arbeitsbereich erstellen",
@@ -2244,7 +2498,6 @@ const de = {
2244
2498
  packageManagement: "Paketverwaltung",
2245
2499
  searchNavigation: "Navigation durchsuchen…",
2246
2500
  settings: "Einstellungen",
2247
- help: "Hilfe",
2248
2501
  helpTooltip: "Hilfe und Dokumentation",
2249
2502
  activityFeed: "Aktivitätsfeed",
2250
2503
  notifications: "Benachrichtigungen",
@@ -2283,10 +2536,12 @@ const de = {
2283
2536
  build: {
2284
2537
  title: "App erstellen",
2285
2538
  subtitle: "Von Grund auf beginnen — Objekte, Formulare, Automatisierungen und Oberflächen gestalten.",
2539
+ noCapability: "Das Erstellen von Apps ist in diesem Arbeitsbereich nicht verfügbar — es erfordert die Berechtigung „Metadaten verwalten“, die Ihr Konto nicht besitzt.",
2286
2540
  },
2287
2541
  template: {
2288
2542
  title: "Mit einer Vorlage starten",
2289
2543
  subtitle: "Installieren Sie eine Vorlagen-App aus dem Marktplatz und passen Sie sie an.",
2544
+ marketplaceDisabled: "Für diese Laufzeitumgebung ist kein App-Marktplatz konfiguriert, daher gibt es hier keine Vorlagen zum Installieren.",
2290
2545
  },
2291
2546
  welcomeAdminDescription: "Beschreiben Sie Ihr Geschäft in einem Satz — die KI erzeugt die Objekte, Bildschirme, APIs und Agent-Tools. Oder richten Sie alles selbst über das Menü links ein.",
2292
2547
  welcomeAdminDescriptionNoBuild: "Richten Sie Ihre erste Anwendung über das Verwaltungsmenü links ein. Sobald Daten vorhanden sind, kann der KI-Assistent bei der Auswertung helfen.",
@@ -2302,6 +2557,8 @@ const de = {
2302
2557
  },
2303
2558
  pendingDrafts: {
2304
2559
  message: "Sie haben {{count}} unveröffentlichte Änderung(en) — veröffentlichen Sie sie, um sie live zu schalten.",
2560
+ message_one: "Sie haben {{count}} unveröffentlichte Änderung — veröffentlichen Sie sie, um sie live zu schalten.",
2561
+ message_other: "Sie haben {{count}} unveröffentlichte Änderungen — veröffentlichen Sie sie, um sie live zu schalten.",
2305
2562
  cta: "Veröffentlichen",
2306
2563
  publishing: "Wird veröffentlicht…",
2307
2564
  published: "Veröffentlicht! Ihre Änderungen sind live.",
@@ -2316,7 +2573,6 @@ const de = {
2316
2573
  capabilityWarn: "Autorenprüfung: {{count}} Capability-Verweis(e) verweisen ins Leere.",
2317
2574
  },
2318
2575
  title: "Startseite",
2319
- subtitle: "Ihr Arbeitsbereich-Dashboard",
2320
2576
  nav: "Startseite",
2321
2577
  allApps: "Alle Anwendungen",
2322
2578
  yourApps: "Ihre Apps",
@@ -2328,8 +2584,6 @@ const de = {
2328
2584
  empty: "Alles erledigt",
2329
2585
  },
2330
2586
  loading: "Arbeitsbereich wird geladen…",
2331
- recent: "Kürzlich",
2332
- starred: "Mit Stern",
2333
2587
  welcome: "Willkommen bei ObjectUI",
2334
2588
  welcomeDescription: "Erstellen Sie zunächst Ihre erste Anwendung oder konfigurieren Sie Ihre Systemeinstellungen.",
2335
2589
  createFirstApp: "Erstellen Sie Ihre erste App",
@@ -2337,8 +2591,6 @@ const de = {
2337
2591
  browseMarketplace: "App-Marktplatz durchsuchen",
2338
2592
  quickActions: {
2339
2593
  title: "Schnellaktionen",
2340
- createApp: "App erstellen",
2341
- createAppDesc: "Beginnen Sie mit einer neuen Anwendung",
2342
2594
  manageObjects: "Objekte verwalten",
2343
2595
  manageObjectsDesc: "Datenmodelle konfigurieren",
2344
2596
  systemSettings: "Systemeinstellungen",
@@ -2354,18 +2606,15 @@ const de = {
2354
2606
  greetingNight: "Nachtschicht",
2355
2607
  heroTagline: "Machen Sie dort weiter, wo Sie aufgehört haben, oder entdecken Sie etwas Neues.",
2356
2608
  open: "Öffnen",
2357
- stats: {
2358
- apps: "Anwendungen",
2359
- starred: "Markiert",
2360
- recent: "Zuletzt verwendet",
2361
- },
2362
2609
  recentApps: {
2363
2610
  title: "Zuletzt geöffnet",
2364
2611
  itemType: {
2365
2612
  object: "Objekt",
2366
2613
  dashboard: "Dashboard",
2367
2614
  page: "Seite",
2615
+ report: "Bericht",
2368
2616
  record: "Datensatz",
2617
+ metadata: "Metadaten",
2369
2618
  },
2370
2619
  },
2371
2620
  starredApps: {
@@ -2387,7 +2636,6 @@ const de = {
2387
2636
  organizations: "Organisationen",
2388
2637
  roles: "Rollen",
2389
2638
  configuration: "Konfiguration",
2390
- createApp: "App erstellen",
2391
2639
  administration: "Verwaltung",
2392
2640
  datasources: "Datenquellen",
2393
2641
  documentation: "Dokumentation",
@@ -2412,6 +2660,7 @@ const de = {
2412
2660
  typeUpdate: "Aktualisieren",
2413
2661
  typeDelete: "Löschen",
2414
2662
  typeComment: "Kommentar",
2663
+ typeSystem: "System",
2415
2664
  relativeJustNow: "gerade eben",
2416
2665
  relativeSecondsAgo: "vor {{count}}s",
2417
2666
  relativeMinutesAgo: "vor {{count}}m",
@@ -2433,8 +2682,11 @@ const de = {
2433
2682
  placeholder: "Objekte, Dashboards, Seiten, Berichte suchen…",
2434
2683
  inputAriaLabel: "Objekte, Dashboards, Seiten, Berichte suchen",
2435
2684
  resultsCount: "{{count}} Ergebnis für „{{query}}“",
2436
- resultsCountPlural: "{{count}} Ergebnisse für „{{query}}“",
2685
+ resultsCount_one: "{{count}} Ergebnis für „{{query}}“",
2686
+ resultsCount_other: "{{count}} Ergebnisse für „{{query}}“",
2437
2687
  itemsAvailable: "{{count}} Elemente verfügbar",
2688
+ itemsAvailable_one: "{{count}} Element verfügbar",
2689
+ itemsAvailable_other: "{{count}} Elemente verfügbar",
2438
2690
  noResults: "Keine Ergebnisse gefunden",
2439
2691
  noResultsHint: "Versuchen Sie, Ihre Suchbegriffe anzupassen",
2440
2692
  typeObjects: "Objekte",
@@ -2459,7 +2711,11 @@ const de = {
2459
2711
  noAppsConfigured: "Keine Apps konfiguriert",
2460
2712
  noAppsConfiguredDescription: "Es sind keine Anwendungen registriert. Erstellen Sie Ihre erste App oder besuchen Sie die Systemeinstellungen.",
2461
2713
  appNotAvailable: "App nicht verfügbar",
2462
- appNotAvailableDescription: "Diese App ist noch nicht verfügbar — sie wird möglicherweise noch veröffentlicht. Versuchen Sie es in einem Moment erneut.",
2714
+ appNotAvailableDescription: "Diese App ist nicht verfügbar — versuchen Sie es in einem Moment erneut.",
2715
+ appNotFound: "Diese App kann nicht geöffnet werden",
2716
+ appNotFoundDescription: "Der Server hat diese App für Ihr Konto nicht zurückgegeben.",
2717
+ appUnreachable: "Der Server ist nicht erreichbar",
2718
+ appUnreachableDescription: "Diese App konnte nicht geprüft werden. Versuchen Sie es in einem Moment erneut.",
2463
2719
  appAccessDenied: "Sie haben keinen Zugriff auf diese App",
2464
2720
  appAccessDeniedDescription: "Diese App existiert, aber Ihr Konto ist nicht berechtigt, sie zu öffnen. Bitten Sie einen Administrator um Zugriff.",
2465
2721
  appAccessDeniedHome: "Zurück zur Startseite",
@@ -2469,31 +2725,16 @@ const de = {
2469
2725
  recordNotFound: "Datensatz nicht gefunden",
2470
2726
  recordNotFoundDescription: "Der gesuchte Datensatz existiert nicht oder wurde möglicherweise gelöscht.",
2471
2727
  },
2472
- renderer: {
2473
- noPageSchema: "Kein Seitenschema angegeben",
2474
- noFormSchema: "Kein Formularschema angegeben",
2475
- noDashboardSchema: "Kein Dashboard-Schema angegeben",
2476
- pageRendering: "Seite wird gerendert: {{name}}",
2477
- dashboardRendering: "Dashboard wird gerendert: {{name}}",
2478
- formRenderingMode: "Formular wird im {{mode}}-Modus gerendert",
2479
- formRenderingFor: "für Datensatz {{id}}",
2480
- createRecord: "Datensatz erstellen",
2481
- editRecord: "Datensatz bearbeiten",
2482
- page: "Seite",
2483
- dashboard: "Dashboard",
2484
- save: "Speichern",
2485
- cancel: "Abbrechen",
2486
- },
2487
2728
  actionDialog: {
2488
2729
  title: "Aktionsparameter",
2489
2730
  description: "Bitte geben Sie die erforderlichen Informationen ein, um fortzufahren.",
2490
2731
  selectPlaceholder: "{{label}} auswählen",
2491
2732
  requiredError: "{{label}} ist erforderlich",
2733
+ unresolvedParam: 'Dieser Parameter kann nicht angezeigt werden: Das zugrunde liegende Feld fehlt in den Objektmetadaten, daher lässt sich das benötigte Steuerelement nicht erzeugen. Bitten Sie eine Administratorin oder einen Administrator, die Aktionsdefinition zu korrigieren.',
2734
+ carryOverHint: 'Unverändert übernommen (schreibgeschützt)',
2492
2735
  cancel: "Abbrechen",
2493
2736
  confirm: "Bestätigen",
2494
2737
  uploading: "Wird hochgeladen…",
2495
- defaultActionTitle: "Aktion",
2496
- ok: "OK",
2497
2738
  lookupPlaceholder: "Datensatz-ID für {{label}}",
2498
2739
  lookupHelpText: "Für diesen Parameter ist kein Referenzobjekt konfiguriert, daher ist die Datensatzauswahl nicht verfügbar. Geben Sie eine Datensatz-ID ein oder bitten Sie einen Administrator, den Aktionsparameter zu korrigieren.",
2499
2740
  },
@@ -2502,11 +2743,6 @@ const de = {
2502
2743
  confirm: "Weiter",
2503
2744
  cancel: "Abbrechen",
2504
2745
  },
2505
- rowAction: {
2506
- openMenu: "Menü öffnen",
2507
- edit: "Bearbeiten",
2508
- delete: "Löschen",
2509
- },
2510
2746
  navigationSync: {
2511
2747
  addedPage: "Navigation aktualisiert: Seite „{{name}}“ hinzugefügt",
2512
2748
  addedDashboard: "Navigation aktualisiert: Dashboard „{{name}}“ hinzugefügt",
@@ -2527,6 +2763,8 @@ const de = {
2527
2763
  noRecordId: "Keine Datensatz-ID angegeben",
2528
2764
  deleteConfirm: "Möchten Sie diesen Datensatz wirklich löschen?",
2529
2765
  bulkDeleteSuccess: "{{count}} {{label}}-Datensätze gelöscht",
2766
+ bulkDeleteSuccess_one: "{{count}} {{label}}-Datensatz gelöscht",
2767
+ bulkDeleteSuccess_other: "{{count}} {{label}}-Datensätze gelöscht",
2530
2768
  bulkDeletePartial: "{{succeeded}} gelöscht, {{failed}} fehlgeschlagen",
2531
2769
  },
2532
2770
  objectViewActions: {
@@ -2538,15 +2776,6 @@ const de = {
2538
2776
  exportFailed: "Export fehlgeschlagen: {{message}}",
2539
2777
  forecastSoon: "Prognoseansicht kommt bald",
2540
2778
  },
2541
- recordDetail: {
2542
- viewersTooltip: "Benutzer, die diesen Datensatz gerade ansehen",
2543
- },
2544
- cellRender: {
2545
- empty: "Leer",
2546
- yes: "Ja",
2547
- no: "Nein",
2548
- systemFields: "System",
2549
- },
2550
2779
  user: {
2551
2780
  profile: "Profil",
2552
2781
  settings: "Einstellungen",
@@ -2565,7 +2794,7 @@ const de = {
2565
2794
  columnsLabel: "Spalte",
2566
2795
  allLabel: "(Alle)",
2567
2796
  emptyLabel: "(Leer)",
2568
- loading: "Laden…",
2797
+ loading: "Wird geladen…",
2569
2798
  failedToLoad: "Matrix konnte nicht geladen werden: {{message}}",
2570
2799
  needsAcross: "Matrixbericht erfordert mindestens ein `groupingsAcross`-Feld.",
2571
2800
  aggregate: {
@@ -2583,17 +2812,17 @@ const de = {
2583
2812
  },
2584
2813
  organizations: {
2585
2814
  create: "Workspace erstellen",
2586
- mine: "Meine Organisationen",
2587
- title: "Organisationen",
2588
- heading: "Ihre Organisationen",
2589
- subtitle: "Wählen Sie eine Organisation, um fortzufahren, oder erstellen Sie eine neue.",
2590
- searchPlaceholder: "Organisation suchen",
2591
- new: "Neue Organisation",
2592
- current: "Aktuelle Organisation",
2815
+ mine: "Meine Workspaces",
2816
+ title: "Workspaces",
2817
+ heading: "Ihre Workspaces",
2818
+ subtitle: "Wählen Sie einen Workspace, um fortzufahren, oder erstellen Sie einen neuen.",
2819
+ searchPlaceholder: "Workspace suchen",
2820
+ new: "Neuer Workspace",
2821
+ current: "Aktueller Workspace",
2593
2822
  manage: "Verwalten",
2594
- emptyTitle: "Noch keine Organisationen",
2595
- emptyDescription: "Erstellen Sie Ihre erste Organisation, um loszulegen.",
2596
- noMatches: "Keine Organisationen entsprechen Ihrer Suche.",
2823
+ emptyTitle: "Noch keine Workspaces",
2824
+ emptyDescription: "Erstellen Sie Ihren ersten Workspace, um loszulegen.",
2825
+ noMatches: "Keine Workspaces entsprechen Ihrer Suche.",
2597
2826
  },
2598
2827
  organization: {
2599
2828
  roles: {
@@ -2722,6 +2951,9 @@ const de = {
2722
2951
  declined: "Einladung abgelehnt",
2723
2952
  declineFailed: "Einladung konnte nicht abgelehnt werden",
2724
2953
  },
2954
+ current: {
2955
+ label: "Aktuelle Organisation",
2956
+ },
2725
2957
  switcher: {
2726
2958
  label: "Organisation wechseln",
2727
2959
  groupLabel: "Arbeitsorganisation",
@@ -2733,18 +2965,33 @@ const de = {
2733
2965
  regionLabel: "Benachrichtigungen",
2734
2966
  groupCount: "{{count}} Benachrichtigungen",
2735
2967
  groupUnread: "{{count}} ungelesen",
2968
+ groupUnread_one: "{{count}} ungelesen",
2969
+ groupUnread_other: "{{count}} ungelesen",
2736
2970
  groupMarkRead: "Als gelesen markieren",
2737
2971
  groupMarkReadTitle: "Alle dieses Typs als gelesen markieren",
2738
2972
  empty: "Keine Benachrichtigungen",
2739
2973
  markAllRead: "Alle als gelesen markieren",
2740
2974
  viewAll: "Alle Benachrichtigungen anzeigen",
2741
2975
  approvalsPending: "{{count}} ausstehende Genehmigungen",
2976
+ approvalsPending_one: "{{count}} ausstehende Genehmigung",
2977
+ approvalsPending_other: "{{count}} ausstehende Genehmigungen",
2742
2978
  viewApprovals: "Genehmigungen anzeigen",
2743
2979
  noPendingApprovals: "Keine ausstehenden Genehmigungen",
2744
2980
  openApprovalsInbox: "Genehmigungs-Posteingang öffnen",
2745
2981
  badgeTotal: "{{total}} insgesamt",
2746
2982
  badgeNotifications: "{{unread}} Benachrichtigungen",
2747
2983
  badgeApprovals: "{{approvals}} ausstehende Genehmigungen",
2984
+ arrivalMany: "{{count}} neue Nachrichten",
2985
+ arrivalMany_one: "{{count}} neue Nachricht",
2986
+ arrivalMany_other: "{{count}} neue Nachrichten",
2987
+ arrivalRepeats: "{{count}} neue Nachrichten zu diesem Thema",
2988
+ arrivalRepeats_one: "{{count}} neue Nachricht zu diesem Thema",
2989
+ arrivalRepeats_other: "{{count}} neue Nachrichten zu diesem Thema",
2990
+ arrivalOpen: "Ansehen",
2991
+ toastEnabled: "Hinweise in der App",
2992
+ desktopEnabled: "Desktop-Benachrichtigungen",
2993
+ desktopBlocked: "Blockiert. Erlauben Sie Benachrichtigungen für diese Website in den Browsereinstellungen.",
2994
+ desktopUnsupported: "Dieser Browser unterstützt keine Desktop-Benachrichtigungen.",
2748
2995
  emptyUnread: "Alles gelesen",
2749
2996
  filterUnread: "Ungelesen",
2750
2997
  filterAll: "Alle",
@@ -2758,63 +3005,19 @@ const de = {
2758
3005
  thankYouTitle: "Vielen Dank!",
2759
3006
  thankYouMessage: "Ihre Einreichung wurde erfolgreich empfangen.",
2760
3007
  redirecting: "Weiterleitung in {{seconds}} Sekunden…",
3008
+ redirectPending: "Weiterleitung…",
2761
3009
  unavailableTitle: "Formular nicht verfügbar",
2762
3010
  unavailableDescription: "Unter dieser URL ist kein öffentliches Formular verfügbar. Stellen Sie sicher, dass die zugrunde liegende Ansicht die anonyme Freigabe aktiviert hat.",
2763
3011
  tryDemo: "Demo ausprobieren",
2764
3012
  retry: "Erneut versuchen",
2765
3013
  loading: "Formular wird geladen…",
2766
3014
  requiredHint: "* Pflichtfeld",
3015
+ requiredFields: "Pflichtfelder: {{fields}}",
2767
3016
  consentLabelDefault: "Ich stimme der Datenschutzrichtlinie zu und willige in die Verarbeitung meiner Daten für diese Anfrage ein.",
2768
3017
  consentLink: "Datenschutzrichtlinie",
2769
3018
  consentRequired: "Bitte akzeptieren Sie die Datenschutzrichtlinie, um fortzufahren.",
2770
3019
  rateLimited: "Bitte nehmen Sie sich einen Moment, um Ihre Antworten zu überprüfen, bevor Sie absenden.",
2771
3020
  redirectBlocked: "Einreichung akzeptiert, aber die Weiterleitungs-URL wurde aus Sicherheitsgründen blockiert.",
2772
- demo: {
2773
- contactTitle: "Kontakt aufnehmen",
2774
- contactDescription: "Erzählen Sie uns von Ihrem Projekt, und ein Vertriebsmitarbeiter wird sich innerhalb eines Werktages bei Ihnen melden.",
2775
- supportTitle: "Support-Anfrage einreichen",
2776
- supportDescription: "Schildern Sie uns das Problem — unser Team antwortet innerhalb eines Werktages.",
2777
- thankYouSalesTitle: "Danke — wir haben Ihre Nachricht erhalten!",
2778
- thankYouSalesMessage: "Ein Vertriebsmitarbeiter wird sich innerhalb eines Werktages bei Ihnen melden.",
2779
- thankYouSupportTitle: "Alles klar — Ihre Anfrage ist in der Warteschlange.",
2780
- thankYouSupportMessage: "Ein Support-Ingenieur wird sich in Kürze melden. Speichern Sie diese Seite, falls Sie weitere Screenshots hinzufügen möchten.",
2781
- field: {
2782
- firstName: "Vorname",
2783
- lastName: "Nachname",
2784
- email: "Geschäfts-E-Mail",
2785
- phone: "Telefon",
2786
- jobTitle: "Berufsbezeichnung",
2787
- company: "Unternehmen",
2788
- website: "Website",
2789
- industry: "Branche",
2790
- companySize: "Unternehmensgröße",
2791
- howCanWeHelp: "Wie können wir helfen?",
2792
- subject: "Betreff",
2793
- description: "Beschreibung",
2794
- issueType: "Problemart",
2795
- priority: "Priorität",
2796
- },
2797
- industry: {
2798
- technology: "Technologie",
2799
- software: "Software / SaaS",
2800
- finance: "Finanzen",
2801
- healthcare: "Gesundheitswesen",
2802
- retail: "Einzelhandel",
2803
- other: "Sonstiges",
2804
- },
2805
- issueType: {
2806
- question: "Frage",
2807
- problem: "Problem",
2808
- bug: "Fehler",
2809
- feature_request: "Funktionsanfrage",
2810
- },
2811
- priority: {
2812
- low: "Niedrig",
2813
- medium: "Mittel",
2814
- high: "Hoch",
2815
- critical: "Kritisch",
2816
- },
2817
- },
2818
3021
  },
2819
3022
  connectAgent: {
2820
3023
  disabled: {
@@ -2860,6 +3063,8 @@ const de = {
2860
3063
  noImportableFields: "Dieses Objekt hat keine importierbaren Felder.",
2861
3064
  schemaReadFailed: "Das Objektschema konnte nicht gelesen werden.",
2862
3065
  imported: "{{count}} Zeile(n) in {{object}} importiert.",
3066
+ imported_one: "{{count}} Zeile in {{object}} importiert.",
3067
+ imported_other: "{{count}} Zeilen in {{object}} importiert.",
2863
3068
  importFrom: "Echte Zeilen importieren aus",
2864
3069
  into: "nach",
2865
3070
  opening: "Wird geöffnet…",
@@ -2873,6 +3078,76 @@ const de = {
2873
3078
  openProduction: "Produktion öffnen",
2874
3079
  manageEnvironments: "Umgebungen verwalten",
2875
3080
  },
3081
+ cloudPlanStatus: {
3082
+ current: "Aktueller Tarif",
3083
+ },
3084
+ ai: {
3085
+ nlQuery: {
3086
+ placeholder: "Stellen Sie eine Frage zu Ihren Daten…",
3087
+ ask: "Fragen",
3088
+ results: "Ergebnisse",
3089
+ match: "{{percent}} Übereinstimmung",
3090
+ simulatedSummary: "Ergebnisse für: {{query}}",
3091
+ noResults: "Keine passenden Datensätze gefunden",
3092
+ recentQueries: "Letzte Abfragen",
3093
+ },
3094
+ formAssist: {
3095
+ title: "KI-Vorschläge",
3096
+ suggestionCount: "{{count}} Vorschläge",
3097
+ suggestionCount_one: "{{count}} Vorschlag",
3098
+ suggestionCount_other: "{{count}} Vorschläge",
3099
+ applyAll: "Alle übernehmen",
3100
+ confidence: "{{percent}} Konfidenz",
3101
+ appliedCount: "{{count}} Vorschläge übernommen",
3102
+ appliedCount_one: "{{count}} Vorschlag übernommen",
3103
+ appliedCount_other: "{{count}} Vorschläge übernommen",
3104
+ },
3105
+ recommendations: {
3106
+ title: "Empfehlungen",
3107
+ generating: "Empfehlungen werden generiert…",
3108
+ empty: "Keine Empfehlungen verfügbar",
3109
+ },
3110
+ },
3111
+ aiApprovals: {
3112
+ title: "KI-Genehmigungen",
3113
+ description: "Von einem KI-Agenten vorgeschlagene Aktionen, die vor der Ausführung eine menschliche Prüfung benötigen.",
3114
+ tabPending: "Ausstehend",
3115
+ tabDecided: "Entschieden",
3116
+ tabAll: "Alle",
3117
+ statusPending: "Ausstehend",
3118
+ statusApproved: "Genehmigt",
3119
+ statusExecuted: "Ausgeführt",
3120
+ statusFailed: "Fehlgeschlagen",
3121
+ statusRejected: "Abgelehnt",
3122
+ colTool: "Werkzeug",
3123
+ colAction: "Aktion",
3124
+ colObject: "Objekt",
3125
+ colStatus: "Status",
3126
+ colProposed: "Vorgeschlagen",
3127
+ colDecision: "Entscheidung",
3128
+ emptyTitle: "Keine wartenden Aktionen",
3129
+ emptyDescription: "Wenn die KI eine sensible Aktion vorschlägt, erscheint sie hier zur Prüfung.",
3130
+ view: "Ansehen",
3131
+ approve: "Genehmigen",
3132
+ reject: "Ablehnen",
3133
+ working: "Wird bearbeitet…",
3134
+ approveAndExecute: "Genehmigen & ausführen",
3135
+ outcomeApprove: "Genehmigung für {{id}}: {{message}}",
3136
+ outcomeReject: "Ablehnung für {{id}}: {{message}}",
3137
+ outcomeExecuteFailed: "Die Aktion ist bei der Ausführung fehlgeschlagen",
3138
+ drawerFallbackTitle: "Ausstehende Aktion",
3139
+ drawerSubtitle: "Werkzeug {{tool}} auf {{object}}",
3140
+ fieldProposedBy: "Vorgeschlagen von",
3141
+ fieldDecidedBy: "Entschieden von",
3142
+ fieldConversation: "Konversation",
3143
+ fieldToolInput: "Werkzeugeingabe",
3144
+ fieldResult: "Ergebnis",
3145
+ fieldError: "Fehler",
3146
+ fieldRejectionReason: "Ablehnungsgrund",
3147
+ rejectTitle: "Diese Aktion ablehnen?",
3148
+ rejectBody: "Der Grund wird an die KI zurückgemeldet, damit sie ihre nächste Antwort anpassen kann.",
3149
+ rejectPlaceholder: "Optionaler Grund (z. B. „Falsche Datensatz-ID — bitte zuerst mit der Nutzerin oder dem Nutzer klären.“)",
3150
+ },
2876
3151
  aiModelStatus: {
2877
3152
  summary: "Erstellen / Fragen nutzt {{conversational}} ({{conversationalSource}}); strukturiert nutzt {{structured}} ({{structuredSource}}).",
2878
3153
  summaryRouting: "Routing-Richtlinie: kostenlose Tarife → {{free}}, kostenpflichtige Tarife → {{paid}}.",
@@ -2890,6 +3165,111 @@ const de = {
2890
3165
  sourceInherits: "wie build/ask",
2891
3166
  sourcePinned: "festgelegt durch {{source}}",
2892
3167
  },
3168
+ // objectui#7254 — the AI copilot's tool cards. Three families, all of them
3169
+ // English-only until this landed while every other string on the same screen
3170
+ // was translated:
3171
+ //
3172
+ // `tool.*` — one entry per PLATFORM-PROVIDED tool name
3173
+ // (@objectstack/spec `PLATFORM_TOOLS_BY_PACKAGE`, the
3174
+ // closed registry those runtimes are conformance-tested
3175
+ // against). `humanizeToolName` looks each up as
3176
+ // `chatbot.tool.<tool_name>` and falls back to its English
3177
+ // title-caser for a custom / third-party tool, so a name
3178
+ // missing here is degraded, never broken. The `en` values
3179
+ // are deliberately EQUAL to what that title-caser produces:
3180
+ // adding the key must not silently reword the English UI.
3181
+ // `toolState.*` — the card-header badge + activity-chip vocabulary. ONE
3182
+ // set for both surfaces (they used to carry separate
3183
+ // tables and disagreed on casing).
3184
+ // `plan.*` — the "N objects · N views · N dashboards" strip. Plural
3185
+ // FAMILIES: one slot per CLDR category the pack's language
3186
+ // selects (objectui#11432), plus the base key for a call
3187
+ // made without a count. `all-locales-key-parity.test.ts`
3188
+ // derives the required slots from `Intl.PluralRules`.
3189
+ //
3190
+ // objectui#7481 — five `tool.*` entries are NEWER than the registry above:
3191
+ // `get_authoring_rules` (cloud#1837), `load_tools`, `open_record`, `test_flow`
3192
+ // and `toggle_flow` are registered by cloud `service-ai-studio` but the pinned
3193
+ // `@objectstack/spec` snapshot does not list them yet. They are kept here on
3194
+ // purpose: a step label the user reads must not wait on a pin bump. When the
3195
+ // pin advances, `chatbotToolLabels-locale-parity-7481` starts checking them
3196
+ // against the registry instead of against its own hand-held list.
3197
+ chatbot: {
3198
+ tool: {
3199
+ aggregate_data: "Daten aggregieren",
3200
+ get_record: "Datensatz lesen",
3201
+ query_data: "Daten abfragen",
3202
+ query_records: "Datensätze abfragen",
3203
+ search_knowledge: "Wissensdatenbank durchsuchen",
3204
+ visualize_data: "Diagramm erstellen",
3205
+ add_field: "Feld hinzufügen",
3206
+ apply_blueprint: "App erstellen",
3207
+ apply_edit: "Änderungen anwenden",
3208
+ create_metadata: "Metadaten anlegen",
3209
+ create_object: "Objekt anlegen",
3210
+ create_package: "Paket anlegen",
3211
+ create_seed: "Beispieldaten erzeugen",
3212
+ delete_field: "Feld löschen",
3213
+ describe_metadata: "Metadaten ansehen",
3214
+ describe_object: "Objektstruktur ansehen",
3215
+ get_active_package: "Aktives Paket lesen",
3216
+ get_authoring_rules: "Autorenregeln lesen",
3217
+ get_metadata_schema: "Metadatenschema lesen",
3218
+ get_package: "Paket lesen",
3219
+ list_metadata: "Metadaten auflisten",
3220
+ list_objects: "Objekte auflisten",
3221
+ list_packages: "Pakete auflisten",
3222
+ load_tools: "Werkzeuge laden",
3223
+ modify_field: "Feld ändern",
3224
+ open_record: "Datensatz öffnen",
3225
+ propose_blueprint: "App-Entwurf erstellen",
3226
+ set_active_package: "Aktives Paket wechseln",
3227
+ suggest_builder: "Vorgehen vorschlagen",
3228
+ test_flow: "Flow testen",
3229
+ todo_write: "Aufgaben notieren",
3230
+ toggle_flow: "Flow ein- oder ausschalten",
3231
+ update_metadata: "Metadaten aktualisieren",
3232
+ validate_expression: "Ausdruck prüfen",
3233
+ verify_build: "Aufbau prüfen",
3234
+ },
3235
+ toolState: {
3236
+ agentActivity: "Agentenaktivität",
3237
+ pending: "Ausstehend",
3238
+ running: "Läuft",
3239
+ awaitingApproval: "Wartet auf Freigabe",
3240
+ responded: "Beantwortet",
3241
+ completed: "Abgeschlossen",
3242
+ error: "Fehler",
3243
+ denied: "Abgelehnt",
3244
+ failed: "Fehlgeschlagen",
3245
+ },
3246
+ plan: {
3247
+ countObjects: "{{count}} Objekte",
3248
+ countObjects_one: "{{count}} Objekt",
3249
+ countObjects_other: "{{count}} Objekte",
3250
+ countViews: "{{count}} Ansichten",
3251
+ countViews_one: "{{count}} Ansicht",
3252
+ countViews_other: "{{count}} Ansichten",
3253
+ countDashboards: "{{count}} Dashboards",
3254
+ countDashboards_one: "{{count}} Dashboard",
3255
+ countDashboards_other: "{{count}} Dashboards",
3256
+ countSeedData: "Beispieldaten",
3257
+ },
3258
+ build: {
3259
+ building: "{{app}} wird erstellt…",
3260
+ built: "{{app}} wurde erstellt",
3261
+ appFallback: "Ihre App",
3262
+ addingSampleData: "Beispieldaten werden hinzugefügt",
3263
+ group: {
3264
+ object: "Objekte",
3265
+ view: "Ansichten",
3266
+ dashboard: "Dashboards",
3267
+ app: "App",
3268
+ seed: "Beispieldaten",
3269
+ },
3270
+ moreArtifacts: "+{{n}} weitere",
3271
+ },
3272
+ },
2893
3273
  chatbotError: {
2894
3274
  title: "Antwort fehlgeschlagen",
2895
3275
  fallbackDetail: "Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut.",
@@ -2927,6 +3307,7 @@ const de = {
2927
3307
  retry: "Erneut versuchen",
2928
3308
  errors: {
2929
3309
  expired: "Die Anfrage ist abgelaufen, bevor sie genehmigt wurde. Starten Sie erneut.",
3310
+ accessDenied: "Die Verbindungsanfrage wurde abgelehnt. Starten Sie erneut.",
2930
3311
  bindFailed: "Verbindung fehlgeschlagen.",
2931
3312
  deviceCodeFailed: "Anforderung des Gerätecodes fehlgeschlagen.",
2932
3313
  },
@@ -2969,7 +3350,7 @@ const de = {
2969
3350
  },
2970
3351
  title: "App-Marktplatz",
2971
3352
  subtitle: "Durchsuchen Sie genehmigte Apps, die im ObjectStack-Katalog veröffentlicht wurden. Klicken Sie auf eine App, um Details zu sehen und sie in eine Ihrer Umgebungen zu installieren.",
2972
- searchPlaceholder: "Apps nach Name oder Manifest-ID suchen…",
3353
+ searchPlaceholder: 'Apps nach Name oder App-ID suchen…',
2973
3354
  searchAria: "Marktplatz-Apps suchen",
2974
3355
  installed: "Installiert",
2975
3356
  installedCount: "Installiert ({{count}})",
@@ -2992,10 +3373,16 @@ const de = {
2992
3373
  installedBadge: "Installiert v{{version}}",
2993
3374
  load: {
2994
3375
  failed: "Marktplatz konnte nicht geladen werden",
2995
- failedHint: "Standardmäßig zeigt dieses Laufzeitsystem auf die öffentliche ObjectStack-Cloud. Stellen Sie sicher, dass das Laufzeitsystem online ist.",
3376
+ failedHintConfigured: "Diese Laufzeitumgebung erreicht den Marktplatz über die Control Plane unter {{url}}. Prüfen Sie, ob diese online und von hier aus erreichbar ist.",
3377
+ failedHintSameOrigin: "Diese Laufzeitumgebung stellt den Marktplatz-Katalog selbst bereit. Prüfen Sie, ob die Laufzeitumgebung online ist.",
2996
3378
  packageFailed: "Paket konnte nicht geladen werden",
2997
3379
  notFound: "Nicht gefunden.",
2998
3380
  },
3381
+ disabled: {
3382
+ title: "App-Marktplatz ist deaktiviert",
3383
+ description: "Für diese Laufzeitumgebung ist kein Marktplatz konfiguriert; es gibt hier nichts zu durchsuchen oder zu installieren.",
3384
+ hint: "Das ist der erwartete Zustand, wenn die Laufzeitumgebung mit <code>OS_CLOUD_URL=off</code> (oder <code>none</code>, <code>local</code>, <code>disabled</code>) gestartet wird. Um den Marktplatz zu aktivieren, richten Sie <code>OS_CLOUD_URL</code> auf eine Control Plane und starten Sie die Laufzeitumgebung neu.",
3385
+ },
2999
3386
  detail: {
3000
3387
  homepage: "Startseite",
3001
3388
  installedV: "Installiert · v{{version}}",
@@ -3011,10 +3398,15 @@ const de = {
3011
3398
  purgeSampleData: 'Beispieldaten löschen',
3012
3399
  purgeConfirm: 'Alle von diesem Paket erzeugten Beispieldatensätze löschen? Vom Benutzer hinzugefügte Datensätze bleiben unberührt.',
3013
3400
  purgeSuccess: '{{count}} Beispieldatensatz/-sätze entfernt.',
3401
+ purgeSuccess_one: '{{count}} Beispieldatensatz entfernt.',
3402
+ purgeSuccess_other: '{{count}} Beispieldatensätze entfernt.',
3014
3403
  purgeNoData: 'Keine Beispieldatensätze zum Löschen gefunden.',
3015
3404
  reseedQueued: 'Beispieldaten werden beim nächsten Zugriff auf die Umgebung neu geladen.',
3016
3405
  reseedLocalSuccess: 'Beispieldaten neu geladen: {{inserted}} hinzugefügt, {{updated}} aktualisiert.',
3017
3406
  reseedPartialErrors: '({{count}} Datensatz/-sätze konnten nicht geschrieben werden)',
3407
+ reseedPartialErrors_one: '({{count}} Datensatz konnte nicht geschrieben werden)',
3408
+ reseedPartialErrors_other: '({{count}} Datensätze konnten nicht geschrieben werden)',
3409
+ sampleDataKernelUnavailable: 'Diese Control Plane hat keinen Umgebungs-Kernel, daher können Beispieldaten hier weder neu geladen noch gelöscht werden. Führen Sie dies im eigenen Laufzeitsystem der Umgebung aus.',
3018
3410
  updateAvailable: 'Update verfügbar',
3019
3411
  },
3020
3412
  action: {
@@ -3067,7 +3459,8 @@ const de = {
3067
3459
  reviewed: "Geprüft und genehmigt",
3068
3460
  unreviewed: "Noch nicht geprüft",
3069
3461
  signed: "Signiert",
3070
- grantsIntro: "Bei der Installation erhält dieses Paket:",
3462
+ grantsIntro: "Dieses Paket fordert an:",
3463
+ notEnforced: "Diese Liste wird bei der Installation erfasst und erneut bestätigt, wenn eine spätere Version mehr anfordert – die Laufzeit beschränkt das Paket jedoch noch nicht darauf.",
3071
3464
  services: "Plattformdienste",
3072
3465
  hooks: "Lifecycle-Hooks",
3073
3466
  network: "Netzwerkzugriff",
@@ -3106,32 +3499,21 @@ const de = {
3106
3499
  storage: "Speicher",
3107
3500
  other: "Sonstiges",
3108
3501
  },
3109
- pricing: {
3110
- free: "Kostenlos",
3111
- freemium: "Freemium",
3112
- paid: "Kostenpflichtig",
3113
- subscription: "Abonnement",
3114
- "usage-based": "Nutzungsbasiert",
3115
- "contact-sales": "Vertrieb kontaktieren",
3116
- },
3117
3502
  relativeTime: {
3118
3503
  today: "heute",
3119
3504
  daysAgo: "vor {{count}}d",
3120
3505
  monthsAgo: "vor {{count}} Monaten",
3506
+ monthsAgo_one: "vor {{count}} Monat",
3507
+ monthsAgo_other: "vor {{count}} Monaten",
3121
3508
  yearsAgo: "vor {{count}} Jahren",
3509
+ yearsAgo_one: "vor {{count}} Jahr",
3510
+ yearsAgo_other: "vor {{count}} Jahren",
3122
3511
  },
3123
3512
  },
3124
- approvals: {
3125
- approve: 'Genehmigen',
3126
- reject: 'Ablehnen',
3127
- comment: 'Kommentar (optional)',
3128
- approveSuccess: 'Genehmigt',
3129
- rejectSuccess: 'Abgelehnt',
3130
- rejectConfirm: 'Diese Genehmigungsanfrage ablehnen?',
3131
- },
3132
3513
  approvalsInbox: {
3514
+ recordUnresolvable: 'Dieser Datensatz kann nicht geöffnet werden',
3133
3515
  loadMore: 'Mehr laden',
3134
- loadingMore: 'Lädt…',
3516
+ loadingMore: 'Wird geladen…',
3135
3517
  loadedOf: '{{loaded}} von {{total}} geladen',
3136
3518
  actEscalate: 'SLA eskaliert',
3137
3519
  systemSlaActor: 'System (SLA)',
@@ -3148,6 +3530,8 @@ const de = {
3148
3530
  requestInfoSent: 'Zur Ergänzung an den Antragsteller zurückgegeben',
3149
3531
  remindBtn: 'Erinnern',
3150
3532
  remindSuccess: 'Erinnerung an {{count}} Genehmiger gesendet',
3533
+ remindSuccess_one: 'Erinnerung an {{count}} Genehmiger gesendet',
3534
+ remindSuccess_other: 'Erinnerung an {{count}} Genehmiger gesendet',
3151
3535
  remindThrottled: 'Kürzlich wurde bereits erinnert — bitte später erneut.',
3152
3536
  replyPlaceholder: 'Auf diese Anfrage antworten…',
3153
3537
  slaRemaining: 'SLA noch {{dur}}',
@@ -3164,6 +3548,8 @@ const de = {
3164
3548
  progressApprovals: 'Genehmigungen — {{got}} von {{need}}',
3165
3549
  progressGroups: 'Freigabefortschritt — {{got}} von {{need}} Gruppen',
3166
3550
  progressEligible: '{{count}} berechtigte Genehmiger',
3551
+ progressEligible_one: '{{count}} berechtigter Genehmiger',
3552
+ progressEligible_other: '{{count}} berechtigte Genehmiger',
3167
3553
  progressBar: 'Entscheidungsfortschritt',
3168
3554
  declaredActions: 'Aktionen',
3169
3555
  attachmentChip: 'Anhang',
@@ -3195,6 +3581,8 @@ const de = {
3195
3581
  filterCount: '{{shown}} von {{total}}',
3196
3582
  selected: 'ausgewählt',
3197
3583
  actionableCount: '({{count}} bearbeitbar)',
3584
+ actionableCount_one: '({{count}} bearbeitbar)',
3585
+ actionableCount_other: '({{count}} bearbeitbar)',
3198
3586
  selectAll: 'Alle auswählen',
3199
3587
  selectRow: 'Anfrage auswählen',
3200
3588
  colRequest: 'Anfrage',
@@ -3235,12 +3623,19 @@ const de = {
3235
3623
  submittedAgo: 'Eingereicht {{when}}',
3236
3624
  completedAt: 'Abgeschlossen {{when}}',
3237
3625
  waitingOn: 'Wartet auf',
3626
+ approverNameSeparator: ', ',
3627
+ approverUnstaffed: '{{seat}} (derzeit unbesetzt)',
3238
3628
  history: 'Aktivität',
3239
3629
  noActions: 'Noch keine Aktionen.',
3240
3630
  actSubmit: 'Eingereicht',
3241
3631
  actApprove: 'Genehmigt',
3242
3632
  actReject: 'Abgelehnt',
3243
3633
  actRecall: 'Zurückgezogen',
3634
+ overrideActionLabel: '{{action}} (Übersteuerung)',
3635
+ overrideNotice: 'Sie haben in diesem Schritt keine Genehmigerrolle. Beim Fortfahren wird Ihre Administrator-Übersteuerung verwendet: Der Schritt wird sofort abgeschlossen und alle noch nicht entschiedenen Genehmiger werden übergangen. Die Entscheidung wird als Administrator-Übersteuerung protokolliert.',
3636
+ overrideNoticeWho: 'Sie haben in diesem Schritt keine Genehmigerrolle. Beim Fortfahren wird Ihre Administrator-Übersteuerung verwendet: Der Schritt wird sofort abgeschlossen und die noch nicht entschiedenen Genehmiger werden übergangen — {{who}}. Die Entscheidung wird als Administrator-Übersteuerung protokolliert.',
3637
+ viaOverrideChip: 'Administrator-Übersteuerung',
3638
+ viaOverrideHint: 'Die handelnde Person hatte in diesem Schritt keine Genehmigerrolle — zugelassen über die Administrator-Übersteuerung.',
3244
3639
  rawData: 'Rohdaten (JSON)',
3245
3640
  copy: 'Kopieren',
3246
3641
  copied: 'Kopiert',
@@ -3261,11 +3656,19 @@ const de = {
3261
3656
  approveN: '{{count}} genehmigen',
3262
3657
  rejectN: '{{count}} ablehnen',
3263
3658
  bulkApproveTitle: '{{count}} Anfragen genehmigen?',
3659
+ bulkApproveTitle_one: '{{count}} Anfrage genehmigen?',
3660
+ bulkApproveTitle_other: '{{count}} Anfragen genehmigen?',
3264
3661
  bulkApproveBody: 'Jede Anfrage wird mit Ihrer Identität genehmigt; der Flow folgt dem Genehmigen-Zweig.',
3265
3662
  bulkRejectTitle: '{{count}} Anfragen ablehnen?',
3663
+ bulkRejectTitle_one: '{{count}} Anfrage ablehnen?',
3664
+ bulkRejectTitle_other: '{{count}} Anfragen ablehnen?',
3266
3665
  bulkRejectBody: 'Die ausgewählten Anfragen werden abgelehnt und die Antragsteller benachrichtigt.',
3267
3666
  bulkApproved: '{{count}} Anfragen genehmigt',
3667
+ bulkApproved_one: '{{count}} Anfrage genehmigt',
3668
+ bulkApproved_other: '{{count}} Anfragen genehmigt',
3268
3669
  bulkRejected: '{{count}} Anfragen abgelehnt',
3670
+ bulkRejected_one: '{{count}} Anfrage abgelehnt',
3671
+ bulkRejected_other: '{{count}} Anfragen abgelehnt',
3269
3672
  bulkPartial: '{{ok}} erfolgreich, {{fail}} fehlgeschlagen: {{which}}',
3270
3673
  rejectOneTitle: '„{{title}}“ ablehnen?',
3271
3674
  rejectOneBody: 'Die Anfrage wird abgelehnt und der Antragsteller benachrichtigt.',
@@ -3290,8 +3693,14 @@ const de = {
3290
3693
  alreadyDecided: 'Diese Anfrage wurde bereits entschieden. Liste aktualisieren.',
3291
3694
  justNow: 'gerade eben',
3292
3695
  minutesAgo: 'vor {{count}} Min.',
3696
+ minutesAgo_one: 'vor {{count}} Min.',
3697
+ minutesAgo_other: 'vor {{count}} Min.',
3293
3698
  hoursAgo: 'vor {{count}} Std.',
3699
+ hoursAgo_one: 'vor {{count}} Std.',
3700
+ hoursAgo_other: 'vor {{count}} Std.',
3294
3701
  daysAgo: 'vor {{count}} Tagen',
3702
+ daysAgo_one: 'vor {{count}} Tag',
3703
+ daysAgo_other: 'vor {{count}} Tagen',
3295
3704
  },
3296
3705
  preview: {
3297
3706
  empty: {
@@ -3326,7 +3735,16 @@ const de = {
3326
3735
  detailNone: 'Keine Unterschiede erkannt — der Entwurf entspricht der veröffentlichten Version.',
3327
3736
  detailChangedKeys: 'Ebenfalls geändert:',
3328
3737
  confirmNote: 'Beim Veröffentlichen werden alle {{count}} ausstehenden Entwürfe dieses Pakets atomar freigegeben.',
3738
+ confirmNote_one: 'Beim Veröffentlichen wird der {{count}} ausstehende Entwurf dieses Pakets atomar freigegeben.',
3739
+ confirmNote_other: 'Beim Veröffentlichen werden alle {{count}} ausstehenden Entwürfe dieses Pakets atomar freigegeben.',
3329
3740
  publishConfirm: 'Alle veröffentlichen',
3741
+ // [`7a90afdf9`] Pre-publish security-posture findings, shown next to
3742
+ // the confirm button so a refusal the door would issue is read BEFORE
3743
+ // the click rather than as a toast after the batch rolled back.
3744
+ securityBlockTitle: 'Veröffentlichen wird abgelehnt — {{count}} Element(e) benötigen zuerst eine Entscheidung',
3745
+ securityBlockTitle_one: 'Veröffentlichen wird abgelehnt — {{count}} Element benötigt zuerst eine Entscheidung',
3746
+ securityBlockTitle_other: 'Veröffentlichen wird abgelehnt — {{count}} Elemente benötigen zuerst eine Entscheidung',
3747
+ securityBlockWhere: 'Korrigieren Sie es am Objekt unter Einstellungen → Datensatzfreigabe und veröffentlichen Sie erneut.',
3330
3748
  },
3331
3749
  // ADR-0045 — the materialized-but-unlisted app banner
3332
3750
  // (UnpublishedAppBar.tsx), sibling of draftBar above.
@@ -3350,7 +3768,7 @@ const de = {
3350
3768
  revertLabel: 'Eine Änderung rückgängig gemacht',
3351
3769
  applyLabel: 'Build-Änderung',
3352
3770
  revert: 'rückgängig',
3353
- items: 'Elemente',
3771
+ items: 'Elemente: {{count}}',
3354
3772
  revertAction: 'Rückgängig',
3355
3773
  reverted: 'Rückgängig gemacht — die Änderung wurde zurückgenommen.',
3356
3774
  revertFailed: 'Rückgängig machen fehlgeschlagen',
@@ -3373,22 +3791,33 @@ const de = {
3373
3791
  noResults: "Keine Ergebnisse",
3374
3792
  searchField: "{{label}} suchen…",
3375
3793
  enterId: "{{label}}-ID eingeben",
3794
+ addValue: "Wert eingeben, Enter drücken",
3795
+ removeValue: "{{value}} entfernen",
3796
+ rangeStart: "Von",
3797
+ rangeEnd: "Bis",
3376
3798
  operators: {
3377
3799
  equals: "Gleich",
3378
- notEquals: "Ungleich",
3800
+ not_equals: "Ungleich",
3379
3801
  contains: "Enthält",
3380
- notContains: "Enthält nicht",
3381
- isEmpty: "Ist leer",
3382
- isNotEmpty: "Ist nicht leer",
3383
- greaterThan: "Größer als",
3384
- lessThan: "Kleiner als",
3385
- greaterOrEqual: "Größer oder gleich",
3386
- lessOrEqual: "Kleiner oder gleich",
3802
+ icontains: "Enthält (Groß-/Kleinschreibung ignorieren)",
3803
+ not_contains: "Enthält nicht",
3804
+ is_empty: "Ist leer",
3805
+ is_not_empty: "Ist nicht leer",
3806
+ greater_than: "Größer als",
3807
+ less_than: "Kleiner als",
3808
+ greater_than_or_equal: "Größer oder gleich",
3809
+ less_than_or_equal: "Kleiner oder gleich",
3387
3810
  before: "Vor",
3388
3811
  after: "Nach",
3389
3812
  between: "Zwischen",
3390
3813
  in: "In",
3391
- notIn: "Nicht in",
3814
+ not_in: "Nicht in",
3815
+ starts_with: "Beginnt mit",
3816
+ ends_with: "Endet mit",
3817
+ is_null: "Ist null",
3818
+ is_not_null: "Ist nicht null",
3819
+ exists: "Ist gesetzt",
3820
+ notExists: "Ist nicht gesetzt",
3392
3821
  },
3393
3822
  },
3394
3823
  sortBuilder: {
@@ -3402,7 +3831,8 @@ const de = {
3402
3831
  },
3403
3832
  collaboration: {
3404
3833
  commentCount: "{{count}} Kommentare",
3405
- commentCountOne: "{{count}} Kommentar",
3834
+ commentCount_one: "{{count}} Kommentar",
3835
+ commentCount_other: "{{count}} Kommentare",
3406
3836
  resolvedSuffix: " · Gelöst",
3407
3837
  sortComments: "Kommentare sortieren",
3408
3838
  sortOldest: "Älteste zuerst",
@@ -3411,11 +3841,18 @@ const de = {
3411
3841
  reopen: "Erneut öffnen",
3412
3842
  justNow: "gerade eben",
3413
3843
  minutesAgo: "vor {{count}} Min.",
3844
+ minutesAgo_one: "vor {{count}} Min.",
3845
+ minutesAgo_other: "vor {{count}} Min.",
3414
3846
  hoursAgo: "vor {{count}} Std.",
3847
+ hoursAgo_one: "vor {{count}} Std.",
3848
+ hoursAgo_other: "vor {{count}} Std.",
3415
3849
  daysAgo: "vor {{count}} T.",
3850
+ daysAgo_one: "vor {{count}} T.",
3851
+ daysAgo_other: "vor {{count}} T.",
3416
3852
  edited: "(bearbeitet)",
3417
3853
  reactionCount: "{{count}} Reaktionen",
3418
- reactionCountOne: "{{count}} Reaktion",
3854
+ reactionCount_one: "{{count}} Reaktion",
3855
+ reactionCount_other: "{{count}} Reaktionen",
3419
3856
  addThumbsUp: "Daumen hoch hinzufügen",
3420
3857
  reply: "Antworten",
3421
3858
  reactThumbsUp: "Mit Daumen hoch reagieren",
@@ -3426,9 +3863,11 @@ const de = {
3426
3863
  commentPlaceholder: "Kommentar hinzufügen … (@ für Erwähnungen)",
3427
3864
  send: "Senden",
3428
3865
  presentUserCount: "{{count}} anwesende Benutzer",
3429
- presentUserCountOne: "{{count}} anwesender Benutzer",
3866
+ presentUserCount_one: "{{count}} anwesender Benutzer",
3867
+ presentUserCount_other: "{{count}} anwesende Benutzer",
3430
3868
  moreUserCount: "{{count}} weitere Benutzer",
3431
- moreUserCountOne: "{{count}} weiterer Benutzer",
3869
+ moreUserCount_one: "{{count}} weiterer Benutzer",
3870
+ moreUserCount_other: "{{count}} weitere Benutzer",
3432
3871
  userStatusTitle: "{{name}} ({{status}})",
3433
3872
  statusActive: "aktiv",
3434
3873
  statusIdle: "inaktiv",
@@ -3436,6 +3875,18 @@ const de = {
3436
3875
  },
3437
3876
  wizard: {
3438
3877
  missingRequired: "Bitte füllen Sie die Pflichtfelder aus: {{fields}}",
3878
+ back: "Zurück",
3879
+ submitting: "Wird gesendet…",
3880
+ stepFallback: "Schritt {{n}}",
3881
+ progressLabel: "Fortschritt",
3882
+ emptyStep: "Für diesen Schritt sind keine Felder konfiguriert",
3883
+ },
3884
+ flowRunner: {
3885
+ title: 'Eingabe',
3886
+ submitting: 'Wird gesendet…',
3887
+ saveAndContinue: 'Speichern und fortfahren',
3888
+ nextStep: 'Gespeichert — nächster Schritt',
3889
+ completed: 'Flow „{{flow}}“ abgeschlossen',
3439
3890
  },
3440
3891
  appManagement: {
3441
3892
  title: "Anwendungen",
@@ -3486,5 +3937,49 @@ const de = {
3486
3937
  bulkOperationFailed: "Massenvorgang fehlgeschlagen: {{reason}}",
3487
3938
  },
3488
3939
  },
3940
+ // objectui#6301 — Setup › Paketautomatisierung (ADR-0126 §7.4). Terminologie
3941
+ // wie im übrigen Pack: `common.package` = Paket, `flowRunner.completed` =
3942
+ // Flow, Anführungszeichen „…“. ⛔ Keine Herkunfts- oder Drift-Formulierungen
3943
+ // in dieser Gruppe (§9).
3944
+ packagedAutomation: {
3945
+ title: "Paketautomatisierung",
3946
+ subtitle: "Flows und Aktionen aus installierten Paketen. Schalten Sie eines für diese Installation ab oder klonen Sie einen Flow unter einem neuen Namen, um ihn anzupassen. Bearbeitet wird im Studio.",
3947
+ refresh: "Aktualisieren",
3948
+ flowsHeading: "Paket-Flows",
3949
+ actionsHeading: "Paket-Aktionen",
3950
+ colFlow: "Flow",
3951
+ colActivation: "Aktivierung",
3952
+ colActions: "Aktionen",
3953
+ toggleLabel: "Aktivierung für {{label}}",
3954
+ on: "An",
3955
+ off: "Aus",
3956
+ clone: "Klonen",
3957
+ cloneTitle: "Paket-Flow klonen",
3958
+ cloneBody: "Die Kopie übernimmt die gesamte Definition und benötigt einen neuen Maschinennamen und ein neues Label. Bearbeiten Sie die Kopie im Studio.",
3959
+ cloneName: "Neuer Maschinenname",
3960
+ cloneLabel: "Neues Label",
3961
+ cancel: "Abbrechen",
3962
+ cloneConfirm: "Klon erstellen",
3963
+ cloneCreated: "Flow „{{name}}“ erstellt.",
3964
+ emptyTitle: "Keine Paket-Flows",
3965
+ emptyBody: "In dieser Installation liefert kein installiertes Paket einen Automatisierungs-Flow. Selbst erstellte Flows finden Sie im Studio.",
3966
+ loadFailed: "Paketautomatisierung konnte nicht geladen werden.",
3967
+ toggleFailedHttp: "Aktivierung konnte nicht geändert werden (HTTP {{status}}).",
3968
+ toggleFailed: "Aktivierung konnte nicht geändert werden.",
3969
+ cloneFailedHttp: "Dieser Flow konnte nicht geklont werden (HTTP {{status}}).",
3970
+ cloneFailed: "Dieser Flow konnte nicht geklont werden.",
3971
+ actionsSubtitle: "Aktionen aus installierten Paketen. Schalten Sie eine für diese Installation ab, und sie läuft überall dort nicht mehr, wo sie angeboten wird. Eine eigene Aktion daneben zu erstellen, bleibt Ihnen im Studio offen.",
3972
+ colAction: "Aktion",
3973
+ colObject: "Objekt",
3974
+ actionToggleLabel: "Aktivierung für {{label}} auf {{object}}",
3975
+ actionsEmptyTitle: "Keine Paket-Aktionen",
3976
+ actionsEmptyBody: "In dieser Installation deklariert kein installiertes Paket eine Aktion. Selbst erstellte Aktionen finden Sie im Studio.",
3977
+ actionsLoadFailed: "Paket-Aktionen konnten nicht geladen werden.",
3978
+ },
3979
+ element: {
3980
+ number: {
3981
+ noObject: "Kein Objekt angegeben: Legen Sie object oder dataSource.object fest.",
3982
+ },
3983
+ },
3489
3984
  };
3490
3985
  export default de;