@adminiumjs/i18n 0.1.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/LICENSE +661 -0
  2. package/dist/create-i18n.d.ts +48 -0
  3. package/dist/create-i18n.d.ts.map +1 -0
  4. package/dist/create-i18n.js +98 -0
  5. package/dist/create-i18n.js.map +1 -0
  6. package/dist/format/index.d.ts +70 -0
  7. package/dist/format/index.d.ts.map +1 -0
  8. package/dist/format/index.js +217 -0
  9. package/dist/format/index.js.map +1 -0
  10. package/dist/icu-format.d.ts +17 -0
  11. package/dist/icu-format.d.ts.map +1 -0
  12. package/dist/icu-format.js +52 -0
  13. package/dist/icu-format.js.map +1 -0
  14. package/dist/index.d.ts +16 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +12 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/locales.d.ts +99 -0
  19. package/dist/locales.d.ts.map +1 -0
  20. package/dist/locales.js +55 -0
  21. package/dist/locales.js.map +1 -0
  22. package/dist/react.d.ts +26 -0
  23. package/dist/react.d.ts.map +1 -0
  24. package/dist/react.js +61 -0
  25. package/dist/react.js.map +1 -0
  26. package/dist/resources/ar-eg/common.d.ts +1964 -0
  27. package/dist/resources/ar-eg/common.d.ts.map +1 -0
  28. package/dist/resources/ar-eg/common.js +1963 -0
  29. package/dist/resources/ar-eg/common.js.map +1 -0
  30. package/dist/resources/ar-eg/errors.d.ts +45 -0
  31. package/dist/resources/ar-eg/errors.d.ts.map +1 -0
  32. package/dist/resources/ar-eg/errors.js +44 -0
  33. package/dist/resources/ar-eg/errors.js.map +1 -0
  34. package/dist/resources/ar-eg/generated.d.ts +20 -0
  35. package/dist/resources/ar-eg/generated.d.ts.map +1 -0
  36. package/dist/resources/ar-eg/generated.js +19 -0
  37. package/dist/resources/ar-eg/generated.js.map +1 -0
  38. package/dist/resources/ar-eg/studio.d.ts +18 -0
  39. package/dist/resources/ar-eg/studio.d.ts.map +1 -0
  40. package/dist/resources/ar-eg/studio.js +17 -0
  41. package/dist/resources/ar-eg/studio.js.map +1 -0
  42. package/dist/resources/ar-eg/ui.d.ts +996 -0
  43. package/dist/resources/ar-eg/ui.d.ts.map +1 -0
  44. package/dist/resources/ar-eg/ui.js +995 -0
  45. package/dist/resources/ar-eg/ui.js.map +1 -0
  46. package/dist/resources/cs-cz/common.d.ts +1964 -0
  47. package/dist/resources/cs-cz/common.d.ts.map +1 -0
  48. package/dist/resources/cs-cz/common.js +1963 -0
  49. package/dist/resources/cs-cz/common.js.map +1 -0
  50. package/dist/resources/cs-cz/errors.d.ts +45 -0
  51. package/dist/resources/cs-cz/errors.d.ts.map +1 -0
  52. package/dist/resources/cs-cz/errors.js +44 -0
  53. package/dist/resources/cs-cz/errors.js.map +1 -0
  54. package/dist/resources/cs-cz/generated.d.ts +20 -0
  55. package/dist/resources/cs-cz/generated.d.ts.map +1 -0
  56. package/dist/resources/cs-cz/generated.js +19 -0
  57. package/dist/resources/cs-cz/generated.js.map +1 -0
  58. package/dist/resources/cs-cz/studio.d.ts +18 -0
  59. package/dist/resources/cs-cz/studio.d.ts.map +1 -0
  60. package/dist/resources/cs-cz/studio.js +17 -0
  61. package/dist/resources/cs-cz/studio.js.map +1 -0
  62. package/dist/resources/cs-cz/ui.d.ts +996 -0
  63. package/dist/resources/cs-cz/ui.d.ts.map +1 -0
  64. package/dist/resources/cs-cz/ui.js +995 -0
  65. package/dist/resources/cs-cz/ui.js.map +1 -0
  66. package/dist/resources/da-dk/common.d.ts +1964 -0
  67. package/dist/resources/da-dk/common.d.ts.map +1 -0
  68. package/dist/resources/da-dk/common.js +1963 -0
  69. package/dist/resources/da-dk/common.js.map +1 -0
  70. package/dist/resources/da-dk/errors.d.ts +45 -0
  71. package/dist/resources/da-dk/errors.d.ts.map +1 -0
  72. package/dist/resources/da-dk/errors.js +44 -0
  73. package/dist/resources/da-dk/errors.js.map +1 -0
  74. package/dist/resources/da-dk/generated.d.ts +20 -0
  75. package/dist/resources/da-dk/generated.d.ts.map +1 -0
  76. package/dist/resources/da-dk/generated.js +19 -0
  77. package/dist/resources/da-dk/generated.js.map +1 -0
  78. package/dist/resources/da-dk/studio.d.ts +18 -0
  79. package/dist/resources/da-dk/studio.d.ts.map +1 -0
  80. package/dist/resources/da-dk/studio.js +17 -0
  81. package/dist/resources/da-dk/studio.js.map +1 -0
  82. package/dist/resources/da-dk/ui.d.ts +996 -0
  83. package/dist/resources/da-dk/ui.d.ts.map +1 -0
  84. package/dist/resources/da-dk/ui.js +995 -0
  85. package/dist/resources/da-dk/ui.js.map +1 -0
  86. package/dist/resources/de-de/common.d.ts +1964 -0
  87. package/dist/resources/de-de/common.d.ts.map +1 -0
  88. package/dist/resources/de-de/common.js +1963 -0
  89. package/dist/resources/de-de/common.js.map +1 -0
  90. package/dist/resources/de-de/errors.d.ts +45 -0
  91. package/dist/resources/de-de/errors.d.ts.map +1 -0
  92. package/dist/resources/de-de/errors.js +44 -0
  93. package/dist/resources/de-de/errors.js.map +1 -0
  94. package/dist/resources/de-de/generated.d.ts +20 -0
  95. package/dist/resources/de-de/generated.d.ts.map +1 -0
  96. package/dist/resources/de-de/generated.js +19 -0
  97. package/dist/resources/de-de/generated.js.map +1 -0
  98. package/dist/resources/de-de/studio.d.ts +18 -0
  99. package/dist/resources/de-de/studio.d.ts.map +1 -0
  100. package/dist/resources/de-de/studio.js +17 -0
  101. package/dist/resources/de-de/studio.js.map +1 -0
  102. package/dist/resources/de-de/ui.d.ts +996 -0
  103. package/dist/resources/de-de/ui.d.ts.map +1 -0
  104. package/dist/resources/de-de/ui.js +995 -0
  105. package/dist/resources/de-de/ui.js.map +1 -0
  106. package/dist/resources/en-us/common.d.ts +1964 -0
  107. package/dist/resources/en-us/common.d.ts.map +1 -0
  108. package/dist/resources/en-us/common.js +1963 -0
  109. package/dist/resources/en-us/common.js.map +1 -0
  110. package/dist/resources/en-us/errors.d.ts +45 -0
  111. package/dist/resources/en-us/errors.d.ts.map +1 -0
  112. package/dist/resources/en-us/errors.js +44 -0
  113. package/dist/resources/en-us/errors.js.map +1 -0
  114. package/dist/resources/en-us/generated.d.ts +20 -0
  115. package/dist/resources/en-us/generated.d.ts.map +1 -0
  116. package/dist/resources/en-us/generated.js +19 -0
  117. package/dist/resources/en-us/generated.js.map +1 -0
  118. package/dist/resources/en-us/studio.d.ts +18 -0
  119. package/dist/resources/en-us/studio.d.ts.map +1 -0
  120. package/dist/resources/en-us/studio.js +17 -0
  121. package/dist/resources/en-us/studio.js.map +1 -0
  122. package/dist/resources/en-us/ui.d.ts +996 -0
  123. package/dist/resources/en-us/ui.d.ts.map +1 -0
  124. package/dist/resources/en-us/ui.js +995 -0
  125. package/dist/resources/en-us/ui.js.map +1 -0
  126. package/dist/resources/fr-fr/common.d.ts +1964 -0
  127. package/dist/resources/fr-fr/common.d.ts.map +1 -0
  128. package/dist/resources/fr-fr/common.js +1963 -0
  129. package/dist/resources/fr-fr/common.js.map +1 -0
  130. package/dist/resources/fr-fr/errors.d.ts +45 -0
  131. package/dist/resources/fr-fr/errors.d.ts.map +1 -0
  132. package/dist/resources/fr-fr/errors.js +44 -0
  133. package/dist/resources/fr-fr/errors.js.map +1 -0
  134. package/dist/resources/fr-fr/generated.d.ts +20 -0
  135. package/dist/resources/fr-fr/generated.d.ts.map +1 -0
  136. package/dist/resources/fr-fr/generated.js +19 -0
  137. package/dist/resources/fr-fr/generated.js.map +1 -0
  138. package/dist/resources/fr-fr/studio.d.ts +18 -0
  139. package/dist/resources/fr-fr/studio.d.ts.map +1 -0
  140. package/dist/resources/fr-fr/studio.js +17 -0
  141. package/dist/resources/fr-fr/studio.js.map +1 -0
  142. package/dist/resources/fr-fr/ui.d.ts +996 -0
  143. package/dist/resources/fr-fr/ui.d.ts.map +1 -0
  144. package/dist/resources/fr-fr/ui.js +995 -0
  145. package/dist/resources/fr-fr/ui.js.map +1 -0
  146. package/dist/resources/index.d.ts +8 -0
  147. package/dist/resources/index.d.ts.map +1 -0
  148. package/dist/resources/index.js +21 -0
  149. package/dist/resources/index.js.map +1 -0
  150. package/dist/resources/lazy.d.ts +20 -0
  151. package/dist/resources/lazy.d.ts.map +1 -0
  152. package/dist/resources/lazy.js +49 -0
  153. package/dist/resources/lazy.js.map +1 -0
  154. package/dist/resources/zh-cn/common.d.ts +1964 -0
  155. package/dist/resources/zh-cn/common.d.ts.map +1 -0
  156. package/dist/resources/zh-cn/common.js +1963 -0
  157. package/dist/resources/zh-cn/common.js.map +1 -0
  158. package/dist/resources/zh-cn/errors.d.ts +45 -0
  159. package/dist/resources/zh-cn/errors.d.ts.map +1 -0
  160. package/dist/resources/zh-cn/errors.js +44 -0
  161. package/dist/resources/zh-cn/errors.js.map +1 -0
  162. package/dist/resources/zh-cn/generated.d.ts +20 -0
  163. package/dist/resources/zh-cn/generated.d.ts.map +1 -0
  164. package/dist/resources/zh-cn/generated.js +19 -0
  165. package/dist/resources/zh-cn/generated.js.map +1 -0
  166. package/dist/resources/zh-cn/studio.d.ts +18 -0
  167. package/dist/resources/zh-cn/studio.d.ts.map +1 -0
  168. package/dist/resources/zh-cn/studio.js +17 -0
  169. package/dist/resources/zh-cn/studio.js.map +1 -0
  170. package/dist/resources/zh-cn/ui.d.ts +996 -0
  171. package/dist/resources/zh-cn/ui.d.ts.map +1 -0
  172. package/dist/resources/zh-cn/ui.js +995 -0
  173. package/dist/resources/zh-cn/ui.js.map +1 -0
  174. package/dist/resources/zh-tw/common.d.ts +1964 -0
  175. package/dist/resources/zh-tw/common.d.ts.map +1 -0
  176. package/dist/resources/zh-tw/common.js +1963 -0
  177. package/dist/resources/zh-tw/common.js.map +1 -0
  178. package/dist/resources/zh-tw/errors.d.ts +45 -0
  179. package/dist/resources/zh-tw/errors.d.ts.map +1 -0
  180. package/dist/resources/zh-tw/errors.js +44 -0
  181. package/dist/resources/zh-tw/errors.js.map +1 -0
  182. package/dist/resources/zh-tw/generated.d.ts +20 -0
  183. package/dist/resources/zh-tw/generated.d.ts.map +1 -0
  184. package/dist/resources/zh-tw/generated.js +19 -0
  185. package/dist/resources/zh-tw/generated.js.map +1 -0
  186. package/dist/resources/zh-tw/studio.d.ts +18 -0
  187. package/dist/resources/zh-tw/studio.d.ts.map +1 -0
  188. package/dist/resources/zh-tw/studio.js +17 -0
  189. package/dist/resources/zh-tw/studio.js.map +1 -0
  190. package/dist/resources/zh-tw/ui.d.ts +996 -0
  191. package/dist/resources/zh-tw/ui.d.ts.map +1 -0
  192. package/dist/resources/zh-tw/ui.js +995 -0
  193. package/dist/resources/zh-tw/ui.js.map +1 -0
  194. package/locales/ar-EG/common.json +1954 -0
  195. package/locales/ar-EG/errors.json +35 -0
  196. package/locales/ar-EG/generated.json +10 -0
  197. package/locales/ar-EG/studio.json +8 -0
  198. package/locales/ar-EG/ui.json +986 -0
  199. package/locales/cs-CZ/common.json +1954 -0
  200. package/locales/cs-CZ/errors.json +35 -0
  201. package/locales/cs-CZ/generated.json +10 -0
  202. package/locales/cs-CZ/studio.json +8 -0
  203. package/locales/cs-CZ/ui.json +986 -0
  204. package/locales/da-DK/common.json +1954 -0
  205. package/locales/da-DK/errors.json +35 -0
  206. package/locales/da-DK/generated.json +10 -0
  207. package/locales/da-DK/studio.json +8 -0
  208. package/locales/da-DK/ui.json +986 -0
  209. package/locales/de-DE/common.json +1954 -0
  210. package/locales/de-DE/errors.json +35 -0
  211. package/locales/de-DE/generated.json +10 -0
  212. package/locales/de-DE/studio.json +8 -0
  213. package/locales/de-DE/ui.json +986 -0
  214. package/locales/en-US/common.json +1954 -0
  215. package/locales/en-US/errors.json +35 -0
  216. package/locales/en-US/generated.json +10 -0
  217. package/locales/en-US/studio.json +8 -0
  218. package/locales/en-US/ui.json +986 -0
  219. package/locales/fr-FR/common.json +1954 -0
  220. package/locales/fr-FR/errors.json +35 -0
  221. package/locales/fr-FR/generated.json +10 -0
  222. package/locales/fr-FR/studio.json +8 -0
  223. package/locales/fr-FR/ui.json +986 -0
  224. package/locales/zh-CN/common.json +1954 -0
  225. package/locales/zh-CN/errors.json +35 -0
  226. package/locales/zh-CN/generated.json +10 -0
  227. package/locales/zh-CN/studio.json +8 -0
  228. package/locales/zh-CN/ui.json +986 -0
  229. package/locales/zh-TW/common.json +1954 -0
  230. package/locales/zh-TW/errors.json +35 -0
  231. package/locales/zh-TW/generated.json +10 -0
  232. package/locales/zh-TW/studio.json +8 -0
  233. package/locales/zh-TW/ui.json +986 -0
  234. package/package.json +51 -0
