@object-ui/i18n 17.6.0 → 18.0.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 (62) hide show
  1. package/CHANGELOG.md +5408 -0
  2. package/README.md +255 -13
  3. package/dist/LocalizationContext.d.ts +32 -9
  4. package/dist/LocalizationContext.js +32 -10
  5. package/dist/builtinAggregateLabels.d.ts +40 -0
  6. package/dist/builtinAggregateLabels.js +23 -0
  7. package/dist/currency.d.ts +27 -3
  8. package/dist/currency.js +28 -4
  9. package/dist/fallbackInterpolation.d.ts +79 -0
  10. package/dist/fallbackInterpolation.js +124 -0
  11. package/dist/i18n.d.ts +27 -1
  12. package/dist/i18n.js +99 -16
  13. package/dist/index.d.ts +8 -13
  14. package/dist/index.js +45 -17
  15. package/dist/locales/ar.d.ts +1504 -188
  16. package/dist/locales/ar.js +1711 -281
  17. package/dist/locales/de.d.ts +1080 -188
  18. package/dist/locales/de.js +1248 -261
  19. package/dist/locales/en.d.ts +1141 -249
  20. package/dist/locales/en.js +1714 -295
  21. package/dist/locales/es.d.ts +1186 -188
  22. package/dist/locales/es.js +1350 -255
  23. package/dist/locales/fr.d.ts +1186 -188
  24. package/dist/locales/fr.js +1351 -258
  25. package/dist/locales/index.d.ts +11940 -2033
  26. package/dist/locales/index.js +48 -9
  27. package/dist/locales/ja.d.ts +1080 -188
  28. package/dist/locales/ja.js +1240 -254
  29. package/dist/locales/ko.d.ts +1080 -188
  30. package/dist/locales/ko.js +1244 -258
  31. package/dist/locales/pt.d.ts +1186 -188
  32. package/dist/locales/pt.js +1350 -255
  33. package/dist/locales/registry.d.ts +102 -0
  34. package/dist/locales/registry.js +220 -0
  35. package/dist/locales/rtl.d.ts +24 -0
  36. package/dist/locales/rtl.js +26 -0
  37. package/dist/locales/ru.d.ts +1292 -188
  38. package/dist/locales/ru.js +1479 -272
  39. package/dist/locales/zh.d.ts +1144 -252
  40. package/dist/locales/zh.js +1245 -259
  41. package/dist/pickLocalized.d.ts +30 -0
  42. package/dist/pickLocalized.js +39 -0
  43. package/dist/provider.d.ts +101 -12
  44. package/dist/provider.js +335 -50
  45. package/dist/translateFn.d.ts +29 -0
  46. package/dist/translateFn.js +8 -0
  47. package/dist/useDisplayLocale.d.ts +11 -0
  48. package/dist/useDisplayLocale.js +11 -0
  49. package/dist/useObjectLabel.d.ts +143 -100
  50. package/dist/useObjectLabel.js +129 -82
  51. package/dist/useSafeTranslation.js +40 -42
  52. package/dist/utils/first-day-of-week.d.ts +71 -0
  53. package/dist/utils/first-day-of-week.js +61 -0
  54. package/dist/utils/formatting.d.ts +23 -1
  55. package/dist/utils/formatting.js +34 -5
  56. package/dist/utils/index.d.ts +1 -0
  57. package/dist/utils/index.js +1 -0
  58. package/dist/utils/spec-formatters.d.ts +13 -23
  59. package/dist/utils/spec-formatters.js +41 -2
  60. package/dist/utils/spec-translations.d.ts +16 -3
  61. package/dist/utils/spec-translations.js +52 -13
  62. package/package.json +12 -6
@@ -13,16 +13,19 @@ const de = {
13
13
  notRestored: 'Der Server hat die Anfrage angenommen, aber Ihre Administratorsitzung nicht wiederhergestellt — Sie handeln weiterhin als {{user}}. Melden Sie sich ab und erneut an, um dies zu beenden.',
14
14
  },
15
15
  },
