@adminiumjs/i18n 0.2.5 → 0.2.6

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 (430) 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 +545 -18
  4. package/dist/a11y-keys.js.map +1 -1
  5. package/dist/format/index.d.ts +15 -3
  6. package/dist/format/index.d.ts.map +1 -1
  7. package/dist/format/index.js +15 -4
  8. package/dist/format/index.js.map +1 -1
  9. package/dist/resources/ar-eg/automations.d.ts +417 -0
  10. package/dist/resources/ar-eg/automations.d.ts.map +1 -0
  11. package/dist/resources/ar-eg/automations.js +417 -0
  12. package/dist/resources/ar-eg/automations.js.map +1 -0
  13. package/dist/resources/ar-eg/common.d.ts +23 -91
  14. package/dist/resources/ar-eg/common.d.ts.map +1 -1
  15. package/dist/resources/ar-eg/common.js +25 -93
  16. package/dist/resources/ar-eg/common.js.map +1 -1
  17. package/dist/resources/ar-eg/dataio.d.ts +260 -0
  18. package/dist/resources/ar-eg/dataio.d.ts.map +1 -0
  19. package/dist/resources/ar-eg/dataio.js +260 -0
  20. package/dist/resources/ar-eg/dataio.js.map +1 -0
  21. package/dist/resources/ar-eg/email.d.ts +824 -0
  22. package/dist/resources/ar-eg/email.d.ts.map +1 -0
  23. package/dist/resources/ar-eg/email.js +824 -0
  24. package/dist/resources/ar-eg/email.js.map +1 -0
  25. package/dist/resources/ar-eg/files.d.ts +112 -0
  26. package/dist/resources/ar-eg/files.d.ts.map +1 -0
  27. package/dist/resources/ar-eg/files.js +112 -0
  28. package/dist/resources/ar-eg/files.js.map +1 -0
  29. package/dist/resources/ar-eg/invoices.d.ts +717 -0
  30. package/dist/resources/ar-eg/invoices.d.ts.map +1 -0
  31. package/dist/resources/ar-eg/invoices.js +717 -0
  32. package/dist/resources/ar-eg/invoices.js.map +1 -0
  33. package/dist/resources/ar-eg/onboarding.d.ts +190 -0
  34. package/dist/resources/ar-eg/onboarding.d.ts.map +1 -0
  35. package/dist/resources/ar-eg/onboarding.js +190 -0
  36. package/dist/resources/ar-eg/onboarding.js.map +1 -0
  37. package/dist/resources/ar-eg/reportBuilder.d.ts +415 -0
  38. package/dist/resources/ar-eg/reportBuilder.d.ts.map +1 -0
  39. package/dist/resources/ar-eg/reportBuilder.js +415 -0
  40. package/dist/resources/ar-eg/reportBuilder.js.map +1 -0
  41. package/dist/resources/ar-eg/studio.d.ts +1760 -1117
  42. package/dist/resources/ar-eg/studio.d.ts.map +1 -1
  43. package/dist/resources/ar-eg/studio.js +1782 -1139
  44. package/dist/resources/ar-eg/studio.js.map +1 -1
  45. package/dist/resources/ar-eg/ui.d.ts +45 -9
  46. package/dist/resources/ar-eg/ui.d.ts.map +1 -1
  47. package/dist/resources/ar-eg/ui.js +47 -11
  48. package/dist/resources/ar-eg/ui.js.map +1 -1
  49. package/dist/resources/cs-cz/automations.d.ts +417 -0
  50. package/dist/resources/cs-cz/automations.d.ts.map +1 -0
  51. package/dist/resources/cs-cz/automations.js +417 -0
  52. package/dist/resources/cs-cz/automations.js.map +1 -0
  53. package/dist/resources/cs-cz/common.d.ts +23 -91
  54. package/dist/resources/cs-cz/common.d.ts.map +1 -1
  55. package/dist/resources/cs-cz/common.js +25 -93
  56. package/dist/resources/cs-cz/common.js.map +1 -1
  57. package/dist/resources/cs-cz/dataio.d.ts +260 -0
  58. package/dist/resources/cs-cz/dataio.d.ts.map +1 -0
  59. package/dist/resources/cs-cz/dataio.js +260 -0
  60. package/dist/resources/cs-cz/dataio.js.map +1 -0
  61. package/dist/resources/cs-cz/email.d.ts +824 -0
  62. package/dist/resources/cs-cz/email.d.ts.map +1 -0
  63. package/dist/resources/cs-cz/email.js +824 -0
  64. package/dist/resources/cs-cz/email.js.map +1 -0
  65. package/dist/resources/cs-cz/files.d.ts +112 -0
  66. package/dist/resources/cs-cz/files.d.ts.map +1 -0
  67. package/dist/resources/cs-cz/files.js +112 -0
  68. package/dist/resources/cs-cz/files.js.map +1 -0
  69. package/dist/resources/cs-cz/invoices.d.ts +717 -0
  70. package/dist/resources/cs-cz/invoices.d.ts.map +1 -0
  71. package/dist/resources/cs-cz/invoices.js +717 -0
  72. package/dist/resources/cs-cz/invoices.js.map +1 -0
  73. package/dist/resources/cs-cz/onboarding.d.ts +190 -0
  74. package/dist/resources/cs-cz/onboarding.d.ts.map +1 -0
  75. package/dist/resources/cs-cz/onboarding.js +190 -0
  76. package/dist/resources/cs-cz/onboarding.js.map +1 -0
  77. package/dist/resources/cs-cz/reportBuilder.d.ts +415 -0
  78. package/dist/resources/cs-cz/reportBuilder.d.ts.map +1 -0
  79. package/dist/resources/cs-cz/reportBuilder.js +415 -0
  80. package/dist/resources/cs-cz/reportBuilder.js.map +1 -0
  81. package/dist/resources/cs-cz/studio.d.ts +1759 -1116
  82. package/dist/resources/cs-cz/studio.d.ts.map +1 -1
  83. package/dist/resources/cs-cz/studio.js +1774 -1131
  84. package/dist/resources/cs-cz/studio.js.map +1 -1
  85. package/dist/resources/cs-cz/ui.d.ts +45 -9
  86. package/dist/resources/cs-cz/ui.d.ts.map +1 -1
  87. package/dist/resources/cs-cz/ui.js +47 -11
  88. package/dist/resources/cs-cz/ui.js.map +1 -1
  89. package/dist/resources/da-dk/automations.d.ts +417 -0
  90. package/dist/resources/da-dk/automations.d.ts.map +1 -0
  91. package/dist/resources/da-dk/automations.js +417 -0
  92. package/dist/resources/da-dk/automations.js.map +1 -0
  93. package/dist/resources/da-dk/common.d.ts +23 -91
  94. package/dist/resources/da-dk/common.d.ts.map +1 -1
  95. package/dist/resources/da-dk/common.js +25 -93
  96. package/dist/resources/da-dk/common.js.map +1 -1
  97. package/dist/resources/da-dk/dataio.d.ts +260 -0
  98. package/dist/resources/da-dk/dataio.d.ts.map +1 -0
  99. package/dist/resources/da-dk/dataio.js +260 -0
  100. package/dist/resources/da-dk/dataio.js.map +1 -0
  101. package/dist/resources/da-dk/email.d.ts +824 -0
  102. package/dist/resources/da-dk/email.d.ts.map +1 -0
  103. package/dist/resources/da-dk/email.js +824 -0
  104. package/dist/resources/da-dk/email.js.map +1 -0
  105. package/dist/resources/da-dk/files.d.ts +112 -0
  106. package/dist/resources/da-dk/files.d.ts.map +1 -0
  107. package/dist/resources/da-dk/files.js +112 -0
  108. package/dist/resources/da-dk/files.js.map +1 -0
  109. package/dist/resources/da-dk/invoices.d.ts +717 -0
  110. package/dist/resources/da-dk/invoices.d.ts.map +1 -0
  111. package/dist/resources/da-dk/invoices.js +717 -0
  112. package/dist/resources/da-dk/invoices.js.map +1 -0
  113. package/dist/resources/da-dk/onboarding.d.ts +190 -0
  114. package/dist/resources/da-dk/onboarding.d.ts.map +1 -0
  115. package/dist/resources/da-dk/onboarding.js +190 -0
  116. package/dist/resources/da-dk/onboarding.js.map +1 -0
  117. package/dist/resources/da-dk/reportBuilder.d.ts +415 -0
  118. package/dist/resources/da-dk/reportBuilder.d.ts.map +1 -0
  119. package/dist/resources/da-dk/reportBuilder.js +415 -0
  120. package/dist/resources/da-dk/reportBuilder.js.map +1 -0
  121. package/dist/resources/da-dk/studio.d.ts +1760 -1117
  122. package/dist/resources/da-dk/studio.d.ts.map +1 -1
  123. package/dist/resources/da-dk/studio.js +1771 -1128
  124. package/dist/resources/da-dk/studio.js.map +1 -1
  125. package/dist/resources/da-dk/ui.d.ts +45 -9
  126. package/dist/resources/da-dk/ui.d.ts.map +1 -1
  127. package/dist/resources/da-dk/ui.js +47 -11
  128. package/dist/resources/da-dk/ui.js.map +1 -1
  129. package/dist/resources/de-de/automations.d.ts +417 -0
  130. package/dist/resources/de-de/automations.d.ts.map +1 -0
  131. package/dist/resources/de-de/automations.js +417 -0
  132. package/dist/resources/de-de/automations.js.map +1 -0
  133. package/dist/resources/de-de/common.d.ts +23 -91
  134. package/dist/resources/de-de/common.d.ts.map +1 -1
  135. package/dist/resources/de-de/common.js +25 -93
  136. package/dist/resources/de-de/common.js.map +1 -1
  137. package/dist/resources/de-de/dataio.d.ts +260 -0
  138. package/dist/resources/de-de/dataio.d.ts.map +1 -0
  139. package/dist/resources/de-de/dataio.js +260 -0
  140. package/dist/resources/de-de/dataio.js.map +1 -0
  141. package/dist/resources/de-de/email.d.ts +824 -0
  142. package/dist/resources/de-de/email.d.ts.map +1 -0
  143. package/dist/resources/de-de/email.js +824 -0
  144. package/dist/resources/de-de/email.js.map +1 -0
  145. package/dist/resources/de-de/files.d.ts +112 -0
  146. package/dist/resources/de-de/files.d.ts.map +1 -0
  147. package/dist/resources/de-de/files.js +112 -0
  148. package/dist/resources/de-de/files.js.map +1 -0
  149. package/dist/resources/de-de/invoices.d.ts +717 -0
  150. package/dist/resources/de-de/invoices.d.ts.map +1 -0
  151. package/dist/resources/de-de/invoices.js +717 -0
  152. package/dist/resources/de-de/invoices.js.map +1 -0
  153. package/dist/resources/de-de/onboarding.d.ts +190 -0
  154. package/dist/resources/de-de/onboarding.d.ts.map +1 -0
  155. package/dist/resources/de-de/onboarding.js +190 -0
  156. package/dist/resources/de-de/onboarding.js.map +1 -0
  157. package/dist/resources/de-de/reportBuilder.d.ts +415 -0
  158. package/dist/resources/de-de/reportBuilder.d.ts.map +1 -0
  159. package/dist/resources/de-de/reportBuilder.js +415 -0
  160. package/dist/resources/de-de/reportBuilder.js.map +1 -0
  161. package/dist/resources/de-de/studio.d.ts +1759 -1116
  162. package/dist/resources/de-de/studio.d.ts.map +1 -1
  163. package/dist/resources/de-de/studio.js +1770 -1127
  164. package/dist/resources/de-de/studio.js.map +1 -1
  165. package/dist/resources/de-de/ui.d.ts +45 -9
  166. package/dist/resources/de-de/ui.d.ts.map +1 -1
  167. package/dist/resources/de-de/ui.js +47 -11
  168. package/dist/resources/de-de/ui.js.map +1 -1
  169. package/dist/resources/en-us/automations.d.ts +417 -0
  170. package/dist/resources/en-us/automations.d.ts.map +1 -0
  171. package/dist/resources/en-us/automations.js +417 -0
  172. package/dist/resources/en-us/automations.js.map +1 -0
  173. package/dist/resources/en-us/common.d.ts +23 -91
  174. package/dist/resources/en-us/common.d.ts.map +1 -1
  175. package/dist/resources/en-us/common.js +25 -93
  176. package/dist/resources/en-us/common.js.map +1 -1
  177. package/dist/resources/en-us/dataio.d.ts +260 -0
  178. package/dist/resources/en-us/dataio.d.ts.map +1 -0
  179. package/dist/resources/en-us/dataio.js +260 -0
  180. package/dist/resources/en-us/dataio.js.map +1 -0
  181. package/dist/resources/en-us/email.d.ts +824 -0
  182. package/dist/resources/en-us/email.d.ts.map +1 -0
  183. package/dist/resources/en-us/email.js +824 -0
  184. package/dist/resources/en-us/email.js.map +1 -0
  185. package/dist/resources/en-us/files.d.ts +112 -0
  186. package/dist/resources/en-us/files.d.ts.map +1 -0
  187. package/dist/resources/en-us/files.js +112 -0
  188. package/dist/resources/en-us/files.js.map +1 -0
  189. package/dist/resources/en-us/invoices.d.ts +717 -0
  190. package/dist/resources/en-us/invoices.d.ts.map +1 -0
  191. package/dist/resources/en-us/invoices.js +717 -0
  192. package/dist/resources/en-us/invoices.js.map +1 -0
  193. package/dist/resources/en-us/onboarding.d.ts +190 -0
  194. package/dist/resources/en-us/onboarding.d.ts.map +1 -0
  195. package/dist/resources/en-us/onboarding.js +190 -0
  196. package/dist/resources/en-us/onboarding.js.map +1 -0
  197. package/dist/resources/en-us/reportBuilder.d.ts +415 -0
  198. package/dist/resources/en-us/reportBuilder.d.ts.map +1 -0
  199. package/dist/resources/en-us/reportBuilder.js +415 -0
  200. package/dist/resources/en-us/reportBuilder.js.map +1 -0
  201. package/dist/resources/en-us/studio.d.ts +1742 -1099
  202. package/dist/resources/en-us/studio.d.ts.map +1 -1
  203. package/dist/resources/en-us/studio.js +1769 -1126
  204. package/dist/resources/en-us/studio.js.map +1 -1
  205. package/dist/resources/en-us/ui.d.ts +37 -1
  206. package/dist/resources/en-us/ui.d.ts.map +1 -1
  207. package/dist/resources/en-us/ui.js +39 -3
  208. package/dist/resources/en-us/ui.js.map +1 -1
  209. package/dist/resources/fr-fr/automations.d.ts +417 -0
  210. package/dist/resources/fr-fr/automations.d.ts.map +1 -0
  211. package/dist/resources/fr-fr/automations.js +417 -0
  212. package/dist/resources/fr-fr/automations.js.map +1 -0
  213. package/dist/resources/fr-fr/common.d.ts +23 -91
  214. package/dist/resources/fr-fr/common.d.ts.map +1 -1
  215. package/dist/resources/fr-fr/common.js +25 -93
  216. package/dist/resources/fr-fr/common.js.map +1 -1
  217. package/dist/resources/fr-fr/dataio.d.ts +260 -0
  218. package/dist/resources/fr-fr/dataio.d.ts.map +1 -0
  219. package/dist/resources/fr-fr/dataio.js +260 -0
  220. package/dist/resources/fr-fr/dataio.js.map +1 -0
  221. package/dist/resources/fr-fr/email.d.ts +824 -0
  222. package/dist/resources/fr-fr/email.d.ts.map +1 -0
  223. package/dist/resources/fr-fr/email.js +824 -0
  224. package/dist/resources/fr-fr/email.js.map +1 -0
  225. package/dist/resources/fr-fr/files.d.ts +112 -0
  226. package/dist/resources/fr-fr/files.d.ts.map +1 -0
  227. package/dist/resources/fr-fr/files.js +112 -0
  228. package/dist/resources/fr-fr/files.js.map +1 -0
  229. package/dist/resources/fr-fr/invoices.d.ts +717 -0
  230. package/dist/resources/fr-fr/invoices.d.ts.map +1 -0
  231. package/dist/resources/fr-fr/invoices.js +717 -0
  232. package/dist/resources/fr-fr/invoices.js.map +1 -0
  233. package/dist/resources/fr-fr/onboarding.d.ts +190 -0
  234. package/dist/resources/fr-fr/onboarding.d.ts.map +1 -0
  235. package/dist/resources/fr-fr/onboarding.js +190 -0
  236. package/dist/resources/fr-fr/onboarding.js.map +1 -0
  237. package/dist/resources/fr-fr/reportBuilder.d.ts +415 -0
  238. package/dist/resources/fr-fr/reportBuilder.d.ts.map +1 -0
  239. package/dist/resources/fr-fr/reportBuilder.js +415 -0
  240. package/dist/resources/fr-fr/reportBuilder.js.map +1 -0
  241. package/dist/resources/fr-fr/studio.d.ts +1759 -1116
  242. package/dist/resources/fr-fr/studio.d.ts.map +1 -1
  243. package/dist/resources/fr-fr/studio.js +1774 -1131
  244. package/dist/resources/fr-fr/studio.js.map +1 -1
  245. package/dist/resources/fr-fr/ui.d.ts +44 -8
  246. package/dist/resources/fr-fr/ui.d.ts.map +1 -1
  247. package/dist/resources/fr-fr/ui.js +46 -10
  248. package/dist/resources/fr-fr/ui.js.map +1 -1
  249. package/dist/resources/index.d.ts.map +1 -1
  250. package/dist/resources/index.js +14 -0
  251. package/dist/resources/index.js.map +1 -1
  252. package/dist/resources/lazy.d.ts.map +1 -1
  253. package/dist/resources/lazy.js +57 -1
  254. package/dist/resources/lazy.js.map +1 -1
  255. package/dist/resources/namespaces.d.ts +62 -3
  256. package/dist/resources/namespaces.d.ts.map +1 -1
  257. package/dist/resources/namespaces.js +84 -3
  258. package/dist/resources/namespaces.js.map +1 -1
  259. package/dist/resources/zh-cn/automations.d.ts +417 -0
  260. package/dist/resources/zh-cn/automations.d.ts.map +1 -0
  261. package/dist/resources/zh-cn/automations.js +417 -0
  262. package/dist/resources/zh-cn/automations.js.map +1 -0
  263. package/dist/resources/zh-cn/common.d.ts +23 -91
  264. package/dist/resources/zh-cn/common.d.ts.map +1 -1
  265. package/dist/resources/zh-cn/common.js +25 -93
  266. package/dist/resources/zh-cn/common.js.map +1 -1
  267. package/dist/resources/zh-cn/dataio.d.ts +260 -0
  268. package/dist/resources/zh-cn/dataio.d.ts.map +1 -0
  269. package/dist/resources/zh-cn/dataio.js +260 -0
  270. package/dist/resources/zh-cn/dataio.js.map +1 -0
  271. package/dist/resources/zh-cn/email.d.ts +824 -0
  272. package/dist/resources/zh-cn/email.d.ts.map +1 -0
  273. package/dist/resources/zh-cn/email.js +824 -0
  274. package/dist/resources/zh-cn/email.js.map +1 -0
  275. package/dist/resources/zh-cn/files.d.ts +112 -0
  276. package/dist/resources/zh-cn/files.d.ts.map +1 -0
  277. package/dist/resources/zh-cn/files.js +112 -0
  278. package/dist/resources/zh-cn/files.js.map +1 -0
  279. package/dist/resources/zh-cn/invoices.d.ts +717 -0
  280. package/dist/resources/zh-cn/invoices.d.ts.map +1 -0
  281. package/dist/resources/zh-cn/invoices.js +717 -0
  282. package/dist/resources/zh-cn/invoices.js.map +1 -0
  283. package/dist/resources/zh-cn/onboarding.d.ts +190 -0
  284. package/dist/resources/zh-cn/onboarding.d.ts.map +1 -0
  285. package/dist/resources/zh-cn/onboarding.js +190 -0
  286. package/dist/resources/zh-cn/onboarding.js.map +1 -0
  287. package/dist/resources/zh-cn/reportBuilder.d.ts +415 -0
  288. package/dist/resources/zh-cn/reportBuilder.d.ts.map +1 -0
  289. package/dist/resources/zh-cn/reportBuilder.js +415 -0
  290. package/dist/resources/zh-cn/reportBuilder.js.map +1 -0
  291. package/dist/resources/zh-cn/studio.d.ts +1758 -1115
  292. package/dist/resources/zh-cn/studio.d.ts.map +1 -1
  293. package/dist/resources/zh-cn/studio.js +1764 -1121
  294. package/dist/resources/zh-cn/studio.js.map +1 -1
  295. package/dist/resources/zh-cn/ui.d.ts +45 -9
  296. package/dist/resources/zh-cn/ui.d.ts.map +1 -1
  297. package/dist/resources/zh-cn/ui.js +47 -11
  298. package/dist/resources/zh-cn/ui.js.map +1 -1
  299. package/dist/resources/zh-tw/automations.d.ts +417 -0
  300. package/dist/resources/zh-tw/automations.d.ts.map +1 -0
  301. package/dist/resources/zh-tw/automations.js +417 -0
  302. package/dist/resources/zh-tw/automations.js.map +1 -0
  303. package/dist/resources/zh-tw/common.d.ts +23 -91
  304. package/dist/resources/zh-tw/common.d.ts.map +1 -1
  305. package/dist/resources/zh-tw/common.js +25 -93
  306. package/dist/resources/zh-tw/common.js.map +1 -1
  307. package/dist/resources/zh-tw/dataio.d.ts +260 -0
  308. package/dist/resources/zh-tw/dataio.d.ts.map +1 -0
  309. package/dist/resources/zh-tw/dataio.js +260 -0
  310. package/dist/resources/zh-tw/dataio.js.map +1 -0
  311. package/dist/resources/zh-tw/email.d.ts +824 -0
  312. package/dist/resources/zh-tw/email.d.ts.map +1 -0
  313. package/dist/resources/zh-tw/email.js +824 -0
  314. package/dist/resources/zh-tw/email.js.map +1 -0
  315. package/dist/resources/zh-tw/files.d.ts +112 -0
  316. package/dist/resources/zh-tw/files.d.ts.map +1 -0
  317. package/dist/resources/zh-tw/files.js +112 -0
  318. package/dist/resources/zh-tw/files.js.map +1 -0
  319. package/dist/resources/zh-tw/invoices.d.ts +717 -0
  320. package/dist/resources/zh-tw/invoices.d.ts.map +1 -0
  321. package/dist/resources/zh-tw/invoices.js +717 -0
  322. package/dist/resources/zh-tw/invoices.js.map +1 -0
  323. package/dist/resources/zh-tw/onboarding.d.ts +190 -0
  324. package/dist/resources/zh-tw/onboarding.d.ts.map +1 -0
  325. package/dist/resources/zh-tw/onboarding.js +190 -0
  326. package/dist/resources/zh-tw/onboarding.js.map +1 -0
  327. package/dist/resources/zh-tw/reportBuilder.d.ts +415 -0
  328. package/dist/resources/zh-tw/reportBuilder.d.ts.map +1 -0
  329. package/dist/resources/zh-tw/reportBuilder.js +415 -0
  330. package/dist/resources/zh-tw/reportBuilder.js.map +1 -0
  331. package/dist/resources/zh-tw/studio.d.ts +1759 -1116
  332. package/dist/resources/zh-tw/studio.d.ts.map +1 -1
  333. package/dist/resources/zh-tw/studio.js +1773 -1130
  334. package/dist/resources/zh-tw/studio.js.map +1 -1
  335. package/dist/resources/zh-tw/ui.d.ts +45 -9
  336. package/dist/resources/zh-tw/ui.d.ts.map +1 -1
  337. package/dist/resources/zh-tw/ui.js +47 -11
  338. package/dist/resources/zh-tw/ui.js.map +1 -1
  339. package/dist/review-status.js +7 -7
  340. package/dist/server.d.ts.map +1 -1
  341. package/dist/server.js +14 -1
  342. package/dist/server.js.map +1 -1
  343. package/locales/ar-EG/.meta.json +15999 -5979
  344. package/locales/ar-EG/automations.json +406 -0
  345. package/locales/ar-EG/common.json +25 -93
  346. package/locales/ar-EG/dataio.json +249 -0
  347. package/locales/ar-EG/email.json +813 -0
  348. package/locales/ar-EG/files.json +101 -0
  349. package/locales/ar-EG/invoices.json +706 -0
  350. package/locales/ar-EG/onboarding.json +179 -0
  351. package/locales/ar-EG/reportBuilder.json +404 -0
  352. package/locales/ar-EG/studio.json +1782 -1139
  353. package/locales/ar-EG/ui.json +47 -11
  354. package/locales/cs-CZ/.meta.json +16271 -6251
  355. package/locales/cs-CZ/automations.json +406 -0
  356. package/locales/cs-CZ/common.json +25 -93
  357. package/locales/cs-CZ/dataio.json +249 -0
  358. package/locales/cs-CZ/email.json +813 -0
  359. package/locales/cs-CZ/files.json +101 -0
  360. package/locales/cs-CZ/invoices.json +706 -0
  361. package/locales/cs-CZ/onboarding.json +179 -0
  362. package/locales/cs-CZ/reportBuilder.json +404 -0
  363. package/locales/cs-CZ/studio.json +1774 -1131
  364. package/locales/cs-CZ/ui.json +47 -11
  365. package/locales/da-DK/.meta.json +16245 -6225
  366. package/locales/da-DK/automations.json +406 -0
  367. package/locales/da-DK/common.json +25 -93
  368. package/locales/da-DK/dataio.json +249 -0
  369. package/locales/da-DK/email.json +813 -0
  370. package/locales/da-DK/files.json +101 -0
  371. package/locales/da-DK/invoices.json +706 -0
  372. package/locales/da-DK/onboarding.json +179 -0
  373. package/locales/da-DK/reportBuilder.json +404 -0
  374. package/locales/da-DK/studio.json +1771 -1128
  375. package/locales/da-DK/ui.json +47 -11
  376. package/locales/de-DE/.meta.json +16094 -6074
  377. package/locales/de-DE/automations.json +406 -0
  378. package/locales/de-DE/common.json +25 -93
  379. package/locales/de-DE/dataio.json +249 -0
  380. package/locales/de-DE/email.json +813 -0
  381. package/locales/de-DE/files.json +101 -0
  382. package/locales/de-DE/invoices.json +706 -0
  383. package/locales/de-DE/onboarding.json +179 -0
  384. package/locales/de-DE/reportBuilder.json +404 -0
  385. package/locales/de-DE/studio.json +1770 -1127
  386. package/locales/de-DE/ui.json +47 -11
  387. package/locales/en-US/automations.json +406 -0
  388. package/locales/en-US/common.json +25 -93
  389. package/locales/en-US/dataio.json +249 -0
  390. package/locales/en-US/email.json +813 -0
  391. package/locales/en-US/files.json +101 -0
  392. package/locales/en-US/invoices.json +706 -0
  393. package/locales/en-US/onboarding.json +179 -0
  394. package/locales/en-US/reportBuilder.json +404 -0
  395. package/locales/en-US/studio.json +1769 -1126
  396. package/locales/en-US/ui.json +39 -3
  397. package/locales/fr-FR/.meta.json +14117 -4097
  398. package/locales/fr-FR/automations.json +406 -0
  399. package/locales/fr-FR/common.json +25 -93
  400. package/locales/fr-FR/dataio.json +249 -0
  401. package/locales/fr-FR/email.json +813 -0
  402. package/locales/fr-FR/files.json +101 -0
  403. package/locales/fr-FR/invoices.json +706 -0
  404. package/locales/fr-FR/onboarding.json +179 -0
  405. package/locales/fr-FR/reportBuilder.json +404 -0
  406. package/locales/fr-FR/studio.json +1774 -1131
  407. package/locales/fr-FR/ui.json +46 -10
  408. package/locales/zh-CN/.meta.json +16223 -6203
  409. package/locales/zh-CN/automations.json +406 -0
  410. package/locales/zh-CN/common.json +25 -93
  411. package/locales/zh-CN/dataio.json +249 -0
  412. package/locales/zh-CN/email.json +813 -0
  413. package/locales/zh-CN/files.json +101 -0
  414. package/locales/zh-CN/invoices.json +706 -0
  415. package/locales/zh-CN/onboarding.json +179 -0
  416. package/locales/zh-CN/reportBuilder.json +404 -0
  417. package/locales/zh-CN/studio.json +1764 -1121
  418. package/locales/zh-CN/ui.json +47 -11
  419. package/locales/zh-TW/.meta.json +15999 -5979
  420. package/locales/zh-TW/automations.json +406 -0
  421. package/locales/zh-TW/common.json +25 -93
  422. package/locales/zh-TW/dataio.json +249 -0
  423. package/locales/zh-TW/email.json +813 -0
  424. package/locales/zh-TW/files.json +101 -0
  425. package/locales/zh-TW/invoices.json +706 -0
  426. package/locales/zh-TW/onboarding.json +179 -0
  427. package/locales/zh-TW/reportBuilder.json +404 -0
  428. package/locales/zh-TW/studio.json +1773 -1130
  429. package/locales/zh-TW/ui.json +47 -11
  430. package/package.json +1 -1
