@adminiumjs/i18n 0.2.2-rc.0 → 0.2.3

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 (229) hide show
  1. package/dist/a11y-keys.d.ts +1 -1
  2. package/dist/a11y-keys.d.ts.map +1 -1
  3. package/dist/a11y-keys.js +481 -172
  4. package/dist/a11y-keys.js.map +1 -1
  5. package/dist/create-i18n.d.ts +16 -6
  6. package/dist/create-i18n.d.ts.map +1 -1
  7. package/dist/create-i18n.js +23 -9
  8. package/dist/create-i18n.js.map +1 -1
  9. package/dist/editing.d.ts +1 -1
  10. package/dist/editing.js +1 -1
  11. package/dist/index.d.ts +2 -2
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +19 -8
  14. package/dist/index.js.map +1 -1
  15. package/dist/keys.d.ts +6 -4
  16. package/dist/keys.d.ts.map +1 -1
  17. package/dist/keys.js +6 -4
  18. package/dist/keys.js.map +1 -1
  19. package/dist/overrides.d.ts +1 -1
  20. package/dist/overrides.d.ts.map +1 -1
  21. package/dist/resources/ar-eg/common.d.ts +96 -970
  22. package/dist/resources/ar-eg/common.d.ts.map +1 -1
  23. package/dist/resources/ar-eg/common.js +99 -973
  24. package/dist/resources/ar-eg/common.js.map +1 -1
  25. package/dist/resources/ar-eg/errors.d.ts +3 -2
  26. package/dist/resources/ar-eg/errors.d.ts.map +1 -1
  27. package/dist/resources/ar-eg/errors.js +3 -2
  28. package/dist/resources/ar-eg/errors.js.map +1 -1
  29. package/dist/resources/ar-eg/generated.d.ts +3 -2
  30. package/dist/resources/ar-eg/generated.d.ts.map +1 -1
  31. package/dist/resources/ar-eg/generated.js +3 -2
  32. package/dist/resources/ar-eg/generated.js.map +1 -1
  33. package/dist/resources/ar-eg/studio.d.ts +1282 -2
  34. package/dist/resources/ar-eg/studio.d.ts.map +1 -1
  35. package/dist/resources/ar-eg/studio.js +1282 -2
  36. package/dist/resources/ar-eg/studio.js.map +1 -1
  37. package/dist/resources/ar-eg/ui.d.ts +60 -2
  38. package/dist/resources/ar-eg/ui.d.ts.map +1 -1
  39. package/dist/resources/ar-eg/ui.js +72 -14
  40. package/dist/resources/ar-eg/ui.js.map +1 -1
  41. package/dist/resources/cs-cz/common.d.ts +96 -970
  42. package/dist/resources/cs-cz/common.d.ts.map +1 -1
  43. package/dist/resources/cs-cz/common.js +99 -973
  44. package/dist/resources/cs-cz/common.js.map +1 -1
  45. package/dist/resources/cs-cz/errors.d.ts +3 -2
  46. package/dist/resources/cs-cz/errors.d.ts.map +1 -1
  47. package/dist/resources/cs-cz/errors.js +3 -2
  48. package/dist/resources/cs-cz/errors.js.map +1 -1
  49. package/dist/resources/cs-cz/generated.d.ts +3 -2
  50. package/dist/resources/cs-cz/generated.d.ts.map +1 -1
  51. package/dist/resources/cs-cz/generated.js +3 -2
  52. package/dist/resources/cs-cz/generated.js.map +1 -1
  53. package/dist/resources/cs-cz/studio.d.ts +1282 -2
  54. package/dist/resources/cs-cz/studio.d.ts.map +1 -1
  55. package/dist/resources/cs-cz/studio.js +1282 -2
  56. package/dist/resources/cs-cz/studio.js.map +1 -1
  57. package/dist/resources/cs-cz/ui.d.ts +60 -2
  58. package/dist/resources/cs-cz/ui.d.ts.map +1 -1
  59. package/dist/resources/cs-cz/ui.js +72 -14
  60. package/dist/resources/cs-cz/ui.js.map +1 -1
  61. package/dist/resources/da-dk/common.d.ts +96 -970
  62. package/dist/resources/da-dk/common.d.ts.map +1 -1
  63. package/dist/resources/da-dk/common.js +99 -973
  64. package/dist/resources/da-dk/common.js.map +1 -1
  65. package/dist/resources/da-dk/errors.d.ts +3 -2
  66. package/dist/resources/da-dk/errors.d.ts.map +1 -1
  67. package/dist/resources/da-dk/errors.js +3 -2
  68. package/dist/resources/da-dk/errors.js.map +1 -1
  69. package/dist/resources/da-dk/generated.d.ts +3 -2
  70. package/dist/resources/da-dk/generated.d.ts.map +1 -1
  71. package/dist/resources/da-dk/generated.js +3 -2
  72. package/dist/resources/da-dk/generated.js.map +1 -1
  73. package/dist/resources/da-dk/studio.d.ts +1282 -2
  74. package/dist/resources/da-dk/studio.d.ts.map +1 -1
  75. package/dist/resources/da-dk/studio.js +1282 -2
  76. package/dist/resources/da-dk/studio.js.map +1 -1
  77. package/dist/resources/da-dk/ui.d.ts +60 -2
  78. package/dist/resources/da-dk/ui.d.ts.map +1 -1
  79. package/dist/resources/da-dk/ui.js +72 -14
  80. package/dist/resources/da-dk/ui.js.map +1 -1
  81. package/dist/resources/de-de/common.d.ts +96 -970
  82. package/dist/resources/de-de/common.d.ts.map +1 -1
  83. package/dist/resources/de-de/common.js +99 -973
  84. package/dist/resources/de-de/common.js.map +1 -1
  85. package/dist/resources/de-de/errors.d.ts +3 -2
  86. package/dist/resources/de-de/errors.d.ts.map +1 -1
  87. package/dist/resources/de-de/errors.js +3 -2
  88. package/dist/resources/de-de/errors.js.map +1 -1
  89. package/dist/resources/de-de/generated.d.ts +3 -2
  90. package/dist/resources/de-de/generated.d.ts.map +1 -1
  91. package/dist/resources/de-de/generated.js +3 -2
  92. package/dist/resources/de-de/generated.js.map +1 -1
  93. package/dist/resources/de-de/studio.d.ts +1282 -2
  94. package/dist/resources/de-de/studio.d.ts.map +1 -1
  95. package/dist/resources/de-de/studio.js +1282 -2
  96. package/dist/resources/de-de/studio.js.map +1 -1
  97. package/dist/resources/de-de/ui.d.ts +60 -2
  98. package/dist/resources/de-de/ui.d.ts.map +1 -1
  99. package/dist/resources/de-de/ui.js +72 -14
  100. package/dist/resources/de-de/ui.js.map +1 -1
  101. package/dist/resources/eager.d.ts +3 -0
  102. package/dist/resources/eager.d.ts.map +1 -0
  103. package/dist/resources/eager.js +25 -0
  104. package/dist/resources/eager.js.map +1 -0
  105. package/dist/resources/en-us/common.d.ts +96 -970
  106. package/dist/resources/en-us/common.d.ts.map +1 -1
  107. package/dist/resources/en-us/common.js +99 -973
  108. package/dist/resources/en-us/common.js.map +1 -1
  109. package/dist/resources/en-us/errors.d.ts +3 -2
  110. package/dist/resources/en-us/errors.d.ts.map +1 -1
  111. package/dist/resources/en-us/errors.js +3 -2
  112. package/dist/resources/en-us/errors.js.map +1 -1
  113. package/dist/resources/en-us/generated.d.ts +3 -2
  114. package/dist/resources/en-us/generated.d.ts.map +1 -1
  115. package/dist/resources/en-us/generated.js +3 -2
  116. package/dist/resources/en-us/generated.js.map +1 -1
  117. package/dist/resources/en-us/studio.d.ts +1282 -2
  118. package/dist/resources/en-us/studio.d.ts.map +1 -1
  119. package/dist/resources/en-us/studio.js +1282 -2
  120. package/dist/resources/en-us/studio.js.map +1 -1
  121. package/dist/resources/en-us/ui.d.ts +60 -2
  122. package/dist/resources/en-us/ui.d.ts.map +1 -1
  123. package/dist/resources/en-us/ui.js +72 -14
  124. package/dist/resources/en-us/ui.js.map +1 -1
  125. package/dist/resources/fr-fr/common.d.ts +96 -970
  126. package/dist/resources/fr-fr/common.d.ts.map +1 -1
  127. package/dist/resources/fr-fr/common.js +99 -973
  128. package/dist/resources/fr-fr/common.js.map +1 -1
  129. package/dist/resources/fr-fr/errors.d.ts +3 -2
  130. package/dist/resources/fr-fr/errors.d.ts.map +1 -1
  131. package/dist/resources/fr-fr/errors.js +3 -2
  132. package/dist/resources/fr-fr/errors.js.map +1 -1
  133. package/dist/resources/fr-fr/generated.d.ts +3 -2
  134. package/dist/resources/fr-fr/generated.d.ts.map +1 -1
  135. package/dist/resources/fr-fr/generated.js +3 -2
  136. package/dist/resources/fr-fr/generated.js.map +1 -1
  137. package/dist/resources/fr-fr/studio.d.ts +1282 -2
  138. package/dist/resources/fr-fr/studio.d.ts.map +1 -1
  139. package/dist/resources/fr-fr/studio.js +1282 -2
  140. package/dist/resources/fr-fr/studio.js.map +1 -1
  141. package/dist/resources/fr-fr/ui.d.ts +60 -2
  142. package/dist/resources/fr-fr/ui.d.ts.map +1 -1
  143. package/dist/resources/fr-fr/ui.js +72 -14
  144. package/dist/resources/fr-fr/ui.js.map +1 -1
  145. package/dist/resources/index.d.ts +3 -6
  146. package/dist/resources/index.d.ts.map +1 -1
  147. package/dist/resources/index.js +15 -14
  148. package/dist/resources/index.js.map +1 -1
  149. package/dist/resources/lazy.d.ts +19 -9
  150. package/dist/resources/lazy.d.ts.map +1 -1
  151. package/dist/resources/lazy.js +4 -2
  152. package/dist/resources/lazy.js.map +1 -1
  153. package/dist/resources/namespaces.d.ts +43 -0
  154. package/dist/resources/namespaces.d.ts.map +1 -0
  155. package/dist/resources/namespaces.js +37 -0
  156. package/dist/resources/namespaces.js.map +1 -0
  157. package/dist/resources/zh-cn/common.d.ts +96 -970
  158. package/dist/resources/zh-cn/common.d.ts.map +1 -1
  159. package/dist/resources/zh-cn/common.js +99 -973
  160. package/dist/resources/zh-cn/common.js.map +1 -1
  161. package/dist/resources/zh-cn/errors.d.ts +3 -2
  162. package/dist/resources/zh-cn/errors.d.ts.map +1 -1
  163. package/dist/resources/zh-cn/errors.js +3 -2
  164. package/dist/resources/zh-cn/errors.js.map +1 -1
  165. package/dist/resources/zh-cn/generated.d.ts +3 -2
  166. package/dist/resources/zh-cn/generated.d.ts.map +1 -1
  167. package/dist/resources/zh-cn/generated.js +3 -2
  168. package/dist/resources/zh-cn/generated.js.map +1 -1
  169. package/dist/resources/zh-cn/studio.d.ts +1282 -2
  170. package/dist/resources/zh-cn/studio.d.ts.map +1 -1
  171. package/dist/resources/zh-cn/studio.js +1282 -2
  172. package/dist/resources/zh-cn/studio.js.map +1 -1
  173. package/dist/resources/zh-cn/ui.d.ts +60 -2
  174. package/dist/resources/zh-cn/ui.d.ts.map +1 -1
  175. package/dist/resources/zh-cn/ui.js +72 -14
  176. package/dist/resources/zh-cn/ui.js.map +1 -1
  177. package/dist/resources/zh-tw/common.d.ts +96 -970
  178. package/dist/resources/zh-tw/common.d.ts.map +1 -1
  179. package/dist/resources/zh-tw/common.js +99 -973
  180. package/dist/resources/zh-tw/common.js.map +1 -1
  181. package/dist/resources/zh-tw/errors.d.ts +3 -2
  182. package/dist/resources/zh-tw/errors.d.ts.map +1 -1
  183. package/dist/resources/zh-tw/errors.js +3 -2
  184. package/dist/resources/zh-tw/errors.js.map +1 -1
  185. package/dist/resources/zh-tw/generated.d.ts +3 -2
  186. package/dist/resources/zh-tw/generated.d.ts.map +1 -1
  187. package/dist/resources/zh-tw/generated.js +3 -2
  188. package/dist/resources/zh-tw/generated.js.map +1 -1
  189. package/dist/resources/zh-tw/studio.d.ts +1282 -2
  190. package/dist/resources/zh-tw/studio.d.ts.map +1 -1
  191. package/dist/resources/zh-tw/studio.js +1282 -2
  192. package/dist/resources/zh-tw/studio.js.map +1 -1
  193. package/dist/resources/zh-tw/ui.d.ts +60 -2
  194. package/dist/resources/zh-tw/ui.d.ts.map +1 -1
  195. package/dist/resources/zh-tw/ui.js +72 -14
  196. package/dist/resources/zh-tw/ui.js.map +1 -1
  197. package/dist/review-status.js +7 -7
  198. package/locales/ar-EG/.meta.json +3783 -2339
  199. package/locales/ar-EG/common.json +96 -971
  200. package/locales/ar-EG/studio.json +1279 -0
  201. package/locales/ar-EG/ui.json +69 -12
  202. package/locales/cs-CZ/.meta.json +3849 -2405
  203. package/locales/cs-CZ/common.json +96 -971
  204. package/locales/cs-CZ/studio.json +1279 -0
  205. package/locales/cs-CZ/ui.json +69 -12
  206. package/locales/da-DK/.meta.json +3935 -2491
  207. package/locales/da-DK/common.json +96 -971
  208. package/locales/da-DK/studio.json +1279 -0
  209. package/locales/da-DK/ui.json +69 -12
  210. package/locales/de-DE/.meta.json +3895 -2451
  211. package/locales/de-DE/common.json +96 -971
  212. package/locales/de-DE/studio.json +1279 -0
  213. package/locales/de-DE/ui.json +69 -12
  214. package/locales/en-US/common.json +96 -971
  215. package/locales/en-US/studio.json +1279 -0
  216. package/locales/en-US/ui.json +69 -12
  217. package/locales/fr-FR/.meta.json +3964 -2520
  218. package/locales/fr-FR/common.json +96 -971
  219. package/locales/fr-FR/studio.json +1279 -0
  220. package/locales/fr-FR/ui.json +69 -12
  221. package/locales/zh-CN/.meta.json +3781 -2337
  222. package/locales/zh-CN/common.json +96 -971
  223. package/locales/zh-CN/studio.json +1279 -0
  224. package/locales/zh-CN/ui.json +69 -12
  225. package/locales/zh-TW/.meta.json +3785 -2341
  226. package/locales/zh-TW/common.json +96 -971
  227. package/locales/zh-TW/studio.json +1279 -0
  228. package/locales/zh-TW/ui.json +69 -12
  229. package/package.json +1 -1