@@ -0,0 +1,1954 @@
1
+ {
2
+ "common": {
3
+ "dismiss": "Schließen",
4
+ "notifications": "Benachrichtigungen",
5
+ "retry": "Erneut versuchen",
6
+ "undo": "Rückgängig",
7
+ "close": "Schließen",
8
+ "cancel": "Abbrechen",
9
+ "back": "Zurück",
10
+ "loading": "Wird geladen",
11
+ "clearSearch": "Suche löschen",
12
+ "clear": "Leeren",
13
+ "save": "Speichern"
14
+ },
15
+ "auth": {
16
+ "headline": "Machen Sie aus jeder Datenbank ein Dashboard.",
17
+ "trust": "AGPL-Kern · Selbst gehostet · Ihre Daten bleiben Ihre",
18
+ "signIn": {
19
+ "title": "Willkommen zurück",
20
+ "subtitle": "Melden Sie sich in Ihrem Adminium-Workspace an.",
21
+ "email": "E-Mail",
22
+ "emailInvalid": "Geben Sie eine gültige E-Mail-Adresse ein.",
23
+ "password": "Passwort",
24
+ "passwordRequired": "Geben Sie Ihr Passwort ein.",
25
+ "showPassword": "Passwort anzeigen",
26
+ "hidePassword": "Passwort verbergen",
27
+ "remember": "Angemeldet bleiben",
28
+ "forgot": "Vergessen?",
29
+ "submit": "Anmelden",
30
+ "invalid": "E-Mail oder Passwort ist ungültig.",
31
+ "rateLimited": "Zu viele Versuche — versuchen Sie es in einer Minute erneut.",
32
+ "failed": "Anmeldung fehlgeschlagen. Prüfen Sie Ihre Verbindung und versuchen Sie es erneut."
33
+ },
34
+ "forgot": {
35
+ "title": "Passwort zurücksetzen",
36
+ "email": "E-Mail",
37
+ "emailInvalid": "Geben Sie eine gültige E-Mail-Adresse ein.",
38
+ "submit": "Link zum Zurücksetzen senden",
39
+ "sentTitle": "Prüfen Sie Ihr E-Mail-Postfach",
40
+ "resend": "Erneut senden",
41
+ "back": "Zurück zur Anmeldung",
42
+ "done": "Zurück zur Anmeldung",
43
+ "rateLimited": "Zu viele Anfragen — versuchen Sie es später erneut.",
44
+ "failed": "Etwas ist schiefgelaufen. Versuchen Sie es erneut.",
45
+ "smtpUnconfigured": "Für dieses Adminium ist kein E-Mail-Server konfiguriert, daher kann kein Link zum Zurücksetzen gesendet werden. Bitten Sie eine Administratorin oder einen Administrator, Ihr Passwort zurückzusetzen."
46
+ },
47
+ "reset": {
48
+ "title": "Neues Passwort festlegen",
49
+ "subtitle": "Mindestens 8 Zeichen.",
50
+ "password": "Neues Passwort",
51
+ "confirm": "Passwort bestätigen",
52
+ "showPassword": "Passwort anzeigen",
53
+ "hidePassword": "Passwort verbergen",
54
+ "strength": "Passwortstärke",
55
+ "weak": "Schwach",
56
+ "fair": "Ausreichend",
57
+ "good": "Gut",
58
+ "strong": "Stark",
59
+ "tooShort": "Verwenden Sie mindestens 8 Zeichen.",
60
+ "submit": "Passwort zurücksetzen",
61
+ "failed": "Zurücksetzen fehlgeschlagen. Versuchen Sie es erneut."
62
+ },
63
+ "otp": {
64
+ "title": "Zwei-Faktor-Authentifizierung",
65
+ "subtitle": "Geben Sie den 6-stelligen Code aus Ihrer Authenticator-App ein.",
66
+ "code": "Einmalcode",
67
+ "recoveryCode": "Wiederherstellungscode",
68
+ "useRecovery": "Gerät verloren? Wiederherstellungscode verwenden",
69
+ "useAuthenticator": "Stattdessen die Authenticator-App verwenden",
70
+ "submit": "Bestätigen",
71
+ "invalid": "Dieser Code hat nicht funktioniert. Versuchen Sie es erneut.",
72
+ "failed": "Bestätigung fehlgeschlagen. Prüfen Sie Ihre Verbindung und versuchen Sie es erneut."
73
+ }
74
+ },
75
+ "nav": {
76
+ "home": "Start",
77
+ "primary": "Hauptbereich",
78
+ "account": "Konto",
79
+ "signOut": "Abmelden",
80
+ "empty": "Sobald eine Datenbank verbunden ist, erscheinen hier Seiten.",
81
+ "connection": {
82
+ "shared": "Gemeinsam",
83
+ "unnamed": "Verbindung"
84
+ },
85
+ "imports": "Daten importieren",
86
+ "exports": "Datenexporte",
87
+ "emailTemplates": "E-Mail-Vorlagen",
88
+ "notificationSettings": "Benachrichtigungseinstellungen",
89
+ "scheduledReports": "Geplante Berichte",
90
+ "group": {
91
+ "workspace": "Arbeitsbereich",
92
+ "library": "Bibliothek",
93
+ "planning": "Planung",
94
+ "people": "Personen",
95
+ "account": "Konto"
96
+ }
97
+ },
98
+ "topbar": {
99
+ "search": "Suchen…",
100
+ "notifications": "Benachrichtigungen",
101
+ "notificationsLoading": "Benachrichtigungen werden geladen",
102
+ "notificationsError": "Benachrichtigungen konnten nicht geladen werden.",
103
+ "notificationsEmpty": "Alles erledigt.",
104
+ "theme": "Hell / Dunkel umschalten",
105
+ "userMenu": "Kontomenü",
106
+ "profile": "Profil",
107
+ "preferences": "Einstellungen",
108
+ "signOut": "Abmelden"
109
+ },
110
+ "palette": {
111
+ "dialog": "Befehlspalette",
112
+ "placeholder": "Befehl eingeben oder suchen…",
113
+ "navigate": "Navigation",
114
+ "actions": "Aktionen",
115
+ "askAi": "KI fragen",
116
+ "shortcuts": "Tastaturkürzel",
117
+ "signOut": "Abmelden",
118
+ "themeDark": "Zum dunklen Design wechseln",
119
+ "themeLight": "Zum hellen Design wechseln",
120
+ "footerNavigate": "navigieren",
121
+ "footerOpen": "auswählen",
122
+ "footerClose": "schließen"
123
+ },
124
+ "shortcuts": {
125
+ "title": "Tastaturkürzel",
126
+ "subtitle": "Schneller arbeiten in ganz Adminium",
127
+ "close": "Schließen",
128
+ "dismiss": "Schließen oder verwerfen",
129
+ "palette": "Befehlspalette öffnen",
130
+ "panel": "Kürzel-Übersicht anzeigen",
131
+ "search": "Suche fokussieren",
132
+ "sidebar": "Seitenleiste umschalten",
133
+ "theme": "Hell / Dunkel umschalten",
134
+ "then": "dann",
135
+ "footerPre": "Drücken Sie",
136
+ "footerPost": ", um diese Übersicht jederzeit zu öffnen."
137
+ },
138
+ "states": {
139
+ "checked": "vor 8 s geprüft",
140
+ "diagnostics": "Diagnose"
141
+ },
142
+ "notFound": {
143
+ "title": "Diese Seite ist verschwunden",
144
+ "errorLine": "Fehler 404",
145
+ "searchPlaceholder": "Nach einer Seite suchen…",
146
+ "matches": "Passende Seiten",
147
+ "popular": "Beliebte Ziele",
148
+ "goBack": "Zurück",
149
+ "backToDashboard": "Zurück zum Dashboard"
150
+ },
151
+ "page": {
152
+ "invalid": {
153
+ "title": "Die Konfiguration dieser Seite ist ungültig",
154
+ "body": "Das gespeicherte Seitendokument hat die Validierung nicht bestanden und kann nicht dargestellt werden."
155
+ },
156
+ "renderError": {
157
+ "title": "Diese Seite konnte nicht dargestellt werden"
158
+ },
159
+ "tooNew": {
160
+ "title": "Diese Seite benötigt ein neueres Adminium"
161
+ },
162
+ "unknownTemplate": {
163
+ "title": "Unbekannte Seitenvorlage"
164
+ }
165
+ },
166
+ "mutation": {
167
+ "created": "Datensatz erstellt",
168
+ "updated": "Datensatz aktualisiert",
169
+ "deleted": "Datensatz gelöscht"
170
+ },
171
+ "undo": {
172
+ "done": "Änderung rückgängig gemacht",
173
+ "failed": "Diese Änderung konnte nicht rückgängig gemacht werden"
174
+ },
175
+ "prefs": {
176
+ "theme": {
177
+ "label": "Design",
178
+ "light": "Hell",
179
+ "dark": "Dunkel",
180
+ "system": "System"
181
+ },
182
+ "accent": {
183
+ "label": "Akzentfarbe",
184
+ "indigo": "Indigo",
185
+ "blue": "Blau",
186
+ "teal": "Petrol",
187
+ "violet": "Violett",
188
+ "rose": "Rosé",
189
+ "red": "Rot",
190
+ "orange": "Orange",
191
+ "black": "Schwarz"
192
+ },
193
+ "density": {
194
+ "label": "Dichte",
195
+ "comfortable": "Komfortabel",
196
+ "compact": "Kompakt"
197
+ },
198
+ "locale": {
199
+ "label": "Sprache",
200
+ "directionNote": "Textrichtung: rechts nach links (wird automatisch durch die Sprache festgelegt)"
201
+ }
202
+ },
203
+ "account": {
204
+ "title": "Konto",
205
+ "subtitle": "Die Identität Ihrer aktuellen Sitzung. Anzeigeeinstellungen und Benachrichtigungen verwalten Sie auf ihren eigenen Seiten.",
206
+ "preferencesLink": "Einstellungen",
207
+ "notificationsLink": "Benachrichtigungseinstellungen",
208
+ "name": "Name",
209
+ "email": "E-Mail",
210
+ "roles": "Rollen",
211
+ "twoFactor": "Zwei-Faktor",
212
+ "on": "Aktiviert",
213
+ "off": "Aus",
214
+ "preferences": {
215
+ "title": "Einstellungen",
216
+ "subtitle": "Wie Adminium für Sie aussieht und sich liest — auf diesem und jedem anderen Gerät, an dem Sie sich anmelden.",
217
+ "workspaceDefault": "Workspace-Standard",
218
+ "personal": "Persönlich",
219
+ "usingDefault": "Workspace-Standard wird verwendet ({value})",
220
+ "reset": "Auf Workspace-Standard zurücksetzen",
221
+ "resetFailed": "Diese Einstellung konnte nicht zurückgesetzt werden. Versuchen Sie es erneut.",
222
+ "appliesInstantly": "Änderungen gelten sofort und werden in Ihrem Profil gespeichert."
223
+ }
224
+ },
225
+ "settings": {
226
+ "defaults": {
227
+ "title": "Globale Standards",
228
+ "subtitle": "Workspace-weite Standards für Darstellung und Sprache.",
229
+ "explainer": "Diese Standards gelten für alle Benutzer, sofern sie sie nicht überschreiben. Jeder kann unter Profil → Einstellungen eigene Werte festlegen — persönliche Einstellungen haben für diesen Benutzer immer Vorrang.",
230
+ "appearanceHeading": "Darstellungs-Standards",
231
+ "languageHeading": "Standards für Sprache & Region",
232
+ "adoption": "{following, number} von {total, plural, one {# Benutzer} other {# Benutzern}} folgen diesem Standard.",
233
+ "weekStartNote": "Wochenbeginn und Zahlenformate richten sich nach der Sprache.",
234
+ "save": "Standards speichern",
235
+ "saved": "Workspace-Standards aktualisiert",
236
+ "saveFailed": "Die Workspace-Standards konnten nicht gespeichert werden. Versuchen Sie es erneut.",
237
+ "liveNote": "Beim Speichern wird die Änderung live übertragen — angemeldete Benutzer, die einem Standard folgen, sehen sie ohne Neuladen."
238
+ },
239
+ "notifications": {
240
+ "subtitle": "Wählen Sie, worüber und wie Sie benachrichtigt werden",
241
+ "matrixLabel": "Benachrichtigen bei",
242
+ "rowHeader": "Ereignis",
243
+ "saving": "Wird gespeichert…",
244
+ "saved": "Gespeichert",
245
+ "unavailable": "Noch nicht verfügbar",
246
+ "loading": "Einstellungen werden geladen",
247
+ "errorTitle": "Diese Einstellungen konnten nicht geladen werden",
248
+ "emptyTitle": "Noch nichts zu konfigurieren",
249
+ "emptyBody": "Benachrichtigungsereignisse erscheinen hier, sobald ihre Produzenten ausgeliefert werden.",
250
+ "saveFailed": "Diese Änderung konnte nicht gespeichert werden."
251
+ }
252
+ },
253
+ "studio": {
254
+ "source": {
255
+ "engine": {
256
+ "label": "Datenbank-Engine",
257
+ "postgres": "PostgreSQL",
258
+ "mysql": "MySQL / MariaDB",
259
+ "sqlite": "SQLite"
260
+ },
261
+ "format": {
262
+ "label": "Schemaformat",
263
+ "helper": "Bei automatischer Erkennung belassen, sofern sie nicht danebenliegt.",
264
+ "auto": "Automatisch erkennen",
265
+ "sql": "SQL-DDL / pg_dump",
266
+ "prisma": "Prisma-Schema",
267
+ "drizzle": "Drizzle ORM",
268
+ "typeorm": "TypeORM-Entitäten",
269
+ "sequelize": "Sequelize-Modelle",
270
+ "rails": "Rails schema.rb",
271
+ "django": "Django models.py",
272
+ "json": "Adminium-JSON"
273
+ },
274
+ "sqlite": {
275
+ "file": "Pfad zur Datenbankdatei",
276
+ "helper": "SQLite ist eine Datei, kein Server — geben Sie den absoluten Pfad auf der Maschine an, auf der Adminium läuft."
277
+ },
278
+ "file": {
279
+ "detectedAs": "Erkannt: {format}",
280
+ "moreWarnings": "+{count} weitere Warnungen — die vollständige Liste erscheint im Analyse-Schritt.",
281
+ "dropTitle": "Schemadatei hier ablegen oder durchsuchen",
282
+ "dropHint": "SQL DDL / pg_dump, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, Django-Modelle, Adminium JSON",
283
+ "pitch": "Keine Datenbankverbindung nötig — wir parsen Ihre Schemadatei und bauen dieselben Dashboards.",
284
+ "parsing": "Hochgeladene Schemadatei wird gelesen…",
285
+ "tables": "Tabellen",
286
+ "columns": "Spalten",
287
+ "warnings": "Warnungen",
288
+ "errorTitle": "Datei konnte nicht geparst werden",
289
+ "parseFailed": "Diese Datei konnte nicht geparst werden. Falls die automatische Erkennung falsch lag, wählen Sie das Format explizit und versuchen Sie es erneut.",
290
+ "unsupported": "Dieses Format wird nicht erkannt — unterstützt werden SQL DDL, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, Django-Modelle und Adminium JSON. Wählen Sie eines explizit und versuchen Sie es erneut.",
291
+ "requestFailed": "Upload fehlgeschlagen — prüfen Sie Ihre Verbindung und versuchen Sie es erneut."
292
+ },
293
+ "title": "Verbinden Sie Ihre Datenbank",
294
+ "subtitle": "Richten Sie Adminium auf eine Datenbank — wir generieren aus ihrem Schema ein Admin-Dashboard.",
295
+ "name": "Verbindungsname",
296
+ "namePlaceholder": "Produktions-Postgres",
297
+ "modeLabel": "Eingabemodus der Quelle",
298
+ "mode": {
299
+ "dsn": "Verbindungszeichenfolge",
300
+ "fields": "Einzelne Felder",
301
+ "file": "Schemadatei"
302
+ },
303
+ "dsn": {
304
+ "label": "Verbindungszeichenfolge",
305
+ "helper": "postgres://benutzer:passwort@host:5432/datenbank — mysql:// und sqlite: funktionieren ebenfalls.",
306
+ "incomplete": "Host und Datenbank ergänzen, z. B. postgres://user@host:5432/db",
307
+ "invalidScheme": "Unbekanntes Schema — erwartet werden postgres://, mysql://, mariadb:// oder sqlite:",
308
+ "quickFill": "Schnellausfüllen:"
309
+ },
310
+ "fields": {
311
+ "host": "Host",
312
+ "port": "Port",
313
+ "database": "Datenbank",
314
+ "user": "Benutzer",
315
+ "password": "Passwort",
316
+ "ssl": "SSL-Modus",
317
+ "preview": "Vorschau der Verbindungszeichenfolge:"
318
+ },
319
+ "readOnlyRole": {
320
+ "title": "Verwenden Sie eine schreibgeschützte Rolle",
321
+ "body": "Adminium schreibt nie in Ihre Datenbank — die Einrichtung nutzt nur Schema-Metadaten. Wir empfehlen einen dedizierten Benutzer mit reinen SELECT-Rechten; wo Adminium seine eigenen Tabellen ablegt, entscheiden Sie im Meta-Speicher-Schritt."
322
+ }
323
+ },
324
+ "capability": {
325
+ "mysqlApproxRows": "MySQL-Zeilenzahlen sind Schätzungen der Storage-Engine (Abweichungen bis ±40 % möglich) — sie werden mit ≈ angezeigt.",
326
+ "mysqlFkEnum": "MySQL liefert schwächere FK-/Enum-Metadaten: MyISAM-Tabellen deklarieren keine Fremdschlüssel, Enums sind spaltengebundene enum(…)-Typen, und CHECK-Constraints erfordern MySQL 8.0.16+ / MariaDB 10.2+.",
327
+ "sqliteCheckEnums": "SQLite hat keinen nativen Enum-Typ — Enums werden aus CHECK-(col IN (…))-Constraints abgeleitet.",
328
+ "sqliteNoComments": "SQLite kennt keine Spaltenkommentare — verwenden Sie den Schema-Remap-Editor, um Beschriftungen zu vergeben.",
329
+ "importNoRowCounts": "Schemadateien enthalten keine Zeilenzahlen — die Tabellenliste zeigt — statt erfundener Werte.",
330
+ "importNoLiveHealth": "Keine Live-Datenbankverbindung — Health-Checks und Schema-Drift-Erkennung sind für diese Quelle nicht verfügbar.",
331
+ "rowsUnavailable": "Schemadateien haben keine Live-Datenbank — Zeilenzahlen sind unbekannt, bis Sie eine verbinden.",
332
+ "rowsRunAnalyze": "Noch keine Schätzung — führen Sie ANALYZE auf der Datenbank aus, um Zeilenzahlen zu erhalten.",
333
+ "rowsNoEstimate": "Die Engine hat für diese Tabelle keine Schätzung gemeldet.",
334
+ "rowsApproximate": "Schätzung der Storage-Engine — kann bei InnoDB um bis zu ±40 % abweichen."
335
+ },
336
+ "test": {
337
+ "log": {
338
+ "moreWarnings": "+{count} weitere Parser-Warnungen",
339
+ "connecting": "Sichere Verbindung wird aufgebaut…",
340
+ "connected": "Verbunden ({latency} ms) · schreibgeschützte Introspektion",
341
+ "connectFailed": "Verbindung fehlgeschlagen.",
342
+ "readingSchema": "Schema wird gelesen: public",
343
+ "readingFile": "Hochgeladene Schemadatei wird gelesen…",
344
+ "parsingFile": "{file} wird geparst…",
345
+ "detected": "{tables} Tabellen · {columns} Spalten erkannt",
346
+ "found": "{tables} Tabellen · {columns} Spalten gefunden",
347
+ "mapping": "Spaltentypen → Eingabe-Widgets werden zugeordnet",
348
+ "relations": "Beziehungen werden erkannt…",
349
+ "piiScan": "Suche nach PII-Spalten…",
350
+ "piiDone": "PII-Scan abgeschlossen — {count} Spalten standardmäßig maskiert",
351
+ "piiDoneUnknown": "PII-Scan abgeschlossen",
352
+ "jobFailed": "Introspektion fehlgeschlagen.",
353
+ "networkFailed": "Anfrage fehlgeschlagen — prüfen Sie Ihre Verbindung und versuchen Sie es erneut.",
354
+ "ready": "Bereit"
355
+ },
356
+ "title": "Ihr Schema wird analysiert",
357
+ "subtitle": "Tabellen, Spalten und Beziehungen werden introspiziert. Das dauert ein paar Sekunden.",
358
+ "trust": "Wir lesen nur Ihr Schema und Ihre Daten. Nichts wird verändert.",
359
+ "errorTitle": "Verbindung fehlgeschlagen",
360
+ "retry": "Erneut versuchen",
361
+ "logLabel": "Introspektionsprotokoll",
362
+ "hint": {
363
+ "auth": "Authentifizierung fehlgeschlagen — prüfen Sie Benutzername und Passwort in Ihrer DSN.",
364
+ "hostUnreachable": "Host nicht erreichbar — prüfen Sie Hostname und Port und dass die Datenbank Verbindungen von dieser Maschine akzeptiert (unsere IPs freigeben).",
365
+ "metaPlacement": "Diese Quelle kann Adminiums Meta-Tabellen nicht aufnehmen — fahren Sie mit einer separaten Meta-Datenbank fort.",
366
+ "permission": "Die Rolle hat sich verbunden, darf das Schema aber nicht lesen — erteilen Sie Ihrer Introspektionsrolle USAGE auf dem Schema.",
367
+ "timeout": "Die Datenbank hat nicht rechtzeitig geantwortet — prüfen Sie Netzwerkpfad und Auslastung und versuchen Sie es erneut.",
368
+ "tls": "TLS-Aushandlung fehlgeschlagen — versuchen Sie sslmode=require oder laden Sie das CA-Zertifikat hoch, das Ihr Server erwartet.",
369
+ "unknown": "Verbindung fehlgeschlagen — prüfen Sie die DSN und versuchen Sie es erneut."
370
+ }
371
+ },
372
+ "tables": {
373
+ "importNoCounts": "Schemadateien enthalten keine Zeilenzahlen — die Spalte zeigt —, bis eine Live-Datenbank verbunden ist.",
374
+ "title": "Wählen Sie Ihre Tabellen",
375
+ "subtitle": "Wählen Sie, welche enthalten sein sollen. Sie können das jederzeit ändern.",
376
+ "search": "Tabellen filtern…",
377
+ "listLabel": "Einbeziehbare Tabellen",
378
+ "emptyFilter": "Keine Tabellen entsprechen Ihrem Filter.",
379
+ "pii": "PII",
380
+ "highVolume": "hohes Volumen",
381
+ "highVolumeNote": "Tabellen mit über 100.000 Zeilen sind anfangs abgewählt — Ops-Tabellen gehören selten in ein Dashboard.",
382
+ "joinHidden": "{count} Join-/Systemtabellen sind vorab ausgeblendet — sie treiben weiterhin m:n-Beziehungen an."
383
+ },
384
+ "hub": {
385
+ "title": "Datenverbindungen",
386
+ "subtitle": "{healthy, number} von {total, plural, one {# Verbindung} other {# Verbindungen}} fehlerfrei",
387
+ "connectNew": "Neue Verbindung",
388
+ "stats": {
389
+ "connections": "Verbindungen",
390
+ "healthy": "Fehlerfrei",
391
+ "tables": "Einbezogene Tabellen",
392
+ "pages": "Generierte Seiten"
393
+ },
394
+ "status": {
395
+ "connected": "Verbunden",
396
+ "error": "Fehler",
397
+ "unconfigured": "Entwurf",
398
+ "testing": "Wird getestet…"
399
+ },
400
+ "card": {
401
+ "readOnly": "Schreibgeschützt",
402
+ "tables": "Tabellen",
403
+ "pages": "Seiten",
404
+ "latency": "Latenz",
405
+ "latencyMs": "{latency, number} ms",
406
+ "lastIntrospected": "Zuletzt introspiziert",
407
+ "never": "Nie"
408
+ },
409
+ "action": {
410
+ "test": "Testen",
411
+ "reintrospect": "Neu introspizieren",
412
+ "reintrospectFile": "Schemadatei-Quellen haben keine Live-Datenbank — laden Sie stattdessen die Datei erneut hoch.",
413
+ "remap": "Schema neu zuordnen",
414
+ "delete": "Löschen"
415
+ },
416
+ "test": {
417
+ "ok": "Verbindung fehlerfrei · {latency, number} ms",
418
+ "failed": "Verbindungstest fehlgeschlagen"
419
+ },
420
+ "introspect": {
421
+ "noChanges": "Schema unverändert — kein neuer Snapshot.",
422
+ "updated": "Schema neu introspiziert",
423
+ "masksProposed": "{count, plural, one {# Spalte} other {# Spalten}} zur Maskierung vorgeschlagen — im Remap-Editor prüfen.",
424
+ "failed": "Introspektion fehlgeschlagen. Versuchen Sie es erneut."
425
+ },
426
+ "delete": {
427
+ "title": "Verbindung löschen",
428
+ "body": "Dies löscht „{name}“ und die daraus generierten Seiten. Ihre Datenbank selbst bleibt unangetastet.",
429
+ "prompt": "Geben Sie {name} zur Bestätigung ein",
430
+ "confirm": "Verbindung löschen",
431
+ "cancel": "Abbrechen",
432
+ "close": "Schließen",
433
+ "success": "Verbindung „{name}“ gelöscht",
434
+ "failed": "Die Verbindung konnte nicht gelöscht werden. Versuchen Sie es erneut."
435
+ },
436
+ "empty": {
437
+ "title": "Noch keine Datenquellen",
438
+ "body": "Verbinden Sie eine Datenbank — Adminium generiert Ihr Admin-Panel aus deren Schema.",
439
+ "cta": "Datenbank verbinden"
440
+ }
441
+ },
442
+ "settingsHub": {
443
+ "title": "Workspace-Einstellungen",
444
+ "subtitle": "Identität, Sicherheit und destruktive Aktionen für diesen Workspace.",
445
+ "save": "Änderungen speichern",
446
+ "saved": "Workspace-Einstellungen aktualisiert",
447
+ "saveFailed": "Die Workspace-Einstellungen konnten nicht gespeichert werden. Versuchen Sie es erneut.",
448
+ "superAdminOnlyTitle": "Super-Admin erforderlich",
449
+ "superAdminOnly": "Nur ein Super-Admin kann Identität und Sicherheitseinstellungen des Workspace ändern.",
450
+ "identity": {
451
+ "heading": "Workspace-Identität",
452
+ "appName": {
453
+ "label": "Anwendungsname",
454
+ "helper": "Erscheint in der Seitenleiste, im Browser-Titel und in E-Mails.",
455
+ "error": "Geben Sie einen Namen mit höchstens 60 Zeichen ein."
456
+ }
457
+ },
458
+ "security": {
459
+ "heading": "Sicherheit",
460
+ "require2fa": {
461
+ "label": "Zwei-Faktor-Authentifizierung verlangen",
462
+ "desc": "Jedes Mitglied muss 2FA aktivieren, um sich anzumelden."
463
+ },
464
+ "allowSignup": {
465
+ "label": "Selbstregistrierung erlauben",
466
+ "desc": "Jeder kann ein Konto erstellen — deaktiviert bleibt der Workspace nur per Einladung zugänglich."
467
+ },
468
+ "sessionTtl": {
469
+ "label": "Sitzungsdauer (Stunden)",
470
+ "error": "Zwischen {min, number} und {max, number} Stunden."
471
+ },
472
+ "passwordMin": {
473
+ "label": "Minimale Passwortlänge",
474
+ "error": "Zwischen {min, number} und {max, number} Zeichen."
475
+ }
476
+ },
477
+ "review": {
478
+ "title": "Workspace-Einstellungen speichern",
479
+ "subtitle": "Prüfen Sie Ihre Änderungen vor dem Speichern.",
480
+ "confirm": "Änderungen speichern",
481
+ "cancel": "Abbrechen",
482
+ "close": "Schließen",
483
+ "on": "An",
484
+ "off": "Aus",
485
+ "change": "{before} → {after}"
486
+ },
487
+ "defaultsCard": {
488
+ "heading": "Standards für Darstellung & Sprache",
489
+ "body": "Workspace-weite Einstellungen für Theme, Akzentfarbe, Dichte und Sprache finden Sie unter „Globale Standards“.",
490
+ "cta": "Globale Standards öffnen"
491
+ },
492
+ "danger": {
493
+ "heading": "Gefahrenzone",
494
+ "subtitle": "Unumkehrbare Aktionen.",
495
+ "empty": "Nichts zu löschen — noch keine Verbindungen.",
496
+ "deleteDesc": "Löscht die Verbindung und die daraus generierten Seiten. Ihre Datenbank bleibt unangetastet. Kann nicht rückgängig gemacht werden.",
497
+ "deleteCta": "Verbindung löschen"
498
+ },
499
+ "aiCard": {
500
+ "heading": "KI-Anreicherung",
501
+ "body": "Konfigurieren Sie einen KI-Anbieter (oder den Kopieren-Einfügen-Umlauf), um Bezeichnungen, Gruppen und Beziehungen anzureichern.",
502
+ "cta": "KI-Einstellungen öffnen"
503
+ }
504
+ },
505
+ "settingsAi": {
506
+ "title": "KI-Anreicherung",
507
+ "subtitle": "Verbinden Sie ein Modell, damit Adminium Bezeichnungen, Gruppen, Beziehungen und mehr vorschlägt — immer als Diff geprüft, bevor etwas übernommen wird.",
508
+ "saved": "KI-Anbieter gespeichert",
509
+ "saveFailed": "Der KI-Anbieter konnte nicht gespeichert werden. Erneut versuchen.",
510
+ "save": "Anbieter speichern",
511
+ "test": "Verbindung testen",
512
+ "testHintDirty": "Speichern Sie Ihre Änderungen vor dem Test.",
513
+ "testing": "Anbieter wird angepingt…",
514
+ "testError": "Test fehlgeschlagen",
515
+ "testErrorBody": "Der Anbieter war nicht erreichbar. Prüfen Sie Schlüssel und Basis-URL.",
516
+ "testOk": "Verbunden mit {model} in {latency} ms",
517
+ "testUnknownModel": "dem Anbieter",
518
+ "provider": {
519
+ "heading": "KI-Anbieter",
520
+ "subtitle": "Wählen Sie, wie Adminium ein Modell zur Anreicherung Ihres Schemas erreicht. Schlüssel werden verschlüsselt gespeichert und nie wieder angezeigt.",
521
+ "active": "Aktiv",
522
+ "anthropic": {
523
+ "label": "Anthropic",
524
+ "desc": "Claude-Modelle über die Anthropic-API."
525
+ },
526
+ "openai": {
527
+ "label": "OpenAI",
528
+ "desc": "GPT-Modelle über die OpenAI-API."
529
+ },
530
+ "openaiCompatible": {
531
+ "label": "OpenAI-kompatibel",
532
+ "desc": "Jeder Endpunkt, der das OpenAI-Format spricht — Groq, Together, vLLM, LM Studio."
533
+ },
534
+ "ollama": {
535
+ "label": "Ollama (lokal)",
536
+ "desc": "Modelle laufen lokal über Ollama — kein Schlüssel, keine Cloud."
537
+ },
538
+ "requiresNetwork": "Erfordert Internet und einen API-Schlüssel",
539
+ "networkDisabledTitle": "Direkte KI-Anbieter sind in dieser Installation deaktiviert",
540
+ "networkDisabledBody": "Dieses Adminium ist ohne ausgehenden Internetzugang konfiguriert und kann keine Anbieter-API erreichen. Nutzen Sie unten den Kopieren-und-Einfügen-Weg — er braucht weder Schlüssel noch Netzwerk."
541
+ },
542
+ "configure": {
543
+ "heading": "{provider} konfigurieren"
544
+ },
545
+ "field": {
546
+ "baseUrl": "Basis-URL",
547
+ "baseUrlOptional": "Unverändert lassen, außer Ollama läuft auf einem anderen Host.",
548
+ "baseUrlHelper": "Die Endpunkt-Wurzel, die /chat/completions bereitstellt.",
549
+ "model": "Modell",
550
+ "modelFreeText": "Geben Sie die genaue Modell-ID ein, die Ihr Endpunkt bereitstellt.",
551
+ "modelLive": "Live vom Anbieter geladen.",
552
+ "modelStatic": "Eine bewährte Liste; geben Sie nach dem Speichern eine eigene ID ein, um sie zu aktualisieren.",
553
+ "modelLoading": "Wird geladen…",
554
+ "modelPlaceholder": "Modell auswählen…",
555
+ "key": "API-Schlüssel",
556
+ "keyStored": "Verschlüsselt gespeichert. Ersetzen Sie ihn, um einen anderen Schlüssel zu verwenden.",
557
+ "keyMask": "sk-…{last4}",
558
+ "keyReplace": "Schlüssel ersetzen",
559
+ "keyOptional": "Optional — manche Endpunkte brauchen keinen Schlüssel.",
560
+ "keyWriteOnly": "Nur schreibend: einmal gespeichert, wird er nie wieder angezeigt.",
561
+ "noKeyTitle": "Kein API-Schlüssel nötig",
562
+ "noKeyBody": "Ollama läuft lokal, es verlässt also nichts diesen Rechner."
563
+ },
564
+ "runStatus": {
565
+ "draft": "Entwurf",
566
+ "running": "Läuft",
567
+ "awaitingResponse": "Wartet auf Antwort",
568
+ "validated": "Validiert",
569
+ "applied": "Übernommen",
570
+ "partiallyApplied": "Teilweise übernommen",
571
+ "failed": "Fehlgeschlagen",
572
+ "discarded": "Verworfen"
573
+ },
574
+ "byo": {
575
+ "heading": "Kein Schlüssel? Nutzen Sie Ihr eigenes KI-Tool",
576
+ "subtitle": "Der Kopieren-Einfügen-Umlauf — nichts verlässt diesen Rechner.",
577
+ "body": "Studio kann aus Ihrem Schema einen eigenständigen Prompt erzeugen. Führen Sie ihn in Claude Code, ChatGPT oder einem beliebigen Tool aus und fügen Sie das zurückgegebene JSON wieder in den Verbindungsassistenten ein. Gleiche Validierung, gleiche Prüfung, gleiches Ergebnis wie der direkte Weg.",
578
+ "guaranteeTitle": "Telemetriefreie Garantie",
579
+ "guarantee1": "Der Prompt enthält nur Ihr Schema und aggregierte Statistiken — standardmäßig nie Zeilendaten.",
580
+ "guarantee2": "Keine Anmeldedaten, keine Instanz-URL, keine Kennungen sind eingebettet.",
581
+ "guarantee3": "BYO-Läufe machen keinerlei Netzwerkaufrufe.",
582
+ "promptVersion": "Prompt {version}",
583
+ "schemaVersion": "Schema {version}",
584
+ "headingRecommended": "Eigenes KI-Tool verwenden — kein Schlüssel nötig",
585
+ "recommended": "Empfohlen"
586
+ },
587
+ "history": {
588
+ "heading": "Laufverlauf",
589
+ "subtitle": "Frühere Anreicherungsläufe. Öffnen Sie einen, um seine Vorschläge zu prüfen.",
590
+ "tableLabel": "Anreicherungsläufe",
591
+ "colDate": "Datum",
592
+ "colSource": "Quelle",
593
+ "colStatus": "Status",
594
+ "colChunks": "Blöcke",
595
+ "openReview": "Prüfung für den Lauf vom {date} öffnen",
596
+ "connection": "Verbindung",
597
+ "empty": "Noch keine Anreicherungsläufe. Reichern Sie ein Schema im Verbindungsassistenten an, um hier Verlauf zu sehen.",
598
+ "errorTitle": "Läufe konnten nicht geladen werden",
599
+ "errorBody": "Laden Sie die Seite neu, um es erneut zu versuchen.",
600
+ "noConnections": "Verbinden Sie zuerst eine Datenbank — Anreicherungsläufe werden pro Verbindung erfasst.",
601
+ "byo": "BYO",
602
+ "directPath": "Direkt"
603
+ }
604
+ },
605
+ "enrich": {
606
+ "title": "Mit KI anreichern",
607
+ "subtitle": "Verfeinern Sie die generierten Bezeichnungen, Gruppen, Enums und Dashboards optional mit einem LLM. Die heuristische Grundlage funktioniert auch ohne — dies fügt nur Vorschläge hinzu, die Sie prüfen, bevor etwas angewendet wird.",
608
+ "intentLabel": "Wie möchten Sie anreichern?",
609
+ "sectionsLegend": "Worüber soll die KI entscheiden?",
610
+ "localesLegend": "Bezeichnungen übersetzen in",
611
+ "localeLocked": "(erforderlich)",
612
+ "samplingTitle": "Beispielwerte einbeziehen",
613
+ "samplingHint": "Nimmt bis zu 20 echte Werte pro Nicht-PII-Spalte in den Prompt auf.",
614
+ "samplingPreviewTitle": "Was diesen Rechner verlässt",
615
+ "samplingPreviewBody": "Bis zu 20 häufigste Werte pro Nicht-PII-Spalte, plus Min/Max für numerische und Datumsspalten. Als PII markierte Spalten werden nie beprobt. Alles Übrige bleibt rein aggregiert. Prüfen Sie den genauen Prompt vor dem Kopieren (BYO) — ohne Ihr Zutun wird nichts gesendet.",
616
+ "noSections": "Wählen Sie mindestens eine Entscheidungsgruppe zum Anreichern.",
617
+ "generatePrompt": "Prompt erzeugen",
618
+ "startProvider": "Anreicherung starten",
619
+ "startOver": "Von vorn beginnen",
620
+ "copied": "Kopiert",
621
+ "createFailed": "Der Anreicherungs-Prompt konnte nicht erstellt werden — erneut versuchen.",
622
+ "createFailedTitle": "Konnte nicht starten",
623
+ "providerFallback": "Ihr KI-Anbieter",
624
+ "fileTitle": "KI-Anreicherung benötigt eine aktive Datenbank",
625
+ "fileBody": "Schema-Datei-Quellen haben noch keinen Snapshot zum Anreichern. Verbinden Sie eine aktive Datenbank für die KI-Anreicherung, oder fahren Sie fort — die heuristische Grundlage erzeugt weiterhin eine vollständige App.",
626
+ "section": {
627
+ "labels": "Bezeichnungen & Beschreibungen",
628
+ "groups": "Navigationsgruppen",
629
+ "enums": "Enum-Semantik",
630
+ "relations": "Beziehungen",
631
+ "keys": "Schlüsselspalten",
632
+ "templates": "Seitenvorlagen",
633
+ "widgets": "Dashboard-Widgets",
634
+ "pii": "PII & Maskierung",
635
+ "icons": "Symbole",
636
+ "microcopy": "Mikrotexte"
637
+ },
638
+ "provider": {
639
+ "title": "Meinen KI-Anbieter verwenden",
640
+ "description": "Führen Sie die Anreicherung jetzt mit Ihrem konfigurierten Anbieter aus. Sie prüfen jeden Vorschlag als Diff.",
641
+ "unconfigured": "Es ist noch kein KI-Anbieter konfiguriert — kopieren Sie unten einen Prompt in Ihr eigenes Tool, oder konfigurieren Sie zuerst einen Anbieter.",
642
+ "settingsHint": "Möchten Sie es direkt ausführen?",
643
+ "settingsLink": "Anbieter in Einstellungen → KI konfigurieren",
644
+ "networkDisabled": "Dieses Adminium hat keinen ausgehenden Internetzugang und kann keine Anbieter-API erreichen. Nutzen Sie stattdessen den Kopieren-und-Einfügen-Weg — gleicher Prompt, gleiche Prüfung."
645
+ },
646
+ "byo": {
647
+ "cardTitle": "Einen Prompt in mein eigenes KI-Tool kopieren",
648
+ "cardDescription": "Kopieren Sie einen eigenständigen Prompt in Claude Code, ChatGPT oder ein beliebiges Tool — und fügen Sie das JSON zurück ein. Kein Schlüssel nötig, nichts verlässt diesen Rechner automatisch.",
649
+ "guidance": "Führen Sie dies in einem beliebigen KI-Tool aus — Claude Code, ChatGPT, egal. Fügen Sie das zurückgegebene JSON unten ein.",
650
+ "promptLabel": "Anreicherungs-Prompt",
651
+ "promptLabelN": "Anreicherungs-Prompt {index} von {total}",
652
+ "tokenChip": "≈ {tokens} Tokens",
653
+ "copyPrompt": "Prompt kopieren",
654
+ "copyPromptDone": "Prompt kopiert",
655
+ "download": ".md herunterladen",
656
+ "chunkTabs": "Prompt-Abschnitte",
657
+ "chunkTab": "Prompt {index}",
658
+ "chunkValid": "Abschnitt {index} validiert",
659
+ "pasteLabel": "JSON-Antwort einfügen",
660
+ "pastePlaceholder": "JSON-Antwort hier einfügen…",
661
+ "validate": "Validieren",
662
+ "valid": "Antwort validiert",
663
+ "mergedTitle": "Alle {count} Abschnitte validiert und zusammengeführt",
664
+ "mergedTitleSingle": "Antwort validiert",
665
+ "mergedBody": "Die Vorschläge können nun gegen die heuristische Grundlage geprüft werden.",
666
+ "errorsTitle": "Die Validierung fand {count} Probleme",
667
+ "copyErrors": "Fehler für Ihr KI-Tool kopieren",
668
+ "copyErrorsDone": "Fehler kopiert",
669
+ "copyErrorsHint": "Fügen Sie dies in Ihr KI-Tool zurück ein, um eine korrigierte Antwort zu erhalten.",
670
+ "droppedItems": "{count} Vorschläge wurden bei der Validierung verworfen — die Prüfung zeigt die übrigen.",
671
+ "pendingTitle": "Validieren Sie jeden Prompt, um fortzufahren",
672
+ "pendingBody": "Fügen Sie die JSON-Antwort oben ein und validieren Sie sie, um zur Prüfung fortzufahren.",
673
+ "pendingBodyChunked": "Jeder Abschnitt muss validiert werden, bevor die Vorschläge zusammengeführt werden. Fügen Sie jeden Prompt oben ein und validieren Sie ihn.",
674
+ "requestFailed": "Der Server war für die Validierung nicht erreichbar — erneut versuchen.",
675
+ "continueReview": "Weiter zur Prüfung",
676
+ "wholeDocument": "gesamtes Dokument",
677
+ "cardTitleRecommended": "Prompt in mein eigenes KI-Tool kopieren — empfohlen"
678
+ },
679
+ "direct": {
680
+ "title": "Anreicherung mit KI",
681
+ "subtitle": "Ihr Schema wird gesendet an",
682
+ "building": "Prompt wird erstellt…",
683
+ "logLabel": "Anreicherungsprotokoll",
684
+ "cancel": "Abbrechen",
685
+ "back": "Zurück zu den Optionen",
686
+ "retry": "Erneut versuchen",
687
+ "done": "Anreicherung abgeschlossen — prüfen Sie die Vorschläge.",
688
+ "continueReview": "Weiter zur Prüfung",
689
+ "failed": "Der Anbieterlauf ist fehlgeschlagen. Prüfen Sie Ihre KI-Einstellungen und versuchen Sie es erneut.",
690
+ "jobFailed": "Der Anreicherungslauf wurde nicht abgeschlossen.",
691
+ "startFailed": "Der Lauf konnte nicht gestartet werden — erneut versuchen.",
692
+ "errorTitle": "Anreicherung fehlgeschlagen"
693
+ },
694
+ "skip": {
695
+ "title": "Überspringen — nur Heuristik verwenden",
696
+ "description": "Aus der heuristischen Grundlage generieren. Sie können später über Einstellungen → KI anreichern — Überspringen wird nie bestraft.",
697
+ "confirmTitle": "Weiter mit Heuristik",
698
+ "confirmBody": "Die generierte App verwendet die heuristischen Bezeichnungen, Gruppen und Dashboards. Fahren Sie mit dem Generieren fort — Sie können die KI-Anreicherung jederzeit über Einstellungen → KI ausführen."
699
+ }
700
+ },
701
+ "review": {
702
+ "unavailableTitle": "Prüfungsansicht nicht verfügbar",
703
+ "unavailableBody": "Dieser Build enthält die Anreicherungs-Prüfungsansicht noch nicht (06-T14). Sie kommt mit dem Diff-und-Übernehmen-Ablauf."
704
+ },
705
+ "llmRuns": {
706
+ "review": {
707
+ "header": {
708
+ "title": "KI-Vorschläge prüfen",
709
+ "model": "Modell",
710
+ "snapshot": "Snapshot",
711
+ "byo": "BYO",
712
+ "pathDirect": "Direkte API",
713
+ "pathByo": "Kopieren & Einfügen",
714
+ "agree": "{n} übereinstimmend",
715
+ "conflict": "{n} Konflikt",
716
+ "new": "{n} neu",
717
+ "rejects": "{n} Ablehnungen",
718
+ "countsAria": "Anzahl der Vorschläge"
719
+ },
720
+ "bulk": {
721
+ "thresholdLabel": "Konfidenzschwelle",
722
+ "thresholdAria": "Konfidenzschwelle für „Alle übernehmen“",
723
+ "acceptAll": "Alle ≥ {pct}% übernehmen",
724
+ "clear": "Auswahl aufheben"
725
+ },
726
+ "section": {
727
+ "selectAllAria": "Alle in {group} auswählen",
728
+ "acceptedCount": "{n} übernommen"
729
+ },
730
+ "group": {
731
+ "labels": "Bezeichnungen & Übersetzungen",
732
+ "navigation": "Navigation & Domänen",
733
+ "enums": "Enum-Semantik",
734
+ "relations": "Beziehungen",
735
+ "keys": "Schlüsselspalten",
736
+ "templates": "Seitenvorlagen",
737
+ "dashboards": "Dashboards & Widgets",
738
+ "pii": "PII & Maskierung",
739
+ "icons": "Symbole",
740
+ "microcopy": "Mikrotexte"
741
+ },
742
+ "status": {
743
+ "agree": "Stimmt überein",
744
+ "conflict": "Konflikt",
745
+ "new": "Neu",
746
+ "heuristicOnly": "Nur Heuristik",
747
+ "rejects": "Lehnt Heuristik ab",
748
+ "locked": "Gesperrt"
749
+ },
750
+ "row": {
751
+ "acceptAria": "{noun}-Vorschlag für {target} übernehmen",
752
+ "keptEdited": "beibehalten – von Ihnen bearbeitet",
753
+ "rejectsCallout": "Die KI lehnt eine heuristische Entscheidung ab – vor dem Übernehmen bestätigen.",
754
+ "showTranslations": "Übersetzungen anzeigen",
755
+ "hideTranslations": "Übersetzungen ausblenden",
756
+ "confidenceAria": "Konfidenz {pct}%",
757
+ "noAi": "Kein KI-Vorschlag"
758
+ },
759
+ "value": {
760
+ "none": "Kein Wert",
761
+ "absent": "Keiner",
762
+ "dash": "—",
763
+ "display": "Anzeige",
764
+ "key": "Schlüssel",
765
+ "rank": "Rang {n}",
766
+ "span": "Breite {n}",
767
+ "tableCount": "{n} Tabellen",
768
+ "widgetCount": "{n} Widgets",
769
+ "enumWorkflow": "Workflow",
770
+ "enumCategory": "Kategorie",
771
+ "notPii": "Keine PII",
772
+ "label": "Bezeichnung",
773
+ "description": "Beschreibung",
774
+ "subtitle": "Seitenuntertitel",
775
+ "headline": "Überschrift für leeren Zustand",
776
+ "guidance": "Hinweis für leeren Zustand"
777
+ },
778
+ "apply": {
779
+ "title": "{n} Vorschläge übernehmen",
780
+ "subtitle": "Diese Änderungen werden in einer Transaktion geschrieben und können rückgängig gemacht werden.",
781
+ "empty": "Nichts zum Übernehmen ausgewählt.",
782
+ "confirm": "Änderungen übernehmen"
783
+ },
784
+ "footer": {
785
+ "count": "{n} Vorschläge ausgewählt",
786
+ "apply": "{n} übernommene Vorschläge anwenden",
787
+ "failed": "Anwenden fehlgeschlagen"
788
+ },
789
+ "toast": {
790
+ "applied": "{n} Vorschläge übernommen",
791
+ "appliedPartial": "{n} Vorschläge übernommen (einige übersprungen)",
792
+ "applyFailed": "Vorschläge konnten nicht übernommen werden",
793
+ "undoFailed": "Diese Änderung konnte nicht rückgängig gemacht werden"
794
+ },
795
+ "error": {
796
+ "title": "Dieser Lauf konnte nicht geladen werden"
797
+ },
798
+ "notReady": {
799
+ "title": "Dieser Lauf hat noch keine Vorschläge zur Prüfung",
800
+ "body": "Ein Lauf muss validiert sein, bevor seine Vorschläge geprüft werden können. Erzeugen oder fügen Sie zuerst eine Antwort ein."
801
+ },
802
+ "applied": {
803
+ "title": "Dieser Lauf wurde angewendet",
804
+ "body": "Die übernommenen Vorschläge unten sind schreibgeschützt."
805
+ },
806
+ "empty": {
807
+ "title": "Keine Vorschläge",
808
+ "body": "Dieser Lauf hat keine Vorschläge zur Prüfung erzeugt."
809
+ },
810
+ "cat": {
811
+ "label": "Bezeichnung",
812
+ "key": "Schlüsselspalten",
813
+ "enum": "Enum",
814
+ "relation": "Beziehung",
815
+ "pii": "PII",
816
+ "template": "Seitenvorlage",
817
+ "group": "Navigationsgruppe",
818
+ "dashboard": "Dashboard",
819
+ "widget": "Widget",
820
+ "copy": "Mikrotext"
821
+ }
822
+ }
823
+ },
824
+ "wizard": {
825
+ "title": "Neue Verbindung",
826
+ "back": "Zurück",
827
+ "continue": "Weiter",
828
+ "progress": "Einrichtungsfortschritt",
829
+ "persistFailed": "Ihre Tabellenauswahl konnte nicht gespeichert werden — versuchen Sie es erneut.",
830
+ "persistFailedTitle": "Speichern fehlgeschlagen",
831
+ "step": {
832
+ "source": "Quelle",
833
+ "test": "Analysieren",
834
+ "tables": "Tabellen",
835
+ "meta": "Meta-Speicher",
836
+ "intent": "Zweck",
837
+ "enrich": "Anreichern",
838
+ "generate": "Generieren"
839
+ }
840
+ },
841
+ "meta": {
842
+ "title": "Wo soll Adminium seine eigenen Tabellen ablegen?",
843
+ "subtitle": "Seiten, Rollen, Audit-Log und Einstellungen liegen in Tabellen mit adminium_-Präfix — nie mit Ihren Daten vermischt.",
844
+ "sameDb": {
845
+ "title": "Gleiche Datenbank",
846
+ "description": "adminium_*-Tabellen werden neben Ihren Quelltabellen angelegt. Einfachste Einrichtung — benötigt eine Rolle mit Schreib- und CREATE-TABLE-Rechten.",
847
+ "disabledReadOnly": "Ihre Rolle ist schreibgeschützt — Adminium schreibt nie in diese Datenbank. Wählen Sie für Adminiums eigene Tabellen eine separate Datenbank.",
848
+ "disabledNoDdl": "Diese Rolle darf kein DDL ausführen — Adminium-Migrationen benötigen CREATE TABLE. Wählen Sie für Adminiums eigene Tabellen eine separate Datenbank.",
849
+ "disabledFile": "Eine Schemadatei hat keine Live-Datenbank — wählen Sie für Adminiums eigene Tabellen eine separate Datenbank."
850
+ },
851
+ "separate": {
852
+ "title": "Separate Datenbank",
853
+ "description": "Adminium hält seine Tabellen in einer anderen Datenbank. Ihre Quelle bleibt unangetastet — erforderlich für schreibgeschützte Quellen.",
854
+ "dsn": "Verbindungszeichenfolge der Meta-Datenbank",
855
+ "helper": "Benötigt Schreib- und DDL-Rechte — Adminium führt dort seine eigenen Migrationen aus.",
856
+ "test": "Verbindung testen",
857
+ "ok": "Kompatibel — Schreiben ✓ · DDL ✓",
858
+ "insufficient": "Diese Rolle kann den Meta-Store nicht aufnehmen — Adminium benötigt dort Schreib- und CREATE-TABLE-Rechte.",
859
+ "errorTitle": "Meta-Store nicht kompatibel"
860
+ },
861
+ "testFailed": "Verbindung fehlgeschlagen.",
862
+ "v1Note": {
863
+ "title": "Über diese Installation",
864
+ "body": "Dieser Server hat seinen Meta-Store beim ersten Start gewählt. Dieser Schritt prüft, ob Ihre Wahl mit dieser Verbindung kompatibel ist, und hält sie fest — der Server erzwingt dieselbe Regel unabhängig (409 META_PLACEMENT_INVALID). Einen bestehenden Meta-Store zu verschieben ist eine Ops-Aufgabe (M10)."
865
+ }
866
+ },
867
+ "intent": {
868
+ "title": "Was brauchen Sie?",
869
+ "subtitle": "Der Zweck bestimmt, welche Seiten generiert werden. Sie können ihn später ändern — eine Änderung schlägt eine Neugenerierung vor, nie ein stilles Überschreiben.",
870
+ "trust": "Wir lesen nur Ihr Schema — während der Einrichtung nie Ihre Zeilendaten.",
871
+ "fullAdmin": {
872
+ "title": "Vollständiges Admin-Panel",
873
+ "description": "Dashboards, CRUD-Seiten, Suche, Importe und Exporte — alles, was Ihr Schema unterstützt."
874
+ },
875
+ "analytics": {
876
+ "title": "Schreibgeschützte Analysen",
877
+ "description": "Dashboards, Diagramme und schreibgeschützte Tabellen. Keine Formulare, keine Schreibvorgänge — jede Rolle auf Betrachter begrenzt."
878
+ },
879
+ "crud": {
880
+ "title": "CRUD-Tabellen",
881
+ "description": "Eine Bearbeitungsseite pro Tabelle plus Suche und Import/Export — ein minimales Zuhause, keine Dashboards."
882
+ },
883
+ "support": {
884
+ "title": "Support-Konsole",
885
+ "description": "Zuerst Warteschlangen, Ticket- und Kundendetailseiten. Löschen standardmäßig aus. (Queue-Vorlagen kommen mit M7 — der v1-Seitensatz entspricht dem vollständigen Admin.)"
886
+ }
887
+ },
888
+ "generate": {
889
+ "title": "Generieren Sie Ihre App",
890
+ "subtitle": "Eine Seite pro einbezogener Tabelle plus Dashboards je Domäne — Zweck:",
891
+ "run": "Dashboard generieren",
892
+ "openApp": "App öffnen",
893
+ "logLabel": "Generierungsprotokoll",
894
+ "log": {
895
+ "classifying": "Schema wird klassifiziert…",
896
+ "composing": "Vorlagen werden zusammengestellt…",
897
+ "writing": "Seiten werden geschrieben…",
898
+ "done": "{pages} Seiten in {groups} Navigationsgruppen generiert"
899
+ },
900
+ "successTitle": "Ihr Dashboard ist bereit",
901
+ "successBody": "{pages} Seiten in {groups} Navigationsgruppen — aus Ihrem Schema generiert, im Studio bearbeitbar.",
902
+ "errorTitle": "Generierung fehlgeschlagen",
903
+ "failed": "Generierung fehlgeschlagen — versuchen Sie es erneut oder führen Sie zuerst die Introspektion erneut aus.",
904
+ "fileTitle": "Schemadatei geparst — die Generierung benötigt eine Live-Datenbank",
905
+ "fileBody": "Ihr Schema wurde sauber geparst und die Vorschau oben ist echt. Eine laufende App direkt aus einer Schemadatei (mit Platzhalterzeilen) zu generieren ist noch nicht verfügbar — verbinden Sie eine Live-Datenbank, um heute zu generieren."
906
+ },
907
+ "remap": {
908
+ "column": {
909
+ "nullable": "nullable",
910
+ "labelOverride": "Anzeigebezeichnung",
911
+ "labelHelper": "Abgeleitet: {name}",
912
+ "logicalType": "Logischer Typ",
913
+ "logicalTypeHelper": "Abgeleitet: {type} (aus {dbType}) — vom Adapter zugeordnet; in v1 nicht überschreibbar.",
914
+ "semantic": "Semantischer Typ",
915
+ "unclassified": "Noch nicht klassifiziert.",
916
+ "semanticHelper": "Klassifizierer: {tag} · {confidence}% Konfidenz · Quelle: {source}",
917
+ "semanticInferred": "abgeleitet: {tag}",
918
+ "currency": "Währung",
919
+ "currencyHelper": "ISO-4217-Code für die Formatierung von Geldbeträgen.",
920
+ "pii": "Standardmäßig maskieren",
921
+ "piiHelper": "Maskierte Werte werden geschwärzt dargestellt; das Aufheben der Maskierung erfordert die Berechtigung data.unmask_pii und wird im Audit-Log protokolliert.",
922
+ "enum": "Enum-Semantik",
923
+ "enumKind": "Enum-Art",
924
+ "enumWorkflow": "Workflow",
925
+ "enumCategory": "Kategorie",
926
+ "enumLabelFor": "Bezeichnung für {value}",
927
+ "enumToneFor": "Farbton für {value}",
928
+ "enumToneAuto": "auto",
929
+ "enumHelper": "Workflow-Enums steuern Status-Pills und Board-Spalten; Farbtöne ordnen Werte der semantischen Farbtonskala zu."
930
+ },
931
+ "diff": {
932
+ "one": "1 Änderung",
933
+ "count": "{count} Änderungen",
934
+ "saved": "Überschreibungen gespeichert.",
935
+ "revertOne": "{change} verwerfen",
936
+ "regenerate": "Seiten neu generieren",
937
+ "revertAll": "Alle verwerfen",
938
+ "save": "Überschreibungen speichern"
939
+ },
940
+ "table": {
941
+ "iconPicker": "Tabellensymbol",
942
+ "system": "System",
943
+ "labelOverride": "Anzeigebezeichnung",
944
+ "labelHelper": "Abgeleitet: {name}",
945
+ "icon": "Symbol",
946
+ "navGroup": "Navigationsgruppe",
947
+ "navGroupHelper": "Die Platzierung in der Navigation entscheidet der Generator — eine table.navGroup-Überschreibung ist nicht Teil des v1-Vokabulars.",
948
+ "include": "In die generierte App einbeziehen",
949
+ "includeHelper": "Ausgeschlossene Tabellen erhalten keine Seiten und verschwinden aus der Navigation.",
950
+ "shape": "Tabellenform (klassifiziert)",
951
+ "role": "Rolle",
952
+ "unclassified": "Nicht klassifiziert",
953
+ "kind": "Art",
954
+ "hierarchy": "Hierarchie",
955
+ "selfFk": "Selbstreferenz über {column}",
956
+ "polymorphic": "Polymorphe Paare",
957
+ "rows": "Geschätzte Zeilenzahl",
958
+ "shapeHelper": "Die Klassifikation wird bei jeder Introspektion neu berechnet; Überschreibungen liegen darüber und überstehen die Neugenerierung."
959
+ },
960
+ "relations": {
961
+ "declared": "Deklarierte Fremdschlüssel",
962
+ "noneDeclared": "Keine deklarierten Fremdschlüssel berühren diese Tabelle.",
963
+ "inferred": "Abgeleitete Beziehungen",
964
+ "noneInferred": "Für diese Tabelle wurde nichts abgeleitet.",
965
+ "confidence": "abgeleitet · {pct}%",
966
+ "accepted": "Übernommen",
967
+ "suppressed": "Unterdrückt",
968
+ "accept": "Übernehmen",
969
+ "suppress": "Unterdrücken",
970
+ "overrides": "Beziehungs-Überschreibungen (angewendet)",
971
+ "overrideBadge": "Überschreibung",
972
+ "add": "Virtuelle Beziehung hinzufügen",
973
+ "fromColumn": "Quellspalte",
974
+ "noColumns": "Keine passende Spalte",
975
+ "fromPlaceholder": "customer_id",
976
+ "toTable": "Zieltabelle",
977
+ "noTables": "Keine passende Tabelle",
978
+ "toColumn": "Zielspalte",
979
+ "cardinality": "Kardinalität",
980
+ "addButton": "Beziehung hinzufügen"
981
+ },
982
+ "toast": {
983
+ "saved": "Schema-Überschreibungen gespeichert",
984
+ "savedDetail": "Das angewendete Schema unten spiegelt Ihre Änderungen wider.",
985
+ "regenerated": "{created} erstellt · {updated} aktualisiert · {unchanged} unverändert",
986
+ "regeneratedDetail": "Von Hand bearbeitete Seiten bleiben erhalten — nur Seiten mit unangetastetem generated_hash wurden an Ort und Stelle neu generiert.",
987
+ "regenerateFailed": "Neugenerierung fehlgeschlagen"
988
+ },
989
+ "title": "Schema neu zuordnen",
990
+ "subtitle": "{tables} Tabellen · {applied} Überschreibungen angewendet",
991
+ "saveFailed": "Speichern fehlgeschlagen: {message}",
992
+ "loadFailed": "Das Schema für diese Verbindung konnte nicht geladen werden.",
993
+ "inspector": "Inspektor",
994
+ "empty": {
995
+ "title": "Wählen Sie eine Tabelle oder Spalte",
996
+ "description": "Wählen Sie etwas im Schemabaum aus, um Bezeichnung, Typ, Beziehungen oder Maskierung neu zuzuordnen."
997
+ },
998
+ "tabs": {
999
+ "details": "Details",
1000
+ "relations": "Beziehungen"
1001
+ },
1002
+ "tree": {
1003
+ "label": "Schema",
1004
+ "search": "Tabellen und Spalten durchsuchen",
1005
+ "searchPlaceholder": "Tabellen durchsuchen…",
1006
+ "noMatches": "Keine Tabellen entsprechen Ihrer Suche.",
1007
+ "collapse": "Tabelle einklappen",
1008
+ "expand": "Tabelle ausklappen",
1009
+ "unsaved": "Ungespeicherte Änderung",
1010
+ "excluded": "Ausgeschlossen"
1011
+ },
1012
+ "badge": {
1013
+ "pk": "PK",
1014
+ "fk": "FK",
1015
+ "unique": "UNIQUE",
1016
+ "pii": "PII",
1017
+ "masked": "Maskiert"
1018
+ }
1019
+ }
1020
+ },
1021
+ "onboarding": {
1022
+ "title": "Erste Schritte",
1023
+ "subtitle": "Ein paar Schritte, um Ihren Workspace einzurichten.",
1024
+ "loading": "Setup-Checkliste wird geladen…",
1025
+ "welcome": "Willkommen bei Adminium, {name} 👋",
1026
+ "progressBody": "Sie haben {done} von {total} Einrichtungsschritten abgeschlossen. Schließen Sie die übrigen ab, um den vollen Workspace freizuschalten.",
1027
+ "completeBody": "Alles erledigt — Ihr Workspace ist vollständig eingerichtet.",
1028
+ "ringLabel": "{done} von {total} Schritten abgeschlossen",
1029
+ "done": "Erledigt",
1030
+ "skip": "Später",
1031
+ "goToWorkspace": "Zum Workspace",
1032
+ "help": {
1033
+ "title": "Brauchen Sie Hilfe?",
1034
+ "body": "Wir helfen Ihnen gern beim schnellen Einrichten."
1035
+ },
1036
+ "steps": {
1037
+ "connectDatabase": {
1038
+ "title": "Datenbank verbinden",
1039
+ "desc": "Verbinden Sie Adminium mit Ihrer Postgres-, MySQL- oder SQLite-Datenbank — eine Nur-Lese-Rolle genügt.",
1040
+ "time": "5 Min.",
1041
+ "action": "Verbinden"
1042
+ },
1043
+ "chooseTables": {
1044
+ "title": "Tabellen auswählen",
1045
+ "desc": "Wählen Sie, welche Tabellen zu Seiten werden — PII wird standardmäßig maskiert.",
1046
+ "time": "2 Min.",
1047
+ "action": "Auswählen"
1048
+ },
1049
+ "inviteTeammates": {
1050
+ "title": "Teammitglieder einladen",
1051
+ "desc": "Holen Sie Ihr Team zum Erkunden und Zusammenarbeiten dazu.",
1052
+ "time": "2 Min.",
1053
+ "action": "Einladen"
1054
+ },
1055
+ "workspaceDefaults": {
1056
+ "title": "Workspace-Standards festlegen",
1057
+ "desc": "Design, Akzent, Dichte und Sprache für alle.",
1058
+ "time": "1 Min.",
1059
+ "action": "Festlegen"
1060
+ }
1061
+ },
1062
+ "entry": {
1063
+ "wayBack": "Erste Schritte · {done}/{total}",
1064
+ "dismiss": "Setup-Checkliste ausblenden",
1065
+ "continue": "Setup fortsetzen",
1066
+ "banner": "Richten Sie Ihren Workspace fertig ein — {done} von {total} Schritten erledigt."
1067
+ }
1068
+ },
1069
+ "views": {
1070
+ "baseView": "Alle Datensätze",
1071
+ "menuLabel": "Gespeicherte Ansichten",
1072
+ "saveAs": "Aktuelle als Ansicht speichern…",
1073
+ "updateActive": "„{name}“ aktualisieren",
1074
+ "rename": "Umbenennen…",
1075
+ "setDefault": "Als Standard festlegen",
1076
+ "delete": "Löschen…",
1077
+ "saveTitle": "Ansicht speichern",
1078
+ "save": "Ansicht speichern",
1079
+ "renameTitle": "Ansicht umbenennen",
1080
+ "saveName": "Namen speichern",
1081
+ "nameLabel": "Ansichtsname",
1082
+ "namePlaceholder": "z. B. Diesen Monat aktiv",
1083
+ "nameRequired": "Geben Sie einen Namen für diese Ansicht ein.",
1084
+ "saveFailed": "Ansicht konnte nicht gespeichert werden.",
1085
+ "deleteTitle": "Ansicht löschen",
1086
+ "deleteBody": "Dies entfernt die gespeicherte Ansicht. Ihre Daten sind nicht betroffen.",
1087
+ "deletePrompt": "Zum Bestätigen den Ansichtsnamen eingeben",
1088
+ "deleteConfirm": "Ansicht löschen",
1089
+ "savedToast": "Ansicht „{name}“ gespeichert.",
1090
+ "updatedToast": "Ansicht „{name}“ aktualisiert.",
1091
+ "defaultToast": "„{name}“ ist jetzt die Standardansicht.",
1092
+ "deletedToast": "Ansicht „{name}“ gelöscht."
1093
+ },
1094
+ "builder": {
1095
+ "view": "Ansicht",
1096
+ "edit": "Bearbeiten",
1097
+ "done": "Fertig",
1098
+ "addWidget": "Widget hinzufügen",
1099
+ "saveLayout": "Layout speichern",
1100
+ "saving": "Wird gespeichert …",
1101
+ "savedShort": "Gespeichert",
1102
+ "options": "Dashboard-Optionen",
1103
+ "resetLayout": "Layout zurücksetzen",
1104
+ "resetTitle": "Auf das geteilte Layout zurücksetzen?",
1105
+ "resetBody": "Dadurch werden deine persönlichen Änderungen entfernt und das Dashboard wiederhergestellt, das alle sehen. Deine Daten sind nicht betroffen.",
1106
+ "resetConfirm": "Layout zurücksetzen",
1107
+ "resetDone": "Layout auf die geteilte Standardansicht zurückgesetzt.",
1108
+ "sharedNote": "Du bearbeitest das geteilte Dashboard, das alle sehen.",
1109
+ "personalNote": "Du bearbeitest dein persönliches Layout – nur du siehst diese Änderungen.",
1110
+ "savedShared": "Dashboard für alle mit Zugriff gespeichert.",
1111
+ "empty": "Dieses Dashboard enthält noch keine Widgets.",
1112
+ "emptyAction": "Widget hinzufügen",
1113
+ "palette": {
1114
+ "title": "Widget hinzufügen",
1115
+ "count": "{count} Widgets",
1116
+ "searchLabel": "Widgets durchsuchen",
1117
+ "searchPlaceholder": "Widgets durchsuchen …",
1118
+ "clear": "Suche löschen",
1119
+ "noResults": "Keine Widgets passen zu „{query}“.",
1120
+ "add": "{name} hinzufügen",
1121
+ "added": "{name} hinzugefügt."
1122
+ },
1123
+ "inspector": {
1124
+ "title": "Widget konfigurieren",
1125
+ "empty": "Dieses Widget hat keine konfigurierbaren Optionen.",
1126
+ "locked": "Gesperrt",
1127
+ "lockedHint": "Dieses Feld wird von der Quelle festgelegt und kann hier nicht bearbeitet werden.",
1128
+ "selectPlaceholder": "Auswählen …",
1129
+ "increment": "Erhöhen",
1130
+ "decrement": "Verringern",
1131
+ "done": "Fertig"
1132
+ },
1133
+ "item": {
1134
+ "configure": "{name} konfigurieren",
1135
+ "duplicate": "{name} duplizieren",
1136
+ "remove": "{name} entfernen",
1137
+ "removed": "{name} entfernt.",
1138
+ "duplicated": "{name} dupliziert."
1139
+ },
1140
+ "families": {
1141
+ "kpi": "KPIs",
1142
+ "charts": "Diagramme",
1143
+ "tables": "Tabellen",
1144
+ "feeds": "Feeds",
1145
+ "calendar": "Kalender",
1146
+ "boards": "Boards",
1147
+ "geo": "Karten",
1148
+ "media": "Medien",
1149
+ "communication": "Kommunikation",
1150
+ "forms": "Formulare",
1151
+ "chrome": "Navigation",
1152
+ "system": "System",
1153
+ "domain": "Domäne"
1154
+ },
1155
+ "versions": "Versionen",
1156
+ "versionsEmpty": "Noch keine gespeicherten Versionen",
1157
+ "saveAsVersion": "Als Version speichern",
1158
+ "saveVersionTitle": "Version speichern",
1159
+ "saveVersionBody": "Erstellt einen Schnappschuss des aktuellen Dokuments. Über „Versionen“ jederzeit wiederherstellbar.",
1160
+ "versionName": "Versionsname",
1161
+ "versionNamePlaceholder": "z. B. Vor der Q3-Preisänderung"
1162
+ },
1163
+ "setup": {
1164
+ "title": "Adminium einrichten",
1165
+ "subtitle": "Legen Sie den ersten Administrator an. Das geschieht nur einmal.",
1166
+ "progress": "Einrichtungsfortschritt",
1167
+ "steps": {
1168
+ "account": "Administratorkonto",
1169
+ "consent": "Datenschutz"
1170
+ },
1171
+ "account": {
1172
+ "name": "Ihr Name",
1173
+ "email": "E-Mail",
1174
+ "emailInvalid": "Geben Sie eine gültige E-Mail-Adresse ein.",
1175
+ "password": "Passwort",
1176
+ "passwordHelper": "Mindestens {min} Zeichen.",
1177
+ "passwordTooShort": "Verwenden Sie mindestens {min} Zeichen.",
1178
+ "confirm": "Passwort bestätigen",
1179
+ "passwordMismatch": "Die Passwörter stimmen nicht überein.",
1180
+ "continue": "Weiter",
1181
+ "strength": "Passwortstärke",
1182
+ "strengthLevels": {
1183
+ "weak": "Schwach",
1184
+ "fair": "Mittel",
1185
+ "good": "Gut",
1186
+ "strong": "Stark"
1187
+ }
1188
+ },
1189
+ "consent": {
1190
+ "telemetry": {
1191
+ "title": "Anonyme Nutzungsdaten teilen",
1192
+ "description": "Hilft uns zu erkennen, welche Datenbank-Engines Priorität haben. Standardmäßig aus, bis Sie es aktivieren."
1193
+ },
1194
+ "updates": {
1195
+ "title": "Nach neuen Versionen suchen",
1196
+ "description": "Zeigt einen Hinweis, wenn eine neue Version — auch ein Sicherheitsfix — verfügbar ist. Dabei wird GitHub nach dem neuesten Release gefragt, wodurch GitHub die IP-Adresse und Version dieser Instanz erfährt. Mehr wird nicht gesendet."
1197
+ },
1198
+ "sentTitle": "Genau das wird gesendet:",
1199
+ "sent": {
1200
+ "instanceId": "Eine zufällige Instanz-ID (eine hier erzeugte UUID; nicht aus Ihrem Namen, Host oder Ihrer Datenbank abgeleitet)",
1201
+ "version": "Die Adminium-Version dieser Instanz",
1202
+ "engines": "Welche Datenbank-Engine-Typen verbunden sind (z. B. „postgres“) — nur die Typen"
1203
+ },
1204
+ "neverTitle": "Wird niemals gesendet:",
1205
+ "never": {
1206
+ "schema": "Ihr Schema — keine Tabellen-, Spalten- oder Enum-Namen",
1207
+ "rows": "Ihre Daten — niemals auch nur eine Zeile",
1208
+ "connections": "Verbindungszeichenfolgen, Hostnamen oder Zugangsdaten",
1209
+ "people": "E-Mail-Adressen, Namen oder IDs von Benutzern",
1210
+ "llm": "KI-Prompts oder Lauf-Inhalte"
1211
+ },
1212
+ "reversible": "Beides ist standardmäßig aus und lässt sich später jederzeit in den Einstellungen ändern.",
1213
+ "back": "Zurück",
1214
+ "finish": "Administratorkonto anlegen"
1215
+ },
1216
+ "error": {
1217
+ "alreadyCompleted": "Diese Instanz wurde bereits eingerichtet. Melden Sie sich mit dem vorhandenen Administratorkonto an.",
1218
+ "rejected": "Der Server hat diese Angaben abgelehnt. Prüfen Sie E-Mail und Passwort und versuchen Sie es erneut.",
1219
+ "failed": "Einrichtung fehlgeschlagen. Prüfen Sie Ihre Verbindung und versuchen Sie es erneut."
1220
+ }
1221
+ },
1222
+ "about": {
1223
+ "title": "Über Adminium",
1224
+ "subtitle": "Version, Lizenz und wo der Quellcode dieser Instanz liegt.",
1225
+ "version": "Version",
1226
+ "license": "Lizenz",
1227
+ "metaStore": "Meta-Speicher",
1228
+ "node": "Node.js",
1229
+ "engine": {
1230
+ "postgres": "PostgreSQL",
1231
+ "mysql": "MySQL / MariaDB",
1232
+ "sqlite": "SQLite"
1233
+ },
1234
+ "licenseCard": {
1235
+ "title": "Frei und quelloffen",
1236
+ "body": "Adminium steht unter der GNU Affero General Public License v3.0. Sie dürfen es ausführen, untersuchen, verändern und weitergeben. Wenn Sie eine veränderte Fassung anderen über ein Netzwerk anbieten, verlangt die AGPL, dass Sie ihnen auch deren Quellcode anbieten."
1237
+ },
1238
+ "viewLicense": "Lizenz lesen",
1239
+ "viewSource": "Quellcode herunterladen",
1240
+ "updates": {
1241
+ "title": "Aktualisierungen",
1242
+ "description": "Ob diese Instanz nach neuen Versionen sucht."
1243
+ },
1244
+ "update": {
1245
+ "disabled": "Die Update-Prüfung ist aus, daher kontaktiert diese Instanz GitHub nie. Aktivieren Sie sie in den Einstellungen, um von neuen Versionen zu erfahren.",
1246
+ "current": "Sie nutzen die neueste Version.",
1247
+ "available": "Adminium {version} ist verfügbar",
1248
+ "availableBody": "Sie nutzen derzeit {version}.",
1249
+ "viewRelease": "Release-Notes ansehen"
1250
+ },
1251
+ "desktop": {
1252
+ "unknown": "Unbekannt",
1253
+ "appVersion": "App-Version",
1254
+ "serverVersion": "Server-Version",
1255
+ "migration": "Meta-Store-Migration",
1256
+ "electron": "Electron",
1257
+ "chromium": "Chromium",
1258
+ "runtimeNode": "Node-Laufzeit",
1259
+ "system": {
1260
+ "title": "System"
1261
+ },
1262
+ "dataDir": "Datenverzeichnis",
1263
+ "reveal": "Im Ordner anzeigen",
1264
+ "secret": {
1265
+ "title": "Geheimnisspeicher",
1266
+ "safe": "Von Ihrem Betriebssystem verschlüsselt",
1267
+ "plainWarning": "Auf diesem Computer ist kein System-Schlüsselbund verfügbar, daher wird Ihr Adminium-Geheimnis unverschlüsselt auf der Festplatte gespeichert. Jeder, der die Dateien dieses Rechners lesen kann, kann es lesen. Richten Sie einen Anmelde-Schlüsselbund (oder einen Linux-Secret-Service) ein und starten Sie Adminium neu, um es zu schützen."
1268
+ },
1269
+ "updates": {
1270
+ "title": "Updates",
1271
+ "mode": {
1272
+ "notify": "Über neue Versionen benachrichtigen",
1273
+ "manual": "Nur wenn ich prüfe",
1274
+ "disabled": "Aus (offline)"
1275
+ },
1276
+ "disabledBody": "Automatische Updates sind aus (offline). Installieren Sie neue Versionen manuell.",
1277
+ "check": "Nach Updates suchen",
1278
+ "checking": "Wird geprüft…",
1279
+ "lastChecked": "Zuletzt geprüft {when}",
1280
+ "available": "Version {version} ist verfügbar",
1281
+ "none": "Sie verwenden die neueste Version.",
1282
+ "unavailable": "Updates sind in dieser Installation deaktiviert.",
1283
+ "error": "Nach Updates konnte nicht gesucht werden.",
1284
+ "download": "Update herunterladen",
1285
+ "downloading": "Wird heruntergeladen… {percent} %",
1286
+ "downloaded": "Version {version} ist installationsbereit",
1287
+ "restart": "Zum Installieren neu starten",
1288
+ "downloadError": "Der Download wurde nicht abgeschlossen. Sie können es erneut versuchen.",
1289
+ "toast": {
1290
+ "available": "Eine neue Version von Adminium ist verfügbar",
1291
+ "view": "Anzeigen",
1292
+ "downloaded": "Update installationsbereit",
1293
+ "restart": "Jetzt neu starten"
1294
+ }
1295
+ },
1296
+ "legal": {
1297
+ "title": "Lizenzen",
1298
+ "agpl": "Adminium Desktop ist freie Software unter der GNU Affero General Public License v3.0.",
1299
+ "viewLicense": "Lizenz anzeigen",
1300
+ "licenseTitle": "GNU Affero General Public License v3.0",
1301
+ "licenseUnavailable": "Die mitgelieferte Lizenzdatei ist in diesem Build nicht verfügbar.",
1302
+ "viewNotices": "Drittanbieter-Lizenzen",
1303
+ "noticesTitle": "Drittanbieter-Hinweise",
1304
+ "noticesUnavailable": "Drittanbieter-Hinweise werden beim Paketieren der App erzeugt und sind in diesem Build nicht verfügbar.",
1305
+ "source": "Quellcode",
1306
+ "close": "Schließen"
1307
+ },
1308
+ "telemetry": {
1309
+ "title": "Anonyme Nutzungsdaten",
1310
+ "label": "Anonyme Nutzungsdaten teilen",
1311
+ "description": "Hilft uns zu entscheiden, welche Datenbank-Engines wir priorisieren. Aus, sofern Sie es nicht aktivieren; es werden niemals Schema, Daten oder personenbezogene Informationen gesendet.",
1312
+ "saveFailed": "Diese Einstellung konnte nicht gespeichert werden. Bitte erneut versuchen."
1313
+ },
1314
+ "diagnostics": {
1315
+ "title": "Diagnose",
1316
+ "description": "Details, die bei einer Problemmeldung helfen. Kein Schema und keine Daten sind enthalten.",
1317
+ "copy": "Diagnoseinfo kopieren",
1318
+ "copied": "Kopiert",
1319
+ "showLogs": "Protokolle anzeigen",
1320
+ "dataSize": "Datengröße: {size}"
1321
+ }
1322
+ }
1323
+ },
1324
+ "apiKeys": {
1325
+ "title": "API-Schlüssel & Tokens",
1326
+ "subtitle": "Programmatischen Zugriff auf Ihren Workspace verwalten.",
1327
+ "createButton": "Schlüssel erstellen",
1328
+ "copy": "Kopieren",
1329
+ "copied": "Kopiert",
1330
+ "revoke": "Schlüssel widerrufen",
1331
+ "neverUsed": "Nie verwendet",
1332
+ "lastUsed": "Zuletzt verwendet {since}",
1333
+ "scopesOverflow": "+{count} weitere",
1334
+ "status": {
1335
+ "active": "Aktiv",
1336
+ "revoked": "Widerrufen",
1337
+ "expired": "Abgelaufen"
1338
+ },
1339
+ "list": {
1340
+ "title": "Schlüssel",
1341
+ "activeCount": "{count, plural, one {# aktiver Schlüssel} other {# aktive Schlüssel}}"
1342
+ },
1343
+ "empty": {
1344
+ "title": "Noch keine API-Schlüssel",
1345
+ "body": "Erstellen Sie einen, um die Adminium-API aus eigenem Code aufzurufen."
1346
+ },
1347
+ "revealed": {
1348
+ "title": "Neuer Schlüssel erstellt",
1349
+ "body": "Kopieren Sie ihn jetzt — Sie werden ihn nie wieder sehen können."
1350
+ },
1351
+ "rolesUnavailable": {
1352
+ "title": "Rollen sind für Sie nicht sichtbar",
1353
+ "body": "Einen Schlüssel zu erstellen heißt, die Rolle zu wählen, mit der er handelt — und Ihr Konto darf die Rollenliste nicht lesen. Bitten Sie eine Administratorin um die Berechtigung „Rollen verwalten“."
1354
+ },
1355
+ "quickStart": {
1356
+ "title": "Schnellstart",
1357
+ "body": "Authentifizieren Sie Anfragen mit Ihrem Schlüssel im Authorization-Header."
1358
+ },
1359
+ "create": {
1360
+ "title": "API-Schlüssel erstellen",
1361
+ "description": "Der Schlüssel handelt mit den Berechtigungen der gewählten Rolle.",
1362
+ "name": "Name",
1363
+ "namePlaceholder": "z. B. Analytics-Pipeline",
1364
+ "role": "Rolle",
1365
+ "roleHelper": "Wählen Sie die Rolle mit den geringsten Rechten, die ausreicht.",
1366
+ "expires": "Läuft ab",
1367
+ "expiresHelper": "Leer lassen für einen Schlüssel, der nie abläuft.",
1368
+ "submit": "Schlüssel erstellen",
1369
+ "failed": "Schlüssel konnte nicht erstellt werden"
1370
+ },
1371
+ "revokeConfirm": {
1372
+ "title": "API-Schlüssel widerrufen",
1373
+ "body": "Jeder Code, der die API noch mit „{name}“ aufruft, schlägt ab sofort fehl. Das lässt sich nicht rückgängig machen.",
1374
+ "prompt": "Geben Sie „{name}“ ein, um zu bestätigen",
1375
+ "confirm": "Schlüssel widerrufen"
1376
+ }
1377
+ },
1378
+ "changelog": {
1379
+ "title": "Änderungsprotokoll",
1380
+ "subtitle": "Produkt-Updates & Releases.",
1381
+ "allReleases": "Alle Releases",
1382
+ "tag": {
1383
+ "new": "Neu",
1384
+ "improved": "Verbessert",
1385
+ "fixed": "Behoben",
1386
+ "security": "Sicherheit"
1387
+ },
1388
+ "filter": {
1389
+ "all": "Alle",
1390
+ "label": "Änderungen nach Typ filtern"
1391
+ },
1392
+ "empty": {
1393
+ "title": "Nichts unter diesem Filter",
1394
+ "body": "Bisher enthielt kein Release eine Änderung dieser Art.",
1395
+ "clear": "Alle Änderungen anzeigen"
1396
+ }
1397
+ },
1398
+ "kb": {
1399
+ "title": "Wissensdatenbank",
1400
+ "subtitle": "{count, plural, one {# Anleitung} other {# Anleitungen}} · vollständige Doku unter docs.adminium.dev",
1401
+ "openDocs": "Doku öffnen",
1402
+ "browse": "Nach Thema stöbern",
1403
+ "hero": {
1404
+ "title": "Wie können wir helfen?",
1405
+ "subtitle": "Anleitungen, API-Doku und Fehlerbehebung durchsuchen.",
1406
+ "placeholder": "Wissensdatenbank durchsuchen…",
1407
+ "label": "Wissensdatenbank durchsuchen",
1408
+ "clear": "Suche leeren"
1409
+ },
1410
+ "category": {
1411
+ "start": "Erste Schritte",
1412
+ "connect": "Daten verbinden",
1413
+ "api": "API & Entwicklung",
1414
+ "security": "Sicherheit & Zugriff",
1415
+ "selfhost": "Self-Hosting",
1416
+ "trouble": "Fehlerbehebung",
1417
+ "count": "{count, plural, one {# Artikel} other {# Artikel}}",
1418
+ "selected": "Gefiltert"
1419
+ },
1420
+ "list": {
1421
+ "all": "Alle Anleitungen",
1422
+ "clear": "Filter zurücksetzen"
1423
+ },
1424
+ "empty": {
1425
+ "title": "Keine Anleitung passt zu Ihrer Suche",
1426
+ "body": "Versuchen Sie ein anderes Wort oder durchsuchen Sie die vollständige Dokumentation auf docs.adminium.dev.",
1427
+ "openDocs": "Doku öffnen"
1428
+ },
1429
+ "article": {
1430
+ "install": {
1431
+ "title": "Adminium installieren",
1432
+ "excerpt": "Aus einem Quell-Checkout oder per docker run starten und in einer Minute beim Ersteinrichtungs-Assistenten sein."
1433
+ },
1434
+ "firstAdmin": {
1435
+ "title": "Ersten Super-Admin anlegen",
1436
+ "excerpt": "Was der Ersteinrichtungs-Assistent abfragt und warum er nur einmal laufen kann."
1437
+ },
1438
+ "connectDb": {
1439
+ "title": "Ihre erste Datenbank verbinden",
1440
+ "excerpt": "Adminium auf PostgreSQL, MySQL oder SQLite richten und eine Admin-App generieren."
1441
+ },
1442
+ "schemaFile": {
1443
+ "title": "Aus einer Schemadatei generieren",
1444
+ "excerpt": "Ein Prisma-Schema, eine Django-models.py, eine Rails-schema.rb oder einen .sql-Dump hochladen — ganz ohne Verbindung."
1445
+ },
1446
+ "readOnly": {
1447
+ "title": "Eine Nur-Lese-Rolle verwenden",
1448
+ "excerpt": "Die Introspektion liest nur Schema-Metadaten. Geben Sie Adminium so wenig Rechte wie möglich."
1449
+ },
1450
+ "apiKeys": {
1451
+ "title": "Authentifizierung mit API-Schlüsseln",
1452
+ "excerpt": "Schlüssel erstellen und widerrufen — und warum ein Schlüssel Ihnen nur ein einziges Mal gezeigt wird."
1453
+ },
1454
+ "rest": {
1455
+ "title": "REST-API-Referenz",
1456
+ "excerpt": "Jeder Endpunkt der generierten App, mit Request- und Response-Formaten."
1457
+ },
1458
+ "manifest": {
1459
+ "title": "Das Seiten-Manifest",
1460
+ "excerpt": "Wie eine Seite als Konfiguration beschrieben wird und wie Sie eine von Hand bearbeiten."
1461
+ },
1462
+ "roles": {
1463
+ "title": "Rollen & Berechtigungen",
1464
+ "excerpt": "Viewer, Editor und Admin vergeben — und eigene Rollen aus der Berechtigungsmatrix bauen."
1465
+ },
1466
+ "audit": {
1467
+ "title": "Das Audit-Log lesen",
1468
+ "excerpt": "Wer hat was geändert, wann und von wo."
1469
+ },
1470
+ "secrets": {
1471
+ "title": "Wie Adminium Ihre Geheimnisse speichert",
1472
+ "excerpt": "Verbindungsdaten werden mit ADMINIUM_SECRET verschlüsselt gespeichert. API-Schlüssel werden gehasht."
1473
+ },
1474
+ "docker": {
1475
+ "title": "Self-Hosting mit Docker",
1476
+ "excerpt": "Das offizielle Image, docker-compose und der Betrieb einer separaten Meta-Datenbank."
1477
+ },
1478
+ "backup": {
1479
+ "title": "Eine Instanz sichern und umziehen",
1480
+ "excerpt": "export-zip bündelt Ihre Serverkonfiguration; beim Import wird dieselbe Einrichtung andernorts nachgespielt."
1481
+ },
1482
+ "telemetry": {
1483
+ "title": "Telemetrie und Update-Prüfungen",
1484
+ "excerpt": "Beides ist opt-in und standardmäßig aus. Was gesendet wird, wenn Sie es einschalten."
1485
+ },
1486
+ "connectionFails": {
1487
+ "title": "Eine Datenbankverbindung schlägt fehl",
1488
+ "excerpt": "Lesen Sie die Diagnosekarte: Host, Port, TLS — und die IP, die Ihre Datenbank zulassen muss."
1489
+ },
1490
+ "missingTables": {
1491
+ "title": "Nach der Introspektion fehlen Tabellen",
1492
+ "excerpt": "Schema-Sichtbarkeit, ausgeschlossene Tabellen und ein erneuter Generierungslauf."
1493
+ }
1494
+ }
1495
+ },
1496
+ "desktop": {
1497
+ "menu": {
1498
+ "file": "Datei",
1499
+ "fileNewDatabase": "Neue lokale Datenbank…",
1500
+ "fileOpenSqlite": "SQLite-Datei öffnen…",
1501
+ "fileBackupNow": "Jetzt sichern…",
1502
+ "fileRestore": "Aus Sicherung wiederherstellen…",
1503
+ "edit": "Bearbeiten",
1504
+ "view": "Ansicht",
1505
+ "window": "Fenster",
1506
+ "help": "Hilfe",
1507
+ "helpDocs": "Adminium-Dokumentation",
1508
+ "helpShortcuts": "Tastaturkürzel",
1509
+ "helpLogs": "Protokolle anzeigen",
1510
+ "helpCheckForUpdates": "Nach Updates suchen…",
1511
+ "helpAbout": "Über Adminium"
1512
+ },
1513
+ "settings": {
1514
+ "explainer": "Diese Einstellungen gelten nur für die Adminium-App auf diesem Computer. Sie werden auf diesem Gerät gespeichert, nicht in Ihrem Workspace."
1515
+ },
1516
+ "security": {
1517
+ "heading": "Anmeldung"
1518
+ },
1519
+ "requireLogin": {
1520
+ "label": "Anmeldung auf diesem Gerät verlangen",
1521
+ "description": "Adminium meldet Sie auf diesem Computer normalerweise automatisch an. Aktivieren Sie diese Option, um bei jedem Start nach Ihrem Passwort zu fragen — sinnvoll, wenn andere Personen diesen Computer nutzen können. Die Änderung gilt ab dem nächsten Start von Adminium.",
1522
+ "savedOn": "Beim nächsten Start ist eine Anmeldung erforderlich",
1523
+ "savedOff": "Adminium überspringt die Anmeldung auf diesem Computer",
1524
+ "saveFailed": "Einstellung konnte nicht gespeichert werden. Bitte erneut versuchen."
1525
+ },
1526
+ "chip": {
1527
+ "local": "Lokal",
1528
+ "lanShare": "Lokal · Im Netzwerk freigegeben",
1529
+ "remoteDb": "Lokal + Remote-Datenbank",
1530
+ "remoteDbOffline": "Remote-Datenbank offline",
1531
+ "remoteDbOfflineDetail": "{names} ist nicht erreichbar. Seiten dieser Verbindungen zeigen einen Wiederverbindungs-Status."
1532
+ },
1533
+ "lan": {
1534
+ "heading": "Im lokalen Netzwerk freigeben",
1535
+ "label": "Anderen Geräten in diesem Netzwerk die Nutzung von Adminium erlauben",
1536
+ "description": "Andere Computer, Tablets und Telefone im selben Netzwerk können Adminium im Browser öffnen und sich mit ihrem eigenen Konto anmelden. Adminium muss auf diesem Computer geöffnet bleiben, damit sie es erreichen.",
1537
+ "savedOn": "Im lokalen Netzwerk freigegeben",
1538
+ "savedOff": "Freigabe beendet — Adminium läuft wieder nur auf diesem Computer",
1539
+ "saveFailed": "Netzwerkfreigabe konnte nicht geändert werden",
1540
+ "noUsers": "Sie sind die einzige Person mit einem Konto, deshalb kann sich sonst noch niemand anmelden. Die Freigabe funktioniert trotzdem — Sie müssen nur Personen einladen, bevor sie sie nutzen können.",
1541
+ "usersUnknown": "Adminium konnte nicht prüfen, wer sonst noch ein Konto auf diesem Computer hat. Die Freigabe funktioniert weiterhin, und jede Person mit einem Konto kann sich anmelden — nur diese Prüfung ist fehlgeschlagen.",
1542
+ "acknowledge": "Verstanden — ich lade als Nächstes Personen ein",
1543
+ "port": "Port",
1544
+ "portHelper": "Standard {port}",
1545
+ "portInvalid": "Verwenden Sie eine Zahl zwischen 1024 und 65535.",
1546
+ "applyPort": "Port ändern",
1547
+ "portInUse": "Port {port} wird bereits von einem anderen Programm verwendet.",
1548
+ "portInUseHint": "Es wurde nichts geändert — die Freigabe ist weiterhin aus.",
1549
+ "portInUseNoSuggestion": "Es wurde nichts geändert. Versuchen Sie einen anderen Port.",
1550
+ "tryPort": "{port} versuchen",
1551
+ "urlsHeading": "Auf einem anderen Gerät öffnen",
1552
+ "noUrls": "Dieser Computer ist gerade mit keinem Netzwerk verbunden, deshalb gibt es keine Adresse zum Teilen. Verbinden Sie sich mit dem WLAN oder stecken Sie ein Kabel ein, dann füllt sich diese Liste.",
1553
+ "copyUrl": "Kopieren",
1554
+ "sessions": "{count, plural, =0 {Keine Geräte aus diesem Netzwerk angemeldet} one {# Gerät aus diesem Netzwerk angemeldet} other {# Geräte aus diesem Netzwerk angemeldet}}",
1555
+ "sessionsUnknown": "Verbundene Geräte werden geprüft…",
1556
+ "pending": "Freigabe wird gestartet…",
1557
+ "mismatch": "Adminium ist in diesem Netzwerk weiterhin erreichbar",
1558
+ "mismatchBody": "Die Freigabe ist ausgeschaltet, aber der Server hat das Netzwerk noch nicht freigegeben. Starten Sie Adminium neu, um sie zu schließen.",
1559
+ "transportTitle": "Der Datenverkehr in Ihrem lokalen Netzwerk ist nicht verschlüsselt.",
1560
+ "transportBody": "Geben Sie nur in Netzwerken frei, denen Sie vertrauen. Nutzen Sie für den Fernzugriff Adminium self-host hinter HTTPS.",
1561
+ "firewall": "Beim ersten Freigeben fragt Ihr Betriebssystem, ob eingehende Verbindungen erlaubt werden sollen — wählen Sie Zulassen, sonst können andere Geräte Adminium nicht erreichen."
1562
+ },
1563
+ "setup": {
1564
+ "title": "Willkommen bei Adminium",
1565
+ "subtitle": "Vier kurze Schritte und Adminium hat aus Ihrer Datenbank eine Admin-App gebaut. Alles bleibt auf diesem Computer.",
1566
+ "progress": "Einrichtungsfortschritt",
1567
+ "back": "Zurück",
1568
+ "continue": "Weiter",
1569
+ "createAccount": "Konto erstellen und fortfahren",
1570
+ "step": {
1571
+ "location": "Willkommen",
1572
+ "database": "Ihre erste Datenbank",
1573
+ "account": "Ihr Konto",
1574
+ "generate": "Generieren"
1575
+ },
1576
+ "dataDir": {
1577
+ "heading": "Wo soll Adminium Ihre Daten speichern?",
1578
+ "description": "Ihre Datenbanken, Einstellungen und Backups liegen alle in diesem Ordner. Alles bleibt auf diesem Computer — nichts wird irgendwohin hochgeladen.",
1579
+ "label": "Datenordner",
1580
+ "loading": "Aktueller Speicherort wird gelesen…",
1581
+ "pending": "Adminium startet beim Fortfahren neu, um in diesen Ordner zu wechseln.",
1582
+ "change": "Ändern…",
1583
+ "revert": "Rückgängig",
1584
+ "dialogTitle": "Wählen Sie, wo Adminium Ihre Daten speichert",
1585
+ "cloudSyncTitle": "Dieser Ordner wird mit der Cloud synchronisiert",
1586
+ "cloudSyncWarning": "Adminium speichert seine Daten in SQLite-Dateien. {provider} synchronisiert Dateien in „{folder}“, indem es sie im Hintergrund kopiert — das kann eine geöffnete Datenbank beschädigen und ohne Warnung Daten vernichten. Wählen Sie einen Ordner außerhalb von {provider}.",
1587
+ "chooseAnother": "Anderen Ordner wählen",
1588
+ "useAnyway": "Trotzdem verwenden — ich akzeptiere das Risiko",
1589
+ "unusableTitle": "Adminium kann diesen Ordner nicht verwenden",
1590
+ "failed": "Adminium konnte diesen Ordner nicht verwenden."
1591
+ },
1592
+ "source": {
1593
+ "heading": "Woraus soll Adminium bauen?",
1594
+ "description": "Adminium liest das Schema einer Datenbank und generiert daraus eine Admin-App. Weitere Datenbanken können Sie später hinzufügen.",
1595
+ "groupLabel": "Datenbankquelle",
1596
+ "local": {
1597
+ "title": "Neue lokale Datenbank erstellen",
1598
+ "description": "Beginnen Sie bei null oder mit einer Schemadatei, die Sie bereits haben. Die Datenbank wird in Ihrem Datenordner angelegt.",
1599
+ "name": "Datenbankname",
1600
+ "namePlaceholder": "Betrieb",
1601
+ "nameUnusable": "Verwenden Sie mindestens einen Buchstaben oder eine Ziffer — daraus wird der Dateiname gebildet.",
1602
+ "fileHelper": "Erstellt {file}",
1603
+ "schemaLabel": "Beginnen mit",
1604
+ "blank": "Leer",
1605
+ "fromFile": "Einer Schemadatei",
1606
+ "schemaFile": "Schemadatei",
1607
+ "schemaFileHelper": ".sql, pg_dump, Prisma, Drizzle, TypeORM, Sequelize, schema.rb, Django oder Adminium-JSON. Adminium übersetzt es nach SQLite.",
1608
+ "placeholder": "Platzhaltereinträge automatisch erzeugen",
1609
+ "placeholderHelper": "Sie haben ein Schema ohne Zeilen importiert. Befüllen Sie jede Tabelle mit realistischen Beispieldaten, damit Ihre Dashboards und Diagramme sofort etwas anzeigen."
1610
+ },
1611
+ "openSqlite": {
1612
+ "title": "Vorhandene SQLite-Datei öffnen",
1613
+ "description": "Richten Sie Adminium auf eine .sqlite-Datei auf diesem Computer. Sie wird dort geöffnet, wo sie liegt — nichts wird kopiert oder verschoben.",
1614
+ "browse": ".sqlite-Datei auswählen…",
1615
+ "change": "Andere Datei auswählen…",
1616
+ "networkTitle": "Diese Datei liegt auf einer Netzwerkfreigabe",
1617
+ "networkBody": "Die Sperrmechanik von SQLite ist über Netzwerkfreigaben unzuverlässig, und eine abbrechende Verbindung mitten im Schreibvorgang kann die Datenbank beschädigen. Eine Kopie auf der lokalen Festplatte dieses Computers ist sicherer."
1618
+ },
1619
+ "remote": {
1620
+ "title": "Mit einer Server-Datenbank verbinden",
1621
+ "description": "PostgreSQL oder MySQL. Erfordert eine erreichbare Netzwerkdatenbank; Adminiums eigene Tabellen bleiben trotzdem auf diesem Computer.",
1622
+ "networkNote": "Erfordert eine erreichbare Netzwerkdatenbank",
1623
+ "metaNote": "Adminiums eigene Tabellen — Ihre Seiten, Einstellungen und Anmeldung — bleiben in jedem Fall im Datenordner auf diesem Computer.",
1624
+ "engine": "Engine",
1625
+ "name": "Verbindungsname",
1626
+ "namePlaceholder": "Produktion",
1627
+ "dsn": "Verbindungszeichenfolge",
1628
+ "dsnHelper": "Adminium testet dies beim Verbinden. Verwenden Sie eine Nur-Lese-Rolle, wenn Sie nur Dashboards möchten."
1629
+ },
1630
+ "demo": {
1631
+ "title": "Demo-Datenbank erkunden",
1632
+ "description": "Eine fertige Team-Betriebsdatenbank, damit Sie sehen, was Adminium baut, bevor Sie es auf Ihre eigenen Daten richten. Löschen Sie sie, wann immer Sie möchten.",
1633
+ "unavailable": "Dieses Build enthält die Demodaten nicht, es gibt also nichts zu laden. Wählen Sie eine der Optionen oben."
1634
+ }
1635
+ },
1636
+ "account": {
1637
+ "heading": "Konto erstellen",
1638
+ "description": "Dies ist das Administratorkonto für diese Adminium-Installation. Das Passwort schützt Ihre Backups und alle, mit denen Sie im Netzwerk teilen — bei jedem Start wird es nicht abgefragt.",
1639
+ "name": "Ihr Name",
1640
+ "email": "E-Mail",
1641
+ "password": "Passwort",
1642
+ "passwordHelper": "Mindestens {min} Zeichen.",
1643
+ "confirm": "Passwort bestätigen",
1644
+ "strength": "Passwortstärke",
1645
+ "strengthLevels": {
1646
+ "weak": "Schwach",
1647
+ "fair": "Mittel",
1648
+ "good": "Gut",
1649
+ "strong": "Stark"
1650
+ },
1651
+ "singleUser": "Anmeldung auf diesem Computer überspringen",
1652
+ "singleUserHelper": "Adminium meldet Sie hier automatisch an. Schalten Sie dies aus, wenn andere Personen diesen Computer nutzen. Sie können es später unter Einstellungen → Desktop ändern.",
1653
+ "locale": "Sprache",
1654
+ "theme": "Darstellung",
1655
+ "alreadyExists": "Diese Adminium-Installation hat bereits ein Konto. Melden Sie sich stattdessen damit an.",
1656
+ "failed": "Adminium konnte dieses Konto nicht erstellen."
1657
+ },
1658
+ "generate": {
1659
+ "creating": "Ihre Datenbank wird eingerichtet…",
1660
+ "introspecting": "Ihr Schema wird gelesen — Tabellen, Spalten und Beziehungen…",
1661
+ "working": "Wird ausgeführt…",
1662
+ "offlineNote": "All dies geschieht auf diesem Computer.",
1663
+ "failedTitle": "Adminium konnte diese Datenbank nicht einrichten",
1664
+ "failedBody": "Etwas ist schiefgelaufen. Versuchen Sie es erneut.",
1665
+ "retry": "Erneut versuchen"
1666
+ }
1667
+ }
1668
+ },
1669
+ "capabilities": {
1670
+ "heading": "App-Berechtigungen",
1671
+ "description": "Von Ihnen installierte Apps können den Zugriff auf die Hardware dieses Computers anfordern. Sie genehmigen jede einzeln und können den Zugriff jederzeit widerrufen.",
1672
+ "grantedTo": "Erlaubt für {app}",
1673
+ "status": {
1674
+ "available": "Verfügbar",
1675
+ "stub": "Noch nicht verfügbar",
1676
+ "unavailable": "Nicht verfügbar"
1677
+ },
1678
+ "allow": {
1679
+ "action": "Erlauben…"
1680
+ },
1681
+ "revoke": {
1682
+ "action": "Widerrufen",
1683
+ "saved": "Zugriff widerrufen",
1684
+ "failed": "Zugriff konnte nicht widerrufen werden. Bitte erneut versuchen."
1685
+ },
1686
+ "grant": {
1687
+ "saved": "Zugriff erlaubt",
1688
+ "failed": "Zugriff konnte nicht erlaubt werden. Bitte erneut versuchen."
1689
+ },
1690
+ "catalog": {
1691
+ "printerEscpos": {
1692
+ "name": "Bondrucker (ESC/POS)",
1693
+ "scope": "Auf Bondruckern drucken und eine angeschlossene Kassenschublade öffnen"
1694
+ }
1695
+ },
1696
+ "consent": {
1697
+ "title": "{app} erlauben?",
1698
+ "subtitle": "{app} möchte die Hardware dieses Computers verwenden.",
1699
+ "willAllow": "Dies erlaubt {app}:",
1700
+ "revokeNote": "Sie können dies jederzeit unter Einstellungen → Desktop widerrufen. Erlauben Sie nur Apps, denen Sie vertrauen.",
1701
+ "deny": "Nicht jetzt",
1702
+ "approve": "Erlauben"
1703
+ }
1704
+ },
1705
+ "emailTemplates": {
1706
+ "title": "E-Mail-Vorlagen",
1707
+ "subtitle": "Transaktions- und Lifecycle-E-Mails, die dieser Workspace versendet.",
1708
+ "search": "Vorlagen durchsuchen…",
1709
+ "loadFailed": "Vorlagen konnten nicht geladen werden",
1710
+ "empty": "Noch keine E-Mail-Vorlagen",
1711
+ "emptyBody": "Vorlagen erscheinen hier, sobald der Server welche anlegt oder Sie welche erstellen.",
1712
+ "noMatches": "Keine passenden Vorlagen",
1713
+ "noMatchesBody": "Versuchen Sie eine andere Suche.",
1714
+ "live": "Aktiv",
1715
+ "disabled": "Deaktiviert",
1716
+ "name": "Vorlagenname",
1717
+ "subject": "Betreff",
1718
+ "enabled": "Aktiviert"
1719
+ },
1720
+ "board": {
1721
+ "addCard": "Karte hinzufügen",
1722
+ "compose": {
1723
+ "placeholder": "Kartentitel…",
1724
+ "add": "Hinzufügen",
1725
+ "cancel": "Abbrechen"
1726
+ },
1727
+ "empty": {
1728
+ "title": "Keine Board-Spalten",
1729
+ "body": "Fügen Sie ein Statusfeld hinzu, um Karten in Spalten zu gruppieren."
1730
+ }
1731
+ },
1732
+ "calendar": {
1733
+ "dateRange": "Zeitraum",
1734
+ "compose": {
1735
+ "placeholder": "Termintitel…",
1736
+ "add": "Hinzufügen",
1737
+ "cancel": "Abbrechen",
1738
+ "open": "Termin hinzufügen"
1739
+ },
1740
+ "agenda": {
1741
+ "empty": "Nichts geplant"
1742
+ }
1743
+ },
1744
+ "scheduler": {
1745
+ "prevWeek": "Vorherige Woche",
1746
+ "nextWeek": "Nächste Woche",
1747
+ "week": "Woche",
1748
+ "month": "Monat",
1749
+ "resource": "Ressource",
1750
+ "coverage": "Abdeckung",
1751
+ "addShift": "Schicht hinzufügen",
1752
+ "shiftCount": "{n} Schichten"
1753
+ },
1754
+ "planning": {
1755
+ "drawer": {
1756
+ "close": "Schließen",
1757
+ "loading": "Datensatz wird geladen",
1758
+ "error": "Dieser Datensatz konnte nicht geladen werden."
1759
+ }
1760
+ },
1761
+ "files": {
1762
+ "uploadsUnavailable": "Uploads sind auf dieser Seite noch nicht verfügbar."
1763
+ },
1764
+ "chat": {
1765
+ "messageSent": "Nachricht gesendet",
1766
+ "sendFailed": "Die Nachricht konnte nicht gesendet werden."
1767
+ },
1768
+ "templates": {
1769
+ "crud": {
1770
+ "title": "Datensätze"
1771
+ },
1772
+ "dashboard": {
1773
+ "title": "Dashboard"
1774
+ },
1775
+ "board": {
1776
+ "title": "Board"
1777
+ },
1778
+ "calendar": {
1779
+ "title": "Kalender"
1780
+ },
1781
+ "scheduler": {
1782
+ "title": "Dienstplan"
1783
+ },
1784
+ "logViewer": {
1785
+ "title": "Protokolle"
1786
+ },
1787
+ "files": {
1788
+ "title": "Dateien"
1789
+ },
1790
+ "chat": {
1791
+ "title": "Chat"
1792
+ },
1793
+ "builder": {
1794
+ "title": "Editor"
1795
+ },
1796
+ "wizard": {
1797
+ "title": "Assistent"
1798
+ },
1799
+ "settings": {
1800
+ "title": "Einstellungen"
1801
+ },
1802
+ "directory": {
1803
+ "title": "Verzeichnis",
1804
+ "searchPlaceholder": "Personen suchen…",
1805
+ "allFilter": "Alle",
1806
+ "clearFilters": "Filter zurücksetzen",
1807
+ "detailTitle": "Person",
1808
+ "emptyTitle": "Noch keine Personen",
1809
+ "emptyBody": "Personen erscheinen hier, sobald Zeilen in der Tabelle ankommen.",
1810
+ "noMatchesTitle": "Keine passenden Personen",
1811
+ "noMatchesBody": "Versuchen Sie eine andere Suche oder entfernen Sie einen Filter.",
1812
+ "errorTitle": "Dieses Verzeichnis konnte nicht geladen werden",
1813
+ "loading": "Personen werden geladen",
1814
+ "memberCount": "{count} Personen"
1815
+ },
1816
+ "masterDetail": {
1817
+ "title": "Liste & Detail",
1818
+ "allFilter": "Alle",
1819
+ "clearFilters": "Filter zurücksetzen",
1820
+ "emptyTitle": "Noch nichts vorhanden",
1821
+ "emptyBody": "Datensätze erscheinen hier, sobald Zeilen in der Tabelle ankommen.",
1822
+ "noMatchesTitle": "Keine passenden Datensätze",
1823
+ "noMatchesBody": "Entfernen Sie einen Filter.",
1824
+ "errorTitle": "Diese Liste konnte nicht geladen werden",
1825
+ "loading": "Datensätze werden geladen",
1826
+ "selectPrompt": "Datensatz auswählen"
1827
+ },
1828
+ "queueInbox": {
1829
+ "title": "Warteschlange",
1830
+ "approve": "Genehmigen",
1831
+ "reject": "Ablehnen",
1832
+ "allSegment": "Alle",
1833
+ "approvedToast": "{count} genehmigt.",
1834
+ "rejectedToast": "{count} abgelehnt.",
1835
+ "undoneToast": "Entscheidung rückgängig gemacht.",
1836
+ "failedToast": "Entscheidung fehlgeschlagen.",
1837
+ "bulkFailed": "{failed} von {total} ausgewählten Zeilen konnten nicht aktualisiert werden.",
1838
+ "undoFailedToast": "Diese Entscheidung konnte nicht rückgängig gemacht werden.",
1839
+ "rejectTitle": "Anfragen ablehnen",
1840
+ "rejectCount": "Ausgewählt · {count}",
1841
+ "rejectNote": "Der Antragsteller wird mit Ihrer Notiz benachrichtigt.",
1842
+ "rejectPlaceholder": "Notiz für den Antragsteller hinzufügen…",
1843
+ "rejectConfirm": "Ablehnen",
1844
+ "emptyTitle": "Nichts in der Warteschlange",
1845
+ "emptyBody": "Neue Anfragen erscheinen hier, sobald sie eintreffen.",
1846
+ "caughtUpTitle": "Alles erledigt",
1847
+ "caughtUpBody": "Derzeit keine Anfragen in diesem Tab.",
1848
+ "errorTitle": "Diese Warteschlange konnte nicht geladen werden",
1849
+ "loading": "Warteschlange wird geladen",
1850
+ "selectPrompt": "Anfrage auswählen",
1851
+ "daysUnit": "{count} Tage"
1852
+ }
1853
+ },
1854
+ "dataio": {
1855
+ "back": "Zurück",
1856
+ "import": {
1857
+ "title": "Daten importieren",
1858
+ "stepUpload": "Hochladen",
1859
+ "stepMap": "Spalten zuordnen",
1860
+ "stepValidate": "Prüfen",
1861
+ "stepRun": "Importieren & prüfen",
1862
+ "targetLabel": "Zieltabelle",
1863
+ "targetPlaceholder": "Tabellenseite wählen…",
1864
+ "notATable": "Diese Seite ist keine Tabelle — wählen Sie eine Tabellenseite als Ziel.",
1865
+ "dropTitle": "CSV-Datei zum Import hier ablegen",
1866
+ "dropHint": "CSV bis 32 MB — die erste Zeile muss die Kopfzeile sein",
1867
+ "skipTarget": "Nicht importieren",
1868
+ "mapHint": "{count} Datenzeilen in {file} — wählen Sie für jede Spalte ein Ziel.",
1869
+ "validating": "Wird geprüft…",
1870
+ "toValidate": "Prüfen",
1871
+ "validateFailed": "Prüfung fehlgeschlagen.",
1872
+ "validationSummary": "{valid} von {total} Zeilen bereit zum Import — {invalid} werden übersprungen.",
1873
+ "allValid": "Alle Zeilen haben die Prüfung bestanden",
1874
+ "run": "Import starten",
1875
+ "runSkipping": "{valid} Zeilen importieren ({invalid} überspringen)",
1876
+ "progressLabel": "Importfortschritt",
1877
+ "running": "Wird importiert…",
1878
+ "kpiTotal": "Zeilen in der Datei",
1879
+ "kpiCreated": "Erstellt",
1880
+ "kpiUpdated": "Aktualisiert",
1881
+ "kpiSkipped": "Übersprungen",
1882
+ "inconsistent": "Importzahlen sind inkonsistent — Gesamt muss Erstellt + Aktualisiert + Übersprungen entsprechen.",
1883
+ "downloadErrors": "Bericht der übersprungenen Zeilen herunterladen (CSV)",
1884
+ "runFailed": "Der Import ist fehlgeschlagen."
1885
+ },
1886
+ "exports": {
1887
+ "title": "Datenexporte",
1888
+ "tableLabel": "Tabelle",
1889
+ "tablePlaceholder": "Tabelle wählen…",
1890
+ "notATable": "Diese Seite ist keine Tabelle — wählen Sie eine Tabellenseite zum Export.",
1891
+ "formatLabel": "Format",
1892
+ "create": "Exportieren",
1893
+ "createFailed": "Der Export konnte nicht angefordert werden.",
1894
+ "retention": "Exporte werden 30 Tage aufbewahrt und laufen dann ab.",
1895
+ "statusProcessing": "Wird verarbeitet…",
1896
+ "statusReady": "Fertig — {rows} Zeilen · zum Herunterladen klicken",
1897
+ "statusFailed": "Fehlgeschlagen — {error}",
1898
+ "statusCancelled": "Abgebrochen",
1899
+ "statusExpired": "Abgelaufen",
1900
+ "emptyTitle": "Noch keine Exporte",
1901
+ "emptyBody": "Oben einen anfordern — Artefakte erscheinen hier mit ihrem Status."
1902
+ }
1903
+ },
1904
+ "reports": {
1905
+ "title": "Geplante Berichte",
1906
+ "subtitle": "Wiederkehrende Daten-Schnappschüsse einer Seite, zugestellt als In-App-Benachrichtigungen.",
1907
+ "new": "Neuer Bericht",
1908
+ "loadFailed": "Geplante Berichte konnten nicht geladen werden.",
1909
+ "saveFailed": "Dieser Bericht konnte nicht gespeichert werden.",
1910
+ "nextRun": "Nächste Ausführung",
1911
+ "emptyTitle": "Noch keine geplanten Berichte",
1912
+ "emptyBody": "Erstellen Sie einen, um wiederkehrende Daten-Schnappschüsse einer Tabellenseite zu erhalten.",
1913
+ "createTitle": "Neuer geplanter Bericht",
1914
+ "editTitle": "Geplanten Bericht bearbeiten",
1915
+ "nameLabel": "Name",
1916
+ "namePlaceholder": "z. B. Wöchentlicher Umsatz",
1917
+ "pageLabel": "Seite",
1918
+ "pagePlaceholder": "Seite wählen…",
1919
+ "frequencyLabel": "Häufigkeit",
1920
+ "frequency": {
1921
+ "daily": "Täglich",
1922
+ "weekly": "Wöchentlich",
1923
+ "monthly": "Monatlich"
1924
+ },
1925
+ "dayOfWeekLabel": "Tag",
1926
+ "dayOfMonthLabel": "Tag im Monat",
1927
+ "timeLabel": "Uhrzeit",
1928
+ "timezoneLabel": "Zeitzone",
1929
+ "formatLabel": "Zustellung",
1930
+ "formatHint": "Daten-Schnappschuss (PDF/PNG-Rendering folgt in einer späteren Version) — jede Ausführung erzeugt einen CSV-Schnappschuss und eine In-App-Benachrichtigung.",
1931
+ "recipientsLabel": "Empfänger",
1932
+ "recipientsHint": "Wird mit dem Bericht gespeichert. E-Mail-Zustellung folgt in einer späteren Version — Ausführungen benachrichtigen vorerst in der App.",
1933
+ "deliveryBadge": "CSV-Schnappschuss",
1934
+ "delete": "Löschen",
1935
+ "create": "Erstellen",
1936
+ "cadence": {
1937
+ "daily": "Täglich um {time} ({zone})",
1938
+ "weekly": "Wöchentlich · {day} um {time} ({zone})",
1939
+ "monthly": "Monatlich · Tag {day} um {time} ({zone})"
1940
+ }
1941
+ },
1942
+ "notifications": {
1943
+ "channel": {
1944
+ "inApp": "In der App",
1945
+ "email": "E-Mail",
1946
+ "push": "Push"
1947
+ },
1948
+ "event": {
1949
+ "reportReady": "Geplanter Bericht fertig",
1950
+ "reportFailed": "Geplanter Bericht fehlgeschlagen",
1951
+ "backupCompleted": "Sicherung abgeschlossen"
1952
+ }
1953
+ }
1954
+ }