@@ -1,657 +1,833 @@
1
1
  {
2
- "title": "Studio",
3
- "settings": {
4
- "title": "Einstellungen",
5
- "workspaceSection": "Workspace",
6
- "globalDefaultsNav": "Globale Standards"
7
- },
8
- "source": {
9
- "engine": {
10
- "label": "Datenbank-Engine",
11
- "postgres": "PostgreSQL",
12
- "mysql": "MySQL / MariaDB",
13
- "sqlite": "SQLite"
2
+ "addOns": {
3
+ "browse": {
4
+ "all": "Alle",
5
+ "bundled": "Enthalten",
6
+ "categories": "Kategorien",
7
+ "discard": "Verwerfen",
8
+ "download": "Herunterladen",
9
+ "emptyBody": "Diese Version enthält keine, und der Online-Katalog ist aus.",
10
+ "emptyOnlineBody": "Der Online-Katalog ist aktiv, aber die letzte Prüfung fand nichts. Suchen Sie nach Neuerem.",
11
+ "emptyTitle": "Keine Add-ons verfügbar",
12
+ "install": "Installieren",
13
+ "noMatchBody": "Kein Add-on hier passt zu dieser Suche und Kategorie.",
14
+ "noMatchTitle": "Keine Treffer",
15
+ "offline": "Zeigt die mit dieser Version gelieferten Add-ons. Das Online-Stöbern ist ausgeschaltet, und nichts hier hat das Internet kontaktiert.",
16
+ "online": "Enthält Add-ons aus dem Online-Katalog. Die Suche nach neueren Versionen ist eine eigene Aktion.",
17
+ "refresh": "Nach Neuerem suchen",
18
+ "search": "Add-ons suchen",
19
+ "title": "Verfügbar",
20
+ "toggle": "Online-Katalog durchsuchen",
21
+ "upgrade": "v{version} verfügbar",
22
+ "upgradeAction": "Aktualisieren"
14
23
  },
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"
24
+ "card": {
25
+ "needsApiKey": "Benötigt einen API-Schlüssel",
26
+ "needsOauth": "Verbindet sich über OAuth"
27
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."
28
+ "category": {
29
+ "artwork": "Gestaltung",
30
+ "data": "Daten",
31
+ "delivery": "Versand",
32
+ "email": "E-Mail",
33
+ "payments": "Zahlungen"
31
34
  },
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."
35
+ "confirm": {
36
+ "cancel": "Abbrechen",
37
+ "close": "Schließen",
38
+ "discard": "Verwerfen",
39
+ "discardBody": "Die heruntergeladenen Dateien werden gelöscht. Es wurde nichts installiert, also ändert sich sonst nichts – Sie können es jederzeit erneut herunterladen.",
40
+ "discardTitle": "Diesen Download verwerfen",
41
+ "disconnect": "Trennen",
42
+ "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.",
43
+ "disconnectTitle": "Dieses Add-on trennen",
44
+ "uninstall": "Deinstallieren",
45
+ "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.",
46
+ "uninstallTitle": "Dieses Add-on deinstallieren"
46
47
  },
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"
48
+ "connect": {
49
+ "apiKey": "API-Schlüssel",
50
+ "submit": "Verbinden"
56
51
  },
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:"
52
+ "consent": {
53
+ "cancel": "Abbrechen",
54
+ "close": "Schließen",
55
+ "confirm": "Installieren",
56
+ "hosts": "Verbinden mit",
57
+ "loading": "Wird ermittelt, was das bewirken würde …",
58
+ "subtitle": "Was dieses Add-on tun wird, bevor es das tun kann.",
59
+ "title": "{name} installieren"
63
60
  },
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:"
61
+ "error": "Etwas ist schiefgelaufen",
62
+ "installed": {
63
+ "connected": "Verbunden",
64
+ "disconnect": "Trennen",
65
+ "egress": "Darf kontaktieren: {hosts}",
66
+ "emptyBody": "Installieren Sie oben ein Add-on, dann erscheint es hier mit seinen Hosts und seiner Verbindung.",
67
+ "emptyTitle": "Noch nichts installiert",
68
+ "notConnected": "Nicht verbunden",
69
+ "off": "aus",
70
+ "on": "an",
71
+ "title": "Installiert",
72
+ "uninstall": "Deinstallieren"
72
73
  },
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."
74
+ "job": {
75
+ "body": "Wird geladen und geprüft. Installiert wird erst auf Ihr Wort.",
76
+ "failed": "Der Download wurde nicht abgeschlossen. Es wurde nichts installiert.",
77
+ "title": "Wird heruntergeladen"
78
+ },
79
+ "plan": {
80
+ "blocked": "Das kann hier nicht installiert werden",
81
+ "needsColumns": "Dieses Add-on benötigt Spalten, die Sie nicht haben",
82
+ "needsColumnsBody": "Adminium fügt Tabellen, die Ihnen bereits gehören, keine Spalten hinzu. Legen Sie sie selbst an, dann installieren Sie.",
83
+ "noData": "Dieses Add-on liest und schreibt keine eigenen Tabellen.",
84
+ "reuse": "Dieses Add-on verwendet Tabellen, die Sie bereits haben:",
85
+ "willCreate": "Dadurch werden Tabellen in Ihrer Datenbank angelegt",
86
+ "willCreateBody": "Bei der Installation werden diese Tabellen angelegt. Eine spätere Deinstallation lässt sie und ihre Daten unberührt."
87
+ },
88
+ "settings": {
89
+ "badJson": "Das ist kein gültiges JSON und wurde nicht gespeichert.",
90
+ "save": "Einstellungen speichern",
91
+ "title": "Einstellungen"
92
+ },
93
+ "sideload": {
94
+ "file": "Paketdatei (.tgz)",
95
+ "hint": "Für einen Server ohne Internet. Wird genau wie ein Download geprüft und braucht daher den mitgelieferten Hash.",
96
+ "key": "Add-on-Schlüssel",
97
+ "sha": "Integrität (sha512-…)",
98
+ "shaHint": "Der von `npm pack --json` ausgegebene `integrity`-Wert. Passen die Bytes nicht, wird abgelehnt.",
99
+ "submit": "Hochladen",
100
+ "title": "Paket hochladen",
101
+ "version": "Version"
102
+ },
103
+ "subtitle": "Zusätzliche Funktionen für Ihre Apps – Versand, Grafik, Daten. Jedes sagt vor der Installation, was es benötigt.",
104
+ "title": "Add-ons",
105
+ "upgradeNote": "Beim Aktualisieren bleiben die Hosts, mit denen ein Add-on verbunden ist, und die bestehende Verbindung erhalten.",
106
+ "veto": {
107
+ "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.",
108
+ "title": "Diese Installation kann nicht online suchen"
76
109
  }
77
110
  },
78
111
  "capability": {
112
+ "importNoLiveHealth": "Keine Live-Datenbankverbindung — Health-Checks und Schema-Drift-Erkennung sind für diese Quelle nicht verfügbar.",
113
+ "importNoRowCounts": "Schemadateien enthalten keine Zeilenzahlen — die Tabellenliste zeigt — statt erfundener Werte.",
79
114
  "mysqlApproxRows": "MySQL-Zeilenzahlen sind Schätzungen der Storage-Engine (Abweichungen bis ±40 % möglich) — sie werden mit ≈ angezeigt.",
80
115
  "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-TypEnums 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.",
116
+ "rowsApproximate": "Schätzung der Storage-Enginekann bei InnoDB um bis zu ±40 % abweichen.",
87
117
  "rowsNoEstimate": "Die Engine hat für diese Tabelle keine Schätzung gemeldet.",
88
- "rowsApproximate": "Schätzung der Storage-Enginekann 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."
118
+ "rowsRunAnalyze": "Noch keine Schätzungführen Sie ANALYZE auf der Datenbank aus, um Zeilenzahlen zu erhalten.",
119
+ "rowsUnavailable": "Schemadateien haben keine Live-Datenbank — Zeilenzahlen sind unbekannt, bis Sie eine verbinden.",
120
+ "sqliteCheckEnums": "SQLite hat keinen nativen Enum-Typ — Enums werden aus CHECK-(col IN (…))-Constraints abgeleitet.",
121
+ "sqliteNoComments": "SQLite kennt keine Spaltenkommentare — verwenden Sie den Schema-Remap-Editor, um Beschriftungen zu vergeben."
137
122
  },
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"
123
+ "design": {
124
+ "adopt": {
125
+ "action": "Zur App hinzufügen",
126
+ "done": "{created} Seiten erstellt, {updated} aktualisiert, {unchanged} bereits aktuell.",
127
+ "everything": "Diese Verbindung zeigt bereits jede Tabelle, es musste nichts aufgenommen werden.",
128
+ "forbidden": "Ihre Rolle darf das Schema ändern, aber keine Seiten erzeugen. Bitten Sie eine Administratorin oder einen Administrator mit Verbindungsverwaltung, diese Tabellen zur App hinzuzufügen.",
129
+ "grants": "Keine Rolle erhält automatisch Zugriff — vergeben Sie ihn unter Einstellungen → Rollen.",
130
+ "offer": "Eine neue Tabelle bewirkt nichts, solange sie keine Seite hat. {tables} zur App hinzufügen?",
131
+ "skippedEdited": "Unangetastet gelassen, weil Sie sie bearbeitet haben: {pages}."
132
+ },
133
+ "apply": "Anwenden",
134
+ "ceiling": {
135
+ "authorise": "Dieses Neuschreiben autorisieren",
136
+ "body": "{table} enthält über {rows} Zeilen — mehr, als Adminium von sich aus neu schreibt. Nur eine Super-Admin-Rolle kann das autorisieren, und die Tabelle bleibt für die Dauer des Neuschreibens gesperrt.",
137
+ "hint": "Geben Sie den Tabellennamen genau so ein, wie er oben steht.",
138
+ "notYours": "{table} enthält über {rows} Zeilen. Nur eine Super-Admin-Rolle kann ein Neuschreiben dieser Größe autorisieren — fragen Sie eine, oder führen Sie die Änderung in einem Wartungsfenster mit eigenen Werkzeugen durch.",
139
+ "prompt": "Geben Sie {table} erneut ein, um das Neuschreiben zu autorisieren"
201
140
  },
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."
141
+ "column": {
142
+ "help": "Was bedeuten diese Einstellungen?",
143
+ "key": "Schlüssel",
144
+ "length": "Länge",
145
+ "link": "Verknüpft mit",
146
+ "linkHelp": "Verknüpfen Sie dies mit einer Zeile in einer anderen Tabelle.",
147
+ "linkTypeNote": "Der Typ entspricht dem Schlüssel der verknüpften Tabelle.",
148
+ "name": "Name",
149
+ "namePlaceholder": "client_id",
150
+ "noLink": "Nichts",
151
+ "onDelete": "Wenn die verknüpfte Zeile gelöscht wird",
152
+ "precision": "Genauigkeit",
153
+ "primaryKey": "Primärschlüssel",
154
+ "remove": "{name} entfernen",
155
+ "required": "Erforderlich",
156
+ "type": "Typ",
157
+ "unique": "Eindeutig"
207
158
  },
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",
159
+ "confirm": {
160
+ "body": "Diese Änderung verwirft Daten oder entfernt ein Objekt. Adminium kann sie nicht rückgängig machen.",
213
161
  "cancel": "Abbrechen",
214
162
  "close": "Schließen",
215
- "success": "Verbindung „{name}“ gelöscht",
216
- "failed": "Die Verbindung konnte nicht gelöscht werden. Versuchen Sie es erneut."
163
+ "confirm": "Änderungen anwenden",
164
+ "prompt": "Geben Sie {word} ein, um zu bestätigen",
165
+ "title": "Destruktive Änderung anwenden"
217
166
  },
167
+ "designer": "Tabellen-Designer",
168
+ "discard": "Änderungen verwerfen",
169
+ "dropping": "Zum Löschen vorgemerkt",
218
170
  "empty": {
219
- "title": "Noch keine Datenquellen",
220
- "body": "Verbinden Sie eine Datenbank — Adminium generiert Ihr Admin-Panel aus deren Schema.",
221
- "cta": "Datenbank verbinden"
171
+ "body": "Erstellen Sie eine Tabelle oder wählen Sie eine zum Bearbeiten. Nichts erreicht Ihre Datenbank, bevor Sie die Anweisungen geprüft und angewendet haben.",
172
+ "title": "Entwerfen Sie Ihr Schema"
173
+ },
174
+ "error": {
175
+ "atColumn": "Spalte {n}, {field}",
176
+ "atTable": "Tabelle {field}",
177
+ "empty": "Ein Name ist erforderlich.",
178
+ "identifier": "Nur Kleinbuchstaben, Ziffern und Unterstriche, beginnend mit einem Buchstaben.",
179
+ "tooLong": "Zu lang — {dialect} erlaubt {max} Zeichen."
180
+ },
181
+ "existing": "Vorhandene Tabellen",
182
+ "hazard": {
183
+ "irreversible": "Nicht umkehrbar",
184
+ "locking": "Hält eine Sperre",
185
+ "lossy": "Verwirft Daten",
186
+ "refused": "Abgelehnt",
187
+ "rewrite": "Schreibt die Tabelle neu",
188
+ "safe": "Sicher"
189
+ },
190
+ "help": {
191
+ "close": "Schließen",
192
+ "link": {
193
+ "example": "Eine Reservierung ist mit einem Kunden verknüpft. Adminium zeigt dann den Kunden bei der Reservierung und die Reservierungen beim Kunden.",
194
+ "term": "Verknüpfung mit einer anderen Tabelle",
195
+ "what": "Verbindet diese Zeile mit einer Zeile in einer anderen Tabelle und lässt die Datenbank darüber wachen, dass die Verknüpfung stimmt — Sie können nicht auf etwas zeigen, das es nicht gibt."
196
+ },
197
+ "primaryKey": {
198
+ "example": "Ohne Primärschlüssel kann Adminium die Zeilen auflisten, aber keine einzelne bearbeiten oder löschen.",
199
+ "term": "Primärschlüssel",
200
+ "what": "Das Feld, das jede Zeile identifiziert — daran unterscheidet Adminium eine Zeile von der anderen. Jede Tabelle sollte genau eines haben, und fast immer ist es das Feld „id“, das für Sie angelegt wurde."
201
+ },
202
+ "required": {
203
+ "example": "Eine Bestellung braucht einen Kunden, dieses Feld ist also erforderlich. Ein Lieferhinweis ist optional, dieses nicht.",
204
+ "term": "Erforderlich",
205
+ "what": "Das Feld muss ausgefüllt sein. Solange es leer ist, lässt sich die Zeile nicht speichern."
206
+ },
207
+ "subtitle": "Verständliche Beschreibungen jeder Einstellung und was sie für die Menschen ändert, die Ihre App nutzen.",
208
+ "title": "Was diese Felder bedeuten",
209
+ "type": {
210
+ "example": "Eine Telefonnummer ist meist Text, keine Zahl — bei Zahlen fallen führende Nullen weg.",
211
+ "term": "Typ",
212
+ "what": "Welche Art von Information das Feld enthält — Wörter, ganze Zahlen, Geldbeträge, ein Datum, eine Ja/Nein-Antwort. Erst der richtige Typ lässt Adminium eine Datumsauswahl statt eines Textfelds zeigen und eine Spalte mit Geldbeträgen aufsummieren."
213
+ },
214
+ "unique": {
215
+ "example": "Zwei Kunden sollten sich keine E-Mail-Adresse teilen — als eindeutig markiert, können sie es nicht.",
216
+ "term": "Eindeutig",
217
+ "what": "Keine zwei Zeilen dürfen denselben Wert enthalten. Die Datenbank weist die zweite ab."
218
+ }
222
219
  },
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."
220
+ "keepTable": "{table} behalten",
221
+ "newTable": "Neue Tabelle",
222
+ "onDelete": {
223
+ "cascade": "Diese Zeile ebenfalls löschen",
224
+ "restrict": "Löschen verhindern",
225
+ "setNull": "Dieses Feld leer lassen"
234
226
  },
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
- }
227
+ "plan": "Änderungen prüfen",
228
+ "result": {
229
+ "applied": "Angewendet. Adminium hat Ihr Schema neu eingelesen.",
230
+ "failed": "Es wurde nichts angewendetIhre Datenbank ist unverändert. {error}",
231
+ "partial": "Teilweise angewendet: {done} von {total} Schritten liefen. Dieselben Änderungen erneut anzuwenden schließt sie ab.",
232
+ "repaired": "Die Umbenennung wurde auf {pages, plural, one {# Seite} other {# Seiten}}, {grants, plural, one {# Rollenrecht} other {# Rollenrechte}} und {overrides, plural, one {# Schema-Überschreibung} other {# Schema-Überschreibungen}} übertragen."
331
233
  },
332
234
  "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"
235
+ "noChanges": "Noch keine Schemaänderungen.",
236
+ "pending": "Prüfen Sie Ihre Änderungen, um die genauen Anweisungen zu sehen, die Adminium ausführt.",
237
+ "steps": "Geplante Schritte",
238
+ "superAdmin": "Super-Administrator",
239
+ "unfinished": "Eine frühere Anwendung auf dieser Verbindung hat nie ein Ergebnis gemeldet. Ihr Schema liegt möglicherweise zwischen zwei Formen — prüfen Sie den Änderungsverlauf, bevor Sie weitere anwenden."
365
240
  },
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
- }
241
+ "reviewPane": "Prüfung",
242
+ "table": {
243
+ "addColumn": "Spalte hinzufügen",
244
+ "columns": "Spalten",
245
+ "drop": "Diese Tabelle löschen",
246
+ "dropHelp": "Die Tabelle und alle ihre Zeilen werden zerstört. Sie sehen genau, was dadurch kaputtgeht, bevor etwas ausgeführt wird.",
247
+ "name": "Tabellenname",
248
+ "nameHelp": "Kleinbuchstaben, Ziffern und Unterstriche.",
249
+ "namePlaceholder": "reservations",
250
+ "noKey": "Diese Tabelle hat keinen Primärschlüssel, daher behandelt Adminium sie als schreibgeschützt — Zeilen lassen sich auflisten, aber nicht bearbeiten.",
251
+ "renameHelp": "Eine Änderung benennt die Tabelle in Ihrer Datenbank um.",
252
+ "uuidKeyUnavailable": "Auf dieser Engine muss ein Schlüssel eine generierte Ganzzahl sein: eine von der Datenbank generierte UUID kann nach einem Insert nicht zurückgelesen werden."
253
+ },
254
+ "unnamed": "Benennen Sie jede Tabelle und Spalte, um die Änderungen zu prüfen.",
255
+ "unrepresentableDefaults": "Diese Spalten behalten einen von der Datenbank erzeugten Standardwert, den Adminium hier nicht bearbeiten kann; er bleibt unverändert: {columns}"
371
256
  },
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"
257
+ "diagram": {
258
+ "ceiling": "Es werden die {shown} am stärksten verbundenen Tabellen gezeigt. {omitted} weitere sind ausgeblendet — suchen Sie danach, um eine einzublenden.",
259
+ "legend": {
260
+ "declared": "Fremdschlüssel",
261
+ "inferred": "Abgeleitet",
262
+ "virtual": "In Adminium hinzugefügt"
263
+ },
264
+ "legendLabel": "Legende",
265
+ "node": {
266
+ "foreignKey": "Fremdschlüssel",
267
+ "more": "+{count} weitere",
268
+ "primaryKey": "Primärschlüssel"
269
+ },
270
+ "outline": {
271
+ "intro": "{tables} Tabellen und {relations} Beziehungen, als Liste.",
272
+ "more": " und {count} weitere",
273
+ "referencedBy": "Referenziert von: {list}",
274
+ "references": "Referenziert: {list}"
275
+ },
276
+ "saveLayout": "Anordnung speichern",
277
+ "search": "Tabelle oder Spalte finden",
278
+ "showDiagram": "Diagramm anzeigen",
279
+ "showList": "Als Liste anzeigen"
280
+ },
281
+ "documents": {
282
+ "cancel": "Abbrechen",
283
+ "connectionLabel": "Verbindung",
284
+ "delete": "Löschen",
285
+ "delivery": {
286
+ "email": "Senden an",
287
+ "noEmail": "An niemanden — nur am Datensatz behalten",
288
+ "noEmailSlot": "Diese Belegart hat kein Adressfeld und kann daher nicht versendet werden.",
289
+ "noSmtp": "Für dieses Adminium ist noch kein E-Mail-Server eingerichtet, es kann also nichts versendet werden. Richten Sie einen unter Studio → Einstellungen → E-Mail ein.",
290
+ "stored": "Bleibt immer am Datensatz."
291
+ },
292
+ "disabled": "ausgeschaltet",
293
+ "edit": "Bearbeiten",
294
+ "empty": "Noch keine Zuordnungen.",
295
+ "grants": {
296
+ "refused": "Diese Zuordnung liest {tables}, was Sie nicht lesen dürfen. Belege daraus schlagen für Sie fehl.",
297
+ "title": "Sie dürfen nicht alles davon lesen"
298
+ },
299
+ "intro": "Eine Zuordnung sagt, welche Spalten welcher Tabelle eine Belegart ergeben, was sie auslöst und wohin sie geht.",
300
+ "name": "Diese Zuordnung benennen",
301
+ "newFrom": "Neue Zuordnung für:",
302
+ "noProvider": "Noch kann kein installiertes Add-on Belege zeichnen. Installieren Sie eines unter Add-ons, dann erscheinen hier die möglichen Zuordnungen.",
303
+ "pickTable": "Tabelle wählen…",
304
+ "prefix": "Nummernpräfix",
305
+ "render": {
306
+ "failedRow": "Es wurde nichts gezeichnet: {reason}",
307
+ "intro": "Zeichnen Sie jetzt einen, aus einer Zeile Ihrer Wahl. Es wird nichts versendet – er bleibt am Datensatz wie jeder andere.",
308
+ "noRows": "Noch keine Zeilen zum Zeichnen.",
309
+ "open": "Öffnen",
310
+ "pending": "Wird gezeichnet…",
311
+ "pick": "Diese zeichnen",
312
+ "ready": "Gezeichnet.",
313
+ "saveFirst": "Speichern Sie die Zuordnung zuerst. Gezeichnet wird aus einer gespeicherten – so sehen Sie das Ergebnis, bevor es jemand anderes sieht.",
314
+ "search": "Zeilen durchsuchen",
315
+ "slow": "Es ist noch kein Beleg erschienen. Vielleicht wartet er noch – oder diese Installation führt keine Hintergrundaufträge aus; dann wird nichts gezeichnet, bis sie es tut.",
316
+ "slowTitle": "Immer noch nichts"
317
+ },
318
+ "save": "Zuordnung speichern",
319
+ "slot": {
320
+ "byDefault": "Von Adminium gefüllt",
321
+ "lineColumnOf": "{column} jeder Position",
322
+ "lineColumns": "Was jede Spalte einer Position füllt",
323
+ "looksLikeLines": "sieht nach Positionen aus",
324
+ "noChildren": "Nichts in Ihrer Datenbank verweist auf diese Tabelle, es gibt also keine Positionen zu zeichnen. Ein Beleg braucht eine untergeordnete Tabelle mit einem Fremdschlüssel zurück auf diese.",
325
+ "noLines": "Keine Positionen",
326
+ "pii": "verborgene Daten",
327
+ "typed": "Ein Wert, den ich eintrage",
328
+ "typedHint": "Hier eingetragen, nicht aus Ihren Daten gelesen – jeder Beleg aus dieser Zuordnung bekommt denselben Wert.",
329
+ "typedValue": "Wert für {slot}",
330
+ "unmapped": "Nicht gefüllt"
453
331
  },
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
- }
332
+ "step": {
333
+ "delivery": "Wohin er geht",
334
+ "kind": "Art",
335
+ "mapping": "Was jedes Feld füllt",
336
+ "mappingHelp": "Jedes Feld liest eine Spalte – oder nimmt einen Wert, den Sie hier eintragen.",
337
+ "render": "An einer Zeile ausprobieren",
338
+ "table": "Verbindung und Tabelle",
339
+ "trigger": "Was ihn auslöst"
340
+ },
341
+ "tableLabel": "Tabelle",
342
+ "title": "Beleg-Zuordnungen",
343
+ "trigger": {
344
+ "created": "Wenn eine Zeile hinzukommt",
345
+ "manual": "Nur auf Anforderung",
346
+ "manualShort": "auf Anforderung",
347
+ "note": "Zeilen aus einem Import oder direkt in die Datenbank geschriebene Zeilen lösen nichts aus — nur Schreibvorgänge über Adminium.",
348
+ "noteTitle": "Was als Änderung zählt",
349
+ "updated": "Wenn sich eine Zeile ändert"
350
+ },
351
+ "unbound": "Noch auszufüllen: {slots}"
471
352
  },