@@ -4,5 +4,1284 @@
4
4
  "title": "Einstellungen",
5
5
  "workspaceSection": "Workspace",
6
6
  "globalDefaultsNav": "Globale Standards"
7
+ },
8
+ "source": {
9
+ "engine": {
10
+ "label": "Datenbank-Engine",
11
+ "postgres": "PostgreSQL",
12
+ "mysql": "MySQL / MariaDB",
13
+ "sqlite": "SQLite"
14
+ },
15
+ "format": {
16
+ "label": "Schemaformat",
17
+ "helper": "Bei automatischer Erkennung belassen, sofern sie nicht danebenliegt.",
18
+ "auto": "Automatisch erkennen",
19
+ "sql": "SQL-DDL / pg_dump",
20
+ "prisma": "Prisma-Schema",
21
+ "drizzle": "Drizzle ORM",
22
+ "typeorm": "TypeORM-Entitäten",
23
+ "sequelize": "Sequelize-Modelle",
24
+ "rails": "Rails schema.rb",
25
+ "django": "Django models.py",
26
+ "json": "Adminium-JSON"
27
+ },
28
+ "sqlite": {
29
+ "file": "Pfad zur Datenbankdatei",
30
+ "helper": "SQLite ist eine Datei, kein Server — geben Sie den absoluten Pfad auf der Maschine an, auf der Adminium läuft."
31
+ },
32
+ "file": {
33
+ "detectedAs": "Erkannt: {format}",
34
+ "moreWarnings": "+{count} weitere Warnungen — die vollständige Liste erscheint im Analyse-Schritt.",
35
+ "dropTitle": "Schemadatei hier ablegen oder durchsuchen",
36
+ "dropHint": "SQL DDL / pg_dump, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, Django-Modelle, Adminium JSON",
37
+ "pitch": "Keine Datenbankverbindung nötig — wir parsen Ihre Schemadatei und bauen dieselben Dashboards.",
38
+ "parsing": "Hochgeladene Schemadatei wird gelesen…",
39
+ "tables": "Tabellen",
40
+ "columns": "Spalten",
41
+ "warnings": "Warnungen",
42
+ "errorTitle": "Datei konnte nicht geparst werden",
43
+ "parseFailed": "Diese Datei konnte nicht geparst werden. Falls die automatische Erkennung falsch lag, wählen Sie das Format explizit und versuchen Sie es erneut.",
44
+ "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.",
45
+ "requestFailed": "Upload fehlgeschlagen — prüfen Sie Ihre Verbindung und versuchen Sie es erneut."
46
+ },
47
+ "title": "Verbinden Sie Ihre Datenbank",
48
+ "subtitle": "Richten Sie Adminium auf eine Datenbank — wir generieren aus ihrem Schema ein Admin-Dashboard.",
49
+ "name": "Verbindungsname",
50
+ "namePlaceholder": "Produktions-Postgres",
51
+ "modeLabel": "Eingabemodus der Quelle",
52
+ "mode": {
53
+ "dsn": "Verbindungszeichenfolge",
54
+ "fields": "Einzelne Felder",
55
+ "file": "Schemadatei"
56
+ },
57
+ "dsn": {
58
+ "label": "Verbindungszeichenfolge",
59
+ "helper": "postgres://benutzer:passwort@host:5432/datenbank — mysql:// und sqlite: funktionieren ebenfalls.",
60
+ "incomplete": "Host und Datenbank ergänzen, z. B. postgres://user@host:5432/db",
61
+ "invalidScheme": "Unbekanntes Schema — erwartet werden postgres://, mysql://, mariadb:// oder sqlite:",
62
+ "quickFill": "Schnellausfüllen:"
63
+ },
64
+ "fields": {
65
+ "host": "Host",
66
+ "port": "Port",
67
+ "database": "Datenbank",
68
+ "user": "Benutzer",
69
+ "password": "Passwort",
70
+ "ssl": "SSL-Modus",
71
+ "preview": "Vorschau der Verbindungszeichenfolge:"
72
+ },
73
+ "readOnlyRole": {
74
+ "title": "Verwenden Sie eine schreibgeschützte Rolle",
75
+ "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."
76
+ }
77
+ },
78
+ "capability": {
79
+ "mysqlApproxRows": "MySQL-Zeilenzahlen sind Schätzungen der Storage-Engine (Abweichungen bis ±40 % möglich) — sie werden mit ≈ angezeigt.",
80
+ "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+.",
81
+ "sqliteCheckEnums": "SQLite hat keinen nativen Enum-Typ — Enums werden aus CHECK-(col IN (…))-Constraints abgeleitet.",
82
+ "sqliteNoComments": "SQLite kennt keine Spaltenkommentare — verwenden Sie den Schema-Remap-Editor, um Beschriftungen zu vergeben.",
83
+ "importNoRowCounts": "Schemadateien enthalten keine Zeilenzahlen — die Tabellenliste zeigt — statt erfundener Werte.",
84
+ "importNoLiveHealth": "Keine Live-Datenbankverbindung — Health-Checks und Schema-Drift-Erkennung sind für diese Quelle nicht verfügbar.",
85
+ "rowsUnavailable": "Schemadateien haben keine Live-Datenbank — Zeilenzahlen sind unbekannt, bis Sie eine verbinden.",
86
+ "rowsRunAnalyze": "Noch keine Schätzung — führen Sie ANALYZE auf der Datenbank aus, um Zeilenzahlen zu erhalten.",
87
+ "rowsNoEstimate": "Die Engine hat für diese Tabelle keine Schätzung gemeldet.",
88
+ "rowsApproximate": "Schätzung der Storage-Engine — kann bei InnoDB um bis zu ±40 % abweichen."
89
+ },
90
+ "test": {
91
+ "log": {
92
+ "moreWarnings": "+{count} weitere Parser-Warnungen",
93
+ "connecting": "Sichere Verbindung wird aufgebaut…",
94
+ "connected": "Verbunden ({latency} ms) · schreibgeschützte Introspektion",
95
+ "connectFailed": "Verbindung fehlgeschlagen.",
96
+ "readingSchema": "Schema wird gelesen: public",
97
+ "readingFile": "Hochgeladene Schemadatei wird gelesen…",
98
+ "parsingFile": "{file} wird geparst…",
99
+ "detected": "{tables} Tabellen · {columns} Spalten erkannt",
100
+ "found": "{tables} Tabellen · {columns} Spalten gefunden",
101
+ "mapping": "Spaltentypen → Eingabe-Widgets werden zugeordnet",
102
+ "relations": "Beziehungen werden erkannt…",
103
+ "piiScan": "Suche nach PII-Spalten…",
104
+ "piiDone": "PII-Scan abgeschlossen — {count} Spalten standardmäßig maskiert",
105
+ "piiDoneUnknown": "PII-Scan abgeschlossen",
106
+ "jobFailed": "Introspektion fehlgeschlagen.",
107
+ "networkFailed": "Anfrage fehlgeschlagen — prüfen Sie Ihre Verbindung und versuchen Sie es erneut.",
108
+ "ready": "Bereit"
109
+ },
110
+ "title": "Ihr Schema wird analysiert",
111
+ "subtitle": "Tabellen, Spalten und Beziehungen werden introspiziert. Das dauert ein paar Sekunden.",
112
+ "trust": "Wir lesen nur Ihr Schema und Ihre Daten. Nichts wird verändert.",
113
+ "errorTitle": "Verbindung fehlgeschlagen",
114
+ "retry": "Erneut versuchen",
115
+ "logLabel": "Introspektionsprotokoll",
116
+ "hint": {
117
+ "auth": "Authentifizierung fehlgeschlagen — prüfen Sie Benutzername und Passwort in Ihrer DSN.",
118
+ "hostUnreachable": "Host nicht erreichbar — prüfen Sie Hostname und Port und dass die Datenbank Verbindungen von dieser Maschine akzeptiert (unsere IPs freigeben).",
119
+ "metaPlacement": "Diese Quelle kann Adminiums Meta-Tabellen nicht aufnehmen — fahren Sie mit einer separaten Meta-Datenbank fort.",
120
+ "permission": "Die Rolle hat sich verbunden, darf das Schema aber nicht lesen — erteilen Sie Ihrer Introspektionsrolle USAGE auf dem Schema.",
121
+ "timeout": "Die Datenbank hat nicht rechtzeitig geantwortet — prüfen Sie Netzwerkpfad und Auslastung und versuchen Sie es erneut.",
122
+ "tls": "TLS-Aushandlung fehlgeschlagen — versuchen Sie sslmode=require oder laden Sie das CA-Zertifikat hoch, das Ihr Server erwartet.",
123
+ "unknown": "Verbindung fehlgeschlagen — prüfen Sie die DSN und versuchen Sie es erneut."
124
+ }
125
+ },
126
+ "tables": {
127
+ "importNoCounts": "Schemadateien enthalten keine Zeilenzahlen — die Spalte zeigt —, bis eine Live-Datenbank verbunden ist.",
128
+ "title": "Wählen Sie Ihre Tabellen",
129
+ "subtitle": "Wählen Sie, welche enthalten sein sollen. Sie können das jederzeit ändern.",
130
+ "search": "Tabellen filtern…",
131
+ "listLabel": "Einbeziehbare Tabellen",
132
+ "emptyFilter": "Keine Tabellen entsprechen Ihrem Filter.",
133
+ "pii": "PII",
134
+ "highVolume": "hohes Volumen",
135
+ "highVolumeNote": "Tabellen mit über 100.000 Zeilen sind anfangs abgewählt — Ops-Tabellen gehören selten in ein Dashboard.",
136
+ "joinHidden": "{count} Join-/Systemtabellen sind vorab ausgeblendet — sie treiben weiterhin m:n-Beziehungen an."
137
+ },
138
+ "hub": {
139
+ "title": "Datenverbindungen",
140
+ "subtitle": "{healthy, number} von {total, plural, one {# Verbindung} other {# Verbindungen}} fehlerfrei",
141
+ "connectNew": "Neue Verbindung",
142
+ "stats": {
143
+ "connections": "Verbindungen",
144
+ "healthy": "Fehlerfrei",
145
+ "tables": "Einbezogene Tabellen",
146
+ "pages": "Generierte Seiten"
147
+ },
148
+ "status": {
149
+ "connected": "Verbunden",
150
+ "error": "Fehler",
151
+ "unconfigured": "Entwurf",
152
+ "testing": "Wird getestet…",
153
+ "paused": "Pausiert"
154
+ },
155
+ "card": {
156
+ "readOnly": "Schreibgeschützt",
157
+ "tables": "Tabellen",
158
+ "pages": "Seiten",
159
+ "latency": "Latenz",
160
+ "latencyMs": "{latency, number} ms",
161
+ "lastIntrospected": "Zuletzt introspiziert",
162
+ "never": "Nie",
163
+ "timezone": "Zeitzone",
164
+ "timezoneGuessed": "von diesem Server",
165
+ "paused": "Adminium stellt keine Verbindung zu dieser Datenbank her. Ihre Seiten laden wieder, sobald Sie sie fortsetzen.",
166
+ "pausedSince": "Pausiert {when} – Adminium stellt keine Verbindung zu dieser Datenbank her. Ihre Seiten laden wieder, sobald Sie sie fortsetzen."
167
+ },
168
+ "action": {
169
+ "test": "Testen",
170
+ "reintrospect": "Neu introspizieren",
171
+ "reintrospectFile": "Schemadatei-Quellen haben keine Live-Datenbank — laden Sie stattdessen die Datei erneut hoch.",
172
+ "remap": "Schema neu zuordnen",
173
+ "delete": "Löschen",
174
+ "regional": "Regionale Einstellungen",
175
+ "pause": "Pausieren",
176
+ "resume": "Fortsetzen",
177
+ "pausedHint": "Diese Verbindung ist pausiert – setzen Sie sie fort, um die Datenbank zu erreichen.",
178
+ "rename": "Umbenennen"
179
+ },
180
+ "regional": {
181
+ "title": "Regionale Einstellungen",
182
+ "intro": "Sie beschreiben das Unternehmen, zu dem diese Datenbank gehört, nicht die lesende Person. Von Adminium ausgelieferte Apps lesen sie hier.",
183
+ "timezone": "Zeitzone",
184
+ "timezoneHelper": "Datum und Uhrzeit werden in dieser Zeitzone dargestellt. Von Adminium gehostete Apps weichen ohne Angabe auf UTC aus und weisen im Bildschirm darauf hin.",
185
+ "guessedTitle": "Diese Zeitzone stammt vom Server",
186
+ "guessedBody": "Adminium hat sie von der Maschine übernommen, auf der es läuft — niemand hier hat sie gewählt. Zum Bestätigen speichern oder die Zeitzone wählen, in der dieses Unternehmen tatsächlich arbeitet.",
187
+ "timezonePlaceholder": "Region/Stadt",
188
+ "currency": "Währung",
189
+ "currencyHelper": "Dient der Formatierung von Beträgen. Optional – ohne Angabe ändert sich nur die Formatierung.",
190
+ "currencyPlaceholder": "ISO-4217-Code",
191
+ "notSet": "Nicht gesetzt",
192
+ "noMatch": "Keine passende Zone",
193
+ "noMatchCurrency": "Keine passende Währung",
194
+ "save": "Speichern",
195
+ "failed": "Regionale Einstellungen konnten nicht gespeichert werden",
196
+ "saved": "Regionale Einstellungen aktualisiert"
197
+ },
198
+ "test": {
199
+ "ok": "Verbindung fehlerfrei · {latency, number} ms",
200
+ "failed": "Verbindungstest fehlgeschlagen"
201
+ },
202
+ "introspect": {
203
+ "noChanges": "Schema unverändert — kein neuer Snapshot.",
204
+ "updated": "Schema neu introspiziert",
205
+ "masksProposed": "{count, plural, one {# Spalte} other {# Spalten}} zur Maskierung vorgeschlagen — im Remap-Editor prüfen.",
206
+ "failed": "Introspektion fehlgeschlagen. Versuchen Sie es erneut."
207
+ },
208
+ "delete": {
209
+ "title": "Verbindung löschen",
210
+ "body": "Dies löscht „{name}“ und die daraus generierten Seiten. Ihre Datenbank selbst bleibt unangetastet.",
211
+ "prompt": "Geben Sie {name} zur Bestätigung ein",
212
+ "confirm": "Verbindung löschen",
213
+ "cancel": "Abbrechen",
214
+ "close": "Schließen",
215
+ "success": "Verbindung „{name}“ gelöscht",
216
+ "failed": "Die Verbindung konnte nicht gelöscht werden. Versuchen Sie es erneut."
217
+ },
218
+ "empty": {
219
+ "title": "Noch keine Datenquellen",
220
+ "body": "Verbinden Sie eine Datenbank — Adminium generiert Ihr Admin-Panel aus deren Schema.",
221
+ "cta": "Datenbank verbinden"
222
+ },
223
+ "hostedApps": "Gehostete Apps",
224
+ "subtitlePaused": "{healthy, number} von {total, plural, one {# Verbindung} other {# Verbindungen}} fehlerfrei · {paused, number} pausiert",
225
+ "pause": {
226
+ "title": "Diese Verbindung pausieren?",
227
+ "body": "Adminium baut keine Verbindung mehr zu „{name}“ auf. {pages, plural, one {# Seite} other {# Seiten}}, geplante Berichte und gehostete Apps laden keine Daten mehr, bis Sie sie fortsetzen.",
228
+ "keeps": "Nichts wird gelöscht – die Verbindung, ihr Schema und {pages, plural, one {ihre # Seite} other {ihre # Seiten}} bleiben erhalten, und ein Klick holt sie zurück.",
229
+ "confirm": "Verbindung pausieren",
230
+ "pausedToast": "Verbindung „{name}“ pausiert",
231
+ "resumedToast": "Verbindung „{name}“ fortgesetzt",
232
+ "pauseFailed": "Die Verbindung konnte nicht pausiert werden. Versuchen Sie es erneut.",
233
+ "resumeFailed": "Die Verbindung konnte nicht fortgesetzt werden. Versuchen Sie es erneut."
234
+ },
235
+ "rename": {
236
+ "title": "Verbindung umbenennen",
237
+ "label": "Name",
238
+ "helper": "Wie diese Datenbank in Adminium überall heißt — die Karte, die Seitenleisten-Gruppe über ihren Seiten und jede Auswahl, die sie anbietet. Die Datenbank selbst wird nicht umbenannt.",
239
+ "save": "Umbenennen",
240
+ "saved": "Verbindung umbenannt",
241
+ "failed": "Die Verbindung konnte nicht umbenannt werden"
242
+ }
243
+ },
244
+ "settingsHub": {
245
+ "title": "Workspace-Einstellungen",
246
+ "subtitle": "Identität, Sicherheit und destruktive Aktionen für diesen Workspace.",
247
+ "save": "Änderungen speichern",
248
+ "saved": "Workspace-Einstellungen aktualisiert",
249
+ "saveFailed": "Die Workspace-Einstellungen konnten nicht gespeichert werden. Versuchen Sie es erneut.",
250
+ "superAdminOnlyTitle": "Super-Admin erforderlich",
251
+ "superAdminOnly": "Nur ein Super-Admin kann Identität und Sicherheitseinstellungen des Workspace ändern.",
252
+ "identity": {
253
+ "heading": "Workspace-Identität",
254
+ "appName": {
255
+ "label": "Anwendungsname",
256
+ "helper": "Erscheint in der Seitenleiste, im Browser-Titel und in E-Mails.",
257
+ "error": "Geben Sie einen Namen mit höchstens 60 Zeichen ein."
258
+ },
259
+ "logo": {
260
+ "label": "Logo",
261
+ "drop": "Bild hierher ziehen",
262
+ "helper": "PNG, JPEG, WebP, GIF oder SVG bis 1 MB. Ersetzt die eingebaute Marke überall.",
263
+ "upload": "Logo hochladen",
264
+ "replace": "Logo ersetzen",
265
+ "remove": "Entfernen",
266
+ "uploaded": "Logo aktualisiert",
267
+ "removed": "Logo entfernt",
268
+ "tooLarge": "Dieses Bild ist größer als 1 MB.",
269
+ "badType": "Wählen Sie ein PNG-, JPEG-, WebP-, GIF- oder SVG-Bild.",
270
+ "undo": "Rückgängig"
271
+ },
272
+ "showVersion": {
273
+ "label": "Version in der Seitenleiste",
274
+ "helper": "Die Build-Nummer neben dem Logo. Aus verbirgt, welche Version Sie einsetzen."
275
+ }
276
+ },
277
+ "security": {
278
+ "heading": "Sicherheit",
279
+ "require2fa": {
280
+ "label": "Zwei-Faktor-Authentifizierung verlangen",
281
+ "desc": "Jedes Mitglied muss 2FA aktivieren, um sich anzumelden.",
282
+ "note": "Hinweis, keine Sperre: Mitglieder ohne 2FA werden zur Einrichtung geleitet und können sie danach nicht mehr abschalten, ihre Anmeldung wird aber nie blockiert, und API-Schlüssel sind nicht betroffen."
283
+ },
284
+ "allowSignup": {
285
+ "label": "Selbstregistrierung erlauben",
286
+ "desc": "Jeder kann ein Konto erstellen — deaktiviert bleibt der Workspace nur per Einladung zugänglich."
287
+ },
288
+ "sessionTtl": {
289
+ "label": "Sitzungsdauer (Stunden)",
290
+ "error": "Zwischen {min, number} und {max, number} Stunden."
291
+ },
292
+ "passwordMin": {
293
+ "label": "Minimale Passwortlänge",
294
+ "error": "Zwischen {min, number} und {max, number} Zeichen."
295
+ }
296
+ },
297
+ "email": {
298
+ "heading": "E-Mail (SMTP)",
299
+ "unconfigured": "Es ist kein Mailserver eingerichtet, daher kann Adminium keine Passwort-Zurücksetzungen, Einladungen oder geplanten Berichte versenden.",
300
+ "host": {
301
+ "label": "SMTP-Host",
302
+ "error": "Nur ein Hostname oder eine IP-Adresse — ohne Schema, Port oder Zugangsdaten."
303
+ },
304
+ "port": {
305
+ "label": "Port",
306
+ "error": "Zwischen {min, number} und {max, number}."
307
+ },
308
+ "user": {
309
+ "label": "Benutzername",
310
+ "helper": "Leer lassen, wenn das Relay keine Anmeldung verlangt."
311
+ },
312
+ "pass": {
313
+ "label": "Passwort",
314
+ "helper": "Verschlüsselt gespeichert und nie wieder angezeigt. Leer lassen, um das aktuelle zu behalten.",
315
+ "error": "Zu diesem Benutzernamen gehört ein Passwort."
316
+ },
317
+ "from": {
318
+ "label": "Absenderadresse",
319
+ "helper": "Nur die Adresse oder ein Anzeigename davor.",
320
+ "error": "Geben Sie eine E-Mail-Adresse ein."
321
+ },
322
+ "secure": {
323
+ "label": "Implizites TLS",
324
+ "helper": "An für Port 465. Aus beginnt unverschlüsselt und wechselt per STARTTLS — so erwartet es Port 587."
325
+ },
326
+ "remove": "Mailserver entfernen",
327
+ "review": {
328
+ "removed": "Entfernt",
329
+ "password": "Ersetzt"
330
+ }
331
+ },
332
+ "review": {
333
+ "title": "Workspace-Einstellungen speichern",
334
+ "subtitle": "Prüfen Sie Ihre Änderungen vor dem Speichern.",
335
+ "confirm": "Änderungen speichern",
336
+ "cancel": "Abbrechen",
337
+ "close": "Schließen",
338
+ "on": "An",
339
+ "off": "Aus",
340
+ "shown": "Sichtbar",
341
+ "hidden": "Verborgen",
342
+ "change": "{before} → {after}"
343
+ },
344
+ "defaultsCard": {
345
+ "heading": "Standards für Darstellung & Sprache",
346
+ "body": "Workspace-weite Einstellungen für Theme, Akzentfarbe, Dichte und Sprache finden Sie unter „Globale Standards“.",
347
+ "cta": "Globale Standards öffnen"
348
+ },
349
+ "danger": {
350
+ "heading": "Gefahrenzone",
351
+ "subtitle": "Unumkehrbare Aktionen.",
352
+ "empty": "Nichts zu löschen — noch keine Verbindungen.",
353
+ "deleteDesc": "Löscht die Verbindung und die daraus generierten Seiten. Ihre Datenbank bleibt unangetastet. Kann nicht rückgängig gemacht werden.",
354
+ "deleteCta": "Verbindung löschen"
355
+ },
356
+ "aiCard": {
357
+ "heading": "KI-Anreicherung",
358
+ "body": "Konfigurieren Sie einen KI-Anbieter (oder den Kopieren-Einfügen-Umlauf), um Bezeichnungen, Gruppen und Beziehungen anzureichern.",
359
+ "cta": "KI-Einstellungen öffnen"
360
+ },
361
+ "pagesCard": {
362
+ "heading": "Seiten",
363
+ "body": "Seiten hinzufügen, bearbeiten und löschen, ihre Inhalte ändern und die Seitenleiste neu ordnen.",
364
+ "cta": "Seiten verwalten"
365
+ },
366
+ "translationsCard": {
367
+ "heading": "Sprachen & Übersetzungen",
368
+ "body": "Formulieren Sie beliebige Texte in Adminium neu, legen Sie fest, welche Sprachen zur Auswahl stehen, und fügen Sie eigene hinzu.",
369
+ "cta": "Übersetzungen öffnen"
370
+ }
371
+ },
372
+ "settingsAi": {
373
+ "title": "KI-Anreicherung",
374
+ "subtitle": "Verbinden Sie ein Modell, damit Adminium Bezeichnungen, Gruppen, Beziehungen und mehr vorschlägt — immer als Diff geprüft, bevor etwas übernommen wird.",
375
+ "saved": "KI-Anbieter gespeichert",
376
+ "saveFailed": "Der KI-Anbieter konnte nicht gespeichert werden. Erneut versuchen.",
377
+ "save": "Anbieter speichern",
378
+ "test": "Verbindung testen",
379
+ "testHintDirty": "Speichern Sie Ihre Änderungen vor dem Test.",
380
+ "testing": "Anbieter wird angepingt…",
381
+ "testError": "Test fehlgeschlagen",
382
+ "testErrorBody": "Der Anbieter war nicht erreichbar. Prüfen Sie Schlüssel und Basis-URL.",
383
+ "testOk": "Verbunden mit {model} in {latency} ms",
384
+ "testUnknownModel": "dem Anbieter",
385
+ "provider": {
386
+ "heading": "KI-Anbieter",
387
+ "subtitle": "Wählen Sie, wie Adminium ein Modell zur Anreicherung Ihres Schemas erreicht. Schlüssel werden verschlüsselt gespeichert und nie wieder angezeigt.",
388
+ "active": "Aktiv",
389
+ "anthropic": {
390
+ "label": "Anthropic",
391
+ "desc": "Claude-Modelle über die Anthropic-API."
392
+ },
393
+ "openai": {
394
+ "label": "OpenAI",
395
+ "desc": "GPT-Modelle über die OpenAI-API."
396
+ },
397
+ "openaiCompatible": {
398
+ "label": "OpenAI-kompatibel",
399
+ "desc": "Jeder Endpunkt, der das OpenAI-Format spricht — Groq, Together, vLLM, LM Studio."
400
+ },
401
+ "ollama": {
402
+ "label": "Ollama (lokal)",
403
+ "desc": "Modelle laufen lokal über Ollama — kein Schlüssel, keine Cloud."
404
+ },
405
+ "requiresNetwork": "Erfordert Internet und einen API-Schlüssel",
406
+ "networkDisabledTitle": "Direkte KI-Anbieter sind in dieser Installation deaktiviert",
407
+ "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."
408
+ },
409
+ "configure": {
410
+ "heading": "{provider} konfigurieren"
411
+ },
412
+ "field": {
413
+ "baseUrl": "Basis-URL",
414
+ "baseUrlOptional": "Unverändert lassen, außer Ollama läuft auf einem anderen Host.",
415
+ "baseUrlHelper": "Die Endpunkt-Wurzel, die /chat/completions bereitstellt.",
416
+ "model": "Modell",
417
+ "modelFreeText": "Geben Sie die genaue Modell-ID ein, die Ihr Endpunkt bereitstellt.",
418
+ "modelLive": "Live vom Anbieter geladen.",
419
+ "modelStatic": "Eine bewährte Liste; geben Sie nach dem Speichern eine eigene ID ein, um sie zu aktualisieren.",
420
+ "modelLoading": "Wird geladen…",
421
+ "modelPlaceholder": "Modell auswählen…",
422
+ "key": "API-Schlüssel",
423
+ "keyStored": "Verschlüsselt gespeichert. Ersetzen Sie ihn, um einen anderen Schlüssel zu verwenden.",
424
+ "keyMask": "sk-…{last4}",
425
+ "keyReplace": "Schlüssel ersetzen",
426
+ "keyOptional": "Optional — manche Endpunkte brauchen keinen Schlüssel.",
427
+ "keyWriteOnly": "Nur schreibend: einmal gespeichert, wird er nie wieder angezeigt.",
428
+ "noKeyTitle": "Kein API-Schlüssel nötig",
429
+ "noKeyBody": "Ollama läuft lokal, es verlässt also nichts diesen Rechner."
430
+ },
431
+ "runStatus": {
432
+ "draft": "Entwurf",
433
+ "running": "Läuft",
434
+ "awaitingResponse": "Wartet auf Antwort",
435
+ "validated": "Validiert",
436
+ "applied": "Übernommen",
437
+ "partiallyApplied": "Teilweise übernommen",
438
+ "failed": "Fehlgeschlagen",
439
+ "discarded": "Verworfen"
440
+ },
441
+ "byo": {
442
+ "heading": "Kein Schlüssel? Nutzen Sie Ihr eigenes KI-Tool",
443
+ "subtitle": "Der Kopieren-Einfügen-Umlauf — nichts verlässt diesen Rechner.",
444
+ "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.",
445
+ "guaranteeTitle": "Telemetriefreie Garantie",
446
+ "guarantee1": "Der Prompt enthält nur Ihr Schema und aggregierte Statistiken — standardmäßig nie Zeilendaten.",
447
+ "guarantee2": "Keine Anmeldedaten, keine Instanz-URL, keine Kennungen sind eingebettet.",
448
+ "guarantee3": "BYO-Läufe machen keinerlei Netzwerkaufrufe.",
449
+ "promptVersion": "Prompt {version}",
450
+ "schemaVersion": "Schema {version}",
451
+ "headingRecommended": "Eigenes KI-Tool verwenden — kein Schlüssel nötig",
452
+ "recommended": "Empfohlen"
453
+ },
454
+ "history": {
455
+ "heading": "Laufverlauf",
456
+ "subtitle": "Frühere Anreicherungsläufe. Öffnen Sie einen, um seine Vorschläge zu prüfen.",
457
+ "tableLabel": "Anreicherungsläufe",
458
+ "colDate": "Datum",
459
+ "colSource": "Quelle",
460
+ "colStatus": "Status",
461
+ "colChunks": "Blöcke",
462
+ "openReview": "Prüfung für den Lauf vom {date} öffnen",
463
+ "connection": "Verbindung",
464
+ "empty": "Noch keine Anreicherungsläufe. Reichern Sie ein Schema im Verbindungsassistenten an, um hier Verlauf zu sehen.",
465
+ "errorTitle": "Läufe konnten nicht geladen werden",
466
+ "errorBody": "Laden Sie die Seite neu, um es erneut zu versuchen.",
467
+ "noConnections": "Verbinden Sie zuerst eine Datenbank — Anreicherungsläufe werden pro Verbindung erfasst.",
468
+ "byo": "BYO",
469
+ "directPath": "Direkt"
470
+ }
471
+ },
472
+ "enrich": {
473
+ "title": "Mit KI anreichern",
474
+ "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.",
475
+ "intentLabel": "Wie möchten Sie anreichern?",
476
+ "sectionsLegend": "Worüber soll die KI entscheiden?",
477
+ "localesLegend": "Bezeichnungen übersetzen in",
478
+ "localeLocked": "(erforderlich)",
479
+ "samplingTitle": "Beispielwerte einbeziehen",
480
+ "samplingHint": "Nimmt bis zu 20 echte Werte pro Nicht-PII-Spalte in den Prompt auf.",
481
+ "samplingPreviewTitle": "Was diesen Rechner verlässt",
482
+ "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.",
483
+ "noSections": "Wählen Sie mindestens eine Entscheidungsgruppe zum Anreichern.",
484
+ "generatePrompt": "Prompt erzeugen",
485
+ "startProvider": "Anreicherung starten",
486
+ "startOver": "Von vorn beginnen",
487
+ "copied": "Kopiert",
488
+ "createFailed": "Der Anreicherungs-Prompt konnte nicht erstellt werden — erneut versuchen.",
489
+ "createFailedTitle": "Konnte nicht starten",
490
+ "providerFallback": "Ihr KI-Anbieter",
491
+ "fileTitle": "KI-Anreicherung benötigt eine aktive Datenbank",
492
+ "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.",
493
+ "section": {
494
+ "labels": "Bezeichnungen & Beschreibungen",
495
+ "groups": "Navigationsgruppen",
496
+ "enums": "Enum-Semantik",
497
+ "relations": "Beziehungen",
498
+ "keys": "Schlüsselspalten",
499
+ "templates": "Seitenvorlagen",
500
+ "widgets": "Dashboard-Widgets",
501
+ "pii": "PII & Maskierung",
502
+ "icons": "Symbole",
503
+ "microcopy": "Mikrotexte"
504
+ },
505
+ "provider": {
506
+ "title": "Meinen KI-Anbieter verwenden",
507
+ "description": "Führen Sie die Anreicherung jetzt mit Ihrem konfigurierten Anbieter aus. Sie prüfen jeden Vorschlag als Diff.",
508
+ "unconfigured": "Es ist noch kein KI-Anbieter konfiguriert — kopieren Sie unten einen Prompt in Ihr eigenes Tool, oder konfigurieren Sie zuerst einen Anbieter.",
509
+ "settingsHint": "Möchten Sie es direkt ausführen?",
510
+ "settingsLink": "Anbieter in Einstellungen → KI konfigurieren",
511
+ "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."
512
+ },
513
+ "byo": {
514
+ "cardTitle": "Einen Prompt in mein eigenes KI-Tool kopieren",
515
+ "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.",
516
+ "guidance": "Führen Sie dies in einem beliebigen KI-Tool aus — Claude Code, ChatGPT, egal. Fügen Sie das zurückgegebene JSON unten ein.",
517
+ "promptLabel": "Anreicherungs-Prompt",
518
+ "promptLabelN": "Anreicherungs-Prompt {index} von {total}",
519
+ "tokenChip": "≈ {tokens} Tokens",
520
+ "copyPrompt": "Prompt kopieren",
521
+ "copyPromptDone": "Prompt kopiert",
522
+ "download": ".md herunterladen",
523
+ "chunkTabs": "Prompt-Abschnitte",
524
+ "chunkTab": "Prompt {index}",
525
+ "chunkValid": "Abschnitt {index} validiert",
526
+ "pasteLabel": "JSON-Antwort einfügen",
527
+ "pastePlaceholder": "JSON-Antwort hier einfügen…",
528
+ "validate": "Validieren",
529
+ "valid": "Antwort validiert",
530
+ "mergedTitle": "Alle {count} Abschnitte validiert und zusammengeführt",
531
+ "mergedTitleSingle": "Antwort validiert",
532
+ "mergedBody": "Die Vorschläge können nun gegen die heuristische Grundlage geprüft werden.",
533
+ "errorsTitle": "Die Validierung fand {count} Probleme",
534
+ "copyErrors": "Fehler für Ihr KI-Tool kopieren",
535
+ "copyErrorsDone": "Fehler kopiert",
536
+ "copyErrorsHint": "Fügen Sie dies in Ihr KI-Tool zurück ein, um eine korrigierte Antwort zu erhalten.",
537
+ "droppedItems": "{count} Vorschläge wurden bei der Validierung verworfen — die Prüfung zeigt die übrigen.",
538
+ "pendingTitle": "Validieren Sie jeden Prompt, um fortzufahren",
539
+ "pendingBody": "Fügen Sie die JSON-Antwort oben ein und validieren Sie sie, um zur Prüfung fortzufahren.",
540
+ "pendingBodyChunked": "Jeder Abschnitt muss validiert werden, bevor die Vorschläge zusammengeführt werden. Fügen Sie jeden Prompt oben ein und validieren Sie ihn.",
541
+ "requestFailed": "Der Server war für die Validierung nicht erreichbar — erneut versuchen.",
542
+ "continueReview": "Weiter zur Prüfung",
543
+ "wholeDocument": "gesamtes Dokument",
544
+ "cardTitleRecommended": "Prompt in mein eigenes KI-Tool kopieren — empfohlen"
545
+ },
546
+ "direct": {
547
+ "title": "Anreicherung mit KI",
548
+ "subtitle": "Ihr Schema wird gesendet an",
549
+ "building": "Prompt wird erstellt…",
550
+ "logLabel": "Anreicherungsprotokoll",
551
+ "cancel": "Abbrechen",
552
+ "back": "Zurück zu den Optionen",
553
+ "retry": "Erneut versuchen",
554
+ "done": "Anreicherung abgeschlossen — prüfen Sie die Vorschläge.",
555
+ "continueReview": "Weiter zur Prüfung",
556
+ "failed": "Der Anbieterlauf ist fehlgeschlagen. Prüfen Sie Ihre KI-Einstellungen und versuchen Sie es erneut.",
557
+ "jobFailed": "Der Anreicherungslauf wurde nicht abgeschlossen.",
558
+ "startFailed": "Der Lauf konnte nicht gestartet werden — erneut versuchen.",
559
+ "errorTitle": "Anreicherung fehlgeschlagen"
560
+ },
561
+ "skip": {
562
+ "title": "Überspringen — nur Heuristik verwenden",
563
+ "description": "Aus der heuristischen Grundlage generieren. Sie können später über Einstellungen → KI anreichern — Überspringen wird nie bestraft.",
564
+ "confirmTitle": "Weiter mit Heuristik",
565
+ "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."
566
+ }
567
+ },
568
+ "review": {
569
+ "unavailableTitle": "Prüfungsansicht nicht verfügbar",
570
+ "unavailableBody": "Dieser Build enthält die Anreicherungs-Prüfungsansicht noch nicht (06-T14). Sie kommt mit dem Diff-und-Übernehmen-Ablauf."
571
+ },
572
+ "llmRuns": {
573
+ "review": {
574
+ "header": {
575
+ "title": "KI-Vorschläge prüfen",
576
+ "model": "Modell",
577
+ "snapshot": "Schnappschuss",
578
+ "byo": "BYO",
579
+ "pathDirect": "Direkte API",
580
+ "pathByo": "Kopieren & Einfügen",
581
+ "agree": "{n} übereinstimmend",
582
+ "conflict": "{n} Konflikt",
583
+ "new": "{n} neu",
584
+ "rejects": "{n} Ablehnungen",
585
+ "countsAria": "Anzahl der Vorschläge"
586
+ },
587
+ "bulk": {
588
+ "thresholdLabel": "Konfidenzschwelle",
589
+ "thresholdAria": "Konfidenzschwelle für „Alle übernehmen“",
590
+ "acceptAll": "Alle ≥ {pct}% übernehmen",
591
+ "clear": "Auswahl aufheben"
592
+ },
593
+ "section": {
594
+ "selectAllAria": "Alle in {group} auswählen",
595
+ "acceptedCount": "{n} übernommen"
596
+ },
597
+ "group": {
598
+ "labels": "Bezeichnungen & Übersetzungen",
599
+ "navigation": "Navigation & Domänen",
600
+ "enums": "Enum-Semantik",
601
+ "relations": "Beziehungen",
602
+ "keys": "Schlüsselspalten",
603
+ "templates": "Seitenvorlagen",
604
+ "dashboards": "Dashboards & Widgets",
605
+ "pii": "PII & Maskierung",
606
+ "icons": "Symbole",
607
+ "microcopy": "Mikrotexte"
608
+ },
609
+ "status": {
610
+ "agree": "Stimmt überein",
611
+ "conflict": "Konflikt",
612
+ "new": "Neu",
613
+ "heuristicOnly": "Nur Heuristik",
614
+ "rejects": "Lehnt Heuristik ab",
615
+ "locked": "Gesperrt"
616
+ },
617
+ "row": {
618
+ "acceptAria": "{noun}-Vorschlag für {target} übernehmen",
619
+ "keptEdited": "beibehalten – von Ihnen bearbeitet",
620
+ "rejectsCallout": "Die KI lehnt eine heuristische Entscheidung ab – vor dem Übernehmen bestätigen.",
621
+ "showTranslations": "Übersetzungen anzeigen",
622
+ "hideTranslations": "Übersetzungen ausblenden",
623
+ "confidenceAria": "Konfidenz {pct}%",
624
+ "noAi": "Kein KI-Vorschlag"
625
+ },
626
+ "value": {
627
+ "none": "Kein Wert",
628
+ "absent": "Keiner",
629
+ "dash": "—",
630
+ "display": "Anzeige",
631
+ "key": "Schlüssel",
632
+ "rank": "Rang {n}",
633
+ "span": "Breite {n}",
634
+ "tableCount": "{n} Tabellen",
635
+ "widgetCount": "{n} Widgets",
636
+ "enumWorkflow": "Workflow",
637
+ "enumCategory": "Kategorie",
638
+ "notPii": "Keine PII",
639
+ "label": "Bezeichnung",
640
+ "description": "Beschreibung",
641
+ "subtitle": "Seitenuntertitel",
642
+ "headline": "Überschrift für leeren Zustand",
643
+ "guidance": "Hinweis für leeren Zustand"
644
+ },
645
+ "apply": {
646
+ "title": "{n} Vorschläge übernehmen",
647
+ "subtitle": "Diese Änderungen werden in einer Transaktion geschrieben und können rückgängig gemacht werden.",
648
+ "empty": "Nichts zum Übernehmen ausgewählt.",
649
+ "confirm": "Änderungen übernehmen"
650
+ },
651
+ "footer": {
652
+ "count": "{n} Vorschläge ausgewählt",
653
+ "apply": "{n} übernommene Vorschläge anwenden",
654
+ "failed": "Anwenden fehlgeschlagen"
655
+ },
656
+ "toast": {
657
+ "applied": "{n} Vorschläge übernommen",
658
+ "appliedPartial": "{n} Vorschläge übernommen (einige übersprungen)",
659
+ "applyFailed": "Vorschläge konnten nicht übernommen werden",
660
+ "undoFailed": "Diese Änderung konnte nicht rückgängig gemacht werden"
661
+ },
662
+ "error": {
663
+ "title": "Dieser Lauf konnte nicht geladen werden"
664
+ },
665
+ "notReady": {
666
+ "title": "Dieser Lauf hat noch keine Vorschläge zur Prüfung",
667
+ "body": "Ein Lauf muss validiert sein, bevor seine Vorschläge geprüft werden können. Erzeugen oder fügen Sie zuerst eine Antwort ein."
668
+ },
669
+ "applied": {
670
+ "title": "Dieser Lauf wurde angewendet",
671
+ "body": "Die übernommenen Vorschläge unten sind schreibgeschützt."
672
+ },
673
+ "empty": {
674
+ "title": "Keine Vorschläge",
675
+ "body": "Dieser Lauf hat keine Vorschläge zur Prüfung erzeugt."
676
+ },
677
+ "cat": {
678
+ "label": "Bezeichnung",
679
+ "key": "Schlüsselspalten",
680
+ "enum": "Enum",
681
+ "relation": "Beziehung",
682
+ "pii": "PII",
683
+ "template": "Seitenvorlage",
684
+ "group": "Navigationsgruppe",
685
+ "dashboard": "Dashboard",
686
+ "widget": "Widget",
687
+ "copy": "Mikrotext"
688
+ }
689
+ }
690
+ },
691
+ "wizard": {
692
+ "title": "Neue Verbindung",
693
+ "back": "Zurück",
694
+ "continue": "Weiter",
695
+ "progress": "Einrichtungsfortschritt",
696
+ "persistFailed": "Ihre Tabellenauswahl konnte nicht gespeichert werden — versuchen Sie es erneut.",
697
+ "persistFailedTitle": "Speichern fehlgeschlagen",
698
+ "bridgeAppliedTitle": "Verbindungszeichenfolge empfangen",
699
+ "bridgeAppliedBody": "Von adminium.dev durch Ihren Browser übergeben — sie ging direkt an diesen Rechner und wurde nie hochgeladen. Prüfen Sie sie unten und fahren Sie fort.",
700
+ "bridgeFailedTitle": "Diese Übergabe konnte nicht verwendet werden",
701
+ "bridgeFailedBody": "Sie wurde bereits verwendet oder ist abgelaufen. Fügen Sie Ihre Verbindungszeichenfolge stattdessen unten ein.",
702
+ "step": {
703
+ "source": "Quelle",
704
+ "test": "Analysieren",
705
+ "tables": "Tabellen",
706
+ "meta": "Meta-Speicher",
707
+ "intent": "Zweck",
708
+ "enrich": "Anreichern",
709
+ "generate": "Generieren"
710
+ }
711
+ },
712
+ "meta": {
713
+ "title": "Wo soll Adminium seine eigenen Tabellen ablegen?",
714
+ "subtitle": "Seiten, Rollen, Audit-Log und Einstellungen liegen in Tabellen mit adminium_-Präfix — nie mit Ihren Daten vermischt.",
715
+ "sameDb": {
716
+ "title": "Gleiche Datenbank",
717
+ "description": "adminium_*-Tabellen werden neben Ihren Quelltabellen angelegt. Einfachste Einrichtung — benötigt eine Rolle mit Schreib- und CREATE-TABLE-Rechten.",
718
+ "disabledReadOnly": "Ihre Rolle ist schreibgeschützt — Adminium schreibt nie in diese Datenbank. Wählen Sie für Adminiums eigene Tabellen eine separate Datenbank.",
719
+ "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.",
720
+ "disabledFile": "Eine Schemadatei hat keine Live-Datenbank — wählen Sie für Adminiums eigene Tabellen eine separate Datenbank."
721
+ },
722
+ "separate": {
723
+ "title": "Separate Datenbank",
724
+ "description": "Adminium hält seine Tabellen in einer anderen Datenbank. Ihre Quelle bleibt unangetastet — erforderlich für schreibgeschützte Quellen.",
725
+ "dsn": "Verbindungszeichenfolge der Meta-Datenbank",
726
+ "helper": "Benötigt Schreib- und DDL-Rechte — Adminium führt dort seine eigenen Migrationen aus.",
727
+ "test": "Verbindung testen",
728
+ "ok": "Kompatibel — Schreiben ✓ · DDL ✓",
729
+ "insufficient": "Diese Rolle kann den Meta-Store nicht aufnehmen — Adminium benötigt dort Schreib- und CREATE-TABLE-Rechte.",
730
+ "errorTitle": "Meta-Store nicht kompatibel"
731
+ },
732
+ "testFailed": "Verbindung fehlgeschlagen.",
733
+ "v1Note": {
734
+ "title": "Über diese Installation",
735
+ "body": "Dieser Server hält seine eigenen Tabellen bereits in einer konfigurierten Datenbank, und dieser Schritt verschiebt sie nicht. Er prüft, ob Ihre Wahl mit dieser Verbindung kompatibel ist — der Server erzwingt dieselbe Regel unabhängig (409 META_PLACEMENT_INVALID)."
736
+ },
737
+ "move": {
738
+ "title": "Adminiums Tabellen werden verschoben",
739
+ "copying": "Adminiums Tabellen werden verschoben …",
740
+ "restarting": "Neustart …",
741
+ "copyingBody": "Jede adminium_-Tabelle wird in die neue Datenbank kopiert. Ihre Quelldaten bleiben unberührt, und es wird erst umgeschaltet, wenn die Kopie geprüft ist.",
742
+ "restartingBody": "Die Kopie ist fertig. Adminium startet auf der neuen Datenbank neu — diese Seite fährt in wenigen Sekunden von selbst fort.",
743
+ "failed": "Adminiums Tabellen konnten nicht verschoben werden — erneut versuchen.",
744
+ "timeout": "Adminium hat seine Tabellen verschoben, ist aber noch nicht zurück. Ihre Daten liegen sicher in der neuen Datenbank — laden Sie diese Seite gleich neu."
745
+ },
746
+ "willMove": {
747
+ "title": "Dies verschiebt Adminiums Tabellen",
748
+ "body": "Adminium nutzt derzeit seinen integrierten SQLite-Speicher. „Weiter“ kopiert diesen Speicher in die gewählte Datenbank und startet darauf neu — Konten, Seiten und Einstellungen kommen mit, Sie bleiben angemeldet."
749
+ }
750
+ },
751
+ "intent": {
752
+ "title": "Was brauchen Sie?",
753
+ "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.",
754
+ "trust": "Wir lesen nur Ihr Schema — während der Einrichtung nie Ihre Zeilendaten.",
755
+ "fullAdmin": {
756
+ "title": "Vollständiges Admin-Panel",
757
+ "description": "Dashboards, CRUD-Seiten, Suche, Importe und Exporte — alles, was Ihr Schema unterstützt."
758
+ },
759
+ "analytics": {
760
+ "title": "Schreibgeschützte Analysen",
761
+ "description": "Dashboards, Diagramme und schreibgeschützte Tabellen. Keine Formulare, keine Schreibvorgänge — jede Rolle auf Betrachter begrenzt."
762
+ },
763
+ "crud": {
764
+ "title": "CRUD-Tabellen",
765
+ "description": "Eine Bearbeitungsseite pro Tabelle plus Suche und Import/Export — ein minimales Zuhause, keine Dashboards."
766
+ },
767
+ "support": {
768
+ "title": "Support-Konsole",
769
+ "description": "Zuerst Warteschlangen, Ticket- und Kundendetailseiten. Löschen standardmäßig aus. (Queue-Vorlagen kommen mit M7 — der v1-Seitensatz entspricht dem vollständigen Admin.)"
770
+ }
771
+ },
772
+ "generate": {
773
+ "title": "Generieren Sie Ihre App",
774
+ "subtitle": "Eine Seite pro einbezogener Tabelle plus Dashboards je Domäne — Zweck:",
775
+ "run": "Dashboard generieren",
776
+ "openApp": "App öffnen",
777
+ "logLabel": "Generierungsprotokoll",
778
+ "log": {
779
+ "classifying": "Schema wird klassifiziert…",
780
+ "composing": "Vorlagen werden zusammengestellt…",
781
+ "writing": "Seiten werden geschrieben…",
782
+ "done": "{pages} Seiten in {groups} Navigationsgruppen generiert"
783
+ },
784
+ "successTitle": "Ihr Dashboard ist bereit",
785
+ "successBody": "{pages} Seiten in {groups} Navigationsgruppen — aus Ihrem Schema generiert, im Studio bearbeitbar.",
786
+ "errorTitle": "Generierung fehlgeschlagen",
787
+ "failed": "Generierung fehlgeschlagen — versuchen Sie es erneut oder führen Sie zuerst die Introspektion erneut aus.",
788
+ "fileTitle": "Schemadatei geparst — die Generierung benötigt eine Live-Datenbank",
789
+ "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."
790
+ },
791
+ "remap": {
792
+ "column": {
793
+ "nullable": "NULL erlaubt",
794
+ "labelOverride": "Anzeigebezeichnung",
795
+ "labelHelper": "Abgeleitet: {name}",
796
+ "logicalType": "Logischer Typ",
797
+ "logicalTypeHelper": "Abgeleitet: {type} (aus {dbType}) — vom Adapter zugeordnet; in v1 nicht überschreibbar.",
798
+ "semantic": "Semantischer Typ",
799
+ "unclassified": "Noch nicht klassifiziert.",
800
+ "semanticHelper": "Klassifizierer: {tag} · {confidence}% Konfidenz · Quelle: {source}",
801
+ "semanticInferred": "abgeleitet: {tag}",
802
+ "currency": "Währung",
803
+ "currencyHelper": "ISO-4217-Code für die Formatierung von Geldbeträgen.",
804
+ "pii": "Standardmäßig maskieren",
805
+ "piiHelper": "Maskierte Werte werden geschwärzt dargestellt; das Aufheben der Maskierung erfordert die Berechtigung data.unmask_pii und wird im Audit-Log protokolliert.",
806
+ "enum": "Enum-Semantik",
807
+ "enumKind": "Enum-Art",
808
+ "enumWorkflow": "Workflow",
809
+ "enumCategory": "Kategorie",
810
+ "enumLabelFor": "Bezeichnung für {value}",
811
+ "enumToneFor": "Farbton für {value}",
812
+ "enumToneAuto": "automatisch",
813
+ "enumHelper": "Workflow-Enums steuern Status-Pills und Board-Spalten; Farbtöne ordnen Werte der semantischen Farbtonskala zu."
814
+ },
815
+ "diff": {
816
+ "one": "1 Änderung",
817
+ "count": "{count} Änderungen",
818
+ "saved": "Überschreibungen gespeichert.",
819
+ "revertOne": "{change} verwerfen",
820
+ "regenerate": "Seiten neu generieren",
821
+ "revertAll": "Alle verwerfen",
822
+ "save": "Überschreibungen speichern"
823
+ },
824
+ "table": {
825
+ "iconPicker": "Tabellensymbol",
826
+ "system": "System",
827
+ "labelOverride": "Anzeigebezeichnung",
828
+ "labelHelper": "Abgeleitet: {name}",
829
+ "icon": "Symbol",
830
+ "navGroup": "Navigationsgruppe",
831
+ "navGroupHelper": "Die Platzierung in der Navigation entscheidet der Generator — eine table.navGroup-Überschreibung ist nicht Teil des v1-Vokabulars.",
832
+ "include": "In die generierte App einbeziehen",
833
+ "includeHelper": "Ausgeschlossene Tabellen erhalten keine Seiten und verschwinden aus der Navigation.",
834
+ "shape": "Tabellenform (klassifiziert)",
835
+ "role": "Rolle",
836
+ "unclassified": "Nicht klassifiziert",
837
+ "kind": "Art",
838
+ "hierarchy": "Hierarchie",
839
+ "selfFk": "Selbstreferenz über {column}",
840
+ "polymorphic": "Polymorphe Paare",
841
+ "rows": "Geschätzte Zeilenzahl",
842
+ "shapeHelper": "Die Klassifikation wird bei jeder Introspektion neu berechnet; Überschreibungen liegen darüber und überstehen die Neugenerierung."
843
+ },
844
+ "relations": {
845
+ "declared": "Deklarierte Fremdschlüssel",
846
+ "noneDeclared": "Keine deklarierten Fremdschlüssel berühren diese Tabelle.",
847
+ "inferred": "Abgeleitete Beziehungen",
848
+ "noneInferred": "Für diese Tabelle wurde nichts abgeleitet.",
849
+ "confidence": "abgeleitet · {pct}%",
850
+ "accepted": "Übernommen",
851
+ "suppressed": "Unterdrückt",
852
+ "accept": "Übernehmen",
853
+ "suppress": "Unterdrücken",
854
+ "overrides": "Beziehungs-Überschreibungen (angewendet)",
855
+ "overrideBadge": "Überschreibung",
856
+ "add": "Virtuelle Beziehung hinzufügen",
857
+ "fromColumn": "Quellspalte",
858
+ "noColumns": "Keine passende Spalte",
859
+ "fromPlaceholder": "customer_id",
860
+ "toTable": "Zieltabelle",
861
+ "noTables": "Keine passende Tabelle",
862
+ "toColumn": "Zielspalte",
863
+ "cardinality": "Kardinalität",
864
+ "addButton": "Beziehung hinzufügen"
865
+ },
866
+ "toast": {
867
+ "saved": "Schema-Überschreibungen gespeichert",
868
+ "savedDetail": "Das angewendete Schema unten spiegelt Ihre Änderungen wider.",
869
+ "regenerated": "{created} erstellt · {updated} aktualisiert · {unchanged} unverändert",
870
+ "regeneratedDetail": "Von Hand bearbeitete Seiten bleiben erhalten — nur Seiten mit unangetastetem generated_hash wurden an Ort und Stelle neu generiert.",
871
+ "regenerateFailed": "Neugenerierung fehlgeschlagen"
872
+ },
873
+ "title": "Schema neu zuordnen",
874
+ "subtitle": "{tables} Tabellen · {applied} Überschreibungen angewendet",
875
+ "saveFailed": "Speichern fehlgeschlagen: {message}",
876
+ "loadFailed": "Das Schema für diese Verbindung konnte nicht geladen werden.",
877
+ "inspector": "Inspektor",
878
+ "empty": {
879
+ "title": "Wählen Sie eine Tabelle oder Spalte",
880
+ "description": "Wählen Sie etwas im Schemabaum aus, um Bezeichnung, Typ, Beziehungen oder Maskierung neu zuzuordnen."
881
+ },
882
+ "tabs": {
883
+ "details": "Details",
884
+ "relations": "Beziehungen"
885
+ },
886
+ "tree": {
887
+ "label": "Schema",
888
+ "search": "Tabellen und Spalten durchsuchen",
889
+ "searchPlaceholder": "Tabellen durchsuchen…",
890
+ "noMatches": "Keine Tabellen entsprechen Ihrer Suche.",
891
+ "collapse": "Tabelle einklappen",
892
+ "expand": "Tabelle ausklappen",
893
+ "unsaved": "Ungespeicherte Änderung",
894
+ "excluded": "Ausgeschlossen"
895
+ },
896
+ "badge": {
897
+ "pk": "PK",
898
+ "fk": "FK",
899
+ "unique": "UNIQUE",
900
+ "pii": "PII",
901
+ "masked": "Maskiert"
902
+ },
903
+ "unavailableTitle": "Editor zum Neuzuordnen des Schemas nicht verfügbar",
904
+ "unavailableBody": "Dieser Build enthält den Editor zum Neuzuordnen noch nicht (09-T12). Führen Sie die Generierung erneut aus, sobald er da ist, um Bezeichnungen, Typen und Beziehungen neu zuzuordnen."
905
+ },
906
+ "publicApi": {
907
+ "error": "Something went wrong",
908
+ "scopes": {
909
+ "deleteTitle": "Delete this scope",
910
+ "deleteBody": "Any page using a key bound to this scope stops loading data. Keys are not deleted — revoke them first if that is what you meant.",
911
+ "deletePrompt": "Type the scope name to confirm",
912
+ "deleteConfirm": "Delete scope",
913
+ "issuesTitle": "This scope did not compile",
914
+ "title": "Scopes",
915
+ "subtitle": "A scope is the whole of what a key may reach — the tables, the exact columns, and a filter the caller can narrow but never remove.",
916
+ "emptyTitle": "No scopes yet",
917
+ "emptyBody": "Create one below. It is checked against your live schema before it is saved.",
918
+ "keyCount": "{count, plural, =0 {no keys} one {# key} other {# keys}}",
919
+ "delete": "Delete",
920
+ "nameLabel": "Name",
921
+ "connectionLabel": "Connection ID",
922
+ "documentLabel": "Scope document",
923
+ "documentHint": "Compiled against your schema when you save. Every column a caller can reach is listed here and nowhere else.",
924
+ "create": "Create scope",
925
+ "formLabel": "Create a scope"
926
+ },
927
+ "cancel": "Cancel",
928
+ "close": "Close",
929
+ "title": "Public API",
930
+ "subtitle": "Let your own customer- or staff-facing pages read this database, through a scope you define.",
931
+ "notRegistered": {
932
+ "title": "Not enabled on this server",
933
+ "body": "Set ADMINIUM_PUBLIC_API_ORIGINS to the exact origins allowed to call it, then restart. Until then these routes are not served at all."
934
+ },
935
+ "toggle": {
936
+ "label": "Serve the public API",
937
+ "hint": "Turning this off stops every public request immediately. Nothing is deleted — keys, scopes and data all survive."
938
+ },
939
+ "origins": {
940
+ "label": "Origins allowed to call it"
941
+ },
942
+ "keys": {
943
+ "title": "Keys",
944
+ "subtitle": "These go in your page’s JavaScript, so anyone can read them. That is expected — a key can only ever do what its scope allows.",
945
+ "emptyTitle": "No keys yet",
946
+ "emptyBody": "Create a scope first, then mint a key for it.",
947
+ "reveal": "Show key",
948
+ "rotate": "Rotate",
949
+ "revoke": "Revoke",
950
+ "nameLabel": "Name",
951
+ "scopeLabel": "Scope",
952
+ "scopePlaceholder": "Choose a scope",
953
+ "create": "Create key",
954
+ "formLabel": "Create a key",
955
+ "scopeIsAuthTitle": "The scope is the only permission",
956
+ "scopeIsAuthBody": "A key can reach exactly what its scope lists and nothing else. It does not use roles or table permissions, and it cannot read anything through the rest of the API.",
957
+ "appLabel": "An eine gehostete App-Oberfläche binden (optional)",
958
+ "appHint": "Die Kunden-Oberfläche der App liefert diesen Schlüssel dann selbst aus — eine Rotation braucht keinen Rebuild.",
959
+ "appNone": "Nicht gebunden"
960
+ },
961
+ "status": {
962
+ "heading": "Status"
963
+ }
964
+ },
965
+ "hostedApps": {
966
+ "title": "Gehostete Apps",
967
+ "subtitle": "Die App-Oberflächen, die diese Instanz ausliefert — wo jede erscheint und welche Domains auf sie zeigen.",
968
+ "error": "Etwas ist schiefgelaufen",
969
+ "emptyTitle": "Es werden keine App-Oberflächen ausgeliefert",
970
+ "emptyBody": "Setzen Sie ADMINIUM_SURFACES_DIR auf ein Verzeichnis gebauter Oberflächen — ein Ordner je App und Seite, jeweils mit index.html — und starten Sie neu. Sie werden dann unter /apps/ ausgeliefert und erscheinen hier.",
971
+ "surfaces": {
972
+ "title": "Oberflächen",
973
+ "subtitle": "Eine Mitarbeiter-Oberfläche kann sich in die Seitenleiste dieses Dashboards einfügen oder für sich stehen; eine Kunden-Oberfläche ist öffentlich und liest über ihren gebundenen Schlüssel.",
974
+ "staff": "Mitarbeiter",
975
+ "customer": "Kunden",
976
+ "noNav": "Interne Platzierung nicht verfügbar — bauen Sie diese Oberfläche mit dem aktuellen Toolkit neu, damit sie surface.json ausgibt.",
977
+ "noKey": "Kein Schlüssel gebunden — diese Oberfläche kann keine Daten lesen, bis einer für sie erstellt wird.",
978
+ "mintLink": "Unter „Öffentliche API“ erstellen",
979
+ "boundKey": "Liefert Schlüssel",
980
+ "placementLabel": "Platzierung",
981
+ "placementInternal": "In der Seitenleiste (eingebettet)",
982
+ "placementExternal": "Extern (nur eigene URL)",
983
+ "connectionLabel": "Liest",
984
+ "connectionUnset": "Was gerade bedient"
985
+ },
986
+ "domains": {
987
+ "title": "Domains",
988
+ "subtitle": "Richten Sie das DNS einer Domain auf Ihren Proxy, reichen Sie den Host-Header an Adminium durch und hängen Sie sie hier an — dieser Host liefert dann die Oberfläche statt dieses Dashboards. Zertifikate bleiben auf Ihrem Proxy.",
989
+ "issuesTitle": "Die Domain-Zuordnung wurde abgelehnt",
990
+ "savedTitle": "Gespeichert",
991
+ "savedBody": "Zuordnungen greifen innerhalb weniger Sekunden. Ein Host antwortet erst, wenn sein DNS und Ihr Proxy diese Instanz tatsächlich erreichen.",
992
+ "none": "Keine Domains angehängt.",
993
+ "hostLabel": "Host",
994
+ "surfaceLabel": "Oberfläche",
995
+ "remove": "Entfernen",
996
+ "add": "Domain anhängen",
997
+ "save": "Domains speichern",
998
+ "instanceLabel": "Instanz",
999
+ "instanceOwn": "Die App selbst"
1000
+ },
1001
+ "instances": {
1002
+ "title": "Instanzen",
1003
+ "body": "Dieselbe App über mehrere Datenbanken bereitstellen. Jede Instanz ist unter /apps/<app>/<segment>/<seite>/ erreichbar und liest nur die Verbindung, die Sie ihr geben.",
1004
+ "appLabel": "App",
1005
+ "slugLabel": "URL-Segment",
1006
+ "readsLabel": "Liest",
1007
+ "add": "Instanz hinzufügen",
1008
+ "save": "Instanzen speichern",
1009
+ "remove": "Entfernen",
1010
+ "empty": "Keine weiteren Instanzen.",
1011
+ "failed": "Instanzen wurden nicht gespeichert"
1012
+ }
1013
+ },
1014
+ "addOns": {
1015
+ "plan": {
1016
+ "blocked": "Das kann hier nicht installiert werden",
1017
+ "needsColumns": "Dieses Add-on benötigt Spalten, die Sie nicht haben",
1018
+ "needsColumnsBody": "Adminium fügt Tabellen, die Ihnen bereits gehören, keine Spalten hinzu. Legen Sie sie selbst an, dann installieren Sie.",
1019
+ "willCreate": "Dadurch werden Tabellen in Ihrer Datenbank angelegt",
1020
+ "willCreateBody": "Bei der Installation werden diese Tabellen angelegt. Eine spätere Deinstallation lässt sie und ihre Daten unberührt.",
1021
+ "noData": "Dieses Add-on liest und schreibt keine eigenen Tabellen.",
1022
+ "reuse": "Dieses Add-on verwendet Tabellen, die Sie bereits haben:"
1023
+ },
1024
+ "consent": {
1025
+ "title": "{name} installieren",
1026
+ "subtitle": "Was dieses Add-on tun wird, bevor es das tun kann.",
1027
+ "close": "Schließen",
1028
+ "loading": "Wird ermittelt, was das bewirken würde …",
1029
+ "hosts": "Verbinden mit",
1030
+ "cancel": "Abbrechen",
1031
+ "confirm": "Installieren"
1032
+ },
1033
+ "connect": {
1034
+ "apiKey": "API-Schlüssel",
1035
+ "submit": "Verbinden"
1036
+ },
1037
+ "title": "Add-ons",
1038
+ "subtitle": "Zusätzliche Funktionen für Ihre Apps – Versand, Grafik, Daten. Jedes sagt vor der Installation, was es benötigt.",
1039
+ "error": "Etwas ist schiefgelaufen",
1040
+ "browse": {
1041
+ "title": "Verfügbar",
1042
+ "online": "Enthält Add-ons aus dem Online-Katalog. Die Suche nach neueren Versionen ist eine eigene Aktion.",
1043
+ "offline": "Zeigt die mit dieser Version gelieferten Add-ons. Das Online-Stöbern ist ausgeschaltet, und nichts hier hat das Internet kontaktiert.",
1044
+ "refresh": "Nach Neuerem suchen",
1045
+ "emptyTitle": "Keine Add-ons verfügbar",
1046
+ "emptyBody": "Diese Version enthält keine, und der Online-Katalog ist aus.",
1047
+ "bundled": "Enthalten",
1048
+ "upgrade": "v{version} verfügbar",
1049
+ "download": "Herunterladen",
1050
+ "install": "Installieren",
1051
+ "discard": "Verwerfen",
1052
+ "upgradeAction": "Aktualisieren",
1053
+ "toggle": "Online-Katalog durchsuchen"
1054
+ },
1055
+ "installed": {
1056
+ "title": "Installiert",
1057
+ "emptyTitle": "Noch nichts installiert",
1058
+ "emptyBody": "Installieren Sie oben ein Add-on, dann erscheint es hier mit seinen Hosts und seiner Verbindung.",
1059
+ "connected": "Verbunden",
1060
+ "notConnected": "Nicht verbunden",
1061
+ "egress": "Darf kontaktieren: {hosts}",
1062
+ "on": "an",
1063
+ "off": "aus",
1064
+ "disconnect": "Trennen",
1065
+ "uninstall": "Deinstallieren"
1066
+ },
1067
+ "confirm": {
1068
+ "close": "Schließen",
1069
+ "disconnectTitle": "Dieses Add-on trennen",
1070
+ "uninstallTitle": "Dieses Add-on deinstallieren",
1071
+ "discardTitle": "Diesen Download verwerfen",
1072
+ "disconnectBody": "Seine Schlüssel werden gelöscht und es stellt seine Aufrufe ein. Jede Tabelle und jede Zeile, die es angelegt hat, bleibt unverändert, und Sie können es jederzeit wieder verbinden.",
1073
+ "uninstallBody": "Seine Schlüssel werden gelöscht und seine Dateien von diesem Server entfernt. Jede Tabelle und jede Zeile, die es angelegt hat, bleibt unverändert. Sie können es später erneut installieren.",
1074
+ "discardBody": "Die heruntergeladenen Dateien werden gelöscht. Es wurde nichts installiert, also ändert sich sonst nichts – Sie können es jederzeit erneut herunterladen.",
1075
+ "cancel": "Abbrechen",
1076
+ "disconnect": "Trennen",
1077
+ "uninstall": "Deinstallieren",
1078
+ "discard": "Verwerfen"
1079
+ },
1080
+ "upgradeNote": "Beim Aktualisieren bleiben die Hosts, mit denen ein Add-on verbunden ist, und die bestehende Verbindung erhalten.",
1081
+ "job": {
1082
+ "title": "Wird heruntergeladen",
1083
+ "body": "Wird geladen und geprüft. Installiert wird erst auf Ihr Wort.",
1084
+ "failed": "Der Download wurde nicht abgeschlossen. Es wurde nichts installiert."
1085
+ },
1086
+ "veto": {
1087
+ "title": "Diese Installation kann nicht online suchen",
1088
+ "body": "Die Einstellung ist gespeichert, aber Netzwerkfunktionen sind für diesen Server aus, und das gilt. Geladene Add-ons laufen weiter, und Sie können eins hochladen."
1089
+ },
1090
+ "sideload": {
1091
+ "title": "Paket hochladen",
1092
+ "hint": "Für einen Server ohne Internet. Wird genau wie ein Download geprüft und braucht daher den mitgelieferten Hash.",
1093
+ "file": "Paketdatei (.tgz)",
1094
+ "key": "Add-on-Schlüssel",
1095
+ "version": "Version",
1096
+ "sha": "Integrität (sha512-…)",
1097
+ "shaHint": "Der von `npm pack --json` ausgegebene `integrity`-Wert. Passen die Bytes nicht, wird abgelehnt.",
1098
+ "submit": "Hochladen"
1099
+ }
1100
+ },
1101
+ "pages": {
1102
+ "title": "Seiten",
1103
+ "subtitle": "Seiten Ihrer App hinzufügen, bearbeiten und ordnen – samt ihrer Reihenfolge in der Seitenleiste.",
1104
+ "createButton": "Neue Seite",
1105
+ "loadFailed": {
1106
+ "title": "Seiten konnten nicht geladen werden",
1107
+ "body": "Für die Seitenverwaltung wird die Berechtigung „Seiten verwalten“ benötigt. Bitten Sie eine Administratorin oder einen Administrator, sie einer Ihrer Rollen zuzuweisen."
1108
+ },
1109
+ "tab": {
1110
+ "pages": "Alle Seiten",
1111
+ "sidebar": "Reihenfolge der Seitenleiste"
1112
+ },
1113
+ "list": {
1114
+ "title": "Seiten",
1115
+ "count": "{count, plural, one {# Seite} other {# Seiten}}"
1116
+ },
1117
+ "empty": {
1118
+ "title": "Noch keine Seiten",
1119
+ "body": "Verbinden Sie eine Datenbank, um Seiten automatisch zu erzeugen, oder legen Sie eine von Hand an."
1120
+ },
1121
+ "status": {
1122
+ "live": "Aktiv",
1123
+ "hidden": "Ausgeblendet"
1124
+ },
1125
+ "origin": {
1126
+ "generated": "Erzeugt",
1127
+ "manifest": "Add-on",
1128
+ "llm": "Assistent",
1129
+ "system": "System",
1130
+ "user": "Eigene"
1131
+ },
1132
+ "row": {
1133
+ "menu": "Aktionen für {title}"
1134
+ },
1135
+ "action": {
1136
+ "edit": "Seite bearbeiten",
1137
+ "duplicate": "Duplizieren",
1138
+ "hide": "In der Seitenleiste ausblenden",
1139
+ "show": "In der Seitenleiste anzeigen",
1140
+ "delete": "Seite löschen"
1141
+ },
1142
+ "create": {
1143
+ "title": "Neue Seite",
1144
+ "failed": "Die Seite konnte nicht erstellt werden",
1145
+ "submit": "Seite erstellen",
1146
+ "subtitle": "Legen Sie fest, was diese Seite zeigt und wie sie aussieht. Die Vorschau folgt Ihrer Auswahl."
1147
+ },
1148
+ "duplicate": {
1149
+ "title": "Seite duplizieren",
1150
+ "failed": "Die Seite konnte nicht dupliziert werden",
1151
+ "submit": "Duplizieren"
1152
+ },
1153
+ "delete": {
1154
+ "title": "Diese Seite löschen?",
1155
+ "body": "Das lässt sich nicht rückgängig machen. Gespeicherte Ansichten und persönliche Layouts dieser Seite werden für alle gelöscht.",
1156
+ "bodyGenerated": "Diese Seite stammt aus der Schema-Generierung und kehrt beim nächsten Generierungslauf zurück. Gespeicherte Ansichten und persönliche Layouts werden für alle gelöscht.",
1157
+ "prompt": "Geben Sie zur Bestätigung {slug} ein",
1158
+ "confirm": "Seite löschen"
1159
+ },
1160
+ "field": {
1161
+ "title": "Titel",
1162
+ "titleHint": "Wird in der Seitenleiste und in der Kopfzeile der Seite angezeigt.",
1163
+ "slug": "Seitenadresse",
1164
+ "slugHint": "Kleinbuchstaben, Ziffern und Bindestriche. Nur der letzte Teil – den Rest der Adresse ergänzen wir.",
1165
+ "slugTaken": "Diese Adresse wird bereits von einer anderen Seite verwendet.",
1166
+ "slugWarning": "Eine geänderte Adresse macht bestehende Links und Lesezeichen zu dieser Seite ungültig.",
1167
+ "template": "Vorlage",
1168
+ "templateHint": "Bestimmt, was die Seite enthalten kann. Später änderbar.",
1169
+ "group": "Gruppe der Seitenleiste",
1170
+ "groupHint": "In welchem Abschnitt der Seitenleiste sie erscheint.",
1171
+ "icon": "Symbol",
1172
+ "iconHint": "Wird neben dem Seitennamen in der Seitenleiste angezeigt.",
1173
+ "visible": "In der Seitenleiste anzeigen",
1174
+ "visibleHint": "Eine ausgeblendete Seite bleibt über ihre URL erreichbar, wenn man den Link kennt.",
1175
+ "table": "Tabelle",
1176
+ "tableCreateHint": "Die Tabelle, aus der diese Seite liest. Wählen Sie jetzt eine, dann ist die Seite sofort nutzbar; ohne Auswahl können Sie sie später verknüpfen.",
1177
+ "tableNone": "Nicht verknüpft",
1178
+ "tableNeedsConnection": "Wählen Sie zuerst eine Datenquelle.",
1179
+ "connection": "Datenquelle",
1180
+ "connectionNone": "Keine",
1181
+ "iconPick": "Seitensymbol auswählen",
1182
+ "padding": "Seitenabstand",
1183
+ "width": "Inhaltsbreite",
1184
+ "widthHint": "Wie breit die Inhaltsspalte der Seite auf einem großen Bildschirm werden darf."
1185
+ },
1186
+ "editor": {
1187
+ "title": "Seite bearbeiten",
1188
+ "save": "Änderungen speichern",
1189
+ "saveFailed": "Änderungen konnten nicht gespeichert werden",
1190
+ "openPage": "Seite öffnen",
1191
+ "generated": {
1192
+ "title": "Diese Seite wurde aus Ihrem Schema erzeugt",
1193
+ "body": "Ihre Änderungen bleiben bei einer erneuten Generierung erhalten – die Seite wird als bearbeitet markiert und unangetastet gelassen. Ein Löschen hält allerdings nur, bis der nächste Generierungslauf sie neu anlegt."
1194
+ },
1195
+ "contentUnavailable": "Seiteninhalt konnte nicht geladen werden",
1196
+ "contentUnavailableBody": "Die Angaben oben lassen sich trotzdem speichern.",
1197
+ "contentInvalid": "Die Konfiguration dieser Seite ist nicht lesbar",
1198
+ "contentInvalidBody": "Sie stammt aus einer neueren Version oder ist fehlerhaft. Erzeugen Sie die Seite neu oder löschen Sie sie.",
1199
+ "data": "Daten",
1200
+ "schemaFailed": "Tabellen konnten nicht aufgelistet werden",
1201
+ "schemaFailedBody": "Diese Verbindung wurde möglicherweise noch nicht analysiert. Starten Sie die Introspektion unter Studio → Datenverbindungen.",
1202
+ "notBindable": "Diese Vorlage ist nicht an eine einzelne Tabelle gebunden",
1203
+ "notBindableBody": "Ihr Inhalt wird stattdessen Widget für Widget aufgebaut. Öffnen Sie die Seite und fügen Sie sie über „Bearbeiten“ hinzu.",
1204
+ "recompose": "Diese Seite wird neu aufgebaut",
1205
+ "recomposeBody": "Beim Speichern wird der Inhalt durch ein frisches Layout für Vorlage und Tabelle oben ersetzt. Spaltenanpassungen und Widget-Änderungen dieser Seite gehen verloren.",
1206
+ "missing": "Diese Seite existiert nicht mehr",
1207
+ "missingBody": "Sie wurde möglicherweise gelöscht oder von einem Generierungslauf entfernt.",
1208
+ "details": "Details",
1209
+ "itemsPending": "Speichern Sie zuerst die Änderung oben – der Seiteninhalt wird aus der neuen Vorlage und Tabelle neu aufgebaut.",
1210
+ "columns": "Spalten",
1211
+ "appearance": "Darstellung"
1212
+ },
1213
+ "sidebar": {
1214
+ "help": "Seiten innerhalb einer Gruppe umsortieren oder in eine andere Gruppe verschieben. Die Änderungen gelten für alle Benutzerinnen und Benutzer.",
1215
+ "discard": "Verwerfen",
1216
+ "save": "Reihenfolge speichern",
1217
+ "saveFailed": "Die neue Reihenfolge konnte nicht gespeichert werden",
1218
+ "emptyGroup": "Keine Seiten in dieser Gruppe.",
1219
+ "moveUp": "{title} nach oben verschieben",
1220
+ "moveDown": "{title} nach unten verschieben",
1221
+ "moveTo": "{title} in eine Gruppe verschieben",
1222
+ "ungrouped": {
1223
+ "title": "Einige Seiten gehören zu keiner Gruppe der Seitenleiste",
1224
+ "body": "Diese Seiten funktionieren unter ihrer URL, erscheinen aber nirgends in der Seitenleiste. Öffnen Sie jede einzeln und wählen Sie eine Gruppe."
1225
+ }
1226
+ },
1227
+ "columns": {
1228
+ "help": "Spalten per Ziehen umsortieren, ihre Überschriften umbenennen und auswählen, welche in der Tabelle erscheinen.",
1229
+ "empty": "Noch keine Spalten — fügen Sie unten welche hinzu.",
1230
+ "pk": "Schlüssel",
1231
+ "pii": "PII",
1232
+ "header": "Überschrift für {name}",
1233
+ "shown": "Sichtbar",
1234
+ "toggle": "{name} in der Tabelle anzeigen",
1235
+ "dragHandle": "{name} verschieben",
1236
+ "remove": "{name} entfernen",
1237
+ "addOpen": "Spalte hinzufügen",
1238
+ "addTitle": "Spalte hinzufügen",
1239
+ "addSearch": "Spalten durchsuchen…",
1240
+ "addFromTable": "Aus {table}",
1241
+ "addFromLinked": "Aus verknüpften Tabellen",
1242
+ "addLinkedHelp": "Zeigt einen Wert aus der Tabelle, auf die eine Verknüpfungsspalte verweist.",
1243
+ "addVia": "über {column}",
1244
+ "addNoMatches": "Keine Spalten passen zu „{query}“.",
1245
+ "followColumn": "{name} folgen",
1246
+ "addLinkedFrom": "Tabellen, die hierher verweisen",
1247
+ "addLinkedFromHelp": "Fügt die Anzahl der Zeilen hinzu, die auf jeden Datensatz verweisen.",
1248
+ "countBadge": "Anzahl",
1249
+ "lookupBadge": "Verknüpft",
1250
+ "lookupBack": "Zurück",
1251
+ "lookupBrowse": "Wählen Sie, was aus {table} angezeigt wird",
1252
+ "lookupBroken": "Diese Verknüpfung lässt sich nicht mehr auflösen",
1253
+ "lookupBrokenBody": "Das Schema hat sich währenddessen geändert. Beginnen Sie die Verknüpfung erneut.",
1254
+ "schemaUnavailable": "Die Datenbankspalten konnten nicht geladen werden, daher lassen sich hier keine Spalten hinzufügen.",
1255
+ "none": {
1256
+ "title": "Diese Seite hat noch keine Spalten",
1257
+ "body": "Spalten werden bei der Generierung aus der Tabelle gelesen. Binden Sie diese Seite an eine Tabelle und generieren Sie neu, um sie zu füllen."
1258
+ }
1259
+ },
1260
+ "icon": {
1261
+ "none": "Symbol auswählen",
1262
+ "search": "Symbole suchen",
1263
+ "noMatches": "Keine Symbole passen zu dieser Suche."
1264
+ },
1265
+ "preview": {
1266
+ "untitled": "Unbenannte Seite",
1267
+ "note": "Eine Darstellung des Layouts, nicht Ihrer Daten. Die echte Seite füllt sich nach dem Speichern."
1268
+ },
1269
+ "padding": {
1270
+ "default": "Standard dieser Vorlage",
1271
+ "none": "Kein Abstand",
1272
+ "standard": "Standard (28 × 24)",
1273
+ "custom": "Benutzerdefiniert …",
1274
+ "x": "Seiten (px)",
1275
+ "y": "Oben und unten (px)"
1276
+ },
1277
+ "width": {
1278
+ "default": "Standard für diese Vorlage",
1279
+ "narrow": "Schmal (720 px)",
1280
+ "content": "Inhalt (900 px)",
1281
+ "page": "Seite (1080 px)",
1282
+ "dash": "Dashboard (1320 px)",
1283
+ "wide": "Breit (1800 px)",
1284
+ "full": "Volle Breite (kein Limit)"
1285
+ }
7
1286
  }
8
1287
  }