@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": "الإعدادات",
5
- "workspaceSection": "مساحة العمل",
6
- "globalDefaultsNav": "الإعدادات الافتراضية العامة"
7
- },
8
- "source": {
9
- "engine": {
10
- "label": "محرّك قاعدة البيانات",
11
- "postgres": "PostgreSQL",
12
- "mysql": "MySQL / MariaDB",
13
- "sqlite": "SQLite"
2
+ "addOns": {
3
+ "browse": {
4
+ "all": "الكل",
5
+ "bundled": "Included",
6
+ "categories": "الفئات",
7
+ "discard": "Discard",
8
+ "download": "Download",
9
+ "emptyBody": "This build shipped none, and the online catalogue is off.",
10
+ "emptyOnlineBody": "الكتالوج عبر الإنترنت مفعَّل، لكن آخر فحص لم يجد شيئًا. جرِّب البحث عن الأحدث.",
11
+ "emptyTitle": "No add-ons available",
12
+ "install": "Install",
13
+ "noMatchBody": "لا توجد إضافة تطابق هذا البحث وهذه الفئة.",
14
+ "noMatchTitle": "لا توجد نتائج",
15
+ "offline": "Showing the add-ons that came with this build. Browsing online is switched off, and nothing here has contacted the internet.",
16
+ "online": "Includes add-ons from the online catalogue. Checking for newer versions is a separate action.",
17
+ "refresh": "Check for newer",
18
+ "search": "ابحث في الإضافات",
19
+ "title": "Available",
20
+ "toggle": "Browse the online catalogue",
21
+ "upgrade": "v{version} available",
22
+ "upgradeAction": "Upgrade"
14
23
  },
15
- "format": {
16
- "label": "تنسيق المخطط",
17
- "helper": "اترك الاكتشاف التلقائي مفعّلًا ما لم يخطئ في التعرّف.",
18
- "auto": "اكتشاف تلقائي",
19
- "sql": "SQL DDL / pg_dump",
20
- "prisma": "مخطط Prisma",
21
- "drizzle": "Drizzle ORM",
22
- "typeorm": "كيانات TypeORM",
23
- "sequelize": "نماذج Sequelize",
24
- "rails": "Rails schema.rb",
25
- "django": "Django models.py",
26
- "json": "Adminium JSON"
24
+ "card": {
25
+ "needsApiKey": "يتطلب مفتاح API",
26
+ "needsOauth": "يتصل عبر OAuth"
27
27
  },
28
- "sqlite": {
29
- "file": "مسار ملف قاعدة البيانات",
30
- "helper": "SQLite ملف وليس خادمًا — أدخل المسار المطلق على الجهاز الذي يشغّل Adminium."
28
+ "category": {
29
+ "artwork": "التصميم",
30
+ "data": "البيانات",
31
+ "delivery": "الشحن",
32
+ "email": "البريد",
33
+ "payments": "المدفوعات"
31
34
  },
32
- "file": {
33
- "detectedAs": "تم اكتشاف: {format}",
34
- "moreWarnings": "+{count} تحذيرات إضافية — تظهر القائمة الكاملة في خطوة التحليل.",
35
- "dropTitle": "أسقط ملف المخطط هنا، أو تصفّح",
36
- "dropHint": "SQL DDL / pg_dump وPrisma وDrizzle وTypeORM وSequelize وRails schema.rb ونماذج Django وAdminium JSON",
37
- "pitch": "لا حاجة إلى اتصال بقاعدة البيانات — نحلّل ملف المخطط ونبني اللوحات نفسها.",
38
- "parsing": "جارٍ قراءة ملف المخطط المرفوع…",
39
- "tables": "جداول",
40
- "columns": "أعمدة",
41
- "warnings": "تحذيرات",
42
- "errorTitle": "تعذّر تحليل الملف",
43
- "parseFailed": "تعذّر تحليل هذا الملف. إذا أخطأ الاكتشاف التلقائي، فاختر التنسيق صراحةً وأعد المحاولة.",
44
- "unsupported": "تنسيق غير معروف — المدعوم: SQL DDL وPrisma وDrizzle وTypeORM وSequelize وRails schema.rb ونماذج Django وAdminium JSON. اختر واحدًا صراحةً وأعد المحاولة.",
45
- "requestFailed": "فشل الرفع — تحقّق من اتصالك وأعد المحاولة."
35
+ "confirm": {
36
+ "cancel": "Cancel",
37
+ "close": "Close",
38
+ "discard": "Discard",
39
+ "discardBody": "The downloaded files are deleted. Nothing was installed, so nothing else changes you can download it again whenever you like.",
40
+ "discardTitle": "Discard this download",
41
+ "disconnect": "Disconnect",
42
+ "disconnectBody": "Its keys are deleted and it stops making calls. Every table and every row it created stays exactly as it is, and you can reconnect at any time.",
43
+ "disconnectTitle": "Disconnect this add-on",
44
+ "uninstall": "Uninstall",
45
+ "uninstallBody": "Its keys are deleted and its files are removed from this server. Every table and every row it created stays exactly as it is. You can install it again later.",
46
+ "uninstallTitle": "Uninstall this add-on"
46
47
  },
47
- "title": "اربط قاعدة بياناتك",
48
- "subtitle": "وجّه Adminium إلى قاعدة بيانات وسننشئ لوحة إدارة من مخططها.",
49
- "name": "اسم الاتصال",
50
- "namePlaceholder": "Postgres للإنتاج",
51
- "modeLabel": "وضع إدخال المصدر",
52
- "mode": {
53
- "dsn": "سلسلة الاتصال",
54
- "fields": "حقول منفصلة",
55
- "file": "ملف المخطط"
48
+ "connect": {
49
+ "apiKey": "API key",
50
+ "submit": "Connect"
56
51
  },
57
- "dsn": {
58
- "label": "سلسلة الاتصال",
59
- "helper": "postgres://user:password@host:5432/database — يعمل أيضًا mysql:// وsqlite:.",
60
- "incomplete": "أضف المضيف وقاعدة البيانات، مثل postgres://user@host:5432/db",
61
- "invalidScheme": "مخطط غير معروف — المتوقع postgres:// أو mysql:// أو mariadb:// أو sqlite:",
62
- "quickFill": "تعبئة سريعة:"
52
+ "consent": {
53
+ "cancel": "Cancel",
54
+ "close": "Close",
55
+ "confirm": "Install",
56
+ "hosts": "Attach to",
57
+ "loading": "Working out what this would do…",
58
+ "subtitle": "What this add-on will do, before it can do it.",
59
+ "title": "Install {name}"
63
60
  },
64
- "fields": {
65
- "host": "المضيف",
66
- "port": "المنفذ",
67
- "database": "قاعدة البيانات",
68
- "user": "المستخدم",
69
- "password": "كلمة المرور",
70
- "ssl": "وضع SSL",
71
- "preview": "معاينة سلسلة الاتصال:"
61
+ "error": "Something went wrong",
62
+ "installed": {
63
+ "connected": "Connected",
64
+ "disconnect": "Disconnect",
65
+ "egress": "May contact: {hosts}",
66
+ "emptyBody": "Install an add-on above and it will appear here with its hosts and connection.",
67
+ "emptyTitle": "Nothing installed yet",
68
+ "notConnected": "Not connected",
69
+ "off": "off",
70
+ "on": "on",
71
+ "title": "Installed",
72
+ "uninstall": "Uninstall"
72
73
  },
73
- "readOnlyRole": {
74
- "title": "استخدم دورًا للقراءة فقط",
75
- "body": "لا يكتب Adminium أبدًا في قاعدة بياناتك — يستخدم الإعداد بيانات المخطط الوصفية فقط. نوصي بمستخدم مخصّص بصلاحيات SELECT فقط؛ ويمكنك تحديد مكان جداول Adminium الخاصة في خطوة تخزين البيانات الوصفية."
74
+ "job": {
75
+ "body": "Fetching and verifying. Nothing is installed until you say so.",
76
+ "failed": "The download did not finish. Nothing was installed.",
77
+ "title": "Downloading"
78
+ },
79
+ "plan": {
80
+ "blocked": "This cannot be installed here",
81
+ "needsColumns": "This add-on needs columns you do not have",
82
+ "needsColumnsBody": "Adminium will not add columns to tables you already own. Add them yourself, then install.",
83
+ "noData": "This add-on reads and writes no tables of its own.",
84
+ "reuse": "This add-on will use tables you already have:",
85
+ "willCreate": "This will create tables in your database",
86
+ "willCreateBody": "Installing creates these tables. Uninstalling later leaves them, and their data, alone."
87
+ },
88
+ "settings": {
89
+ "badJson": "هذا ليس JSON صالحاً، فلم يُحفظ شيء.",
90
+ "save": "حفظ الإعدادات",
91
+ "title": "الإعدادات"
92
+ },
93
+ "sideload": {
94
+ "file": "Package file (.tgz)",
95
+ "hint": "For a server with no internet. It is checked exactly as a download would be, so it needs the hash that came with it.",
96
+ "key": "Add-on key",
97
+ "sha": "Integrity (sha512-…)",
98
+ "shaHint": "The `integrity` value `npm pack --json` printed. The upload is refused if the bytes do not match.",
99
+ "submit": "Upload",
100
+ "title": "Upload a package",
101
+ "version": "Version"
102
+ },
103
+ "subtitle": "Extra capabilities you can add to your apps — shipping, artwork, data. Each one says what it needs before you install it.",
104
+ "title": "Add-ons",
105
+ "upgradeNote": "Upgrading keeps the hosts an add-on is attached to and the connection it already has.",
106
+ "veto": {
107
+ "body": "The setting is saved, but network features are off for this server and that wins. Downloaded add-ons still work, and you can still upload one yourself.",
108
+ "title": "This deployment cannot browse online"
76
109
  }
77
110
  },
78
111
  "capability": {
112
+ "importNoLiveHealth": "لا يوجد اتصال مباشر بقاعدة بيانات — فحوصات الصحة واكتشاف انحراف المخطط غير متاحة لهذا المصدر.",
113
+ "importNoRowCounts": "ملفات المخطط لا تحمل أعداد صفوف — تعرض قائمة الجداول — بدلًا من أرقام مختلَقة.",
79
114
  "mysqlApproxRows": "أعداد الصفوف في MySQL تقديرات من محرّك التخزين (قد تنحرف حتى ±40%) — تُعرض مع ≈.",
80
115
  "mysqlFkEnum": "البيانات الوصفية للمفاتيح الخارجية والتعدادات في MySQL أضعف: جداول MyISAM لا تعلن مفاتيح خارجية، والتعدادات أنواع enum(…) على مستوى العمود، وقيود CHECK تتطلب MySQL 8.0.16+ / MariaDB 10.2+.",
81
- "sqliteCheckEnums": "لا يملك SQLite نوع تعداد أصليًا تُركَّب التعدادات من قيود CHECK (col IN (…)).",
82
- "sqliteNoComments": "لا يدعم SQLite تعليقات الأعمدة — استخدم محرّر إعادة تعيين المخطط لإضافة التسميات.",
83
- "importNoRowCounts": "ملفات المخطط لا تحمل أعداد صفوف — تعرض قائمة الجداول — بدلًا من أرقام مختلَقة.",
84
- "importNoLiveHealth": "لا يوجد اتصال مباشر بقاعدة بيانات — فحوصات الصحة واكتشاف انحراف المخطط غير متاحة لهذا المصدر.",
85
- "rowsUnavailable": "ملفات المخطط بلا قاعدة بيانات مباشرة — تظل أعداد الصفوف مجهولة حتى توصيل واحدة.",
86
- "rowsRunAnalyze": "لا يوجد تقدير بعد — شغّل ANALYZE على قاعدة البيانات للحصول على أعداد الصفوف.",
116
+ "rowsApproximate": "تقدير من محرّك التخزينقد ينحرف حتى ±40% على InnoDB.",
87
117
  "rowsNoEstimate": "لم يبلّغ المحرّك عن أي تقدير لهذا الجدول.",
88
- "rowsApproximate": "تقدير من محرّك التخزينقد ينحرف حتى ±40% على InnoDB."
89
- },
90
- "test": {
91
- "log": {
92
- "moreWarnings": "+{count} تحذيرات إضافية من المحلّل",
93
- "connecting": "جارٍ إنشاء اتصال آمن…",
94
- "connected": "متصل ({latency} م.ث) · استبطان للقراءة فقط",
95
- "connectFailed": "فشل الاتصال.",
96
- "readingSchema": "جارٍ قراءة المخطط: public",
97
- "readingFile": "جارٍ قراءة ملف المخطط المرفوع…",
98
- "parsingFile": "جارٍ تحليل {file}…",
99
- "detected": "تم اكتشاف {tables} جدولًا · {columns} عمودًا",
100
- "found": "تم العثور على {tables} جدولًا · {columns} عمودًا",
101
- "mapping": "جارٍ ربط أنواع الأعمدة ← عناصر الإدخال",
102
- "relations": "جارٍ اكتشاف العلاقات…",
103
- "piiScan": "جارٍ البحث عن أعمدة البيانات الشخصية…",
104
- "piiDone": "اكتمل فحص البيانات الشخصية — تم إخفاء {count} عمودًا افتراضيًا",
105
- "piiDoneUnknown": "اكتمل فحص البيانات الشخصية",
106
- "jobFailed": "فشل الاستبطان.",
107
- "networkFailed": "فشل الطلب — تحقّق من اتصالك وأعد المحاولة.",
108
- "ready": "جاهز"
109
- },
110
- "title": "جارٍ تحليل مخططك",
111
- "subtitle": "جارٍ استبطان الجداول والأعمدة والعلاقات. يستغرق ذلك بضع ثوانٍ.",
112
- "trust": "نقرأ مخططك وبياناتك فقط. لا يتم تعديل أي شيء.",
113
- "errorTitle": "فشل الاتصال",
114
- "retry": "إعادة المحاولة",
115
- "logLabel": "سجل الاستبطان",
116
- "hint": {
117
- "auth": "فشلت المصادقة — تحقّق من اسم المستخدم وكلمة المرور في DSN.",
118
- "hostUnreachable": "تعذّر الوصول إلى المضيف — تحقّق من اسم المضيف والمنفذ، ومن أن قاعدة البيانات تقبل الاتصالات من هذا الجهاز (أضف عناوين IP الخاصة بنا إلى قائمة السماح).",
119
- "metaPlacement": "لا يمكن لهذا المصدر استضافة جداول Adminium الوصفية — تابع بقاعدة بيانات وصفية منفصلة.",
120
- "permission": "اتصل الدور لكنه يفتقر إلى صلاحيات قراءة المخطط — امنح دور الاستبطان صلاحية USAGE على المخطط.",
121
- "timeout": "لم تُجب قاعدة البيانات في الوقت المناسب — تحقّق من مسار الشبكة والحمل ثم أعد المحاولة.",
122
- "tls": "فشل تفاوض TLS — جرّب sslmode=require، أو ارفع شهادة CA التي يتوقعها خادمك.",
123
- "unknown": "فشل الاتصال — تحقّق من DSN وأعد المحاولة."
124
- }
125
- },
126
- "tables": {
127
- "importNoCounts": "ملفات المخطط لا تحمل أعداد صفوف — يعرض العمود — حتى يتم توصيل قاعدة بيانات مباشرة.",
128
- "title": "اختر جداولك",
129
- "subtitle": "اختر ما تريد تضمينه. يمكنك تغيير ذلك في أي وقت.",
130
- "search": "تصفية الجداول…",
131
- "listLabel": "الجداول القابلة للتضمين",
132
- "emptyFilter": "لا توجد جداول مطابقة لعامل التصفية.",
133
- "pii": "PII",
134
- "highVolume": "حجم كبير",
135
- "highVolumeNote": "الجداول التي تتجاوز 100,000 صف تبدأ غير محددة — نادرًا ما تنتمي جداول التشغيل إلى لوحة معلومات.",
136
- "joinHidden": "تم إخفاء {count} من جداول الربط/النظام مسبقًا — لكنها لا تزال تشغّل علاقات متعدد-إلى-متعدد."
118
+ "rowsRunAnalyze": "لا يوجد تقدير بعدشغّل ANALYZE على قاعدة البيانات للحصول على أعداد الصفوف.",
119
+ "rowsUnavailable": "ملفات المخطط بلا قاعدة بيانات مباشرة — تظل أعداد الصفوف مجهولة حتى توصيل واحدة.",
120
+ "sqliteCheckEnums": "لا يملك SQLite نوع تعداد أصليًا — تُركَّب التعدادات من قيود CHECK (col IN (…)).",
121
+ "sqliteNoComments": "لا يدعم SQLite تعليقات الأعمدة — استخدم محرّر إعادة تعيين المخطط لإضافة التسميات."
137
122
  },
138
- "hub": {
139
- "title": "اتصالات البيانات",
140
- "subtitle": "{healthy, number} من {total, plural, one {اتصال واحد} two {اتصالين} few {# اتصالات} many {# اتصالًا} other {# اتصال}} بحالة سليمة",
141
- "connectNew": "اتصال جديد",
142
- "stats": {
143
- "connections": "الاتصالات",
144
- "healthy": "سليمة",
145
- "tables": "الجداول المضمّنة",
146
- "pages": "الصفحات المولّدة"
147
- },
148
- "status": {
149
- "connected": "متصل",
150
- "error": "خطأ",
151
- "unconfigured": "مسودة",
152
- "testing": "جارٍ الاختبار…",
153
- "paused": "متوقّف مؤقتًا"
154
- },
155
- "card": {
156
- "readOnly": "للقراءة فقط",
157
- "tables": "الجداول",
158
- "pages": "الصفحات",
159
- "latency": "زمن الاستجابة",
160
- "latencyMs": "{latency, number} م.ث",
161
- "lastIntrospected": "آخر فحص للمخطط",
162
- "never": "أبدًا",
163
- "timezone": "المنطقة الزمنية",
164
- "timezoneGuessed": "من هذا الخادم",
165
- "paused": "لا يتصل Adminium بقاعدة البيانات هذه. ستُحمَّل صفحاتها من جديد بمجرد استئنافها.",
166
- "pausedSince": "متوقّف مؤقتًا {when} — لا يتصل Adminium بقاعدة البيانات هذه. ستُحمَّل صفحاتها من جديد بمجرد استئنافها."
167
- },
168
- "action": {
169
- "test": "اختبار",
170
- "reintrospect": "إعادة فحص المخطط",
171
- "reintrospectFile": "مصادر ملفات المخطط لا تملك قاعدة بيانات حيّة — أعد رفع الملف بدلًا من ذلك.",
172
- "remap": "إعادة تعيين المخطط",
173
- "delete": "حذف",
174
- "regional": "الإعدادات الإقليمية",
175
- "pause": "إيقاف مؤقت",
176
- "resume": "استئناف",
177
- "pausedHint": "هذا الاتصال متوقّف مؤقتًا — استأنفه للوصول إلى قاعدة البيانات.",
178
- "rename": "إعادة تسمية"
179
- },
180
- "regional": {
181
- "title": "الإعدادات الإقليمية",
182
- "intro": "تصف هذه الإعدادات النشاط التجاري الذي تنتمي إليه قاعدة البيانات، لا الشخص الذي يقرؤها. والتطبيقات التي يقدّمها Adminium تقرؤها من هنا.",
183
- "timezone": "المنطقة الزمنية",
184
- "timezoneHelper": "تُعرض التواريخ والأوقات بهذه المنطقة الزمنية. وبدونها تعود التطبيقات المستضافة على Adminium إلى توقيت UTC وتوضّح ذلك على الشاشة.",
185
- "guessedTitle": "هذه المنطقة الزمنية جاءت من الخادم",
186
- "guessedBody": "أخذها Adminium من الجهاز الذي يعمل عليه، ولم يخترها أحد هنا. احفظ لتأكيدها، أو اختر المنطقة الزمنية التي يعمل بها هذا النشاط التجاري فعليًا.",
187
- "timezonePlaceholder": "المنطقة/المدينة",
188
- "currency": "العملة",
189
- "currencyHelper": "تُستخدم لتنسيق المبالغ. اختيارية — وتركها فارغة يؤثّر في التنسيق فقط.",
190
- "currencyPlaceholder": "رمز ISO-4217",
191
- "notSet": "غير محدَّد",
192
- "noMatch": "لا توجد منطقة مطابقة",
193
- "noMatchCurrency": "لا توجد عملة مطابقة",
194
- "save": "حفظ",
195
- "failed": "تعذّر حفظ الإعدادات الإقليمية",
196
- "saved": "تم تحديث الإعدادات الإقليمية"
197
- },
198
- "test": {
199
- "ok": "الاتصال سليم · {latency, number} م.ث",
200
- "failed": "فشل اختبار الاتصال"
123
+ "design": {
124
+ "adopt": {
125
+ "action": "أضِف إلى تطبيقي",
126
+ "done": "أُنشئت {created} صفحة، وحُدِّثت {updated}، و{unchanged} محدَّثة بالفعل.",
127
+ "everything": "هذا الاتصال يعرض كل الجداول بالفعل، فلم يلزم تضمين شيء.",
128
+ "forbidden": "يستطيع دورك تغيير المخطط لكن لا يستطيع إنشاء الصفحات. اطلب من مسؤول لديه إدارة الاتصالات إضافة هذه الجداول إلى التطبيق.",
129
+ "grants": "لا يُمنح أي دور صلاحية تلقائيًا — امنحها من الإعدادات ← الأدوار.",
130
+ "offer": "الجدول الجديد لا يفعل شيئًا حتى تكون له صفحة. هل تضيف {tables} إلى تطبيقك؟",
131
+ "skippedEdited": "تُركت كما هي لأنك عدّلتها: {pages}."
132
+ },
133
+ "apply": "تطبيق",
134
+ "ceiling": {
135
+ "authorise": "اسمح بإعادة الكتابة هذه",
136
+ "body": "يحتوي {table} على أكثر من {rows} صف — أكبر مما يعيد Adminium كتابته تلقائيًا. لا يمكن السماح بذلك إلا لمسؤول عام، وسيظل الجدول مقفلًا طوال مدة إعادة الكتابة.",
137
+ "hint": "اكتب اسم الجدول تمامًا كما يظهر أعلاه.",
138
+ "notYours": "يحتوي {table} على أكثر من {rows} صف. لا يستطيع السماح بإعادة كتابة بهذا الحجم إلا مسؤول عام — اطلب ذلك منه، أو نفّذ التغيير في نافذة صيانة بأدواتك الخاصة.",
139
+ "prompt": "اكتب {table} مرة أخرى للسماح بإعادة الكتابة"
201
140
  },
202
- "introspect": {
203
- "noChanges": "المخطط دون تغيير — لا لقطة جديدة.",
204
- "updated": "أُعيد فحص المخطط",
205
- "masksProposed": "{count, plural, one {عمود واحد مقترح} two {عمودان مقترحان} few {# أعمدة مقترحة} many {# عمودًا مقترحًا} other {# عمود مقترح}} للإخفاء — راجعها في محرر إعادة التعيين.",
206
- "failed": "فشل فحص المخطط. حاول مرة أخرى."
141
+ "column": {
142
+ "help": "ماذا تعني هذه الإعدادات؟",
143
+ "key": "مفتاح",
144
+ "length": "الطول",
145
+ "link": "مرتبط بـ",
146
+ "linkHelp": "اربط هذا بصف في جدول آخر.",
147
+ "linkTypeNote": "يتم مطابقة النوع مع مفتاح الجدول المرتبط.",
148
+ "name": "الاسم",
149
+ "namePlaceholder": "client_id",
150
+ "noLink": "لا شيء",
151
+ "onDelete": "إذا حُذف الصف المرتبط",
152
+ "precision": "الدقة",
153
+ "primaryKey": "المفتاح الأساسي",
154
+ "remove": "إزالة {name}",
155
+ "required": "مطلوب",
156
+ "type": "النوع",
157
+ "unique": "فريد"
207
158
  },
208
- "delete": {
209
- "title": "حذف الاتصال",
210
- "body": "سيؤدي هذا إلى حذف «{name}» وصفحاته المولّدة. لن تُمسّ قاعدة بياناتك نفسها أبدًا.",
211
- "prompt": "اكتب {name} للتأكيد",
212
- "confirm": "حذف الاتصال",
159
+ "confirm": {
160
+ "body": "هذا التغيير يتخلّص من بيانات أو يزيل كائنًا. لا يمكن لـ Adminium التراجع عنه.",
213
161
  "cancel": "إلغاء",
214
162
  "close": "إغلاق",
215
- "success": "حُذف الاتصال «{name}»",
216
- "failed": "تعذّر حذف الاتصال. حاول مرة أخرى."
163
+ "confirm": "تطبيق التغييرات",
164
+ "prompt": "اكتب {word} للتأكيد",
165
+ "title": "تطبيق تغيير مُدمِّر"
217
166
  },
167
+ "designer": "مُصمِّم الجداول",
168
+ "discard": "تجاهل التغييرات",
169
+ "dropping": "محدد للحذف",
218
170
  "empty": {
219
- "title": "لا مصادر بيانات بعد",
220
- "body": "اربط قاعدة بيانات وسيولّد Adminium لوحة الإدارة من مخططها.",
221
- "cta": "ربط قاعدة بيانات"
171
+ "body": "أنشئ جدولًا، أو اختر واحدًا لتعديله. لا شيء يصل إلى قاعدة بياناتك قبل أن تراجع العبارات وتطبّقها.",
172
+ "title": "صمِّم مخطّطك"
173
+ },
174
+ "error": {
175
+ "atColumn": "العمود {n}، {field}",
176
+ "atTable": "الجدول {field}",
177
+ "empty": "الاسم مطلوب.",
178
+ "identifier": "استخدم حروفًا صغيرة وأرقامًا وشرطات سفلية، بدءًا بحرف.",
179
+ "tooLong": "طويل جدًا — {dialect} يسمح بـ {max} حرفًا."
180
+ },
181
+ "existing": "الجداول الموجودة",
182
+ "hazard": {
183
+ "irreversible": "لا يمكن التراجع عنه",
184
+ "locking": "يحتجز قفلًا",
185
+ "lossy": "يتخلّص من بيانات",
186
+ "refused": "مرفوض",
187
+ "rewrite": "يعيد كتابة الجدول",
188
+ "safe": "آمن"
189
+ },
190
+ "help": {
191
+ "close": "إغلاق",
192
+ "link": {
193
+ "example": "الحجز يرتبط بعميل. عندئذٍ يعرض Adminium العميل داخل الحجز، والحجوزات داخل العميل.",
194
+ "term": "الربط بجدول آخر",
195
+ "what": "يربط هذا الصف بصف في جدول آخر، ويطلب من قاعدة البيانات أن تُبقي الرابط صحيحًا — فلا يمكنك الإشارة إلى شيء غير موجود."
196
+ },
197
+ "primaryKey": {
198
+ "example": "بلا مفتاح أساسي يستطيع Adminium سرد الصفوف لكنه لا يستطيع تعديل صف بعينه أو حذفه.",
199
+ "term": "المفتاح الأساسي",
200
+ "what": "الحقل الذي يعرّف كل صف — وهو ما يستخدمه Adminium للتمييز بين صف وآخر. ينبغي أن يكون لكل جدول مفتاح أساسي واحد فقط، وهو في الغالب حقل \"id\" الذي يُنشأ لك."
201
+ },
202
+ "required": {
203
+ "example": "الطلب يحتاج إلى عميل، فذلك الحقل مطلوب. أما ملاحظة التسليم فاختيارية، فليست مطلوبة.",
204
+ "term": "مطلوب",
205
+ "what": "يجب ملء هذا الحقل. لا يمكن حفظ الصف وهو فارغ."
206
+ },
207
+ "subtitle": "وصف بلغة بسيطة لكل إعداد، وما الذي يغيّره لمن يستخدمون تطبيقك.",
208
+ "title": "ماذا تعني هذه الحقول",
209
+ "type": {
210
+ "example": "رقم الهاتف نص عادةً وليس رقمًا — فالأرقام تُسقط الأصفار التي في البداية.",
211
+ "term": "النوع",
212
+ "what": "نوع المعلومات التي يحملها الحقل — كلمات أو أعداد صحيحة أو مبالغ مالية أو تاريخ أو إجابة بنعم/لا. اختيار النوع الصحيح هو ما يتيح لـ Adminium عرض أداة اختيار تاريخ بدل مربع نص، وجمع عمود من المبالغ."
213
+ },
214
+ "unique": {
215
+ "example": "لا ينبغي أن يتشارك عميلان بريدًا إلكترونيًا واحدًا — اجعله فريدًا فلن يستطيعا ذلك.",
216
+ "term": "فريد",
217
+ "what": "لا يجوز أن يحمل صفان القيمة نفسها. ترفض قاعدة البيانات الصف الثاني."
218
+ }
222
219
  },
223
- "hostedApps": "التطبيقات المستضافة",
224
- "subtitlePaused": "{healthy, number} من {total, plural, one {اتصال واحد} two {اتصالين} few {# اتصالات} many {# اتصالًا} other {# اتصال}} بحالة سليمة · {paused, number} متوقّف مؤقتًا",
225
- "pause": {
226
- "title": "إيقاف هذا الاتصال مؤقتًا؟",
227
- "body": "يتوقّف Adminium عن فتح أي اتصال بـ «{name}». {pages, plural, other {صفحاته البالغ عددها #}} والتقارير المجدولة والتطبيقات المستضافة ستتوقّف عن تحميل البيانات حتى تستأنفه.",
228
- "keeps": "لا يُحذف أي شيء — يبقى الاتصال ومخططه {pages, plural, other {وصفحاته البالغ عددها #}}، وتعود جميعها بنقرة واحدة.",
229
- "confirm": "إيقاف الاتصال مؤقتًا",
230
- "pausedToast": "تم إيقاف الاتصال «{name}» مؤقتًا",
231
- "resumedToast": "تم استئناف الاتصال «{name}»",
232
- "pauseFailed": "تعذّر إيقاف الاتصال مؤقتًا. حاول مرة أخرى.",
233
- "resumeFailed": "تعذّر استئناف الاتصال. حاول مرة أخرى."
220
+ "keepTable": "الاحتفاظ بـ {table}",
221
+ "newTable": "جدول جديد",
222
+ "onDelete": {
223
+ "cascade": "احذف هذا الصف أيضًا",
224
+ "restrict": "منع الحذف",
225
+ "setNull": "اترك هذا الحقل فارغًا"
234
226
  },
235
- "rename": {
236
- "title": "إعادة تسمية الاتصال",
237
- "label": "الاسم",
238
- "helper": "اسم قاعدة البيانات هذه في Adminium كله البطاقة، ومجموعة الشريط الجانبي فوق صفحاتها، وكل قائمة اختيار تعرضها. أما قاعدة البيانات نفسها فلا يُعاد تسميتها.",
239
- "save": "إعادة التسمية",
240
- "saved": "تمت إعادة تسمية الاتصال",
241
- "failed": "تعذّرت إعادة تسمية الاتصال"
242
- }
243
- },
244
- "settingsHub": {
245
- "title": "إعدادات مساحة العمل",
246
- "subtitle": "الهوية والأمان والإجراءات الخطرة لمساحة العمل هذه.",
247
- "save": "حفظ التغييرات",
248
- "saved": "تم تحديث إعدادات مساحة العمل",
249
- "saveFailed": "تعذّر حفظ إعدادات مساحة العمل. حاول مرة أخرى.",
250
- "superAdminOnlyTitle": "يتطلب مشرفًا أعلى",
251
- "superAdminOnly": "لا يمكن تغيير هوية مساحة العمل وإعدادات الأمان إلا لمشرف أعلى.",
252
- "identity": {
253
- "heading": "هوية مساحة العمل",
254
- "appName": {
255
- "label": "اسم التطبيق",
256
- "helper": "يظهر في الشريط الجانبي وعنوان المتصفح ورسائل البريد الإلكتروني.",
257
- "error": "أدخل اسمًا لا يتجاوز 60 حرفًا."
258
- },
259
- "logo": {
260
- "label": "الشعار",
261
- "drop": "أفلِت صورة هنا",
262
- "helper": "PNG أو JPEG أو WebP أو GIF أو SVG بحجم أقصاه 1 ميغابايت. يحل محل العلامة المدمجة في كل مكان.",
263
- "upload": "رفع شعار",
264
- "replace": "استبدال الشعار",
265
- "remove": "إزالة",
266
- "uploaded": "تم تحديث الشعار",
267
- "removed": "تمت إزالة الشعار",
268
- "tooLarge": "حجم الصورة أكبر من 1 ميغابايت.",
269
- "badType": "اختر صورة PNG أو JPEG أو WebP أو GIF أو SVG.",
270
- "undo": "تراجع"
271
- },
272
- "showVersion": {
273
- "label": "الإصدار في الشريط الجانبي",
274
- "helper": "رقم الإصدار بجوار الشعار. إيقافه يخفي الإصدار الذي تشغّله."
275
- }
276
- },
277
- "security": {
278
- "heading": "الأمان",
279
- "require2fa": {
280
- "label": "فرض المصادقة الثنائية",
281
- "desc": "يجب على كل عضو تفعيل المصادقة الثنائية لتسجيل الدخول.",
282
- "note": "إرشادي وليس مانعًا: يُوجَّه الأعضاء بلا مصادقة ثنائية إلى إعدادها ولا يمكنهم إيقافها بعد ذلك، لكن تسجيل دخولهم لا يُمنع أبدًا، ومفاتيح API غير متأثرة."
283
- },
284
- "allowSignup": {
285
- "label": "السماح بالتسجيل الذاتي",
286
- "desc": "يمكن لأي شخص إنشاء حساب — عند الإيقاف تبقى مساحة العمل بالدعوة فقط."
287
- },
288
- "sessionTtl": {
289
- "label": "مدة الجلسة (بالساعات)",
290
- "error": "بين {min, number} و{max, number} ساعة."
291
- },
292
- "passwordMin": {
293
- "label": "الحد الأدنى لطول كلمة المرور",
294
- "error": "بين {min, number} و{max, number} حرفًا."
295
- }
296
- },
297
- "email": {
298
- "heading": "البريد الإلكتروني (SMTP)",
299
- "unconfigured": "لا يوجد خادم بريد مُعدّ، لذلك لا يستطيع Adminium إرسال إعادة تعيين كلمات المرور أو دعوات المستخدمين أو التقارير المجدولة.",
300
- "host": {
301
- "label": "مضيف SMTP",
302
- "error": "اسم مضيف أو عنوان IP فقط — بدون بروتوكول أو منفذ أو بيانات اعتماد."
303
- },
304
- "port": {
305
- "label": "المنفذ",
306
- "error": "بين {min, number} و{max, number}."
307
- },
308
- "user": {
309
- "label": "اسم المستخدم",
310
- "helper": "اتركه فارغًا إذا كان المُرحِّل لا يطلب مصادقة."
311
- },
312
- "pass": {
313
- "label": "كلمة المرور",
314
- "helper": "تُخزَّن مشفَّرة ولا تُعرض مرة أخرى. اتركها فارغة للإبقاء على الحالية.",
315
- "error": "اسم المستخدم هذا يحتاج إلى كلمة مرور."
316
- },
317
- "from": {
318
- "label": "عنوان المُرسِل",
319
- "helper": "العنوان وحده، أو اسم معروض قبله.",
320
- "error": "أدخل عنوان بريد إلكتروني."
321
- },
322
- "secure": {
323
- "label": "TLS ضمني",
324
- "helper": "مُفعَّل للمنفذ 465. عند الإيقاف يبدأ الاتصال بنص واضح ثم يُرقَّى عبر STARTTLS، وهو ما يتوقعه المنفذ 587."
325
- },
326
- "remove": "إزالة خادم البريد",
327
- "review": {
328
- "removed": "أُزيل",
329
- "password": "استُبدلت"
330
- }
227
+ "plan": "مراجعة التغييرات",
228
+ "result": {
229
+ "applied": "تم التطبيق. أعاد Adminium قراءة مخططك.",
230
+ "failed": "لم يُطبَّق أي شيء — قاعدة بياناتك لم تتغيّر. {error}",
231
+ "partial": "تم التطبيق جزئيًا: نُفِّذت {done} من {total} خطوة. إعادة تطبيق التغييرات نفسها تُكملها.",
232
+ "repaired": "جرى تطبيق إعادة التسمية على {pages, plural, one {صفحة واحدة} two {صفحتين} few {# صفحات} many {# صفحة} other {# صفحة}} و{grants, plural, one {صلاحية دور واحدة} two {صلاحيتَي دور} few {# صلاحيات أدوار} many {# صلاحية دور} other {# صلاحية دور}} و{overrides, plural, one {تجاوز مخطط واحد} two {تجاوزَي مخطط} few {# تجاوزات مخطط} many {# تجاوز مخطط} other {# تجاوز مخطط}}."
331
233
  },
332
234
  "review": {
333
- "title": "حفظ إعدادات مساحة العمل",
334
- "subtitle": "راجع تغييراتك قبل الحفظ.",
335
- "confirm": "حفظ التغييرات",
336
- "cancel": "إلغاء",
337
- "close": "إغلاق",
338
- "on": "مفعّل",
339
- "off": "متوقف",
340
- "shown": "ظاهر",
341
- "hidden": "مخفي",
342
- "change": "{before} → {after}"
343
- },
344
- "defaultsCard": {
345
- "heading": "الإعدادات الافتراضية للمظهر واللغة",
346
- "body": "إعدادات السمة ولون التمييز والكثافة واللغة على مستوى مساحة العمل موجودة ضمن الإعدادات الافتراضية العامة.",
347
- "cta": "فتح الإعدادات الافتراضية العامة"
348
- },
349
- "danger": {
350
- "heading": "منطقة الخطر",
351
- "subtitle": "إجراءات لا يمكن التراجع عنها.",
352
- "empty": "لا شيء للحذف — لا اتصالات بعد.",
353
- "deleteDesc": "يحذف الاتصال والصفحات المولّدة منه. لن تُمسّ قاعدة بياناتك. لا يمكن التراجع عن هذا الإجراء.",
354
- "deleteCta": "حذف الاتصال"
355
- },
356
- "aiCard": {
357
- "heading": "الإثراء بالذكاء الاصطناعي",
358
- "body": "هيّئ مزوّد ذكاء اصطناعي (أو رحلة النسخ واللصق) لإثراء التسميات والمجموعات والعلاقات.",
359
- "cta": "فتح إعدادات الذكاء الاصطناعي"
360
- },
361
- "pagesCard": {
362
- "heading": "الصفحات",
363
- "body": "أضف الصفحات وحرّرها واحذفها، وغيّر ما تعرضه كل صفحة، وأعد ترتيب الشريط الجانبي.",
364
- "cta": "إدارة الصفحات"
235
+ "noChanges": "لا توجد تغييرات على المخطّط بعد.",
236
+ "pending": "راجع تغييراتك لترى العبارات الدقيقة التي سينفّذها Adminium.",
237
+ "steps": "الخطوات المُخطَّطة",
238
+ "superAdmin": "مدير عام",
239
+ "unfinished": "عملية تطبيق سابقة على هذا الاتصال لم تُبلِّغ عن نتيجة قط. قد يكون مخطّطها في منتصف الطريق بين شكلين — راجع سجلّ التغييرات قبل تطبيق المزيد."
365
240
  },
366
- "translationsCard": {
367
- "heading": "اللغات والترجمات",
368
- "body": "أعد صياغة أي نص في Adminium، واختر اللغات المتاحة للناس، وأضف لغاتك الخاصة.",
369
- "cta": "فتح الترجمات"
370
- }
241
+ "reviewPane": "مراجعة",
242
+ "table": {
243
+ "addColumn": "إضافة عمود",
244
+ "columns": "الأعمدة",
245
+ "drop": "حذف هذا الجدول",
246
+ "dropHelp": "سيُحذف الجدول وكل صفوفه. سترى بالضبط ما الذي سيتعطل قبل تنفيذ أي شيء.",
247
+ "name": "اسم الجدول",
248
+ "nameHelp": "حروف صغيرة وأرقام وشرطات سفلية.",
249
+ "namePlaceholder": "reservations",
250
+ "noKey": "هذا الجدول بلا مفتاح أساسي، لذا سيعامله Adminium للقراءة فقط — يمكن سرد الصفوف لا تعديلها.",
251
+ "renameHelp": "تغييره يعيد تسمية الجدول في قاعدة بياناتك.",
252
+ "uuidKeyUnavailable": "على هذا المحرّك يجب أن يكون المفتاح عددًا صحيحًا مُولَّدًا: لا يمكن قراءة uuid المُولَّد من قاعدة البيانات بعد الإدراج."
253
+ },
254
+ "unnamed": "سمِّ كل جدول وعمود لمراجعة التغييرات.",
255
+ "unrepresentableDefaults": "تحتفظ هذه الأعمدة بقيمة افتراضية تولّدها قاعدة البيانات ولا يمكن لـ Adminium تعديلها هنا، وتُترك كما هي: {columns}"
371
256
  },
372
- "settingsAi": {
373
- "title": "الإثراء بالذكاء الاصطناعي",
374
- "subtitle": "اربط نموذجًا ليقترح Adminium التسميات والمجموعات والعلاقات والمزيد — تُراجَع دائمًا كفرق قبل تطبيق أي شيء.",
375
- "saved": "تم حفظ مزوّد الذكاء الاصطناعي",
376
- "saveFailed": "تعذّر حفظ مزوّد الذكاء الاصطناعي. حاول مرة أخرى.",
377
- "save": "حفظ المزوّد",
378
- "test": "اختبار الاتصال",
379
- "testHintDirty": "احفظ تغييراتك قبل الاختبار.",
380
- "testing": "جارٍ التواصل مع المزوّد…",
381
- "testError": "فشل الاختبار",
382
- "testErrorBody": "تعذّر الوصول إلى المزوّد. تحقق من المفتاح وعنوان URL الأساسي.",
383
- "testOk": "تم الاتصال بـ {model} خلال {latency} مللي ثانية",
384
- "testUnknownModel": "المزوّد",
385
- "provider": {
386
- "heading": "مزوّد الذكاء الاصطناعي",
387
- "subtitle": "اختر كيف يصل Adminium إلى نموذج لإثراء مخططك. تُخزَّن المفاتيح مشفّرة ولا تُعرض مرة أخرى أبدًا.",
388
- "active": "نشط",
389
- "anthropic": {
390
- "label": "Anthropic",
391
- "desc": "نماذج Claude عبر واجهة Anthropic البرمجية."
392
- },
393
- "openai": {
394
- "label": "OpenAI",
395
- "desc": "نماذج GPT عبر واجهة OpenAI البرمجية."
396
- },
397
- "openaiCompatible": {
398
- "label": "متوافق مع OpenAI",
399
- "desc": "أي نقطة نهاية تتحدث بتنسيق OpenAI — Groq وTogether وvLLM وLM Studio."
400
- },
401
- "ollama": {
402
- "label": "Ollama (محلي)",
403
- "desc": "نماذج تعمل محليًا عبر Ollama بدون مفتاح وبدون سحابة."
404
- },
405
- "requiresNetwork": "يتطلب اتصالاً بالإنترنت ومفتاح API",
406
- "networkDisabledTitle": "مزوّدو الذكاء الاصطناعي المباشرون معطَّلون في هذا التثبيت",
407
- "networkDisabledBody": "تم إعداد نسخة Adminium هذه دون وصول صادر إلى الإنترنت، لذا لا يمكنها الوصول إلى واجهة أي مزوّد. استخدم دورة النسخ واللصق أدناه — لا تحتاج إلى مفتاح ولا إلى شبكة."
408
- },
409
- "configure": {
410
- "heading": "تهيئة {provider}"
411
- },
412
- "field": {
413
- "baseUrl": "عنوان URL الأساسي",
414
- "baseUrlOptional": "اتركه كما هو ما لم يكن Ollama يعمل على مضيف آخر.",
415
- "baseUrlHelper": "جذر نقطة النهاية الذي يخدم ‎/chat/completions.",
416
- "model": "النموذج",
417
- "modelFreeText": "أدخل معرّف النموذج الدقيق الذي تخدمه نقطة النهاية لديك.",
418
- "modelLive": "تم التحميل مباشرة من المزوّد.",
419
- "modelStatic": "قائمة موثوقة؛ اكتب معرّفًا مخصصًا بعد الحفظ لتحديثها.",
420
- "modelLoading": "جارٍ التحميل…",
421
- "modelPlaceholder": "اختر نموذجًا…",
422
- "key": "مفتاح API",
423
- "keyStored": "مخزَّن مشفّرًا. استبدله لاستخدام مفتاح مختلف.",
424
- "keyMask": "sk-…{last4}",
425
- "keyReplace": "استبدال المفتاح",
426
- "keyOptional": "اختياري — بعض نقاط النهاية لا تحتاج إلى مفتاح.",
427
- "keyWriteOnly": "للكتابة فقط: بمجرد حفظه لا يُعرض مرة أخرى أبدًا.",
428
- "noKeyTitle": "لا حاجة إلى مفتاح API",
429
- "noKeyBody": "يعمل Ollama محليًا، لذا لا يغادر أي شيء هذا الجهاز."
430
- },
431
- "runStatus": {
432
- "draft": "مسودة",
433
- "running": "قيد التشغيل",
434
- "awaitingResponse": "في انتظار الرد",
435
- "validated": "تم التحقق",
436
- "applied": "مطبَّق",
437
- "partiallyApplied": "مطبَّق جزئيًا",
438
- "failed": "فشل",
439
- "discarded": "مُهمَل"
440
- },
441
- "byo": {
442
- "heading": "لا مفتاح؟ استخدم أداة الذكاء الاصطناعي الخاصة بك",
443
- "subtitle": "رحلة النسخ واللصقلا يغادر أي شيء هذا الجهاز.",
444
- "body": "يستطيع Studio توليد مطالبة مكتفية ذاتيًا من مخططك. شغّلها في Claude Code أو ChatGPT أو أي أداة تفضّلها، ثم الصق JSON الذي تعيده في معالج الاتصال. نفس التحقق ونفس المراجعة ونفس النتيجة كالمسار المباشر.",
445
- "guaranteeTitle": "ضمان الخلو من القياس عن بُعد",
446
- "guarantee1": "تحمل المطالبة مخططك والإحصاءات المجمّعة فقط — ولا تحمل بيانات الصفوف افتراضيًا أبدًا.",
447
- "guarantee2": "لا تُضمَّن أي بيانات اعتماد أو عنوان URL للنسخة أو معرّفات.",
448
- "guarantee3": "عمليات BYO لا تُجري أي اتصالات شبكية.",
449
- "promptVersion": "المطالبة {version}",
450
- "schemaVersion": "المخطط {version}",
451
- "headingRecommended": "استخدم أداة الذكاء الاصطناعي الخاصة بك — دون الحاجة إلى مفتاح",
452
- "recommended": "موصى به"
257
+ "diagram": {
258
+ "ceiling": "يتم عرض أكثر {shown} جدولًا ترابطًا. و{omitted} جدولًا آخر مخفيّ — ابحث عنه لإظهاره.",
259
+ "legend": {
260
+ "declared": "مفتاح خارجي",
261
+ "inferred": "مُستنتَج",
262
+ "virtual": "مُضاف في Adminium"
263
+ },
264
+ "legendLabel": "مفتاح الرموز",
265
+ "node": {
266
+ "foreignKey": "مفتاح خارجي",
267
+ "more": "+{count} أخرى",
268
+ "primaryKey": "مفتاح أساسي"
269
+ },
270
+ "outline": {
271
+ "intro": "{tables} جدولًا و{relations} علاقة، في صورة قائمة.",
272
+ "more": " و{count} أخرى",
273
+ "referencedBy": "مُشار إليه من: {list}",
274
+ "references": "يشير إلى: {list}"
275
+ },
276
+ "saveLayout": "حفظ التخطيط",
277
+ "search": "ابحث عن جدول أو عمود",
278
+ "showDiagram": "عرض المخطّط",
279
+ "showList": "عرض كقائمة"
280
+ },
281
+ "documents": {
282
+ "cancel": "إلغاء",
283
+ "connectionLabel": "الاتصال",
284
+ "delete": "حذف",
285
+ "delivery": {
286
+ "email": "أرسله إلى",
287
+ "noEmail": "لا أحد — يبقى على السجل فقط",
288
+ "noEmailSlot": "هذا النوع من المستندات ليس فيه حقل عنوان، فلا يمكن إرساله.",
289
+ "noSmtp": "لم يُضبط خادم بريد لهذا Adminium بعد، فلا يمكن إرسال شيء. اضبط واحداً من Studio ← الإعدادات ← البريد.",
290
+ "stored": "يبقى على السجل دائماً."
291
+ },
292
+ "disabled": "موقوف",
293
+ "edit": "تعديل",
294
+ "empty": "لا روابط بعد.",
295
+ "grants": {
296
+ "refused": "هذا الرابط يقرأ {tables}، وهو ما لا يحق لك قراءته. المستندات الصادرة عنه ستفشل لديك.",
297
+ "title": "لا يحق لك قراءة كل هذا"
298
+ },
299
+ "intro": "الرابط يحدد أي أعمدة أي جدول تصنع نوعاً من المستندات، وما الذي يرسمه، وإلى أين يذهب.",
300
+ "name": "سمِّ هذا الرابط",
301
+ "newFrom": "رابط جديد لـ:",
302
+ "noProvider": "لا توجد بعد إضافة مثبَّتة تستطيع رسم المستندات. ثبّت واحدة من الإضافات، فتظهر هنا الروابط الممكنة.",
303
+ "pickTable": "اختر جدولاً…",
304
+ "prefix": "بادئة الترقيم",
305
+ "render": {
306
+ "failedRow": "لم يُرسم شيء: {reason}",
307
+ "intro": "ارسم واحداً الآن، من صف تختاره. لا يُرسل شيء إلى أي مكان — يبقى على السجل مثل أي مستند آخر.",
308
+ "noRows": "لا توجد صفوف للرسم منها بعد.",
309
+ "open": "افتحه",
310
+ "pending": "يُرسم…",
311
+ "pick": "ارسم هذا",
312
+ "ready": "تم الرسم.",
313
+ "saveFirst": "احفظ الرابط أولاً. المستند يُرسم من رابط محفوظ، فترى ما يصنعه قبل أي أحد آخر.",
314
+ "search": "ابحث في الصفوف",
315
+ "slow": "لم يظهر أي مستند بعد. ربما ما زال ينتظر دوره، أو أن هذا التثبيت لا يشغّل المهام في الخلفية — ولن يُرسم شيء حتى يشغّلها.",
316
+ "slowTitle": "لا شيء حتى الآن"
317
+ },
318
+ "save": "حفظ الرابط",
319
+ "slot": {
320
+ "byDefault": "يملؤه Adminium",
321
+ "lineColumnOf": "{column} لكل بند",
322
+ "lineColumns": "ما الذي يملأ كل عمود من البند",
323
+ "looksLikeLines": "يبدو أنها بنود",
324
+ "noChildren": "لا شيء في قاعدة بياناتك يشير إلى هذا الجدول، فلا توجد بنود لرسمها. يحتاج المستند إلى جدول فرعي بمفتاح خارجي يعود إلى هذا الجدول.",
325
+ "noLines": "لا بنود",
326
+ "pii": "بيانات مخفية",
327
+ "typed": "قيمة أكتبها",
328
+ "typedHint": "مكتوبة هنا، لا تُقرأ من بياناتك كل مستند من هذا الرابط يأخذ القيمة نفسها.",
329
+ "typedValue": "قيمة {slot}",
330
+ "unmapped": "غير مملوء"
453
331
  },
454
- "history": {
455
- "heading": "سجل العمليات",
456
- "subtitle": "عمليات الإثراء السابقة. افتح إحداها لمراجعة اقتراحاتها.",
457
- "tableLabel": "عمليات الإثراء",
458
- "colDate": "التاريخ",
459
- "colSource": "المصدر",
460
- "colStatus": "الحالة",
461
- "colChunks": "الأجزاء",
462
- "openReview": "افتح مراجعة العملية بتاريخ {date}",
463
- "connection": "الاتصال",
464
- "empty": "لا توجد عمليات إثراء بعد. أثرِ مخططًا من معالج الاتصال لعرض السجل هنا.",
465
- "errorTitle": "تعذّر تحميل العمليات",
466
- "errorBody": "أعد تحميل الصفحة للمحاولة مرة أخرى.",
467
- "noConnections": "اربط قاعدة بيانات أولًا — تُسجَّل عمليات الإثراء لكل اتصال على حدة.",
468
- "byo": "BYO",
469
- "directPath": "مباشر"
470
- }
332
+ "step": {
333
+ "delivery": "إلى أين يذهب",
334
+ "kind": "النوع",
335
+ "mapping": "ما الذي يملأ كل حقل",
336
+ "mappingHelp": "كل حقل يقرأ عموداً، أو يأخذ قيمة تكتبها هنا.",
337
+ "render": "جرّبه على صف",
338
+ "table": "الاتصال والجدول",
339
+ "trigger": "ما الذي يرسمه"
340
+ },
341
+ "tableLabel": "الجدول",
342
+ "title": "روابط المستندات",
343
+ "trigger": {
344
+ "created": "عند إضافة سطر",
345
+ "manual": "فقط عندما يطلب أحد",
346
+ "manualShort": "عند الطلب",
347
+ "note": "الأسطر القادمة من استيراد أو المكتوبة مباشرة في قاعدة البيانات لا ترسم شيئاً — فقط الكتابة عبر Adminium.",
348
+ "noteTitle": "ما الذي يُعدّ تغييراً",
349
+ "updated": "عند تغيّر سطر"
350
+ },
351
+ "unbound": "ما زال يلزم ملؤه: {slots}"
471
352
  },
472
353
  "enrich": {
473
- "title": "الإثراء بالذكاء الاصطناعي",
474
- "subtitle": "يمكنك اختياريًا تحسين التسميات والمجموعات والتعدادات ولوحات المعلومات المُولّدة باستخدام نموذج لغوي كبير. يعمل الأساس الاستدلالي بدونه — وهذا يضيف فقط اقتراحات تراجعها قبل تطبيق أي شيء.",
475
- "intentLabel": "كيف تريد الإثراء؟",
476
- "sectionsLegend": "ما الذي ينبغي للذكاء الاصطناعي أن يقرره؟",
477
- "localesLegend": "ترجمة التسميات إلى",
478
- "localeLocked": "(مطلوب)",
479
- "samplingTitle": "تضمين قيم عينة",
480
- "samplingHint": "يضمّن ما يصل إلى 20 قيمة حقيقية لكل عمود غير حاوٍ على بيانات شخصية في المُوجّه.",
481
- "samplingPreviewTitle": "ما الذي يغادر هذا الجهاز",
482
- "samplingPreviewBody": "ما يصل إلى 20 قيمة من الأكثر شيوعًا لكل عمود غير حاوٍ على بيانات شخصية، إضافةً إلى الحد الأدنى/الأقصى للأعمدة الرقمية والتاريخية. لا تُؤخذ عينات من الأعمدة المُعلَّمة كبيانات شخصية أبدًا. يبقى كل ما عداها مُجمَّعًا فقط. راجع المُوجّه الدقيق قبل النسخ (BYO) — لا يُرسَل أي شيء دون إجراء منك.",
483
- "noSections": "اختر مجموعة قرار واحدة على الأقل للإثراء.",
484
- "generatePrompt": "إنشاء المُوجّه",
485
- "startProvider": "بدء الإثراء",
486
- "startOver": "البدء من جديد",
487
- "copied": "تم النسخ",
488
- "createFailed": "تعذّر إنشاء مُوجّه الإثراء — أعد المحاولة.",
489
- "createFailedTitle": "تعذّر البدء",
490
- "providerFallback": "مزوّد الذكاء الاصطناعي الخاص بك",
491
- "fileTitle": "يتطلّب الإثراء بالذكاء الاصطناعي قاعدة بيانات حيّة",
492
- "fileBody": "لا تملك مصادر ملفات المخطط لقطة للإثراء بعد. اتصل بقاعدة بيانات حيّة لاستخدام الإثراء بالذكاء الاصطناعي، أو تابع — فالأساس الاستدلالي يُولّد تطبيقًا كاملًا رغم ذلك.",
493
- "section": {
494
- "labels": "التسميات والأوصاف",
495
- "groups": "مجموعات التنقّل",
496
- "enums": "دلالات التعداد",
497
- "relations": "العلاقات",
498
- "keys": "الأعمدة المفتاحية",
499
- "templates": "قوالب الصفحات",
500
- "widgets": "أدوات لوحة المعلومات",
501
- "pii": "البيانات الشخصية والإخفاء",
502
- "icons": "الأيقونات",
503
- "microcopy": "النصوص الدقيقة"
504
- },
505
- "provider": {
506
- "title": "استخدام مزوّد الذكاء الاصطناعي الخاص بي",
507
- "description": "شغّل الإثراء الآن باستخدام مزوّدك المُهيّأ. تراجع كل اقتراح على هيئة فرق.",
508
- "unconfigured": "لم يُهيّأ أي مزوّد ذكاء اصطناعي بعد — انسخ مُوجّهًا إلى أداتك الخاصة أدناه، أو هيّئ مزوّدًا أولًا.",
509
- "settingsHint": "هل تريد تشغيله مباشرةً؟",
510
- "settingsLink": "هيّئ مزوّدًا في الإعدادات ← الذكاء الاصطناعي",
511
- "networkDisabled": "لا تملك نسخة Adminium هذه وصولاً صادرًا إلى الإنترنت، لذا لا يمكنها الوصول إلى واجهة أي مزوّد. استخدم بدلاً من ذلك دورة النسخ واللصق — الموجّه نفسه والمراجعة نفسها."
512
- },
513
354
  "byo": {
514
- "cardTitle": "نسخ مُوجّه إلى أداة الذكاء الاصطناعي الخاصة بي",
515
355
  "cardDescription": "انسخ مُوجّهًا مكتفيًا بذاته إلى Claude Code أو ChatGPT أو أي أداة — ثم الصق JSON مرة أخرى. لا حاجة إلى مفتاح، ولا يغادر أي شيء هذا الجهاز تلقائيًا.",
516
- "guidance": "شغّل هذا في أي أداة ذكاء اصطناعي Claude Code أو ChatGPT أو غيرها. الصق JSON الذي تُعيده أدناه.",
517
- "promptLabel": "مُوجّه الإثراء",
518
- "promptLabelN": "مُوجّه الإثراء {index} من {total}",
519
- "tokenChip": "≈ {tokens} رمزًا",
520
- "copyPrompt": "نسخ المُوجّه",
521
- "copyPromptDone": "تم نسخ المُوجّه",
522
- "download": "تنزيل .md",
523
- "chunkTabs": "أجزاء المُوجّه",
356
+ "cardTitle": "نسخ مُوجّه إلى أداة الذكاء الاصطناعي الخاصة بي",
357
+ "cardTitleRecommended": "انسخ موجّهًا إلى أداة الذكاء الاصطناعي الخاصة بي — موصى به",
524
358
  "chunkTab": "المُوجّه {index}",
359
+ "chunkTabs": "أجزاء المُوجّه",
525
360
  "chunkValid": "تم التحقّق من الجزء {index}",
526
- "pasteLabel": "الصق استجابة JSON",
527
- "pastePlaceholder": "الصق استجابة JSON هنا…",
528
- "validate": "تحقّق",
529
- "valid": "تم التحقّق من الاستجابة",
530
- "mergedTitle": "تم التحقّق من كل الأجزاء البالغة {count} ودمجها",
531
- "mergedTitleSingle": "تم التحقّق من الاستجابة",
532
- "mergedBody": "الاقتراحات جاهزة للمراجعة مقابل الأساس الاستدلالي.",
533
- "errorsTitle": "عثر التحقّق على {count} مشكلة",
361
+ "continueReview": "المتابعة إلى المراجعة",
534
362
  "copyErrors": "نسخ الأخطاء لأداة الذكاء الاصطناعي",
535
363
  "copyErrorsDone": "تم نسخ الأخطاء",
536
364
  "copyErrorsHint": "الصق هذا مجددًا في أداة الذكاء الاصطناعي للحصول على استجابة مُصحّحة.",
365
+ "copyPrompt": "نسخ المُوجّه",
366
+ "copyPromptDone": "تم نسخ المُوجّه",
367
+ "download": "تنزيل .md",
537
368
  "droppedItems": "أُسقِط {count} اقتراح أثناء التحقّق — تعرض المراجعة البقية.",
538
- "pendingTitle": "تحقّق من كل مُوجّه للمتابعة",
369
+ "errorsTitle": "عثر التحقّق على {count} مشكلة",
370
+ "guidance": "شغّل هذا في أي أداة ذكاء اصطناعي — Claude Code أو ChatGPT أو غيرها. الصق JSON الذي تُعيده أدناه.",
371
+ "mergedBody": "الاقتراحات جاهزة للمراجعة مقابل الأساس الاستدلالي.",
372
+ "mergedTitle": "تم التحقّق من كل الأجزاء البالغة {count} ودمجها",
373
+ "mergedTitleSingle": "تم التحقّق من الاستجابة",
374
+ "pasteLabel": "الصق استجابة JSON",
375
+ "pastePlaceholder": "الصق استجابة JSON هنا…",
539
376
  "pendingBody": "الصق استجابة JSON أعلاه وتحقّق منها للمتابعة إلى المراجعة.",
540
377
  "pendingBodyChunked": "يجب التحقّق من كل جزء قبل دمج الاقتراحات. الصق كل مُوجّه أعلاه وتحقّق منه.",
378
+ "pendingTitle": "تحقّق من كل مُوجّه للمتابعة",
379
+ "promptLabel": "مُوجّه الإثراء",
380
+ "promptLabelN": "مُوجّه الإثراء {index} من {total}",
541
381
  "requestFailed": "تعذّر الوصول إلى الخادم للتحقّق — أعد المحاولة.",
542
- "continueReview": "المتابعة إلى المراجعة",
543
- "wholeDocument": "المستند بأكمله",
544
- "cardTitleRecommended": "انسخ موجّهًا إلى أداة الذكاء الاصطناعي الخاصة بي — موصى به"
382
+ "tokenChip": " {tokens} رمزًا",
383
+ "valid": "تم التحقّق من الاستجابة",
384
+ "validate": "تحقّق",
385
+ "wholeDocument": "المستند بأكمله"
545
386
  },
387
+ "copied": "تم النسخ",
388
+ "createFailed": "تعذّر إنشاء مُوجّه الإثراء — أعد المحاولة.",
389
+ "createFailedTitle": "تعذّر البدء",
546
390
  "direct": {
547
- "title": "الإثراء بالذكاء الاصطناعي",
548
- "subtitle": "يجري إرسال مخططك إلى",
391
+ "back": "العودة إلى الخيارات",
549
392
  "building": "يجري إنشاء المُوجّه…",
550
- "logLabel": "سجلّ الإثراء",
551
393
  "cancel": "إلغاء",
552
- "back": "العودة إلى الخيارات",
553
- "retry": "إعادة المحاولة",
554
- "done": "اكتمل الإثراء — راجع الاقتراحات.",
555
394
  "continueReview": "المتابعة إلى المراجعة",
395
+ "done": "اكتمل الإثراء — راجع الاقتراحات.",
396
+ "errorTitle": "فشل الإثراء",
556
397
  "failed": "فشل تشغيل المزوّد. تحقّق من إعدادات الذكاء الاصطناعي وأعد المحاولة.",
557
398
  "jobFailed": "لم يكتمل تشغيل الإثراء.",
399
+ "logLabel": "سجلّ الإثراء",
400
+ "retry": "إعادة المحاولة",
558
401
  "startFailed": "تعذّر بدء التشغيل — أعد المحاولة.",
559
- "errorTitle": "فشل الإثراء"
402
+ "subtitle": "يجري إرسال مخططك إلى",
403
+ "title": "الإثراء بالذكاء الاصطناعي"
404
+ },
405
+ "fileBody": "لا تملك مصادر ملفات المخطط لقطة للإثراء بعد. اتصل بقاعدة بيانات حيّة لاستخدام الإثراء بالذكاء الاصطناعي، أو تابع — فالأساس الاستدلالي يُولّد تطبيقًا كاملًا رغم ذلك.",
406
+ "fileTitle": "يتطلّب الإثراء بالذكاء الاصطناعي قاعدة بيانات حيّة",
407
+ "generatePrompt": "إنشاء المُوجّه",
408
+ "intentLabel": "كيف تريد الإثراء؟",
409
+ "localeLocked": "(مطلوب)",
410
+ "localesLegend": "ترجمة التسميات إلى",
411
+ "noSections": "اختر مجموعة قرار واحدة على الأقل للإثراء.",
412
+ "provider": {
413
+ "configError": "تعذّر تحميل إعدادات المزوّد — هيّئ مزوّدًا من الإعدادات ← الذكاء الاصطناعي ثم عُد إلى هذه الخطوة.",
414
+ "description": "شغّل الإثراء الآن باستخدام مزوّدك المُهيّأ. تراجع كل اقتراح على هيئة فرق.",
415
+ "networkDisabled": "لا تملك نسخة Adminium هذه وصولاً صادرًا إلى الإنترنت، لذا لا يمكنها الوصول إلى واجهة أي مزوّد. استخدم بدلاً من ذلك دورة النسخ واللصق — الموجّه نفسه والمراجعة نفسها.",
416
+ "readyBody": "اختر «استخدام مزوّد الذكاء الاصطناعي الخاص بي» أعلاه لتشغيل الإثراء على هذا الاتصال الآن.",
417
+ "readyTitle": "تم تهيئة مزوّد الذكاء الاصطناعي",
418
+ "setUpHere": "هيّئ مزوّدًا هنا",
419
+ "setUpHide": "إخفاء تهيئة المزوّد",
420
+ "settingsHint": "هل تريد تشغيله مباشرةً؟",
421
+ "settingsLink": "هيّئ مزوّدًا في الإعدادات ← الذكاء الاصطناعي",
422
+ "title": "استخدام مزوّد الذكاء الاصطناعي الخاص بي",
423
+ "unconfigured": "لم يُهيّأ أي مزوّد ذكاء اصطناعي بعد — هيّئ واحدًا أدناه، أو انسخ مُوجّهًا إلى أداة الذكاء الاصطناعي الخاصة بك."
424
+ },
425
+ "providerFallback": "مزوّد الذكاء الاصطناعي الخاص بك",
426
+ "samplingHint": "يضمّن ما يصل إلى 20 قيمة حقيقية لكل عمود غير حاوٍ على بيانات شخصية في المُوجّه.",
427
+ "samplingPreviewBody": "ما يصل إلى 20 قيمة من الأكثر شيوعًا لكل عمود غير حاوٍ على بيانات شخصية، إضافةً إلى الحد الأدنى/الأقصى للأعمدة الرقمية والتاريخية. لا تُؤخذ عينات من الأعمدة المُعلَّمة كبيانات شخصية أبدًا. يبقى كل ما عداها مُجمَّعًا فقط. راجع المُوجّه الدقيق قبل النسخ (BYO) — لا يُرسَل أي شيء دون إجراء منك.",
428
+ "samplingPreviewTitle": "ما الذي يغادر هذا الجهاز",
429
+ "samplingTitle": "تضمين قيم عينة",
430
+ "section": {
431
+ "enums": "دلالات التعداد",
432
+ "groups": "مجموعات التنقّل",
433
+ "icons": "الأيقونات",
434
+ "keys": "الأعمدة المفتاحية",
435
+ "labels": "التسميات والأوصاف",
436
+ "microcopy": "النصوص الدقيقة",
437
+ "pii": "البيانات الشخصية والإخفاء",
438
+ "relations": "العلاقات",
439
+ "templates": "قوالب الصفحات",
440
+ "widgets": "أدوات لوحة المعلومات"
560
441
  },
442
+ "sectionsLegend": "ما الذي ينبغي للذكاء الاصطناعي أن يقرره؟",
561
443
  "skip": {
562
- "title": "تخطٍّاستخدام الاستدلال فقط",
563
- "description": "التوليد من الأساس الاستدلالي. يمكنك الإثراء لاحقًا من الإعدادات ← الذكاء الاصطناعي — لا يُعاقَب التخطّي أبدًا.",
444
+ "confirmBody": "سيستخدم التطبيق المُولّد التسميات والمجموعات ولوحات المعلومات الاستدلالية. تابع للتوليد يمكنك تشغيل الإثراء بالذكاء الاصطناعي في أي وقت من الإعدادات ← الذكاء الاصطناعي.",
564
445
  "confirmTitle": "المتابعة بالاستدلال",
565
- "confirmBody": "سيستخدم التطبيق المُولّد التسميات والمجموعات ولوحات المعلومات الاستدلالية. تابع للتوليد يمكنك تشغيل الإثراء بالذكاء الاصطناعي في أي وقت من الإعدادات ← الذكاء الاصطناعي."
446
+ "description": "التوليد من الأساس الاستدلالي. يمكنك الإثراء لاحقًا من الإعدادات الذكاء الاصطناعي لا يُعاقَب التخطّي أبدًا.",
447
+ "title": "تخطٍّ — استخدام الاستدلال فقط"
448
+ },
449
+ "startOver": "البدء من جديد",
450
+ "startProvider": "بدء الإثراء",
451
+ "subtitle": "يمكنك اختياريًا تحسين التسميات والمجموعات والتعدادات ولوحات المعلومات المُولّدة باستخدام نموذج لغوي كبير. يعمل الأساس الاستدلالي بدونه — وهذا يضيف فقط اقتراحات تراجعها قبل تطبيق أي شيء.",
452
+ "title": "الإثراء بالذكاء الاصطناعي"
453
+ },
454
+ "generate": {
455
+ "errorTitle": "فشل التوليد",
456
+ "failed": "فشل التوليد — أعد المحاولة، أو أعد تشغيل الاستبطان أولًا.",
457
+ "fileBody": "تم تحليل مخططك بنجاح والمعاينة أعلاه حقيقية. توليد تطبيق يعمل مباشرةً من ملف مخطط (بصفوف بديلة) غير متاح بعد — اربط قاعدة بيانات حيّة للتوليد اليوم.",
458
+ "fileTitle": "تم تحليل ملف المخطط — يحتاج التوليد إلى قاعدة بيانات حيّة",
459
+ "log": {
460
+ "classifying": "جارٍ تصنيف المخطط…",
461
+ "composing": "جارٍ تركيب القوالب…",
462
+ "done": "تم توليد {pages} صفحة عبر {groups} مجموعات تنقّل",
463
+ "writing": "جارٍ كتابة الصفحات…"
464
+ },
465
+ "logLabel": "سجل التوليد",
466
+ "openApp": "افتح تطبيقك",
467
+ "run": "توليد لوحة المعلومات",
468
+ "subtitle": "صفحة لكل جدول مضمّن مع لوحات معلومات لكل مجال — الغرض:",
469
+ "successBody": "{pages} صفحة عبر {groups} مجموعات تنقّل — وُلّدت من مخططك، وقابلة للتحرير في الاستوديو.",
470
+ "successTitle": "لوحة معلوماتك جاهزة",
471
+ "title": "ولّد تطبيقك"
472
+ },
473
+ "hostedApps": {
474
+ "domains": {
475
+ "add": "إرفاق نطاق",
476
+ "hostLabel": "المضيف",
477
+ "instanceLabel": "النسخة",
478
+ "instanceOwn": "التطبيق نفسه",
479
+ "issuesTitle": "رُفضت خريطة النطاقات",
480
+ "none": "لا توجد نطاقات مرفقة.",
481
+ "remove": "إزالة",
482
+ "save": "حفظ النطاقات",
483
+ "savedBody": "تسري الارتباطات خلال ثوانٍ قليلة. لا يستجيب المضيف إلا عندما يصل DNS الخاص به وخادمك الوسيط فعلًا إلى هذا الخادم.",
484
+ "savedTitle": "تم الحفظ",
485
+ "subtitle": "وجّه DNS النطاق إلى الخادم الوسيط لديك، ومرّر ترويسة Host إلى Adminium، ثم أرفقه هنا — فيقدّم هذا المضيف الواجهة بدل هذه اللوحة. تبقى الشهادات على الخادم الوسيط.",
486
+ "surfaceLabel": "الواجهة",
487
+ "title": "النطاقات"
488
+ },
489
+ "emptyBody": "وجّه ADMINIUM_SURFACES_DIR إلى مجلد يضم الواجهات المبنية — مجلد لكل تطبيق وجهة، وبداخله index.html — ثم أعد التشغيل. تُقدَّم بعدها تحت ‎/apps/‎ وتظهر هنا.",
490
+ "emptyTitle": "لا تُقدَّم أي واجهات تطبيقات",
491
+ "error": "حدث خطأ ما",
492
+ "instances": {
493
+ "add": "إضافة نسخة",
494
+ "appLabel": "التطبيق",
495
+ "body": "قدّم التطبيق نفسه على أكثر من قاعدة بيانات. كل نسخة متاحة على /apps/<app>/<segment>/<side>/ ولا تقرأ سوى الاتصال الذي تحدّده لها.",
496
+ "empty": "لا توجد نسخ إضافية.",
497
+ "failed": "تعذّر حفظ النسخ",
498
+ "readsLabel": "يقرأ من",
499
+ "remove": "إزالة",
500
+ "save": "حفظ النسخ",
501
+ "slugLabel": "مقطع الرابط",
502
+ "title": "النسخ"
503
+ },
504
+ "subtitle": "واجهات التطبيقات التي يقدّمها هذا الخادم — أين تظهر كلٌّ منها، والنطاقات الموجّهة إليها.",
505
+ "surfaces": {
506
+ "boundKey": "تقدّم المفتاح",
507
+ "connectionLabel": "يقرأ من",
508
+ "connectionUnset": "أي اتصال يعمل",
509
+ "customer": "العملاء",
510
+ "mintLink": "أنشئ واحدًا من واجهة برمجة التطبيقات العامة",
511
+ "noKey": "لا يوجد مفتاح مرتبط — لا يمكن لهذه الواجهة قراءة البيانات حتى يُنشأ لها مفتاح.",
512
+ "noNav": "الدمج الداخلي غير متاح — أعد بناء هذه الواجهة بأحدث أدوات البناء حتى تُصدر surface.json.",
513
+ "placementExternal": "خارجية (عنوانها الخاص فقط)",
514
+ "placementInternal": "في الشريط الجانبي (مدمجة)",
515
+ "placementLabel": "الموضع",
516
+ "staff": "الموظفون",
517
+ "subtitle": "واجهة الموظفين يمكن أن تندمج في الشريط الجانبي لهذه اللوحة أو تبقى مستقلة؛ وواجهة العملاء عامة وتقرأ عبر مفتاحها المرتبط.",
518
+ "title": "الواجهات"
519
+ },
520
+ "title": "التطبيقات المستضافة",
521
+ "install": {
522
+ "steps": {
523
+ "bundle": "الحزمة",
524
+ "database": "قاعدة البيانات",
525
+ "plan": "خطة البنية",
526
+ "done": "تم"
527
+ },
528
+ "progress": "تقدّم التثبيت",
529
+ "failed": "فشل التثبيت",
530
+ "bundle": {
531
+ "title": "ارفع حزمة التطبيق",
532
+ "hint": "ملف ‎.tgz‎ الذي ينتجه `npm pack` لواجهة مبنية — يحتوي على manifest.json ومجلد staff/ أو customer/.",
533
+ "file": "ملف الحزمة (‎.tgz‎)",
534
+ "fileHint": "لا يُنشأ أي شيء قبل أن تؤكّد في خطوة خطة البنية.",
535
+ "key": "مفتاح التطبيق",
536
+ "version": "الإصدار",
537
+ "integrity": "التحقق من السلامة (اختياري)",
538
+ "integrityHint": "الصق قيمة ‎sha512-‎ من `npm pack --json` ليتحقق الخادم من هذه البايتات بالذات. وإن تركته فارغًا تُحسب هنا."
539
+ },
540
+ "database": {
541
+ "title": "في أي قاعدة بيانات تريد التثبيت؟",
542
+ "hint": "اختر اتصالًا قابلًا للكتابة. هناك ستُنشأ الجداول، ومنه يقرأ التطبيق بعد ذلك.",
543
+ "tables": "الجداول: {count}",
544
+ "readOnly": "للقراءة فقط",
545
+ "writable": "قابل للكتابة",
546
+ "noWritable": "لا يوجد اتصال قابل للكتابة",
547
+ "allReadOnly": "كل الاتصالات هنا تستخدم دورًا للقراءة فقط، فلا يستطيع أي تطبيق إنشاء جداوله. أضف أولًا اتصالًا يسمح بتنفيذ DDL."
548
+ },
549
+ "plan": {
550
+ "title": "راجع خطة البنية",
551
+ "hint": "هذا بالضبط ما سيُنشأ في قاعدة بياناتك. لم يُكتب شيء بعد.",
552
+ "refused": "لا يمكن تثبيت هذا التطبيق هنا",
553
+ "create": "إنشاء",
554
+ "reuse": "استخدام الموجود",
555
+ "toggleDdl": "إظهار معاينة DDL",
556
+ "ddl": "معاينة DDL",
557
+ "ddlNote": "للتوضيح فقط. الخادم ينتج العبارة الدقيقة لمحرّكك، بما فيها المفاتيح الأجنبية.",
558
+ "summary": "{created} أُنشئت · {reused} أُعيد استخدامها"
559
+ },
560
+ "done": {
561
+ "title": "تم التثبيت",
562
+ "body": "{key} تُقدَّم الآن. اختر بالأسفل مكان ظهور واجهة الموظفين.",
563
+ "schema": "جداول أُنشئت: {created} · أُعيد استخدامها: {reused}"
564
+ },
565
+ "cancel": "إلغاء",
566
+ "back": "رجوع",
567
+ "upload": "رفع",
568
+ "continue": "متابعة",
569
+ "confirm": "تثبيت",
570
+ "finish": "إدارة التطبيقات",
571
+ "staged": "ملفات مُستخرجة: {files}",
572
+ "footerStep": "الخطوة {n} من {total}",
573
+ "footerStepApp": "الخطوة {n} من {total} · {app}",
574
+ "chosen": {
575
+ "title": "تثبيت {app}",
576
+ "hint": "هذا التطبيق جاء مع نسختك وهو موجود بالفعل على القرص. لا يُنشأ شيء قبل أن تؤكّد خطة البنية."
577
+ }
578
+ },
579
+ "installed": {
580
+ "title": "التطبيقات المثبَّتة",
581
+ "install": "ثبِّت تطبيقًا",
582
+ "emptyTitle": "لا توجد تطبيقات مثبَّتة بعد",
583
+ "emptyBody": "ارفع حزمة واجهة مبنية لتثبيت واحد. التطبيقات المثبَّتة هنا تُقدَّم فورًا — بلا إعادة تشغيل، بخلاف مجلد تشير إليه.",
584
+ "uninstall": "إزالة",
585
+ "confirmTitle": "إزالة هذا التطبيق؟",
586
+ "confirmBody": "ستتوقف واجهاته عن العمل وتُحذف الحزمة. أما الجداول التي أنشأها في قاعدة بياناتك فتبقى كما هي.",
587
+ "confirmPrompt": "اكتب {key} للتأكيد",
588
+ "confirmCancel": "إلغاء",
589
+ "confirmClose": "إغلاق",
590
+ "stagedTitle": "مرفوعة ولم تُثبَّت",
591
+ "stagedHint": "تخلَّص مما عدلت عنه، أو ارفع المفتاح نفسه مرة أخرى لاستبداله.",
592
+ "discard": "تخلَّص",
593
+ "installedAt": "ثُبِّت {when}"
594
+ },
595
+ "browse": {
596
+ "title": "تطبيقات يمكنك تثبيتها",
597
+ "subtitle": "تطبيقات جاهزة جاءت مع هذه النسخة. التثبيت يُنشئ الجداول التي يحتاجها ويبدأ تقديم شاشاته — ولا يحدث شيء قبل أن تؤكّد الخطة.",
598
+ "search": "ابحث عن تطبيقات…",
599
+ "clear": "مسح البحث",
600
+ "all": "الكل",
601
+ "by": "من {publisher}",
602
+ "install": "تثبيت",
603
+ "installed": "مثبَّت",
604
+ "noMatch": "لا تطبيق يطابق هذا البحث",
605
+ "noMatchBody": "جرّب كلمة أخرى، أو فئة أخرى.",
606
+ "emptyTitle": "لا توجد تطبيقات متاحة للتثبيت",
607
+ "emptyBody": "التطبيقات التي تأتي مع هذه النسخة تظهر هنا. وجّه ADMINIUM_BUNDLED_APPS إلى مجلد حزم تطبيقات، أو ارفع واحدة بنفسك.",
608
+ "unreadable": "تعذّرت قراءة بيان هذه الحزمة، فلا يمكن تثبيتها — تخلَّص منها بالأسفل."
566
609
  }
567
610
  },
568
- "review": {
569
- "unavailableTitle": "شاشة المراجعة غير متوفرة",
570
- "unavailableBody": "لا يتضمّن هذا الإصدار شاشة مراجعة الإثراء بعد (06-T14). ستصل مع تدفق الفرق والتطبيق."
611
+ "hub": {
612
+ "action": {
613
+ "delete": "حذف",
614
+ "pause": "إيقاف مؤقت",
615
+ "pausedHint": "هذا الاتصال متوقّف مؤقتًا — استأنفه للوصول إلى قاعدة البيانات.",
616
+ "regional": "الإعدادات الإقليمية",
617
+ "reintrospect": "إعادة فحص المخطط",
618
+ "reintrospectFile": "مصادر ملفات المخطط لا تملك قاعدة بيانات حيّة — أعد رفع الملف بدلًا من ذلك.",
619
+ "remap": "إعادة تعيين المخطط",
620
+ "rename": "إعادة تسمية",
621
+ "resume": "استئناف",
622
+ "test": "اختبار"
623
+ },
624
+ "card": {
625
+ "lastIntrospected": "آخر فحص للمخطط",
626
+ "latency": "زمن الاستجابة",
627
+ "latencyMs": "{latency, number} م.ث",
628
+ "never": "أبدًا",
629
+ "pages": "الصفحات",
630
+ "paused": "لا يتصل Adminium بقاعدة البيانات هذه. ستُحمَّل صفحاتها من جديد بمجرد استئنافها.",
631
+ "pausedSince": "متوقّف مؤقتًا {when} — لا يتصل Adminium بقاعدة البيانات هذه. ستُحمَّل صفحاتها من جديد بمجرد استئنافها.",
632
+ "readOnly": "للقراءة فقط",
633
+ "tables": "الجداول",
634
+ "timezone": "المنطقة الزمنية",
635
+ "timezoneGuessed": "من هذا الخادم"
636
+ },
637
+ "connectNew": "اتصال جديد",
638
+ "delete": {
639
+ "body": "سيؤدي هذا إلى حذف «{name}» وصفحاته المولّدة. لن تُمسّ قاعدة بياناتك نفسها أبدًا.",
640
+ "cancel": "إلغاء",
641
+ "close": "إغلاق",
642
+ "confirm": "حذف الاتصال",
643
+ "failed": "تعذّر حذف الاتصال. حاول مرة أخرى.",
644
+ "prompt": "اكتب {name} للتأكيد",
645
+ "success": "حُذف الاتصال «{name}»",
646
+ "title": "حذف الاتصال"
647
+ },
648
+ "empty": {
649
+ "body": "اربط قاعدة بيانات وسيولّد Adminium لوحة الإدارة من مخططها.",
650
+ "cta": "ربط قاعدة بيانات",
651
+ "title": "لا مصادر بيانات بعد"
652
+ },
653
+ "hostedApps": "التطبيقات المستضافة",
654
+ "introspect": {
655
+ "failed": "فشل فحص المخطط. حاول مرة أخرى.",
656
+ "masksProposed": "{count, plural, one {عمود واحد مقترح} two {عمودان مقترحان} few {# أعمدة مقترحة} many {# عمودًا مقترحًا} other {# عمود مقترح}} للإخفاء — راجعها في محرر إعادة التعيين.",
657
+ "noChanges": "المخطط دون تغيير — لا لقطة جديدة.",
658
+ "updated": "أُعيد فحص المخطط"
659
+ },
660
+ "pause": {
661
+ "body": "يتوقّف Adminium عن فتح أي اتصال بـ «{name}». {pages, plural, zero {صفحاته} one {صفحته} two {صفحتاه} few {صفحاته البالغ عددها #} many {صفحاته البالغ عددها #} other {صفحاته البالغ عددها #}} والتقارير المجدولة والتطبيقات المستضافة ستتوقّف عن تحميل البيانات حتى تستأنفه.",
662
+ "confirm": "إيقاف الاتصال مؤقتًا",
663
+ "keeps": "لا يُحذف أي شيء — يبقى الاتصال ومخططه {pages, plural, zero {وصفحاته} one {وصفحته} two {وصفحتاه} few {وصفحاته البالغ عددها #} many {وصفحاته البالغ عددها #} other {وصفحاته البالغ عددها #}}، وتعود جميعها بنقرة واحدة.",
664
+ "pauseFailed": "تعذّر إيقاف الاتصال مؤقتًا. حاول مرة أخرى.",
665
+ "pausedToast": "تم إيقاف الاتصال «{name}» مؤقتًا",
666
+ "resumeFailed": "تعذّر استئناف الاتصال. حاول مرة أخرى.",
667
+ "resumedToast": "تم استئناف الاتصال «{name}»",
668
+ "title": "إيقاف هذا الاتصال مؤقتًا؟"
669
+ },
670
+ "regional": {
671
+ "currency": "العملة",
672
+ "currencyHelper": "تُستخدم لتنسيق المبالغ. اختيارية — وتركها فارغة يؤثّر في التنسيق فقط.",
673
+ "currencyPlaceholder": "رمز ISO-4217",
674
+ "failed": "تعذّر حفظ الإعدادات الإقليمية",
675
+ "guessedBody": "أخذها Adminium من الجهاز الذي يعمل عليه، ولم يخترها أحد هنا. احفظ لتأكيدها، أو اختر المنطقة الزمنية التي يعمل بها هذا النشاط التجاري فعليًا.",
676
+ "guessedTitle": "هذه المنطقة الزمنية جاءت من الخادم",
677
+ "intro": "تصف هذه الإعدادات النشاط التجاري الذي تنتمي إليه قاعدة البيانات، لا الشخص الذي يقرؤها. والتطبيقات التي يقدّمها Adminium تقرؤها من هنا.",
678
+ "noMatch": "لا توجد منطقة مطابقة",
679
+ "noMatchCurrency": "لا توجد عملة مطابقة",
680
+ "notSet": "غير محدَّد",
681
+ "save": "حفظ",
682
+ "saved": "تم تحديث الإعدادات الإقليمية",
683
+ "timezone": "المنطقة الزمنية",
684
+ "timezoneHelper": "تُعرض التواريخ والأوقات بهذه المنطقة الزمنية. وبدونها تعود التطبيقات المستضافة على Adminium إلى توقيت UTC وتوضّح ذلك على الشاشة.",
685
+ "timezonePlaceholder": "المنطقة/المدينة",
686
+ "title": "الإعدادات الإقليمية"
687
+ },
688
+ "rename": {
689
+ "failed": "تعذّرت إعادة تسمية الاتصال",
690
+ "helper": "اسم قاعدة البيانات هذه في Adminium كله — البطاقة، ومجموعة الشريط الجانبي فوق صفحاتها، وكل قائمة اختيار تعرضها. أما قاعدة البيانات نفسها فلا يُعاد تسميتها.",
691
+ "label": "الاسم",
692
+ "save": "إعادة التسمية",
693
+ "saved": "تمت إعادة تسمية الاتصال",
694
+ "title": "إعادة تسمية الاتصال"
695
+ },
696
+ "stats": {
697
+ "connections": "الاتصالات",
698
+ "healthy": "سليمة",
699
+ "pages": "الصفحات المولّدة",
700
+ "tables": "الجداول المضمّنة"
701
+ },
702
+ "status": {
703
+ "connected": "متصل",
704
+ "error": "خطأ",
705
+ "paused": "متوقّف مؤقتًا",
706
+ "testing": "جارٍ الاختبار…",
707
+ "unconfigured": "مسودة"
708
+ },
709
+ "subtitle": "{healthy, number} من {total, plural, one {اتصال واحد} two {اتصالين} few {# اتصالات} many {# اتصالًا} other {# اتصال}} بحالة سليمة",
710
+ "subtitlePaused": "{healthy, number} من {total, plural, one {اتصال واحد} two {اتصالين} few {# اتصالات} many {# اتصالًا} other {# اتصال}} بحالة سليمة · {paused, number} متوقّف مؤقتًا",
711
+ "test": {
712
+ "failed": "فشل اختبار الاتصال",
713
+ "ok": "الاتصال سليم · {latency, number} م.ث"
714
+ },
715
+ "title": "اتصالات البيانات"
716
+ },
717
+ "intent": {
718
+ "analytics": {
719
+ "description": "لوحات معلومات ورسوم بيانية وجداول للقراءة فقط. لا نماذج ولا كتابة — كل دور محدود بمشاهد.",
720
+ "title": "تحليلات للقراءة فقط"
721
+ },
722
+ "crud": {
723
+ "description": "صفحة تحرير واحدة لكل جدول مع البحث والاستيراد/التصدير — صفحة رئيسية بسيطة، دون لوحات معلومات.",
724
+ "title": "جداول CRUD"
725
+ },
726
+ "fullAdmin": {
727
+ "description": "لوحات معلومات وصفحات CRUD وبحث واستيراد وتصدير — كل ما يدعمه مخططك.",
728
+ "title": "لوحة إدارة كاملة"
729
+ },
730
+ "subtitle": "يحدد الغرض الصفحات التي سيتم توليدها. يمكنك تغييره لاحقًا — تغييره يقترح إعادة توليد، ولا يعيد الكتابة بصمت أبدًا.",
731
+ "support": {
732
+ "description": "قوائم الانتظار وصفحات التذاكر وتفاصيل العملاء أولًا. الحذف معطّل افتراضيًا. (تصل قوالب قوائم الانتظار في M7 — مجموعة صفحات v1 تطابق لوحة الإدارة الكاملة.)",
733
+ "title": "وحدة تحكم الدعم"
734
+ },
735
+ "title": "ما الذي تحتاجه؟",
736
+ "trust": "نقرأ مخططك فقط — ولا نقرأ بيانات صفوفك أبدًا أثناء الإعداد."
571
737
  },
572
738
  "llmRuns": {
573
739
  "review": {
574
- "header": {
575
- "title": "مراجعة اقتراحات الذكاء الاصطناعي",
576
- "model": "النموذج",
577
- "snapshot": "لقطة",
578
- "byo": "مفتاحك الخاص",
579
- "pathDirect": "واجهة مباشرة",
580
- "pathByo": "نسخ ولصق",
581
- "agree": "{n} متوافقة",
582
- "conflict": "{n} متعارضة",
583
- "new": "{n} جديدة",
584
- "rejects": "{n} مرفوضة",
585
- "countsAria": "أعداد الاقتراحات"
740
+ "applied": {
741
+ "body": "الاقتراحات المقبولة أدناه للقراءة فقط.",
742
+ "title": "تم تطبيق هذا التشغيل"
743
+ },
744
+ "apply": {
745
+ "confirm": "تطبيق التغييرات",
746
+ "empty": "لم يتم تحديد شيء للتطبيق.",
747
+ "subtitle": "تُكتب هذه التغييرات في معاملة واحدة ويمكن التراجع عنها.",
748
+ "title": "تطبيق {n} اقتراحات"
586
749
  },
750
+ "applyFailed": "لم يتم تطبيق أي شيء",
751
+ "applyUnknown": "لم يذكر الخادم السبب.",
587
752
  "bulk": {
588
- "thresholdLabel": "حد الثقة",
589
- "thresholdAria": "حد الثقة لخيار «قبول الكل»",
590
753
  "acceptAll": "قبول الكل ≥ {pct}%",
591
- "clear": "مسح التحديد"
754
+ "clear": "مسح التحديد",
755
+ "thresholdAria": "حد الثقة لخيار «قبول الكل»",
756
+ "thresholdLabel": "حد الثقة"
592
757
  },
593
- "section": {
594
- "selectAllAria": "تحديد الكل في {group}",
595
- "acceptedCount": "{n} مقبولة"
758
+ "cat": {
759
+ "copy": "نص مصغّر",
760
+ "dashboard": "لوحة معلومات",
761
+ "enum": "تعداد",
762
+ "group": "مجموعة تنقل",
763
+ "key": "أعمدة مفتاحية",
764
+ "label": "تسمية",
765
+ "pii": "بيانات شخصية",
766
+ "relation": "علاقة",
767
+ "template": "قالب صفحة",
768
+ "widget": "أداة"
769
+ },
770
+ "empty": {
771
+ "body": "لم يُنتج هذا التشغيل أي اقتراحات للمراجعة.",
772
+ "title": "لا اقتراحات"
773
+ },
774
+ "error": {
775
+ "title": "تعذّر تحميل هذا التشغيل"
776
+ },
777
+ "footer": {
778
+ "apply": "تطبيق {n} اقتراحات مقبولة",
779
+ "count": "تم تحديد {n} اقتراحات",
780
+ "failed": "فشل التطبيق"
596
781
  },
597
782
  "group": {
598
- "labels": "التسميات والترجمات",
599
- "navigation": "التنقل والمجالات",
783
+ "dashboards": "لوحات المعلومات والأدوات",
600
784
  "enums": "دلالات التعدادات",
601
- "relations": "العلاقات",
785
+ "icons": "الأيقونات",
602
786
  "keys": "الأعمدة المفتاحية",
603
- "templates": "قوالب الصفحات",
604
- "dashboards": "لوحات المعلومات والأدوات",
787
+ "labels": "التسميات والترجمات",
788
+ "microcopy": "النصوص المصغّرة",
789
+ "navigation": "التنقل والمجالات",
605
790
  "pii": "البيانات الشخصية والإخفاء",
606
- "icons": "الأيقونات",
607
- "microcopy": "النصوص المصغّرة"
608
- },
609
- "status": {
610
- "agree": "متوافق",
611
- "conflict": "تعارض",
612
- "new": "جديد",
613
- "heuristicOnly": "إرشادي فقط",
614
- "rejects": "يرفض الإرشادي",
615
- "locked": "مقفل"
791
+ "relations": "العلاقات",
792
+ "templates": "قوالب الصفحات"
616
793
  },
617
- "row": {
794
+ "header": {
795
+ "agree": "{n} متوافقة",
796
+ "byo": "مفتاحك الخاص",
797
+ "conflict": "{n} متعارضة",
798
+ "countsAria": "أعداد الاقتراحات",
799
+ "model": "النموذج",
800
+ "new": "{n} جديدة",
801
+ "pathByo": "نسخ ولصق",
802
+ "pathDirect": "واجهة مباشرة",
803
+ "rejects": "{n} مرفوضة",
804
+ "snapshot": "لقطة",
805
+ "title": "مراجعة اقتراحات الذكاء الاصطناعي"
806
+ },
807
+ "notReady": {
808
+ "body": "يجب التحقق من التشغيل قبل إمكانية مراجعة اقتراحاته. أنشئ استجابة أو الصقها أولًا.",
809
+ "title": "لا يحتوي هذا التشغيل على اقتراحات للمراجعة بعد"
810
+ },
811
+ "row": {
618
812
  "acceptAria": "قبول اقتراح {noun} لـ {target}",
813
+ "confidenceAria": "الثقة {pct}%",
814
+ "hideTranslations": "إخفاء الترجمات",
619
815
  "keptEdited": "محتفَظ به — عدّلته بنفسك",
816
+ "noAi": "لا يوجد اقتراح من الذكاء الاصطناعي",
620
817
  "rejectsCallout": "يرفض الذكاء الاصطناعي قرارًا إرشاديًا — أكِّد قبل القبول.",
621
- "showTranslations": "عرض الترجمات",
622
- "hideTranslations": "إخفاء الترجمات",
623
- "confidenceAria": "الثقة {pct}%",
624
- "noAi": "لا يوجد اقتراح من الذكاء الاصطناعي"
625
- },
626
- "value": {
627
- "none": "لا قيمة",
628
- "absent": "لا شيء",
629
- "dash": "—",
630
- "display": "العرض",
631
- "key": "المفتاح",
632
- "rank": "الترتيب {n}",
633
- "span": "العرض {n}",
634
- "tableCount": "{n} جداول",
635
- "widgetCount": "{n} أدوات",
636
- "enumWorkflow": "سير عمل",
637
- "enumCategory": "فئة",
638
- "notPii": "ليست بيانات شخصية",
639
- "label": "التسمية",
640
- "description": "الوصف",
641
- "subtitle": "العنوان الفرعي للصفحة",
642
- "headline": "عنوان الحالة الفارغة",
643
- "guidance": "إرشاد الحالة الفارغة"
818
+ "showTranslations": "عرض الترجمات"
644
819
  },
645
- "apply": {
646
- "title": "تطبيق {n} اقتراحات",
647
- "subtitle": "تُكتب هذه التغييرات في معاملة واحدة ويمكن التراجع عنها.",
648
- "empty": "لم يتم تحديد شيء للتطبيق.",
649
- "confirm": "تطبيق التغييرات"
820
+ "section": {
821
+ "acceptedCount": "{n} مقبولة",
822
+ "selectAllAria": "تحديد الكل في {group}"
650
823
  },
651
- "footer": {
652
- "count": "تم تحديد {n} اقتراحات",
653
- "apply": "تطبيق {n} اقتراحات مقبولة",
654
- "failed": "فشل التطبيق"
824
+ "status": {
825
+ "agree": "متوافق",
826
+ "conflict": "تعارض",
827
+ "heuristicOnly": "إرشادي فقط",
828
+ "locked": "مقفل",
829
+ "new": "جديد",
830
+ "rejects": "يرفض الإرشادي"
655
831
  },
656
832
  "toast": {
657
833
  "applied": "تم تطبيق {n} اقتراحات",
@@ -659,629 +835,1096 @@
659
835
  "applyFailed": "تعذّر تطبيق الاقتراحات",
660
836
  "undoFailed": "تعذّر التراجع عن هذا التغيير"
661
837
  },
662
- "error": {
663
- "title": "تعذّر تحميل هذا التشغيل"
664
- },
665
- "notReady": {
666
- "title": "لا يحتوي هذا التشغيل على اقتراحات للمراجعة بعد",
667
- "body": "يجب التحقق من التشغيل قبل إمكانية مراجعة اقتراحاته. أنشئ استجابة أو الصقها أولًا."
668
- },
669
- "applied": {
670
- "title": "تم تطبيق هذا التشغيل",
671
- "body": "الاقتراحات المقبولة أدناه للقراءة فقط."
672
- },
673
- "empty": {
674
- "title": "لا اقتراحات",
675
- "body": "لم يُنتج هذا التشغيل أي اقتراحات للمراجعة."
676
- },
677
- "cat": {
678
- "label": "تسمية",
679
- "key": "أعمدة مفتاحية",
680
- "enum": "تعداد",
681
- "relation": "علاقة",
682
- "pii": "بيانات شخصية",
683
- "template": "قالب صفحة",
684
- "group": "مجموعة تنقل",
685
- "dashboard": "لوحة معلومات",
686
- "widget": "أداة",
687
- "copy": "نص مصغّر"
838
+ "value": {
839
+ "absent": "لا شيء",
840
+ "dash": "—",
841
+ "description": "الوصف",
842
+ "display": "العرض",
843
+ "enumCategory": "فئة",
844
+ "enumWorkflow": "سير عمل",
845
+ "guidance": "إرشاد الحالة الفارغة",
846
+ "headline": "عنوان الحالة الفارغة",
847
+ "key": "المفتاح",
848
+ "label": "التسمية",
849
+ "none": "لا قيمة",
850
+ "notPii": "ليست بيانات شخصية",
851
+ "rank": "الترتيب {n}",
852
+ "span": "العرض {n}",
853
+ "subtitle": "العنوان الفرعي للصفحة",
854
+ "tableCount": "{n} جداول",
855
+ "widgetCount": "{n} أدوات"
688
856
  }
689
857
  }
690
858
  },
691
- "wizard": {
692
- "title": "اتصال جديد",
693
- "back": "رجوع",
694
- "continue": "متابعة",
695
- "progress": "تقدّم الإعداد",
696
- "persistFailed": "تعذّر حفظ اختيار الجداول — أعد المحاولة.",
697
- "persistFailedTitle": "فشل الحفظ",
698
- "bridgeAppliedTitle": "تم استلام سلسلة الاتصال",
699
- "bridgeAppliedBody": "سلّمها متصفحك من adminium.dev — وصلت مباشرةً إلى هذا الجهاز ولم تُرفع إلى أي خادم. راجعها بالأسفل ثم تابع.",
700
- "bridgeFailedTitle": "تعذّر استخدام عملية التسليم هذه",
701
- "bridgeFailedBody": "إمّا أنها استُخدمت من قبل أو انتهت صلاحيتها. الصق سلسلة الاتصال بالأسفل بدلاً من ذلك.",
702
- "step": {
703
- "source": "المصدر",
704
- "test": "تحليل",
705
- "tables": "الجداول",
706
- "meta": "تخزين البيانات الوصفية",
707
- "intent": "الغرض",
708
- "enrich": "إثراء",
709
- "generate": "توليد"
710
- }
711
- },
712
859
  "meta": {
713
- "title": "أين يجب أن يحتفظ Adminium بجداوله الخاصة؟",
714
- "subtitle": "تُخزَّن الصفحات والأدوار وسجل التدقيق والإعدادات في جداول تبدأ بـ adminium_ — ولا تُخلط أبدًا ببياناتك.",
860
+ "move": {
861
+ "copying": "جارٍ نقل جداول Adminium…",
862
+ "copyingBody": "يجري نسخ كل جدول adminium_ إلى قاعدة البيانات الجديدة. لا تُمس بياناتك المصدرية، ولا يتم التبديل قبل التحقق من النسخة.",
863
+ "failed": "تعذّر نقل جداول Adminium — أعد المحاولة.",
864
+ "restarting": "جارٍ إعادة التشغيل…",
865
+ "restartingBody": "اكتمل النسخ. يعيد Adminium التشغيل على قاعدة البيانات الجديدة — ستتابع هذه الصفحة تلقائيًا خلال ثوانٍ.",
866
+ "timeout": "نقل Adminium جداوله لكنه لم يعد بعد. بياناتك آمنة في قاعدة البيانات الجديدة — أعد تحميل هذه الصفحة بعد قليل.",
867
+ "title": "جارٍ نقل جداول Adminium"
868
+ },
715
869
  "sameDb": {
716
- "title": "قاعدة البيانات نفسها",
717
870
  "description": "تُنشأ جداول adminium_* بجانب جداول المصدر. أبسط إعداد — يتطلب دورًا بصلاحيات الكتابة وCREATE TABLE.",
718
- "disabledReadOnly": "دورك للقراءة فقط لا يكتب Adminium أبدًا في هذه القاعدة. اختر قاعدة بيانات منفصلة لجداول Adminium الخاصة.",
871
+ "disabledFile": "ملف المخطط ليس له قاعدة بيانات حيّة اختر قاعدة بيانات منفصلة لجداول Adminium الخاصة.",
719
872
  "disabledNoDdl": "لا يمكن لهذا الدور تنفيذ DDL — تحتاج ترحيلات Adminium إلى CREATE TABLE. اختر قاعدة بيانات منفصلة لجداول Adminium الخاصة.",
720
- "disabledFile": "ملف المخطط ليس له قاعدة بيانات حيّة اختر قاعدة بيانات منفصلة لجداول Adminium الخاصة."
873
+ "disabledReadOnly": "دورك للقراءة فقط لا يكتب Adminium أبدًا في هذه القاعدة. اختر قاعدة بيانات منفصلة لجداول Adminium الخاصة.",
874
+ "title": "قاعدة البيانات نفسها"
721
875
  },
722
876
  "separate": {
723
- "title": "قاعدة بيانات منفصلة",
724
877
  "description": "يحتفظ Adminium بجداوله في قاعدة بيانات مختلفة. يبقى مصدرك كما هو — وهذا مطلوب للمصادر ذات القراءة فقط.",
725
878
  "dsn": "سلسلة اتصال قاعدة البيانات الوصفية",
879
+ "errorTitle": "مخزن البيانات الوصفية غير متوافق",
726
880
  "helper": "يتطلب صلاحيات الكتابة وDDL — يشغّل Adminium ترحيلاته الخاصة هناك.",
727
- "test": "اختبار الاتصال",
728
- "ok": "متوافق — كتابة ✓ · DDL ✓",
729
881
  "insufficient": "لا يمكن لهذا الدور استضافة المخزن الوصفي — يحتاج Adminium هناك إلى صلاحيات الكتابة وCREATE TABLE.",
730
- "errorTitle": "مخزن البيانات الوصفية غير متوافق"
882
+ "ok": "متوافق كتابة · DDL ✓",
883
+ "test": "اختبار الاتصال",
884
+ "title": "قاعدة بيانات منفصلة"
731
885
  },
886
+ "subtitle": "تُخزَّن الصفحات والأدوار وسجل التدقيق والإعدادات في جداول تبدأ بـ adminium_ — ولا تُخلط أبدًا ببياناتك.",
732
887
  "testFailed": "فشل الاتصال.",
888
+ "title": "أين يجب أن يحتفظ Adminium بجداوله الخاصة؟",
733
889
  "v1Note": {
734
- "title": "حول هذا التثبيت",
735
- "body": "يحتفظ هذا الخادم بجداوله الخاصة في قاعدة بيانات مُعدّة مسبقًا، وهذه الخطوة لا تنقلها. إنها تتحقق من توافق اختيارك مع هذا الاتصال — ويطبّق الخادم القاعدة نفسها بشكل مستقل (409 META_PLACEMENT_INVALID)."
736
- },
737
- "move": {
738
- "title": "جارٍ نقل جداول Adminium",
739
- "copying": "جارٍ نقل جداول Adminium…",
740
- "restarting": "جارٍ إعادة التشغيل…",
741
- "copyingBody": "يجري نسخ كل جدول adminium_ إلى قاعدة البيانات الجديدة. لا تُمس بياناتك المصدرية، ولا يتم التبديل قبل التحقق من النسخة.",
742
- "restartingBody": "اكتمل النسخ. يعيد Adminium التشغيل على قاعدة البيانات الجديدة — ستتابع هذه الصفحة تلقائيًا خلال ثوانٍ.",
743
- "failed": "تعذّر نقل جداول Adminium — أعد المحاولة.",
744
- "timeout": "نقل Adminium جداوله لكنه لم يعد بعد. بياناتك آمنة في قاعدة البيانات الجديدة — أعد تحميل هذه الصفحة بعد قليل."
890
+ "body": "يحتفظ هذا الخادم بجداوله الخاصة في قاعدة بيانات مُعدّة مسبقًا، وهذه الخطوة لا تنقلها. إنها تتحقق من توافق اختيارك مع هذا الاتصال — ويطبّق الخادم القاعدة نفسها بشكل مستقل (409 META_PLACEMENT_INVALID).",
891
+ "title": "حول هذا التثبيت"
745
892
  },
746
893
  "willMove": {
747
- "title": "سيؤدي هذا إلى نقل جداول Adminium",
748
- "body": "يستخدم Adminium حاليًا مخزن SQLite المدمج. يؤدي «متابعة» إلى نسخ هذا المخزن إلى قاعدة البيانات التي اخترتها وإعادة التشغيل عليها — تنتقل معه الحسابات والصفحات والإعدادات، فتظل مسجّل الدخول."
894
+ "body": "يستخدم Adminium حاليًا مخزن SQLite المدمج. يؤدي «متابعة» إلى نسخ هذا المخزن إلى قاعدة البيانات التي اخترتها وإعادة التشغيل عليها — تنتقل معه الحسابات والصفحات والإعدادات، فتظل مسجّل الدخول.",
895
+ "title": "سيؤدي هذا إلى نقل جداول Adminium"
749
896
  }
750
897
  },
751
- "intent": {
752
- "title": "ما الذي تحتاجه؟",
753
- "subtitle": "يحدد الغرض الصفحات التي سيتم توليدها. يمكنك تغييره لاحقًا — تغييره يقترح إعادة توليد، ولا يعيد الكتابة بصمت أبدًا.",
754
- "trust": "نقرأ مخططك فقط — ولا نقرأ بيانات صفوفك أبدًا أثناء الإعداد.",
755
- "fullAdmin": {
756
- "title": "لوحة إدارة كاملة",
757
- "description": "لوحات معلومات وصفحات CRUD وبحث واستيراد وتصدير — كل ما يدعمه مخططك."
758
- },
759
- "analytics": {
760
- "title": "تحليلات للقراءة فقط",
761
- "description": "لوحات معلومات ورسوم بيانية وجداول للقراءة فقط. لا نماذج ولا كتابة كل دور محدود بمشاهد."
898
+ "pages": {
899
+ "action": {
900
+ "delete": "حذف الصفحة",
901
+ "duplicate": "تكرار",
902
+ "edit": "تحرير الصفحة",
903
+ "hide": "إخفاء من الشريط الجانبي",
904
+ "show": "إظهار في الشريط الجانبي"
905
+ },
906
+ "attachments": {
907
+ "accept": "أنواع الملفات المقبولة",
908
+ "acceptHint": "عدم اختيار أي نوع يقبل كل ما تسمح به مساحة العمل. والاختيار هنا لا يمكنه إلا تضييق تلك القائمة، لا توسيعها أبدًا.",
909
+ "column": {
910
+ "adoptHint": "هذا الجدول يحتوي بالفعل على هذا العمود، لذا لن يُنشأ شيء — سيُستخدم كما هو.",
911
+ "bound": "تُخزَّن الملفات في عمود {column} بهذا الجدول.",
912
+ "boundHint": "إيقاف المرفقات لاحقًا يفصل هذه الصفحة فقط. يبقى العمود والملفات التي فيه كما هي.",
913
+ "confirm": "نفِّذ",
914
+ "create": "أنشئ العمود",
915
+ "createHint": "يضيف Adminium عمودًا نصيًا واحدًا إلى هذا الجدول. ستطّلع على العبارة الدقيقة قبل تنفيذ أي شيء.",
916
+ "createdHint": "العمود موجود الآن. احفظ هذه الصفحة لإتمام الربط.",
917
+ "failed": "لم ينجح ذلك",
918
+ "invalid": "يجب أن يبدأ اسم العمود بحرف وألا يحتوي إلا على حروف صغيرة وأرقام وشرطات سفلية.",
919
+ "label": "العمود الذي يحتوي على الملفات",
920
+ "required": "أعطِ العمود اسمًا.",
921
+ "tooLong": "هذا الاسم طويل جدًا لعمود.",
922
+ "use": "استخدم هذا العمود",
923
+ "wrongType": "هذا الجدول يحتوي بالفعل على عمود بهذا الاسم، ولا يمكنه حمل مرجع ملف. اختر اسمًا آخر."
924
+ },
925
+ "destination": "أين تذهب الملفات",
926
+ "destinationDefault": "الوجهة الافتراضية",
927
+ "destinationHint": "اتركه على الافتراضية ما لم تكن ملفات هذا الجدول تنتمي إلى مكان آخر.",
928
+ "destinationIsDefault": "{name} (الافتراضية)",
929
+ "destinationLocal": "قرص هذا الخادم",
930
+ "enable": "السماح بالمرفقات على سجلات هذا الجدول",
931
+ "enableHint": "تُربط الملفات من جهة Adminium، فلا يحتاج هذا الجدول إلى عمود جديد — وهو يعمل على اتصال للقراءة فقط، وعلى جدول تفضّل ألا تعدّله.",
932
+ "enableHintColumn": "تُخزَّن الملفات في عمود واحد بهذا الجدول، لذا تظهر في مربعي «جديد» و«تعديل» وكذلك مع كل سجل.",
933
+ "enableHintSidecar": "تُربط الملفات في جانب Adminium بدلًا من ذلك. تظهر في صفحة كل سجل، لا في مربع «جديد».",
934
+ "maxBytes": "أكبر ملف (ميغابايت)",
935
+ "maxBytesHint": "اتركه فارغًا لاتّباع حد مساحة العمل. والرقم هنا لا يمكنه إلا خفضه.",
936
+ "maxCount": "أقصى عدد ملفات لكل سجل",
937
+ "maxCountHint": "اتركه فارغًا لقبول ما يحتاجه السجل مهما بلغ عدده.",
938
+ "sidecar": {
939
+ "noPrivilege": "لا يستطيع دور هذا الاتصال تعديل الجداول، لذا لا يستطيع Adminium إضافة عمود إليه.",
940
+ "readOnlyIntent": "هذا الاتصال مُعدّ للتحليل للقراءة فقط، لذا لا يستطيع Adminium إضافة عمود إليه.",
941
+ "readOnlyRole": "يسجّل هذا الاتصال الدخول بدور للقراءة فقط، لذا لا يستطيع Adminium إضافة عمود إليه.",
942
+ "schemaFile": "أُنشئ هذا الاتصال من ملف مخطط، لذا لا يستطيع Adminium إضافة عمود إليه."
943
+ },
944
+ "type": {
945
+ "office": "مستندات Office",
946
+ "text": "نص عادي"
947
+ }
762
948
  },
763
- "crud": {
764
- "title": "جداول CRUD",
765
- "description": "صفحة تحرير واحدة لكل جدول مع البحث والاستيراد/التصدير — صفحة رئيسية بسيطة، دون لوحات معلومات."
949
+ "columns": {
950
+ "addFromLinked": "من الجداول المرتبطة",
951
+ "addFromTable": "من {table}",
952
+ "addLinkedFrom": "جداول ترتبط بهذا الجدول",
953
+ "addLinkedFromHelp": "احسب عدد الصفوف التي تشير إلى كل سجل، أو اجمع أحد أرقامها.",
954
+ "addLinkedHelp": "اعرض قيمة من الجدول الذي يشير إليه عمود الربط.",
955
+ "addNoMatches": "لا توجد أعمدة تطابق ”{query}“.",
956
+ "addOpen": "إضافة عمود",
957
+ "addSearch": "البحث في الأعمدة…",
958
+ "addTitle": "إضافة عمود",
959
+ "addVia": "عبر {column}",
960
+ "avatar": "صورة رمزية",
961
+ "avatarToggle": "إظهار حرف مختصر بجانب {name}",
962
+ "countBadge": "العدد",
963
+ "dragHandle": "إعادة ترتيب {name}",
964
+ "empty": "لا توجد أعمدة بعد — أضفها أدناه.",
965
+ "file": {
966
+ "acceptHelp": "اترك كل الأنواع دون تحديد ليقبل العمود ما تقبله مساحة العمل. واختيار أنواع لا يمكنه إلا تضييق تلك القائمة — فلا يقبل عمود نوعًا ترفضه مساحة العمل أبدًا.",
967
+ "acceptLabel": "الأنواع المقبولة",
968
+ "badge": "ملف",
969
+ "destinationDefault": "الوجهة الافتراضية",
970
+ "destinationHelp": "المكان الذي تُحفظ فيه البايتات المرفوعة عبر هذا العمود.",
971
+ "destinationLabel": "الوجهة",
972
+ "inlineHelp": "لا تُرسم في الخلية إلا الصور. أما ما عداها فيبقى شارة تحمل اسمه وحجمه، مهما كان هذا الإعداد.",
973
+ "inlineLabel": "إظهاره في الجدول",
974
+ "maxCountHelp": "اتركه فارغًا لقبول ما يحتاجه السجل من ملفات.",
975
+ "maxCountLabel": "أقصى عدد ملفات لكل سجل",
976
+ "maxCountToggle": "أقصى عدد ملفات لـ {name}",
977
+ "maxHelp": "اتركه فارغًا لاستخدام حد مساحة العمل. ولا يمكن للعمود أن يطلب إلا أقل منه.",
978
+ "maxLabel": "أكبر ملف (ميغابايت)",
979
+ "maxToggle": "أكبر ملف يقبله {name}، بالميغابايت",
980
+ "multipleHelp": "يخزّن العمود قائمة ملفات بدلًا من ملف واحد. تظل القيم المفردة الحالية تعمل — تُقرأ كقائمة من عنصر واحد.",
981
+ "multipleLabel": "استيعاب أكثر من ملف",
982
+ "ref": {
983
+ "id": "معرّف الملف في Adminium",
984
+ "key": "المفتاح داخل الوجهة",
985
+ "url": "رابط إلى الملف"
986
+ },
987
+ "refHelp": "ما يُكتب في هذا العمود عند رفع ملف. تظل القيم المخزَّنة سلفًا تعمل — وهذا لا يغيّر إلا القيمة التالية.",
988
+ "refLabel": "القيمة المخزَّنة",
989
+ "refTooNarrow": "هذا العمود أقصر من أن يتّسع لتلك القيمة. اختر قيمة يتّسع لها، أو وسّع العمود في قاعدة البيانات.",
990
+ "refWidth": "{shape} — يحتاج إلى {needs} من الأحرف، وهذا العمود يتّسع لـ {holds}",
991
+ "switch": "ملف",
992
+ "switchToggle": "{name} يخزّن ملفًا",
993
+ "type": {
994
+ "csv": "CSV",
995
+ "gif": "GIF",
996
+ "heic": "HEIC",
997
+ "jpeg": "JPEG",
998
+ "json": "JSON",
999
+ "markdown": "Markdown",
1000
+ "mp3": "صوت MP3",
1001
+ "mp4": "فيديو MP4",
1002
+ "office": "مستندات Office",
1003
+ "ogg": "Ogg",
1004
+ "pdf": "PDF",
1005
+ "png": "PNG",
1006
+ "svg": "SVG",
1007
+ "text": "نص عادي",
1008
+ "wav": "صوت WAV",
1009
+ "webm": "WebM",
1010
+ "webp": "WebP",
1011
+ "zip": "ZIP"
1012
+ }
1013
+ },
1014
+ "fold": {
1015
+ "avg": "المتوسط",
1016
+ "max": "الأعلى",
1017
+ "min": "الأدنى",
1018
+ "sum": "المجموع"
1019
+ },
1020
+ "foldAdd": "إضافة",
1021
+ "foldLabel": "التجميع",
1022
+ "followColumn": "تتبّع {name}",
1023
+ "header": "عنوان العمود {name}",
1024
+ "help": "اسحب لإعادة ترتيب الأعمدة، وغيّر أسماء عناوينها، واختر ما يظهر منها في الجدول.",
1025
+ "lookupBack": "رجوع",
1026
+ "lookupBadge": "مرتبط",
1027
+ "lookupBroken": "تعذّر تحليل هذا الارتباط",
1028
+ "lookupBrokenBody": "تغيّر المخطط أثناء التصفح. ابدأ الارتباط من جديد.",
1029
+ "lookupBrowse": "اختر ما يُعرض من {table}",
1030
+ "mask": "إخفاء",
1031
+ "maskHelp": "الإخفاء يضع القيمة خلف زر إظهار لمن يُسمح له برؤيتها. أما خروج البيانات من قاعدة البيانات أصلًا فيُضبط على الاتصال، لا هنا.",
1032
+ "maskToggle": "إخفاء {name} خلف زر إظهار",
1033
+ "masked": "مُخفى",
1034
+ "none": {
1035
+ "body": "تُقرأ الأعمدة من الجدول عند توليد الصفحة. اربط هذه الصفحة بجدول ثم أعد التوليد لملئها.",
1036
+ "title": "لا تحتوي هذه الصفحة على أعمدة بعد"
1037
+ },
1038
+ "pk": "مفتاح",
1039
+ "remove": "إزالة {name}",
1040
+ "schemaUnavailable": "تعذّر سرد أعمدة قاعدة البيانات، لذا لا يمكن إضافة الأعمدة هنا.",
1041
+ "shown": "ظاهر",
1042
+ "toggle": "إظهار {name} في الجدول"
766
1043
  },
767
- "support": {
768
- "title": "وحدة تحكم الدعم",
769
- "description": "قوائم الانتظار وصفحات التذاكر وتفاصيل العملاء أولًا. الحذف معطّل افتراضيًا. (تصل قوالب قوائم الانتظار في M7 — مجموعة صفحات v1 تطابق لوحة الإدارة الكاملة.)"
770
- }
771
- },
772
- "generate": {
773
- "title": "ولّد تطبيقك",
774
- "subtitle": "صفحة لكل جدول مضمّن مع لوحات معلومات لكل مجال — الغرض:",
775
- "run": "توليد لوحة المعلومات",
776
- "openApp": "افتح تطبيقك",
777
- "logLabel": "سجل التوليد",
778
- "log": {
779
- "classifying": "جارٍ تصنيف المخطط…",
780
- "composing": "جارٍ تركيب القوالب…",
781
- "writing": "جارٍ كتابة الصفحات…",
782
- "done": "تم توليد {pages} صفحة عبر {groups} مجموعات تنقّل"
1044
+ "create": {
1045
+ "failed": "تعذّر إنشاء الصفحة",
1046
+ "submit": "إنشاء الصفحة",
1047
+ "subtitle": "اختر ما تعرضه هذه الصفحة وكيف تبدو. المعاينة تتبع اختياراتك.",
1048
+ "title": "صفحة جديدة"
783
1049
  },
784
- "successTitle": "لوحة معلوماتك جاهزة",
785
- "successBody": "{pages} صفحة عبر {groups} مجموعات تنقّل — وُلّدت من مخططك، وقابلة للتحرير في الاستوديو.",
786
- "errorTitle": "فشل التوليد",
787
- "failed": "فشل التوليد أعد المحاولة، أو أعد تشغيل الاستبطان أولًا.",
788
- "fileTitle": "تم تحليل ملف المخطط — يحتاج التوليد إلى قاعدة بيانات حيّة",
789
- "fileBody": "تم تحليل مخططك بنجاح والمعاينة أعلاه حقيقية. توليد تطبيق يعمل مباشرةً من ملف مخطط (بصفوف بديلة) غير متاح بعد — اربط قاعدة بيانات حيّة للتوليد اليوم."
790
- },
791
- "remap": {
792
- "column": {
793
- "nullable": "يقبل NULL",
794
- "labelOverride": "تسمية العرض",
795
- "labelHelper": "المستنتج: {name}",
796
- "logicalType": "النوع المنطقي",
797
- "logicalTypeHelper": "المستنتج: {type} (من {dbType}) — يربطه المهايئ؛ ولا يمكن تجاوزه في v1.",
798
- "semantic": "النوع الدلالي",
799
- "unclassified": "لم يُصنَّف بعد.",
800
- "semanticHelper": "المصنِّف: {tag} · الثقة {confidence}% · المصدر: {source}",
801
- "semanticInferred": "المستنتج: {tag}",
802
- "currency": "العملة",
803
- "currencyHelper": "رمز ISO 4217 المطبَّق على تنسيق المبالغ المالية.",
804
- "pii": "الإخفاء افتراضيًا",
805
- "piiHelper": "تُعرض القيم المخفية محجوبة؛ ويتطلب كشفها صلاحية data.unmask_pii ويُسجَّل في سجل التدقيق.",
806
- "enum": "دلالات التعداد",
807
- "enumKind": "نوع التعداد",
808
- "enumWorkflow": "سير عمل",
809
- "enumCategory": "فئة",
810
- "enumLabelFor": "تسمية {value}",
811
- "enumToneFor": "درجة لون {value}",
812
- "enumToneAuto": "تلقائي",
813
- "enumHelper": "تعدادات سير العمل تُشغّل شارات الحالة وأعمدة اللوحات؛ وتربط درجات الألوان القيم بمقياس التظليل الدلالي."
1050
+ "createButton": "صفحة جديدة",
1051
+ "delete": {
1052
+ "body": "لا يمكن التراجع عن ذلك. ستُحذف العروض المحفوظة والتخطيطات الشخصية لهذه الصفحة لدى الجميع.",
1053
+ "bodyGenerated": "أُنشئت هذه الصفحة عبر توليد المخطّط، لذا ستعود في المرة التالية التي تعيد فيها التوليد. وستُحذف العروض المحفوظة والتخطيطات الشخصية لدى الجميع.",
1054
+ "confirm": "حذف الصفحة",
1055
+ "prompt": "اكتب {slug} للتأكيد",
1056
+ "title": "هل تريد حذف هذه الصفحة؟"
814
1057
  },
815
- "diff": {
816
- "one": "تغيير واحد",
817
- "count": "{count} تغييرات",
818
- "saved": "تم حفظ التجاوزات.",
819
- "revertOne": "التراجع عن {change}",
820
- "regenerate": "إعادة توليد الصفحات",
821
- "revertAll": "التراجع عن الكل",
822
- "save": "حفظ التجاوزات"
1058
+ "derived": {
1059
+ "add": "إضافة عمود",
1060
+ "atLeast": "لا يقل عن",
1061
+ "cancel": "إلغاء",
1062
+ "emptyBody": "لخّص جدولًا مرتبطًا في بطاقة الأعمدة أولًا — فالقواعد هنا تُبنى على تلك الأرقام.",
1063
+ "emptyTitle": "لا توجد أرقام محسوبة بعد",
1064
+ "fieldBadge": "محسوب",
1065
+ "foldBadge": "تجميع",
1066
+ "help": "احسب أرقامًا من الملخصات أعلاه ومن أعمدة هذا السجل. تُحسب عند تحميل الصفحة ولا يمكن ترتيبها.",
1067
+ "label": "عنوان العمود",
1068
+ "minus": "ناقص",
1069
+ "numberHelp": "الأرقام أعداد عشرية بسيطة — 500 أو 12.50، وليس 1,000 أو 5e3.",
1070
+ "operandA": "رقم",
1071
+ "operandB": "رقم",
1072
+ "operator": "العملية",
1073
+ "otherwise": "وإلا",
1074
+ "percentOf": "بالمئة من هذا السجل",
1075
+ "plus": "زائد",
1076
+ "preset": {
1077
+ "combine": "جمع أو طرح رقمين",
1078
+ "percent": "نسبة مئوية من رقم",
1079
+ "rule": "قاعدة بحد فاصل"
1080
+ },
1081
+ "previewHelp": "قيم نموذجية، محسوبة بالشيفرة نفسها التي تستخدمها الصفحة.",
1082
+ "previewTitle": "معاينة",
1083
+ "remove": "إزالة {name}",
1084
+ "thenShow": "فأظهر"
823
1085
  },
824
- "table": {
825
- "iconPicker": "أيقونة الجدول",
826
- "system": "نظام",
827
- "labelOverride": "تسمية العرض",
828
- "labelHelper": "المستنتج: {name}",
829
- "icon": "الأيقونة",
830
- "navGroup": "مجموعة التنقل",
831
- "navGroupHelper": "يقرر المولِّد موضع التنقل — تجاوز table.navGroup ليس ضمن مفردات v1.",
832
- "include": "التضمين في التطبيق المولَّد",
833
- "includeHelper": "الجداول المستبعدة لا تحصل على صفحات وتختفي من التنقل.",
834
- "shape": "شكل الجدول (مصنَّف)",
835
- "role": "الدور",
836
- "unclassified": "غير مصنَّف",
837
- "kind": "النوع",
838
- "hierarchy": "التسلسل الهرمي",
839
- "selfFk": "مرجع ذاتي عبر {column}",
840
- "polymorphic": "أزواج متعددة الأشكال",
841
- "rows": "تقدير عدد الصفوف",
842
- "shapeHelper": "يُعاد حساب التصنيف مع كل استبطان؛ وتُطبَّق التجاوزات فوقه وتبقى بعد إعادة التوليد."
1086
+ "duplicate": {
1087
+ "failed": "تعذّر تكرار الصفحة",
1088
+ "submit": "تكرار",
1089
+ "title": "تكرار الصفحة"
843
1090
  },
844
- "relations": {
845
- "declared": "المفاتيح الخارجية المعلنة",
846
- "noneDeclared": "لا توجد مفاتيح خارجية معلنة تمسّ هذا الجدول.",
847
- "inferred": "العلاقات المستنتجة",
848
- "noneInferred": "لا شيء مستنتج لهذا الجدول.",
849
- "confidence": "مستنتجة · {pct}%",
850
- "accepted": "مقبولة",
851
- "suppressed": "مستبعدة",
852
- "accept": "قبول",
853
- "suppress": "استبعاد",
854
- "overrides": "علاقات التجاوز (المطبَّقة)",
855
- "overrideBadge": "تجاوز",
856
- "add": "إضافة علاقة افتراضية",
857
- "fromColumn": "من العمود",
858
- "noColumns": "لا يوجد عمود مطابق",
859
- "fromPlaceholder": "customer_id",
860
- "toTable": "إلى الجدول",
861
- "noTables": "لا يوجد جدول مطابق",
862
- "toColumn": "إلى العمود",
863
- "cardinality": "التعددية",
864
- "addButton": "إضافة علاقة"
865
- },
866
- "toast": {
867
- "saved": "تم حفظ تجاوزات المخطط",
868
- "savedDetail": "يعكس المخطط المطبَّق أدناه تغييراتك.",
869
- "regenerated": "{created} أُنشئت · {updated} حُدّثت · {unchanged} لم تتغير",
870
- "regeneratedDetail": "تُحفظ الصفحات التي حرّرتها يدويًا لم يُعَد التوليد في مكانه إلا للصفحات التي بقي generated_hash الخاص بها دون تعديل.",
871
- "regenerateFailed": "فشلت إعادة التوليد"
1091
+ "editor": {
1092
+ "appearance": "المظهر",
1093
+ "attachments": "المرفقات",
1094
+ "columns": "الأعمدة",
1095
+ "contentInvalid": "تعذّرت قراءة إعدادات هذه الصفحة",
1096
+ "contentInvalidBody": "كُتبت بإصدار أحدث، أو أنها تالفة. أعد توليد الصفحة أو احذفها.",
1097
+ "contentUnavailable": "تعذّر تحميل محتوى الصفحة",
1098
+ "contentUnavailableBody": "لا يزال بإمكانك حفظ البيانات أعلاه.",
1099
+ "data": "البيانات",
1100
+ "derived": "أرقام محسوبة",
1101
+ "details": "التفاصيل",
1102
+ "generated": {
1103
+ "body": "تُحفظ تعديلاتك عند إعادة التوليد، إذ تُعلَّم الصفحة بأنها محرَّرة وتُترك كما هي. أما الحذف فلا يدوم إلا حتى تُعيد عملية التوليد التالية إنشاءها.",
1104
+ "title": "وُلِّدت هذه الصفحة من مخطّط قاعدة بياناتك"
1105
+ },
1106
+ "itemsPending": "احفظ التغيير أعلاه أولًا — سيُعاد بناء محتوى الصفحة من القالب والجدول الجديدين.",
1107
+ "missing": "لم تعد هذه الصفحة موجودة",
1108
+ "missingBody": "ربما حُذفت، أو أزالتها عملية توليد.",
1109
+ "notBindable": "هذا القالب غير مرتبط بجدول واحد",
1110
+ "notBindableBody": "يُبنى محتواه عنصرًا تلو الآخر. افتح الصفحة واستخدم «تحرير» لإضافتها.",
1111
+ "openPage": "فتح الصفحة",
1112
+ "recompose": "ستُعاد بناء هذه الصفحة",
1113
+ "recomposeBody": "الحفظ يستبدل محتواها بتخطيط جديد للقالب والجدول أعلاه. ستفقد تعديلات الأعمدة وتغييرات العناصر في هذه الصفحة.",
1114
+ "save": "حفظ التغييرات",
1115
+ "saveFailed": "تعذّر حفظ التغييرات",
1116
+ "schemaFailed": "تعذّر عرض الجداول",
1117
+ "schemaFailedBody": "قد لا يكون هذا الاتصال قد خضع للتحليل بعد. شغّل الفحص من الاستوديو اتصالات البيانات.",
1118
+ "title": "تحرير الصفحة"
872
1119
  },
873
- "title": "إعادة تعيين المخطط",
874
- "subtitle": "{tables} جدولًا · {applied} تجاوزًا مطبَّقًا",
875
- "saveFailed": "فشل الحفظ: {message}",
876
- "loadFailed": "تعذّر تحميل المخطط لهذا الاتصال.",
877
- "inspector": "الفاحص",
878
1120
  "empty": {
879
- "title": "اختر جدولًا أو عمودًا",
880
- "description": "حدد عنصرًا في شجرة المخطط لإعادة تعيين تسميته أو نوعه أو علاقاته أو إخفائه."
1121
+ "body": "اربط قاعدة بيانات لتوليد الصفحات تلقائيًا، أو أنشئ صفحة يدويًا.",
1122
+ "title": "لا توجد صفحات بعد"
881
1123
  },
882
- "tabs": {
883
- "details": "التفاصيل",
884
- "relations": "العلاقات"
1124
+ "field": {
1125
+ "connection": "مصدر البيانات",
1126
+ "connectionNone": "بدون",
1127
+ "group": "مجموعة الشريط الجانبي",
1128
+ "groupHint": "القسم الذي تظهر فيه ضمن الشريط الجانبي.",
1129
+ "icon": "الأيقونة",
1130
+ "iconHint": "تظهر بجوار اسم الصفحة في الشريط الجانبي.",
1131
+ "iconPick": "اختر أيقونة الصفحة",
1132
+ "newRowLabel": "زر الإضافة",
1133
+ "newRowLabelHint": "النص الظاهر على الزر الذي يضيف سجلاً. اتركه فارغًا لاستخدام النص الافتراضي المترجَم.",
1134
+ "padding": "حشو الصفحة",
1135
+ "slug": "مسار الصفحة",
1136
+ "slugHint": "أحرف إنجليزية صغيرة وأرقام وشرطات. الجزء الأخير من المسار فقط — يُضاف الباقي تلقائيًا.",
1137
+ "slugTaken": "يستخدم هذا المسار صفحة أخرى بالفعل.",
1138
+ "slugWarning": "تغيير المسار يُبطل الروابط والإشارات المرجعية الحالية إلى هذه الصفحة.",
1139
+ "table": "الجدول",
1140
+ "tableCreateHint": "الجدول الذي تقرأ منه هذه الصفحة. اختر واحدًا الآن لتصبح الصفحة جاهزة للاستخدام، أو اتركه فارغًا لربطه لاحقًا.",
1141
+ "tableNeedsConnection": "اختر مصدر بيانات أولًا.",
1142
+ "tableNone": "غير مرتبط",
1143
+ "template": "القالب",
1144
+ "templateHint": "يحدّد ما يمكن أن تحتويه الصفحة. يمكنك تغييره لاحقًا.",
1145
+ "title": "العنوان",
1146
+ "titleHint": "يظهر في الشريط الجانبي وفي ترويسة الصفحة.",
1147
+ "visible": "إظهار في الشريط الجانبي",
1148
+ "visibleHint": "تبقى الصفحة المخفية متاحة عبر رابطها لكل من يملك الرابط.",
1149
+ "width": "عرض المحتوى",
1150
+ "widthHint": "إلى أي مدى يتّسع عمود محتوى الصفحة على الشاشات الكبيرة."
885
1151
  },
886
- "tree": {
887
- "label": "المخطط",
888
- "search": "البحث في الجداول والأعمدة",
889
- "searchPlaceholder": "ابحث في الجداول…",
890
- "noMatches": "لا توجد جداول تطابق بحثك.",
891
- "collapse": "طي الجدول",
892
- "expand": "توسيع الجدول",
893
- "unsaved": "تغيير غير محفوظ",
894
- "excluded": "مستبعد"
1152
+ "icon": {
1153
+ "noMatches": "لا توجد أيقونات تطابق هذا البحث.",
1154
+ "none": "اختر أيقونة",
1155
+ "search": "ابحث عن أيقونة"
895
1156
  },
896
- "badge": {
897
- "pk": "PK",
898
- "fk": "FK",
899
- "unique": "UNIQUE",
900
- "pii": "بيانات شخصية",
901
- "masked": "مخفي"
1157
+ "list": {
1158
+ "count": "{count, plural, zero {لا صفحات} one {صفحة واحدة} two {صفحتان} few {# صفحات} many {# صفحة} other {# صفحة}}",
1159
+ "title": "الصفحات"
902
1160
  },
903
- "unavailableTitle": "محرّر إعادة تعيين المخطط غير متوفر",
904
- "unavailableBody": "لا يتضمّن هذا الإصدار محرّر إعادة التعيين بعد (09-T12). أعد تشغيل التوليد بعد وصوله لإعادة تعيين التسميات والأنواع والعلاقات."
905
- },
906
- "publicApi": {
907
- "error": "Something went wrong",
908
- "scopes": {
909
- "deleteTitle": "Delete this scope",
910
- "deleteBody": "Any page using a key bound to this scope stops loading data. Keys are not deleted — revoke them first if that is what you meant.",
911
- "deletePrompt": "Type the scope name to confirm",
912
- "deleteConfirm": "Delete scope",
913
- "issuesTitle": "This scope did not compile",
914
- "title": "Scopes",
915
- "subtitle": "A scope is the whole of what a key may reach — the tables, the exact columns, and a filter the caller can narrow but never remove.",
916
- "emptyTitle": "No scopes yet",
917
- "emptyBody": "Create one below. It is checked against your live schema before it is saved.",
918
- "keyCount": "{count, plural, =0 {no keys} one {# key} other {# keys}}",
919
- "delete": "Delete",
920
- "nameLabel": "Name",
921
- "connectionLabel": "Connection ID",
922
- "documentLabel": "Scope document",
923
- "documentHint": "Compiled against your schema when you save. Every column a caller can reach is listed here and nowhere else.",
924
- "create": "Create scope",
925
- "formLabel": "Create a scope"
926
- },
927
- "cancel": "Cancel",
928
- "close": "Close",
929
- "title": "Public API",
930
- "subtitle": "Let your own customer- or staff-facing pages read this database, through a scope you define.",
931
- "notRegistered": {
932
- "title": "Not enabled on this server",
933
- "body": "Set ADMINIUM_PUBLIC_API_ORIGINS to the exact origins allowed to call it, then restart. Until then these routes are not served at all."
1161
+ "loadFailed": {
1162
+ "body": "تتطلب إدارة الصفحات صلاحية «إدارة الصفحات». اطلب من أحد المسؤولين منحها لأحد أدوارك.",
1163
+ "title": "تعذّر تحميل الصفحات"
934
1164
  },
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."
1165
+ "origin": {
1166
+ "generated": "مولّدة",
1167
+ "llm": "المساعد",
1168
+ "manifest": "إضافة",
1169
+ "system": "النظام",
1170
+ "user": "مخصّصة"
938
1171
  },
939
- "origins": {
940
- "label": "Origins allowed to call it"
1172
+ "padding": {
1173
+ "custom": "مخصص…",
1174
+ "default": "الافتراضي لهذا القالب",
1175
+ "none": "بدون",
1176
+ "standard": "قياسي (28 × 24)",
1177
+ "x": "الجانبان (بكسل)",
1178
+ "y": "أعلى وأسفل (بكسل)"
941
1179
  },
942
- "keys": {
943
- "title": "Keys",
944
- "subtitle": "These go in your page’s JavaScript, so anyone can read them. That is expected — a key can only ever do what its scope allows.",
945
- "emptyTitle": "No keys yet",
946
- "emptyBody": "Create a scope first, then mint a key for it.",
947
- "reveal": "Show key",
948
- "rotate": "Rotate",
949
- "revoke": "Revoke",
950
- "nameLabel": "Name",
951
- "scopeLabel": "Scope",
952
- "scopePlaceholder": "Choose a scope",
953
- "create": "Create key",
954
- "formLabel": "Create a key",
955
- "scopeIsAuthTitle": "The scope is the only permission",
956
- "scopeIsAuthBody": "A key can reach exactly what its scope lists and nothing else. It does not use roles or table permissions, and it cannot read anything through the rest of the API.",
957
- "appLabel": "اربطه بواجهة تطبيق مستضافة (اختياري)",
958
- "appHint": "تقدّم واجهة العملاء في التطبيق هذا المفتاح بنفسها — وتدويره لا يحتاج إعادة بناء.",
959
- "appNone": "غير مرتبط"
1180
+ "preview": {
1181
+ "note": "رسم توضيحي للتخطيط، لا لبياناتك. تمتلئ الصفحة الحقيقية بعد الحفظ.",
1182
+ "untitled": "صفحة بلا عنوان"
1183
+ },
1184
+ "row": {
1185
+ "menu": "إجراءات {title}"
1186
+ },
1187
+ "sidebar": {
1188
+ "discard": "تجاهل",
1189
+ "emptyGroup": "لا توجد صفحات في هذه المجموعة.",
1190
+ "help": "أعد ترتيب الصفحات داخل المجموعة، أو انقل إحداها إلى مجموعة أخرى. تسري التغييرات على الجميع.",
1191
+ "moveDown": "تحريك {title} لأسفل",
1192
+ "moveTo": "نقل {title} إلى مجموعة",
1193
+ "moveUp": "تحريك {title} لأعلى",
1194
+ "save": "حفظ الترتيب",
1195
+ "saveFailed": "تعذّر حفظ الترتيب الجديد",
1196
+ "ungrouped": {
1197
+ "body": "تعمل هذه الصفحات عبر روابطها لكنها لا تظهر في الشريط الجانبي. افتح كلًا منها واختر لها مجموعة.",
1198
+ "title": "بعض الصفحات لا تنتمي إلى أي مجموعة"
1199
+ }
960
1200
  },
961
1201
  "status": {
962
- "heading": "Status"
963
- }
964
- },
965
- "hostedApps": {
966
- "title": "التطبيقات المستضافة",
967
- "subtitle": "واجهات التطبيقات التي يقدّمها هذا الخادم — أين تظهر كلٌّ منها، والنطاقات الموجّهة إليها.",
968
- "error": "حدث خطأ ما",
969
- "emptyTitle": "لا تُقدَّم أي واجهات تطبيقات",
970
- "emptyBody": "وجّه ADMINIUM_SURFACES_DIR إلى مجلد يضم الواجهات المبنية — مجلد لكل تطبيق وجهة، وبداخله index.html — ثم أعد التشغيل. تُقدَّم بعدها تحت ‎/apps/‎ وتظهر هنا.",
971
- "surfaces": {
972
- "title": "الواجهات",
973
- "subtitle": "واجهة الموظفين يمكن أن تندمج في الشريط الجانبي لهذه اللوحة أو تبقى مستقلة؛ وواجهة العملاء عامة وتقرأ عبر مفتاحها المرتبط.",
974
- "staff": "الموظفون",
975
- "customer": "العملاء",
976
- "noNav": "الدمج الداخلي غير متاح — أعد بناء هذه الواجهة بأحدث أدوات البناء حتى تُصدر surface.json.",
977
- "noKey": "لا يوجد مفتاح مرتبط — لا يمكن لهذه الواجهة قراءة البيانات حتى يُنشأ لها مفتاح.",
978
- "mintLink": "أنشئ واحدًا من واجهة برمجة التطبيقات العامة",
979
- "boundKey": "تقدّم المفتاح",
980
- "placementLabel": "الموضع",
981
- "placementInternal": "في الشريط الجانبي (مدمجة)",
982
- "placementExternal": "خارجية (عنوانها الخاص فقط)",
983
- "connectionLabel": "يقرأ من",
984
- "connectionUnset": "أي اتصال يعمل"
1202
+ "hidden": "مخفية",
1203
+ "live": "مفعّلة"
985
1204
  },
986
- "domains": {
987
- "title": "النطاقات",
988
- "subtitle": "وجّه DNS النطاق إلى الخادم الوسيط لديك، ومرّر ترويسة Host إلى Adminium، ثم أرفقه هنا — فيقدّم هذا المضيف الواجهة بدل هذه اللوحة. تبقى الشهادات على الخادم الوسيط.",
989
- "issuesTitle": "رُفضت خريطة النطاقات",
990
- "savedTitle": "تم الحفظ",
991
- "savedBody": "تسري الارتباطات خلال ثوانٍ قليلة. لا يستجيب المضيف إلا عندما يصل DNS الخاص به وخادمك الوسيط فعلًا إلى هذا الخادم.",
992
- "none": "لا توجد نطاقات مرفقة.",
993
- "hostLabel": "المضيف",
994
- "surfaceLabel": "الواجهة",
995
- "remove": "إزالة",
996
- "add": "إرفاق نطاق",
997
- "save": "حفظ النطاقات",
998
- "instanceLabel": "النسخة",
999
- "instanceOwn": "التطبيق نفسه"
1205
+ "subtitle": "أضف صفحات تطبيقك وحرّرها ونظّمها، وكذلك ترتيب ظهورها في الشريط الجانبي.",
1206
+ "tab": {
1207
+ "pages": "كل الصفحات",
1208
+ "sidebar": "ترتيب الشريط الجانبي"
1000
1209
  },
1001
- "instances": {
1002
- "title": "النسخ",
1003
- "body": "قدّم التطبيق نفسه على أكثر من قاعدة بيانات. كل نسخة متاحة على /apps/<app>/<segment>/<side>/ ولا تقرأ سوى الاتصال الذي تحدّده لها.",
1004
- "appLabel": "التطبيق",
1005
- "slugLabel": "مقطع الرابط",
1006
- "readsLabel": "يقرأ من",
1007
- "add": "إضافة نسخة",
1008
- "save": "حفظ النسخ",
1009
- "remove": "إزالة",
1010
- "empty": "لا توجد نسخ إضافية.",
1011
- "failed": "تعذّر حفظ النسخ"
1210
+ "title": "الصفحات",
1211
+ "width": {
1212
+ "content": "محتوى (900 بكسل)",
1213
+ "dash": "لوحة معلومات (1320 بكسل)",
1214
+ "default": "الافتراضي لهذا القالب",
1215
+ "full": "عرض كامل (بلا حد)",
1216
+ "narrow": "ضيّق (720 بكسل)",
1217
+ "page": "صفحة (1080 بكسل)",
1218
+ "wide": "عريض (1800 بكسل)"
1012
1219
  }
1013
1220
  },
1014
- "addOns": {
1015
- "plan": {
1016
- "blocked": "This cannot be installed here",
1017
- "needsColumns": "This add-on needs columns you do not have",
1018
- "needsColumnsBody": "Adminium will not add columns to tables you already own. Add them yourself, then install.",
1019
- "willCreate": "This will create tables in your database",
1020
- "willCreateBody": "Installing creates these tables. Uninstalling later leaves them, and their data, alone.",
1021
- "noData": "This add-on reads and writes no tables of its own.",
1022
- "reuse": "This add-on will use tables you already have:"
1023
- },
1024
- "consent": {
1025
- "title": "Install {name}",
1026
- "subtitle": "What this add-on will do, before it can do it.",
1027
- "close": "Close",
1028
- "loading": "Working out what this would do…",
1029
- "hosts": "Attach to",
1030
- "cancel": "Cancel",
1031
- "confirm": "Install"
1032
- },
1033
- "connect": {
1034
- "apiKey": "API key",
1035
- "submit": "Connect"
1036
- },
1037
- "title": "Add-ons",
1038
- "subtitle": "Extra capabilities you can add to your apps — shipping, artwork, data. Each one says what it needs before you install it.",
1039
- "error": "Something went wrong",
1040
- "browse": {
1041
- "title": "Available",
1042
- "online": "Includes add-ons from the online catalogue. Checking for newer versions is a separate action.",
1043
- "offline": "Showing the add-ons that came with this build. Browsing online is switched off, and nothing here has contacted the internet.",
1044
- "refresh": "Check for newer",
1045
- "emptyTitle": "No add-ons available",
1046
- "emptyBody": "This build shipped none, and the online catalogue is off.",
1047
- "bundled": "Included",
1048
- "upgrade": "v{version} available",
1049
- "download": "Download",
1050
- "install": "Install",
1051
- "discard": "Discard",
1052
- "upgradeAction": "Upgrade",
1053
- "toggle": "Browse the online catalogue"
1221
+ "publicApi": {
1222
+ "cancel": "إلغاء",
1223
+ "close": "إغلاق",
1224
+ "error": "حدث خطأ ما",
1225
+ "keys": {
1226
+ "appHint": "تقدّم واجهة العملاء في التطبيق هذا المفتاح بنفسها — وتدويره لا يحتاج إعادة بناء.",
1227
+ "appLabel": "اربطه بواجهة تطبيق مستضافة (اختياري)",
1228
+ "appNone": "غير مرتبط",
1229
+ "create": "إنشاء مفتاح",
1230
+ "emptyBody": "أنشئ نطاقًا أولًا، ثم أنشئ له مفتاحًا.",
1231
+ "emptyTitle": "لا توجد مفاتيح بعد",
1232
+ "formLabel": "إنشاء مفتاح",
1233
+ "nameLabel": "الاسم",
1234
+ "reveal": "إظهار المفتاح",
1235
+ "revoke": "إبطال",
1236
+ "rotate": "تدوير",
1237
+ "scopeIsAuthBody": "يصل المفتاح إلى ما يذكره نطاقه بالضبط ولا شيء غيره. لا يستخدم الأدوار ولا صلاحيات الجداول، ولا يستطيع قراءة أي شيء عبر بقية واجهة API.",
1238
+ "scopeIsAuthTitle": "النطاق هو الصلاحية الوحيدة",
1239
+ "scopeLabel": "النطاق",
1240
+ "scopePlaceholder": "اختر نطاقًا",
1241
+ "subtitle": "توضع هذه في شفرة JavaScript الخاصة بصفحتك، فيستطيع أي شخص قراءتها. وهذا متوقَّع — لا يستطيع المفتاح أبدًا أن يفعل غير ما يسمح به نطاقه.",
1242
+ "title": "المفاتيح"
1054
1243
  },
1055
- "installed": {
1056
- "title": "Installed",
1057
- "emptyTitle": "Nothing installed yet",
1058
- "emptyBody": "Install an add-on above and it will appear here with its hosts and connection.",
1059
- "connected": "Connected",
1060
- "notConnected": "Not connected",
1061
- "egress": "May contact: {hosts}",
1062
- "on": "on",
1063
- "off": "off",
1064
- "disconnect": "Disconnect",
1065
- "uninstall": "Uninstall"
1244
+ "notRegistered": {
1245
+ "body": "اضبط ADMINIUM_PUBLIC_API_ORIGINS على الأصول المحدّدة المسموح لها باستدعائها، ثم أعد التشغيل. وحتى ذلك الحين لا تُقدَّم هذه المسارات على الإطلاق.",
1246
+ "title": "غير مُفعَّل على هذا الخادم"
1066
1247
  },
1067
- "confirm": {
1068
- "close": "Close",
1069
- "disconnectTitle": "Disconnect this add-on",
1070
- "uninstallTitle": "Uninstall this add-on",
1071
- "discardTitle": "Discard this download",
1072
- "disconnectBody": "Its keys are deleted and it stops making calls. Every table and every row it created stays exactly as it is, and you can reconnect at any time.",
1073
- "uninstallBody": "Its keys are deleted and its files are removed from this server. Every table and every row it created stays exactly as it is. You can install it again later.",
1074
- "discardBody": "The downloaded files are deleted. Nothing was installed, so nothing else changes — you can download it again whenever you like.",
1075
- "cancel": "Cancel",
1076
- "disconnect": "Disconnect",
1077
- "uninstall": "Uninstall",
1078
- "discard": "Discard"
1248
+ "origins": {
1249
+ "label": "الأصول المسموح لها باستدعائها"
1079
1250
  },
1080
- "upgradeNote": "Upgrading keeps the hosts an add-on is attached to and the connection it already has.",
1081
- "job": {
1082
- "title": "Downloading",
1083
- "body": "Fetching and verifying. Nothing is installed until you say so.",
1084
- "failed": "The download did not finish. Nothing was installed."
1251
+ "scopes": {
1252
+ "connectionLabel": "معرّف الاتصال",
1253
+ "create": "إنشاء نطاق",
1254
+ "delete": "حذف",
1255
+ "deleteBody": "أي صفحة تستخدم مفتاحًا مرتبطًا بهذا النطاق ستتوقف عن تحميل البيانات. لا تُحذف المفاتيح — أبطِلها أولًا إن كان هذا ما تقصده.",
1256
+ "deleteConfirm": "حذف النطاق",
1257
+ "deletePrompt": "اكتب اسم النطاق للتأكيد",
1258
+ "deleteTitle": "حذف هذا النطاق",
1259
+ "documentHint": "يُصرَّف مقابل مخططك عند الحفظ. كل عمود يستطيع المستدعي الوصول إليه مذكور هنا ولا مكان غيره. قد تكون القيمة الافتراضية '{'\"$generate\": \"uuid\"'}' أو '{'\"$generate\": \"now\"'}' — يملؤها الخادم عند الإنشاء، فيستطيع الزائر إضافة صف دون اختيار معرّفه.",
1260
+ "documentLabel": "مستند النطاق",
1261
+ "emptyBody": "أنشئ واحدًا بالأسفل. يُتحقَّق منه مقابل مخططك الفعلي قبل حفظه.",
1262
+ "emptyTitle": "لا توجد نطاقات بعد",
1263
+ "formLabel": "إنشاء نطاق",
1264
+ "issuesTitle": "تعذّر تصريف هذا النطاق",
1265
+ "keyCount": "{count, plural, =0 {لا مفاتيح} one {مفتاح واحد} two {مفتاحان} few {# مفاتيح} many {# مفتاحًا} other {# مفتاح}}",
1266
+ "nameLabel": "الاسم",
1267
+ "subtitle": "النطاق هو كل ما يمكن للمفتاح الوصول إليه — الجداول والأعمدة بعينها وعامل تصفية يستطيع المستدعي تضييقه لكن لا يزيله أبدًا.",
1268
+ "title": "النطاقات"
1085
1269
  },
1086
- "veto": {
1087
- "title": "This deployment cannot browse online",
1088
- "body": "The setting is saved, but network features are off for this server and that wins. Downloaded add-ons still work, and you can still upload one yourself."
1270
+ "status": {
1271
+ "heading": "الحالة"
1089
1272
  },
1090
- "sideload": {
1091
- "title": "Upload a package",
1092
- "hint": "For a server with no internet. It is checked exactly as a download would be, so it needs the hash that came with it.",
1093
- "file": "Package file (.tgz)",
1094
- "key": "Add-on key",
1095
- "version": "Version",
1096
- "sha": "Integrity (sha512-…)",
1097
- "shaHint": "The `integrity` value `npm pack --json` printed. The upload is refused if the bytes do not match.",
1098
- "submit": "Upload"
1273
+ "subtitle": "اسمح لصفحاتك الموجَّهة للعملاء أو للموظفين بقراءة قاعدة البيانات هذه، عبر نطاق تحدده أنت.",
1274
+ "title": "واجهة API العامة",
1275
+ "toggle": {
1276
+ "hint": "إيقاف هذا يوقف كل طلب عام فورًا. ولا يُحذف شيء — تبقى المفاتيح والنطاقات والبيانات كما هي.",
1277
+ "label": "تقديم واجهة API العامة"
1099
1278
  }
1100
1279
  },
1101
- "pages": {
1102
- "title": "الصفحات",
1103
- "subtitle": "أضف صفحات تطبيقك وحرّرها ونظّمها، وكذلك ترتيب ظهورها في الشريط الجانبي.",
1104
- "createButton": "صفحة جديدة",
1105
- "loadFailed": {
1106
- "title": "تعذّر تحميل الصفحات",
1107
- "body": "تتطلب إدارة الصفحات صلاحية «إدارة الصفحات». اطلب من أحد المسؤولين منحها لأحد أدوارك."
1108
- },
1109
- "tab": {
1110
- "pages": "كل الصفحات",
1111
- "sidebar": "ترتيب الشريط الجانبي"
1280
+ "remap": {
1281
+ "badge": {
1282
+ "fk": "FK",
1283
+ "masked": "مخفي",
1284
+ "pii": "بيانات شخصية",
1285
+ "pk": "PK",
1286
+ "unique": "UNIQUE"
1287
+ },
1288
+ "column": {
1289
+ "currency": "العملة",
1290
+ "currencyHelper": "رمز ISO 4217 المطبَّق على تنسيق المبالغ المالية.",
1291
+ "enum": "دلالات التعداد",
1292
+ "enumCategory": "فئة",
1293
+ "enumHelper": "تعدادات سير العمل تُشغّل شارات الحالة وأعمدة اللوحات؛ وتربط درجات الألوان القيم بمقياس التظليل الدلالي.",
1294
+ "enumKind": "نوع التعداد",
1295
+ "enumLabelFor": "تسمية {value}",
1296
+ "enumToneAuto": "تلقائي",
1297
+ "enumToneFor": "درجة لون {value}",
1298
+ "enumWorkflow": "سير عمل",
1299
+ "labelHelper": "المستنتج: {name}",
1300
+ "labelOverride": "تسمية العرض",
1301
+ "logicalType": "النوع المنطقي",
1302
+ "logicalTypeHelper": "المستنتج: {type} (من {dbType}) — يربطه المهايئ؛ ولا يمكن تجاوزه في v1.",
1303
+ "nullable": "يقبل NULL",
1304
+ "pii": "الإخفاء افتراضيًا",
1305
+ "piiHelper": "تُعرض القيم المخفية محجوبة؛ ويتطلب كشفها صلاحية data.unmask_pii ويُسجَّل في سجل التدقيق.",
1306
+ "semantic": "النوع الدلالي",
1307
+ "semanticHelper": "المصنِّف: {tag} · الثقة {confidence}% · المصدر: {source}",
1308
+ "semanticInferred": "المستنتج: {tag}",
1309
+ "unclassified": "لم يُصنَّف بعد."
1310
+ },
1311
+ "diff": {
1312
+ "count": "{count} تغييرات",
1313
+ "one": "تغيير واحد",
1314
+ "regenerate": "إعادة توليد الصفحات",
1315
+ "revertAll": "التراجع عن الكل",
1316
+ "revertOne": "التراجع عن {change}",
1317
+ "save": "حفظ التجاوزات",
1318
+ "saved": "تم حفظ التجاوزات."
1319
+ },
1320
+ "empty": {
1321
+ "description": "حدد عنصرًا في شجرة المخطط لإعادة تعيين تسميته أو نوعه أو علاقاته أو إخفائه.",
1322
+ "title": "اختر جدولًا أو عمودًا"
1323
+ },
1324
+ "inspector": "الفاحص",
1325
+ "loadFailed": "تعذّر تحميل المخطط لهذا الاتصال.",
1326
+ "mode": {
1327
+ "design": "التصميم",
1328
+ "diagram": "مخطّط",
1329
+ "remap": "التسميات والعلاقات"
1330
+ },
1331
+ "modeLabel": "وضع المحرِّر",
1332
+ "noDesign": {
1333
+ "noPrivilege": "لا يستطيع دور هذا الاتصال إنشاء الجداول أو تعديلها. امنحه صلاحيات المخطط، أو اتصل بدور يمتلكها.",
1334
+ "readOnlyIntent": "أُعِدَّ هذا الاتصال للتحليلات للقراءة فقط. غيّر الغرض منه في الإعدادات لتعديل مخططه.",
1335
+ "readOnlyRole": "يسجّل هذا الاتصال الدخول بدور للقراءة فقط، لذا لا يستطيع Adminium تغيير مخططه.",
1336
+ "schemaFile": "أُنشئ هذا الاتصال من ملف مخطط، فلا توجد قاعدة بيانات لتغييرها. التسميات والعلاقات ما زالت تعمل."
1337
+ },
1338
+ "relations": {
1339
+ "accept": "قبول",
1340
+ "accepted": "مقبولة",
1341
+ "add": "إضافة علاقة افتراضية",
1342
+ "addButton": "إضافة علاقة",
1343
+ "cardinality": "التعددية",
1344
+ "confidence": "مستنتجة · {pct}%",
1345
+ "declared": "المفاتيح الخارجية المعلنة",
1346
+ "fromColumn": "من العمود",
1347
+ "fromPlaceholder": "customer_id",
1348
+ "inferred": "العلاقات المستنتجة",
1349
+ "noColumns": "لا يوجد عمود مطابق",
1350
+ "noTables": "لا يوجد جدول مطابق",
1351
+ "noneDeclared": "لا توجد مفاتيح خارجية معلنة تمسّ هذا الجدول.",
1352
+ "noneInferred": "لا شيء مستنتج لهذا الجدول.",
1353
+ "overrideBadge": "تجاوز",
1354
+ "overrides": "علاقات التجاوز (المطبَّقة)",
1355
+ "suppress": "استبعاد",
1356
+ "suppressed": "مستبعدة",
1357
+ "toColumn": "إلى العمود",
1358
+ "toTable": "إلى الجدول"
1359
+ },
1360
+ "saveFailed": "فشل الحفظ: {message}",
1361
+ "subtitle": "{tables} جدولًا · {applied} تجاوزًا مطبَّقًا",
1362
+ "table": {
1363
+ "hierarchy": "التسلسل الهرمي",
1364
+ "icon": "الأيقونة",
1365
+ "iconPicker": "أيقونة الجدول",
1366
+ "include": "التضمين في التطبيق المولَّد",
1367
+ "includeHelper": "الجداول المستبعدة لا تحصل على صفحات وتختفي من التنقل.",
1368
+ "kind": "النوع",
1369
+ "labelHelper": "المستنتج: {name}",
1370
+ "labelOverride": "تسمية العرض",
1371
+ "navGroup": "مجموعة التنقل",
1372
+ "navGroupHelper": "يقرر المولِّد موضع التنقل — تجاوز table.navGroup ليس ضمن مفردات v1.",
1373
+ "polymorphic": "أزواج متعددة الأشكال",
1374
+ "role": "الدور",
1375
+ "rows": "تقدير عدد الصفوف",
1376
+ "selfFk": "مرجع ذاتي عبر {column}",
1377
+ "shape": "شكل الجدول (مصنَّف)",
1378
+ "shapeHelper": "يُعاد حساب التصنيف مع كل استبطان؛ وتُطبَّق التجاوزات فوقه وتبقى بعد إعادة التوليد.",
1379
+ "system": "نظام",
1380
+ "unclassified": "غير مصنَّف"
1381
+ },
1382
+ "tabs": {
1383
+ "details": "التفاصيل",
1384
+ "relations": "العلاقات"
1385
+ },
1386
+ "title": "المخطّط",
1387
+ "toast": {
1388
+ "regenerateFailed": "فشلت إعادة التوليد",
1389
+ "regenerated": "{created} أُنشئت · {updated} حُدّثت · {unchanged} لم تتغير",
1390
+ "regeneratedDetail": "تُحفظ الصفحات التي حرّرتها يدويًا — لم يُعَد التوليد في مكانه إلا للصفحات التي بقي generated_hash الخاص بها دون تعديل.",
1391
+ "saved": "تم حفظ تجاوزات المخطط",
1392
+ "savedDetail": "يعكس المخطط المطبَّق أدناه تغييراتك."
1393
+ },
1394
+ "tree": {
1395
+ "collapse": "طي الجدول",
1396
+ "excluded": "مستبعد",
1397
+ "expand": "توسيع الجدول",
1398
+ "label": "المخطط",
1399
+ "noMatches": "لا توجد جداول تطابق بحثك.",
1400
+ "search": "البحث في الجداول والأعمدة",
1401
+ "searchPlaceholder": "ابحث في الجداول…",
1402
+ "unsaved": "تغيير غير محفوظ"
1403
+ },
1404
+ "unavailableBody": "لا يتضمّن هذا الإصدار محرّر إعادة التعيين بعد (09-T12). أعد تشغيل التوليد بعد وصوله لإعادة تعيين التسميات والأنواع والعلاقات.",
1405
+ "unavailableTitle": "محرّر إعادة تعيين المخطط غير متوفر"
1406
+ },
1407
+ "review": {
1408
+ "unavailableBody": "لا يتضمّن هذا الإصدار شاشة مراجعة الإثراء بعد (06-T14). ستصل مع تدفق الفرق والتطبيق.",
1409
+ "unavailableTitle": "شاشة المراجعة غير متوفرة"
1410
+ },
1411
+ "settings": {
1412
+ "globalDefaultsNav": "الإعدادات الافتراضية العامة",
1413
+ "title": "الإعدادات",
1414
+ "workspaceSection": "مساحة العمل"
1415
+ },
1416
+ "settingsAi": {
1417
+ "byo": {
1418
+ "body": "يستطيع Studio توليد مطالبة مكتفية ذاتيًا من مخططك. شغّلها في Claude Code أو ChatGPT أو أي أداة تفضّلها، ثم الصق JSON الذي تعيده في معالج الاتصال. نفس التحقق ونفس المراجعة ونفس النتيجة كالمسار المباشر.",
1419
+ "guarantee1": "تحمل المطالبة مخططك والإحصاءات المجمّعة فقط — ولا تحمل بيانات الصفوف افتراضيًا أبدًا.",
1420
+ "guarantee2": "لا تُضمَّن أي بيانات اعتماد أو عنوان URL للنسخة أو معرّفات.",
1421
+ "guarantee3": "عمليات BYO لا تُجري أي اتصالات شبكية.",
1422
+ "guaranteeTitle": "ضمان الخلو من القياس عن بُعد",
1423
+ "heading": "لا مفتاح؟ استخدم أداة الذكاء الاصطناعي الخاصة بك",
1424
+ "headingRecommended": "استخدم أداة الذكاء الاصطناعي الخاصة بك — دون الحاجة إلى مفتاح",
1425
+ "promptVersion": "المطالبة {version}",
1426
+ "recommended": "موصى به",
1427
+ "schemaVersion": "المخطط {version}",
1428
+ "subtitle": "رحلة النسخ واللصق — لا يغادر أي شيء هذا الجهاز."
1429
+ },
1430
+ "configure": {
1431
+ "heading": "تهيئة {provider}"
1432
+ },
1433
+ "field": {
1434
+ "baseUrl": "عنوان URL الأساسي",
1435
+ "baseUrlHelper": "جذر نقطة النهاية الذي يخدم ‎/chat/completions.",
1436
+ "baseUrlOptional": "اتركه كما هو ما لم يكن Ollama يعمل على مضيف آخر.",
1437
+ "key": "مفتاح API",
1438
+ "keyMask": "sk-…{last4}",
1439
+ "keyOptional": "اختياري — بعض نقاط النهاية لا تحتاج إلى مفتاح.",
1440
+ "keyReplace": "استبدال المفتاح",
1441
+ "keyStored": "مخزَّن مشفّرًا. استبدله لاستخدام مفتاح مختلف.",
1442
+ "keyWriteOnly": "للكتابة فقط: بمجرد حفظه لا يُعرض مرة أخرى أبدًا.",
1443
+ "model": "النموذج",
1444
+ "modelFreeText": "أدخل معرّف النموذج الدقيق الذي تخدمه نقطة النهاية لديك.",
1445
+ "modelLive": "تم التحميل مباشرة من المزوّد.",
1446
+ "modelLoading": "جارٍ التحميل…",
1447
+ "modelPlaceholder": "اختر نموذجًا…",
1448
+ "modelStatic": "قائمة موثوقة؛ اكتب معرّفًا مخصصًا بعد الحفظ لتحديثها.",
1449
+ "noKeyBody": "يعمل Ollama محليًا، لذا لا يغادر أي شيء هذا الجهاز.",
1450
+ "noKeyTitle": "لا حاجة إلى مفتاح API"
1451
+ },
1452
+ "history": {
1453
+ "byo": "BYO",
1454
+ "colChunks": "الأجزاء",
1455
+ "colDate": "التاريخ",
1456
+ "colSource": "المصدر",
1457
+ "colStatus": "الحالة",
1458
+ "connection": "الاتصال",
1459
+ "directPath": "مباشر",
1460
+ "empty": "لا توجد عمليات إثراء بعد. أثرِ مخططًا من معالج الاتصال لعرض السجل هنا.",
1461
+ "errorBody": "أعد تحميل الصفحة للمحاولة مرة أخرى.",
1462
+ "errorTitle": "تعذّر تحميل العمليات",
1463
+ "heading": "سجل العمليات",
1464
+ "noConnections": "اربط قاعدة بيانات أولًا — تُسجَّل عمليات الإثراء لكل اتصال على حدة.",
1465
+ "openReview": "افتح مراجعة العملية بتاريخ {date}",
1466
+ "subtitle": "عمليات الإثراء السابقة. افتح إحداها لمراجعة اقتراحاتها.",
1467
+ "tableLabel": "عمليات الإثراء"
1468
+ },
1469
+ "provider": {
1470
+ "active": "نشط",
1471
+ "anthropic": {
1472
+ "desc": "نماذج Claude عبر واجهة Anthropic البرمجية.",
1473
+ "label": "Anthropic"
1474
+ },
1475
+ "heading": "مزوّد الذكاء الاصطناعي",
1476
+ "networkDisabledBody": "تم إعداد نسخة Adminium هذه دون وصول صادر إلى الإنترنت، لذا لا يمكنها الوصول إلى واجهة أي مزوّد. استخدم دورة النسخ واللصق أدناه — لا تحتاج إلى مفتاح ولا إلى شبكة.",
1477
+ "networkDisabledTitle": "مزوّدو الذكاء الاصطناعي المباشرون معطَّلون في هذا التثبيت",
1478
+ "ollama": {
1479
+ "desc": "نماذج تعمل محليًا عبر Ollama — بدون مفتاح وبدون سحابة.",
1480
+ "label": "Ollama (محلي)"
1481
+ },
1482
+ "openai": {
1483
+ "desc": "نماذج GPT عبر واجهة OpenAI البرمجية.",
1484
+ "label": "OpenAI"
1485
+ },
1486
+ "openaiCompatible": {
1487
+ "desc": "أي نقطة نهاية تتحدث بتنسيق OpenAI — Groq وTogether وvLLM وLM Studio.",
1488
+ "label": "متوافق مع OpenAI"
1489
+ },
1490
+ "requiresNetwork": "يتطلب اتصالاً بالإنترنت ومفتاح API",
1491
+ "subtitle": "اختر كيف يصل Adminium إلى نموذج لإثراء مخططك. تُخزَّن المفاتيح مشفّرة ولا تُعرض مرة أخرى أبدًا."
1492
+ },
1493
+ "runStatus": {
1494
+ "applied": "مطبَّق",
1495
+ "awaitingResponse": "في انتظار الرد",
1496
+ "discarded": "مُهمَل",
1497
+ "draft": "مسودة",
1498
+ "failed": "فشل",
1499
+ "partiallyApplied": "مطبَّق جزئيًا",
1500
+ "running": "قيد التشغيل",
1501
+ "validated": "تم التحقق"
1502
+ },
1503
+ "save": "حفظ المزوّد",
1504
+ "saveFailed": "تعذّر حفظ مزوّد الذكاء الاصطناعي. حاول مرة أخرى.",
1505
+ "saved": "تم حفظ مزوّد الذكاء الاصطناعي",
1506
+ "subtitle": "اربط نموذجًا ليقترح Adminium التسميات والمجموعات والعلاقات والمزيد — تُراجَع دائمًا كفرق قبل تطبيق أي شيء.",
1507
+ "test": "اختبار الاتصال",
1508
+ "testError": "فشل الاختبار",
1509
+ "testErrorBody": "تعذّر الوصول إلى المزوّد. تحقق من المفتاح وعنوان URL الأساسي.",
1510
+ "testHintDirty": "احفظ تغييراتك قبل الاختبار.",
1511
+ "testOk": "تم الاتصال بـ {model} خلال {latency} مللي ثانية",
1512
+ "testUnknownModel": "المزوّد",
1513
+ "testing": "جارٍ التواصل مع المزوّد…",
1514
+ "title": "الإثراء بالذكاء الاصطناعي"
1515
+ },
1516
+ "settingsHub": {
1517
+ "addOnsCard": {
1518
+ "body": "تصفَّح الإضافات وثبِّتها واربطها — كتل إضافية وحِزم بيانات وتكاملات — أو ارفع واحدة بنفسك.",
1519
+ "cta": "فتح الإضافات",
1520
+ "heading": "الإضافات"
1521
+ },
1522
+ "aiCard": {
1523
+ "body": "هيّئ مزوّد ذكاء اصطناعي (أو رحلة النسخ واللصق) لإثراء التسميات والمجموعات والعلاقات.",
1524
+ "cta": "فتح إعدادات الذكاء الاصطناعي",
1525
+ "heading": "الإثراء بالذكاء الاصطناعي"
1526
+ },
1527
+ "danger": {
1528
+ "deleteCta": "حذف الاتصال",
1529
+ "deleteDesc": "يحذف الاتصال والصفحات المولّدة منه. لن تُمسّ قاعدة بياناتك. لا يمكن التراجع عن هذا الإجراء.",
1530
+ "empty": "لا شيء للحذف — لا اتصالات بعد.",
1531
+ "heading": "منطقة الخطر",
1532
+ "subtitle": "إجراءات لا يمكن التراجع عنها."
1533
+ },
1534
+ "defaultsCard": {
1535
+ "body": "إعدادات السمة ولون التمييز والكثافة واللغة على مستوى مساحة العمل موجودة ضمن الإعدادات الافتراضية العامة.",
1536
+ "cta": "فتح الإعدادات الافتراضية العامة",
1537
+ "heading": "الإعدادات الافتراضية للمظهر واللغة"
1538
+ },
1539
+ "email": {
1540
+ "attachmentCap": {
1541
+ "error": "بين {min, number} و{max, number} ميغابايت.",
1542
+ "helper": "أقصى حجم للمرفقات في الرسالة الواحدة.",
1543
+ "label": "حد المرفقات (ميغابايت)"
1544
+ },
1545
+ "from": {
1546
+ "error": "أدخل عنوان بريد إلكتروني.",
1547
+ "helper": "العنوان وحده، أو اسم معروض قبله.",
1548
+ "label": "عنوان المُرسِل"
1549
+ },
1550
+ "heading": "البريد الإلكتروني (SMTP)",
1551
+ "host": {
1552
+ "error": "اسم مضيف أو عنوان IP فقط — بدون بروتوكول أو منفذ أو بيانات اعتماد.",
1553
+ "label": "مضيف SMTP"
1554
+ },
1555
+ "pass": {
1556
+ "error": "اسم المستخدم هذا يحتاج إلى كلمة مرور.",
1557
+ "helper": "تُخزَّن مشفَّرة ولا تُعرض مرة أخرى. اتركها فارغة للإبقاء على الحالية.",
1558
+ "label": "كلمة المرور"
1559
+ },
1560
+ "port": {
1561
+ "error": "بين {min, number} و{max, number}.",
1562
+ "label": "المنفذ"
1563
+ },
1564
+ "remove": "إزالة خادم البريد",
1565
+ "review": {
1566
+ "password": "استُبدلت",
1567
+ "removed": "أُزيل"
1568
+ },
1569
+ "secure": {
1570
+ "helper": "مُفعَّل للمنفذ 465. عند الإيقاف يبدأ الاتصال بنص واضح ثم يُرقَّى عبر STARTTLS، وهو ما يتوقعه المنفذ 587.",
1571
+ "label": "TLS ضمني"
1572
+ },
1573
+ "senders": {
1574
+ "add": "إضافة مرسل",
1575
+ "address": "العنوان",
1576
+ "error": "أدخل عنوان بريد إلكتروني.",
1577
+ "heading": "المرسلون",
1578
+ "helper": "العناوين التي يمكن إرسال البريد منها. عنوان مرسل SMTP متاح دائمًا.",
1579
+ "implicit": "عنوان مرسل SMTP",
1580
+ "name": "الاسم المعروض",
1581
+ "remove": "إزالة المرسل",
1582
+ "review": "المرسلون"
1583
+ },
1584
+ "unconfigured": "لا يوجد خادم بريد مُعدّ، لذلك لا يستطيع Adminium إرسال إعادة تعيين كلمات المرور أو دعوات المستخدمين أو التقارير المجدولة.",
1585
+ "user": {
1586
+ "helper": "اتركه فارغًا إذا كان المُرحِّل لا يطلب مصادقة.",
1587
+ "label": "اسم المستخدم"
1588
+ }
1589
+ },
1590
+ "identity": {
1591
+ "appName": {
1592
+ "error": "أدخل اسمًا لا يتجاوز 60 حرفًا.",
1593
+ "helper": "يظهر في الشريط الجانبي وعنوان المتصفح ورسائل البريد الإلكتروني.",
1594
+ "label": "اسم التطبيق"
1595
+ },
1596
+ "heading": "هوية مساحة العمل",
1597
+ "logo": {
1598
+ "badType": "اختر صورة PNG أو JPEG أو WebP أو GIF أو SVG.",
1599
+ "drop": "أفلِت صورة هنا",
1600
+ "helper": "PNG أو JPEG أو WebP أو GIF أو SVG بحجم أقصاه 1 ميغابايت. يحل محل العلامة المدمجة في كل مكان.",
1601
+ "label": "الشعار",
1602
+ "remove": "إزالة",
1603
+ "removed": "تمت إزالة الشعار",
1604
+ "replace": "استبدال الشعار",
1605
+ "tooLarge": "حجم الصورة أكبر من 1 ميغابايت.",
1606
+ "undo": "تراجع",
1607
+ "upload": "رفع شعار",
1608
+ "uploaded": "تم تحديث الشعار"
1609
+ },
1610
+ "showVersion": {
1611
+ "helper": "رقم الإصدار بجوار الشعار. إيقافه يخفي الإصدار الذي تشغّله.",
1612
+ "label": "الإصدار في الشريط الجانبي"
1613
+ }
1614
+ },
1615
+ "pagesCard": {
1616
+ "body": "أضف الصفحات وحرّرها واحذفها، وغيّر ما تعرضه كل صفحة، وأعد ترتيب الشريط الجانبي.",
1617
+ "cta": "إدارة الصفحات",
1618
+ "heading": "الصفحات"
1619
+ },
1620
+ "publicApiCard": {
1621
+ "body": "اسمح لصفحاتك الموجَّهة للعملاء أو للموظفين بقراءة قاعدة البيانات هذه، عبر نطاق تحدده أنت.",
1622
+ "cta": "فتح واجهة API العامة",
1623
+ "heading": "واجهة API العامة"
1624
+ },
1625
+ "review": {
1626
+ "cancel": "إلغاء",
1627
+ "change": "{before} → {after}",
1628
+ "close": "إغلاق",
1629
+ "confirm": "حفظ التغييرات",
1630
+ "hidden": "مخفي",
1631
+ "off": "متوقف",
1632
+ "on": "مفعّل",
1633
+ "shown": "ظاهر",
1634
+ "subtitle": "راجع تغييراتك قبل الحفظ.",
1635
+ "title": "حفظ إعدادات مساحة العمل"
1636
+ },
1637
+ "save": "حفظ التغييرات",
1638
+ "saveFailed": "تعذّر حفظ إعدادات مساحة العمل. حاول مرة أخرى.",
1639
+ "saved": "تم تحديث إعدادات مساحة العمل",
1640
+ "security": {
1641
+ "allowSignup": {
1642
+ "desc": "يمكن لأي شخص إنشاء حساب — عند الإيقاف تبقى مساحة العمل بالدعوة فقط.",
1643
+ "label": "السماح بالتسجيل الذاتي"
1644
+ },
1645
+ "heading": "الأمان",
1646
+ "passwordMin": {
1647
+ "error": "بين {min, number} و{max, number} حرفًا.",
1648
+ "label": "الحد الأدنى لطول كلمة المرور"
1649
+ },
1650
+ "require2fa": {
1651
+ "desc": "يجب على كل عضو تفعيل المصادقة الثنائية لتسجيل الدخول.",
1652
+ "label": "فرض المصادقة الثنائية",
1653
+ "note": "إرشادي وليس مانعًا: يُوجَّه الأعضاء بلا مصادقة ثنائية إلى إعدادها ولا يمكنهم إيقافها بعد ذلك، لكن تسجيل دخولهم لا يُمنع أبدًا، ومفاتيح API غير متأثرة."
1654
+ },
1655
+ "sessionTtl": {
1656
+ "error": "بين {min, number} و{max, number} ساعة.",
1657
+ "label": "مدة الجلسة (بالساعات)"
1658
+ }
1112
1659
  },
1113
- "list": {
1114
- "title": "الصفحات",
1115
- "count": "{count, plural, zero {لا صفحات} one {صفحة واحدة} two {صفحتان} few {# صفحات} many {# صفحة} other {# صفحة}}"
1660
+ "storageCard": {
1661
+ "body": "اختر أين تعيش الملفات المرفوعة وملفات التصدير وغيرها من البايتات المخزَّنة — هذا الخادم، أو حاوية، أو خادمك الخاص.",
1662
+ "cta": "فتح التخزين",
1663
+ "heading": "التخزين"
1116
1664
  },
1117
- "empty": {
1118
- "title": "لا توجد صفحات بعد",
1119
- "body": "اربط قاعدة بيانات لتوليد الصفحات تلقائيًا، أو أنشئ صفحة يدويًا."
1665
+ "subtitle": "الهوية والأمان والإجراءات الخطرة لمساحة العمل هذه.",
1666
+ "superAdminOnly": "لا يمكن تغيير هوية مساحة العمل وإعدادات الأمان إلا لمشرف أعلى.",
1667
+ "superAdminOnlyTitle": "يتطلب مشرفًا أعلى",
1668
+ "title": "إعدادات مساحة العمل",
1669
+ "translationsCard": {
1670
+ "body": "أعد صياغة أي نص في Adminium، واختر اللغات المتاحة للناس، وأضف لغاتك الخاصة.",
1671
+ "cta": "فتح الترجمات",
1672
+ "heading": "اللغات والترجمات"
1673
+ }
1674
+ },
1675
+ "source": {
1676
+ "dsn": {
1677
+ "helper": "postgres://user:password@host:5432/database — يعمل أيضًا mysql:// وsqlite:.",
1678
+ "incomplete": "أضف المضيف وقاعدة البيانات، مثل postgres://user@host:5432/db",
1679
+ "invalidScheme": "مخطط غير معروف — المتوقع postgres:// أو mysql:// أو mariadb:// أو sqlite:",
1680
+ "label": "سلسلة الاتصال",
1681
+ "quickFill": "تعبئة سريعة:"
1120
1682
  },
1121
- "status": {
1122
- "live": "مفعّلة",
1123
- "hidden": "مخفية"
1683
+ "engine": {
1684
+ "label": "محرّك قاعدة البيانات",
1685
+ "mysql": "MySQL / MariaDB",
1686
+ "postgres": "PostgreSQL",
1687
+ "sqlite": "SQLite"
1124
1688
  },
1125
- "origin": {
1126
- "generated": "مولّدة",
1127
- "manifest": "إضافة",
1128
- "llm": "المساعد",
1129
- "system": "النظام",
1130
- "user": "مخصّصة"
1689
+ "fields": {
1690
+ "database": "قاعدة البيانات",
1691
+ "host": "المضيف",
1692
+ "password": "كلمة المرور",
1693
+ "port": "المنفذ",
1694
+ "preview": "معاينة سلسلة الاتصال:",
1695
+ "ssl": "وضع SSL",
1696
+ "user": "المستخدم"
1131
1697
  },
1132
- "row": {
1133
- "menu": "إجراءات {title}"
1698
+ "file": {
1699
+ "columns": "أعمدة",
1700
+ "detectedAs": "تم اكتشاف: {format}",
1701
+ "dropHint": "SQL DDL / pg_dump وPrisma وDrizzle وTypeORM وSequelize وRails schema.rb ونماذج Django وAdminium JSON",
1702
+ "dropTitle": "أسقط ملف المخطط هنا، أو تصفّح",
1703
+ "errorTitle": "تعذّر تحليل الملف",
1704
+ "moreWarnings": "+{count} تحذيرات إضافية — تظهر القائمة الكاملة في خطوة التحليل.",
1705
+ "parseFailed": "تعذّر تحليل هذا الملف. إذا أخطأ الاكتشاف التلقائي، فاختر التنسيق صراحةً وأعد المحاولة.",
1706
+ "parsing": "جارٍ قراءة ملف المخطط المرفوع…",
1707
+ "pitch": "لا حاجة إلى اتصال بقاعدة البيانات — نحلّل ملف المخطط ونبني اللوحات نفسها.",
1708
+ "requestFailed": "فشل الرفع — تحقّق من اتصالك وأعد المحاولة.",
1709
+ "tables": "جداول",
1710
+ "unsupported": "تنسيق غير معروف — المدعوم: SQL DDL وPrisma وDrizzle وTypeORM وSequelize وRails schema.rb ونماذج Django وAdminium JSON. اختر واحدًا صراحةً وأعد المحاولة.",
1711
+ "warnings": "تحذيرات"
1134
1712
  },
1135
- "action": {
1136
- "edit": "تحرير الصفحة",
1137
- "duplicate": "تكرار",
1138
- "hide": "إخفاء من الشريط الجانبي",
1139
- "show": "إظهار في الشريط الجانبي",
1140
- "delete": "حذف الصفحة"
1713
+ "format": {
1714
+ "auto": "اكتشاف تلقائي",
1715
+ "django": "Django models.py",
1716
+ "drizzle": "Drizzle ORM",
1717
+ "helper": "اترك الاكتشاف التلقائي مفعّلًا ما لم يخطئ في التعرّف.",
1718
+ "json": "Adminium JSON",
1719
+ "label": "تنسيق المخطط",
1720
+ "prisma": "مخطط Prisma",
1721
+ "rails": "Rails schema.rb",
1722
+ "sequelize": "نماذج Sequelize",
1723
+ "sql": "SQL DDL / pg_dump",
1724
+ "typeorm": "كيانات TypeORM"
1141
1725
  },
1142
- "create": {
1143
- "title": "صفحة جديدة",
1144
- "failed": "تعذّر إنشاء الصفحة",
1145
- "submit": "إنشاء الصفحة",
1146
- "subtitle": "اختر ما تعرضه هذه الصفحة وكيف تبدو. المعاينة تتبع اختياراتك."
1726
+ "mode": {
1727
+ "dsn": "سلسلة الاتصال",
1728
+ "fields": "حقول منفصلة",
1729
+ "file": "ملف المخطط"
1147
1730
  },
1148
- "duplicate": {
1149
- "title": "تكرار الصفحة",
1150
- "failed": "تعذّر تكرار الصفحة",
1151
- "submit": "تكرار"
1731
+ "modeLabel": "وضع إدخال المصدر",
1732
+ "name": "اسم الاتصال",
1733
+ "namePlaceholder": "Postgres للإنتاج",
1734
+ "readOnlyRole": {
1735
+ "body": "أثناء الإعداد يقرأ Adminium بيانات المخطّط الوصفية فقط — ولا يقرأ صفوفك أبدًا. ننصح بمستخدم مخصّص بصلاحيات SELECT فقط؛ ويمكنك تحديد مكان جداول Adminium الخاصة في خطوة تخزين البيانات الوصفية.",
1736
+ "title": "استخدم دورًا للقراءة فقط"
1737
+ },
1738
+ "sqlite": {
1739
+ "file": "مسار ملف قاعدة البيانات",
1740
+ "helper": "SQLite ملف وليس خادمًا — أدخل المسار المطلق على الجهاز الذي يشغّل Adminium."
1152
1741
  },
1742
+ "subtitle": "وجّه Adminium إلى قاعدة بيانات وسننشئ لوحة إدارة من مخططها.",
1743
+ "title": "اربط قاعدة بياناتك"
1744
+ },
1745
+ "storage": {
1746
+ "actionFailed": "لم ينجح ذلك",
1747
+ "add": "إضافة وجهة",
1748
+ "availableOnDisk": "{size} متاح على هذا القرص",
1749
+ "default": "الافتراضية",
1750
+ "defaultBlockedByDisabled": "لا يمكن أن تكون وجهة معطَّلة هي الافتراضية. فعّلها أولًا.",
1153
1751
  "delete": {
1154
- "title": "هل تريد حذف هذه الصفحة؟",
1155
- "body": "لا يمكن التراجع عن ذلك. ستُحذف العروض المحفوظة والتخطيطات الشخصية لهذه الصفحة لدى الجميع.",
1156
- "bodyGenerated": "أُنشئت هذه الصفحة عبر توليد المخطّط، لذا ستعود في المرة التالية التي تعيد فيها التوليد. وستُحذف العروض المحفوظة والتخطيطات الشخصية لدى الجميع.",
1157
- "prompt": "اكتب {slug} للتأكيد",
1158
- "confirm": "حذف الصفحة"
1752
+ "blockedBody": "لا تزال {name} تحتوي على {count, plural, one {ملف واحد} two {ملفين} few {# ملفات} many {# ملفًا} other {# ملف}}. انقل هذه الملفات إلى وجهة أخرى أولًا، ثم احذفها.",
1753
+ "blockedTitle": "لا تزال هذه الوجهة تحتوي على ملفات",
1754
+ "body": "ينسى Adminium {name} وبيانات اعتمادها. ولا يُمسّ أي شيء مخزَّن فيها فالحاوية أو الخادم نفسه ملكك، وأي ملفات ما زالت مسجَّلة عليها ستمنع الحذف.",
1755
+ "confirm": "حذف الوجهة",
1756
+ "title": "حذف هذه الوجهة"
1757
+ },
1758
+ "deleteButton": "حذف",
1759
+ "disable": "تعطيل",
1760
+ "disabled": "معطَّلة",
1761
+ "driver": {
1762
+ "local": "مسار على هذا الجهاز",
1763
+ "s3": "حاوية متوافقة مع S3",
1764
+ "webdav": "خادم WebDAV"
1765
+ },
1766
+ "edit": "تحرير",
1767
+ "editor": {
1768
+ "createTitle": "إضافة وجهة",
1769
+ "editTitle": "تحرير الوجهة",
1770
+ "subtitle": "يقرأ Adminium ويكتب عبر هذه الوجهة نيابةً عنك؛ فهي بنية تحتية تتحكم فيها أنت."
1159
1771
  },
1772
+ "enable": "تفعيل",
1160
1773
  "field": {
1161
- "title": "العنوان",
1162
- "titleHint": "يظهر في الشريط الجانبي وفي ترويسة الصفحة.",
1163
- "slug": "مسار الصفحة",
1164
- "slugHint": "أحرف إنجليزية صغيرة وأرقام وشرطات. الجزء الأخير من المسار فقط يُضاف الباقي تلقائيًا.",
1165
- "slugTaken": "يستخدم هذا المسار صفحة أخرى بالفعل.",
1166
- "slugWarning": "تغيير المسار يُبطل الروابط والإشارات المرجعية الحالية إلى هذه الصفحة.",
1167
- "template": "القالب",
1168
- "templateHint": "يحدّد ما يمكن أن تحتويه الصفحة. يمكنك تغييره لاحقًا.",
1169
- "group": "مجموعة الشريط الجانبي",
1170
- "groupHint": "القسم الذي تظهر فيه ضمن الشريط الجانبي.",
1171
- "icon": "الأيقونة",
1172
- "iconHint": "تظهر بجوار اسم الصفحة في الشريط الجانبي.",
1173
- "visible": "إظهار في الشريط الجانبي",
1174
- "visibleHint": "تبقى الصفحة المخفية متاحة عبر رابطها لكل من يملك الرابط.",
1175
- "table": "الجدول",
1176
- "tableCreateHint": "الجدول الذي تقرأ منه هذه الصفحة. اختر واحدًا الآن لتصبح الصفحة جاهزة للاستخدام، أو اتركه فارغًا لربطه لاحقًا.",
1177
- "tableNone": "غير مرتبط",
1178
- "tableNeedsConnection": "اختر مصدر بيانات أولًا.",
1179
- "connection": "مصدر البيانات",
1180
- "connectionNone": "بدون",
1181
- "iconPick": "اختر أيقونة الصفحة",
1182
- "padding": "حشو الصفحة",
1183
- "width": "عرض المحتوى",
1184
- "widthHint": "إلى أي مدى يتّسع عمود محتوى الصفحة على الشاشات الكبيرة."
1774
+ "accessKeyId": "معرّف مفتاح الوصول",
1775
+ "bucket": "الحاوية",
1776
+ "driver": "النوع",
1777
+ "driverLocked": "تغيير نوع وجهة تحتوي على ملفات بالفعل يجعل الوصول إلى تلك الملفات متعذّرًا.",
1778
+ "endpoint": "نقطة النهاية",
1779
+ "endpointDerived": "اتركها فارغة مع AWS نفسها فنقطة النهاية تُشتق من المنطقة.",
1780
+ "name": "الاسم",
1781
+ "namePlaceholder": "حاوية الملفات المرفوعة",
1782
+ "password": "كلمة المرور",
1783
+ "pathStyle": "العنونة بنمط المسار",
1784
+ "pathStyleToggle": "عنونة الحاوية كمسار بدلًا من اسم مضيف",
1785
+ "prefix": "البادئة",
1786
+ "prefixHelper": "مجلد داخل الوجهة. ووجهتان على حاوية واحدة لا تختلفان إلا هنا تتشاركان الحاوية دون أن تتشاركا مساحة الأسماء.",
1787
+ "preset": "المزوّد",
1788
+ "presetHelper": "يملأ نقطة النهاية والمنطقة ونمط العنونة. أما ما لا يستطيع المزوّد معرفته عن حسابك فيُترك فارغًا لتكتبه بنفسك.",
1789
+ "publicBaseUrl": "عنوان URL الأساسي العام",
1790
+ "publicBaseUrlHelper": "اختياري. المكان الذي يمكن قراءة هذه الكائنات منه دون Adminium — شبكة CDN أمام حاوية عامة. لا يُستخدم إلا عندما يخزّن العمود رابطًا.",
1791
+ "region": "المنطقة",
1792
+ "root": "المجلد",
1793
+ "rootHelper": "مسار مطلق يستطيع هذا الخادم الكتابة فيه — وحدة تخزين موصولة أو مشاركة شبكية. وليس المجلد الافتراضي، فهو أصلًا أول عنصر في القائمة.",
1794
+ "secretAccessKey": "مفتاح الوصول السرّي",
1795
+ "secretKept": "هناك مفتاح مخزَّن. اترك الحقلين فارغين للإبقاء عليه، أو املأهما معًا لاستبداله.",
1796
+ "url": "عنوان URL للمجموعة",
1797
+ "urlHelper": "المجموعة التي يكتب فيها Adminium، كما ينشرها خادمك.",
1798
+ "username": "اسم المستخدم"
1799
+ },
1800
+ "fileCount": "{count, plural, zero {لا ملفات} one {ملف واحد} two {ملفان} few {# ملفات} many {# ملفًا} other {# ملف}}",
1801
+ "kind": {
1802
+ "archive": "دفعات سجل التدقيق المؤرشفة",
1803
+ "branding": "شعار مساحة العمل",
1804
+ "export": "ملفات ناتجة عن تصدير البيانات",
1805
+ "import": "ملفات CSV المرفوعة وتقارير أخطائها",
1806
+ "schema": "ملفات المخطط المستوردة",
1807
+ "upload": "ملفات مرفقة بالسجلات"
1185
1808
  },
1186
- "editor": {
1187
- "title": "تحرير الصفحة",
1188
- "save": "حفظ التغييرات",
1189
- "saveFailed": "تعذّر حفظ التغييرات",
1190
- "openPage": "فتح الصفحة",
1191
- "generated": {
1192
- "title": "وُلِّدت هذه الصفحة من مخطّط قاعدة بياناتك",
1193
- "body": "تُحفظ تعديلاتك عند إعادة التوليد، إذ تُعلَّم الصفحة بأنها محرَّرة وتُترك كما هي. أما الحذف فلا يدوم إلا حتى تُعيد عملية التوليد التالية إنشاءها."
1194
- },
1195
- "contentUnavailable": "تعذّر تحميل محتوى الصفحة",
1196
- "contentUnavailableBody": "لا يزال بإمكانك حفظ البيانات أعلاه.",
1197
- "contentInvalid": "تعذّرت قراءة إعدادات هذه الصفحة",
1198
- "contentInvalidBody": "كُتبت بإصدار أحدث، أو أنها تالفة. أعد توليد الصفحة أو احذفها.",
1199
- "data": "البيانات",
1200
- "schemaFailed": "تعذّر عرض الجداول",
1201
- "schemaFailedBody": "قد لا يكون هذا الاتصال قد خضع للتحليل بعد. شغّل الفحص من الاستوديو ← اتصالات البيانات.",
1202
- "notBindable": "هذا القالب غير مرتبط بجدول واحد",
1203
- "notBindableBody": "يُبنى محتواه عنصرًا تلو الآخر. افتح الصفحة واستخدم «تحرير» لإضافتها.",
1204
- "recompose": "ستُعاد بناء هذه الصفحة",
1205
- "recomposeBody": "الحفظ يستبدل محتواها بتخطيط جديد للقالب والجدول أعلاه. ستفقد تعديلات الأعمدة وتغييرات العناصر في هذه الصفحة.",
1206
- "missing": "لم تعد هذه الصفحة موجودة",
1207
- "missingBody": "ربما حُذفت، أو أزالتها عملية توليد.",
1208
- "details": "التفاصيل",
1209
- "itemsPending": "احفظ التغيير أعلاه أولًا — سيُعاد بناء محتوى الصفحة من القالب والجدول الجديدين.",
1210
- "columns": "الأعمدة",
1211
- "appearance": "المظهر"
1809
+ "list": {
1810
+ "subtitle": "تذهب الملفات الجديدة إلى الوجهة الافتراضية. أما الملفات الموجودة فتبقى مكانها حتى تنقلها.",
1811
+ "title": "الوجهات"
1212
1812
  },
1213
- "sidebar": {
1214
- "help": "أعد ترتيب الصفحات داخل المجموعة، أو انقل إحداها إلى مجموعة أخرى. تسري التغييرات على الجميع.",
1215
- "discard": "تجاهل",
1216
- "save": "حفظ الترتيب",
1217
- "saveFailed": "تعذّر حفظ الترتيب الجديد",
1218
- "emptyGroup": "لا توجد صفحات في هذه المجموعة.",
1219
- "moveUp": "تحريك {title} لأعلى",
1220
- "moveDown": "تحريك {title} لأسفل",
1221
- "moveTo": "نقل {title} إلى مجموعة",
1222
- "ungrouped": {
1223
- "title": "بعض الصفحات لا تنتمي إلى أي مجموعة",
1224
- "body": "تعمل هذه الصفحات عبر روابطها لكنها لا تظهر في الشريط الجانبي. افتح كلًا منها واختر لها مجموعة."
1225
- }
1813
+ "loadFailed": {
1814
+ "forbidden": "يتطلب تغيير مكان تخزين الملفات صلاحية «إدارة التخزين». اطلب من أحد المسؤولين منحها لأحد أدوارك.",
1815
+ "title": "تعذّر تحميل الوجهات"
1226
1816
  },
1227
- "columns": {
1228
- "help": "اسحب لإعادة ترتيب الأعمدة، وغيّر أسماء عناوينها، واختر ما يظهر منها في الجدول.",
1229
- "empty": "لا توجد أعمدة بعد — أضفها أدناه.",
1230
- "pk": "مفتاح",
1231
- "pii": "بيانات شخصية",
1232
- "header": "عنوان العمود {name}",
1233
- "shown": "ظاهر",
1234
- "toggle": "إظهار {name} في الجدول",
1235
- "dragHandle": "إعادة ترتيب {name}",
1236
- "remove": "إزالة {name}",
1237
- "addOpen": "إضافة عمود",
1238
- "addTitle": "إضافة عمود",
1239
- "addSearch": "البحث في الأعمدة…",
1240
- "addFromTable": "من {table}",
1241
- "addFromLinked": "من الجداول المرتبطة",
1242
- "addLinkedHelp": "اعرض قيمة من الجدول الذي يشير إليه عمود الربط.",
1243
- "addVia": "عبر {column}",
1244
- "addNoMatches": "لا توجد أعمدة تطابق ”{query}“.",
1245
- "followColumn": "تتبّع {name}",
1246
- "addLinkedFrom": "جداول ترتبط بهذا الجدول",
1247
- "addLinkedFromHelp": "أضِف عدد الصفوف التي تشير إلى كل سجل.",
1248
- "countBadge": "العدد",
1249
- "lookupBadge": "مرتبط",
1250
- "lookupBack": "رجوع",
1251
- "lookupBrowse": "اختر ما يُعرض من {table}",
1252
- "lookupBroken": "تعذّر تحليل هذا الارتباط",
1253
- "lookupBrokenBody": "تغيّر المخطط أثناء التصفح. ابدأ الارتباط من جديد.",
1254
- "schemaUnavailable": "تعذّر سرد أعمدة قاعدة البيانات، لذا لا يمكن إضافة الأعمدة هنا.",
1255
- "none": {
1256
- "title": "لا تحتوي هذه الصفحة على أعمدة بعد",
1257
- "body": "تُقرأ الأعمدة من الجدول عند توليد الصفحة. اربط هذه الصفحة بجدول ثم أعد التوليد لملئها."
1258
- }
1817
+ "localDisk": "قرص هذا الخادم",
1818
+ "move": {
1819
+ "from": "من",
1820
+ "kinds": "الاقتصار على",
1821
+ "kindsHelp": "اترك كل الخيارات بلا تحديد لنقلها جميعًا. الملفات المرفوعة هي التي يرفقها الأشخاص؛ أما البقية فهي مخرجات أنتجها Adminium نفسه.",
1822
+ "open": "نقل الملفات…",
1823
+ "start": "بدء النقل",
1824
+ "startedBody": "يعمل النقل في الخلفية كمهمة {jobId} ويستمر حتى لو غادرت هذه الصفحة. تتغيّر الأعداد أدناه كلما وصلت الملفات — أعد التحميل لرؤيتها.",
1825
+ "startedTitle": "بدأ النقل",
1826
+ "subtitle": "ينسخ كل ملف من وجهة إلى أخرى ثم ينسى النسخة القديمة. وتظل التنزيلات تعمل طوال الوقت.",
1827
+ "title": "نقل الملفات",
1828
+ "to": "إلى"
1829
+ },
1830
+ "preset": {
1831
+ "aws": "AWS S3",
1832
+ "b2": "Backblaze B2",
1833
+ "minio": "MinIO أو خادم آخر متوافق مع S3",
1834
+ "r2": "Cloudflare R2",
1835
+ "spaces": "DigitalOcean Spaces",
1836
+ "tigris": "Tigris",
1837
+ "wasabi": "Wasabi"
1838
+ },
1839
+ "save": "حفظ الوجهة",
1840
+ "secret": {
1841
+ "partialBody": "املأ الحقلين معًا لاستبدال بيانات الاعتماد المخزَّنة، أو أفرغهما معًا للإبقاء عليها. أما حفظ أحدهما وحده فسيُبقي القديمة بصمت.",
1842
+ "partialTitle": "نصف بيانات الاعتماد ليس بيانات اعتماد"
1843
+ },
1844
+ "setDefault": "جعلها الافتراضية",
1845
+ "status": {
1846
+ "error": "يتعذّر الوصول إليها",
1847
+ "ok": "يمكن الوصول إليها",
1848
+ "untested": "لم تُختبر"
1259
1849
  },
1260
- "icon": {
1261
- "none": "اختر أيقونة",
1262
- "search": "ابحث عن أيقونة",
1263
- "noMatches": "لا توجد أيقونات تطابق هذا البحث."
1850
+ "subtitle": "المكان الذي تحفظ فيه هذه النسخة الملفات المرفوعة وملفات التصدير وغيرها من البايتات المخزَّنة.",
1851
+ "test": {
1852
+ "button": "اختبار",
1853
+ "failed": "تعذّر الوصول إلى هذه الوجهة",
1854
+ "ok": "تم الوصول خلال {ms} م.ث",
1855
+ "unreachable": "تعذّر إجراء الاختبار"
1264
1856
  },
1265
- "preview": {
1266
- "untitled": "صفحة بلا عنوان",
1267
- "note": "رسم توضيحي للتخطيط، لا لبياناتك. تمتلئ الصفحة الحقيقية بعد الحفظ."
1857
+ "title": "التخزين",
1858
+ "usedBytes": "{size} مستخدَم"
1859
+ },
1860
+ "tables": {
1861
+ "emptyFilter": "لا توجد جداول مطابقة لعامل التصفية.",
1862
+ "highVolume": "حجم كبير",
1863
+ "highVolumeNote": "الجداول التي تتجاوز 100,000 صف تبدأ غير محددة — نادرًا ما تنتمي جداول التشغيل إلى لوحة معلومات.",
1864
+ "importNoCounts": "ملفات المخطط لا تحمل أعداد صفوف — يعرض العمود — حتى يتم توصيل قاعدة بيانات مباشرة.",
1865
+ "joinHidden": "تم إخفاء {count} من جداول الربط/النظام مسبقًا — لكنها لا تزال تشغّل علاقات متعدد-إلى-متعدد.",
1866
+ "listLabel": "الجداول القابلة للتضمين",
1867
+ "pii": "PII",
1868
+ "search": "تصفية الجداول…",
1869
+ "subtitle": "اختر ما تريد تضمينه. يمكنك تغيير ذلك في أي وقت.",
1870
+ "title": "اختر جداولك"
1871
+ },
1872
+ "test": {
1873
+ "errorTitle": "فشل الاتصال",
1874
+ "hint": {
1875
+ "auth": "فشلت المصادقة — تحقّق من اسم المستخدم وكلمة المرور في DSN.",
1876
+ "hostUnreachable": "تعذّر الوصول إلى المضيف — تحقّق من اسم المضيف والمنفذ، ومن أن قاعدة البيانات تقبل الاتصالات من هذا الجهاز (أضف عناوين IP الخاصة بنا إلى قائمة السماح).",
1877
+ "metaPlacement": "لا يمكن لهذا المصدر استضافة جداول Adminium الوصفية — تابع بقاعدة بيانات وصفية منفصلة.",
1878
+ "permission": "اتصل الدور لكنه يفتقر إلى صلاحيات قراءة المخطط — امنح دور الاستبطان صلاحية USAGE على المخطط.",
1879
+ "timeout": "لم تُجب قاعدة البيانات في الوقت المناسب — تحقّق من مسار الشبكة والحمل ثم أعد المحاولة.",
1880
+ "tls": "فشل تفاوض TLS — جرّب sslmode=require، أو ارفع شهادة CA التي يتوقعها خادمك.",
1881
+ "unknown": "فشل الاتصال — تحقّق من DSN وأعد المحاولة."
1268
1882
  },
1269
- "padding": {
1270
- "default": "الافتراضي لهذا القالب",
1271
- "none": "بدون",
1272
- "standard": "قياسي (28 × 24)",
1273
- "custom": "مخصص…",
1274
- "x": "الجانبان (بكسل)",
1275
- "y": "أعلى وأسفل (بكسل)"
1883
+ "log": {
1884
+ "connectFailed": "فشل الاتصال.",
1885
+ "connected": "متصل ({latency} م.ث) · استبطان للقراءة فقط",
1886
+ "connecting": "جارٍ إنشاء اتصال آمن…",
1887
+ "detected": "تم اكتشاف {tables} جدولًا · {columns} عمودًا",
1888
+ "found": "تم العثور على {tables} جدولًا · {columns} عمودًا",
1889
+ "jobFailed": "فشل الاستبطان.",
1890
+ "mapping": "جارٍ ربط أنواع الأعمدة ← عناصر الإدخال",
1891
+ "moreWarnings": "+{count} تحذيرات إضافية من المحلّل",
1892
+ "networkFailed": "فشل الطلب — تحقّق من اتصالك وأعد المحاولة.",
1893
+ "parsingFile": "جارٍ تحليل {file}…",
1894
+ "piiDone": "اكتمل فحص البيانات الشخصية — تم إخفاء {count} عمودًا افتراضيًا",
1895
+ "piiDoneUnknown": "اكتمل فحص البيانات الشخصية",
1896
+ "piiScan": "جارٍ البحث عن أعمدة البيانات الشخصية…",
1897
+ "readingFile": "جارٍ قراءة ملف المخطط المرفوع…",
1898
+ "readingSchema": "جارٍ قراءة المخطط: public",
1899
+ "ready": "جاهز",
1900
+ "relations": "جارٍ اكتشاف العلاقات…"
1276
1901
  },
1277
- "width": {
1278
- "default": "الافتراضي لهذا القالب",
1279
- "narrow": "ضيّق (720 بكسل)",
1280
- "content": "محتوى (900 بكسل)",
1281
- "page": "صفحة (1080 بكسل)",
1282
- "dash": "لوحة معلومات (1320 بكسل)",
1283
- "wide": "عريض (1800 بكسل)",
1284
- "full": "عرض كامل (بلا حد)"
1285
- }
1902
+ "logLabel": "سجل الاستبطان",
1903
+ "retry": "إعادة المحاولة",
1904
+ "subtitle": "جارٍ استبطان الجداول والأعمدة والعلاقات. يستغرق ذلك بضع ثوانٍ.",
1905
+ "title": "جارٍ تحليل مخططك",
1906
+ "trust": "نقرأ مخططك وبياناتك فقط. لا يتم تعديل أي شيء."
1907
+ },
1908
+ "title": "Studio",
1909
+ "wizard": {
1910
+ "back": "رجوع",
1911
+ "bridgeAppliedBody": "سلّمها متصفحك من adminium.dev — وصلت مباشرةً إلى هذا الجهاز ولم تُرفع إلى أي خادم. راجعها بالأسفل ثم تابع.",
1912
+ "bridgeAppliedTitle": "تم استلام سلسلة الاتصال",
1913
+ "bridgeFailedBody": "إمّا أنها استُخدمت من قبل أو انتهت صلاحيتها. الصق سلسلة الاتصال بالأسفل بدلاً من ذلك.",
1914
+ "bridgeFailedTitle": "تعذّر استخدام عملية التسليم هذه",
1915
+ "continue": "متابعة",
1916
+ "persistFailed": "تعذّر حفظ اختيار الجداول — أعد المحاولة.",
1917
+ "persistFailedTitle": "فشل الحفظ",
1918
+ "progress": "تقدّم الإعداد",
1919
+ "step": {
1920
+ "enrich": "إثراء",
1921
+ "generate": "توليد",
1922
+ "intent": "الغرض",
1923
+ "meta": "تخزين البيانات الوصفية",
1924
+ "source": "المصدر",
1925
+ "tables": "الجداول",
1926
+ "test": "تحليل"
1927
+ },
1928
+ "title": "اتصال جديد"
1286
1929
  }
1287
1930
  }