472
353
  "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
354
  "byo": {
514
- "cardTitle": "Einen Prompt in mein eigenes KI-Tool kopieren",
515
355
  "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",
356
+ "cardTitle": "Einen Prompt in mein eigenes KI-Tool kopieren",
357
+ "cardTitleRecommended": "Prompt in mein eigenes KI-Tool kopieren — empfohlen",
524
358
  "chunkTab": "Prompt {index}",
359
+ "chunkTabs": "Prompt-Abschnitte",
525
360
  "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",
361
+ "continueReview": "Weiter zur Prüfung",
534
362
  "copyErrors": "Fehler für Ihr KI-Tool kopieren",
535
363
  "copyErrorsDone": "Fehler kopiert",
536
364
  "copyErrorsHint": "Fügen Sie dies in Ihr KI-Tool zurück ein, um eine korrigierte Antwort zu erhalten.",
365
+ "copyPrompt": "Prompt kopieren",
366
+ "copyPromptDone": "Prompt kopiert",
367
+ "download": ".md herunterladen",
537
368
  "droppedItems": "{count} Vorschläge wurden bei der Validierung verworfen — die Prüfung zeigt die übrigen.",
538
- "pendingTitle": "Validieren Sie jeden Prompt, um fortzufahren",
369
+ "errorsTitle": "Die Validierung fand {count} Probleme",
370
+ "guidance": "Führen Sie dies in einem beliebigen KI-Tool aus — Claude Code, ChatGPT, egal. Fügen Sie das zurückgegebene JSON unten ein.",
371
+ "mergedBody": "Die Vorschläge können nun gegen die heuristische Grundlage geprüft werden.",
372
+ "mergedTitle": "Alle {count} Abschnitte validiert und zusammengeführt",
373
+ "mergedTitleSingle": "Antwort validiert",
374
+ "pasteLabel": "JSON-Antwort einfügen",
375
+ "pastePlaceholder": "JSON-Antwort hier einfügen…",
539
376
  "pendingBody": "Fügen Sie die JSON-Antwort oben ein und validieren Sie sie, um zur Prüfung fortzufahren.",
540
377
  "pendingBodyChunked": "Jeder Abschnitt muss validiert werden, bevor die Vorschläge zusammengeführt werden. Fügen Sie jeden Prompt oben ein und validieren Sie ihn.",
378
+ "pendingTitle": "Validieren Sie jeden Prompt, um fortzufahren",
379
+ "promptLabel": "Anreicherungs-Prompt",
380
+ "promptLabelN": "Anreicherungs-Prompt {index} von {total}",
541
381
  "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"
382
+ "tokenChip": " {tokens} Tokens",
383
+ "valid": "Antwort validiert",
384
+ "validate": "Validieren",
385
+ "wholeDocument": "gesamtes Dokument"
545
386
  },
387
+ "copied": "Kopiert",
388
+ "createFailed": "Der Anreicherungs-Prompt konnte nicht erstellt werden — erneut versuchen.",
389
+ "createFailedTitle": "Konnte nicht starten",
546
390
  "direct": {
547
- "title": "Anreicherung mit KI",
548
- "subtitle": "Ihr Schema wird gesendet an",
391
+ "back": "Zurück zu den Optionen",
549
392
  "building": "Prompt wird erstellt…",
550
- "logLabel": "Anreicherungsprotokoll",
551
393
  "cancel": "Abbrechen",
552
- "back": "Zurück zu den Optionen",
553
- "retry": "Erneut versuchen",
554
- "done": "Anreicherung abgeschlossen — prüfen Sie die Vorschläge.",
555
394
  "continueReview": "Weiter zur Prüfung",
395
+ "done": "Anreicherung abgeschlossen — prüfen Sie die Vorschläge.",
396
+ "errorTitle": "Anreicherung fehlgeschlagen",
556
397
  "failed": "Der Anbieterlauf ist fehlgeschlagen. Prüfen Sie Ihre KI-Einstellungen und versuchen Sie es erneut.",
557
398
  "jobFailed": "Der Anreicherungslauf wurde nicht abgeschlossen.",
399
+ "logLabel": "Anreicherungsprotokoll",
400
+ "retry": "Erneut versuchen",
558
401
  "startFailed": "Der Lauf konnte nicht gestartet werden — erneut versuchen.",
559
- "errorTitle": "Anreicherung fehlgeschlagen"
402
+ "subtitle": "Ihr Schema wird gesendet an",
403
+ "title": "Anreicherung mit KI"
404
+ },
405
+ "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.",
406
+ "fileTitle": "KI-Anreicherung benötigt eine aktive Datenbank",
407
+ "generatePrompt": "Prompt erzeugen",
408
+ "intentLabel": "Wie möchten Sie anreichern?",
409
+ "localeLocked": "(erforderlich)",
410
+ "localesLegend": "Bezeichnungen übersetzen in",
411
+ "noSections": "Wählen Sie mindestens eine Entscheidungsgruppe zum Anreichern.",
412
+ "provider": {
413
+ "configError": "Die Anbietereinstellungen konnten nicht geladen werden — konfigurieren Sie einen Anbieter unter Einstellungen → KI und kehren Sie dann zu diesem Schritt zurück.",
414
+ "description": "Führen Sie die Anreicherung jetzt mit Ihrem konfigurierten Anbieter aus. Sie prüfen jeden Vorschlag als Diff.",
415
+ "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.",
416
+ "readyBody": "Wählen Sie oben „Meinen KI-Anbieter verwenden“, um die Anreicherung jetzt für diese Verbindung auszuführen.",
417
+ "readyTitle": "KI-Anbieter konfiguriert",
418
+ "setUpHere": "Anbieter hier einrichten",
419
+ "setUpHide": "Anbietereinrichtung ausblenden",
420
+ "settingsHint": "Möchten Sie es direkt ausführen?",
421
+ "settingsLink": "Anbieter in Einstellungen → KI konfigurieren",
422
+ "title": "Meinen KI-Anbieter verwenden",
423
+ "unconfigured": "Es ist noch kein KI-Anbieter konfiguriert — richten Sie unten einen ein, oder kopieren Sie einen Prompt in Ihr eigenes KI-Tool."
424
+ },
425
+ "providerFallback": "Ihr KI-Anbieter",
426
+ "samplingHint": "Nimmt bis zu 20 echte Werte pro Nicht-PII-Spalte in den Prompt auf.",
427
+ "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.",
428
+ "samplingPreviewTitle": "Was diesen Rechner verlässt",
429
+ "samplingTitle": "Beispielwerte einbeziehen",
430
+ "section": {
431
+ "enums": "Enum-Semantik",
432
+ "groups": "Navigationsgruppen",
433
+ "icons": "Symbole",
434
+ "keys": "Schlüsselspalten",
435
+ "labels": "Bezeichnungen & Beschreibungen",
436
+ "microcopy": "Mikrotexte",
437
+ "pii": "PII & Maskierung",
438
+ "relations": "Beziehungen",
439
+ "templates": "Seitenvorlagen",
440
+ "widgets": "Dashboard-Widgets"
560
441
  },