16
- // objectui#2600 B5 — capability picker scope group headers (labels come from the sys_capability registry).
16
+ // objectui#2600 B5 — capability picker scope group headers (labels come from the capability registry).
17
17
  capability: {
18
18
  label: {
19
19
  manage_users: "Benutzer verwalten",
20
20
  manage_org_users: "Organisationsbenutzer verwalten",
21
21
  manage_metadata: "Metadaten verwalten",
22
+ manage_mailboxes: "Postfächer 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",
28
+ view_all_audit_log: "Gesamtes Audit-Protokoll anzeigen",
26
29
  },
27
30
  group: {
28
31
  platform: 'Plattform',
@@ -30,26 +33,6 @@ const de = {
30
33
  other: 'Andere',
31
34
  },
32
35
  },
33
- // objectui#3546 slice six — die schreibgeschützte Facetten-Zusammenfassung von
34
- // PermissionFacetLink. "Registerkarte" (nicht "Tab") für In-App-Reiter, wie in
35
- // console.objectView.ufTabs; "Tab" bleibt dem Browser-Tab vorbehalten.
36
- perm: {
37
- facet: {
38
- none: "Keine",
39
- more: "+{{count}} weitere",
40
- objects: "{{count}} Objekte",
41
- objects_one: "{{count}} Objekt",
42
- fields: "{{count}} Feldregeln",
43
- fields_one: "{{count}} Feldregel",
44
- rls: "{{count}} RLS-Richtlinien",
45
- rls_one: "{{count}} RLS-Richtlinie",
46
- tabs: "{{count}} Registerkarten-Regeln",
47
- tabs_one: "{{count}} Registerkarten-Regel",
48
- adminScope: "Delegierte Administration konfiguriert",
49
- designInStudio: "Im Studio gestalten →",
50
- designInStudioHint: "Im Studio gestalten",
51
- },
52
- },
53
36
  lookup: {
54
37
  recentlyUsed: 'Zuletzt verwendet',
55
38
  allResults: 'Alle Ergebnisse',
@@ -63,7 +46,8 @@ const de = {
63
46
  selectFirst: 'Zuerst {{fields}} auswählen',
64
47
  selectRecord: 'Datensatz auswählen',
65
48
  recordCount: '{{count}} Datensätze',
66
- recordCountOne: '1 Datensatz',
49
+ recordCount_one: '{{count}} Datensatz',
50
+ recordCount_other: '{{count}} Datensätze',
67
51
  pageOf: 'Seite {{current}} von {{total}}',
68
52
  filters: 'Filter',
69
53
  clear: 'Zurücksetzen',
@@ -116,14 +100,26 @@ const de = {
116
100
  closePanel: "Panel schließen",
117
101
  resizeDrawer: "Panelbreite anpassen",
118
102
  itemCount: "{{count}} Elemente",
119
- itemCountOne: "{{count}} Element",
103
+ itemCount_one: "{{count}} Element",
104
+ itemCount_other: "{{count}} Elemente",
120
105
  toggleSidebar: "Seitenleiste umschalten",
106
+ breadcrumb: "Brotkrümelnavigation",
121
107
  package: "Paket",
122
108
  done: "Fertig",
123
109
  editInStudio: "Im Studio bearbeiten",
124
110
  record: "Datensatz",
125
111
  retry: "Erneut versuchen",
126
112
  printDialogHint: "Öffnet den Druckdialog Ihres Browsers (kein PDF-Export)",
113
+ // The non-grid row ceiling's footnote (objectui#7210). Two keys because
114
+ // there are two conditions: a reported `total` states the fact with BOTH
115
+ // numbers, a missing one cannot name how many. Kept terse deliberately —
116
+ // this copy is eagerly loaded, and since objectui#7399 these bytes are
117
+ // budgeted by the `i18n-locales` chunk, not `framework`. ⛔ That ceiling's
118
+ // headroom is deliberately NOT restated here — it moves on every
119
+ // re-baseline, and the figure that was here went stale.
120
+ // `pnpm check:eager-closure` prints it.
121
+ rowCeilingNote: "Erste {{shown}} von {{total}} Datensätzen. Filter eingrenzen.",
122
+ rowCeilingNoteUnknownTotal: "Erste {{shown}} Datensätze. Filter eingrenzen.",
127
123
  },
128
124
  actions: {
129
125
  decisionOutput: {
@@ -135,6 +131,15 @@ const de = {
135
131
  acknowledge: 'Ich habe ihn gespeichert',
136
132
  copyAll: 'Alle kopieren',
137
133
  },
134
+ notAvailableHere: '„{{action}}“ ist auf der aktuellen Seite nicht verfügbar.',
135
+ notAvailableForRecord: 'Für diesen Datensatz nicht verfügbar',
136
+ completedSuccessfully: 'Aktion erfolgreich abgeschlossen',
137
+ failed: 'Aktion fehlgeschlagen',
138
+ parallelFailed: 'Eine oder mehrere parallele Aktionen sind fehlgeschlagen',
139
+ undo: 'Rückgängig',
140
+ undone: 'Änderung rückgängig gemacht',
141
+ undoneOperation: 'Rückgängig: {{description}}',
142
+ redoneOperation: 'Wiederholen: {{description}}',
138
143
  },
139
144
  validation: {
140
145
  required: "{{field}} ist erforderlich",
@@ -152,19 +157,47 @@ const de = {
152
157
  },
153
158
  form: {
154
159
  noPermissionToSave: "Sie haben keine Berechtigung, diesen Datensatz zu speichern.",
160
+ noPermissionToCreate: "Sie haben keine Berechtigung, „{{object}}“-Datensätze zu erstellen. Die Felder sind schreibgeschützt.",
161
+ noPermissionToEdit: "Sie haben keine Berechtigung, „{{object}}“-Datensätze zu bearbeiten. Die Felder sind schreibgeschützt.",
155
162
  submitFailed: "Speichern fehlgeschlagen. Bitte versuchen Sie es erneut.",
163
+ uploadInFlight: "Warten Sie, bis der Upload abgeschlossen ist, bevor Sie speichern.",
164
+ clearedOnHide: "Geleert, was für die aktuellen Werte nicht mehr gilt: {{fields}}",
165
+ 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.",
156
166
  discardTitle: "Änderungen verwerfen?",
157
167
  discardMessage: "Sie haben ungespeicherte Änderungen. Wenn Sie dieses Formular jetzt schließen, gehen Ihre Bearbeitungen verloren.",
158
168
  // objectui#4024 — the create/edit dialog's `sr-only` accessible
159
169
  // description, used when the form declares no `description` of its own.
160
170
  dialogDescriptionFallback: "Füllen Sie die Formularfelder aus und senden Sie ab oder brechen Sie ab.",
171
+ deniedDescription: "Sie haben keinen Bearbeitungszugriff auf dieses Feld.",
172
+ serverDefaultHint: "Wird beim Speichern automatisch gesetzt.",
173
+ maxFileSize: "Maximale Größe: {{size}}",
174
+ masterDetail: {
175
+ loadingColumns: "Spalten werden geladen…",
176
+ subtotal: "Zwischensumme",
177
+ tax: "Steuer ({{rate}} %)",
178
+ total: "Gesamt",
179
+ lineItem: "Position",
180
+ rowTitle: "{{title}} — Zeile {{row}}",
181
+ applyRow: "Übernehmen",
182
+ editorDescription: "Erfassen Sie den Datensatz und seine Positionen und speichern Sie anschließend.",
183
+ noChildObject: "Für diese Sammlung ist kein untergeordnetes Objekt konfiguriert: Setzen Sie {{property}} auf das Objekt, dessen Zeilen sie auflistet.",
184
+ 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.",
185
+ 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.",
186
+ },
187
+ lineItems: {
188
+ title: "Positionen",
189
+ saveRecordFirst: "Speichern Sie zuerst den Datensatz, um Positionen hinzuzufügen.",
190
+ notLoaded: "Die Positionen dieses Datensatzes wurden nicht geladen.",
191
+ loadFailed: "Positionen konnten nicht geladen werden",
192
+ saveFailed: "Positionen konnten nicht gespeichert werden",
193
+ noChildObject: "Für dieses Panel ist kein untergeordnetes Objekt konfiguriert: Setzen Sie {{property}} auf das Objekt, dessen Zeilen es auflistet.",
194
+ },
161
195
  keepEditing: "Weiter bearbeiten",
162
196
  discard: "Verwerfen",
163
197
  conflictTitle: "Speicherkonflikt",
164
198
  conflictMessage: "Dieser Datensatz wurde während Ihrer Bearbeitung von jemand anderem geändert. Beim Überschreiben werden dessen Änderungen durch Ihre ersetzt.",
165
199
  conflictLatestVersion: "Deren Speicherung: {{time}}",
166
200
  conflictOverwrite: "Überschreiben",
167
- addItem: "Element hinzufügen",
168
201
  removeItem: "Element entfernen",
169
202
  fieldRequired: "Dieses Feld ist erforderlich",
170
203
  invalidFormat: "Ungültiges Format",
@@ -182,6 +215,12 @@ const de = {
182
215
  createSuccess: "{{object}} erfolgreich erstellt",
183
216
  updateSuccess: "{{object}} erfolgreich aktualisiert",
184
217
  deleteSuccess: "{{object}} erfolgreich gelöscht",
218
+ created: "Erstellt",
219
+ saved: "Gespeichert",
220
+ savedNamed: "{{title}} gespeichert",
221
+ submitted: "Gesendet",
222
+ errorLoading: "Fehler beim Laden des Formulars",
223
+ navigateRefused: "Das für dieses Formular deklarierte `navigateOnSuccess`-Ziel wurde abgelehnt, daher fand keine Navigation statt.",
185
224
  fullscreen: {
186
225
  title: "Text bearbeiten",
187
226
  description: "Bearbeiten Sie den vollständigen Textwert und speichern oder verwerfen Sie dann Ihre Änderungen.",
@@ -200,12 +239,18 @@ const de = {
200
239
  remove: "Bild {{index}} entfernen",
201
240
  enlarge: "{{name}} vergrößern",
202
241
  preview: "Bildvorschau",
242
+ cropPreview: "Vorschau des Bildzuschnitts",
203
243
  previous: "Vorheriges Bild",
204
244
  next: "Nächstes Bild",
205
245
  counter: "{{current}} / {{total}}",
206
246
  },
247
+ percent: {
248
+ slider: "Prozentsatz",
249
+ },
207
250
  relativeDate: {
208
251
  overdue: "{{count}} T. überfällig",
252
+ overdue_one: "{{count}} T. überfällig",
253
+ overdue_other: "{{count}} T. überfällig",
209
254
  },
210
255
  file: {
211
256
  dragDropHere: 'Dateien hierher ziehen und ablegen',
@@ -222,6 +267,9 @@ const de = {
222
267
  remove: '{{name}} entfernen',
223
268
  exceedsMaxSize: '„{{name}}“ überschreitet die maximale Größe ({{max}} MB)',
224
269
  uploadFailed: 'Hochladen von „{{name}}“ fehlgeschlagen: {{error}}',
270
+ uploadIncomplete: 'Hochladen von „{{name}}“ wurde nicht abgeschlossen: Es wurde keine Datei-ID zurückgegeben, nichts wurde gespeichert',
271
+ restricted: 'Eingeschränkte Datei',
272
+ restrictedHint: 'Sie haben keinen Zugriff auf die Details dieser Datei',
225
273
  },
226
274
  richText: {
227
275
  format: "Format: {{format}}",
@@ -238,6 +286,10 @@ const de = {
238
286
  search: "Objekte suchen…",
239
287
  empty: "Keine Objekte gefunden",
240
288
  },
289
+ registryRef: {
290
+ loadFailed: "Die Liste konnte nicht geladen werden. Sie können den Namen weiterhin eingeben.",
291
+ notFound: "{{name}} (nicht gefunden)",
292
+ },
241
293
  recipient: {
242
294
  selectTypeFirst: "Wählen Sie zuerst einen Empfängertyp.",
243
295
  loading: "Wird geladen…",
@@ -249,6 +301,9 @@ const de = {
249
301
  selectBusinessUnit: "Geschäftseinheit auswählen",
250
302
  selectPosition: "Position auswählen",
251
303
  selectUnitAndSubordinates: "Geschäftseinheit auswählen",
304
+ selectField: "Benutzerfeld auswählen",
305
+ noUserFields: "Dieses Objekt hat keine Benutzerfelder",
306
+ fieldNotUserTyped: "{{name}} — kein Benutzerfeld",
252
307
  },
253
308
  filterCondition: {
254
309
  selectObjectFirst: "Wählen Sie zuerst ein Objekt.",
@@ -259,6 +314,33 @@ const de = {
259
314
  editAsJson: "Als JSON bearbeiten",
260
315
  useVisualBuilder: "Visuellen Builder verwenden",
261
316
  },
317
+ object: {
318
+ invalidJson: "Ungültiges JSON",
319
+ },
320
+ location: {
321
+ refusedFormat: "Nicht gespeichert: Geben Sie ein Paar aus Breitengrad, Längengrad ein (Beispiel: 30.2741, 120.1551).",
322
+ refusedRange: "Nicht gespeichert: {{detail}}",
323
+ latitude: "Breitengrad",
324
+ longitude: "Längengrad",
325
+ refusedResidueOne: "Nicht gespeichert: {{name}} „{{text}}“ ist keine Zahl. Geben Sie einfache Dezimalzahlen ein (Beispiel: 30.2741, 120.1551).",
326
+ refusedResidue: "Nicht gespeichert: {{name}} „{{text}}“ und {{otherName}} „{{otherText}}“ sind keine Zahlen. Geben Sie einfache Dezimalzahlen ein (Beispiel: 30.2741, 120.1551).",
327
+ },
328
+ date: {
329
+ impossibleDay: "Der gespeicherte Wert „{{value}}“ ist kein gültiges Datum. Wählen Sie ein Datum, um ihn zu ersetzen.",
330
+ },
331
+ dateTime: {
332
+ impossibleDay: "Der gespeicherte Wert „{{value}}“ ist kein gültiges Datum. Wählen Sie Datum und Uhrzeit, um ihn zu ersetzen.",
333
+ },
334
+ datePicker: {
335
+ today: "Heute",
336
+ tomorrow: "Morgen",
337
+ clear: "Datum löschen",
338
+ openCalendar: "Kalender öffnen",
339
+ invalid: "Nicht gespeichert: „{{value}}“ ist kein Datum. Geben Sie es als {{format}} ein oder wählen Sie es im Kalender aus.",
340
+ },
341
+ number: {
342
+ badInput: "Nicht gespeichert: Der Text in diesem Feld ist keine Zahl. Geben Sie eine einfache Dezimalzahl ein (Beispiel: {{example}}).",
343
+ },
262
344
  tags: {
263
345
  placeholder: "Tippen und mit der Eingabetaste hinzufügen…",
264
346
  },
@@ -270,10 +352,25 @@ const de = {
270
352
  postalCode: "Postleitzahl",
271
353
  country: "Land",
272
354
  },
355
+ boolean: {
356
+ offBadge: "{{label}} — Aus",
357
+ completed: "Abgeschlossen",
358
+ notCompleted: "Nicht abgeschlossen",
359
+ },
273
360
  textarea: {
274
361
  characterCount: "Zeichenanzahl: {{count}} von {{max}}",
275
362
  charactersRemaining: "Verbleibende Zeichen: {{count}}",
276
363
  },
364
+ grid: {
365
+ addLine: "Zeile hinzufügen",
366
+ noItems: "Keine Einträge",
367
+ noItemsAddHint: "Noch keine Einträge – klicken Sie auf „{{label}}“, um zu beginnen.",
368
+ optionalColumns: "Optionale Spalten",
369
+ computed: "Berechnet",
370
+ openRow: "Zeile öffnen",
371
+ duplicateRow: "Zeile duplizieren",
372
+ removeRow: "Zeile entfernen",
373
+ },
277
374
  },
278
375
  table: {
279
376
  rowsPerPage: "Zeilen pro Seite",
@@ -289,10 +386,15 @@ const de = {
289
386
  selectAllRows: "Alle Zeilen auswählen",
290
387
  expandRow: "Zeile erweitern",
291
388
  collapseRow: "Zeile reduzieren",
389
+ rowActions: "Zeilenaktionen",
292
390
  hideColumn: "Spalte ausblenden",
293
391
  freezeColumn: "Spalte fixieren",
294
392
  unfreezeColumn: "Spalte lösen",
295
393
  pageInfo: "Seite {{current}} von {{total}}",
394
+ firstPage: "Erste Seite",
395
+ previousPage: "Vorherige Seite",
396
+ nextPage: "Nächste Seite",
397
+ lastPage: "Letzte Seite",
296
398
  totalRecords: "{{count}} gesamt",
297
399
  noResults: "Keine Ergebnisse gefunden",
298
400
  noResultsHint: "Versuchen Sie, Ihre Filter oder Suchanfrage anzupassen.",
@@ -302,23 +404,39 @@ const de = {
302
404
  open: "Öffnen",
303
405
  search: "Suchen…",
304
406
  modified: "{{count}} Zeile geändert",
407
+ modified_one: "{{count}} Zeile geändert",
408
+ modified_other: "{{count}} Zeilen geändert",
409
+ saved: "{{count}} Zeile gespeichert",
410
+ saved_one: "{{count}} Zeile gespeichert",
411
+ saved_other: "{{count}} Zeilen gespeichert",
305
412
  saveFailed: 'Speichern fehlgeschlagen',
306
413
  selected: "{{count}} ausgewählt",
414
+ selected_one: "{{count}} ausgewählt",
415
+ selected_other: "{{count}} ausgewählt",
307
416
  edit: "Bearbeiten",
308
417
  delete: "Löschen",
309
418
  },
310
419
  grid: {
311
420
  bulkSelected: "{{count}} ausgewählt",
421
+ bulkSelected_one: "{{count}} ausgewählt",
422
+ bulkSelected_other: "{{count}} ausgewählt",
312
423
  bulkSelectedAllMatches: "{{count}} ausgewählt (alle Treffer)",
313
424
  bulkClear: "Auswahl aufheben",
314
425
  bulkAllOnPage: "Alle {{count}} auf dieser Seite sind ausgewählt.",
426
+ bulkAllOnPage_one: "{{count}} Datensatz auf dieser Seite ist ausgewählt.",
427
+ bulkAllOnPage_other: "Alle {{count}} auf dieser Seite sind ausgewählt.",
315
428
  bulkSelectAllMatching: "Alle {{count}} Treffer auswählen",
316
429
  bulkAllMatchingSelected: "Alle {{count}} übereinstimmenden Datensätze sind ausgewählt.",
430
+ bulkActions: "Massenaktionen",
317
431
  bulk: {
318
432
  confirmDefault: "Dies wird auf {{count}} Datensätze angewendet.",
433
+ confirmDefault_one: "Dies wird auf {{count}} Datensatz angewendet.",
434
+ confirmDefault_other: "Dies wird auf {{count}} Datensätze angewendet.",
319
435
  overLimit: "Die Auswahl ({{count}}) überschreitet das Aktionslimit ({{limit}}). Verkleinern Sie die Auswahl, um fortzufahren.",
320
436
  affectedRecords: "Betroffene Datensätze ({{count}}):",
321
437
  skippedIneligible: '{{count}} der ausgewählten Datensätze sind für diese Aktion nicht zulässig und werden übersprungen.',
438
+ skippedIneligible_one: '{{count}} der ausgewählten Datensätze ist für diese Aktion nicht zulässig und wird übersprungen.',
439
+ skippedIneligible_other: '{{count}} der ausgewählten Datensätze sind für diese Aktion nicht zulässig und werden übersprungen.',
322
440
  rowFallback: "Zeile {{index}}",
323
441
  andMore: "… und {{count}} weitere",
324
442
  processed: "{{count}} / {{total}} verarbeitet",
@@ -336,7 +454,6 @@ const de = {
336
454
  undo: "Rückgängig",
337
455
  undoing: "Wird rückgängig gemacht…",
338
456
  done: "Fertig",
339
- selectPlaceholder: "Auswählen…",
340
457
  loading: "Wird geladen…",
341
458
  },
342
459
  actions: "Aktionen",
@@ -349,17 +466,27 @@ const de = {
349
466
  pullToRefresh: "Zum Aktualisieren ziehen",
350
467
  refreshing: "Wird aktualisiert…",
351
468
  openRecord: "Datensatz öffnen",
469
+ recordUnavailable: "{{object}} · Datensatz nicht verfügbar",
352
470
  rowHeight: "Zeilenhöhe: {{mode}}",
353
471
  openMenu: "Menü öffnen",
354
472
  empty: "Leer",
355
473
  yes: "Ja",
356
474
  no: "Nein",
357
475
  systemFields: "System",
476
+ // objectui#10881 — the grouped grid's two refusals: over a data source
477
+ // that cannot answer the group header query, and over rows a host
478
+ // handed in while declaring them one page of more. `queryGroupHeaders`
479
+ // is the member's name and stays untranslated.
480
+ grouping: {
481
+ 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.",
482
+ 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.",
483
+ },
358
484
  // objectui#4024 — column-footer aggregate prefixes, keyed by the spec's
359
485
  // `ColumnSummary` vocabulary. `pattern` owns the label/value join so this
360
486
  // pack controls its own separator and word order.
361
487
  summary: {
362
488
  pattern: "{{label}}: {{value}}",
489
+ pagePattern: "{{label}} (diese Seite): {{value}}",
363
490
  count: "Anzahl",
364
491
  countEmpty: "Leer",
365
492
  countFilled: "Ausgefüllt",
@@ -381,10 +508,14 @@ const de = {
381
508
  },
382
509
  import: {
383
510
  downloadTemplate: "Vorlage herunterladen",
384
- downloadTemplateHint: "Laden Sie eine CSV mit den richtigen Spalten herunter (Pflichtfelder sind mit * markiert).",
511
+ downloadTemplateHint: "Laden Sie eine Excel-Datei mit den importierbaren Spalten herunter (Pflichtfelder sind mit * markiert), samt Ausfüllhinweisen.",
385
512
  templateFileName: "{{object}}-import-template",
513
+ templateDownloadFailed: "Die Vorlage konnte nicht heruntergeladen werden. Bitte versuchen Sie es erneut.",
514
+ templateNotPermitted: "Sie sind nicht berechtigt, Datensätze dieses Objekts zu erstellen, daher ist die Importvorlage nicht verfügbar.",
386
515
  autoMatched: "Automatisch zugeordnet",
387
516
  autoMatchedSummary: "{{count}} Spalte(n) automatisch zugeordnet — unten prüfen und anpassen.",
517
+ autoMatchedSummary_one: "{{count}} Spalte automatisch zugeordnet — unten prüfen und anpassen.",
518
+ autoMatchedSummary_other: "{{count}} Spalten automatisch zugeordnet — unten prüfen und anpassen.",
388
519
  confidence: {
389
520
  high: "Hohe Konfidenz",
390
521
  medium: "Mittlere Konfidenz",
@@ -397,8 +528,14 @@ const de = {
397
528
  cancelImport: "Import abbrechen",
398
529
  importCancelled: "Import abgebrochen",
399
530
  resultsTruncated: "Es werden die ersten {{count}} Zeilenergebnisse (von {{total}}) angezeigt.",
531
+ resultsTruncated_one: "Es wird das erste {{count}} Zeilenergebnis (von {{total}}) angezeigt.",
532
+ resultsTruncated_other: "Es werden die ersten {{count}} Zeilenergebnisse (von {{total}}) angezeigt.",
400
533
  createdCount: "{{count}} erstellt",
534
+ createdCount_one: "{{count}} erstellt",
535
+ createdCount_other: "{{count}} erstellt",
401
536
  updatedCount: "{{count}} aktualisiert",
537
+ updatedCount_one: "{{count}} aktualisiert",
538
+ updatedCount_other: "{{count}} aktualisiert",
402
539
  downloadFailed: "Fehlgeschlagene Zeilen herunterladen",
403
540
  options: "Importoptionen",
404
541
  writeMode: "Wenn eine Zeile zu einem vorhandenen Datensatz passt",
@@ -413,9 +550,6 @@ const de = {
413
550
  needMatchFields: "Wählen Sie mindestens ein Feld für den Abgleich aus.",
414
551
  matchOnlyField: "(nur Abgleich)",
415
552
  optCreateOptions: "Unbekannte Optionswerte beibehalten",
416
- optRunAutomations: "Automatisierungen und Trigger ausführen",
417
- optTreatHistorical: "Als historische Daten importieren",
418
- optTreatHistoricalHint: "(abgeschlossene Datensätze unverändert importieren — Zustandsautomat-Prüfungen überspringen und die ursprünglichen Zeitstempel und Autoren beibehalten, statt jetzt zu stempeln)",
419
553
  optSkipBlankKey: "Zeilen mit leerem Abgleichswert überspringen",
420
554
  optBackground: "Im Hintergrund importieren",
421
555
  optBackgroundHint: "(läuft als rückgängig machbarer Auftrag)",
@@ -430,6 +564,7 @@ const de = {
430
564
  invalidBoolean: "„{{value}}“ ist kein gültiger Wahr/Falsch-Wert",
431
565
  invalidNumber: "„{{value}}“ ist keine gültige Zahl",
432
566
  invalidDate: "„{{value}}“ ist kein gültiges Datum",
567
+ invalidTime: "„{{value}}“ ist keine gültige Uhrzeit",
433
568
  invalidOption: "„{{value}}“ gehört nicht zu den zulässigen Optionen",
434
569
  requiredValue: "Dieses Feld ist erforderlich",
435
570
  matchAmbiguous: "Passt zu mehreren vorhandenen Datensätzen — verwenden Sie einen eindeutigen Wert oder die Datensatz-ID",
@@ -446,10 +581,15 @@ const de = {
446
581
  historyColResult: "Ergebnis",
447
582
  historyColTime: "Wann",
448
583
  errorCount: "{{count}} Fehler",
584
+ errorCount_one: "{{count}} Fehler",
585
+ errorCount_other: "{{count}} Fehler",
449
586
  undoImport: "Import rückgängig machen",
450
587
  undoing: "Wird rückgängig gemacht…",
451
588
  undoConfirm: "Diesen Import rückgängig machen? Dabei erstellte Datensätze werden gelöscht und aktualisierte Datensätze auf ihre vorherigen Werte zurückgesetzt.",
452
589
  reverted: "Rückgängig gemacht",
590
+ undoPartial: "{{count}} Zeilen wurden nicht rückgängig gemacht. Erneutes Rückgängigmachen wiederholt nur diese Zeilen.",
591
+ undoPartial_one: "{{count}} Zeile wurde nicht rückgängig gemacht. Erneutes Rückgängigmachen wiederholt nur diese Zeile.",
592
+ undoPartial_other: "{{count}} Zeilen wurden nicht rückgängig gemacht. Erneutes Rückgängigmachen wiederholt nur diese Zeilen.",
453
593
  jobStatus: {
454
594
  pending: "Ausstehend",
455
595
  running: "Läuft",
@@ -506,19 +646,29 @@ const de = {
506
646
  mapped: "Zugeordnet",
507
647
  skipped: "Übersprungen",
508
648
  rowsWithErrors: "{{count}} Zeile(n) mit Fehlern",
649
+ rowsWithErrors_one: "{{count}} Zeile mit Fehlern",
650
+ rowsWithErrors_other: "{{count}} Zeilen mit Fehlern",
509
651
  rowsCorrected: "{{count}} Zeile(n) korrigiert",
652
+ rowsCorrected_one: "{{count}} Zeile korrigiert",
653
+ rowsCorrected_other: "{{count}} Zeilen korrigiert",
510
654
  clickToFix: "— klicken Sie auf eine hervorgehobene Zelle, um sie zu bearbeiten.",
511
655
  showingRows: "{{shown}} von {{total}} Zeilen angezeigt",
512
656
  importing: "Importiere… {{progress}}%",
513
657
  importComplete: "Import abgeschlossen",
658
+ importPartial: "Import mit Fehlern abgeschlossen",
659
+ importFailed: "Import fehlgeschlagen",
514
660
  imported: "{{count}} importiert",
515
661
  skippedCount: "{{count}} übersprungen",
516
662
  moreErrors: "…und {{count}} weitere Fehler",
663
+ moreErrors_one: "…und {{count}} weiterer Fehler",
664
+ moreErrors_other: "…und {{count}} weitere Fehler",
517
665
  cancel: "Abbrechen",
518
666
  back: "Zurück",
519
667
  next: "Weiter",
520
668
  close: "Schließen",
521
669
  importNRows: "{{count}} Zeilen importieren",
670
+ importNRows_one: "{{count}} Zeile importieren",
671
+ importNRows_other: "{{count}} Zeilen importieren",
522
672
  importingProgress: "Importiere…",
523
673
  requiredMark: "*",
524
674
  required: "Erforderlich",
@@ -530,17 +680,44 @@ const de = {
530
680
  month: "Monat",
531
681
  week: "Woche",
532
682
  day: "Tag",
533
- agenda: "Agenda",
534
683
  allDay: "Ganztägig",
535
- noEvents: "Keine Termine",
536
684
  newEvent: "Neuer Termin",
537
685
  moreEvents: "+{{count}} weitere",
686
+ unscheduled: "Nicht geplant ({{count}})",
687
+ loading: "Kalender wird geladen…",
688
+ loadError: "Fehler: {{message}}",
689
+ configRequired: "Kalenderkonfiguration erforderlich. Bitte startDateField angeben, den einzigen erforderlichen Schlüssel des Kalenders; der Termintitel wird auch ohne titleField aufgelöst.",
690
+ 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.",
691
+ eventDetails: "Termindetails",
692
+ pullToRefresh: "Zum Aktualisieren ziehen",
693
+ refreshing: "Wird aktualisiert…",
694
+ onDate: "Am {{date}}",
695
+ eventTitle: "Titel",
696
+ eventTitlePlaceholder: "Worum geht es bei diesem Termin?",
697
+ creating: "Wird erstellt…",
698
+ titleRequired: "Titel ist erforderlich",
699
+ a11y: {
700
+ region: "Kalender",
701
+ grid: "Kalenderraster",
702
+ goToToday: "Zu heute springen",
703
+ previousPeriod: "Vorheriger Zeitraum",
704
+ nextPeriod: "Nächster Zeitraum",
705
+ currentDate: "Aktuelles Datum: {{date}}",
706
+ dayCell: "{{date}}, {{count}} Termine",
707
+ dayCell_one: "{{date}}, {{count}} Termin",
708
+ dayCell_other: "{{date}}, {{count}} Termine",
709
+ resizeEventEnd: "Ende des Termins ändern",
710
+ resizeEventEndHint: "Ziehen, um das Enddatum zu ändern",
711
+ resizeStart: "Beginn ändern",
712
+ resizeEnd: "Ende ändern",
713
+ },
538
714
  },
539
715
  list: {
540
716
  firstRunTitle: "Hier ist noch nichts",
541
717
  firstRunMessage: "Legen Sie Ihren ersten Datensatz an, um loszulegen.",
542
718
  noMatches: "Keine passenden Datensätze",
543
719
  noMatchesMessage: "Keine Datensätze entsprechen Ihren aktuellen Filtern oder Ihrer Suche. Passen Sie sie an oder setzen Sie sie zurück.",
720
+ viewFilterNoMatchesMessage: "Keine Datensätze entsprechen dem Filter dieser Ansicht.",
544
721
  loadErrorTitle: "Datensätze konnten nicht geladen werden",
545
722
  loadErrorMessage: "Beim Laden dieser Daten ist etwas schiefgelaufen. Prüfen Sie Ihre Verbindung und versuchen Sie es erneut.",
546
723
  loadErrorForbiddenTitle: "Kein Zugriff",
@@ -577,17 +754,24 @@ const de = {
577
754
  refresh: "Aktualisieren",
578
755
  loading: "Datensätze werden geladen…",
579
756
  recordCount: "{{count}} Datensätze",
580
- recordCountOne: "{{count}} Datensatz",
757
+ recordCount_one: "{{count}} Datensatz",
758
+ recordCount_other: "{{count}} Datensätze",
581
759
  addRecord: "Datensatz hinzufügen",
760
+ // objectui#12703 — the compact list's footer link to the object's list or the block's view.
761
+ viewAll: "Alle anzeigen",
582
762
  tabs: "Tabs",
583
763
  allRecords: "Alle Datensätze",
584
764
  search: "Suche",
585
765
  filter: "Filtern",
586
766
  filterRecords: "Datensätze filtern",
767
+ filterActive: "Filtern, {{count}} aktiv",
768
+ filterActive_one: "Filtern, {{count}} aktiv",
769
+ filterActive_other: "Filtern, {{count}} aktiv",
587
770
  sort: "Sortieren",
588
771
  sortRecords: "Datensätze sortieren",
589
772
  sortByIdSuffix: "(nach ID)",
590
773
  sortRelationalHint: "Spalten, die auf einen anderen Datensatz verweisen, werden nicht aufgeführt: Sie lassen sich nur nach der gespeicherten ID sortieren, nicht nach dem in der Zelle angezeigten Namen. Um nach diesem Namen zu sortieren, denormalisieren Sie ihn auf dieses Objekt — als gespeichertes Feld, das bei einer Änderung der Quelle geschrieben wird — und sortieren Sie danach. Kein Formelfeld: Es ist virtuell, es wird keine Spalte dafür gespeichert, und der Server verweigert die Sortierung danach.",
774
+ sortRelationalPicked: "Eine verknüpfte Spalte wird nach der gespeicherten ID sortiert, nicht nach dem angezeigten Namen.",
591
775
  resetSortToDefault: "Auf Standard der Ansicht zurücksetzen",
592
776
  group: "Gruppieren",
593
777
  groupBy: "Gruppieren nach",
@@ -608,14 +792,15 @@ const de = {
608
792
  print: "Drucken",
609
793
  hideFieldsTitle: "Felder ausblenden",
610
794
  dataLimitReached: "Die ersten {{limit}} Datensätze werden angezeigt. Möglicherweise sind weitere Daten verfügbar.",
611
- viewSettings: "Ansichtseinstellungen",
612
- viewSettingsHint: "Gruppierung, Farbe, Dichte und sichtbare Felder.",
795
+ display: "Anzeige",
796
+ layout: "Layout",
797
+ rowNumbers: "Zeilennummern",
798
+ resetToViewDefault: "Auf Standard der Ansicht zurücksetzen",
613
799
  addGroup: "Gruppenfeld hinzufügen",
614
800
  collapsedByDefault: "Standardmäßig eingeklappt",
615
801
  removeGroup: "Entfernen",
616
802
  inlineEditShort: "Inline bearbeiten",
617
803
  inlineEditLabel: "Datensätze inline bearbeiten (Zelle anklicken zum Bearbeiten)",
618
- recordEditingTitle: "Datensatzbearbeitung",
619
804
  },
620
805
  managedByBadge: {
621
806
  systemWritable: {
@@ -646,6 +831,7 @@ const de = {
646
831
  },
647
832
  kanban: {
648
833
  uncategorized: "Nicht kategorisiert",
834
+ loadMore: "Mehr laden",
649
835
  columns: "Spalten",
650
836
  addCard: "Karte hinzufügen",
651
837
  addColumn: "Spalte hinzufügen",
@@ -653,13 +839,28 @@ const de = {
653
839
  deleteCard: "Karte löschen",
654
840
  deleteColumn: "Spalte löschen",
655
841
  noCards: "Keine Karten",
842
+ columnCards: "Karten in Spalte {{column}}",
843
+ laneCards: "Karten in {{column}} - {{lane}}",
656
844
  cardTitlePlaceholder: "Kartentitel eingeben…",
657
845
  requiredFieldsTitle: "Erforderliche Felder ausfüllen",
658
846
  requiredFieldsDescription: "Durch diese Verschiebung werden die folgenden Felder zu Pflichtfeldern. Füllen Sie sie aus, um fortzufahren.",
847
+ dnd: {
848
+ start: "Karte {{card}} in Spalte {{column}} aufgenommen.",
849
+ overCard: "Karte {{card}} über Karte {{target}} in Spalte {{column}}.",
850
+ overColumn: "Karte {{card}} über Spalte {{column}}.",
851
+ overNone: "Karte {{card}} ist über keiner Spalte.",
852
+ moved: "Karte {{card}} in Spalte {{column}} verschoben.",
853
+ dropped: "Karte {{card}} abgelegt. Sie bleibt in Spalte {{column}}.",
854
+ cancelled: "Ziehen abgebrochen. Karte {{card}} bleibt in Spalte {{column}}.",
855
+ untitledCard: "ohne Titel",
856
+ unnamedColumn: "ohne Namen",
857
+ instructions: "Um diese Karte in eine andere Spalte zu verschieben, ziehen Sie sie mit der Maus oder per Touch.",
858
+ dragging: "Karte {{card}} wird gezogen",
859
+ },
659
860
  },
660
861
  timeline: {
661
862
  bucket: {
662
- overdue: "Überfällig",
863
+ earlier: "Früher",
663
864
  today: "Heute",
664
865
  tomorrow: "Morgen",
665
866
  thisWeek: "Diese Woche",
@@ -674,6 +875,17 @@ const de = {
674
875
  },
675
876
  gantt: {
676
877
  rowLabel: "Elemente",
878
+ unusableRange: {
879
+ 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.",
880
+ 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.",
881
+ 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.",
882
+ },
883
+ },
884
+ unsupported: {
885
+ 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.",
886
+ },
887
+ unconfigured: {
888
+ 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.",
677
889
  },
678
890
  },
679
891
  gantt: {
@@ -691,6 +903,7 @@ const de = {
691
903
  },
692
904
  aria: {
693
905
  taskList: "Vorgangsliste",
906
+ refreshing: "Aktualisiere…",
694
907
  },
695
908
  tooltip: {
696
909
  days: "T",
@@ -736,13 +949,19 @@ const de = {
736
949
  conflict: {
737
950
  title: "Terminkonflikt",
738
951
  body: "Diese Verschiebung verstößt gegen Abhängigkeitsbedingungen. {{count}} betroffene Vorgänge automatisch neu planen?",
952
+ body_one: "Diese Verschiebung verstößt gegen Abhängigkeitsbedingungen. {{count}} betroffenen Vorgang automatisch neu planen?",
953
+ body_other: "Diese Verschiebung verstößt gegen Abhängigkeitsbedingungen. {{count}} betroffene Vorgänge automatisch neu planen?",
739
954
  confirm: "Automatisch neu planen",
740
955
  cancel: "Unverändert lassen",
741
956
  },
742
957
  autoScheduleDlg: {
743
958
  title: "Automatisch planen",
744
959
  body: "{{count}} Vorgänge nach hinten verschieben, um die Abhängigkeiten einzuhalten?",
960
+ body_one: "{{count}} Vorgang nach hinten verschieben, um die Abhängigkeiten einzuhalten?",
961
+ body_other: "{{count}} Vorgänge nach hinten verschieben, um die Abhängigkeiten einzuhalten?",
745
962
  skipped: "{{count}} gesperrte Vorgänge verletzen die Verknüpfungen ebenfalls und wurden übersprungen.",
963
+ skipped_one: "{{count}} gesperrter Vorgang verletzt die Verknüpfungen ebenfalls und wurde übersprungen.",
964
+ skipped_other: "{{count}} gesperrte Vorgänge verletzen die Verknüpfungen ebenfalls und wurden übersprungen.",
746
965
  confirm: "Anwenden",
747
966
  cancel: "Abbrechen",
748
967
  none: "Alle Abhängigkeiten sind erfüllt — nichts neu zu planen.",
@@ -821,10 +1040,14 @@ const de = {
821
1040
  tabActionsFor: "Ansichtsaktionen für {{name}}",
822
1041
  readonlyAriaLabel: "Schreibgeschützte Ansicht",
823
1042
  readonlyTooltip: "Systemansicht — im Code definiert, schreibgeschützt.",
1043
+ malformedFilter: "Der Filter dieser Ansicht ist fehlerhaft, daher werden keine Datensätze angezeigt: Die Bedingung {{subject}} kann nicht angewendet werden.",
1044
+ noObject: "Kein Objekt angegeben: Legen Sie {{property}} oder dataSource.object fest.",
824
1045
  },
825
1046
  designer: {
826
1047
  undo: "Rückgängig",
827
1048
  redo: "Wiederholen",
1049
+ canvasMinimap: "Minikarte der Arbeitsfläche",
1050
+ versionHistory: "Versionsverlauf",
828
1051
  },
829
1052
  detail: {
830
1053
  editInlineHint: "Zum Bearbeiten doppelklicken",
@@ -846,7 +1069,8 @@ const de = {
846
1069
  pageHeaderActions: "Aktionen der Seitenkopfzeile",
847
1070
  emojiPicker: "Emoji-Auswahl",
848
1071
  reactionCount: "{{emoji}} {{count}} Reaktionen",
849
- reactionCountOne: "{{emoji}} {{count}} Reaktion",
1072
+ reactionCount_one: "{{emoji}} {{count}} Reaktion",
1073
+ reactionCount_other: "{{emoji}} {{count}} Reaktionen",
850
1074
  recordDetail: "Datensatzdetails",
851
1075
  recordDetailWithLabel: "{{label}}-Details",
852
1076
  openAsFullPage: "Als ganze Seite öffnen",
@@ -864,7 +1088,7 @@ const de = {
864
1088
  relatedRecords: "{{count}} Datensätze",
865
1089
  relatedRecordOne: "{{count}} Datensatz",
866
1090
  noRelatedRecords: "Keine verknüpften Datensätze gefunden",
867
- loading: "Laden…",
1091
+ loading: "Wird geladen…",
868
1092
  copyToClipboard: "In Zwischenablage kopieren",
869
1093
  copied: "Kopiert!",
870
1094
  deleteConfirmation: "Sind Sie sicher, dass Sie diesen Datensatz löschen möchten?",
@@ -873,7 +1097,6 @@ const de = {
873
1097
  viewAll: "Alle anzeigen",
874
1098
  new: "Neu",
875
1099
  add: "Hinzufügen",
876
- emptyValue: "—",
877
1100
  comments: "Kommentare",
878
1101
  searchComments: "Kommentare suchen…",
879
1102
  addCommentPlaceholder: "Kommentar hinzufügen… (Strg+Enter zum Senden)",
@@ -884,11 +1107,18 @@ const de = {
884
1107
  unpin: "Lösen",
885
1108
  justNow: "gerade eben",
886
1109
  minutesAgo: "vor {{count}} Min.",
1110
+ minutesAgo_one: "vor {{count}} Min.",
1111
+ minutesAgo_other: "vor {{count}} Min.",
887
1112
  hoursAgo: "vor {{count}} Std.",
1113
+ hoursAgo_one: "vor {{count}} Std.",
1114
+ hoursAgo_other: "vor {{count}} Std.",
888
1115
  daysAgo: "vor {{count}} Tg.",
1116
+ daysAgo_one: "vor {{count}} Tg.",
1117
+ daysAgo_other: "vor {{count}} Tg.",
889
1118
  dropFilesToUpload: "Dateien hierher ziehen oder klicken zum Hochladen",
890
1119
  attachmentCount: "{{count}} Anhang",
891
- attachmentCountPlural: "{{count}} Anhänge",
1120
+ attachmentCount_one: "{{count}} Anhang",
1121
+ attachmentCount_other: "{{count}} Anhänge",
892
1122
  removeAttachment: "Anhang entfernen",
893
1123
  // Record Attachments panel (enable.files, objectstack#4358)
894
1124
  attachments: "Anhänge",
@@ -897,6 +1127,7 @@ const de = {
897
1127
  noAttachments: "Noch keine Anhänge. Laden Sie eine Datei hoch, um zu beginnen.",
898
1128
  downloadAttachment: "Herunterladen",
899
1129
  deleteAttachment: "Anhang löschen",
1130
+ deleteAttachmentConfirm: "Möchten Sie den Anhang „{{name}}“ wirklich löschen?",
900
1131
  attachmentDeleteDenied: "Nur die hochladende Person oder jemand mit Bearbeitungsrecht für diesen Datensatz darf diesen Anhang löschen.",
901
1132
  attachmentParentAccessDenied: "Sie sind nicht berechtigt, Dateien an diesen Datensatz anzuhängen.",
902
1133
  attachmentDownloadDenied: "Sie sind nicht berechtigt, diesen Anhang herunterzuladen.",
@@ -906,11 +1137,6 @@ const de = {
906
1137
  attachmentsLoadFailed: "Die Anhänge dieses Datensatzes konnten nicht geladen werden.",
907
1138
  attachmentsApiUnavailable: "Die Anhangsliste ist für dieses Objekt nicht verfügbar.",
908
1139
  retryLoadAttachments: "Erneut versuchen",
909
- unifiedDiff: "Einheitliche Ansicht",
910
- sideBySideDiff: "Nebeneinander-Ansicht",
911
- noChanges: "Keine Änderungen",
912
- previousVersion: "Vorherige",
913
- currentVersion: "Aktuelle",
914
1140
  discussion: "Diskussion",
915
1141
  showDiscussion: "Diskussion anzeigen ({{count}})",
916
1142
  hideDiscussion: "Diskussion ausblenden",
@@ -925,25 +1151,35 @@ const de = {
925
1151
  writeComment: "Kommentar schreiben…",
926
1152
  subscribedTooltip: "Abonniert — Klicken zum Abbestellen",
927
1153
  unsubscribedTooltip: "Benachrichtigungen abonnieren",
928
- firstRecord: "Erster Datensatz (Pos1)",
929
- previousRecordKey: "Vorheriger Datensatz (←)",
930
- nextRecordKey: "Nächster Datensatz (→)",
931
- lastRecord: "Letzter Datensatz (Ende)",
932
1154
  noRecords: "Keine Datensätze",
933
- searchWhileNavigating: "Während der Navigation suchen",
934
- searchRecords: "Datensätze suchen…",
935
1155
  allActivity: "Alle Aktivitäten",
936
1156
  commentsOnly: "Nur Kommentare",
937
1157
  fieldChangesFilter: "Feldänderungen",
938
1158
  tasksOnly: "Nur Aufgaben",
939
1159
  leaveCommentPlaceholder: "Kommentar hinterlassen… (Strg+Enter zum Senden)",
940
1160
  noActivity: "Keine Aktivitäten aufgezeichnet",
1161
+ activityAccessDenied: "Sie haben keine Berechtigung, die Aktivitäten dieses Datensatzes anzuzeigen.",
1162
+ commentsAccessDenied: "Sie haben keine Berechtigung, die Kommentare zu diesem Datensatz anzuzeigen.",
1163
+ // objectui#7149 — the rest of `ActivityTimeline`. The four chip labels the
1164
+ // `detail.*` pack did not already name, and the `formatFieldChange`
1165
+ // sentences, which are assembled in code and so need interpolation holes.
1166
+ allFilter: 'Alle',
1167
+ createsFilter: 'Erstellungen',
1168
+ deletesFilter: 'Löschungen',
1169
+ statusChangesFilter: 'Statusänderungen',
1170
+ activityEmptyValue: '(leer)',
1171
+ activityFieldChanged: '{{field}} von „{{old}}“ zu „{{new}}“ geändert',
1172
+ activityCreated: 'Diesen Datensatz erstellt',
1173
+ activityDeleted: 'Diesen Datensatz gelöscht',
1174
+ activityStatusChanged: 'Status zu „{{value}}“ geändert',
1175
+ activityUpdated: 'Datensatz aktualisiert',
941
1176
  loadMore: "Mehr laden",
942
1177
  edited: "(bearbeitet)",
943
1178
  via: "über {{source}}",
944
1179
  viewSource: "Quelle anzeigen",
945
1180
  replyCount: "{{count}} Antwort",
946
- replyCountPlural: "{{count}} Antworten",
1181
+ replyCount_one: "{{count}} Antwort",
1182
+ replyCount_other: "{{count}} Antworten",
947
1183
  replyPlaceholder: "Antworten…",
948
1184
  filterActivity: "Aktivität filtern",
949
1185
  openDiscussion: "Diskussionspanel öffnen",
@@ -955,9 +1191,12 @@ const de = {
955
1191
  lockedByApproval: "Zur Genehmigung gesperrt",
956
1192
  lockedTooltip: "Dieser Datensatz hat eine ausstehende Genehmigungsanfrage; die Bearbeitung ist gesperrt",
957
1193
  writeStrippedTitle: "Gespeichert — einige Felder wurden jedoch nicht übernommen",
1194
+ writeWarningsTitle: "Gespeichert — mit Warnungen",
958
1195
  writeStrippedReadonly: "Schreibgeschützt und daher nicht übernommen: {{fields}}",
959
1196
  writeStrippedByState: "Im aktuellen Status dieses Datensatzes nicht bearbeitbar und daher nicht übernommen: {{fields}}",
960
1197
  writeStrippedPrimaryKey: "Die Kennung des Datensatzes kann beim Speichern nicht geändert werden und wurde daher nicht übernommen: {{fields}}",
1198
+ writeStrippedComputed: "Wird vom Server per Formel berechnet, daher wurde der gesendete Wert nicht übernommen: {{fields}}",
1199
+ writeStrippedStoredExpression: "Wird aus dem Datensatz berechnet, daher wurde statt des gesendeten Werts der berechnete gespeichert: {{fields}}",
961
1200
  writeStrippedUnknownReason: "Vom Server nicht übernommen: {{fields}}",
962
1201
  approvalPendingEditable: "In Genehmigung · bearbeitbar",
963
1202
  approvalPendingTooltip: "Dieser Datensatz hat eine ausstehende Genehmigungsanfrage; dieser Schritt erlaubt weiterhin die Bearbeitung",
@@ -979,6 +1218,13 @@ const de = {
979
1218
  pathStageLostUpcoming: '{{stage}}, verloren, nicht erreicht',
980
1219
  pathStageWonUpcoming: '{{stage}}, Zielphase, nicht erreicht',
981
1220
  linkCopied: "Link in die Zwischenablage kopiert",
1221
+ commentFailed: "Ihr Kommentar wurde nicht veröffentlicht. Es wurde nichts gespeichert – bitte versuchen Sie es erneut.",
1222
+ reactionFailed: "Ihre Reaktion wurde nicht gespeichert. Bitte versuchen Sie es erneut.",
1223
+ editComment: "Kommentar bearbeiten",
1224
+ deleteComment: "Kommentar löschen",
1225
+ deleteCommentConfirm: "Möchten Sie diesen Kommentar wirklich löschen?",
1226
+ commentEditFailed: "Ihre Änderung wurde nicht gespeichert. Der Kommentar behält seinen bisherigen Text.",
1227
+ commentDeleteFailed: "Der Kommentar wurde nicht gelöscht. Bitte versuchen Sie es erneut.",
982
1228
  linkCopyFailed: "Link konnte nicht kopiert werden",
983
1229
  cancel: "Abbrechen",
984
1230
  cancelEdit: "Änderungen verwerfen",
@@ -1008,6 +1254,7 @@ const de = {
1008
1254
  sortBy: "Sortieren nach",
1009
1255
  filterPlaceholder: "Filtern…",
1010
1256
  highlightFields: "Schlüsselfelder",
1257
+ highlightsLabel: "Schlüsselfelder des Datensatzes",
1011
1258
  createdBy: "Erstellt von",
1012
1259
  updatedBy: "Aktualisiert von",
1013
1260
  created: "Erstellt",
@@ -1021,26 +1268,50 @@ const de = {
1021
1268
  copyPhone: "Telefonnummer kopieren",
1022
1269
  copyRecordId: "Datensatz-ID kopieren",
1023
1270
  showEmptyFields: "{{count}} leere Felder anzeigen",
1271
+ showEmptyFields_one: "{{count}} leeres Feld anzeigen",
1272
+ showEmptyFields_other: "{{count}} leere Felder anzeigen",
1024
1273
  hideEmptyFields: "Leere Felder ausblenden",
1025
1274
  noValue: "Kein Wert",
1275
+ unresolvedReference: "Nicht aufgelöste Referenz: {{value}} wurde keinem Benutzer zugeordnet",
1276
+ unresolvedLookupReference: "Nicht aufgelöste Referenz: {{value}} wurde auf dieser Ansicht keinem Datensatz zugeordnet",
1277
+ repeaterItemCount: "{{count}} Einträge",
1278
+ repeaterItemCount_one: "{{count}} Eintrag",
1279
+ repeaterItemCount_other: "{{count}} Einträge",
1280
+ fileCount: "{{count}} Dateien",
1281
+ fileCount_one: "{{count}} Datei",
1282
+ fileCount_other: "{{count}} Dateien",
1026
1283
  },
1027
1284
  chart: {
1028
- noData: "Keine Diagrammdaten verfügbar",
1029
1285
  loading: "Diagramm wird geladen…",
1286
+ refreshing: "Wird aktualisiert…",
1030
1287
  nullCategory: "(Ohne Angabe)",
1031
- },
1032
- map: {
1033
- searchLocations: "Orte suchen…",
1034
- locationDetails: "Standortdetails",
1035
- markersCount: "{{count}} Markierungen",
1036
- invalidCoordinates: "{{count}} Datensatz mit fehlenden oder ungültigen Koordinaten von der Karte ausgeschlossen.",
1037
- invalidCoordinatesPlural: "{{count}} Datensätze mit fehlenden oder ungültigen Koordinaten von der Karte ausgeschlossen.",
1288
+ scatterOneMeasure: "Ein Streudiagramm zeichnet genau eine Kennzahl. Behalten Sie nur eine Datenreihe:",
1289
+ unconfigured: {
1290
+ noCategoryAxis: "Kategorieachse des Diagramms erforderlich — ein objektgebundenes Diagramm erfindet keine. Deklarieren Sie eine davon:",
1291
+ },
1038
1292
  },
1039
1293
  dashboard: {
1040
- noRows: "Keine Zeilen",
1294
+ // objectui#7063 — the DEFAULT empty state every dashboard widget renders
1295
+ // when its query SUCCEEDED and returned nothing. It replaced the terse
1296
+ // per-widget `noRows` / `noDataAvailable` fragments at the render site;
1297
+ // objectui#7125 deleted those two keys from all ten packs once nothing
1298
+ // read them. The copy here has to read as a state rather than a failure,
1299
+ // which is why it says the widget loaded. `sourceLabel` carries its own
1300
+ // punctuation so the call site concatenates no separator (see
1301
+ // `WidgetEmptyState`).
1302
+ empty: {
1303
+ title: "Noch keine Daten",
1304
+ message: "Dieses Widget wurde erfolgreich geladen, die Abfrage hat aber noch keine Datensätze zurückgegeben.",
1305
+ sourceLabel: "Datenquelle:",
1306
+ },
1041
1307
  loading: "Wird geladen…",
1308
+ refreshing: "Wird aktualisiert…",
1309
+ refreshAll: "Alle aktualisieren",
1310
+ refreshDashboard: "Dashboard aktualisieren",
1042
1311
  pickMeasures: "Wählen Sie Kennzahlen (Werte) für dieses Dataset-Widget.",
1043
1312
  datasetUnsupported: "Diese Datenquelle unterstützt keine Dataset-Abfragen.",
1313
+ widgetForbiddenTitle: "Kein Zugriff",
1314
+ widgetForbiddenMessage: "Sie haben keine Berechtigung, die Daten dieses Widgets anzuzeigen.",
1044
1315
  details: "Details",
1045
1316
  exportCsv: "CSV exportieren",
1046
1317
  openInList: "In Liste öffnen",
@@ -1068,12 +1339,10 @@ const de = {
1068
1339
  },
1069
1340
  },
1070
1341
  addWidget: "Widget hinzufügen",
1071
- removeWidget: "Widget entfernen",
1072
1342
  editLayout: "Layout bearbeiten",
1073
1343
  saveLayout: "Layout speichern",
1074
1344
  resetLayout: "Layout zurücksetzen",
1075
1345
  total: "Gesamt",
1076
- noDataAvailable: "Keine Daten verfügbar",
1077
1346
  noDataSourceFor: "Keine Datenquelle verfügbar für",
1078
1347
  config: {
1079
1348
  breadcrumb: {
@@ -1195,10 +1464,6 @@ const de = {
1195
1464
  appDescription: "Beschreibung",
1196
1465
  appIcon: "Symbol",
1197
1466
  template: "Vorlage",
1198
- layout: "Layout",
1199
- layoutSidebar: "Seitenleiste",
1200
- layoutHeader: "Kopfzeile",
1201
- layoutEmpty: "Leer",
1202
1467
  selectObjects: "Objekte auswählen",
1203
1468
  searchObjects: "Objekte suchen…",
1204
1469
  selectAll: "Alle auswählen",
@@ -1207,7 +1472,6 @@ const de = {
1207
1472
  addGroup: "Gruppe hinzufügen",
1208
1473
  addUrl: "URL hinzufügen",
1209
1474
  addSeparator: "Trenner hinzufügen",
1210
- noNavItems: "Noch keine Navigationselemente.",
1211
1475
  logoUrl: "Logo-URL",
1212
1476
  primaryColor: "Primärfarbe",
1213
1477
  faviconUrl: "Favicon-URL",
@@ -1234,13 +1498,12 @@ const de = {
1234
1498
  appearance: "Erscheinungsbild",
1235
1499
  rowHeight: "Zeilenhöhe",
1236
1500
  livePreview: "Echtzeit-Vorschau",
1237
- stepBasicDesc: "Name, Titel und Layout",
1501
+ stepBasicDesc: "Name, Titel und Symbol",
1238
1502
  stepObjectsDesc: "Geschäftsobjekte auswählen",
1239
1503
  stepNavigationDesc: "Navigationsbaum erstellen",
1240
1504
  stepBrandingDesc: "Logo, Farben und Favicon",
1241
1505
  noObjectsFound: "Keine Objekte gefunden.",
1242
1506
  noNavItemsHint: "Noch keine Navigationselemente. Wählen Sie Objekte im vorherigen Schritt aus oder fügen Sie manuell hinzu.",
1243
- separator: "Trennlinie",
1244
1507
  separatorLabel: "— Trennlinie —",
1245
1508
  newGroup: "Neue Gruppe",
1246
1509
  newLink: "Neuer Link",
@@ -1274,6 +1537,7 @@ const de = {
1274
1537
  navTypeSeparator: "Trenner",
1275
1538
  navTypeAction: "Aktion",
1276
1539
  navTypeComponent: "Komponente",
1540
+ navTypeDoc: "Dokument",
1277
1541
  navEditIcon: "Symbol bearbeiten",
1278
1542
  navToggleVisible: "Sichtbarkeit umschalten",
1279
1543
  navHidden: "Ausgeblendet",
@@ -1351,11 +1615,8 @@ const de = {
1351
1615
  defaultValue: "Standardwert",
1352
1616
  placeholder: "Platzhalter",
1353
1617
  referenceTo: "Verweis auf",
1354
- formula: "Formel",
1355
1618
  options: "Optionen",
1356
1619
  addOption: "Option hinzufügen",
1357
- validationRules: "Validierungsregeln",
1358
- addRule: "Regel hinzufügen",
1359
1620
  systemBadge: "System",
1360
1621
  ungrouped: "Allgemein",
1361
1622
  deleteConfirmTitle: "Feld löschen?",
@@ -1374,16 +1635,31 @@ const de = {
1374
1635
  },
1375
1636
  },
1376
1637
  console: {
1638
+ studio: {
1639
+ title: "Studio",
1640
+ accessRequired: "Sie benötigen Studio-Zugriff, um Studio zu öffnen.",
1641
+ },
1377
1642
  saveAdvisoryTitle: "Gespeichert — die Autorenprüfung ergab {{count}} Hinweis(e)",
1643
+ saveAdvisoryTitle_one: "Gespeichert — die Autorenprüfung ergab {{count}} Hinweis",
1644
+ saveAdvisoryTitle_other: "Gespeichert — die Autorenprüfung ergab {{count}} Hinweise",
1645
+ publishAdvisoryTitle: "Veröffentlicht — die Autorenprüfung ergab {{count}} Hinweis(e)",
1646
+ publishAdvisoryTitle_one: "Veröffentlicht — die Autorenprüfung ergab {{count}} Hinweis",
1647
+ publishAdvisoryTitle_other: "Veröffentlicht — die Autorenprüfung ergab {{count}} Hinweise",
1648
+ importMappingsUnavailable: "Gespeicherte Importzuordnungen für {{object}} konnten nicht geladen werden",
1649
+ 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.",
1650
+ 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.",
1651
+ savedViewsUnavailable: "Gespeicherte Ansichten für {{object}} konnten nicht geladen werden",
1652
+ 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.",
1653
+ 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.",
1378
1654
  settingsHub: {
1379
1655
  title: "Einstellungen",
1380
- subtitle: "Konfigurieren Sie Ihren Workspace, Integrationen und Feature-Flags.",
1656
+ subtitle: "Konfigurieren Sie Ihr System, Integrationen und Feature-Flags.",
1381
1657
  loadError: "Einstellungen konnten nicht geladen werden",
1382
1658
  empty: "Keine Einstellungen registriert. Plugins können Einstellungsmanifeste über den SettingsService registrieren.",
1383
1659
  settingsCount: "{{n}} Einstellungen",
1384
1660
  beta: "Beta",
1385
1661
  categories: {
1386
- Workspace: "Workspace",
1662
+ Workspace: "Allgemein",
1387
1663
  Communication: "Kommunikation",
1388
1664
  Security: "Sicherheit",
1389
1665
  Infrastructure: "Infrastruktur",
@@ -1428,13 +1704,18 @@ const de = {
1428
1704
  },
1429
1705
  usage: {
1430
1706
  title: "KI-Nutzung",
1431
- meterBuild: "Erstellen",
1432
- meterAsk: "Fragen",
1707
+ poolUsed: "{{percent}} verbraucht",
1433
1708
  statusOk: "Reichlich übrig",
1434
1709
  statusLow: "Wird knapp",
1435
1710
  statusFull: "Limit erreicht",
1436
1711
  resetsDaily: "Wird heute Nacht zurückgesetzt",
1437
1712
  resetsMonthly: "Wird im nächsten Zyklus zurückgesetzt",
1713
+ resetsWeeklyDays: "Wird in {{count}} Tagen zurückgesetzt",
1714
+ resetsWeeklyDays_one: "Wird in {{count}} Tag zurückgesetzt",
1715
+ resetsWeeklyDays_other: "Wird in {{count}} Tagen zurückgesetzt",
1716
+ resetsWeeklyHours: "Wird in {{count}} Stunden zurückgesetzt",
1717
+ resetsWeeklyHours_one: "Wird in {{count}} Stunde zurückgesetzt",
1718
+ resetsWeeklyHours_other: "Wird in {{count}} Stunden zurückgesetzt",
1438
1719
  ctaUpgrade: "Upgraden, um weiterzumachen",
1439
1720
  ctaTopUp: "Credits hinzufügen, um fortzufahren",
1440
1721
  ariaLabel: "KI-Nutzung: {{status}}",
@@ -1447,6 +1728,31 @@ const de = {
1447
1728
  share: "Teilen",
1448
1729
  shareTitle: "Diese Unterhaltung teilen",
1449
1730
  shareDisabledTitle: "Beginnen Sie zu chatten, um das Teilen zu aktivieren",
1731
+ buildDoctor: "Build-Diagnose",
1732
+ buildDoctorTitle: "Build-Diagnose — was ist tatsächlich angekommen?",
1733
+ buildDoctorDisabledTitle: "Senden Sie zuerst eine Nachricht",
1734
+ buildDoctorDrawer: {
1735
+ description: 'Was der Agent behauptet hat und was tatsächlich live ist. Schreibgeschützte Diagnose.',
1736
+ reconciling: 'Wird abgeglichen…',
1737
+ notAvailable: 'Nicht verfügbar — die Unterhaltung wurde nicht gefunden oder Sie sind nicht berechtigt.',
1738
+ untitled: '(ohne Titel)',
1739
+ summary: '{{turns}} Runde(n) · {{messages}} Nachr. · {{tokens}} Tok. · {{seconds}} s LLM',
1740
+ allLive: 'Alle {{count}} versuchten Änderung(en) sind live — nichts ist verloren gegangen.',
1741
+ discrepancies: '{{count}} Abweichung(en) — was der Chat gesagt hat, stimmt nicht mit dem überein, was live ist.',
1742
+ orphanedTitle: 'Vorgeschlagen, aber nie angewendet',
1743
+ orphanedHint: 'Eine Bestätigungskarte, die der Agent vorgeschlagen hat, die aber keine spätere Runde angewendet hat — die Änderung ist stillschweigend verloren gegangen.',
1744
+ missingTitle: 'Behauptet, aber fehlend',
1745
+ missingHint: 'Ein Tool-Ergebnis meldete die Änderung als angewendet, aber das Artefakt ist in sys_metadata nicht live.',
1746
+ toolErrorsTitle: 'Tool-Fehler',
1747
+ toolErrorsHint: 'Tool-Aufrufe, die während des Builds einen Fehler zurückgegeben haben.',
1748
+ verifyTitle: 'Build-Prüfung (verify_build)',
1749
+ yourApp: 'Ihre App:',
1750
+ noIssues: '0 Probleme',
1751
+ issueCount: '{{count}} Problem(e)',
1752
+ platformNoise: '{{count}} Plattform-sys_*-Befund(e) ausgeblendet',
1753
+ pendingActions: 'Ausstehende Aktionen',
1754
+ timeline: 'Zeitleiste ({{count}})',
1755
+ },
1450
1756
  newChat: "Neu",
1451
1757
  searchChats: "Chats durchsuchen…",
1452
1758
  noChatsYet: "Noch keine Chats",
@@ -1469,6 +1775,8 @@ const de = {
1469
1775
  liveCanvasUnlisted: "Live-App — {{app}} (nicht gelistet bis zur Veröffentlichung)",
1470
1776
  loadingAgents: "Agenten werden geladen…",
1471
1777
  askAnything: "Fragen Sie irgendetwas…",
1778
+ askOrChangeApp: "Fragen Sie zu Ihren Daten oder lassen Sie mich diese App ändern…",
1779
+ describeAppToBuild: "Beschreiben Sie die App, die Sie erstellen möchten, oder was geändert werden soll…",
1472
1780
  emptyTitle: "Unterhaltung beginnen",
1473
1781
  emptyDescription: "Fragen Sie irgendetwas — der Assistent hat Zugriff auf den Kontext Ihrer aktuellen App.",
1474
1782
  switchAssistant: "Assistenten wechseln",
@@ -1476,7 +1784,7 @@ const de = {
1476
1784
  empty: {
1477
1785
  build: {
1478
1786
  title: "Mit KI erstellen",
1479
- 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.",
1787
+ description: "Beschreiben Sie eine App in einfachen Worten — ich entwerfe die Objekte, Bildschirme und Beispieldaten, dann prüfen und veröffentlichen Sie.",
1480
1788
  },
1481
1789
  ask: {
1482
1790
  title: "Ihre Daten fragen",
@@ -1485,17 +1793,22 @@ const de = {
1485
1793
  editApp: {
1486
1794
  title: "„{{app}}“ wird bearbeitet",
1487
1795
  titleGeneric: "Diese App bearbeiten",
1488
- description: "Was möchten Sie ändern? Ich passe diese App direkt an — ein Feld, Objekt, eine Ansicht oder Automatisierung hinzufügen oder Vorhandenes anpassen.",
1796
+ 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.",
1489
1797
  },
1490
1798
  },
1491
1799
  clearConversation: "Leeren",
1492
1800
  sendHint: "zum Senden",
1801
+ newlineHint: "für eine neue Zeile",
1493
1802
  agentActivity: "Agentenaktivität",
1494
1803
  toolCompleted: "Abgeschlossen",
1495
1804
  toolRunning: "Läuft",
1496
1805
  toolAwaitingApproval: "Warten auf Freigabe",
1497
1806
  toolFailed: "Fehlgeschlagen",
1498
1807
  toolDetailsHidden: "Tool-Eingaben und Rohergebnisse sind in dieser Ansicht ausgeblendet.",
1808
+ toolDenyReason: "Im Chat vom Bediener abgelehnt",
1809
+ builderHandoffTitle: "Im Builder erstellen",
1810
+ builderHandoffOpen: "Im Builder öffnen →",
1811
+ builderHandoffSuperseded: "Eine neuere Anfrage liegt vor",
1499
1812
  copy: "Kopieren",
1500
1813
  copied: "Kopiert",
1501
1814
  regenerate: "Neu generieren",
@@ -1510,7 +1823,7 @@ const de = {
1510
1823
  publishOk: "Veröffentlicht — die Objekte sind jetzt live.",
1511
1824
  seedWarn: "Veröffentlicht, aber einige Beispieldaten konnten nicht geladen werden.",
1512
1825
  openBuiltApp: "App öffnen",
1513
- designBuiltApp: "In Studio gestalten",
1826
+ viewBuiltAppInStudio: "In Studio ansehen",
1514
1827
  previewDraft: "Vorschau",
1515
1828
  previewApp: "App-Vorschau",
1516
1829
  resizeSplit: "Chat und Vorschau anpassen",
@@ -1538,23 +1851,41 @@ const de = {
1538
1851
  recentRecords: "Liste die 5 zuletzt erstellten Datensätze auf.",
1539
1852
  recordCounts: "Zähle die Datensätze je Objekt.",
1540
1853
  },
1854
+ // cloud#1984 — these five chips are the maker's own recommendations, so
1855
+ // they may only ask for what ADR-0112 v1 BUILDS: objects, fields, views
1856
+ // (grid/kanban/calendar/gallery), pages, dashboards and sample data. No
1857
+ // wording that promises autonomous behaviour (alert / remind / notify /
1858
+ // automate / status workflow) — v1 has no flows, actions or schedules, and
1859
+ // the model silently degrades such a request into a board or a filtered
1860
+ // view, so the chip would promise an alert and deliver a page. REVERT to
1861
+ // the automation wording when ADR-0112 v2 re-adds flows and actions.
1541
1862
  metadataAssistant: {
1542
- buildCrm: "Erstelle ein Vertriebs-CRM — Kunden, Kontakte und eine Deal-Pipeline, die ich nach Phase summieren kann.",
1543
- buildApp: "Erstelle einen Projekt-Tracker — Projekte, Aufgaben mit Verantwortlichen und Fälligkeitsdaten sowie ein Board nach Status.",
1544
- buildFlow: "Entwirf einen Support-Desk — Tickets mit Priorität, einen Status-Workflow und Kundenverknüpfungen.",
1545
- buildInventory: "Erstelle eine Bestands-App — Produkte, Lagerbestände, Lieferanten und Sichtbarkeit niedriger Bestände.",
1546
- buildRecruiting: "Erstelle einen Bewerber-Tracker — Kandidaten, offene Stellen, Interviewphasen und Notizen.",
1863
+ buildCrm: "Erstelle ein Vertriebs-CRM — Kunden, Kontakte und Deals mit einem Phasenfeld sowie ein Dashboard, das den Deal-Wert je Phase summiert.",
1864
+ buildApp: "Erstelle einen Projekt-Tracker — Projekte, Aufgaben mit Verantwortlichen und Fälligkeitsdaten, ein Board nach Status und einen Kalender der Fälligkeiten.",
1865
+ buildFlow: "Entwirf einen Support-Desk — Tickets mit Prioritäts- und Statusfeld, ein Board nach Status und Verknüpfungen zu Kunden.",
1866
+ buildInventory: "Erstelle eine Bestands-App — Produkte, Lagerbestände, Lieferanten und eine Ansicht, die Artikel unter ihrem Meldebestand filtert.",
1867
+ buildRecruiting: "Erstelle einen Bewerber-Tracker — Kandidaten, offene Stellen, ein Feld für die Interviewphase und ein Board nach Phase.",
1547
1868
  },
1548
1869
  generic: {
1549
1870
  help: "Wobei kannst du mir helfen?",
1550
1871
  availableObjects: "Liste die verfügbaren Datenobjekte auf.",
1551
1872
  recentActivity: "Fasse meine letzten Aktivitäten zusammen.",
1552
1873
  },
1874
+ // objectui#7709 — the edit-mode starters, shown when the maker is bound
1875
+ // to an EXISTING app (`?package=`). Same rule as the five above: they
1876
+ // may only ask for what ADR-0112 v1 BUILDS. The fourth chip used to be
1877
+ // `addAutomation` ("an approval, a status flow, or a notification") and
1878
+ // every capability it named is refused by v1 (cloud#1956 / PR #1970), so
1879
+ // it now asks for sample data — `seed` IS on v1's whitelist, and having
1880
+ // no data is what an existing app most often lacks. REVERT: when
1881
+ // ADR-0112 v2 re-adds flows and actions, THIS chip's automation wording
1882
+ // comes back as `addAutomation`; the retired string is pinned for every
1883
+ // pack in `packages/i18n/src/__tests__/makerEditChips-v1-scope-7709.test.ts`.
1553
1884
  editApp: {
1554
1885
  addField: "Füge einem der Objekte ein Feld hinzu.",
1555
1886
  addObject: "Füge ein neues Objekt hinzu und verknüpfe es mit einem bestehenden.",
1556
1887
  addDashboard: "Füge ein Dashboard für die wichtigsten Kennzahlen hinzu.",
1557
- addAutomation: "Füge eine Automatisierung hinzu — eine Freigabe, einen Statusablauf oder eine Benachrichtigung.",
1888
+ addSampleData: "Fülle die vorhandenen Objekte mit realistischen Beispieldatensätzen, damit ich die App vorführen kann.",
1558
1889
  },
1559
1890
  },
1560
1891
  changesTitle: "Änderungen bestätigen",
@@ -1619,6 +1950,7 @@ const de = {
1619
1950
  collapse: "Chat einklappen",
1620
1951
  maximize: "Als ganze Seite öffnen",
1621
1952
  open: "Assistent öffnen",
1953
+ planAwaitingApproval: "Ein vorgeschlagener Plan wartet auf Ihre Freigabe",
1622
1954
  },
1623
1955
  group: {
1624
1956
  today: "Heute",
@@ -1629,13 +1961,17 @@ const de = {
1629
1961
  },
1630
1962
  },
1631
1963
  title: "ObjectStack Konsole",
1632
- initializing: "Anwendung wird initialisiert…",
1633
- loadingHint: "Die Einrichtung einer neuen Umgebung kann einen Moment dauern.",
1964
+ initializing: "Ihre Konsole wird geöffnet…",
1965
+ skipToContent: "Zum Inhalt springen",
1634
1966
  breadcrumb: {
1635
- dashboards: "Dashboards",
1636
- pages: "Seiten",
1637
- reports: "Berichte",
1638
1967
  system: "System",
1968
+ marketplace: "Marktplatz",
1969
+ settings: 'Einstellungen',
1970
+ apps: 'Apps',
1971
+ profile: 'Profil',
1972
+ approvals: 'Genehmigungen',
1973
+ aiApprovals: 'KI-Genehmigungen',
1974
+ auditLog: 'Audit-Protokoll',
1639
1975
  },
1640
1976
  // objectui#4024 — the single-namespace settings screen. Its sibling
1641
1977
  // `settingsHub` above already resolved through this pack; the view was the
@@ -1656,16 +1992,30 @@ const de = {
1656
1992
  unsavedCount: "{{count}} nicht gespeicherte Änderungen",
1657
1993
  unsavedCount_one: "{{count}} nicht gespeicherte Änderung",
1658
1994
  unsavedCount_other: "{{count}} nicht gespeicherte Änderungen",
1995
+ fieldErrorsToast: "{{count}} Einstellungen müssen überprüft werden: {{settings}}",
1996
+ fieldErrorsToast_one: "{{count}} Einstellung muss überprüft werden: {{settings}}",
1997
+ fieldErrorsToast_other: "{{count}} Einstellungen müssen überprüft werden: {{settings}}",
1659
1998
  cryptoRefusalTitle: "Diese Installation kann keine Geheimnisse verschlüsseln",
1660
1999
  cryptoRefusalSubjectSuffix: "ist als verschlüsselt deklariert, daher wurde nichts geschrieben.",
1661
2000
  cryptoRefusalNoSubject: "Der als verschlüsselt deklarierte Wert wurde abgelehnt, daher wurde nichts geschrieben.",
1662
2001
  cryptoRefusalToast: "Geheimnisse können nicht verschlüsselt werden: {{subject}}",
1663
2002
  cryptoRefusalToastNoSubject: "Geheimnisse können nicht verschlüsselt werden",
1664
- },
1665
- loadingSteps: {
1666
- connecting: "Verbindung zur Datenquelle herstellen",
1667
- loadingConfig: "Konfiguration laden",
1668
- preparingWorkspace: "Arbeitsbereich vorbereiten",
2003
+ sourceBadgeInherited: "Geerbt von {{source}}",
2004
+ sourceBadgeOverrides: "Überschreibt {{source}}",
2005
+ resetToDefault: "Auf Standard zurücksetzen",
2006
+ envLockBadge: "Per Umgebung gesperrt",
2007
+ envLockBadgeTitle: "Durch eine Umgebungsvariable festgelegt — kann nicht in der Oberfläche bearbeitet werden.",
2008
+ deprecatedBadge: "Veraltet",
2009
+ deprecatedBadgeReplacedBy: "Veraltet → {{replacedBy}}",
2010
+ unsupportedSpecifierType: "Nicht unterstützter Einstellungstyp: {{type}}",
2011
+ },
2012
+ workspaceTimezonePrompt: {
2013
+ title: "Zeitzone des Systems festlegen",
2014
+ description: "Dieses System verwendet noch die Standardzeitzone der Plattform, {{current}}. Die Zeitzone des Systems bestimmt, welcher Tag in Formeln als heute gilt, wie Berichte nach Datum gruppieren und wie Datum und Uhrzeit angezeigt werden – für alle im System. Unten ist die Zeitzone Ihres Browsers eingetragen.",
2015
+ laterHint: "Sie können sie jederzeit in den Einstellungen ändern.",
2016
+ decline: "Standard beibehalten",
2017
+ confirm: "Zeitzone festlegen",
2018
+ saved: "Zeitzone des Systems auf {{zone}} festgelegt",
1669
2019
  },
1670
2020
  error: {
1671
2021
  connectionFailed: "Verbindung zum Server nicht möglich",
@@ -1690,27 +2040,28 @@ const de = {
1690
2040
  groups: {
1691
2041
  general: "Allgemein",
1692
2042
  navigation: "Navigation",
1693
- dataViews: "Datenansichten",
1694
2043
  aiChat: "KI-Assistent",
1695
- preferences: "Einstellungen",
1696
2044
  },
1697
2045
  openCommandPalette: "Befehlspalette öffnen",
1698
2046
  showShortcuts: "Tastenkürzel anzeigen",
1699
2047
  closeDialog: "Dialog / Panel schließen",
1700
2048
  toggleSidebar: "Seitenleiste umschalten",
1701
- focusSearch: "Suche fokussieren",
1702
- createRecord: "Neuen Datensatz erstellen",
1703
- refreshData: "Daten aktualisieren",
1704
- editRecord: "Ausgewählten Datensatz bearbeiten",
1705
2049
  newChat: "Neuer Chat",
1706
2050
  toggleChatsList: "Chatliste umschalten",
1707
- toggleDarkMode: "Dunkelmodus umschalten",
2051
+ goHome: "Zurück zur Startseite",
2052
+ },
2053
+ reportIndex: {
2054
+ title: "Berichte",
2055
+ emptyTitle: "Keine Berichte",
2056
+ emptyDescription: "Diese App hat keine Berichte, die Sie öffnen können.",
1708
2057
  },
1709
2058
  commandPalette: {
1710
2059
  title: "Befehlspalette",
1711
2060
  placeholder: "Befehl eingeben oder suchen…",
1712
2061
  noResults: "Keine Ergebnisse gefunden.",
1713
2062
  objects: "Objekte",
2063
+ packages: "Pakete",
2064
+ flows: "Flows",
1714
2065
  dashboards: "Dashboards",
1715
2066
  pages: "Seiten",
1716
2067
  reports: "Berichte",
@@ -1727,6 +2078,21 @@ const de = {
1727
2078
  records: "Datensätze",
1728
2079
  recentRecords: "Zuletzt angesehen",
1729
2080
  },
2081
+ // objectui#9954 — see the `en` pack for what raises each case.
2082
+ readRate: {
2083
+ ratioTitle: 'Ungewöhnliches Lesevolumen in diesem System',
2084
+ 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.',
2085
+ noWritesTitle: 'Lesevorgänge ganz ohne Schreibvorgänge in diesem System',
2086
+ 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.',
2087
+ },
2088
+ // objectui#10439 — see the `en` pack for what raises each case.
2089
+ storageUsage: {
2090
+ warningTitle: 'Der Speicher ist fast voll',
2091
+ warning: '{{used}} MB von {{limit}} MB belegt. Uploads und Importe werden pausiert, sobald der Speicher voll ist.',
2092
+ blockedTitle: 'Speicher voll: Uploads und Importe sind pausiert',
2093
+ blocked: '{{used}} MB von {{limit}} MB belegt. Vorhandene Daten bleiben unverändert; Lesen, Exportieren und das Bearbeiten einzelner Datensätze funktionieren weiterhin.',
2094
+ upgrade: 'Upgraden, um fortzufahren',
2095
+ },
1730
2096
  errors: {
1731
2097
  somethingWentWrong: "Etwas ist schiefgelaufen",
1732
2098
  unexpectedError: "Beim Rendern dieser Ansicht ist ein unerwarteter Fehler aufgetreten.",
@@ -1757,22 +2123,26 @@ const de = {
1757
2123
  viewNameInvalid: "Verwenden Sie Kleinbuchstaben, Ziffern und Unterstriche; beginnen Sie mit einem Buchstaben oder Unterstrich.",
1758
2124
  systemViewReadonly: "Systemansicht — im Code definiert, schreibgeschützt.",
1759
2125
  cannotEditMetaView: "Diese Ansicht ist integriert und im Code definiert – sie kann nicht geändert werden.",
2126
+ resetView: "Ansicht zurücksetzen",
2127
+ resetViewTitle: "Sortierung, Filter und Spaltenbreiten dieser Ansicht auf ihre eigenen Einstellungen zurücksetzen. Nur Ihre Einstellungen ändern sich.",
1760
2128
  cannotDeleteMetaView: "Diese Ansicht ist integriert und im Code definiert – sie kann nicht gelöscht werden.",
1761
2129
  expandToPage: "Als ganze Seite öffnen",
1762
2130
  objectNotFound: "Objekt nicht gefunden",
1763
2131
  objectNotFoundDescription: "Das Objekt „{{objectName}}“ existiert in der aktuellen Konfiguration nicht.",
1764
2132
  objectNotFoundHint: "Überprüfen Sie Ihre App-Navigationseinstellungen oder wählen Sie ein anderes Objekt aus der Seitenleiste.",
2133
+ objectPackageDisabled: "Das Objekt „{{objectName}}“ gehört zu einem deaktivierten Paket und wird daher nicht bereitgestellt.",
1765
2134
  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.",
1766
2135
  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.",
1767
2136
  allRecords: "Alle Datensätze",
1768
2137
  new: "Neu",
1769
2138
  configureView: "Ansicht konfigurieren",
1770
- toolbar: "Symbolleiste",
1771
2139
  toolbarEnabledCount: "{{count}} von {{total}} aktiviert",
1772
2140
  searchFields: "Felder suchen…",
1773
2141
  title: "Titel",
1774
2142
  viewType: "Ansichtstyp",
1775
2143
  recordCount: "{{count}} Datensätze",
2144
+ recordCount_one: "{{count}} Datensatz",
2145
+ recordCount_other: "{{count}} Datensätze",
1776
2146
  save: "Speichern",
1777
2147
  discard: "Verwerfen",
1778
2148
  createView: "Ansicht erstellen",
@@ -1784,11 +2154,12 @@ const de = {
1784
2154
  longitudeField: "Längengradfeld",
1785
2155
  imageField: "Bildfeld",
1786
2156
  selectField: "Feld auswählen…",
1787
- groupBy: "Gruppieren nach",
1788
2157
  endDateField: "Enddatumsfeld",
1789
2158
  import: "Importieren",
1790
2159
  importTitle: "Aus CSV importieren",
1791
2160
  importedToast: "{{count}} Zeile(n) importiert.",
2161
+ importedToast_one: "{{count}} Zeile importiert.",
2162
+ importedToast_other: "{{count}} Zeilen importiert.",
1792
2163
  importedWithSkipped: "{{ok}} Zeile(n) importiert; {{skipped}} übersprungen.",
1793
2164
  createViewDesc: "Wählen Sie einen Ansichtstyp und geben Sie ihm einen Namen. Alle Einstellungen können danach geändert werden.",
1794
2165
  cancel: "Abbrechen",
@@ -1797,6 +2168,8 @@ const de = {
1797
2168
  deleteViewTitle: "Ansicht löschen",
1798
2169
  deleteViewConfirm: "Möchten Sie die Ansicht „{{name}}“ wirklich löschen? Dies kann nicht rückgängig gemacht werden.",
1799
2170
  bulkDeleteConfirm: "{{count}} ausgewählte Datensätze löschen? Dies kann nicht rückgängig gemacht werden.",
2171
+ bulkDeleteConfirm_one: "{{count}} ausgewählten Datensatz löschen? Dies kann nicht rückgängig gemacht werden.",
2172
+ bulkDeleteConfirm_other: "{{count}} ausgewählte Datensätze löschen? Dies kann nicht rückgängig gemacht werden.",
1800
2173
  duplicateViewName: "Eine Ansicht mit diesem Namen existiert bereits.",
1801
2174
  viewTypeGrid: "Raster",
1802
2175
  viewTypeGridDesc: "Tabellenkalkulationsartige Tabelle von Datensätzen.",
@@ -1833,14 +2206,22 @@ const de = {
1833
2206
  chartTypePie: "Kreisdiagramm",
1834
2207
  chartTypeArea: "Flächendiagramm",
1835
2208
  chartTypeScatter: "Streudiagramm",
1836
- xAxisField: "X-Achse-Feld",
1837
- xAxisFieldHelp: "Die kategoriale oder zeitliche Dimension.",
1838
- yAxisField: "Y-Achse-Feld",
1839
- yAxisFieldHelp: "Das numerische Feld zur Aggregation.",
2209
+ dataset: "Datensatz",
2210
+ datasetHelp: "Das Diagramm liest seine Werte aus diesem Datensatz des Objekts.",
2211
+ chartMeasure: "Kennzahl",
2212
+ chartMeasureHelp: "Die Kennzahl des Datensatzes auf der Werteachse.",
2213
+ chartDimension: "Dimension",
2214
+ chartDimensionHelp: "Die Dimension des Datensatzes, nach der die Werte gruppiert werden (optional).",
2215
+ viewTypeUnavailableDataset: "Dieses Objekt stellt keinen Datensatz für Diagramme bereit.",
2216
+ noDatasetMeasure: "Dieser Datensatz deklariert keine Kennzahl für ein Diagramm.",
1840
2217
  ufTabs: "Registerkarten",
1841
2218
  ufAddField: "+ Filterfeld hinzufügen…",
1842
2219
  ufShowAllRecords: "Registerkarte „Alle Datensätze“ anzeigen",
1843
2220
  },
2221
+ runtimeDraft: {
2222
+ publishFailed: "Veröffentlichen fehlgeschlagen",
2223
+ discardFailed: "Verwerfen fehlgeschlagen",
2224
+ },
1844
2225
  localeSwitcher: {
1845
2226
  label: "Sprache",
1846
2227
  },
@@ -1848,14 +2229,22 @@ const de = {
1848
2229
  nav: {
1849
2230
  pinItem: "{{name}} anheften",
1850
2231
  unpinItem: "{{name}} loslösen",
1851
- dragToReorder: "Zum Neuanordnen ziehen",
1852
2232
  favorites: "Favoriten",
2233
+ launcherLabel: "App-Launcher",
2234
+ menuLabel: "App-Navigation",
2235
+ menuEmpty: "Diese App hat keine Navigationseinträge, die Sie öffnen können.",
2236
+ itemMenu: "Weitere Aktionen für {{name}}",
2237
+ openInNewTab: "In neuem Tab öffnen",
2238
+ copyLink: "Link kopieren",
2239
+ linkCopied: "Link in die Zwischenablage kopiert",
2240
+ linkCopyFailed: "Link konnte nicht kopiert werden",
2241
+ design: "Gestalten",
1853
2242
  },
1854
2243
  },
1855
2244
  auth: {
1856
2245
  setPassword: {
1857
2246
  title: "Wiederherstellungspasswort festlegen",
1858
- description: "Sie haben sich über Single Sign-on angemeldet. Legen Sie ein lokales Passwort fest, damit Sie sich weiterhin direkt an dieser Umgebung anmelden können, falls SSO einmal nicht verfügbar ist.",
2247
+ description: "Sie haben sich über Single Sign-on angemeldet. Legen Sie ein lokales Passwort fest, damit Sie sich weiterhin direkt anmelden können, falls SSO einmal nicht verfügbar ist.",
1859
2248
  email: "E-Mail",
1860
2249
  newPassword: "Neues Passwort",
1861
2250
  confirmPassword: "Passwort bestätigen",
@@ -1871,9 +2260,8 @@ const de = {
1871
2260
  signingIn: "Sie werden angemeldet…",
1872
2261
  ssoHandoff: "Weiter zu {{target}}",
1873
2262
  devAdminHint: {
1874
- title: "Entwicklungsinstanz",
1875
- body: "Melden Sie sich mit dem vorkonfigurierten Entwickler-Admin an:",
1876
- dismiss: "Ausblenden",
2263
+ title: "Lokale Entwicklungsinstanz",
2264
+ signIn: "Als Entwickler-Admin anmelden",
1877
2265
  },
1878
2266
  title: "In Ihr Konto einloggen",
1879
2267
  description: "Geben Sie Ihre E-Mail-Adresse und Ihr Passwort ein, um fortzufahren",
@@ -1903,6 +2291,22 @@ const de = {
1903
2291
  resendOtpCountdownText: "Erneut senden in {seconds} s",
1904
2292
  usePhoneOtpText: "Mit Bestätigungscode anmelden",
1905
2293
  usePasswordSignInText: "Stattdessen mit Passwort anmelden",
2294
+ socialButton: "Weiter mit {provider}",
2295
+ orText: "oder mit E-Mail fortfahren",
2296
+ ssoButton: "Mit SSO anmelden",
2297
+ ssoOnlyDescription: "Melden Sie sich über das Single Sign-on Ihrer Organisation an",
2298
+ usePasswordText: "Stattdessen ein Passwort verwenden",
2299
+ backToSsoText: "Zurück zum Single Sign-on",
2300
+ // objectui#12600 — the console login card's own header, the password
2301
+ // field's reveal toggle, and the footer's legal links.
2302
+ welcomeTitle: "Willkommen zurück",
2303
+ welcomeDescription: "Melden Sie sich an, um weiterzuarbeiten",
2304
+ showPasswordText: "Passwort anzeigen",
2305
+ hidePasswordText: "Passwort verbergen",
2306
+ footer: {
2307
+ privacy: "Datenschutz",
2308
+ terms: "Nutzungsbedingungen",
2309
+ },
1906
2310
  },
1907
2311
  register: {
1908
2312
  title: "Konto erstellen",
@@ -1921,8 +2325,12 @@ const de = {
1921
2325
  submittingButton: "Konto wird erstellt…",
1922
2326
  hasAccountText: "Bereits ein Konto?",
1923
2327
  signInText: "Anmelden",
2328
+ socialButton: "Mit {provider} registrieren",
2329
+ orText: "oder mit E-Mail fortfahren",
1924
2330
  errors: {
1925
2331
  userExists: "Ein Konto mit dieser E-Mail existiert bereits. Versuchen Sie sich anzumelden.",
2332
+ selfRegistrationClosed: "Die Selbstregistrierung ist in diesem System nicht möglich. Bitten Sie einen Administrator um eine Einladung.",
2333
+ 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.",
1926
2334
  },
1927
2335
  verifyInbox: {
1928
2336
  title: "Überprüfen Sie Ihren Posteingang",
@@ -1998,7 +2406,7 @@ const de = {
1998
2406
  checkSpam: "E-Mail nicht erhalten? Überprüfen Sie Ihren Spam-Ordner oder kontaktieren Sie den Support.",
1999
2407
  or: "Oder",
2000
2408
  // objectui#3546 slice three.
2001
- resendUnavailable: "Für diese Umgebung ist möglicherweise kein E-Mail-Versand konfiguriert. Kontaktieren Sie den Support, wenn das Problem bestehen bleibt.",
2409
+ resendUnavailable: "Für dieses System ist möglicherweise kein E-Mail-Versand konfiguriert. Kontaktieren Sie den Support, wenn das Problem bestehen bleibt.",
2002
2410
  },
2003
2411
  setup: {
2004
2412
  welcomeTitle: "Willkommen bei ObjectStack",
@@ -2022,27 +2430,27 @@ const de = {
2022
2430
  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.",
2023
2431
  loggedInAs: "Angemeldet als {{email}}",
2024
2432
  approve: "Gerät genehmigen",
2025
- approving: "Genehmige…",
2433
+ approving: "Wird genehmigt…",
2026
2434
  approvedTitle: "Gerät autorisiert",
2027
2435
  approvedDescription: "Sie können zum Gerät zurückkehren — es sollte sich in Kürze anmelden.",
2028
2436
  approveSuccess: "Gerät autorisiert",
2029
2437
  approveSuccessDescription: "Sie können dieses Fenster schließen.",
2030
2438
  approveFailed: "Genehmigung fehlgeschlagen",
2031
2439
  deny: "Anfrage ablehnen",
2032
- denying: "Ablehne…",
2440
+ denying: "Wird abgelehnt…",
2033
2441
  deniedTitle: "Zugriff verweigert",
2034
2442
  deniedDescription: "Dem Gerät wird kein Zugriff gewährt.",
2035
2443
  denyFailed: "Anfrage konnte nicht abgelehnt werden",
2036
2444
  invalidTitle: "Ungültiger Gerätelink",
2037
2445
  invalidDescription: "In der URL wurde kein Gerätecode angegeben.",
2038
- loading: "Lade…",
2446
+ loading: "Wird geladen…",
2039
2447
  cancel: "Abbrechen",
2040
2448
  // objectui#3546 slice three — device-authorization plugin switched off.
2041
2449
  disabledTitle: "Geräteautorisierung nicht aktiviert",
2042
2450
  disabledDescription: "Für diese Bereitstellung ist die Geräteautorisierung nicht aktiviert, daher kann dieses Gerät hier nicht genehmigt werden.",
2043
2451
  },
2044
2452
  shell: {
2045
- tenantHostHint: "Sie melden sich bei diesem Arbeitsbereich an",
2453
+ tenantHostHint: "Sie melden sich bei diesem System an",
2046
2454
  },
2047
2455
  layout: {
2048
2456
  headline: "Leistungsstarke Geschäftsanwendungen schneller entwickeln.",
@@ -2052,6 +2460,7 @@ const de = {
2052
2460
  signOut: "Stattdessen abmelden",
2053
2461
  password: {
2054
2462
  title: "Ihr Passwort ist abgelaufen",
2463
+ resetTitle: "Sie müssen Ihr Passwort ändern",
2055
2464
  fallbackMessage: "Bitte legen Sie ein neues Passwort fest, um fortzufahren.",
2056
2465
  current: "Aktuelles Passwort",
2057
2466
  next: "Neues Passwort",
@@ -2077,6 +2486,11 @@ const de = {
2077
2486
  verifying: "Wird überprüft…",
2078
2487
  invalidCode: "Ungültiger Code. Bitte erneut versuchen.",
2079
2488
  },
2489
+ impersonation: {
2490
+ passwordTitle: "{{user}} muss das Passwort ändern",
2491
+ mfaTitle: "{{user}} muss die Zwei-Faktor-Authentifizierung einrichten",
2492
+ body: "Sie handeln als {{user}}, und nur diese Person kann das selbst erledigen. Beenden Sie den Identitätswechsel, um zu Ihrem eigenen Konto zurückzukehren.",
2493
+ },
2080
2494
  },
2081
2495
  },
2082
2496
  // objectui#3546 slice three — the /oauth/consent screen.
@@ -2085,12 +2499,17 @@ const de = {
2085
2499
  title: "{{appName}} möchte auf Ihr Konto zugreifen",
2086
2500
  request: "{{appName}} fordert eine Berechtigung an{{suffix}}.",
2087
2501
  unknownApp: "eine Anwendung",
2502
+ unidentified: "Diese Anwendung konnte nicht identifiziert werden.",
2503
+ clientId: "Client-ID",
2088
2504
  willAllow: "Diese App kann dann:",
2089
2505
  scope: {
2090
2506
  openid: "Ihre Identität bestätigen",
2091
2507
  profile: "Ihr Basisprofil lesen (Name, Bild)",
2092
2508
  email: "Ihre E-Mail-Adresse lesen",
2093
2509
  offlineAccess: "Angemeldet bleiben (Zugriff erneuern)",
2510
+ dataRead: "Datensätze lesen (im Rahmen Ihrer eigenen Berechtigungen)",
2511
+ dataWrite: "Datensätze erstellen, ändern und löschen (im Rahmen Ihrer eigenen Berechtigungen)",
2512
+ actionsExecute: "Aktionen in Ihrem Namen ausführen (im Rahmen Ihrer eigenen Berechtigungen)",
2094
2513
  },
2095
2514
  deny: "Ablehnen",
2096
2515
  authorize: "Autorisieren",
@@ -2121,11 +2540,20 @@ const de = {
2121
2540
  role: "Rolle",
2122
2541
  save: "Änderungen speichern",
2123
2542
  },
2543
+ language: {
2544
+ title: "Sprache",
2545
+ description: "Die Sprache für Benachrichtigungen und Nachrichten, die an Sie gesendet werden. Die Oberflächensprache wird separat über das Globus-Menü gewählt.",
2546
+ label: "Bevorzugte Sprache",
2547
+ systemDefault: "Standard der Bereitstellung verwenden",
2548
+ save: "Speichern",
2549
+ saved: "Spracheinstellung aktualisiert.",
2550
+ readOnly: "Die Sprache Ihres Kontos wird von Ihrer Administration verwaltet.",
2551
+ },
2124
2552
  password: {
2125
2553
  changeTitle: "Passwort ändern",
2126
2554
  setTitle: "Lokales Passwort festlegen",
2127
- changeDescription: "Aktualisieren Sie das Passwort, mit dem Sie sich in dieser Umgebung anmelden.",
2128
- setDescription: "Sie haben sich per Single Sign-On angemeldet. Legen Sie ein lokales Passwort fest, um sich in dieser Umgebung auch mit E-Mail und Passwort anmelden zu können.",
2555
+ changeDescription: "Aktualisieren Sie das Passwort, mit dem Sie sich anmelden.",
2556
+ setDescription: "Sie haben sich per Single Sign-On angemeldet. Legen Sie ein lokales Passwort fest, um sich auch mit E-Mail und Passwort anmelden zu können.",
2129
2557
  current: "Aktuelles Passwort",
2130
2558
  new: "Neues Passwort",
2131
2559
  password: "Passwort",
@@ -2134,7 +2562,7 @@ const de = {
2134
2562
  mismatch: "Die Passwörter stimmen nicht überein",
2135
2563
  enterCurrent: "Geben Sie Ihr aktuelles Passwort ein",
2136
2564
  changed: "Passwort geändert.",
2137
- localSet: "Lokales Passwort festgelegt. Sie können sich in dieser Umgebung jetzt auch mit E-Mail und Passwort anmelden.",
2565
+ localSet: "Lokales Passwort festgelegt. Sie können sich jetzt auch mit E-Mail und Passwort anmelden.",
2138
2566
  changeAction: "Passwort ändern",
2139
2567
  setAction: "Passwort festlegen",
2140
2568
  },
@@ -2149,22 +2577,21 @@ const de = {
2149
2577
  unknown: "Ein unerwarteter Fehler ist aufgetreten.",
2150
2578
  },
2151
2579
  workspace: {
2152
- label: "Arbeitsbereiche",
2153
- default: "Mein Arbeitsbereich",
2154
- switch: "Arbeitsbereich wechseln",
2155
- create: "Arbeitsbereich erstellen",
2156
- createTitle: "Arbeitsbereich erstellen",
2157
- createDescription: "Ein Arbeitsbereich ist ein gemeinsamer Raum für Ihr Team zur Zusammenarbeit.",
2158
- createButton: "Arbeitsbereich erstellen",
2159
- nameLabel: "Name des Arbeitsbereichs",
2580
+ label: "Organisationen",
2581
+ default: "Meine Organisation",
2582
+ switch: "Organisation wechseln",
2583
+ createTitle: "Organisation erstellen",
2584
+ createDescription: "Eine Organisation ist ein gemeinsamer Raum für Ihr Team zur Zusammenarbeit.",
2585
+ createButton: "Organisation erstellen",
2586
+ nameLabel: "Name der Organisation",
2160
2587
  namePlaceholder: "z.B. Acme Inc",
2161
2588
  slugLabel: "URL-Slug",
2162
2589
  slugHint: "In URLs verwendet. Nur Kleinbuchstaben, Zahlen und Bindestriche.",
2163
2590
  invite: "Mitglied einladen",
2164
2591
  members: "Mitglieder",
2165
- settings: "Arbeitsbereichseinstellungen",
2592
+ settings: "Organisationseinstellungen",
2166
2593
  multiOrgDisabled: "Das Erstellen neuer Organisationen ist auf dieser Instanz deaktiviert.",
2167
- createFailed: 'Arbeitsbereich konnte nicht erstellt werden',
2594
+ createFailed: 'Organisation konnte nicht erstellt werden',
2168
2595
  },
2169
2596
  help: {
2170
2597
  onThisPage: "Auf dieser Seite",
@@ -2172,12 +2599,17 @@ const de = {
2172
2599
  appDocs: 'Dokumentation dieser App',
2173
2600
  allDocs: 'Gesamte Dokumentation',
2174
2601
  onlineDocs: 'Online-Dokumentation',
2602
+ loadingDocumentation: 'Dokumentation wird geladen',
2603
+ about: 'Über',
2604
+ aboutTitle: 'Über diese Konsole',
2605
+ aboutDescription: 'Der Build, aus dem diese Konsole kompiliert wurde.',
2606
+ aboutBuild: 'Konsolen-Build',
2607
+ aboutBuildUnknown: 'Unbekannter Build (beim Erstellen dieser Konsole wurde keine Version gesetzt)',
2175
2608
  },
2176
2609
  sidebar: {
2177
2610
  packageManagement: "Paketverwaltung",
2178
2611
  searchNavigation: "Navigation durchsuchen…",
2179
2612
  settings: "Einstellungen",
2180
- help: "Hilfe",
2181
2613
  helpTooltip: "Hilfe und Dokumentation",
2182
2614
  activityFeed: "Aktivitätsfeed",
2183
2615
  notifications: "Benachrichtigungen",
@@ -2187,18 +2619,16 @@ const de = {
2187
2619
  area: "Bereich",
2188
2620
  scope: "Bereich",
2189
2621
  recent: "Zuletzt",
2190
- favorites: "Favoriten",
2191
2622
  starred: "Markiert",
2192
2623
  removeFromFavorites: "{{name}} aus Favoriten entfernen",
2624
+ allReports: "Alle Berichte",
2193
2625
  },
2194
2626
  topbar: {
2195
2627
  openAssistant: "Assistent {{name}} öffnen",
2196
2628
  offline: "Offline",
2197
2629
  usersOnline: "Aktuell online befindliche Benutzer",
2198
2630
  switchView: "Ansicht wechseln",
2199
- switchObject: "Objekt wechseln",
2200
2631
  connection: {
2201
- connected: "Verbunden",
2202
2632
  connecting: "Verbindung wird hergestellt…",
2203
2633
  reconnecting: "Verbindung wird wiederhergestellt…",
2204
2634
  disconnected: "Getrennt",
@@ -2211,23 +2641,22 @@ const de = {
2211
2641
  },
2212
2642
  aiAssistant: "KI-Assistent",
2213
2643
  designInStudio: "Im Studio gestalten",
2644
+ editApp: "App bearbeiten",
2214
2645
  },
2215
2646
  home: {
2216
2647
  build: {
2217
2648
  title: "App erstellen",
2218
- subtitle: "Von Grund auf beginnen — Objekte, Formulare, Automatisierungen und Oberflächen gestalten.",
2219
- noCapability: "Das Erstellen von Apps ist in diesem Arbeitsbereich nicht verfügbar — es erfordert die Berechtigung „Metadaten verwalten“, die Ihr Konto nicht besitzt.",
2649
+ noCapability: "Das Erstellen von Apps ist in diesem System nicht verfügbar — es erfordert die Berechtigung „Metadaten verwalten“, die Ihr Konto nicht besitzt.",
2220
2650
  },
2221
2651
  template: {
2222
2652
  title: "Mit einer Vorlage starten",
2223
- subtitle: "Installieren Sie eine Vorlagen-App aus dem Marktplatz und passen Sie sie an.",
2224
2653
  marketplaceDisabled: "Für diese Laufzeitumgebung ist kein App-Marktplatz konfiguriert, daher gibt es hier keine Vorlagen zum Installieren.",
2225
2654
  },
2226
2655
  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.",
2227
2656
  welcomeAdminDescriptionNoBuild: "Richten Sie Ihre erste Anwendung über das Verwaltungsmenü links ein. Sobald Daten vorhanden sind, kann der KI-Assistent bei der Auswertung helfen.",
2228
2657
  welcomeAdminDescriptionNoAi: "Richten Sie Ihre erste Anwendung über das Verwaltungsmenü links ein.",
2229
2658
  noAppsTitle: "Noch keine Anwendungen",
2230
- noAppsDescription: "Ihr Workspace wird eingerichtet — Apps, die Ihr Administrator für Sie freigibt, erscheinen hier.",
2659
+ noAppsDescription: "Das System wird eingerichtet — Apps, die Ihr Administrator für Sie freigibt, erscheinen hier.",
2231
2660
  buildWithAI: "Mit KI erstellen",
2232
2661
  askAI: "KI fragen",
2233
2662
  recoveryReminder: {
@@ -2236,14 +2665,22 @@ const de = {
2236
2665
  dismiss: "Ausblenden",
2237
2666
  },
2238
2667
  pendingDrafts: {
2239
- message: "Sie haben {{count}} unveröffentlichte Änderung(en) — veröffentlichen Sie sie, um sie live zu schalten.",
2668
+ // objectui#12602 — the drafts row in Home's "My work" section: the
2669
+ // count, then the first draft names joined by `nameSeparator`, in
2670
+ // their package when they share one.
2671
+ title: "{{count}} unveröffentlichte Änderung(en)",
2672
+ title_one: "{{count}} unveröffentlichte Änderung",
2673
+ title_other: "{{count}} unveröffentlichte Änderungen",
2674
+ inPackage: "{{names}} warten in {{package}} auf Veröffentlichung",
2675
+ waiting: "{{names}} warten auf Veröffentlichung",
2676
+ nameSeparator: ", ",
2240
2677
  cta: "Veröffentlichen",
2241
2678
  publishing: "Wird veröffentlicht…",
2242
2679
  published: "Veröffentlicht! Ihre Änderungen sind live.",
2243
2680
  publishFailed: "Veröffentlichen fehlgeschlagen",
2244
2681
  // objectui#3546 slice six — seedWarn ist derselbe englische Satz wie
2245
2682
  // console.ai.seedWarn, also dieselbe Übersetzung. Der "(n)"-Marker folgt
2246
- // home.pendingDrafts.message ("Änderung(en)") in dieser Familie.
2683
+ // home.pendingDrafts.title ("Änderung(en)") in dieser Familie.
2247
2684
  nothing: "Nichts zu veröffentlichen.",
2248
2685
  probeWarn: "Veröffentlicht, aber die Überprüfung hat Probleme gefunden.",
2249
2686
  seedWarn: "Veröffentlicht, aber einige Beispieldaten konnten nicht geladen werden.",
@@ -2251,20 +2688,24 @@ const de = {
2251
2688
  capabilityWarn: "Autorenprüfung: {{count}} Capability-Verweis(e) verweisen ins Leere.",
2252
2689
  },
2253
2690
  title: "Startseite",
2254
- subtitle: "Ihr Arbeitsbereich-Dashboard",
2255
2691
  nav: "Startseite",
2256
2692
  allApps: "Alle Anwendungen",
2257
2693
  yourApps: "Ihre Apps",
2258
2694
  showMoreApps: "Mehr",
2259
2695
  showLess: "Weniger anzeigen",
2260
2696
  continueEmpty: "Elemente, die Sie öffnen, erscheinen hier.",
2261
- actionCenter: {
2262
- title: "Erfordert Ihre Aufmerksamkeit",
2263
- empty: "Alles erledigt",
2697
+ // objectui#12602 — Home's "My work" section: its heading, the link to the
2698
+ // full inbox, each column's title, "view all" link and empty line.
2699
+ myWork: {
2700
+ title: "Meine Arbeit",
2701
+ openInbox: "Posteingang öffnen",
2702
+ viewAll: "Alle anzeigen",
2703
+ approvals: "Zur Genehmigung",
2704
+ approvalsEmpty: "Nichts wartet auf Ihre Genehmigung",
2705
+ notifications: "Benachrichtigungen",
2706
+ notificationsEmpty: "Keine ungelesenen Benachrichtigungen",
2264
2707
  },
2265
- loading: "Arbeitsbereich wird geladen…",
2266
- recent: "Kürzlich",
2267
- starred: "Mit Stern",
2708
+ loading: "Wird geladen…",
2268
2709
  welcome: "Willkommen bei ObjectUI",
2269
2710
  welcomeDescription: "Erstellen Sie zunächst Ihre erste Anwendung oder konfigurieren Sie Ihre Systemeinstellungen.",
2270
2711
  createFirstApp: "Erstellen Sie Ihre erste App",
@@ -2272,12 +2713,10 @@ const de = {
2272
2713
  browseMarketplace: "App-Marktplatz durchsuchen",
2273
2714
  quickActions: {
2274
2715
  title: "Schnellaktionen",
2275
- createApp: "App erstellen",
2276
- createAppDesc: "Beginnen Sie mit einer neuen Anwendung",
2277
2716
  manageObjects: "Objekte verwalten",
2278
2717
  manageObjectsDesc: "Datenmodelle konfigurieren",
2279
2718
  systemSettings: "Systemeinstellungen",
2280
- systemSettingsDesc: "Konfigurieren Sie Ihren Arbeitsbereich",
2719
+ systemSettingsDesc: "Konfigurieren Sie Ihr System",
2281
2720
  },
2282
2721
  appCard: {
2283
2722
  noDescription: "Keine Beschreibung",
@@ -2287,20 +2726,29 @@ const de = {
2287
2726
  greetingAfternoon: "Guten Nachmittag",
2288
2727
  greetingEvening: "Guten Abend",
2289
2728
  greetingNight: "Nachtschicht",
2290
- heroTagline: "Machen Sie dort weiter, wo Sie aufgehört haben, oder entdecken Sie etwas Neues.",
2291
- open: "Öffnen",
2292
- stats: {
2293
- apps: "Anwendungen",
2294
- starred: "Markiert",
2295
- recent: "Zuletzt verwendet",
2729
+ greetingSeparator: ", ",
2730
+ greetingEnd: ".",
2731
+ search: "Apps, Datensätze, Seiten durchsuchen…",
2732
+ summary: {
2733
+ approvals: "Heute warten {{count}} Genehmigungen auf Sie",
2734
+ approvals_one: "Heute wartet {{count}} Genehmigung auf Sie",
2735
+ approvals_other: "Heute warten {{count}} Genehmigungen auf Sie",
2736
+ none: "Heute wartet nichts auf Sie",
2296
2737
  },
2738
+ addApp: "App hinzufügen",
2739
+ appOpened: "{{time}}",
2740
+ open: "Öffnen",
2297
2741
  recentApps: {
2298
2742
  title: "Zuletzt geöffnet",
2299
2743
  itemType: {
2300
2744
  object: "Objekt",
2301
2745
  dashboard: "Dashboard",
2302
2746
  page: "Seite",
2747
+ report: "Bericht",
2748
+ package: "Paket",
2749
+ view: "Listenansicht",
2303
2750
  record: "Datensatz",
2751
+ metadata: "Metadaten",
2304
2752
  },
2305
2753
  },
2306
2754
  starredApps: {
@@ -2322,7 +2770,6 @@ const de = {
2322
2770
  organizations: "Organisationen",
2323
2771
  roles: "Rollen",
2324
2772
  configuration: "Konfiguration",
2325
- createApp: "App erstellen",
2326
2773
  administration: "Verwaltung",
2327
2774
  datasources: "Datenquellen",
2328
2775
  documentation: "Dokumentation",
@@ -2337,16 +2784,23 @@ const de = {
2337
2784
  manageAllApps: "Alle Apps verwalten",
2338
2785
  systemConsole: "Systemkonsole",
2339
2786
  noAppsConfigured: "Keine Apps konfiguriert",
2787
+ allApps: "Alle Apps",
2788
+ editAppInStudio: "{{app}} im Studio bearbeiten",
2789
+ backToHome: "Zurück zur Startseite",
2790
+ settings: "Einstellungen",
2791
+ productHome: "{{product}} Startseite",
2340
2792
  },
2341
2793
  activityFeed: {
2342
2794
  title: "Letzte Aktivitäten",
2343
2795
  filter: "Filtern",
2344
2796
  empty: "Keine letzten Aktivitäten",
2797
+ accessDenied: "Sie haben keine Berechtigung, Aktivitäten anzuzeigen.",
2345
2798
  ariaLabel: "Aktivitätsfeed",
2346
2799
  typeCreate: "Erstellen",
2347
2800
  typeUpdate: "Aktualisieren",
2348
2801
  typeDelete: "Löschen",
2349
2802
  typeComment: "Kommentar",
2803
+ typeSystem: "System",
2350
2804
  relativeJustNow: "gerade eben",
2351
2805
  relativeSecondsAgo: "vor {{count}}s",
2352
2806
  relativeMinutesAgo: "vor {{count}}m",
@@ -2368,8 +2822,11 @@ const de = {
2368
2822
  placeholder: "Objekte, Dashboards, Seiten, Berichte suchen…",
2369
2823
  inputAriaLabel: "Objekte, Dashboards, Seiten, Berichte suchen",
2370
2824
  resultsCount: "{{count}} Ergebnis für „{{query}}“",
2371
- resultsCountPlural: "{{count}} Ergebnisse für „{{query}}“",
2825
+ resultsCount_one: "{{count}} Ergebnis für „{{query}}“",
2826
+ resultsCount_other: "{{count}} Ergebnisse für „{{query}}“",
2372
2827
  itemsAvailable: "{{count}} Elemente verfügbar",
2828
+ itemsAvailable_one: "{{count}} Element verfügbar",
2829
+ itemsAvailable_other: "{{count}} Elemente verfügbar",
2373
2830
  noResults: "Keine Ergebnisse gefunden",
2374
2831
  noResultsHint: "Versuchen Sie, Ihre Suchbegriffe anzupassen",
2375
2832
  typeObjects: "Objekte",
@@ -2394,26 +2851,38 @@ const de = {
2394
2851
  noAppsConfigured: "Keine Apps konfiguriert",
2395
2852
  noAppsConfiguredDescription: "Es sind keine Anwendungen registriert. Erstellen Sie Ihre erste App oder besuchen Sie die Systemeinstellungen.",
2396
2853
  appNotAvailable: "App nicht verfügbar",
2397
- appNotAvailableDescription: "Diese App ist noch nicht verfügbar — sie wird möglicherweise noch veröffentlicht. Versuchen Sie es in einem Moment erneut.",
2854
+ appNotAvailableDescription: "Diese App ist nicht verfügbar — versuchen Sie es in einem Moment erneut.",
2855
+ appNotFound: "Diese App kann nicht geöffnet werden",
2856
+ appNotFoundDescription: "Der Server hat diese App für Ihr Konto nicht zurückgegeben.",
2857
+ appUnreachable: "Der Server ist nicht erreichbar",
2858
+ appUnreachableDescription: "Diese App konnte nicht geprüft werden. Versuchen Sie es in einem Moment erneut.",
2398
2859
  appAccessDenied: "Sie haben keinen Zugriff auf diese App",
2399
2860
  appAccessDeniedDescription: "Diese App existiert, aber Ihr Konto ist nicht berechtigt, sie zu öffnen. Bitten Sie einen Administrator um Zugriff.",
2400
2861
  appAccessDeniedHome: "Zurück zur Startseite",
2862
+ appNothingAvailable: "In {{app}} ist für Sie noch nichts verfügbar",
2863
+ appNothingAvailableDescription: "Diese App enthält keine Seiten, die Ihr Konto öffnen kann. Bitten Sie einen Administrator um Zugriff.",
2864
+ appNothingAvailableGrantDescription: "Diese App enthält keine Seiten, die Ihr Konto öffnen kann. Sie können den Zugriff in der Einrichtung gewähren.",
2865
+ openSetup: "Einrichtung öffnen",
2401
2866
  createFirstApp: "Erste App erstellen",
2402
2867
  systemSettings: "Systemeinstellungen",
2403
2868
  back: "Zurück",
2404
2869
  recordNotFound: "Datensatz nicht gefunden",
2405
2870
  recordNotFoundDescription: "Der gesuchte Datensatz existiert nicht oder wurde möglicherweise gelöscht.",
2871
+ recordAccessDenied: "Kein Zugriff auf {{object}}-Datensätze",
2872
+ recordAccessDeniedDescription: "Sie haben keine Berechtigung, Datensätze dieses Typs anzuzeigen. Wenden Sie sich an Ihren Administrator, wenn Sie Zugriff benötigen.",
2873
+ recordLoadFailed: "Dieser Datensatz konnte nicht geladen werden",
2874
+ recordLoadFailedDescription: "Beim Laden ist etwas schiefgelaufen. Prüfen Sie Ihre Verbindung und versuchen Sie es erneut.",
2406
2875
  },
2407
2876
  actionDialog: {
2408
2877
  title: "Aktionsparameter",
2409
2878
  description: "Bitte geben Sie die erforderlichen Informationen ein, um fortzufahren.",
2410
2879
  selectPlaceholder: "{{label}} auswählen",
2411
2880
  requiredError: "{{label}} ist erforderlich",
2881
+ 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.',
2882
+ carryOverHint: 'Unverändert übernommen (schreibgeschützt)',
2412
2883
  cancel: "Abbrechen",
2413
2884
  confirm: "Bestätigen",
2414
2885
  uploading: "Wird hochgeladen…",
2415
- defaultActionTitle: "Aktion",
2416
- ok: "OK",
2417
2886
  lookupPlaceholder: "Datensatz-ID für {{label}}",
2418
2887
  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.",
2419
2888
  },
@@ -2422,11 +2891,6 @@ const de = {
2422
2891
  confirm: "Weiter",
2423
2892
  cancel: "Abbrechen",
2424
2893
  },
2425
- rowAction: {
2426
- openMenu: "Menü öffnen",
2427
- edit: "Bearbeiten",
2428
- delete: "Löschen",
2429
- },
2430
2894
  navigationSync: {
2431
2895
  addedPage: "Navigation aktualisiert: Seite „{{name}}“ hinzugefügt",
2432
2896
  addedDashboard: "Navigation aktualisiert: Dashboard „{{name}}“ hinzugefügt",
@@ -2440,13 +2904,18 @@ const de = {
2440
2904
  updateFailed: "Navigation konnte nicht aktualisiert werden",
2441
2905
  },
2442
2906
  objectActions: {
2443
- resetPackageSetConfirm: "Dieses Berechtigungsset gehört zu einem installierten Paket und kann nicht entfernt werden. Beim Löschen wird es auf den ausgelieferten Ausgangszustand zurückgesetzt und Ihre Anpassungen in dieser Umgebung gehen verloren. Fortfahren?",
2444
- resetPackageSetSuccess: "Berechtigungsset auf den ausgelieferten Ausgangszustand zurückgesetzt",
2445
2907
  deleteSuccess: "{{label}} erfolgreich gelöscht",
2446
2908
  deleteFailed: "{{label}} konnte nicht gelöscht werden",
2447
2909
  noRecordId: "Keine Datensatz-ID angegeben",
2448
2910
  deleteConfirm: "Möchten Sie diesen Datensatz wirklich löschen?",
2911
+ deleteConfirmTitle: "{{label}} „{{name}}“ löschen?",
2912
+ bulkDeleteConfirmTitle: "{{count}} {{label}}-Datensätze löschen?",
2913
+ bulkDeleteConfirmTitle_one: "{{count}} {{label}}-Datensatz löschen?",
2914
+ bulkDeleteConfirmTitle_other: "{{count}} {{label}}-Datensätze löschen?",
2915
+ deleteConfirmButton: "Löschen",
2449
2916
  bulkDeleteSuccess: "{{count}} {{label}}-Datensätze gelöscht",
2917
+ bulkDeleteSuccess_one: "{{count}} {{label}}-Datensatz gelöscht",
2918
+ bulkDeleteSuccess_other: "{{count}} {{label}}-Datensätze gelöscht",
2450
2919
  bulkDeletePartial: "{{succeeded}} gelöscht, {{failed}} fehlgeschlagen",
2451
2920
  },
2452
2921
  objectViewActions: {
@@ -2458,15 +2927,6 @@ const de = {
2458
2927
  exportFailed: "Export fehlgeschlagen: {{message}}",
2459
2928
  forecastSoon: "Prognoseansicht kommt bald",
2460
2929
  },
2461
- recordDetail: {
2462
- viewersTooltip: "Benutzer, die diesen Datensatz gerade ansehen",
2463
- },
2464
- cellRender: {
2465
- empty: "Leer",
2466
- yes: "Ja",
2467
- no: "Nein",
2468
- systemFields: "System",
2469
- },
2470
2930
  user: {
2471
2931
  profile: "Profil",
2472
2932
  settings: "Einstellungen",
@@ -2485,9 +2945,10 @@ const de = {
2485
2945
  columnsLabel: "Spalte",
2486
2946
  allLabel: "(Alle)",
2487
2947
  emptyLabel: "(Leer)",
2488
- loading: "Laden…",
2948
+ loading: "Wird geladen…",
2489
2949
  failedToLoad: "Matrix konnte nicht geladen werden: {{message}}",
2490
2950
  needsAcross: "Matrixbericht erfordert mindestens ein `groupingsAcross`-Feld.",
2951
+ forbiddenMessage: "Sie haben keine Berechtigung, die Daten dieses Berichts anzuzeigen.",
2491
2952
  aggregate: {
2492
2953
  count: "Anzahl",
2493
2954
  countDistinct: "Eindeutige Anzahl",
@@ -2502,18 +2963,18 @@ const de = {
2502
2963
  },
2503
2964
  },
2504
2965
  organizations: {
2505
- create: "Workspace erstellen",
2506
- mine: "Meine Workspaces",
2507
- title: "Workspaces",
2508
- heading: "Ihre Workspaces",
2509
- subtitle: "Wählen Sie einen Workspace, um fortzufahren, oder erstellen Sie einen neuen.",
2510
- searchPlaceholder: "Workspace suchen",
2511
- new: "Neuer Workspace",
2512
- current: "Aktueller Workspace",
2966
+ create: "Organisation erstellen",
2967
+ mine: "Meine Organisationen",
2968
+ title: "Organisationen",
2969
+ heading: "Ihre Organisationen",
2970
+ subtitle: "Wählen Sie eine Organisation, um fortzufahren, oder erstellen Sie eine neue.",
2971
+ searchPlaceholder: "Organisation suchen",
2972
+ new: "Neue Organisation",
2973
+ current: "Aktuelle Organisation",
2513
2974
  manage: "Verwalten",
2514
- emptyTitle: "Noch keine Workspaces",
2515
- emptyDescription: "Erstellen Sie Ihren ersten Workspace, um loszulegen.",
2516
- noMatches: "Keine Workspaces entsprechen Ihrer Suche.",
2975
+ emptyTitle: "Noch keine Organisationen",
2976
+ emptyDescription: "Erstellen Sie Ihre erste Organisation, um loszulegen.",
2977
+ noMatches: "Keine Organisationen entsprechen Ihrer Suche.",
2517
2978
  },
2518
2979
  organization: {
2519
2980
  roles: {
@@ -2598,6 +3059,7 @@ const de = {
2598
3059
  readOnlyNote: "Nur Eigentümer können Einstellungen ändern.",
2599
3060
  nameLabel: "Name der Organisation",
2600
3061
  slugLabel: "Slug",
3062
+ slugLockedNote: "Diese Organisation hat aktive Umgebungen, daher kann ihr Slug hier nicht geändert werden: Eine Umbenennung verschiebt auch deren Subdomains.",
2601
3063
  logoLabel: "Logo",
2602
3064
  logoUpload: "Hochladen",
2603
3065
  logoReplace: "Ersetzen",
@@ -2656,18 +3118,37 @@ const de = {
2656
3118
  regionLabel: "Benachrichtigungen",
2657
3119
  groupCount: "{{count}} Benachrichtigungen",
2658
3120
  groupUnread: "{{count}} ungelesen",
3121
+ groupUnread_one: "{{count}} ungelesen",
3122
+ groupUnread_other: "{{count}} ungelesen",
2659
3123
  groupMarkRead: "Als gelesen markieren",
2660
3124
  groupMarkReadTitle: "Alle dieses Typs als gelesen markieren",
2661
3125
  empty: "Keine Benachrichtigungen",
2662
3126
  markAllRead: "Alle als gelesen markieren",
2663
3127
  viewAll: "Alle Benachrichtigungen anzeigen",
2664
3128
  approvalsPending: "{{count}} ausstehende Genehmigungen",
3129
+ approvalsPending_one: "{{count}} ausstehende Genehmigung",
3130
+ approvalsPending_other: "{{count}} ausstehende Genehmigungen",
2665
3131
  viewApprovals: "Genehmigungen anzeigen",
2666
3132
  noPendingApprovals: "Keine ausstehenden Genehmigungen",
2667
3133
  openApprovalsInbox: "Genehmigungs-Posteingang öffnen",
2668
3134
  badgeTotal: "{{total}} insgesamt",
2669
- badgeNotifications: "{{unread}} Benachrichtigungen",
2670
- badgeApprovals: "{{approvals}} ausstehende Genehmigungen",
3135
+ badgeNotifications: "{{count}} Benachrichtigungen",
3136
+ badgeNotifications_one: "{{count}} Benachrichtigung",
3137
+ badgeNotifications_other: "{{count}} Benachrichtigungen",
3138
+ badgeApprovals: "{{count}} ausstehende Genehmigungen",
3139
+ badgeApprovals_one: "{{count}} ausstehende Genehmigung",
3140
+ badgeApprovals_other: "{{count}} ausstehende Genehmigungen",
3141
+ arrivalMany: "{{count}} neue Nachrichten",
3142
+ arrivalMany_one: "{{count}} neue Nachricht",
3143
+ arrivalMany_other: "{{count}} neue Nachrichten",
3144
+ arrivalRepeats: "{{count}} neue Nachrichten zu diesem Thema",
3145
+ arrivalRepeats_one: "{{count}} neue Nachricht zu diesem Thema",
3146
+ arrivalRepeats_other: "{{count}} neue Nachrichten zu diesem Thema",
3147
+ arrivalOpen: "Ansehen",
3148
+ toastEnabled: "Hinweise in der App",
3149
+ desktopEnabled: "Desktop-Benachrichtigungen",
3150
+ desktopBlocked: "Blockiert. Erlauben Sie Benachrichtigungen für diese Website in den Browsereinstellungen.",
3151
+ desktopUnsupported: "Dieser Browser unterstützt keine Desktop-Benachrichtigungen.",
2671
3152
  emptyUnread: "Alles gelesen",
2672
3153
  filterUnread: "Ungelesen",
2673
3154
  filterAll: "Alle",
@@ -2681,12 +3162,14 @@ const de = {
2681
3162
  thankYouTitle: "Vielen Dank!",
2682
3163
  thankYouMessage: "Ihre Einreichung wurde erfolgreich empfangen.",
2683
3164
  redirecting: "Weiterleitung in {{seconds}} Sekunden…",
3165
+ redirectPending: "Weiterleitung…",
2684
3166
  unavailableTitle: "Formular nicht verfügbar",
2685
3167
  unavailableDescription: "Unter dieser URL ist kein öffentliches Formular verfügbar. Stellen Sie sicher, dass die zugrunde liegende Ansicht die anonyme Freigabe aktiviert hat.",
2686
3168
  tryDemo: "Demo ausprobieren",
2687
3169
  retry: "Erneut versuchen",
2688
3170
  loading: "Formular wird geladen…",
2689
3171
  requiredHint: "* Pflichtfeld",
3172
+ requiredFields: "Pflichtfelder: {{fields}}",
2690
3173
  consentLabelDefault: "Ich stimme der Datenschutzrichtlinie zu und willige in die Verarbeitung meiner Daten für diese Anfrage ein.",
2691
3174
  consentLink: "Datenschutzrichtlinie",
2692
3175
  consentRequired: "Bitte akzeptieren Sie die Datenschutzrichtlinie, um fortzufahren.",
@@ -2699,10 +3182,10 @@ const de = {
2699
3182
  body: 'Die MCP-Schnittstelle ist ausgeschaltet (OS_MCP_SERVER_ENABLED=false). Bitten Sie Ihren Betreiber, sie wieder zu aktivieren.',
2700
3183
  },
2701
3184
  url: {
2702
- title: 'MCP-Endpunkt dieser Umgebung',
3185
+ title: 'MCP-Endpunkt dieses Systems',
2703
3186
  body: 'Jeder MCP-fähige KI-Client verbindet sich über diese URL. Die Identität ist Self-Service: Die Bereitstellung ist ihr eigener OAuth-2.1-Autorisierungsserver — Sie melden sich als Sie selbst an, und jeder Aufruf unterliegt Ihren Berechtigungen und der Zeilensicherheit.',
2704
3187
  downloadSkill: 'SKILL.md herunterladen',
2705
- skillHint: 'Die portable Agenten-Skill-Datei: erklärt jedem skill-fähigen Agenten die Arbeit mit dieser Umgebung.',
3188
+ skillHint: 'Die portable Agenten-Skill-Datei: erklärt jedem skill-fähigen Agenten die Arbeit mit diesem System.',
2706
3189
  },
2707
3190
  claude: {
2708
3191
  body: 'Einstellungen → Connectors → Benutzerdefinierten Connector hinzufügen, dann diese URL einfügen und im Browser anmelden.',
@@ -2737,18 +3220,83 @@ const de = {
2737
3220
  noImportableFields: "Dieses Objekt hat keine importierbaren Felder.",
2738
3221
  schemaReadFailed: "Das Objektschema konnte nicht gelesen werden.",
2739
3222
  imported: "{{count}} Zeile(n) in {{object}} importiert.",
3223
+ imported_one: "{{count}} Zeile in {{object}} importiert.",
3224
+ imported_other: "{{count}} Zeilen in {{object}} importiert.",
2740
3225
  importFrom: "Echte Zeilen importieren aus",
2741
3226
  into: "nach",
2742
3227
  opening: "Wird geöffnet…",
2743
3228
  importAction: "Importieren",
2744
3229
  dismiss: "Verwerfen",
2745
3230
  },
2746
- cloudOnboarding: {
2747
- hintCreate: "Erstellen Sie Ihre erste Umgebung — ein privater Arbeitsbereich mit eigener URL, Datenbank und eigenem Tarif. Die Entwicklung findet darin statt.",
2748
- hintReady: "Ihre Produktionsumgebung ist bereit. Öffnen Sie sie, um Ihre Apps zu erstellen und auszuführen — alles geschieht innerhalb der Umgebung.",
2749
- createEnvironment: "Umgebung erstellen",
2750
- openProduction: "Produktion öffnen",
2751
- manageEnvironments: "Umgebungen verwalten",
3231
+ cloudWorkspaceTimezoneNotice: {
3232
+ seeded: "Die Zeitzone der Umgebung wurde beim Erstellen anhand Ihres Browsers auf {{zone}} festgelegt. Sie können sie unter Einstellungen → Lokalisierung ändern.",
3233
+ },
3234
+ ai: {
3235
+ nlQuery: {
3236
+ placeholder: "Stellen Sie eine Frage zu Ihren Daten…",
3237
+ ask: "Fragen",
3238
+ results: "Ergebnisse",
3239
+ match: "{{percent}} Übereinstimmung",
3240
+ simulatedSummary: "Ergebnisse für: {{query}}",
3241
+ noResults: "Keine passenden Datensätze gefunden",
3242
+ recentQueries: "Letzte Abfragen",
3243
+ },
3244
+ formAssist: {
3245
+ title: "KI-Vorschläge",
3246
+ suggestionCount: "{{count}} Vorschläge",
3247
+ suggestionCount_one: "{{count}} Vorschlag",
3248
+ suggestionCount_other: "{{count}} Vorschläge",
3249
+ applyAll: "Alle übernehmen",
3250
+ confidence: "{{percent}} Konfidenz",
3251
+ appliedCount: "{{count}} Vorschläge übernommen",
3252
+ appliedCount_one: "{{count}} Vorschlag übernommen",
3253
+ appliedCount_other: "{{count}} Vorschläge übernommen",
3254
+ },
3255
+ recommendations: {
3256
+ title: "Empfehlungen",
3257
+ generating: "Empfehlungen werden generiert…",
3258
+ empty: "Keine Empfehlungen verfügbar",
3259
+ },
3260
+ },
3261
+ aiApprovals: {
3262
+ title: "KI-Genehmigungen",
3263
+ description: "Von einem KI-Agenten vorgeschlagene Aktionen, die vor der Ausführung eine menschliche Prüfung benötigen.",
3264
+ tabPending: "Ausstehend",
3265
+ tabDecided: "Entschieden",
3266
+ tabAll: "Alle",
3267
+ statusPending: "Ausstehend",
3268
+ statusApproved: "Genehmigt",
3269
+ statusExecuted: "Ausgeführt",
3270
+ statusFailed: "Fehlgeschlagen",
3271
+ statusRejected: "Abgelehnt",
3272
+ colTool: "Werkzeug",
3273
+ colAction: "Aktion",
3274
+ colObject: "Objekt",
3275
+ colStatus: "Status",
3276
+ colProposed: "Vorgeschlagen",
3277
+ colDecision: "Entscheidung",
3278
+ emptyTitle: "Keine wartenden Aktionen",
3279
+ emptyDescription: "Wenn die KI eine sensible Aktion vorschlägt, erscheint sie hier zur Prüfung.",
3280
+ view: "Ansehen",
3281
+ approve: "Genehmigen",
3282
+ reject: "Ablehnen",
3283
+ working: "Wird bearbeitet…",
3284
+ approveAndExecute: "Genehmigen & ausführen",
3285
+ outcomeApprove: "Genehmigung für {{id}}: {{message}}",
3286
+ outcomeReject: "Ablehnung für {{id}}: {{message}}",
3287
+ outcomeExecuteFailed: "Die Aktion ist bei der Ausführung fehlgeschlagen",
3288
+ drawerFallbackTitle: "Ausstehende Aktion",
3289
+ drawerSubtitle: "Werkzeug {{tool}} auf {{object}}",
3290
+ fieldProposedBy: "Vorgeschlagen von",
3291
+ fieldDecidedBy: "Entschieden von",
3292
+ fieldConversation: "Konversation",
3293
+ fieldToolInput: "Werkzeugeingabe",
3294
+ fieldResult: "Ergebnis",
3295
+ fieldError: "Fehler",
3296
+ fieldRejectionReason: "Ablehnungsgrund",
3297
+ rejectTitle: "Diese Aktion ablehnen?",
3298
+ rejectBody: "Der Grund wird an die KI zurückgemeldet, damit sie ihre nächste Antwort anpassen kann.",
3299
+ rejectPlaceholder: "Optionaler Grund (z. B. „Falsche Datensatz-ID — bitte zuerst mit der Nutzerin oder dem Nutzer klären.“)",
2752
3300
  },
2753
3301
  aiModelStatus: {
2754
3302
  summary: "Erstellen / Fragen nutzt {{conversational}} ({{conversationalSource}}); strukturiert nutzt {{structured}} ({{structuredSource}}).",
@@ -2758,8 +3306,8 @@ const de = {
2758
3306
  rowConversational: "Build-/Ask-Modell",
2759
3307
  rowStructured: "Strukturiert (Blueprint / Seed)",
2760
3308
  rowReasoning: "Reasoning-Aufwand",
2761
- readFailed: "Das effektive KI-Modell konnte nicht gelesen werden. In dieser Umgebung läuft möglicherweise kein KI-Dienst, oder Ihnen fehlt die Berechtigung ai:read.",
2762
- readFailedWithStatus: "Das effektive KI-Modell konnte nicht gelesen werden (HTTP {{status}}). In dieser Umgebung läuft möglicherweise kein KI-Dienst, oder Ihnen fehlt die Berechtigung ai:read.",
3309
+ readFailed: "Das effektive KI-Modell konnte nicht gelesen werden. In diesem System läuft möglicherweise kein KI-Dienst, oder Ihnen fehlt die Berechtigung ai:read.",
3310
+ readFailedWithStatus: "Das effektive KI-Modell konnte nicht gelesen werden (HTTP {{status}}). In diesem System läuft möglicherweise kein KI-Dienst, oder Ihnen fehlt die Berechtigung ai:read.",
2763
3311
  overridesInEffect: "Aktive Overrides: ",
2764
3312
  noOverrides: "keine — es gelten die Standardwerte des bereitgestellten Codes.",
2765
3313
  adapter: "Adapter: ",
@@ -2767,6 +3315,174 @@ const de = {
2767
3315
  sourceInherits: "wie build/ask",
2768
3316
  sourcePinned: "festgelegt durch {{source}}",
2769
3317
  },
3318
+ // objectui#7254 — the AI copilot's tool cards. Three families, all of them
3319
+ // English-only until this landed while every other string on the same screen
3320
+ // was translated:
3321
+ //
3322
+ // `tool.*` — one entry per PLATFORM-PROVIDED tool name
3323
+ // (@objectstack/spec `PLATFORM_TOOLS_BY_PACKAGE`, the
3324
+ // closed registry those runtimes are conformance-tested
3325
+ // against). `humanizeToolName` looks each up as
3326
+ // `chatbot.tool.<tool_name>` and falls back to its English
3327
+ // title-caser for a custom / third-party tool, so a name
3328
+ // missing here is degraded, never broken. Every value, `en`
3329
+ // included, is a short sentence in the pack's language
3330
+ // saying what the step does (cloud#2927 Target 3, ruled
3331
+ // 「同意」; objectui#12724): never the tool id, and never
3332
+ // the title-caser's output for it, which is how the step
3333
+ // reads for a tool the pack has no entry for.
3334
+ // `toolLabels-locale-parity-7481` holds both.
3335
+ // `toolState.*` — the card-header badge + activity-chip vocabulary. ONE
3336
+ // set for both surfaces (they used to carry separate
3337
+ // tables and disagreed on casing).
3338
+ // `plan.*` — the "N objects · N views · N dashboards" strip. Plural
3339
+ // FAMILIES: one slot per CLDR category the pack's language
3340
+ // selects (objectui#11432), plus the base key for a call
3341
+ // made without a count. `all-locales-key-parity.test.ts`
3342
+ // derives the required slots from `Intl.PluralRules`.
3343
+ //
3344
+ // objectui#7481 — five `tool.*` entries are NEWER than the registry above:
3345
+ // `get_authoring_rules` (cloud#1837), `load_tools`, `open_record`, `test_flow`
3346
+ // and `toggle_flow` are registered by cloud `service-ai-studio` but the pinned
3347
+ // `@objectstack/spec` snapshot does not list them yet. They are kept here on
3348
+ // purpose: a step label the user reads must not wait on a pin bump. When the
3349
+ // pin advances, `chatbotToolLabels-locale-parity-7481` starts checking them
3350
+ // against the registry instead of against its own hand-held list.
3351
+ chatbot: {
3352
+ answer: {
3353
+ showFull: 'Ganze Antwort anzeigen',
3354
+ collapse: 'Einklappen',
3355
+ expandTable: 'Erweitern',
3356
+ exitExpandedTable: 'Schließen',
3357
+ },
3358
+ tool: {
3359
+ aggregate_data: "Die Daten zusammenfassen",
3360
+ get_record: "Den Datensatz lesen",
3361
+ query_data: "Die benötigten Daten abfragen",
3362
+ query_records: "Passende Datensätze suchen",
3363
+ search_knowledge: "In der Wissensdatenbank nachsehen",
3364
+ visualize_data: "Die Daten als Diagramm darstellen",
3365
+ add_field: "Dem Objekt ein Feld hinzufügen",
3366
+ apply_blueprint: "Die App nach dem Plan erstellen",
3367
+ apply_edit: "Die Änderung übernehmen",
3368
+ create_metadata: "Einen Metadateneintrag anlegen",
3369
+ create_object: "Ein Objekt anlegen",
3370
+ create_package: "Ein Paket anlegen",
3371
+ create_seed: "Beispieldaten für die Objekte erzeugen",
3372
+ delete_field: "Ein Feld löschen",
3373
+ describe_metadata: "Die Metadaten ansehen",
3374
+ describe_object: "Die Struktur des Objekts ansehen",
3375
+ get_active_package: "Das aktive Paket prüfen",
3376
+ get_authoring_rules: "Die Erstellungsregeln nachlesen",
3377
+ get_metadata_schema: "Das Metadatenformat nachlesen",
3378
+ get_package: "Das Paket ansehen",
3379
+ list_metadata: "Vorhandene Metadaten auflisten",
3380
+ list_objects: "Vorhandene Objekte auflisten",
3381
+ list_packages: "Vorhandene Pakete auflisten",
3382
+ load_tools: "Weitere Werkzeuge laden",
3383
+ modify_field: "Ein Feld ändern",
3384
+ open_record: "Den Datensatz öffnen",
3385
+ propose_blueprint: "Den App-Plan entwerfen",
3386
+ set_active_package: "Zum Zielpaket wechseln",
3387
+ suggest_builder: "Den Aufbau mit KI vorschlagen",
3388
+ test_flow: "Den Flow ausprobieren",
3389
+ todo_write: "Spätere Prüfpunkte notieren",
3390
+ toggle_flow: "Den Flow ein- oder ausschalten",
3391
+ update_metadata: "Einen Metadateneintrag aktualisieren",
3392
+ validate_expression: "Den Ausdruck prüfen",
3393
+ verify_build: "Das Ergebnis des Aufbaus prüfen",
3394
+ },
3395
+ toolState: {
3396
+ agentActivity: "Agentenaktivität",
3397
+ pending: "Ausstehend",
3398
+ running: "Läuft",
3399
+ awaitingApproval: "Wartet auf Freigabe",
3400
+ responded: "Beantwortet",
3401
+ completed: "Abgeschlossen",
3402
+ error: "Fehler",
3403
+ denied: "Abgelehnt",
3404
+ failed: "Fehlgeschlagen",
3405
+ },
3406
+ phase: {
3407
+ build: "Erstellen",
3408
+ design: "Plan entwerfen",
3409
+ stepCount: "{{count}} Schritte",
3410
+ stepCount_one: "{{count}} Schritt",
3411
+ stepCount_other: "{{count}} Schritte",
3412
+ expand: "Schritte anzeigen",
3413
+ collapse: "Schritte ausblenden",
3414
+ },
3415
+ plan: {
3416
+ countObjects: "{{count}} Objekte",
3417
+ countObjects_one: "{{count}} Objekt",
3418
+ countObjects_other: "{{count}} Objekte",
3419
+ countViews: "{{count}} Ansichten",
3420
+ countViews_one: "{{count}} Ansicht",
3421
+ countViews_other: "{{count}} Ansichten",
3422
+ countDashboards: "{{count}} Dashboards",
3423
+ countDashboards_one: "{{count}} Dashboard",
3424
+ countDashboards_other: "{{count}} Dashboards",
3425
+ countSeedData: "Beispieldaten",
3426
+ extendTarget: "Wird zur bestehenden App hinzugefügt: {{app}}",
3427
+ awaitingConfirm: "Wartet auf Bestätigung",
3428
+ objectsAndFields: "Objekte und Felder",
3429
+ views: "Ansichten",
3430
+ suggestedField: "ergänzt",
3431
+ nameField: "Bezeichnung: {{field}}",
3432
+ },
3433
+ build: {
3434
+ building: "{{app}} wird erstellt…",
3435
+ built: "{{app}} wurde erstellt",
3436
+ builtAndLive: "Erstellt und live · {{app}}",
3437
+ appFallback: "Ihre App",
3438
+ addingSampleData: "Beispieldaten werden hinzugefügt",
3439
+ group: {
3440
+ object: "Objekte",
3441
+ view: "Ansichten",
3442
+ dashboard: "Dashboards",
3443
+ app: "App",
3444
+ seed: "Beispieldaten",
3445
+ },
3446
+ moreArtifacts: "+{{n}} weitere",
3447
+ verifying: "Änderung wird geprüft…",
3448
+ verifyStep: "Schritt {{n}}",
3449
+ verified: "Änderung geprüft",
3450
+ unknownPhase: "Unbekannte Build-Phase",
3451
+ nextStepsLead: "Als Nächstes können Sie sagen: {{steps}}",
3452
+ nextStepQuote: "„{{step}}“",
3453
+ draftPosture: "Spätere Änderungen werden als Entwurf gespeichert, und Sie veröffentlichen sie in Studio.",
3454
+ checksPassed: "Prüfungen bestanden {{passed}}/{{total}}",
3455
+ },
3456
+ changes: {
3457
+ planTitle: "Änderungsplan · {{count}} Änderungen",
3458
+ planTitle_one: "Änderungsplan · {{count}} Änderung",
3459
+ planTitle_other: "Änderungsplan · {{count}} Änderungen",
3460
+ saveDraft: "Als Entwurf speichern",
3461
+ reviewAndPublish: "Änderungen prüfen und veröffentlichen",
3462
+ undo: "Rückgängig",
3463
+ undoWithOthers: "Rückgängig (mit {{count}} weiteren Entwürfen)",
3464
+ undoWithOthers_one: "Rückgängig (mit {{count}} weiteren Entwurf)",
3465
+ undoWithOthers_other: "Rückgängig (mit {{count}} weiteren Entwürfen)",
3466
+ undoConfirm: "Rückgängig verwirft alle {{total}} unveröffentlichten Entwürfe dieses Pakets, davon {{count}}, die nicht zu dieser Änderung gehören.",
3467
+ undoConfirm_one: "Rückgängig verwirft alle {{total}} unveröffentlichten Entwürfe dieses Pakets, davon {{count}}, der nicht zu dieser Änderung gehört.",
3468
+ undoConfirm_other: "Rückgängig verwirft alle {{total}} unveröffentlichten Entwürfe dieses Pakets, davon {{count}}, die nicht zu dieser Änderung gehören.",
3469
+ undoConfirmUnknown: "Rückgängig verwirft alle unveröffentlichten Entwürfe dieses Pakets, nicht nur diese Änderung.",
3470
+ undoConfirmAction: "Alle verwerfen",
3471
+ undoCancel: "Abbrechen",
3472
+ undoing: "Wird rückgängig gemacht…",
3473
+ undone: "Rückgängig gemacht",
3474
+ undoFailed: "Rückgängig machen fehlgeschlagen",
3475
+ kind: {
3476
+ field: "Feld",
3477
+ object: "Objekt",
3478
+ view: "Ansicht",
3479
+ dashboard: "Dashboard",
3480
+ app: "App",
3481
+ seed: "Beispieldaten",
3482
+ package: "App-Paket",
3483
+ },
3484
+ },
3485
+ },
2770
3486
  chatbotError: {
2771
3487
  title: "Antwort fehlgeschlagen",
2772
3488
  fallbackDetail: "Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut.",
@@ -2780,10 +3496,13 @@ const de = {
2780
3496
  buyCredits: "Credit-Paket kaufen",
2781
3497
  upgradePlan: "Tarif upgraden",
2782
3498
  },
3499
+ planTier: {
3500
+ teamAndUp: "Ab Tarif Team",
3501
+ },
2783
3502
  environment: {
2784
- addEnvironment: "Umgebung hinzufügen",
2785
3503
  setUpProduction: "Produktionsumgebung einrichten",
2786
3504
  addDevelopment: "Entwicklungsumgebung hinzufügen",
3505
+ developmentLocked: "Entwicklungsumgebungen · {{tier}}",
2787
3506
  // Plan/capacity dialog (EnvironmentEntitlementDialog) — cloud#959.
2788
3507
  entitlement: {
2789
3508
  productionLimitTitle: "Sie haben bereits Ihre Produktionsumgebung",
@@ -2831,7 +3550,7 @@ const de = {
2831
3550
  },
2832
3551
  unbound: {
2833
3552
  title: "Nicht verbunden",
2834
- body: "Verbinden Sie diese Runtime mit einer ObjectStack Control Plane, um die privaten Pakete Ihrer Organisation zu durchsuchen und hier zu installieren. Die Genehmigung erfolgt mit einem einzigen Klick in Ihrem Cloud-Konto — es werden keine IDs oder Zugangsdaten auf dieser Seite eingegeben.",
3553
+ body: "Diese Runtime ist mit keiner Control Plane verbunden. Verbinden öffnet Ihr Cloud-Konto in einem neuen Fenster, wo ein einziger Klick die Verbindung genehmigt — es werden keine IDs oder Zugangsdaten auf dieser Seite eingegeben.",
2835
3554
  connect: "Verbinden",
2836
3555
  },
2837
3556
  },
@@ -2844,10 +3563,17 @@ const de = {
2844
3563
  dismiss: "Ausblenden",
2845
3564
  confirmedToast: "„{{set}}“ ist jetzt {{anchor}} gewährt.",
2846
3565
  dismissedToast: "Vorschlag für „{{set}}“ ausgeblendet.",
3566
+ guestUnsupported: "Hier nicht gewährbar: Die Sets der Position „Guest“ werden nicht aus angenommenen Vorschlägen abgeleitet.",
3567
+ acceptedState: "„{{set}}“ wurde für alle angemeldeten Benutzer angenommen (Position „Everyone“).",
3568
+ notInForceState: "„{{set}}“ wurde angenommen, ist aber noch nicht wirksam: Die Position „Everyone“ hat sich bei dieser Anfrage nicht geändert. Der Grund steht im Serverprotokoll.",
3569
+ dismissedState: "„{{set}}“ ist nicht gewährt: Der Vorschlag wurde ausgeblendet oder widerrufen.",
3570
+ revoke: "Widerrufen",
3571
+ revoking: "Wird widerrufen…",
3572
+ revokedToast: "Annahme von „{{set}}“ widerrufen.",
2847
3573
  },
2848
3574
  title: "App-Marktplatz",
2849
3575
  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.",
2850
- searchPlaceholder: "Apps nach Name oder Manifest-ID suchen…",
3576
+ searchPlaceholder: 'Apps nach Name oder App-ID suchen…',
2851
3577
  searchAria: "Marktplatz-Apps suchen",
2852
3578
  installed: "Installiert",
2853
3579
  installedCount: "Installiert ({{count}})",
@@ -2857,21 +3583,26 @@ const de = {
2857
3583
  noMatchFilters: "Keine Apps entsprechen Ihren Filtern.",
2858
3584
  noDescription: "Keine Beschreibung vorhanden.",
2859
3585
  back: "Zurück zum Marktplatz",
2860
- installedTitle: "Installierte Apps",
2861
- installedSubtitle: "Marktplatz-Pakete, die derzeit im Kernel dieses Laufzeitsystems installiert sind.",
2862
- installedEmpty: "Noch keine Marktplatz-Apps in diesem Laufzeitsystem installiert.",
2863
3586
  browseLink: "Marktplatz durchsuchen →",
2864
- installedAdditiveNote: "<strong>Hinweis:</strong> Die Kernel-API ist nur additiv — Deinstallation entfernt das Manifest auf der Festplatte, damit das Paket beim nächsten Start nicht geladen wird, aber der laufende Kernel hält die App bis zum Neustart registriert.",
2865
- installedAt: "Installiert {{when}}",
2866
- installedBy: "von {{user}}",
2867
- installedPackageId: "Paket",
2868
- cachedAs: "Zwischengespeichert als <code>{{path}}</code>",
3587
+ installedAdditiveNote: "Die Deinstallation entfernt die App sofort aus dem laufenden Kernel, samt ihren Berechtigungssets und deren Zuweisungen, und löscht das zwischengespeicherte Manifest, damit das Paket beim nächsten Start nicht geladen wird. Datensätze in ihren Objekten bleiben in der Datenbank erhalten.",
2869
3588
  versionBadge: "v{{version}}",
2870
3589
  installedBadge: "Installiert v{{version}}",
3590
+ // objectui#11645 — an install-local entry this runtime refused to load at
3591
+ // startup (the listing's `notLoaded` marker), read on Installed Apps.
3592
+ notLoaded: {
3593
+ badge: "Nicht geladen",
3594
+ protocolIncompatible: "Dieses Laufzeitsystem hat das Paket nicht geladen: Es zielt auf das Protokoll {{requiredRange}} ab, das dieses Laufzeitsystem nicht unterstützt.",
3595
+ otherReason: "Dieses Laufzeitsystem hat das Paket nicht geladen ({{code}}).",
3596
+ },
2871
3597
  load: {
2872
3598
  failed: "Marktplatz konnte nicht geladen werden",
2873
3599
  failedHintConfigured: "Diese Laufzeitumgebung erreicht den Marktplatz über die Control Plane unter {{url}}. Prüfen Sie, ob diese online und von hier aus erreichbar ist.",
2874
- failedHintSameOrigin: "Diese Laufzeitumgebung stellt den Marktplatz-Katalog selbst bereit. Prüfen Sie, ob die Laufzeitumgebung online ist.",
3600
+ failedHintSameOrigin: "Der Marktplatz-Katalog wird über diese Laufzeitumgebung erreicht. Prüfen Sie, ob die Laufzeitumgebung online ist und den Katalog erreichen kann.",
3601
+ loading: "Marktplatz-Katalog wird geladen…",
3602
+ slow: "Wird noch geladen — der Marktplatz-Katalog antwortet langsam.",
3603
+ retry: "Erneut versuchen",
3604
+ unreachable: "Der Marktplatz-Katalog war nicht erreichbar.",
3605
+ answeredError: "Der Marktplatz-Katalog hat mit einem Fehler geantwortet (HTTP {{status}}).",
2875
3606
  packageFailed: "Paket konnte nicht geladen werden",
2876
3607
  notFound: "Nicht gefunden.",
2877
3608
  },
@@ -2895,10 +3626,15 @@ const de = {
2895
3626
  purgeSampleData: 'Beispieldaten löschen',
2896
3627
  purgeConfirm: 'Alle von diesem Paket erzeugten Beispieldatensätze löschen? Vom Benutzer hinzugefügte Datensätze bleiben unberührt.',
2897
3628
  purgeSuccess: '{{count}} Beispieldatensatz/-sätze entfernt.',
3629
+ purgeSuccess_one: '{{count}} Beispieldatensatz entfernt.',
3630
+ purgeSuccess_other: '{{count}} Beispieldatensätze entfernt.',
2898
3631
  purgeNoData: 'Keine Beispieldatensätze zum Löschen gefunden.',
2899
3632
  reseedQueued: 'Beispieldaten werden beim nächsten Zugriff auf die Umgebung neu geladen.',
2900
3633
  reseedLocalSuccess: 'Beispieldaten neu geladen: {{inserted}} hinzugefügt, {{updated}} aktualisiert.',
2901
3634
  reseedPartialErrors: '({{count}} Datensatz/-sätze konnten nicht geschrieben werden)',
3635
+ reseedPartialErrors_one: '({{count}} Datensatz konnte nicht geschrieben werden)',
3636
+ reseedPartialErrors_other: '({{count}} Datensätze konnten nicht geschrieben werden)',
3637
+ 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.',
2902
3638
  updateAvailable: 'Update verfügbar',
2903
3639
  },
2904
3640
  action: {
@@ -2908,6 +3644,7 @@ const de = {
2908
3644
  working: "Verarbeite…",
2909
3645
  installToCloud: "In der Cloud installieren…",
2910
3646
  installing: "Installiere…",
3647
+ updating: "Aktualisiere…",
2911
3648
  uninstall: "Deinstallieren",
2912
3649
  uninstalling: "Deinstalliere…",
2913
3650
  details: "Details",
@@ -2925,15 +3662,45 @@ const de = {
2925
3662
  environmentPlaceholder: "Umgebung auswählen",
2926
3663
  includeSampleData: "Beispieldaten einschließen",
2927
3664
  noEnvs: "Keine Umgebungen in Ihrer aktiven Organisation gefunden.",
2928
- noPermission: "Sie haben keine Berechtigung, Apps in einer Umgebung zu installieren. Nur Organisationsinhaber und Administratoren können installieren.",
3665
+ noPermission: "Sie haben keine Berechtigung, Apps in einer Umgebung zu installieren. Nur Organisationsinhaber und Administratoren können installieren — wenden Sie sich an den Administrator Ihrer Organisation.",
2929
3666
  signInFirst: "Sie müssen sich zuerst bei ObjectStack Cloud anmelden.",
2930
3667
  success: "Erfolgreich installiert. Öffnen Sie die Umgebung, um die neue App zu sehen.",
2931
3668
  localSuccess: "v{{version}} in diesem Laufzeitsystem installiert. „{{name}}“ sollte jetzt im App-Wechsler erscheinen.",
3669
+ localLoadsAtRestart: "v{{version}} in diesem Laufzeitsystem installiert. „{{name}}“ wird beim nächsten Neustart des Laufzeitsystems geladen und erscheint erst dann im App-Wechsler.",
2932
3670
  localManifestConflict: "{{message}}\nHinweis: Eine lokale App besitzt bereits diese manifest_id. Entfernen Sie sie zuerst aus objectstack.config.ts.",
2933
3671
  localUnauthorized: "Melden Sie sich zuerst in diesem Laufzeitsystem an.",
2934
3672
  localMarketplaceUnavailable: "Dieses Laufzeitsystem hat keine OS_CLOUD_URL konfiguriert.",
2935
3673
  updateTo: "Aktualisieren → v{{version}}",
2936
3674
  installedVersion: "Installiert v{{version}}",
3675
+ deploying: "App wird bereitgestellt…",
3676
+ deployed: "Die App ist bereitgestellt und einsatzbereit.",
3677
+ openApp: "{{name}} öffnen",
3678
+ deployTimeout: "Die Installation wurde erfasst, aber diese Umgebung stellt die App noch nicht bereit. Die Bereitstellung läuft möglicherweise noch – prüfen Sie es gleich erneut. Erscheint sie nie, wurde das Paket womöglich nicht geladen, enthält keine App, oder die App erfordert eine Berechtigung, die Ihnen fehlt.",
3679
+ checkAgain: "Erneut prüfen",
3680
+ // ADR-0131 D6 — the install modes a package's manifest permits, and
3681
+ // what an unmanaged install answers (MarketplacePackagePage).
3682
+ mode: {
3683
+ label: "Installationsmodus",
3684
+ managed: "Verwaltet",
3685
+ managedHint: "Das Paket bleibt maßgeblich: Es wird als Code registriert, erhält seine Upgrades, und seine Elemente werden hier nicht bearbeitet.",
3686
+ unmanaged: "Nicht verwaltete Kopie",
3687
+ unmanagedHint: "Einmalig als eigene Metadaten in dieses Laufzeitsystem kopiert: Jedes Element ist hier bearbeitbar, und die Kopie erhält kein Upgrade.",
3688
+ required: "Wählen Sie einen Installationsmodus, um dieses Paket zu installieren.",
3689
+ },
3690
+ unmanagedSuccess: "v{{version}} von „{{name}}“ als eigene Metadaten in dieses Laufzeitsystem kopiert, in die Basis {{base}}. Die Kopie ist bearbeitbar und erhält kein Upgrade.",
3691
+ unmanagedStrippedLocks: "Das Paket hat diese Elemente gesperrt. Die Kopie ist bearbeitbar, daher wurden ihre Sperren nicht kopiert:",
3692
+ unmanagedIgnored: "Dieses Laufzeitsystem unterstützt keine nicht verwalteten Installationen, daher wurde „{{name}}“ verwaltet installiert (als Code registriert) statt kopiert. Aktualisieren Sie das Laufzeitsystem, deinstallieren Sie dann das Paket und installieren Sie es erneut als nicht verwaltete Kopie.",
3693
+ },
3694
+ // objectui#12146 — the install dialog opened as an UPDATE of the copy
3695
+ // this environment holds (MarketplacePackagePage).
3696
+ update: {
3697
+ dialogTitle: "{{name}} aktualisieren",
3698
+ dialogDescCurrent: "Die in dieser Umgebung installierte Kopie aktualisieren ({{host}}).",
3699
+ dialogDescPicker: "Wählen Sie die Umgebung, deren installierte Kopie Sie aktualisieren möchten. Sie müssen bei ObjectStack Cloud angemeldet sein.",
3700
+ majorNotice: "Dies ist ein Update auf eine neue Hauptversion (v{{fromMajor}} → v{{toMajor}}), das inkompatible Änderungen enthalten kann.",
3701
+ releaseNotes: "Versionshinweise zu v{{version}} lesen",
3702
+ success: "Auf v{{version}} aktualisiert.",
3703
+ deployTimeout: "Das Update wurde erfasst, aber diese Umgebung stellt v{{version}} noch nicht bereit. Die Bereitstellung läuft möglicherweise noch – prüfen Sie es gleich erneut.",
2937
3704
  },
2938
3705
  // objectui#3546 — the MarketplacePage "Your organization" strip.
2939
3706
  org: {
@@ -2951,7 +3718,8 @@ const de = {
2951
3718
  reviewed: "Geprüft und genehmigt",
2952
3719
  unreviewed: "Noch nicht geprüft",
2953
3720
  signed: "Signiert",
2954
- grantsIntro: "Bei der Installation erhält dieses Paket:",
3721
+ grantsIntro: "Dieses Paket fordert an:",
3722
+ 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.",
2955
3723
  services: "Plattformdienste",
2956
3724
  hooks: "Lifecycle-Hooks",
2957
3725
  network: "Netzwerkzugriff",
@@ -2965,9 +3733,11 @@ const de = {
2965
3733
  },
2966
3734
  },
2967
3735
  uninstall: {
2968
- confirm: "{{manifestId}} v{{version}} aus diesem Laufzeitsystem deinstallieren?\n\nDas zwischengespeicherte Manifest wird entfernt.",
2969
- successInList: "{{manifestId}} entfernt. Starten Sie das Laufzeitsystem neu, um es vollständig zu entladen.",
2970
- successInDetail: "Zwischengespeichertes Manifest für {{manifestId}} entfernt.",
3736
+ confirm: "{{manifestId}} v{{version}} aus diesem Laufzeitsystem deinstallieren?\n\nDie App wird sofort aus dem laufenden Kernel entfernt, samt ihren Berechtigungssets und deren Zuweisungen, und das zwischengespeicherte Manifest wird gelöscht. Datensätze in ihren Objekten bleiben in der Datenbank erhalten.",
3737
+ successInList: "{{manifestId}} entfernt: Die App ist aus dem laufenden Kernel entfernt, samt ihren Berechtigungssets und deren Zuweisungen. Datensätze in ihren Objekten bleiben in der Datenbank erhalten.",
3738
+ successInDetail: "{{manifestId}} und das zugehörige zwischengespeicherte Manifest entfernt: Die App ist aus dem laufenden Kernel entfernt, samt ihren Berechtigungssets und deren Zuweisungen. Datensätze in ihren Objekten bleiben in der Datenbank erhalten.",
3739
+ confirmNotLoaded: "{{manifestId}} v{{version}} aus diesem Laufzeitsystem deinstallieren?\n\nDas zwischengespeicherte Manifest wird entfernt. Dieses Laufzeitsystem hat das Paket nicht geladen, daher läuft nichts davon.",
3740
+ successNotLoaded: "{{manifestId}} entfernt. Es war nicht geladen, ein Neustart ist nicht nötig.",
2971
3741
  },
2972
3742
  accessDenied: {
2973
3743
  title: "App-Marktplatz nur für Administratoren",
@@ -2990,32 +3760,21 @@ const de = {
2990
3760
  storage: "Speicher",
2991
3761
  other: "Sonstiges",
2992
3762
  },
2993
- pricing: {
2994
- free: "Kostenlos",
2995
- freemium: "Freemium",
2996
- paid: "Kostenpflichtig",
2997
- subscription: "Abonnement",
2998
- "usage-based": "Nutzungsbasiert",
2999
- "contact-sales": "Vertrieb kontaktieren",
3000
- },
3001
3763
  relativeTime: {
3002
3764
  today: "heute",
3003
3765
  daysAgo: "vor {{count}}d",
3004
3766
  monthsAgo: "vor {{count}} Monaten",
3767
+ monthsAgo_one: "vor {{count}} Monat",
3768
+ monthsAgo_other: "vor {{count}} Monaten",
3005
3769
  yearsAgo: "vor {{count}} Jahren",
3770
+ yearsAgo_one: "vor {{count}} Jahr",
3771
+ yearsAgo_other: "vor {{count}} Jahren",
3006
3772
  },
3007
3773
  },
3008
- approvals: {
3009
- approve: 'Genehmigen',
3010
- reject: 'Ablehnen',
3011
- comment: 'Kommentar (optional)',
3012
- approveSuccess: 'Genehmigt',
3013
- rejectSuccess: 'Abgelehnt',
3014
- rejectConfirm: 'Diese Genehmigungsanfrage ablehnen?',
3015
- },
3016
3774
  approvalsInbox: {
3775
+ recordUnresolvable: 'Dieser Datensatz kann nicht geöffnet werden',
3017
3776
  loadMore: 'Mehr laden',
3018
- loadingMore: 'Lädt…',
3777
+ loadingMore: 'Wird geladen…',
3019
3778
  loadedOf: '{{loaded}} von {{total}} geladen',
3020
3779
  actEscalate: 'SLA eskaliert',
3021
3780
  systemSlaActor: 'System (SLA)',
@@ -3032,6 +3791,8 @@ const de = {
3032
3791
  requestInfoSent: 'Zur Ergänzung an den Antragsteller zurückgegeben',
3033
3792
  remindBtn: 'Erinnern',
3034
3793
  remindSuccess: 'Erinnerung an {{count}} Genehmiger gesendet',
3794
+ remindSuccess_one: 'Erinnerung an {{count}} Genehmiger gesendet',
3795
+ remindSuccess_other: 'Erinnerung an {{count}} Genehmiger gesendet',
3035
3796
  remindThrottled: 'Kürzlich wurde bereits erinnert — bitte später erneut.',
3036
3797
  replyPlaceholder: 'Auf diese Anfrage antworten…',
3037
3798
  slaRemaining: 'SLA noch {{dur}}',
@@ -3048,8 +3809,11 @@ const de = {
3048
3809
  progressApprovals: 'Genehmigungen — {{got}} von {{need}}',
3049
3810
  progressGroups: 'Freigabefortschritt — {{got}} von {{need}} Gruppen',
3050
3811
  progressEligible: '{{count}} berechtigte Genehmiger',
3812
+ progressEligible_one: '{{count}} berechtigter Genehmiger',
3813
+ progressEligible_other: '{{count}} berechtigte Genehmiger',
3051
3814
  progressBar: 'Entscheidungsfortschritt',
3052
3815
  declaredActions: 'Aktionen',
3816
+ decisionPanelOffRequestPage: 'Der Entscheidungsbereich für Genehmigungen funktioniert nur auf Seiten von Genehmigungsanfragen.',
3053
3817
  attachmentChip: 'Anhang',
3054
3818
  attachmentOpenFailed: 'Anhang konnte nicht geöffnet werden – bitte erneut versuchen',
3055
3819
  approveOneTitle: '„{{title}}“ genehmigen?',
@@ -3079,6 +3843,8 @@ const de = {
3079
3843
  filterCount: '{{shown}} von {{total}}',
3080
3844
  selected: 'ausgewählt',
3081
3845
  actionableCount: '({{count}} bearbeitbar)',
3846
+ actionableCount_one: '({{count}} bearbeitbar)',
3847
+ actionableCount_other: '({{count}} bearbeitbar)',
3082
3848
  selectAll: 'Alle auswählen',
3083
3849
  selectRow: 'Anfrage auswählen',
3084
3850
  colRequest: 'Anfrage',
@@ -3113,6 +3879,9 @@ const de = {
3113
3879
  emptyPending: 'Alles erledigt — nichts wartet auf Sie.',
3114
3880
  emptyOther: 'Hier ist noch nichts.',
3115
3881
  emptyViewAll: 'Alle Anfragen ansehen',
3882
+ waitingOnOthers: "{{count}} Anfragen warten auf andere Genehmigende",
3883
+ waitingOnOthers_one: "{{count}} Anfrage wartet auf andere Genehmigende",
3884
+ waitingOnOthers_other: "{{count}} Anfragen warten auf andere Genehmigende",
3116
3885
  noMatches: 'Keine Treffer für die aktuellen Filter.',
3117
3886
  keyboardHint: 'Tastatur: j/k bewegen · Enter öffnen · x auswählen · a genehmigen · r ablehnen',
3118
3887
  drawerTitle: 'Genehmigungsanfrage',
@@ -3130,12 +3899,12 @@ const de = {
3130
3899
  overrideActionLabel: '{{action}} (Übersteuerung)',
3131
3900
  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.',
3132
3901
  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.',
3902
+ overrideReassignNotice: 'Sie haben in diesem Schritt keine Genehmigerrolle. Beim Fortfahren wird Ihre Administrator-Übersteuerung verwendet: Der Schritt geht an den von Ihnen gewählten neuen Genehmiger, der alle noch nicht entschiedenen Genehmiger ersetzt. Die Anfrage bleibt ausstehend und wartet auf den neuen Genehmiger. Die Neuzuweisung wird als Administrator-Übersteuerung protokolliert.',
3903
+ overrideReassignNoticeWho: 'Sie haben in diesem Schritt keine Genehmigerrolle. Beim Fortfahren wird Ihre Administrator-Übersteuerung verwendet: Der Schritt geht an den von Ihnen gewählten neuen Genehmiger, der die noch nicht entschiedenen Genehmiger ersetzt — {{who}}. Die Anfrage bleibt ausstehend und wartet auf den neuen Genehmiger. Die Neuzuweisung wird als Administrator-Übersteuerung protokolliert.',
3904
+ overrideRecallNotice: 'Sie haben diese Anfrage nicht eingereicht. Beim Fortfahren wird Ihre Administrator-Übersteuerung verwendet: Die Anfrage wird zurückgezogen, alle noch nicht entschiedenen Genehmiger können nicht mehr darüber entscheiden, und der Datensatz wird entsperrt.',
3905
+ overrideRecallNoticeWho: 'Sie haben diese Anfrage nicht eingereicht. Beim Fortfahren wird Ihre Administrator-Übersteuerung verwendet: Die Anfrage wird zurückgezogen, der Datensatz wird entsperrt, und die noch nicht entschiedenen Genehmiger können nicht mehr darüber entscheiden — {{who}}.',
3133
3906
  viaOverrideChip: 'Administrator-Übersteuerung',
3134
3907
  viaOverrideHint: 'Die handelnde Person hatte in diesem Schritt keine Genehmigerrolle — zugelassen über die Administrator-Übersteuerung.',
3135
- rawData: 'Rohdaten (JSON)',
3136
- copy: 'Kopieren',
3137
- copied: 'Kopiert',
3138
- copyFailed: 'Kopieren fehlgeschlagen',
3139
3908
  overrideActor: 'Als andere Identität handeln (Admin)',
3140
3909
  actor: 'Akteur',
3141
3910
  auto: 'Auto',
@@ -3152,11 +3921,19 @@ const de = {
3152
3921
  approveN: '{{count}} genehmigen',
3153
3922
  rejectN: '{{count}} ablehnen',
3154
3923
  bulkApproveTitle: '{{count}} Anfragen genehmigen?',
3924
+ bulkApproveTitle_one: '{{count}} Anfrage genehmigen?',
3925
+ bulkApproveTitle_other: '{{count}} Anfragen genehmigen?',
3155
3926
  bulkApproveBody: 'Jede Anfrage wird mit Ihrer Identität genehmigt; der Flow folgt dem Genehmigen-Zweig.',
3156
3927
  bulkRejectTitle: '{{count}} Anfragen ablehnen?',
3928
+ bulkRejectTitle_one: '{{count}} Anfrage ablehnen?',
3929
+ bulkRejectTitle_other: '{{count}} Anfragen ablehnen?',
3157
3930
  bulkRejectBody: 'Die ausgewählten Anfragen werden abgelehnt und die Antragsteller benachrichtigt.',
3158
3931
  bulkApproved: '{{count}} Anfragen genehmigt',
3932
+ bulkApproved_one: '{{count}} Anfrage genehmigt',
3933
+ bulkApproved_other: '{{count}} Anfragen genehmigt',
3159
3934
  bulkRejected: '{{count}} Anfragen abgelehnt',
3935
+ bulkRejected_one: '{{count}} Anfrage abgelehnt',
3936
+ bulkRejected_other: '{{count}} Anfragen abgelehnt',
3160
3937
  bulkPartial: '{{ok}} erfolgreich, {{fail}} fehlgeschlagen: {{which}}',
3161
3938
  rejectOneTitle: '„{{title}}“ ablehnen?',
3162
3939
  rejectOneBody: 'Die Anfrage wird abgelehnt und der Antragsteller benachrichtigt.',
@@ -3181,8 +3958,14 @@ const de = {
3181
3958
  alreadyDecided: 'Diese Anfrage wurde bereits entschieden. Liste aktualisieren.',
3182
3959
  justNow: 'gerade eben',
3183
3960
  minutesAgo: 'vor {{count}} Min.',
3961
+ minutesAgo_one: 'vor {{count}} Min.',
3962
+ minutesAgo_other: 'vor {{count}} Min.',
3184
3963
  hoursAgo: 'vor {{count}} Std.',
3964
+ hoursAgo_one: 'vor {{count}} Std.',
3965
+ hoursAgo_other: 'vor {{count}} Std.',
3185
3966
  daysAgo: 'vor {{count}} Tagen',
3967
+ daysAgo_one: 'vor {{count}} Tag',
3968
+ daysAgo_other: 'vor {{count}} Tagen',
3186
3969
  },
3187
3970
  preview: {
3188
3971
  empty: {
@@ -3203,6 +3986,9 @@ const de = {
3203
3986
  publishing: 'Wird veröffentlicht…',
3204
3987
  exit: 'Vorschau beenden',
3205
3988
  changes: 'Änderungen',
3989
+ pendingHere: 'Entwurfsvorschau · {{count}} unveröffentlichte Änderungen auf dieser Seite',
3990
+ pendingHere_one: 'Entwurfsvorschau · {{count}} unveröffentlichte Änderung auf dieser Seite',
3991
+ pendingHere_other: 'Entwurfsvorschau · {{count}} unveröffentlichte Änderungen auf dieser Seite',
3206
3992
  },
3207
3993
  changes: {
3208
3994
  title: 'Ausstehende Änderungen',
@@ -3217,11 +4003,65 @@ const de = {
3217
4003
  detailNone: 'Keine Unterschiede erkannt — der Entwurf entspricht der veröffentlichten Version.',
3218
4004
  detailChangedKeys: 'Ebenfalls geändert:',
3219
4005
  confirmNote: 'Beim Veröffentlichen werden alle {{count}} ausstehenden Entwürfe dieses Pakets atomar freigegeben.',
4006
+ confirmNote_one: 'Beim Veröffentlichen wird der {{count}} ausstehende Entwurf dieses Pakets atomar freigegeben.',
4007
+ confirmNote_other: 'Beim Veröffentlichen werden alle {{count}} ausstehenden Entwürfe dieses Pakets atomar freigegeben.',
4008
+ // objectui#11591 — the package-less sheet: no package to batch, so each
4009
+ // draft publishes by itself and one that fails stays pending.
4010
+ confirmNoteSeparate: 'Beim Veröffentlichen werden die {{count}} ausstehenden Entwürfe einzeln freigegeben: Ein Entwurf, der dabei scheitert, bleibt ausstehend, die übrigen werden trotzdem freigegeben.',
4011
+ confirmNoteSeparate_one: 'Beim Veröffentlichen wird der {{count}} ausstehende Entwurf für sich allein freigegeben: Scheitert er, bleibt er ausstehend.',
4012
+ confirmNoteSeparate_other: 'Beim Veröffentlichen werden die {{count}} ausstehenden Entwürfe einzeln freigegeben: Ein Entwurf, der dabei scheitert, bleibt ausstehend, die übrigen werden trotzdem freigegeben.',
3220
4013
  publishConfirm: 'Alle veröffentlichen',
3221
- // [objectui#5418] Pre-publish security-posture findings, shown next to
4014
+ summaryItems: '{{count}} Elemente',
4015
+ summaryItems_one: '{{count}} Element',
4016
+ summaryItems_other: '{{count}} Elemente',
4017
+ summaryType: '{{n}} {{type}}',
4018
+ typeCount: {
4019
+ object: '{{count}} Objekte',
4020
+ object_one: '{{count}} Objekt',
4021
+ object_other: '{{count}} Objekte',
4022
+ view: '{{count}} Ansichten',
4023
+ view_one: '{{count}} Ansicht',
4024
+ view_other: '{{count}} Ansichten',
4025
+ page: '{{count}} Seiten',
4026
+ page_one: '{{count}} Seite',
4027
+ page_other: '{{count}} Seiten',
4028
+ dashboard: '{{count}} Dashboards',
4029
+ dashboard_one: '{{count}} Dashboard',
4030
+ dashboard_other: '{{count}} Dashboards',
4031
+ app: '{{count}} Apps',
4032
+ app_one: '{{count}} App',
4033
+ app_other: '{{count}} Apps',
4034
+ action: '{{count}} Aktionen',
4035
+ action_one: '{{count}} Aktion',
4036
+ action_other: '{{count}} Aktionen',
4037
+ report: '{{count}} Berichte',
4038
+ report_one: '{{count}} Bericht',
4039
+ report_other: '{{count}} Berichte',
4040
+ flow: '{{count}} Flows',
4041
+ flow_one: '{{count}} Flow',
4042
+ flow_other: '{{count}} Flows',
4043
+ permission: '{{count}} Berechtigungssätze',
4044
+ permission_one: '{{count}} Berechtigungssatz',
4045
+ permission_other: '{{count}} Berechtigungssätze',
4046
+ agent: '{{count}} Agenten',
4047
+ agent_one: '{{count}} Agent',
4048
+ agent_other: '{{count}} Agenten',
4049
+ email_template: '{{count}} E-Mail-Vorlagen',
4050
+ email_template_one: '{{count}} E-Mail-Vorlage',
4051
+ email_template_other: '{{count}} E-Mail-Vorlagen',
4052
+ },
4053
+ // objectui#12929 — the unchecked choice under an added object field whose
4054
+ // literal default the batch publish can write into the existing records.
4055
+ backfillOption: 'Standardwert nachtragen ({{count}} vorhandene Datensätze)',
4056
+ backfillOption_one: 'Standardwert nachtragen ({{count}} vorhandener Datensatz)',
4057
+ backfillOption_other: 'Standardwert nachtragen ({{count}} vorhandene Datensätze)',
4058
+ backfillOptionNoCount: 'Standardwert nachtragen',
4059
+ // [`7a90afdf9`] Pre-publish security-posture findings, shown next to
3222
4060
  // the confirm button so a refusal the door would issue is read BEFORE
3223
4061
  // the click rather than as a toast after the batch rolled back.
3224
4062
  securityBlockTitle: 'Veröffentlichen wird abgelehnt — {{count}} Element(e) benötigen zuerst eine Entscheidung',
4063
+ securityBlockTitle_one: 'Veröffentlichen wird abgelehnt — {{count}} Element benötigt zuerst eine Entscheidung',
4064
+ securityBlockTitle_other: 'Veröffentlichen wird abgelehnt — {{count}} Elemente benötigen zuerst eine Entscheidung',
3225
4065
  securityBlockWhere: 'Korrigieren Sie es am Objekt unter Einstellungen → Datensatzfreigabe und veröffentlichen Sie erneut.',
3226
4066
  },
3227
4067
  // ADR-0045 — the materialized-but-unlisted app banner
@@ -3246,7 +4086,7 @@ const de = {
3246
4086
  revertLabel: 'Eine Änderung rückgängig gemacht',
3247
4087
  applyLabel: 'Build-Änderung',
3248
4088
  revert: 'rückgängig',
3249
- items: 'Elemente',
4089
+ items: 'Elemente: {{count}}',
3250
4090
  revertAction: 'Rückgängig',
3251
4091
  reverted: 'Rückgängig gemacht — die Änderung wurde zurückgenommen.',
3252
4092
  revertFailed: 'Rückgängig machen fehlgeschlagen',
@@ -3275,28 +4115,32 @@ const de = {
3275
4115
  rangeEnd: "Bis",
3276
4116
  operators: {
3277
4117
  equals: "Gleich",
3278
- notEquals: "Ungleich",
4118
+ not_equals: "Ungleich",
3279
4119
  contains: "Enthält",
3280
- containsCaseInsensitive: "Enthält (Groß-/Kleinschreibung ignorieren)",
3281
- notContains: "Enthält nicht",
3282
- isEmpty: "Ist leer",
3283
- isNotEmpty: "Ist nicht leer",
3284
- greaterThan: "Größer als",
3285
- lessThan: "Kleiner als",
3286
- greaterOrEqual: "Größer oder gleich",
3287
- lessOrEqual: "Kleiner oder gleich",
4120
+ icontains: "Enthält (Groß-/Kleinschreibung ignorieren)",
4121
+ not_contains: "Enthält nicht",
4122
+ is_empty: "Ist leer",
4123
+ is_not_empty: "Ist nicht leer",
4124
+ greater_than: "Größer als",
4125
+ less_than: "Kleiner als",
4126
+ greater_than_or_equal: "Größer oder gleich",
4127
+ less_than_or_equal: "Kleiner oder gleich",
3288
4128
  before: "Vor",
3289
4129
  after: "Nach",
3290
4130
  between: "Zwischen",
3291
4131
  in: "In",
3292
- notIn: "Nicht in",
3293
- startsWith: "Beginnt mit",
3294
- endsWith: "Endet mit",
3295
- isNull: "Ist null",
3296
- isNotNull: "Ist nicht null",
4132
+ not_in: "Nicht in",
4133
+ starts_with: "Beginnt mit",
4134
+ ends_with: "Endet mit",
4135
+ is_null: "Ist null",
4136
+ is_not_null: "Ist nicht null",
3297
4137
  exists: "Ist gesetzt",
3298
4138
  notExists: "Ist nicht gesetzt",
3299
4139
  },
4140
+ emptyCheckHint: {
4141
+ text: '„{{isEmpty}}“ trifft auch auf leeren Text zu; „{{isNull}}“ nur auf einen fehlenden Wert.',
4142
+ list: '„{{isEmpty}}“ trifft auch auf eine leere Liste zu; „{{isNull}}“ nur auf einen fehlenden Wert.',
4143
+ },
3300
4144
  },
3301
4145
  sortBuilder: {
3302
4146
  sortBy: "Sortieren nach",
@@ -3309,7 +4153,8 @@ const de = {
3309
4153
  },
3310
4154
  collaboration: {
3311
4155
  commentCount: "{{count}} Kommentare",
3312
- commentCountOne: "{{count}} Kommentar",
4156
+ commentCount_one: "{{count}} Kommentar",
4157
+ commentCount_other: "{{count}} Kommentare",
3313
4158
  resolvedSuffix: " · Gelöst",
3314
4159
  sortComments: "Kommentare sortieren",
3315
4160
  sortOldest: "Älteste zuerst",
@@ -3318,11 +4163,18 @@ const de = {
3318
4163
  reopen: "Erneut öffnen",
3319
4164
  justNow: "gerade eben",
3320
4165
  minutesAgo: "vor {{count}} Min.",
4166
+ minutesAgo_one: "vor {{count}} Min.",
4167
+ minutesAgo_other: "vor {{count}} Min.",
3321
4168
  hoursAgo: "vor {{count}} Std.",
4169
+ hoursAgo_one: "vor {{count}} Std.",
4170
+ hoursAgo_other: "vor {{count}} Std.",
3322
4171
  daysAgo: "vor {{count}} T.",
4172
+ daysAgo_one: "vor {{count}} T.",
4173
+ daysAgo_other: "vor {{count}} T.",
3323
4174
  edited: "(bearbeitet)",
3324
4175
  reactionCount: "{{count}} Reaktionen",
3325
- reactionCountOne: "{{count}} Reaktion",
4176
+ reactionCount_one: "{{count}} Reaktion",
4177
+ reactionCount_other: "{{count}} Reaktionen",
3326
4178
  addThumbsUp: "Daumen hoch hinzufügen",
3327
4179
  reply: "Antworten",
3328
4180
  reactThumbsUp: "Mit Daumen hoch reagieren",
@@ -3333,9 +4185,11 @@ const de = {
3333
4185
  commentPlaceholder: "Kommentar hinzufügen … (@ für Erwähnungen)",
3334
4186
  send: "Senden",
3335
4187
  presentUserCount: "{{count}} anwesende Benutzer",
3336
- presentUserCountOne: "{{count}} anwesender Benutzer",
4188
+ presentUserCount_one: "{{count}} anwesender Benutzer",
4189
+ presentUserCount_other: "{{count}} anwesende Benutzer",
3337
4190
  moreUserCount: "{{count}} weitere Benutzer",
3338
- moreUserCountOne: "{{count}} weiterer Benutzer",
4191
+ moreUserCount_one: "{{count}} weiterer Benutzer",
4192
+ moreUserCount_other: "{{count}} weitere Benutzer",
3339
4193
  userStatusTitle: "{{name}} ({{status}})",
3340
4194
  statusActive: "aktiv",
3341
4195
  statusIdle: "inaktiv",
@@ -3343,6 +4197,11 @@ const de = {
3343
4197
  },
3344
4198
  wizard: {
3345
4199
  missingRequired: "Bitte füllen Sie die Pflichtfelder aus: {{fields}}",
4200
+ back: "Zurück",
4201
+ submitting: "Wird gesendet…",
4202
+ stepFallback: "Schritt {{n}}",
4203
+ progressLabel: "Fortschritt",
4204
+ emptyStep: "Für diesen Schritt sind keine Felder konfiguriert",
3346
4205
  },
3347
4206
  flowRunner: {
3348
4207
  title: 'Eingabe',
@@ -3392,6 +4251,8 @@ const de = {
3392
4251
  setDefaultFailed: "Festlegen der Standard-App fehlgeschlagen: {{reason}}",
3393
4252
  appDeleted: "{{name}} gelöscht",
3394
4253
  deleteFailed: "Löschen der App fehlgeschlagen: {{reason}}",
4254
+ nothingToDelete: "Nichts zu löschen für {{name}}: {{reason}}",
4255
+ alreadyAtDefault: "sie entspricht bereits dem Standard ihres Pakets",
3395
4256
  bulkEnabled: "{{n}} Apps aktiviert",
3396
4257
  bulkDisabled: "{{n}} Apps deaktiviert",
3397
4258
  bulkFailed: "Fehlgeschlagen für {{n}}: {{details}}",
@@ -3400,5 +4261,131 @@ const de = {
3400
4261
  bulkOperationFailed: "Massenvorgang fehlgeschlagen: {{reason}}",
3401
4262
  },
3402
4263
  },
4264
+ // objectui#6301 — Setup › Paketautomatisierung (ADR-0126 §7.4). Terminologie
4265
+ // wie im übrigen Pack: `common.package` = Paket, `flowRunner.completed` =
4266
+ // Flow, Anführungszeichen „…“. ⛔ Keine Herkunfts- oder Drift-Formulierungen
4267
+ // in dieser Gruppe (§9).
4268
+ packagedAutomation: {
4269
+ title: "Paketautomatisierung",
4270
+ 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.",
4271
+ refresh: "Aktualisieren",
4272
+ flowsHeading: "Paket-Flows",
4273
+ actionsHeading: "Paket-Aktionen",
4274
+ colFlow: "Flow",
4275
+ colActivation: "Aktivierung",
4276
+ colActions: "Aktionen",
4277
+ toggleLabel: "Aktivierung für {{label}}",
4278
+ on: "An",
4279
+ off: "Aus",
4280
+ notRunning: "Läuft hier nicht",
4281
+ clone: "Klonen",
4282
+ cloneTitle: "Paket-Flow klonen",
4283
+ cloneBody: "Die Kopie übernimmt die gesamte Definition und benötigt einen neuen Maschinennamen und ein neues Label. Bearbeiten Sie die Kopie im Studio.",
4284
+ cloneName: "Neuer Maschinenname",
4285
+ cloneLabel: "Neues Label",
4286
+ cancel: "Abbrechen",
4287
+ cloneConfirm: "Klon erstellen",
4288
+ cloneCreated: "Flow „{{name}}“ erstellt.",
4289
+ cloneSwitchSourceOff: "{{label}} ausschalten",
4290
+ cloneSourceOff: "Der paketierte Flow {{label}} ist ausgeschaltet.",
4291
+ cloneOpen: "Kopie in Studio öffnen",
4292
+ emptyTitle: "Keine Paket-Flows",
4293
+ emptyBody: "In dieser Installation liefert kein installiertes Paket einen Automatisierungs-Flow. Selbst erstellte Flows finden Sie im Studio.",
4294
+ loadFailed: "Paketautomatisierung konnte nicht geladen werden.",
4295
+ toggleFailedHttp: "Aktivierung konnte nicht geändert werden (HTTP {{status}}).",
4296
+ toggleFailed: "Aktivierung konnte nicht geändert werden.",
4297
+ cloneFailedHttp: "Dieser Flow konnte nicht geklont werden (HTTP {{status}}).",
4298
+ cloneFailed: "Dieser Flow konnte nicht geklont werden.",
4299
+ reasonDetails: "Details",
4300
+ 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.",
4301
+ colAction: "Aktion",
4302
+ colObject: "Objekt",
4303
+ actionToggleLabel: "Aktivierung für {{label}} auf {{object}}",
4304
+ actionsEmptyTitle: "Keine Paket-Aktionen",
4305
+ actionsEmptyBody: "In dieser Installation deklariert kein installiertes Paket eine Aktion. Selbst erstellte Aktionen finden Sie im Studio.",
4306
+ actionsLoadFailed: "Paket-Aktionen konnten nicht geladen werden.",
4307
+ },
4308
+ element: {
4309
+ number: {
4310
+ noObject: "Kein Objekt angegeben: Legen Sie dataSource.object fest.",
4311
+ sourceUnresolved: "Die Datenquelle dieser Kennzahl konnte nicht aufgelöst werden",
4312
+ },
4313
+ image: {
4314
+ noSource: "Keine Bildquelle",
4315
+ },
4316
+ recordPicker: {
4317
+ sourceUnresolved: "Die Datenquelle dieser Datensatzauswahl konnte nicht aufgelöst werden",
4318
+ },
4319
+ calendar: {
4320
+ sourceUnresolved: "Die Datenquelle dieses Kalenders konnte nicht aufgelöst werden",
4321
+ },
4322
+ chart: {
4323
+ sourceUnresolved: "Die Datenquelle dieses Diagramms konnte nicht aufgelöst werden",
4324
+ },
4325
+ pivotTable: {
4326
+ sourceUnresolved: "Die Datenquelle dieser Pivot-Tabelle konnte nicht aufgelöst werden",
4327
+ },
4328
+ detailView: {
4329
+ sourceUnresolved: "Die Datenquelle dieser Detailansicht konnte nicht aufgelöst werden",
4330
+ },
4331
+ relatedList: {
4332
+ sourceUnresolved: "Die Datenquelle dieser Bezugsliste konnte nicht aufgelöst werden",
4333
+ parentUnreadable: "Der übergeordnete Datensatz dieser Bezugsliste konnte nicht gelesen werden",
4334
+ },
4335
+ form: {
4336
+ sourceUnresolved: "Die Datenquelle dieses Formulars konnte nicht aufgelöst werden",
4337
+ },
4338
+ lineItems: {
4339
+ sourceUnresolved: "Die Datenquelle dieses Positionsbereichs konnte nicht aufgelöst werden",
4340
+ },
4341
+ gantt: {
4342
+ sourceUnresolved: "Die Datenquelle dieses Gantt-Diagramms konnte nicht aufgelöst werden",
4343
+ },
4344
+ grid: {
4345
+ sourceUnresolved: "Die Datenquelle dieses Rasters konnte nicht aufgelöst werden",
4346
+ },
4347
+ board: {
4348
+ sourceUnresolved: "Die Datenquelle dieses Boards konnte nicht aufgelöst werden",
4349
+ },
4350
+ listView: {
4351
+ sourceUnresolved: "Die Datenquelle dieser Listenansicht konnte nicht aufgelöst werden",
4352
+ },
4353
+ map: {
4354
+ sourceUnresolved: "Die Datenquelle dieser Karte konnte nicht aufgelöst werden",
4355
+ },
4356
+ timeline: {
4357
+ sourceUnresolved: "Die Datenquelle dieser Zeitleiste konnte nicht aufgelöst werden",
4358
+ },
4359
+ component: {
4360
+ sourceUnresolved: "Die Datenquelle dieser Komponente konnte nicht aufgelöst werden",
4361
+ noDataSource: "Keine Datenquelle aufgelöst",
4362
+ apiRefused: "Die API-Datenquelle dieser Komponente wurde abgelehnt",
4363
+ apiUnreadable: "Die API-Datenquelle dieser Komponente konnte nicht gelesen werden",
4364
+ },
4365
+ metadataViewer: {
4366
+ missingKey: "{{key}} fehlt für diese Ansicht.",
4367
+ loading: "{{name}} wird geladen…",
4368
+ loadFailed: "{{name}} konnte nicht geladen werden: {{message}}",
4369
+ notFound: "{{name}} nicht gefunden.",
4370
+ stateMachine: "Zustandsautomat",
4371
+ flow: "Flow",
4372
+ permission: "Berechtigung",
4373
+ noStateMachine: "Kein Zustandsautomat auf {{object}}.",
4374
+ noStateMachineNamed: "Kein Zustandsautomat namens „{{name}}“ auf {{object}}.",
4375
+ lifecycle: "Lebenszyklus von {{object}}",
4376
+ field: "Feld {{field}}",
4377
+ initial: "Anfang",
4378
+ final: "Ende",
4379
+ steps: "Schritte: {{count}}",
4380
+ noSteps: "Keine Schritte vorhanden.",
4381
+ untitledStep: "(Schritt)",
4382
+ hiddenSteps: "Technische Schritte ausgeblendet: {{count}} · {{setting}} setzen, um alle anzuzeigen",
4383
+ objectAccess: "Objektzugriff: {{count}}",
4384
+ noPermissions: "Keine Objektberechtigungen deklariert.",
4385
+ object: "Objekt",
4386
+ unknownType: "Unbekannter Metadaten-Ansichtstyp. Erwartet: {{a}}, {{b}} oder {{c}}.",
4387
+ unknownTypeNamed: "Unbekannter Metadaten-Ansichtstyp „{{type}}“. Erwartet: {{a}}, {{b}} oder {{c}}.",
4388
+ },
4389
+ },
3403
4390
  };
3404
4391
  export default de;