442
+ "sectionsLegend": "Worüber soll die KI entscheiden?",
561
443
  "skip": {
562
- "title": "Überspringennur Heuristik verwenden",
563
- "description": "Aus der heuristischen Grundlage generieren. Sie können später über Einstellungen → KI anreichern — Überspringen wird nie bestraft.",
444
+ "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.",
564
445
  "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."
446
+ "description": "Aus der heuristischen Grundlage generieren. Sie können später über Einstellungen KI anreichern Überspringen wird nie bestraft.",
447
+ "title": "Überspringen — nur Heuristik verwenden"
448
+ },
449
+ "startOver": "Von vorn beginnen",
450
+ "startProvider": "Anreicherung starten",
451
+ "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.",
452
+ "title": "Mit KI anreichern"
453
+ },
454
+ "generate": {
455
+ "errorTitle": "Generierung fehlgeschlagen",
456
+ "failed": "Generierung fehlgeschlagen — versuchen Sie es erneut oder führen Sie zuerst die Introspektion erneut aus.",
457
+ "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.",
458
+ "fileTitle": "Schemadatei geparst — die Generierung benötigt eine Live-Datenbank",
459
+ "log": {
460
+ "classifying": "Schema wird klassifiziert…",
461
+ "composing": "Vorlagen werden zusammengestellt…",
462
+ "done": "{pages} Seiten in {groups} Navigationsgruppen generiert",
463
+ "writing": "Seiten werden geschrieben…"
464
+ },
465
+ "logLabel": "Generierungsprotokoll",
466
+ "openApp": "App öffnen",
467
+ "run": "Dashboard generieren",
468
+ "subtitle": "Eine Seite pro einbezogener Tabelle plus Dashboards je Domäne — Zweck:",
469
+ "successBody": "{pages} Seiten in {groups} Navigationsgruppen — aus Ihrem Schema generiert, im Studio bearbeitbar.",
470
+ "successTitle": "Ihr Dashboard ist bereit",
471
+ "title": "Generieren Sie Ihre App"
472
+ },
473
+ "hostedApps": {
474
+ "domains": {
475
+ "add": "Domain anhängen",
476
+ "hostLabel": "Host",
477
+ "instanceLabel": "Instanz",
478
+ "instanceOwn": "Die App selbst",
479
+ "issuesTitle": "Die Domain-Zuordnung wurde abgelehnt",
480
+ "none": "Keine Domains angehängt.",
481
+ "remove": "Entfernen",
482
+ "save": "Domains speichern",
483
+ "savedBody": "Zuordnungen greifen innerhalb weniger Sekunden. Ein Host antwortet erst, wenn sein DNS und Ihr Proxy diese Instanz tatsächlich erreichen.",
484
+ "savedTitle": "Gespeichert",
485
+ "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.",
486
+ "surfaceLabel": "Oberfläche",
487
+ "title": "Domains"
488
+ },
489
+ "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.",
490
+ "emptyTitle": "Es werden keine App-Oberflächen ausgeliefert",
491
+ "error": "Etwas ist schiefgelaufen",
492
+ "instances": {
493
+ "add": "Instanz hinzufügen",
494
+ "appLabel": "App",
495
+ "body": "Dieselbe App über mehrere Datenbanken bereitstellen. Jede Instanz ist unter /apps/<app>/<segment>/<side>/ erreichbar und liest nur die Verbindung, die Sie ihr geben.",
496
+ "empty": "Keine weiteren Instanzen.",
497
+ "failed": "Instanzen wurden nicht gespeichert",
498
+ "readsLabel": "Liest",
499
+ "remove": "Entfernen",
500
+ "save": "Instanzen speichern",
501
+ "slugLabel": "URL-Segment",
502
+ "title": "Instanzen"
503
+ },
504
+ "subtitle": "Die App-Oberflächen, die diese Instanz ausliefert — wo jede erscheint und welche Domains auf sie zeigen.",
505
+ "surfaces": {
506
+ "boundKey": "Liefert Schlüssel",
507
+ "connectionLabel": "Liest",
508
+ "connectionUnset": "Was gerade bedient",
509
+ "customer": "Kunden",
510
+ "mintLink": "Unter „Öffentliche API“ erstellen",
511
+ "noKey": "Kein Schlüssel gebunden — diese Oberfläche kann keine Daten lesen, bis einer für sie erstellt wird.",
512
+ "noNav": "Interne Platzierung nicht verfügbar — bauen Sie diese Oberfläche mit dem aktuellen Toolkit neu, damit sie surface.json ausgibt.",
513
+ "placementExternal": "Extern (nur eigene URL)",
514
+ "placementInternal": "In der Seitenleiste (eingebettet)",
515
+ "placementLabel": "Platzierung",
516
+ "staff": "Mitarbeiter",
517
+ "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.",
518
+ "title": "Oberflächen"
519
+ },
520
+ "title": "Gehostete Apps",
521
+ "install": {
522
+ "steps": {
523
+ "bundle": "Paket",
524
+ "database": "Datenbank",
525
+ "plan": "Schemaplan",
526
+ "done": "Fertig"
527
+ },
528
+ "progress": "Installationsfortschritt",
529
+ "failed": "Installation fehlgeschlagen",
530
+ "bundle": {
531
+ "title": "App-Paket hochladen",
532
+ "hint": "Die .tgz-Datei, die `npm pack` für eine gebaute Oberfläche erzeugt — sie enthält manifest.json und ein Verzeichnis staff/ oder customer/.",
533
+ "file": "Paketdatei (.tgz)",
534
+ "fileHint": "Es wird nichts angelegt, bevor Sie den Schemaplan bestätigen.",
535
+ "key": "App-Schlüssel",
536
+ "version": "Version",
537
+ "integrity": "Prüfsumme (optional)",
538
+ "integrityHint": "Fügen Sie den sha512-Wert aus `npm pack --json` ein, damit der Server genau diese Bytes prüft. Bleibt das Feld leer, wird er hier berechnet."
539
+ },
540
+ "database": {
541
+ "title": "In welche Datenbank installieren?",
542
+ "hint": "Wählen Sie eine beschreibbare Verbindung. Dort werden die Tabellen angelegt, und daraus liest die App anschließend.",
543
+ "tables": "Tabellen: {count}",
544
+ "readOnly": "Nur lesend",
545
+ "writable": "Beschreibbar",
546
+ "noWritable": "Keine beschreibbare Verbindung",
547
+ "allReadOnly": "Alle Verbindungen hier verwenden eine nur lesende Rolle, daher kann keine App ihre Tabellen anlegen. Verbinden Sie zuerst eine, die DDL ausführen darf."
548
+ },
549
+ "plan": {
550
+ "title": "Schemaplan prüfen",
551
+ "hint": "Genau das wird in Ihrer Datenbank angelegt. Bisher wurde nichts geschrieben.",
552
+ "refused": "Diese App kann hier nicht installiert werden",
553
+ "create": "Anlegen",
554
+ "reuse": "Vorhandene nutzen",
555
+ "toggleDdl": "DDL-Vorschau anzeigen",
556
+ "ddl": "DDL-Vorschau",
557
+ "ddlNote": "Beispielhaft. Der Server erzeugt die exakte Anweisung für Ihre Engine, inklusive Fremdschlüsseln.",
558
+ "summary": "{created} angelegt · {reused} wiederverwendet"
559
+ },
560
+ "done": {
561
+ "title": "Installiert",
562
+ "body": "{key} wird jetzt ausgeliefert. Wählen Sie unten, wo die Mitarbeiterseite erscheint.",
563
+ "schema": "Tabellen angelegt: {created} · wiederverwendet: {reused}"
564
+ },
565
+ "cancel": "Abbrechen",
566
+ "back": "Zurück",
567
+ "upload": "Hochladen",
568
+ "continue": "Weiter",
569
+ "confirm": "Installieren",
570
+ "finish": "Apps verwalten",
571
+ "staged": "Entpackte Dateien: {files}",
572
+ "footerStep": "Schritt {n} von {total}",
573
+ "footerStepApp": "Schritt {n} von {total} · {app}",
574
+ "chosen": {
575
+ "title": "{app} installieren",
576
+ "hint": "Diese App kam mit Ihrem Build und liegt bereits auf der Festplatte. Es wird nichts angelegt, bevor Sie den Schemaplan bestätigen."
577
+ }
578
+ },
579
+ "installed": {
580
+ "title": "Installierte Apps",
581
+ "install": "App installieren",
582
+ "emptyTitle": "Noch keine Apps installiert",
583
+ "emptyBody": "Laden Sie ein gebautes Oberflächenpaket hoch, um eine zu installieren. Hier installierte Apps werden sofort ausgeliefert — ohne Neustart, anders als bei einem Verzeichnis.",
584
+ "uninstall": "Deinstallieren",
585
+ "confirmTitle": "Diese App deinstallieren?",
586
+ "confirmBody": "Ihre Oberflächen werden nicht mehr ausgeliefert und das Paket wird gelöscht. Tabellen, die sie in Ihrer Datenbank angelegt hat, bleiben unangetastet.",
587
+ "confirmPrompt": "Geben Sie zur Bestätigung {key} ein",
588
+ "confirmCancel": "Abbrechen",
589
+ "confirmClose": "Schließen",
590
+ "stagedTitle": "Hochgeladen, aber nicht installiert",
591
+ "stagedHint": "Verwerfen Sie, wogegen Sie sich entschieden haben, oder laden Sie denselben Schlüssel erneut hoch, um ihn zu ersetzen.",
592
+ "discard": "Verwerfen",
593
+ "installedAt": "installiert {when}"
594
+ },
595
+ "browse": {
596
+ "title": "Apps, die Sie installieren können",
597
+ "subtitle": "Fertige Apps, die mit diesem Build geliefert wurden. Eine Installation legt die benötigten Tabellen an und liefert die Oberflächen aus — bis Sie den Plan bestätigen, passiert nichts.",
598
+ "search": "Apps suchen…",
599
+ "clear": "Suche leeren",
600
+ "all": "Alle",
601
+ "by": "von {publisher}",
602
+ "install": "Installieren",
603
+ "installed": "Installiert",
604
+ "noMatch": "Keine App passt zu dieser Suche",
605
+ "noMatchBody": "Versuchen Sie einen anderen Begriff oder eine andere Kategorie.",
606
+ "emptyTitle": "Keine Apps zum Installieren verfügbar",
607
+ "emptyBody": "Apps, die mit diesem Build geliefert werden, erscheinen hier. Lassen Sie ADMINIUM_BUNDLED_APPS auf ein Verzeichnis mit App-Paketen zeigen, oder laden Sie selbst eines hoch.",
608
+ "unreadable": "Das Manifest dieses Pakets konnte nicht gelesen werden. Es lässt sich nicht installieren — verwerfen Sie es unten."
566
609
  }
567
610
  },
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."
611
+ "hub": {
612
+ "action": {
613
+ "delete": "Löschen",
614
+ "pause": "Pausieren",
615
+ "pausedHint": "Diese Verbindung ist pausiert – setzen Sie sie fort, um die Datenbank zu erreichen.",
616
+ "regional": "Regionale Einstellungen",
617
+ "reintrospect": "Neu introspizieren",
618
+ "reintrospectFile": "Schemadatei-Quellen haben keine Live-Datenbank — laden Sie stattdessen die Datei erneut hoch.",
619
+ "remap": "Schema neu zuordnen",
620
+ "rename": "Umbenennen",
621
+ "resume": "Fortsetzen",
622
+ "test": "Testen"
623
+ },
624
+ "card": {
625
+ "lastIntrospected": "Zuletzt introspiziert",
626
+ "latency": "Latenz",
627
+ "latencyMs": "{latency, number} ms",
628
+ "never": "Nie",
629
+ "pages": "Seiten",
630
+ "paused": "Adminium stellt keine Verbindung zu dieser Datenbank her. Ihre Seiten laden wieder, sobald Sie sie fortsetzen.",
631
+ "pausedSince": "Pausiert {when} – Adminium stellt keine Verbindung zu dieser Datenbank her. Ihre Seiten laden wieder, sobald Sie sie fortsetzen.",
632
+ "readOnly": "Schreibgeschützt",
633
+ "tables": "Tabellen",
634
+ "timezone": "Zeitzone",
635
+ "timezoneGuessed": "von diesem Server"
636
+ },
637
+ "connectNew": "Neue Verbindung",
638
+ "delete": {
639
+ "body": "Dies löscht „{name}“ und die daraus generierten Seiten. Ihre Datenbank selbst bleibt unangetastet.",
640
+ "cancel": "Abbrechen",
641
+ "close": "Schließen",
642
+ "confirm": "Verbindung löschen",
643
+ "failed": "Die Verbindung konnte nicht gelöscht werden. Versuchen Sie es erneut.",
644
+ "prompt": "Geben Sie {name} zur Bestätigung ein",
645
+ "success": "Verbindung „{name}“ gelöscht",
646
+ "title": "Verbindung löschen"
647
+ },
648
+ "empty": {
649
+ "body": "Verbinden Sie eine Datenbank — Adminium generiert Ihr Admin-Panel aus deren Schema.",
650
+ "cta": "Datenbank verbinden",
651
+ "title": "Noch keine Datenquellen"
652
+ },
653
+ "hostedApps": "Gehostete Apps",
654
+ "introspect": {
655
+ "failed": "Introspektion fehlgeschlagen. Versuchen Sie es erneut.",
656
+ "masksProposed": "{count, plural, one {# Spalte} other {# Spalten}} zur Maskierung vorgeschlagen — im Remap-Editor prüfen.",
657
+ "noChanges": "Schema unverändert — kein neuer Snapshot.",
658
+ "updated": "Schema neu introspiziert"
659
+ },
660
+ "pause": {
661
+ "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.",
662
+ "confirm": "Verbindung pausieren",
663
+ "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.",
664
+ "pauseFailed": "Die Verbindung konnte nicht pausiert werden. Versuchen Sie es erneut.",
665
+ "pausedToast": "Verbindung „{name}“ pausiert",
666
+ "resumeFailed": "Die Verbindung konnte nicht fortgesetzt werden. Versuchen Sie es erneut.",
667
+ "resumedToast": "Verbindung „{name}“ fortgesetzt",
668
+ "title": "Diese Verbindung pausieren?"
669
+ },
670
+ "regional": {
671
+ "currency": "Währung",
672
+ "currencyHelper": "Dient der Formatierung von Beträgen. Optional – ohne Angabe ändert sich nur die Formatierung.",
673
+ "currencyPlaceholder": "ISO-4217-Code",
674
+ "failed": "Regionale Einstellungen konnten nicht gespeichert werden",
675
+ "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.",
676
+ "guessedTitle": "Diese Zeitzone stammt vom Server",
677
+ "intro": "Sie beschreiben das Unternehmen, zu dem diese Datenbank gehört, nicht die lesende Person. Von Adminium ausgelieferte Apps lesen sie hier.",
678
+ "noMatch": "Keine passende Zone",
679
+ "noMatchCurrency": "Keine passende Währung",
680
+ "notSet": "Nicht gesetzt",
681
+ "save": "Speichern",
682
+ "saved": "Regionale Einstellungen aktualisiert",
683
+ "timezone": "Zeitzone",
684
+ "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.",
685
+ "timezonePlaceholder": "Region/Stadt",
686
+ "title": "Regionale Einstellungen"
687
+ },
688
+ "rename": {
689
+ "failed": "Die Verbindung konnte nicht umbenannt werden",
690
+ "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.",
691
+ "label": "Name",
692
+ "save": "Umbenennen",
693
+ "saved": "Verbindung umbenannt",
694
+ "title": "Verbindung umbenennen"
695
+ },
696
+ "stats": {
697
+ "connections": "Verbindungen",
698
+ "healthy": "Fehlerfrei",
699
+ "pages": "Generierte Seiten",
700
+ "tables": "Einbezogene Tabellen"
701
+ },
702
+ "status": {
703
+ "connected": "Verbunden",
704
+ "error": "Fehler",
705
+ "paused": "Pausiert",
706
+ "testing": "Wird getestet…",
707
+ "unconfigured": "Entwurf"
708
+ },
709
+ "subtitle": "{healthy, number} von {total, plural, one {# Verbindung} other {# Verbindungen}} fehlerfrei",
710
+ "subtitlePaused": "{healthy, number} von {total, plural, one {# Verbindung} other {# Verbindungen}} fehlerfrei · {paused, number} pausiert",
711
+ "test": {
712
+ "failed": "Verbindungstest fehlgeschlagen",
713
+ "ok": "Verbindung fehlerfrei · {latency, number} ms"
714
+ },
715
+ "title": "Datenverbindungen"
716
+ },
717
+ "intent": {
718
+ "analytics": {
719
+ "description": "Dashboards, Diagramme und schreibgeschützte Tabellen. Keine Formulare, keine Schreibvorgänge — jede Rolle auf Betrachter begrenzt.",
720
+ "title": "Schreibgeschützte Analysen"
721
+ },
722
+ "crud": {
723
+ "description": "Eine Bearbeitungsseite pro Tabelle plus Suche und Import/Export — ein minimales Zuhause, keine Dashboards.",
724
+ "title": "CRUD-Tabellen"
725
+ },
726
+ "fullAdmin": {
727
+ "description": "Dashboards, CRUD-Seiten, Suche, Importe und Exporte — alles, was Ihr Schema unterstützt.",
728
+ "title": "Vollständiges Admin-Panel"
729
+ },
730
+ "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.",
731
+ "support": {
732
+ "description": "Zuerst Warteschlangen, Ticket- und Kundendetailseiten. Löschen standardmäßig aus. (Queue-Vorlagen kommen mit M7 — der v1-Seitensatz entspricht dem vollständigen Admin.)",
733
+ "title": "Support-Konsole"
734
+ },
735
+ "title": "Was brauchen Sie?",
736
+ "trust": "Wir lesen nur Ihr Schema — während der Einrichtung nie Ihre Zeilendaten."
571
737
  },
572
738
  "llmRuns": {
573
739
  "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"
740
+ "applied": {
741
+ "body": "Die übernommenen Vorschläge unten sind schreibgeschützt.",
742
+ "title": "Dieser Lauf wurde angewendet"
743
+ },
744
+ "apply": {
745
+ "confirm": "Änderungen übernehmen",
746
+ "empty": "Nichts zum Übernehmen ausgewählt.",
747
+ "subtitle": "Diese Änderungen werden in einer Transaktion geschrieben und können rückgängig gemacht werden.",
748
+ "title": "{n} Vorschläge übernehmen"
586
749
  },
750
+ "applyFailed": "Es wurde nichts übernommen",
751
+ "applyUnknown": "Der Server hat nicht gesagt, warum.",
587
752
  "bulk": {
588
- "thresholdLabel": "Konfidenzschwelle",
589
- "thresholdAria": "Konfidenzschwelle für „Alle übernehmen“",
590
753
  "acceptAll": "Alle ≥ {pct}% übernehmen",
591
- "clear": "Auswahl aufheben"
754
+ "clear": "Auswahl aufheben",
755
+ "thresholdAria": "Konfidenzschwelle für „Alle übernehmen“",
756
+ "thresholdLabel": "Konfidenzschwelle"
592
757
  },
593
- "section": {
594
- "selectAllAria": "Alle in {group} auswählen",
595
- "acceptedCount": "{n} übernommen"
758
+ "cat": {
759
+ "copy": "Mikrotext",
760
+ "dashboard": "Dashboard",
761
+ "enum": "Enum",
762
+ "group": "Navigationsgruppe",
763
+ "key": "Schlüsselspalten",
764
+ "label": "Bezeichnung",
765
+ "pii": "PII",
766
+ "relation": "Beziehung",
767
+ "template": "Seitenvorlage",
768
+ "widget": "Widget"
769
+ },
770
+ "empty": {
771
+ "body": "Dieser Lauf hat keine Vorschläge zur Prüfung erzeugt.",
772
+ "title": "Keine Vorschläge"
773
+ },
774
+ "error": {
775
+ "title": "Dieser Lauf konnte nicht geladen werden"
776
+ },
777
+ "footer": {
778
+ "apply": "{n} übernommene Vorschläge anwenden",
779
+ "count": "{n} Vorschläge ausgewählt",
780
+ "failed": "Anwenden fehlgeschlagen"
596
781
  },
597
782
  "group": {
598
- "labels": "Bezeichnungen & Übersetzungen",
599
- "navigation": "Navigation & Domänen",
783
+ "dashboards": "Dashboards & Widgets",
600
784
  "enums": "Enum-Semantik",
601
- "relations": "Beziehungen",
785
+ "icons": "Symbole",
602
786
  "keys": "Schlüsselspalten",
603
- "templates": "Seitenvorlagen",
604
- "dashboards": "Dashboards & Widgets",
787
+ "labels": "Bezeichnungen & Übersetzungen",
788
+ "microcopy": "Mikrotexte",
789
+ "navigation": "Navigation & Domänen",
605
790
  "pii": "PII & Maskierung",
606
- "icons": "Symbole",
607
- "microcopy": "Mikrotexte"
791
+ "relations": "Beziehungen",
792
+ "templates": "Seitenvorlagen"
608
793
  },
609
- "status": {
610
- "agree": "Stimmt überein",
611
- "conflict": "Konflikt",
612
- "new": "Neu",
613
- "heuristicOnly": "Nur Heuristik",
614
- "rejects": "Lehnt Heuristik ab",
615
- "locked": "Gesperrt"
794
+ "header": {
795
+ "agree": "{n} übereinstimmend",
796
+ "byo": "BYO",
797
+ "conflict": "{n} Konflikt",
798
+ "countsAria": "Anzahl der Vorschläge",
799
+ "model": "Modell",
800
+ "new": "{n} neu",
801
+ "pathByo": "Kopieren & Einfügen",
802
+ "pathDirect": "Direkte API",
803
+ "rejects": "{n} Ablehnungen",
804
+ "snapshot": "Schnappschuss",
805
+ "title": "KI-Vorschläge prüfen"
806
+ },
807
+ "notReady": {
808
+ "body": "Ein Lauf muss validiert sein, bevor seine Vorschläge geprüft werden können. Erzeugen oder fügen Sie zuerst eine Antwort ein.",
809
+ "title": "Dieser Lauf hat noch keine Vorschläge zur Prüfung"
616
810
  },
617
811
  "row": {
618
812
  "acceptAria": "{noun}-Vorschlag für {target} übernehmen",
813
+ "confidenceAria": "Konfidenz {pct}%",
814
+ "hideTranslations": "Übersetzungen ausblenden",
619
815
  "keptEdited": "beibehalten – von Ihnen bearbeitet",
816
+ "noAi": "Kein KI-Vorschlag",
620
817
  "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"
818
+ "showTranslations": "Übersetzungen anzeigen"
644
819
  },
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"
820
+ "section": {
821
+ "acceptedCount": "{n} übernommen",
822
+ "selectAllAria": "Alle in {group} auswählen"
650
823
  },
651
- "footer": {
652
- "count": "{n} Vorschläge ausgewählt",
653
- "apply": "{n} übernommene Vorschläge anwenden",
654
- "failed": "Anwenden fehlgeschlagen"
824
+ "status": {
825
+ "agree": "Stimmt überein",
826
+ "conflict": "Konflikt",
827
+ "heuristicOnly": "Nur Heuristik",
828
+ "locked": "Gesperrt",
829
+ "new": "Neu",
830
+ "rejects": "Lehnt Heuristik ab"
655
831
  },
656
832
  "toast": {
657
833
  "applied": "{n} Vorschläge übernommen",
@@ -659,629 +835,1096 @@
659
835
  "applyFailed": "Vorschläge konnten nicht übernommen werden",
660
836
  "undoFailed": "Diese Änderung konnte nicht rückgängig gemacht werden"
661
837
  },
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": {
838
+ "value": {
839
+ "absent": "Keiner",
840
+ "dash": "—",
841
+ "description": "Beschreibung",
842
+ "display": "Anzeige",
843
+ "enumCategory": "Kategorie",
844
+ "enumWorkflow": "Workflow",
845
+ "guidance": "Hinweis für leeren Zustand",
846
+ "headline": "Überschrift für leeren Zustand",
847
+ "key": "Schlüssel",
678
848
  "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"
849
+ "none": "Kein Wert",
850
+ "notPii": "Keine PII",
851
+ "rank": "Rang {n}",
852
+ "span": "Breite {n}",
853
+ "subtitle": "Seitenuntertitel",
854
+ "tableCount": "{n} Tabellen",
855
+ "widgetCount": "{n} Widgets"
688
856
  }
689
857
  }
690
858
  },
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
859
  "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.",
860
+ "move": {
861
+ "copying": "Adminiums Tabellen werden verschoben ",
862
+ "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.",
863
+ "failed": "Adminiums Tabellen konnten nicht verschoben werden — erneut versuchen.",
864
+ "restarting": "Neustart …",
865
+ "restartingBody": "Die Kopie ist fertig. Adminium startet auf der neuen Datenbank neu — diese Seite fährt in wenigen Sekunden von selbst fort.",
866
+ "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.",
867
+ "title": "Adminiums Tabellen werden verschoben"
868
+ },
715
869
  "sameDb": {
716
- "title": "Gleiche Datenbank",
717
870
  "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ütztAdminium schreibt nie in diese Datenbank. Wählen Sie für Adminiums eigene Tabellen eine separate Datenbank.",
871
+ "disabledFile": "Eine Schemadatei hat keine Live-Datenbank wählen Sie für Adminiums eigene Tabellen eine separate Datenbank.",
719
872
  "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."
873
+ "disabledReadOnly": "Ihre Rolle ist schreibgeschützt — Adminium schreibt nie in diese Datenbank. Wählen Sie für Adminiums eigene Tabellen eine separate Datenbank.",
874
+ "title": "Gleiche Datenbank"
721
875
  },
722
876
  "separate": {
723
- "title": "Separate Datenbank",
724
877
  "description": "Adminium hält seine Tabellen in einer anderen Datenbank. Ihre Quelle bleibt unangetastet — erforderlich für schreibgeschützte Quellen.",
725
878
  "dsn": "Verbindungszeichenfolge der Meta-Datenbank",
879
+ "errorTitle": "Meta-Store nicht kompatibel",
726
880
  "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
881
  "insufficient": "Diese Rolle kann den Meta-Store nicht aufnehmen — Adminium benötigt dort Schreib- und CREATE-TABLE-Rechte.",
730
- "errorTitle": "Meta-Store nicht kompatibel"
882
+ "ok": "Kompatibel Schreiben ✓ · DDL ✓",
883
+ "test": "Verbindung testen",
884
+ "title": "Separate Datenbank"
731
885
  },
886
+ "subtitle": "Seiten, Rollen, Audit-Log und Einstellungen liegen in Tabellen mit adminium_-Präfix — nie mit Ihren Daten vermischt.",
732
887
  "testFailed": "Verbindung fehlgeschlagen.",
888
+ "title": "Wo soll Adminium seine eigenen Tabellen ablegen?",
733
889
  "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."
890
+ "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).",
891
+ "title": "Über diese Installation"
745
892
  },
746
893
  "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."
894
+ "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.",
895
+ "title": "Dies verschiebt Adminiums Tabellen"
749
896
  }
750
897
  },
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."
898
+ "pages": {
899
+ "action": {
900
+ "delete": "Seite löschen",
901
+ "duplicate": "Duplizieren",
902
+ "edit": "Seite bearbeiten",
903
+ "hide": "In der Seitenleiste ausblenden",
904
+ "show": "In der Seitenleiste anzeigen"
905
+ },
906
+ "attachments": {
907
+ "accept": "Zulässige Dateitypen",
908
+ "acceptHint": "Keine Auswahl akzeptiert alles, was dieser Workspace erlaubt. Eine Auswahl hier kann diese Liste nur einschränken, nie erweitern.",
909
+ "column": {
910
+ "adoptHint": "Diese Tabelle hat die Spalte bereits, es wird also nichts angelegt — sie wird so verwendet, wie sie ist.",
911
+ "bound": "Dateien liegen in der Spalte {column} dieser Tabelle.",
912
+ "boundHint": "Wenn Sie Anhänge später abschalten, wird nur diese Seite gelöst. Die Spalte und ihre Dateien bleiben unangetastet.",
913
+ "confirm": "Ausführen",
914
+ "create": "Spalte anlegen",
915
+ "createHint": "Adminium fügt dieser Tabelle eine Textspalte hinzu. Sie sehen die genaue Anweisung, bevor etwas läuft.",
916
+ "createdHint": "Die Spalte existiert jetzt. Speichern Sie diese Seite, um die Verknüpfung abzuschließen.",
917
+ "failed": "Das hat nicht funktioniert",
918
+ "invalid": "Ein Spaltenname muss mit einem Buchstaben beginnen und darf nur Kleinbuchstaben, Ziffern und Unterstriche enthalten.",
919
+ "label": "Spalte, die die Dateien enthält",
920
+ "required": "Geben Sie der Spalte einen Namen.",
921
+ "tooLong": "Dieser Name ist zu lang für eine Spalte.",
922
+ "use": "Diese Spalte verwenden",
923
+ "wrongType": "Diese Tabelle hat bereits eine Spalte mit diesem Namen, und sie kann keine Dateireferenz aufnehmen. Wählen Sie einen anderen Namen."
924
+ },
925
+ "destination": "Wohin die Dateien gehen",
926
+ "destinationDefault": "Das Standard-Speicherziel",
927
+ "destinationHint": "Belassen Sie dies beim Standard, es sei denn, die Dateien dieser Tabelle gehören woandershin.",
928
+ "destinationIsDefault": "{name} (Standard)",
929
+ "destinationLocal": "Die Festplatte dieses Servers",
930
+ "enable": "Anhänge an den Datensätzen dieser Tabelle erlauben",
931
+ "enableHint": "Dateien werden auf Adminiums Seite verknüpft, diese Tabelle braucht also keine neue Spalte — es funktioniert auf einer schreibgeschützten Verbindung und auf einer Tabelle, die Sie lieber nicht ändern möchten.",
932
+ "enableHintColumn": "Dateien liegen in einer Spalte dieser Tabelle und erscheinen deshalb sowohl in den Dialogen „Neu“ und „Bearbeiten“ als auch bei jedem Datensatz.",
933
+ "enableHintSidecar": "Dateien werden stattdessen auf Adminium-Seite verknüpft. Sie erscheinen auf der Seite jedes Datensatzes, nicht im Dialog „Neu“.",
934
+ "maxBytes": "Größte Datei (MB)",
935
+ "maxBytesHint": "Leer lassen, um dem Limit des Workspace zu folgen. Eine Zahl hier kann es nur senken.",
936
+ "maxCount": "Höchstzahl an Dateien pro Datensatz",
937
+ "maxCountHint": "Leer lassen, um so viele zu akzeptieren, wie ein Datensatz braucht.",
938
+ "sidecar": {
939
+ "noPrivilege": "Die Rolle dieser Verbindung kann keine Tabellen ändern, deshalb kann Adminium ihr keine Spalte hinzufügen.",
940
+ "readOnlyIntent": "Diese Verbindung ist für reine Auswertung eingerichtet, deshalb kann Adminium ihr keine Spalte hinzufügen.",
941
+ "readOnlyRole": "Diese Verbindung meldet sich mit einer schreibgeschützten Rolle an, deshalb kann Adminium ihr keine Spalte hinzufügen.",
942
+ "schemaFile": "Diese Verbindung wurde aus einer Schemadatei erstellt, deshalb kann Adminium ihr keine Spalte hinzufügen."
943
+ },
944
+ "type": {
945
+ "office": "Office-Dokumente",
946
+ "text": "Reiner Text"
947
+ }
762
948
  },
763
- "crud": {
764
- "title": "CRUD-Tabellen",
765
- "description": "Eine Bearbeitungsseite pro Tabelle plus Suche und Import/Export — ein minimales Zuhause, keine Dashboards."
949
+ "columns": {
950
+ "addFromLinked": "Aus verknüpften Tabellen",
951
+ "addFromTable": "Aus {table}",
952
+ "addLinkedFrom": "Tabellen, die hierher verweisen",
953
+ "addLinkedFromHelp": "Zählen Sie die Zeilen, die auf jeden Datensatz verweisen, oder addieren Sie eine ihrer Zahlen.",
954
+ "addLinkedHelp": "Zeigt einen Wert aus der Tabelle, auf die eine Verknüpfungsspalte verweist.",
955
+ "addNoMatches": "Keine Spalten passen zu „{query}“.",
956
+ "addOpen": "Spalte hinzufügen",
957
+ "addSearch": "Spalten durchsuchen…",
958
+ "addTitle": "Spalte hinzufügen",
959
+ "addVia": "über {column}",
960
+ "avatar": "Avatar",
961
+ "avatarToggle": "Monogramm neben {name} anzeigen",
962
+ "countBadge": "Anzahl",
963
+ "dragHandle": "{name} verschieben",
964
+ "empty": "Noch keine Spalten — fügen Sie unten welche hinzu.",
965
+ "file": {
966
+ "acceptHelp": "Lassen Sie alle Typen aus, um alles zu akzeptieren, was dieser Workspace akzeptiert. Eine Auswahl kann diese Liste nur einschränken — eine Spalte akzeptiert nie einen Typ, den der Workspace ablehnt.",
967
+ "acceptLabel": "Zulässige Typen",
968
+ "badge": "Datei",
969
+ "destinationDefault": "Das Standard-Speicherziel",
970
+ "destinationHelp": "Wo die über diese Spalte hochgeladenen Bytes abgelegt werden.",
971
+ "destinationLabel": "Speicherziel",
972
+ "inlineHelp": "Nur Bilder werden in der Zelle dargestellt. Alles andere bleibt ein Chip mit Name und Größe, ganz gleich, wie dies eingestellt ist.",
973
+ "inlineLabel": "In der Tabelle anzeigen",
974
+ "maxCountHelp": "Leer lassen, um so viele zu akzeptieren, wie ein Datensatz braucht.",
975
+ "maxCountLabel": "Höchstzahl Dateien pro Datensatz",
976
+ "maxCountToggle": "Höchstzahl Dateien für {name}",
977
+ "maxHelp": "Leer lassen, um das Limit des Workspace zu verwenden. Eine Spalte kann nur weniger verlangen.",
978
+ "maxLabel": "Größte Datei (MB)",
979
+ "maxToggle": "Größte von {name} akzeptierte Datei, in MB",
980
+ "multipleHelp": "Die Spalte speichert eine Liste von Dateien statt einer einzelnen. Vorhandene Einzelwerte funktionieren weiter — sie werden als Liste mit einem Eintrag gelesen.",
981
+ "multipleLabel": "Mehr als eine Datei aufnehmen",
982
+ "ref": {
983
+ "id": "Adminiums Datei-ID",
984
+ "key": "Der Schlüssel im Speicherziel",
985
+ "url": "Ein Link zur Datei"
986
+ },
987
+ "refHelp": "Was in diese Spalte geschrieben wird, wenn eine Datei hochgeladen wird. Bereits gespeicherte Werte funktionieren weiter — dies ändert nur den nächsten.",
988
+ "refLabel": "Gespeicherter Wert",
989
+ "refTooNarrow": "Diese Spalte ist zu kurz für diesen Wert. Wählen Sie einen, den sie aufnehmen kann, oder erweitern Sie die Spalte in der Datenbank.",
990
+ "refWidth": "{shape} — braucht {needs} Zeichen, diese Spalte fasst {holds}",
991
+ "switch": "Datei",
992
+ "switchToggle": "{name} speichert eine Datei",
993
+ "type": {
994
+ "csv": "CSV",
995
+ "gif": "GIF",
996
+ "heic": "HEIC",
997
+ "jpeg": "JPEG",
998
+ "json": "JSON",
999
+ "markdown": "Markdown",
1000
+ "mp3": "MP3-Audio",
1001
+ "mp4": "MP4-Video",
1002
+ "office": "Office-Dokumente",
1003
+ "ogg": "Ogg",
1004
+ "pdf": "PDF",
1005
+ "png": "PNG",
1006
+ "svg": "SVG",
1007
+ "text": "Reiner Text",
1008
+ "wav": "WAV-Audio",
1009
+ "webm": "WebM",
1010
+ "webp": "WebP",
1011
+ "zip": "ZIP"
1012
+ }
1013
+ },
1014
+ "fold": {
1015
+ "avg": "Durchschnitt",
1016
+ "max": "Max",
1017
+ "min": "Min",
1018
+ "sum": "Summe"
1019
+ },
1020
+ "foldAdd": "Hinzufügen",
1021
+ "foldLabel": "Aggregat",
1022
+ "followColumn": "{name} folgen",
1023
+ "header": "Überschrift für {name}",
1024
+ "help": "Spalten per Ziehen umsortieren, ihre Überschriften umbenennen und auswählen, welche in der Tabelle erscheinen.",
1025
+ "lookupBack": "Zurück",
1026
+ "lookupBadge": "Verknüpft",
1027
+ "lookupBroken": "Diese Verknüpfung lässt sich nicht mehr auflösen",
1028
+ "lookupBrokenBody": "Das Schema hat sich währenddessen geändert. Beginnen Sie die Verknüpfung erneut.",
1029
+ "lookupBrowse": "Wählen Sie, was aus {table} angezeigt wird",
1030
+ "mask": "Maskieren",
1031
+ "maskHelp": "Maskieren verbirgt einen Wert hinter einer Anzeigen-Schaltfläche für Lesende, die ihn sehen dürfen. Ob die Daten die Datenbank überhaupt verlassen, wird an der Verbindung festgelegt, nicht hier.",
1032
+ "maskToggle": "{name} hinter einer Anzeigen-Schaltfläche verbergen",
1033
+ "masked": "Maskiert",
1034
+ "none": {
1035
+ "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.",
1036
+ "title": "Diese Seite hat noch keine Spalten"
1037
+ },
1038
+ "pk": "Schlüssel",
1039
+ "remove": "{name} entfernen",
1040
+ "schemaUnavailable": "Die Datenbankspalten konnten nicht geladen werden, daher lassen sich hier keine Spalten hinzufügen.",
1041
+ "shown": "Sichtbar",
1042
+ "toggle": "{name} in der Tabelle anzeigen"
766
1043
  },
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"
1044
+ "create": {
1045
+ "failed": "Die Seite konnte nicht erstellt werden",
1046
+ "submit": "Seite erstellen",
1047
+ "subtitle": "Legen Sie fest, was diese Seite zeigt und wie sie aussieht. Die Vorschau folgt Ihrer Auswahl.",
1048
+ "title": "Neue Seite"
783
1049
  },
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."
1050
+ "createButton": "Neue Seite",
1051
+ "delete": {
1052
+ "body": "Das lässt sich nicht rückgängig machen. Gespeicherte Ansichten und persönliche Layouts dieser Seite werden für alle gelöscht.",
1053
+ "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.",
1054
+ "confirm": "Seite löschen",
1055
+ "prompt": "Geben Sie zur Bestätigung {slug} ein",
1056
+ "title": "Diese Seite löschen?"
814
1057
  },
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"
1058
+ "derived": {
1059
+ "add": "Spalte hinzufügen",
1060
+ "atLeast": "ist mindestens",
1061
+ "cancel": "Abbrechen",
1062
+ "emptyBody": "Fassen Sie zuerst eine verknüpfte Tabelle in der Spalten-Karte zusammen — die Regeln hier bauen auf diesen Zahlen auf.",
1063
+ "emptyTitle": "Noch keine berechneten Zahlen",
1064
+ "fieldBadge": "Berechnet",
1065
+ "foldBadge": "Zusammenfassung",
1066
+ "help": "Berechnen Sie Zahlen aus den Zusammenfassungen oben und den eigenen Spalten dieses Datensatzes. Sie werden beim Laden der Seite berechnet und lassen sich nicht sortieren.",
1067
+ "label": "Spaltenüberschrift",
1068
+ "minus": "minus",
1069
+ "numberHelp": "Zahlen sind einfache Dezimalzahlen — 500 oder 12.50, nie 1,000 oder 5e3.",
1070
+ "operandA": "Zahl",
1071
+ "operandB": "Zahl",
1072
+ "operator": "Operator",
1073
+ "otherwise": "sonst",
1074
+ "percentOf": "Prozent aus diesem Datensatz",
1075
+ "plus": "plus",
1076
+ "preset": {
1077
+ "combine": "Zwei Zahlen addieren oder subtrahieren",
1078
+ "percent": "Prozentsatz einer Zahl",
1079
+ "rule": "Regel mit einem Schwellenwert"
1080
+ },
1081
+ "previewHelp": "Beispielwerte, berechnet mit demselben Code, den die Seite verwendet.",
1082
+ "previewTitle": "Vorschau",
1083
+ "remove": "{name} entfernen",
1084
+ "thenShow": "dann zeigen"
823
1085
  },
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."
1086
+ "duplicate": {
1087
+ "failed": "Die Seite konnte nicht dupliziert werden",
1088
+ "submit": "Duplizieren",
1089
+ "title": "Seite duplizieren"
843
1090
  },
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"
1091
+ "editor": {
1092
+ "appearance": "Darstellung",
1093
+ "attachments": "Anhänge",
1094
+ "columns": "Spalten",
1095
+ "contentInvalid": "Die Konfiguration dieser Seite ist nicht lesbar",
1096
+ "contentInvalidBody": "Sie stammt aus einer neueren Version oder ist fehlerhaft. Erzeugen Sie die Seite neu oder löschen Sie sie.",
1097
+ "contentUnavailable": "Seiteninhalt konnte nicht geladen werden",
1098
+ "contentUnavailableBody": "Die Angaben oben lassen sich trotzdem speichern.",
1099
+ "data": "Daten",
1100
+ "derived": "Abgeleitete Zahlen",
1101
+ "details": "Details",
1102
+ "generated": {
1103
+ "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.",
1104
+ "title": "Diese Seite wurde aus Ihrem Schema erzeugt"
1105
+ },
1106
+ "itemsPending": "Speichern Sie zuerst die Änderung oben – der Seiteninhalt wird aus der neuen Vorlage und Tabelle neu aufgebaut.",
1107
+ "missing": "Diese Seite existiert nicht mehr",
1108
+ "missingBody": "Sie wurde möglicherweise gelöscht oder von einem Generierungslauf entfernt.",
1109
+ "notBindable": "Diese Vorlage ist nicht an eine einzelne Tabelle gebunden",
1110
+ "notBindableBody": "Ihr Inhalt wird stattdessen Widget für Widget aufgebaut. Öffnen Sie die Seite und fügen Sie sie über „Bearbeiten“ hinzu.",
1111
+ "openPage": "Seite öffnen",
1112
+ "recompose": "Diese Seite wird neu aufgebaut",
1113
+ "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.",
1114
+ "save": "Änderungen speichern",
1115
+ "saveFailed": "Änderungen konnten nicht gespeichert werden",
1116
+ "schemaFailed": "Tabellen konnten nicht aufgelistet werden",
1117
+ "schemaFailedBody": "Diese Verbindung wurde möglicherweise noch nicht analysiert. Starten Sie die Introspektion unter Studio Datenverbindungen.",
1118
+ "title": "Seite bearbeiten"
872
1119
  },
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
1120
  "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."
1121
+ "body": "Verbinden Sie eine Datenbank, um Seiten automatisch zu erzeugen, oder legen Sie eine von Hand an.",
1122
+ "title": "Noch keine Seiten"
881
1123
  },
882
- "tabs": {
883
- "details": "Details",
884
- "relations": "Beziehungen"
1124
+ "field": {
1125
+ "connection": "Datenquelle",
1126
+ "connectionNone": "Keine",
1127
+ "group": "Gruppe der Seitenleiste",
1128
+ "groupHint": "In welchem Abschnitt der Seitenleiste sie erscheint.",
1129
+ "icon": "Symbol",
1130
+ "iconHint": "Wird neben dem Seitennamen in der Seitenleiste angezeigt.",
1131
+ "iconPick": "Seitensymbol auswählen",
1132
+ "newRowLabel": "Schaltfläche zum Hinzufügen",
1133
+ "newRowLabelHint": "Was auf der Schaltfläche steht, die einen Datensatz hinzufügt. Leer lassen für die Standardbeschriftung, die übersetzt wird.",
1134
+ "padding": "Seitenabstand",
1135
+ "slug": "Seitenadresse",
1136
+ "slugHint": "Kleinbuchstaben, Ziffern und Bindestriche. Nur der letzte Teil – den Rest der Adresse ergänzen wir.",
1137
+ "slugTaken": "Diese Adresse wird bereits von einer anderen Seite verwendet.",
1138
+ "slugWarning": "Eine geänderte Adresse macht bestehende Links und Lesezeichen zu dieser Seite ungültig.",
1139
+ "table": "Tabelle",
1140
+ "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.",
1141
+ "tableNeedsConnection": "Wählen Sie zuerst eine Datenquelle.",
1142
+ "tableNone": "Nicht verknüpft",
1143
+ "template": "Vorlage",
1144
+ "templateHint": "Bestimmt, was die Seite enthalten kann. Später änderbar.",
1145
+ "title": "Titel",
1146
+ "titleHint": "Wird in der Seitenleiste und in der Kopfzeile der Seite angezeigt.",
1147
+ "visible": "In der Seitenleiste anzeigen",
1148
+ "visibleHint": "Eine ausgeblendete Seite bleibt über ihre URL erreichbar, wenn man den Link kennt.",
1149
+ "width": "Inhaltsbreite",
1150
+ "widthHint": "Wie breit die Inhaltsspalte der Seite auf einem großen Bildschirm werden darf."
885
1151
  },
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"
1152
+ "icon": {
1153
+ "noMatches": "Keine Symbole passen zu dieser Suche.",
1154
+ "none": "Symbol auswählen",
1155
+ "search": "Symbole suchen"
895
1156
  },
896
- "badge": {
897
- "pk": "PK",
898
- "fk": "FK",
899
- "unique": "UNIQUE",
900
- "pii": "PII",
901
- "masked": "Maskiert"
1157
+ "list": {
1158
+ "count": "{count, plural, one {# Seite} other {# Seiten}}",
1159
+ "title": "Seiten"
1160
+ },
1161
+ "loadFailed": {
1162
+ "body": "Für die Seitenverwaltung wird die Berechtigung „Seiten verwalten“ benötigt. Bitten Sie eine Administratorin oder einen Administrator, sie einer Ihrer Rollen zuzuweisen.",
1163
+ "title": "Seiten konnten nicht geladen werden"
1164
+ },
1165
+ "origin": {
1166
+ "generated": "Erzeugt",
1167
+ "llm": "Assistent",
1168
+ "manifest": "Add-on",
1169
+ "system": "System",
1170
+ "user": "Eigene"
1171
+ },
1172
+ "padding": {
1173
+ "custom": "Benutzerdefiniert …",
1174
+ "default": "Standard dieser Vorlage",
1175
+ "none": "Kein Abstand",
1176
+ "standard": "Standard (28 × 24)",
1177
+ "x": "Seiten (px)",
1178
+ "y": "Oben und unten (px)"
1179
+ },
1180
+ "preview": {
1181
+ "note": "Eine Darstellung des Layouts, nicht Ihrer Daten. Die echte Seite füllt sich nach dem Speichern.",
1182
+ "untitled": "Unbenannte Seite"
1183
+ },
1184
+ "row": {
1185
+ "menu": "Aktionen für {title}"
1186
+ },
1187
+ "sidebar": {
1188
+ "discard": "Verwerfen",
1189
+ "emptyGroup": "Keine Seiten in dieser Gruppe.",
1190
+ "help": "Seiten innerhalb einer Gruppe umsortieren oder in eine andere Gruppe verschieben. Die Änderungen gelten für alle Benutzerinnen und Benutzer.",
1191
+ "moveDown": "{title} nach unten verschieben",
1192
+ "moveTo": "{title} in eine Gruppe verschieben",
1193
+ "moveUp": "{title} nach oben verschieben",
1194
+ "save": "Reihenfolge speichern",
1195
+ "saveFailed": "Die neue Reihenfolge konnte nicht gespeichert werden",
1196
+ "ungrouped": {
1197
+ "body": "Diese Seiten funktionieren unter ihrer URL, erscheinen aber nirgends in der Seitenleiste. Öffnen Sie jede einzeln und wählen Sie eine Gruppe.",
1198
+ "title": "Einige Seiten gehören zu keiner Gruppe der Seitenleiste"
1199
+ }
902
1200
  },
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."
1201
+ "status": {
1202
+ "hidden": "Ausgeblendet",
1203
+ "live": "Aktiv"
1204
+ },
1205
+ "subtitle": "Seiten Ihrer App hinzufügen, bearbeiten und ordnen – samt ihrer Reihenfolge in der Seitenleiste.",
1206
+ "tab": {
1207
+ "pages": "Alle Seiten",
1208
+ "sidebar": "Reihenfolge der Seitenleiste"
1209
+ },
1210
+ "title": "Seiten",
1211
+ "width": {
1212
+ "content": "Inhalt (900 px)",
1213
+ "dash": "Dashboard (1320 px)",
1214
+ "default": "Standard für diese Vorlage",
1215
+ "full": "Volle Breite (kein Limit)",
1216
+ "narrow": "Schmal (720 px)",
1217
+ "page": "Seite (1080 px)",
1218
+ "wide": "Breit (1800 px)"
1219
+ }
905
1220
  },
906
1221
  "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",
1222
+ "cancel": "Abbrechen",
1223
+ "close": "Schließen",
1224
+ "error": "Etwas ist schiefgelaufen",
1225
+ "keys": {
1226
+ "appHint": "Die Kunden-Oberfläche der App liefert diesen Schlüssel dann selbst aus — eine Rotation braucht keinen Rebuild.",
1227
+ "appLabel": "An eine gehostete App-Oberfläche binden (optional)",
1228
+ "appNone": "Nicht gebunden",
1229
+ "create": "Schlüssel erstellen",
1230
+ "emptyBody": "Erstellen Sie zuerst einen Scope und dann einen Schlüssel dafür.",
1231
+ "emptyTitle": "Noch keine Schlüssel",
1232
+ "formLabel": "Einen Schlüssel erstellen",
920
1233
  "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."
1234
+ "reveal": "Schlüssel anzeigen",
1235
+ "revoke": "Widerrufen",
1236
+ "rotate": "Rotieren",
1237
+ "scopeIsAuthBody": "Ein Schlüssel erreicht genau das, was sein Scope auflistet, und sonst nichts. Er nutzt weder Rollen noch Tabellenberechtigungen und kann über die übrige API nichts lesen.",
1238
+ "scopeIsAuthTitle": "Der Scope ist die einzige Berechtigung",
1239
+ "scopeLabel": "Scope",
1240
+ "scopePlaceholder": "Scope wählen",
1241
+ "subtitle": "Diese landen im JavaScript Ihrer Seite, jeder kann sie also lesen. Das ist so gewollt — ein Schlüssel kann immer nur das, was sein Scope erlaubt.",
1242
+ "title": "Schlüssel"
934
1243
  },
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."
1244
+ "notRegistered": {
1245
+ "body": "Setzen Sie ADMINIUM_PUBLIC_API_ORIGINS auf genau die Origins, die diese API aufrufen dürfen, und starten Sie neu. Bis dahin werden diese Routen überhaupt nicht ausgeliefert.",
1246
+ "title": "Auf diesem Server nicht aktiviert"
938
1247
  },
939
1248
  "origins": {
940
- "label": "Origins allowed to call it"
1249
+ "label": "Origins, die sie aufrufen dürfen"
941
1250
  },
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",
1251
+ "scopes": {
1252
+ "connectionLabel": "Verbindungs-ID",
1253
+ "create": "Scope erstellen",
1254
+ "delete": "Löschen",
1255
+ "deleteBody": "Jede Seite, die einen an diesen Scope gebundenen Schlüssel verwendet, lädt keine Daten mehr. Schlüssel werden nicht gelöscht — widerrufen Sie sie zuerst, falls Sie das gemeint haben.",
1256
+ "deleteConfirm": "Scope löschen",
1257
+ "deletePrompt": "Geben Sie den Scope-Namen ein, um zu bestätigen",
1258
+ "deleteTitle": "Diesen Scope löschen",
1259
+ "documentHint": "Wird beim Speichern gegen Ihr Schema kompiliert. Jede Spalte, die eine aufrufende Seite erreichen kann, steht hier und sonst nirgends. Ein Standardwert kann '{'\"$generate\": \"uuid\"'}' oder '{'\"$generate\": \"now\"'}' sein — der Server füllt diese beim Anlegen aus, damit Besucher eine Zeile hinzufügen können, ohne deren id zu wählen.",
1260
+ "documentLabel": "Scope-Dokument",
1261
+ "emptyBody": "Erstellen Sie unten einen. Er wird vor dem Speichern gegen Ihr Live-Schema geprüft.",
1262
+ "emptyTitle": "Noch keine Scopes",
1263
+ "formLabel": "Einen Scope erstellen",
1264
+ "issuesTitle": "Dieser Scope ließ sich nicht kompilieren",
1265
+ "keyCount": "{count, plural, =0 {keine Schlüssel} one {# Schlüssel} other {# Schlüssel}}",
950
1266
  "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"
1267
+ "subtitle": "Ein Scope ist alles, was ein Schlüssel erreichen darf — die Tabellen, die genauen Spalten und ein Filter, den die aufrufende Seite enger fassen, aber nie entfernen kann.",
1268
+ "title": "Scopes"
960
1269
  },
961
1270
  "status": {
962
1271
  "heading": "Status"
1272
+ },
1273
+ "subtitle": "Lassen Sie Ihre eigenen kunden- oder mitarbeiterseitigen Seiten diese Datenbank über einen von Ihnen definierten Scope lesen.",
1274
+ "title": "Öffentliche API",
1275
+ "toggle": {
1276
+ "hint": "Wenn Sie dies abschalten, endet jede öffentliche Anfrage sofort. Es wird nichts gelöscht — Schlüssel, Scopes und Daten bleiben alle erhalten.",
1277
+ "label": "Öffentliche API ausliefern"
963
1278
  }
964
1279
  },
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"
1280
+ "remap": {
1281
+ "badge": {
1282
+ "fk": "FK",
1283
+ "masked": "Maskiert",
1284
+ "pii": "PII",
1285
+ "pk": "PK",
1286
+ "unique": "UNIQUE"
985
1287
  },
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"
1288
+ "column": {
1289
+ "currency": "Währung",
1290
+ "currencyHelper": "ISO-4217-Code für die Formatierung von Geldbeträgen.",
1291
+ "enum": "Enum-Semantik",
1292
+ "enumCategory": "Kategorie",
1293
+ "enumHelper": "Workflow-Enums steuern Status-Pills und Board-Spalten; Farbtöne ordnen Werte der semantischen Farbtonskala zu.",
1294
+ "enumKind": "Enum-Art",
1295
+ "enumLabelFor": "Bezeichnung für {value}",
1296
+ "enumToneAuto": "automatisch",
1297
+ "enumToneFor": "Farbton für {value}",
1298
+ "enumWorkflow": "Workflow",
1299
+ "labelHelper": "Abgeleitet: {name}",
1300
+ "labelOverride": "Anzeigebezeichnung",
1301
+ "logicalType": "Logischer Typ",
1302
+ "logicalTypeHelper": "Abgeleitet: {type} (aus {dbType}) — vom Adapter zugeordnet; in v1 nicht überschreibbar.",
1303
+ "nullable": "NULL erlaubt",
1304
+ "pii": "Standardmäßig maskieren",
1305
+ "piiHelper": "Maskierte Werte werden geschwärzt dargestellt; das Aufheben der Maskierung erfordert die Berechtigung data.unmask_pii und wird im Audit-Log protokolliert.",
1306
+ "semantic": "Semantischer Typ",
1307
+ "semanticHelper": "Klassifizierer: {tag} · {confidence}% Konfidenz · Quelle: {source}",
1308
+ "semanticInferred": "abgeleitet: {tag}",
1309
+ "unclassified": "Noch nicht klassifiziert."
1000
1310
  },
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:"
1311
+ "diff": {
1312
+ "count": "{count} Änderungen",
1313
+ "one": "1 Änderung",
1314
+ "regenerate": "Seiten neu generieren",
1315
+ "revertAll": "Alle verwerfen",
1316
+ "revertOne": "{change} verwerfen",
1317
+ "save": "Überschreibungen speichern",
1318
+ "saved": "Überschreibungen gespeichert."
1023
1319
  },
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"
1320
+ "empty": {
1321
+ "description": "Wählen Sie etwas im Schemabaum aus, um Bezeichnung, Typ, Beziehungen oder Maskierung neu zuzuordnen.",
1322
+ "title": "Wählen Sie eine Tabelle oder Spalte"
1032
1323
  },
1033
- "connect": {
1034
- "apiKey": "API-Schlüssel",
1035
- "submit": "Verbinden"
1324
+ "inspector": "Inspektor",
1325
+ "loadFailed": "Das Schema für diese Verbindung konnte nicht geladen werden.",
1326
+ "mode": {
1327
+ "design": "Entwurf",
1328
+ "diagram": "Diagramm",
1329
+ "remap": "Bezeichnungen und Beziehungen"
1036
1330
  },
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"
1331
+ "modeLabel": "Bearbeitungsmodus",
1332
+ "noDesign": {
1333
+ "noPrivilege": "Die Rolle dieser Verbindung kann keine Tabellen anlegen oder ändern. Erteilen Sie ihr Schemarechte oder verbinden Sie eine Rolle, die sie hat.",
1334
+ "readOnlyIntent": "Diese Verbindung wurde für reine Lese-Analysen eingerichtet. Ändern Sie ihre Absicht in den Einstellungen, um ihr Schema zu bearbeiten.",
1335
+ "readOnlyRole": "Diese Verbindung meldet sich mit einer Nur-Lese-Rolle an, daher kann Adminium ihr Schema nicht ändern.",
1336
+ "schemaFile": "Diese Verbindung wurde aus einer Schemadatei erstellt, es gibt also keine Datenbank zu ändern. Bezeichnungen und Beziehungen funktionieren weiterhin."
1054
1337
  },
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"
1338
+ "relations": {
1339
+ "accept": "Übernehmen",
1340
+ "accepted": "Übernommen",
1341
+ "add": "Virtuelle Beziehung hinzufügen",
1342
+ "addButton": "Beziehung hinzufügen",
1343
+ "cardinality": "Kardinalität",
1344
+ "confidence": "abgeleitet · {pct}%",
1345
+ "declared": "Deklarierte Fremdschlüssel",
1346
+ "fromColumn": "Quellspalte",
1347
+ "fromPlaceholder": "customer_id",
1348
+ "inferred": "Abgeleitete Beziehungen",
1349
+ "noColumns": "Keine passende Spalte",
1350
+ "noTables": "Keine passende Tabelle",
1351
+ "noneDeclared": "Keine deklarierten Fremdschlüssel berühren diese Tabelle.",
1352
+ "noneInferred": "Für diese Tabelle wurde nichts abgeleitet.",
1353
+ "overrideBadge": "Überschreibung",
1354
+ "overrides": "Beziehungs-Überschreibungen (angewendet)",
1355
+ "suppress": "Unterdrücken",
1356
+ "suppressed": "Unterdrückt",
1357
+ "toColumn": "Zielspalte",
1358
+ "toTable": "Zieltabelle"
1079
1359
  },
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."
1360
+ "saveFailed": "Speichern fehlgeschlagen: {message}",
1361
+ "subtitle": "{tables} Tabellen · {applied} Überschreibungen angewendet",
1362
+ "table": {
1363
+ "hierarchy": "Hierarchie",
1364
+ "icon": "Symbol",
1365
+ "iconPicker": "Tabellensymbol",
1366
+ "include": "In die generierte App einbeziehen",
1367
+ "includeHelper": "Ausgeschlossene Tabellen erhalten keine Seiten und verschwinden aus der Navigation.",
1368
+ "kind": "Art",
1369
+ "labelHelper": "Abgeleitet: {name}",
1370
+ "labelOverride": "Anzeigebezeichnung",
1371
+ "navGroup": "Navigationsgruppe",
1372
+ "navGroupHelper": "Die Platzierung in der Navigation entscheidet der Generator — eine table.navGroup-Überschreibung ist nicht Teil des v1-Vokabulars.",
1373
+ "polymorphic": "Polymorphe Paare",
1374
+ "role": "Rolle",
1375
+ "rows": "Geschätzte Zeilenzahl",
1376
+ "selfFk": "Selbstreferenz über {column}",
1377
+ "shape": "Tabellenform (klassifiziert)",
1378
+ "shapeHelper": "Die Klassifikation wird bei jeder Introspektion neu berechnet; Überschreibungen liegen darüber und überstehen die Neugenerierung.",
1379
+ "system": "System",
1380
+ "unclassified": "Nicht klassifiziert"
1085
1381
  },
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."
1382
+ "tabs": {
1383
+ "details": "Details",
1384
+ "relations": "Beziehungen"
1089
1385
  },
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."
1386
+ "title": "Schema",
1387
+ "toast": {
1388
+ "regenerateFailed": "Neugenerierung fehlgeschlagen",
1389
+ "regenerated": "{created} erstellt · {updated} aktualisiert · {unchanged} unverändert",
1390
+ "regeneratedDetail": "Von Hand bearbeitete Seiten bleiben erhalten — nur Seiten mit unangetastetem generated_hash wurden an Ort und Stelle neu generiert.",
1391
+ "saved": "Schema-Überschreibungen gespeichert",
1392
+ "savedDetail": "Das angewendete Schema unten spiegelt Ihre Änderungen wider."
1108
1393
  },
1109
- "tab": {
1110
- "pages": "Alle Seiten",
1111
- "sidebar": "Reihenfolge der Seitenleiste"
1394
+ "tree": {
1395
+ "collapse": "Tabelle einklappen",
1396
+ "excluded": "Ausgeschlossen",
1397
+ "expand": "Tabelle ausklappen",
1398
+ "label": "Schema",
1399
+ "noMatches": "Keine Tabellen entsprechen Ihrer Suche.",
1400
+ "search": "Tabellen und Spalten durchsuchen",
1401
+ "searchPlaceholder": "Tabellen durchsuchen…",
1402
+ "unsaved": "Ungespeicherte Änderung"
1112
1403
  },
1113
- "list": {
1114
- "title": "Seiten",
1115
- "count": "{count, plural, one {# Seite} other {# Seiten}}"
1404
+ "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.",
1405
+ "unavailableTitle": "Editor zum Neuzuordnen des Schemas nicht verfügbar"
1406
+ },
1407
+ "review": {
1408
+ "unavailableBody": "Dieser Build enthält die Anreicherungs-Prüfungsansicht noch nicht (06-T14). Sie kommt mit dem Diff-und-Übernehmen-Ablauf.",
1409
+ "unavailableTitle": "Prüfungsansicht nicht verfügbar"
1410
+ },
1411
+ "settings": {
1412
+ "globalDefaultsNav": "Globale Standards",
1413
+ "title": "Einstellungen",
1414
+ "workspaceSection": "Workspace"
1415
+ },
1416
+ "settingsAi": {
1417
+ "byo": {
1418
+ "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.",
1419
+ "guarantee1": "Der Prompt enthält nur Ihr Schema und aggregierte Statistiken — standardmäßig nie Zeilendaten.",
1420
+ "guarantee2": "Keine Anmeldedaten, keine Instanz-URL, keine Kennungen sind eingebettet.",
1421
+ "guarantee3": "BYO-Läufe machen keinerlei Netzwerkaufrufe.",
1422
+ "guaranteeTitle": "Telemetriefreie Garantie",
1423
+ "heading": "Kein Schlüssel? Nutzen Sie Ihr eigenes KI-Tool",
1424
+ "headingRecommended": "Eigenes KI-Tool verwenden — kein Schlüssel nötig",
1425
+ "promptVersion": "Prompt {version}",
1426
+ "recommended": "Empfohlen",
1427
+ "schemaVersion": "Schema {version}",
1428
+ "subtitle": "Der Kopieren-Einfügen-Umlauf — nichts verlässt diesen Rechner."
1116
1429
  },
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."
1430
+ "configure": {
1431
+ "heading": "{provider} konfigurieren"
1120
1432
  },
1121
- "status": {
1122
- "live": "Aktiv",
1123
- "hidden": "Ausgeblendet"
1433
+ "field": {
1434
+ "baseUrl": "Basis-URL",
1435
+ "baseUrlHelper": "Die Endpunkt-Wurzel, die /chat/completions bereitstellt.",
1436
+ "baseUrlOptional": "Unverändert lassen, außer Ollama läuft auf einem anderen Host.",
1437
+ "key": "API-Schlüssel",
1438
+ "keyMask": "sk-…{last4}",
1439
+ "keyOptional": "Optional — manche Endpunkte brauchen keinen Schlüssel.",
1440
+ "keyReplace": "Schlüssel ersetzen",
1441
+ "keyStored": "Verschlüsselt gespeichert. Ersetzen Sie ihn, um einen anderen Schlüssel zu verwenden.",
1442
+ "keyWriteOnly": "Nur schreibend: einmal gespeichert, wird er nie wieder angezeigt.",
1443
+ "model": "Modell",
1444
+ "modelFreeText": "Geben Sie die genaue Modell-ID ein, die Ihr Endpunkt bereitstellt.",
1445
+ "modelLive": "Live vom Anbieter geladen.",
1446
+ "modelLoading": "Wird geladen…",
1447
+ "modelPlaceholder": "Modell auswählen…",
1448
+ "modelStatic": "Eine bewährte Liste; geben Sie nach dem Speichern eine eigene ID ein, um sie zu aktualisieren.",
1449
+ "noKeyBody": "Ollama läuft lokal, es verlässt also nichts diesen Rechner.",
1450
+ "noKeyTitle": "Kein API-Schlüssel nötig"
1124
1451
  },
1125
- "origin": {
1126
- "generated": "Erzeugt",
1127
- "manifest": "Add-on",
1128
- "llm": "Assistent",
1129
- "system": "System",
1130
- "user": "Eigene"
1452
+ "history": {
1453
+ "byo": "BYO",
1454
+ "colChunks": "Blöcke",
1455
+ "colDate": "Datum",
1456
+ "colSource": "Quelle",
1457
+ "colStatus": "Status",
1458
+ "connection": "Verbindung",
1459
+ "directPath": "Direkt",
1460
+ "empty": "Noch keine Anreicherungsläufe. Reichern Sie ein Schema im Verbindungsassistenten an, um hier Verlauf zu sehen.",
1461
+ "errorBody": "Laden Sie die Seite neu, um es erneut zu versuchen.",
1462
+ "errorTitle": "Läufe konnten nicht geladen werden",
1463
+ "heading": "Laufverlauf",
1464
+ "noConnections": "Verbinden Sie zuerst eine Datenbank — Anreicherungsläufe werden pro Verbindung erfasst.",
1465
+ "openReview": "Prüfung für den Lauf vom {date} öffnen",
1466
+ "subtitle": "Frühere Anreicherungsläufe. Öffnen Sie einen, um seine Vorschläge zu prüfen.",
1467
+ "tableLabel": "Anreicherungsläufe"
1131
1468
  },
1132
- "row": {
1133
- "menu": "Aktionen für {title}"
1469
+ "provider": {
1470
+ "active": "Aktiv",
1471
+ "anthropic": {
1472
+ "desc": "Claude-Modelle über die Anthropic-API.",
1473
+ "label": "Anthropic"
1474
+ },
1475
+ "heading": "KI-Anbieter",
1476
+ "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.",
1477
+ "networkDisabledTitle": "Direkte KI-Anbieter sind in dieser Installation deaktiviert",
1478
+ "ollama": {
1479
+ "desc": "Modelle laufen lokal über Ollama — kein Schlüssel, keine Cloud.",
1480
+ "label": "Ollama (lokal)"
1481
+ },
1482
+ "openai": {
1483
+ "desc": "GPT-Modelle über die OpenAI-API.",
1484
+ "label": "OpenAI"
1485
+ },
1486
+ "openaiCompatible": {
1487
+ "desc": "Jeder Endpunkt, der das OpenAI-Format spricht — Groq, Together, vLLM, LM Studio.",
1488
+ "label": "OpenAI-kompatibel"
1489
+ },
1490
+ "requiresNetwork": "Erfordert Internet und einen API-Schlüssel",
1491
+ "subtitle": "Wählen Sie, wie Adminium ein Modell zur Anreicherung Ihres Schemas erreicht. Schlüssel werden verschlüsselt gespeichert und nie wieder angezeigt."
1134
1492
  },
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"
1493
+ "runStatus": {
1494
+ "applied": "Übernommen",
1495
+ "awaitingResponse": "Wartet auf Antwort",
1496
+ "discarded": "Verworfen",
1497
+ "draft": "Entwurf",
1498
+ "failed": "Fehlgeschlagen",
1499
+ "partiallyApplied": "Teilweise übernommen",
1500
+ "running": "Läuft",
1501
+ "validated": "Validiert"
1141
1502
  },
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."
1503
+ "save": "Anbieter speichern",
1504
+ "saveFailed": "Der KI-Anbieter konnte nicht gespeichert werden. Erneut versuchen.",
1505
+ "saved": "KI-Anbieter gespeichert",
1506
+ "subtitle": "Verbinden Sie ein Modell, damit Adminium Bezeichnungen, Gruppen, Beziehungen und mehr vorschlägt — immer als Diff geprüft, bevor etwas übernommen wird.",
1507
+ "test": "Verbindung testen",
1508
+ "testError": "Test fehlgeschlagen",
1509
+ "testErrorBody": "Der Anbieter war nicht erreichbar. Prüfen Sie Schlüssel und Basis-URL.",
1510
+ "testHintDirty": "Speichern Sie Ihre Änderungen vor dem Test.",
1511
+ "testOk": "Verbunden mit {model} in {latency} ms",
1512
+ "testUnknownModel": "dem Anbieter",
1513
+ "testing": "Anbieter wird angepingt…",
1514
+ "title": "KI-Anreicherung"
1515
+ },
1516
+ "settingsHub": {
1517
+ "addOnsCard": {
1518
+ "body": "Add-ons durchsuchen, installieren und verbinden — zusätzliche Blöcke, Datenpakete und Integrationen — oder selbst eines hochladen.",
1519
+ "cta": "Add-ons öffnen",
1520
+ "heading": "Add-ons"
1147
1521
  },
1148
- "duplicate": {
1149
- "title": "Seite duplizieren",
1150
- "failed": "Die Seite konnte nicht dupliziert werden",
1151
- "submit": "Duplizieren"
1522
+ "aiCard": {
1523
+ "body": "Konfigurieren Sie einen KI-Anbieter (oder den Kopieren-Einfügen-Umlauf), um Bezeichnungen, Gruppen und Beziehungen anzureichern.",
1524
+ "cta": "KI-Einstellungen öffnen",
1525
+ "heading": "KI-Anreicherung"
1152
1526
  },
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"
1527
+ "danger": {
1528
+ "deleteCta": "Verbindung löschen",
1529
+ "deleteDesc": "Löscht die Verbindung und die daraus generierten Seiten. Ihre Datenbank bleibt unangetastet. Kann nicht rückgängig gemacht werden.",
1530
+ "empty": "Nichts zu löschen noch keine Verbindungen.",
1531
+ "heading": "Gefahrenzone",
1532
+ "subtitle": "Unumkehrbare Aktionen."
1159
1533
  },
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."
1534
+ "defaultsCard": {
1535
+ "body": "Workspace-weite Einstellungen für Theme, Akzentfarbe, Dichte und Sprache finden Sie unter „Globale Standards“.",
1536
+ "cta": "Globale Standards öffnen",
1537
+ "heading": "Standards für Darstellung & Sprache"
1185
1538
  },
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."
1539
+ "email": {
1540
+ "attachmentCap": {
1541
+ "error": "Zwischen {min, number} und {max, number} MB.",
1542
+ "helper": "Die maximale Größe der Anhänge einer einzelnen Nachricht.",
1543
+ "label": "Anhangslimit (MB)"
1194
1544
  },
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"
1545
+ "from": {
1546
+ "error": "Geben Sie eine E-Mail-Adresse ein.",
1547
+ "helper": "Nur die Adresse oder ein Anzeigename davor.",
1548
+ "label": "Absenderadresse"
1549
+ },
1550
+ "heading": "E-Mail (SMTP)",
1551
+ "host": {
1552
+ "error": "Nur ein Hostname oder eine IP-Adresse ohne Schema, Port oder Zugangsdaten.",
1553
+ "label": "SMTP-Host"
1554
+ },
1555
+ "pass": {
1556
+ "error": "Zu diesem Benutzernamen gehört ein Passwort.",
1557
+ "helper": "Verschlüsselt gespeichert und nie wieder angezeigt. Leer lassen, um das aktuelle zu behalten.",
1558
+ "label": "Passwort"
1559
+ },
1560
+ "port": {
1561
+ "error": "Zwischen {min, number} und {max, number}.",
1562
+ "label": "Port"
1563
+ },
1564
+ "remove": "Mailserver entfernen",
1565
+ "review": {
1566
+ "password": "Ersetzt",
1567
+ "removed": "Entfernt"
1568
+ },
1569
+ "secure": {
1570
+ "helper": "An für Port 465. Aus beginnt unverschlüsselt und wechselt per STARTTLS — so erwartet es Port 587.",
1571
+ "label": "Implizites TLS"
1572
+ },
1573
+ "senders": {
1574
+ "add": "Absender hinzufügen",
1575
+ "address": "Adresse",
1576
+ "error": "Gib eine E-Mail-Adresse ein.",
1577
+ "heading": "Absender",
1578
+ "helper": "Adressen, von denen eine E-Mail gesendet werden darf. Die SMTP-Absenderadresse ist immer verfügbar.",
1579
+ "implicit": "SMTP-Absenderadresse",
1580
+ "name": "Anzeigename",
1581
+ "remove": "Absender entfernen",
1582
+ "review": "Absender"
1583
+ },
1584
+ "unconfigured": "Es ist kein Mailserver eingerichtet, daher kann Adminium keine Passwort-Zurücksetzungen, Einladungen oder geplanten Berichte versenden.",
1585
+ "user": {
1586
+ "helper": "Leer lassen, wenn das Relay keine Anmeldung verlangt.",
1587
+ "label": "Benutzername"
1588
+ }
1212
1589
  },
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."
1590
+ "identity": {
1591
+ "appName": {
1592
+ "error": "Geben Sie einen Namen mit höchstens 60 Zeichen ein.",
1593
+ "helper": "Erscheint in der Seitenleiste, im Browser-Titel und in E-Mails.",
1594
+ "label": "Anwendungsname"
1595
+ },
1596
+ "heading": "Workspace-Identität",
1597
+ "logo": {
1598
+ "badType": "Wählen Sie ein PNG-, JPEG-, WebP-, GIF- oder SVG-Bild.",
1599
+ "drop": "Bild hierher ziehen",
1600
+ "helper": "PNG, JPEG, WebP, GIF oder SVG bis 1 MB. Ersetzt die eingebaute Marke überall.",
1601
+ "label": "Logo",
1602
+ "remove": "Entfernen",
1603
+ "removed": "Logo entfernt",
1604
+ "replace": "Logo ersetzen",
1605
+ "tooLarge": "Dieses Bild ist größer als 1 MB.",
1606
+ "undo": "Rückgängig",
1607
+ "upload": "Logo hochladen",
1608
+ "uploaded": "Logo aktualisiert"
1609
+ },
1610
+ "showVersion": {
1611
+ "helper": "Die Build-Nummer neben dem Logo. Aus verbirgt, welche Version Sie einsetzen.",
1612
+ "label": "Version in der Seitenleiste"
1225
1613
  }
1226
1614
  },
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}",
1615
+ "pagesCard": {
1616
+ "body": "Seiten hinzufügen, bearbeiten und löschen, ihre Inhalte ändern und die Seitenleiste neu ordnen.",
1617
+ "cta": "Seiten verwalten",
1618
+ "heading": "Seiten"
1619
+ },
1620
+ "publicApiCard": {
1621
+ "body": "Lassen Sie Ihre eigenen kunden- oder mitarbeiterseitigen Seiten diese Datenbank über einen von Ihnen definierten Scope lesen.",
1622
+ "cta": "Öffentliche API öffnen",
1623
+ "heading": "Öffentliche API"
1624
+ },
1625
+ "review": {
1626
+ "cancel": "Abbrechen",
1627
+ "change": "{before} → {after}",
1628
+ "close": "Schließen",
1629
+ "confirm": "Änderungen speichern",
1630
+ "hidden": "Verborgen",
1631
+ "off": "Aus",
1632
+ "on": "An",
1233
1633
  "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."
1634
+ "subtitle": "Prüfen Sie Ihre Änderungen vor dem Speichern.",
1635
+ "title": "Workspace-Einstellungen speichern"
1636
+ },
1637
+ "save": "Änderungen speichern",
1638
+ "saveFailed": "Die Workspace-Einstellungen konnten nicht gespeichert werden. Versuchen Sie es erneut.",
1639
+ "saved": "Workspace-Einstellungen aktualisiert",
1640
+ "security": {
1641
+ "allowSignup": {
1642
+ "desc": "Jeder kann ein Konto erstellen — deaktiviert bleibt der Workspace nur per Einladung zugänglich.",
1643
+ "label": "Selbstregistrierung erlauben"
1644
+ },
1645
+ "heading": "Sicherheit",
1646
+ "passwordMin": {
1647
+ "error": "Zwischen {min, number} und {max, number} Zeichen.",
1648
+ "label": "Minimale Passwortlänge"
1649
+ },
1650
+ "require2fa": {
1651
+ "desc": "Jedes Mitglied muss 2FA aktivieren, um sich anzumelden.",
1652
+ "label": "Zwei-Faktor-Authentifizierung verlangen",
1653
+ "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."
1654
+ },
1655
+ "sessionTtl": {
1656
+ "error": "Zwischen {min, number} und {max, number} Stunden.",
1657
+ "label": "Sitzungsdauer (Stunden)"
1258
1658
  }
1259
1659
  },
1260
- "icon": {
1261
- "none": "Symbol auswählen",
1262
- "search": "Symbole suchen",
1263
- "noMatches": "Keine Symbole passen zu dieser Suche."
1660
+ "storageCard": {
1661
+ "body": "Wählen Sie, wo hochgeladene Dateien, Exporte und andere gespeicherte Bytes liegen — dieser Server, ein Bucket oder Ihr eigener Server.",
1662
+ "cta": "Speicher öffnen",
1663
+ "heading": "Speicher"
1264
1664
  },
1265
- "preview": {
1266
- "untitled": "Unbenannte Seite",
1267
- "note": "Eine Darstellung des Layouts, nicht Ihrer Daten. Die echte Seite füllt sich nach dem Speichern."
1665
+ "subtitle": "Identität, Sicherheit und destruktive Aktionen für diesen Workspace.",
1666
+ "superAdminOnly": "Nur ein Super-Admin kann Identität und Sicherheitseinstellungen des Workspace ändern.",
1667
+ "superAdminOnlyTitle": "Super-Admin erforderlich",
1668
+ "title": "Workspace-Einstellungen",
1669
+ "translationsCard": {
1670
+ "body": "Formulieren Sie beliebige Texte in Adminium neu, legen Sie fest, welche Sprachen zur Auswahl stehen, und fügen Sie eigene hinzu.",
1671
+ "cta": "Übersetzungen öffnen",
1672
+ "heading": "Sprachen & Übersetzungen"
1673
+ }
1674
+ },
1675
+ "source": {
1676
+ "dsn": {
1677
+ "helper": "postgres://benutzer:passwort@host:5432/datenbank — mysql:// und sqlite: funktionieren ebenfalls.",
1678
+ "incomplete": "Host und Datenbank ergänzen, z. B. postgres://user@host:5432/db",
1679
+ "invalidScheme": "Unbekanntes Schema — erwartet werden postgres://, mysql://, mariadb:// oder sqlite:",
1680
+ "label": "Verbindungszeichenfolge",
1681
+ "quickFill": "Schnellausfüllen:"
1268
1682
  },
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)"
1683
+ "engine": {
1684
+ "label": "Datenbank-Engine",
1685
+ "mysql": "MySQL / MariaDB",
1686
+ "postgres": "PostgreSQL",
1687
+ "sqlite": "SQLite"
1276
1688
  },
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
- }
1689
+ "fields": {
1690
+ "database": "Datenbank",
1691
+ "host": "Host",
1692
+ "password": "Passwort",
1693
+ "port": "Port",
1694
+ "preview": "Vorschau der Verbindungszeichenfolge:",
1695
+ "ssl": "SSL-Modus",
1696
+ "user": "Benutzer"
1697
+ },
1698
+ "file": {
1699
+ "columns": "Spalten",
1700
+ "detectedAs": "Erkannt: {format}",
1701
+ "dropHint": "SQL DDL / pg_dump, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, Django-Modelle, Adminium JSON",
1702
+ "dropTitle": "Schemadatei hier ablegen oder durchsuchen",
1703
+ "errorTitle": "Datei konnte nicht geparst werden",
1704
+ "moreWarnings": "+{count} weitere Warnungen — die vollständige Liste erscheint im Analyse-Schritt.",
1705
+ "parseFailed": "Diese Datei konnte nicht geparst werden. Falls die automatische Erkennung falsch lag, wählen Sie das Format explizit und versuchen Sie es erneut.",
1706
+ "parsing": "Hochgeladene Schemadatei wird gelesen…",
1707
+ "pitch": "Keine Datenbankverbindung nötig — wir parsen Ihre Schemadatei und bauen dieselben Dashboards.",
1708
+ "requestFailed": "Upload fehlgeschlagen — prüfen Sie Ihre Verbindung und versuchen Sie es erneut.",
1709
+ "tables": "Tabellen",
1710
+ "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.",
1711
+ "warnings": "Warnungen"
1712
+ },
1713
+ "format": {
1714
+ "auto": "Automatisch erkennen",
1715
+ "django": "Django models.py",
1716
+ "drizzle": "Drizzle ORM",
1717
+ "helper": "Bei automatischer Erkennung belassen, sofern sie nicht danebenliegt.",
1718
+ "json": "Adminium-JSON",
1719
+ "label": "Schemaformat",
1720
+ "prisma": "Prisma-Schema",
1721
+ "rails": "Rails schema.rb",
1722
+ "sequelize": "Sequelize-Modelle",
1723
+ "sql": "SQL-DDL / pg_dump",
1724
+ "typeorm": "TypeORM-Entitäten"
1725
+ },
1726
+ "mode": {
1727
+ "dsn": "Verbindungszeichenfolge",
1728
+ "fields": "Einzelne Felder",
1729
+ "file": "Schemadatei"
1730
+ },
1731
+ "modeLabel": "Eingabemodus der Quelle",
1732
+ "name": "Verbindungsname",
1733
+ "namePlaceholder": "Produktions-Postgres",
1734
+ "readOnlyRole": {
1735
+ "body": "Bei der Einrichtung liest Adminium ausschließlich Schema-Metadaten — niemals Ihre Zeilen. Wir empfehlen einen eigenen Benutzer mit reinen SELECT-Rechten; wo Adminium seine eigenen Tabellen ablegt, entscheiden Sie im Schritt zur Meta-Speicherung.",
1736
+ "title": "Verwenden Sie eine schreibgeschützte Rolle"
1737
+ },
1738
+ "sqlite": {
1739
+ "file": "Pfad zur Datenbankdatei",
1740
+ "helper": "SQLite ist eine Datei, kein Server — geben Sie den absoluten Pfad auf der Maschine an, auf der Adminium läuft."
1741
+ },
1742
+ "subtitle": "Richten Sie Adminium auf eine Datenbank — wir generieren aus ihrem Schema ein Admin-Dashboard.",
1743
+ "title": "Verbinden Sie Ihre Datenbank"
1744
+ },
1745
+ "storage": {
1746
+ "actionFailed": "Das hat nicht funktioniert",
1747
+ "add": "Speicherziel hinzufügen",
1748
+ "availableOnDisk": "{size} auf dieser Festplatte verfügbar",
1749
+ "default": "Standard",
1750
+ "defaultBlockedByDisabled": "Ein deaktiviertes Speicherziel kann nicht das Standardziel sein. Aktivieren Sie es zuerst.",
1751
+ "delete": {
1752
+ "blockedBody": "{name} enthält noch {count, plural, one {# Datei} other {# Dateien}}. Verschieben Sie sie zuerst in ein anderes Speicherziel und löschen Sie es dann.",
1753
+ "blockedTitle": "Dieses Speicherziel enthält noch Dateien",
1754
+ "body": "Adminium vergisst {name} und seine Zugangsdaten. Nichts, was darin gespeichert ist, wird angetastet — der Bucket oder der Server gehört Ihnen, und Dateien, die noch darauf verzeichnet sind, weisen das Löschen zurück.",
1755
+ "confirm": "Speicherziel löschen",
1756
+ "title": "Dieses Speicherziel löschen"
1757
+ },
1758
+ "deleteButton": "Löschen",
1759
+ "disable": "Deaktivieren",
1760
+ "disabled": "Deaktiviert",
1761
+ "driver": {
1762
+ "local": "Ein Pfad auf dieser Maschine",
1763
+ "s3": "S3-kompatibler Bucket",
1764
+ "webdav": "WebDAV-Server"
1765
+ },
1766
+ "edit": "Bearbeiten",
1767
+ "editor": {
1768
+ "createTitle": "Speicherziel hinzufügen",
1769
+ "editTitle": "Speicherziel bearbeiten",
1770
+ "subtitle": "Adminium liest und schreibt in Ihrem Auftrag über dieses Speicherziel; es ist Infrastruktur, die Sie kontrollieren."
1771
+ },
1772
+ "enable": "Aktivieren",
1773
+ "field": {
1774
+ "accessKeyId": "Zugriffsschlüssel-ID",
1775
+ "bucket": "Bucket",
1776
+ "driver": "Art",
1777
+ "driverLocked": "Die Art eines Speicherziels zu ändern, das bereits Dateien enthält, würde diese Dateien unerreichbar machen.",
1778
+ "endpoint": "Endpunkt",
1779
+ "endpointDerived": "Für AWS selbst leer lassen — der Endpunkt ergibt sich aus der Region.",
1780
+ "name": "Name",
1781
+ "namePlaceholder": "Uploads-Bucket",
1782
+ "password": "Passwort",
1783
+ "pathStyle": "Pfadbasierte Adressierung",
1784
+ "pathStyleToggle": "Den Bucket als Pfad statt als Hostnamen adressieren",
1785
+ "prefix": "Präfix",
1786
+ "prefixHelper": "Ein Ordner innerhalb des Speicherziels. Zwei Speicherziele auf demselben Bucket, die sich nur hier unterscheiden, teilen sich den Bucket, ohne sich einen Namensraum zu teilen.",
1787
+ "preset": "Anbieter",
1788
+ "presetHelper": "Füllt Endpunkt, Region und Adressierungsstil aus. Alles, was der Anbieter über Ihr Konto nicht wissen kann, bleibt leer und wird von Ihnen eingetragen.",
1789
+ "publicBaseUrl": "Öffentliche Basis-URL",
1790
+ "publicBaseUrlHelper": "Optional. Wo diese Objekte ohne Adminium lesbar sind — ein CDN vor einem öffentlichen Bucket. Wird nur verwendet, wenn eine Spalte einen Link speichert.",
1791
+ "region": "Region",
1792
+ "root": "Verzeichnis",
1793
+ "rootHelper": "Ein absoluter Pfad, in den dieser Server schreiben kann — ein eingehängtes Volume oder eine Netzwerkfreigabe. Nicht das Standardverzeichnis, das bereits der erste Eintrag der Liste ist.",
1794
+ "secretAccessKey": "Geheimer Zugriffsschlüssel",
1795
+ "secretKept": "Ein Schlüssel ist gespeichert. Lassen Sie beide Felder leer, um ihn zu behalten; füllen Sie beide aus, um ihn zu ersetzen.",
1796
+ "url": "Sammlungs-URL",
1797
+ "urlHelper": "Die Sammlung, in die Adminium schreibt — so, wie Ihr Server sie bereitstellt.",
1798
+ "username": "Benutzername"
1799
+ },
1800
+ "fileCount": "{count, plural, one {# Datei} other {# Dateien}}",
1801
+ "kind": {
1802
+ "archive": "Archivierte Audit-Log-Stapel",
1803
+ "branding": "Das Logo des Workspace",
1804
+ "export": "Dateien aus Datenexporten",
1805
+ "import": "Hochgeladene CSV-Dateien und ihre Fehlerberichte",
1806
+ "schema": "Importierte Schemadateien",
1807
+ "upload": "An Datensätze angehängte Dateien"
1808
+ },
1809
+ "list": {
1810
+ "subtitle": "Neue Dateien gehen an das Standard-Speicherziel. Vorhandene Dateien bleiben, wo sie sind, bis Sie sie verschieben.",
1811
+ "title": "Speicherziele"
1812
+ },
1813
+ "loadFailed": {
1814
+ "forbidden": "Um zu ändern, wo Dateien gespeichert werden, wird die Berechtigung „Speicher verwalten“ benötigt. Bitten Sie eine Administratorin oder einen Administrator, sie einer Ihrer Rollen zuzuweisen.",
1815
+ "title": "Speicherziele konnten nicht geladen werden"
1816
+ },
1817
+ "localDisk": "Die Festplatte dieses Servers",
1818
+ "move": {
1819
+ "from": "Von",
1820
+ "kinds": "Beschränken auf",
1821
+ "kindsHelp": "Lassen Sie alle Häkchen weg, um alle zu verschieben. Uploads sind die Dateien, die Nutzerinnen und Nutzer anhängen; der Rest sind Artefakte, die Adminium selbst erzeugt hat.",
1822
+ "open": "Dateien verschieben…",
1823
+ "start": "Verschieben starten",
1824
+ "startedBody": "Es läuft im Hintergrund als Job {jobId} und läuft weiter, wenn Sie diese Seite verlassen. Die Zahlen unten ändern sich, während Dateien ankommen — laden Sie die Seite neu, um sie zu sehen.",
1825
+ "startedTitle": "Das Verschieben hat begonnen",
1826
+ "subtitle": "Kopiert jede Datei von einem Speicherziel in ein anderes und vergisst danach die alte Kopie. Downloads funktionieren durchgehend weiter.",
1827
+ "title": "Dateien verschieben",
1828
+ "to": "Nach"
1829
+ },
1830
+ "preset": {
1831
+ "aws": "AWS S3",
1832
+ "b2": "Backblaze B2",
1833
+ "minio": "MinIO oder ein anderer S3-kompatibler Server",
1834
+ "r2": "Cloudflare R2",
1835
+ "spaces": "DigitalOcean Spaces",
1836
+ "tigris": "Tigris",
1837
+ "wasabi": "Wasabi"
1838
+ },
1839
+ "save": "Speicherziel speichern",
1840
+ "secret": {
1841
+ "partialBody": "Füllen Sie beide Felder aus, um die gespeicherten Zugangsdaten zu ersetzen, oder leeren Sie beide, um sie zu behalten. Nur eines davon zu speichern würde stillschweigend die alten behalten.",
1842
+ "partialTitle": "Halbe Zugangsdaten sind keine Zugangsdaten"
1843
+ },
1844
+ "setDefault": "Als Standard festlegen",
1845
+ "status": {
1846
+ "error": "Nicht erreichbar",
1847
+ "ok": "Erreichbar",
1848
+ "untested": "Nicht getestet"
1849
+ },
1850
+ "subtitle": "Wo diese Instanz hochgeladene Dateien, Exporte und andere gespeicherte Bytes ablegt.",
1851
+ "test": {
1852
+ "button": "Testen",
1853
+ "failed": "Dieses Speicherziel war nicht erreichbar",
1854
+ "ok": "In {ms} ms erreicht",
1855
+ "unreachable": "Der Test konnte nicht ausgeführt werden"
1856
+ },
1857
+ "title": "Speicher",
1858
+ "usedBytes": "{size} belegt"
1859
+ },
1860
+ "tables": {
1861
+ "emptyFilter": "Keine Tabellen entsprechen Ihrem Filter.",
1862
+ "highVolume": "hohes Volumen",
1863
+ "highVolumeNote": "Tabellen mit über 100.000 Zeilen sind anfangs abgewählt — Ops-Tabellen gehören selten in ein Dashboard.",
1864
+ "importNoCounts": "Schemadateien enthalten keine Zeilenzahlen — die Spalte zeigt —, bis eine Live-Datenbank verbunden ist.",
1865
+ "joinHidden": "{count} Join-/Systemtabellen sind vorab ausgeblendet — sie treiben weiterhin m:n-Beziehungen an.",
1866
+ "listLabel": "Einbeziehbare Tabellen",
1867
+ "pii": "PII",
1868
+ "search": "Tabellen filtern…",
1869
+ "subtitle": "Wählen Sie, welche enthalten sein sollen. Sie können das jederzeit ändern.",
1870
+ "title": "Wählen Sie Ihre Tabellen"
1871
+ },
1872
+ "test": {
1873
+ "errorTitle": "Verbindung fehlgeschlagen",
1874
+ "hint": {
1875
+ "auth": "Authentifizierung fehlgeschlagen — prüfen Sie Benutzername und Passwort in Ihrer DSN.",
1876
+ "hostUnreachable": "Host nicht erreichbar — prüfen Sie Hostname und Port und dass die Datenbank Verbindungen von dieser Maschine akzeptiert (unsere IPs freigeben).",
1877
+ "metaPlacement": "Diese Quelle kann Adminiums Meta-Tabellen nicht aufnehmen — fahren Sie mit einer separaten Meta-Datenbank fort.",
1878
+ "permission": "Die Rolle hat sich verbunden, darf das Schema aber nicht lesen — erteilen Sie Ihrer Introspektionsrolle USAGE auf dem Schema.",
1879
+ "timeout": "Die Datenbank hat nicht rechtzeitig geantwortet — prüfen Sie Netzwerkpfad und Auslastung und versuchen Sie es erneut.",
1880
+ "tls": "TLS-Aushandlung fehlgeschlagen — versuchen Sie sslmode=require oder laden Sie das CA-Zertifikat hoch, das Ihr Server erwartet.",
1881
+ "unknown": "Verbindung fehlgeschlagen — prüfen Sie die DSN und versuchen Sie es erneut."
1882
+ },
1883
+ "log": {
1884
+ "connectFailed": "Verbindung fehlgeschlagen.",
1885
+ "connected": "Verbunden ({latency} ms) · schreibgeschützte Introspektion",
1886
+ "connecting": "Sichere Verbindung wird aufgebaut…",
1887
+ "detected": "{tables} Tabellen · {columns} Spalten erkannt",
1888
+ "found": "{tables} Tabellen · {columns} Spalten gefunden",
1889
+ "jobFailed": "Introspektion fehlgeschlagen.",
1890
+ "mapping": "Spaltentypen → Eingabe-Widgets werden zugeordnet",
1891
+ "moreWarnings": "+{count} weitere Parser-Warnungen",
1892
+ "networkFailed": "Anfrage fehlgeschlagen — prüfen Sie Ihre Verbindung und versuchen Sie es erneut.",
1893
+ "parsingFile": "{file} wird geparst…",
1894
+ "piiDone": "PII-Scan abgeschlossen — {count} Spalten standardmäßig maskiert",
1895
+ "piiDoneUnknown": "PII-Scan abgeschlossen",
1896
+ "piiScan": "Suche nach PII-Spalten…",
1897
+ "readingFile": "Hochgeladene Schemadatei wird gelesen…",
1898
+ "readingSchema": "Schema wird gelesen: public",
1899
+ "ready": "Bereit",
1900
+ "relations": "Beziehungen werden erkannt…"
1901
+ },
1902
+ "logLabel": "Introspektionsprotokoll",
1903
+ "retry": "Erneut versuchen",
1904
+ "subtitle": "Tabellen, Spalten und Beziehungen werden introspiziert. Das dauert ein paar Sekunden.",
1905
+ "title": "Ihr Schema wird analysiert",
1906
+ "trust": "Wir lesen nur Ihr Schema und Ihre Daten. Nichts wird verändert."
1907
+ },
1908
+ "title": "Studio",
1909
+ "wizard": {
1910
+ "back": "Zurück",
1911
+ "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.",
1912
+ "bridgeAppliedTitle": "Verbindungszeichenfolge empfangen",
1913
+ "bridgeFailedBody": "Sie wurde bereits verwendet oder ist abgelaufen. Fügen Sie Ihre Verbindungszeichenfolge stattdessen unten ein.",
1914
+ "bridgeFailedTitle": "Diese Übergabe konnte nicht verwendet werden",
1915
+ "continue": "Weiter",
1916
+ "persistFailed": "Ihre Tabellenauswahl konnte nicht gespeichert werden — versuchen Sie es erneut.",
1917
+ "persistFailedTitle": "Speichern fehlgeschlagen",
1918
+ "progress": "Einrichtungsfortschritt",
1919
+ "step": {
1920
+ "enrich": "Anreichern",
1921
+ "generate": "Generieren",
1922
+ "intent": "Zweck",
1923
+ "meta": "Meta-Speicher",
1924
+ "source": "Quelle",
1925
+ "tables": "Tabellen",
1926
+ "test": "Analysieren"
1927
+ },
1928
+ "title": "Neue Verbindung"
1286
1929
  }
1287
1930
  }