ysk-server-shared 1.0.0 → 1.1.9

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 (779) hide show
  1. package/README.md +21 -6
  2. package/dist/browser.d.ts +1 -0
  3. package/dist/browser.d.ts.map +1 -1
  4. package/dist/browser.js +1 -0
  5. package/dist/browser.js.map +1 -1
  6. package/dist/bt-tracker.d.ts +56 -0
  7. package/dist/bt-tracker.d.ts.map +1 -1
  8. package/dist/bt-tracker.js +1 -0
  9. package/dist/bt-tracker.js.map +1 -1
  10. package/dist/capabilities.d.ts +1 -1
  11. package/dist/capabilities.d.ts.map +1 -1
  12. package/dist/capabilities.js +6 -0
  13. package/dist/capabilities.js.map +1 -1
  14. package/dist/cdn.d.ts +2 -0
  15. package/dist/cdn.d.ts.map +1 -1
  16. package/dist/databases.d.ts +2 -0
  17. package/dist/databases.d.ts.map +1 -1
  18. package/dist/docker.d.ts +134 -0
  19. package/dist/docker.d.ts.map +1 -0
  20. package/dist/docker.js +94 -0
  21. package/dist/docker.js.map +1 -0
  22. package/dist/dto.d.ts +10 -1
  23. package/dist/dto.d.ts.map +1 -1
  24. package/dist/email-domain.d.ts +7 -0
  25. package/dist/email-domain.d.ts.map +1 -1
  26. package/dist/files.d.ts +18 -0
  27. package/dist/files.d.ts.map +1 -1
  28. package/dist/files.js +35 -1
  29. package/dist/files.js.map +1 -1
  30. package/dist/ftp.d.ts +9 -0
  31. package/dist/ftp.d.ts.map +1 -1
  32. package/dist/index.d.ts +2 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +2 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/migrate.d.ts +7 -0
  37. package/dist/migrate.d.ts.map +1 -1
  38. package/dist/migrate.js.map +1 -1
  39. package/dist/route-capabilities.d.ts +16 -0
  40. package/dist/route-capabilities.d.ts.map +1 -1
  41. package/dist/route-capabilities.js +142 -4
  42. package/dist/route-capabilities.js.map +1 -1
  43. package/dist/system.d.ts +4 -0
  44. package/dist/system.d.ts.map +1 -1
  45. package/dist/validators.d.ts +178 -0
  46. package/dist/validators.d.ts.map +1 -0
  47. package/dist/validators.js +121 -0
  48. package/dist/validators.js.map +1 -0
  49. package/locales/ar/agents.json +17 -2
  50. package/locales/ar/apache.json +7 -1
  51. package/locales/ar/audit.json +4 -1
  52. package/locales/ar/backups.json +36 -1
  53. package/locales/ar/btTracker.json +121 -39
  54. package/locales/ar/catalog.json +8 -8
  55. package/locales/ar/cdn.json +89 -1
  56. package/locales/ar/cli.json +4 -4
  57. package/locales/ar/common.json +9 -1
  58. package/locales/ar/cron.json +33 -1
  59. package/locales/ar/dashboard.json +24 -3
  60. package/locales/ar/db.json +75 -3
  61. package/locales/ar/dns.json +23 -1
  62. package/locales/ar/docker.json +248 -0
  63. package/locales/ar/email.json +50 -11
  64. package/locales/ar/errors.json +5 -2
  65. package/locales/ar/fail2ban.json +38 -13
  66. package/locales/ar/files.json +53 -10
  67. package/locales/ar/firewall.json +19 -10
  68. package/locales/ar/ftp.json +32 -1
  69. package/locales/ar/hostBrowse.json +37 -15
  70. package/locales/ar/listToolbar.json +2 -1
  71. package/locales/ar/login.json +12 -7
  72. package/locales/ar/logs.json +31 -2
  73. package/locales/ar/metrics.json +36 -1
  74. package/locales/ar/migrate.json +27 -1
  75. package/locales/ar/nav.json +11 -4
  76. package/locales/ar/network.json +27 -2
  77. package/locales/ar/nginx.json +4 -1
  78. package/locales/ar/notFound.json +6 -0
  79. package/locales/ar/notes.json +252 -64
  80. package/locales/ar/playbooks.json +1 -1
  81. package/locales/ar/projects.json +134 -12
  82. package/locales/ar/protection.json +72 -8
  83. package/locales/ar/publicFiles.json +18 -1
  84. package/locales/ar/rbac.json +15 -2
  85. package/locales/ar/readiness.json +33 -2
  86. package/locales/ar/redis.json +24 -1
  87. package/locales/ar/runtime.json +49 -2
  88. package/locales/ar/search.json +14 -10
  89. package/locales/ar/security.json +68 -7
  90. package/locales/ar/serviceExposure.json +18 -6
  91. package/locales/ar/services.json +69 -3
  92. package/locales/ar/software.json +2 -1
  93. package/locales/ar/softwareLifecycle.json +12 -2
  94. package/locales/ar/ssl.json +12 -1
  95. package/locales/ar/stackWizard.json +9 -2
  96. package/locales/ar/support.json +33 -17
  97. package/locales/ar/system.json +31 -2
  98. package/locales/ar/systemd.json +3 -1
  99. package/locales/ar/terminal.json +9 -1
  100. package/locales/ar/translation.json +2422 -302
  101. package/locales/ar/updates.json +76 -3
  102. package/locales/ar/users.json +19 -1
  103. package/locales/ar/validators.json +325 -0
  104. package/locales/ar/vnc.json +17 -1
  105. package/locales/ar/vpn.json +18 -3
  106. package/locales/bn/agents.json +17 -2
  107. package/locales/bn/apache.json +7 -1
  108. package/locales/bn/audit.json +4 -1
  109. package/locales/bn/backups.json +36 -1
  110. package/locales/bn/btTracker.json +121 -39
  111. package/locales/bn/catalog.json +5 -5
  112. package/locales/bn/cdn.json +89 -1
  113. package/locales/bn/cli.json +2 -2
  114. package/locales/bn/common.json +9 -1
  115. package/locales/bn/cron.json +33 -1
  116. package/locales/bn/dashboard.json +24 -3
  117. package/locales/bn/db.json +75 -3
  118. package/locales/bn/dns.json +23 -1
  119. package/locales/bn/docker.json +248 -0
  120. package/locales/bn/email.json +49 -10
  121. package/locales/bn/errors.json +5 -2
  122. package/locales/bn/fail2ban.json +26 -1
  123. package/locales/bn/files.json +53 -10
  124. package/locales/bn/firewall.json +17 -8
  125. package/locales/bn/ftp.json +32 -1
  126. package/locales/bn/hostBrowse.json +37 -15
  127. package/locales/bn/listToolbar.json +2 -1
  128. package/locales/bn/login.json +13 -8
  129. package/locales/bn/logs.json +31 -2
  130. package/locales/bn/metrics.json +36 -1
  131. package/locales/bn/migrate.json +27 -1
  132. package/locales/bn/nav.json +10 -3
  133. package/locales/bn/network.json +27 -2
  134. package/locales/bn/nginx.json +4 -1
  135. package/locales/bn/notFound.json +6 -0
  136. package/locales/bn/notes.json +222 -34
  137. package/locales/bn/projects.json +133 -11
  138. package/locales/bn/protection.json +66 -2
  139. package/locales/bn/publicFiles.json +18 -1
  140. package/locales/bn/rbac.json +15 -2
  141. package/locales/bn/readiness.json +32 -1
  142. package/locales/bn/redis.json +24 -1
  143. package/locales/bn/runtime.json +49 -2
  144. package/locales/bn/search.json +13 -9
  145. package/locales/bn/security.json +68 -7
  146. package/locales/bn/serviceExposure.json +18 -6
  147. package/locales/bn/services.json +68 -2
  148. package/locales/bn/software.json +2 -1
  149. package/locales/bn/softwareLifecycle.json +12 -2
  150. package/locales/bn/ssl.json +12 -1
  151. package/locales/bn/stackWizard.json +9 -2
  152. package/locales/bn/support.json +38 -22
  153. package/locales/bn/system.json +31 -2
  154. package/locales/bn/systemd.json +3 -1
  155. package/locales/bn/terminal.json +9 -1
  156. package/locales/bn/translation.json +2366 -246
  157. package/locales/bn/updates.json +76 -3
  158. package/locales/bn/users.json +19 -1
  159. package/locales/bn/validators.json +325 -0
  160. package/locales/bn/vnc.json +17 -1
  161. package/locales/bn/vpn.json +18 -3
  162. package/locales/en/agents.json +20 -5
  163. package/locales/en/apache.json +6 -0
  164. package/locales/en/audit.json +4 -1
  165. package/locales/en/backups.json +39 -4
  166. package/locales/en/btTracker.json +85 -3
  167. package/locales/en/cdn.json +104 -2
  168. package/locales/en/cli.json +7 -7
  169. package/locales/en/common.json +9 -1
  170. package/locales/en/cron.json +33 -1
  171. package/locales/en/dashboard.json +28 -7
  172. package/locales/en/db.json +81 -8
  173. package/locales/en/dns.json +23 -1
  174. package/locales/en/docker.json +248 -0
  175. package/locales/en/email.json +50 -11
  176. package/locales/en/errors.json +6 -3
  177. package/locales/en/fail2ban.json +31 -6
  178. package/locales/en/files.json +44 -1
  179. package/locales/en/firewall.json +10 -1
  180. package/locales/en/ftp.json +34 -3
  181. package/locales/en/hostBrowse.json +24 -2
  182. package/locales/en/listToolbar.json +2 -1
  183. package/locales/en/login.json +6 -1
  184. package/locales/en/logs.json +33 -4
  185. package/locales/en/metrics.json +37 -2
  186. package/locales/en/migrate.json +27 -1
  187. package/locales/en/nav.json +9 -2
  188. package/locales/en/network.json +27 -2
  189. package/locales/en/nginx.json +4 -1
  190. package/locales/en/notFound.json +6 -0
  191. package/locales/en/notes.json +233 -42
  192. package/locales/en/projects.json +133 -11
  193. package/locales/en/protection.json +68 -3
  194. package/locales/en/publicFiles.json +18 -1
  195. package/locales/en/rbac.json +15 -2
  196. package/locales/en/readiness.json +30 -1
  197. package/locales/en/redis.json +24 -1
  198. package/locales/en/runtime.json +51 -3
  199. package/locales/en/search.json +4 -0
  200. package/locales/en/security.json +70 -9
  201. package/locales/en/serviceExposure.json +13 -1
  202. package/locales/en/services.json +68 -2
  203. package/locales/en/software.json +2 -1
  204. package/locales/en/softwareLifecycle.json +11 -1
  205. package/locales/en/ssl.json +12 -1
  206. package/locales/en/stackWizard.json +9 -2
  207. package/locales/en/support.json +17 -1
  208. package/locales/en/system.json +36 -7
  209. package/locales/en/systemd.json +2 -0
  210. package/locales/en/terminal.json +10 -2
  211. package/locales/en/translation.json +2312 -192
  212. package/locales/en/updates.json +50 -4
  213. package/locales/en/users.json +20 -1
  214. package/locales/en/validators.json +325 -0
  215. package/locales/en/vnc.json +23 -7
  216. package/locales/en/vpn.json +17 -2
  217. package/locales/es/agents.json +17 -2
  218. package/locales/es/apache.json +7 -1
  219. package/locales/es/audit.json +4 -1
  220. package/locales/es/backups.json +36 -1
  221. package/locales/es/btTracker.json +119 -37
  222. package/locales/es/catalog.json +6 -6
  223. package/locales/es/cdn.json +89 -1
  224. package/locales/es/cli.json +2 -2
  225. package/locales/es/common.json +9 -1
  226. package/locales/es/cron.json +33 -1
  227. package/locales/es/dashboard.json +24 -3
  228. package/locales/es/db.json +75 -3
  229. package/locales/es/dns.json +23 -1
  230. package/locales/es/docker.json +248 -0
  231. package/locales/es/email.json +49 -10
  232. package/locales/es/errors.json +5 -2
  233. package/locales/es/fail2ban.json +26 -1
  234. package/locales/es/files.json +52 -9
  235. package/locales/es/firewall.json +17 -8
  236. package/locales/es/ftp.json +32 -1
  237. package/locales/es/hostBrowse.json +35 -13
  238. package/locales/es/listToolbar.json +2 -1
  239. package/locales/es/login.json +12 -7
  240. package/locales/es/logs.json +31 -2
  241. package/locales/es/metrics.json +36 -1
  242. package/locales/es/migrate.json +27 -1
  243. package/locales/es/nav.json +11 -4
  244. package/locales/es/network.json +27 -2
  245. package/locales/es/nginx.json +4 -1
  246. package/locales/es/notFound.json +6 -0
  247. package/locales/es/notes.json +229 -41
  248. package/locales/es/projects.json +133 -11
  249. package/locales/es/protection.json +66 -2
  250. package/locales/es/publicFiles.json +18 -1
  251. package/locales/es/rbac.json +15 -2
  252. package/locales/es/readiness.json +32 -1
  253. package/locales/es/redis.json +24 -1
  254. package/locales/es/runtime.json +49 -2
  255. package/locales/es/search.json +13 -9
  256. package/locales/es/security.json +68 -7
  257. package/locales/es/serviceExposure.json +18 -6
  258. package/locales/es/services.json +68 -2
  259. package/locales/es/software.json +2 -1
  260. package/locales/es/softwareLifecycle.json +12 -2
  261. package/locales/es/ssl.json +12 -1
  262. package/locales/es/stackWizard.json +9 -2
  263. package/locales/es/support.json +37 -21
  264. package/locales/es/system.json +31 -2
  265. package/locales/es/systemd.json +3 -1
  266. package/locales/es/terminal.json +9 -1
  267. package/locales/es/translation.json +2368 -248
  268. package/locales/es/updates.json +76 -3
  269. package/locales/es/users.json +19 -1
  270. package/locales/es/validators.json +325 -0
  271. package/locales/es/vnc.json +17 -1
  272. package/locales/es/vpn.json +18 -3
  273. package/locales/fr/agents.json +17 -2
  274. package/locales/fr/apache.json +7 -1
  275. package/locales/fr/audit.json +4 -1
  276. package/locales/fr/backups.json +36 -1
  277. package/locales/fr/btTracker.json +118 -36
  278. package/locales/fr/catalog.json +6 -6
  279. package/locales/fr/cdn.json +89 -1
  280. package/locales/fr/cli.json +3 -3
  281. package/locales/fr/common.json +9 -1
  282. package/locales/fr/cron.json +33 -1
  283. package/locales/fr/dashboard.json +24 -3
  284. package/locales/fr/db.json +75 -3
  285. package/locales/fr/dns.json +23 -1
  286. package/locales/fr/docker.json +248 -0
  287. package/locales/fr/email.json +47 -8
  288. package/locales/fr/errors.json +5 -2
  289. package/locales/fr/fail2ban.json +27 -2
  290. package/locales/fr/files.json +52 -9
  291. package/locales/fr/firewall.json +13 -4
  292. package/locales/fr/ftp.json +32 -1
  293. package/locales/fr/hostBrowse.json +34 -12
  294. package/locales/fr/listToolbar.json +2 -1
  295. package/locales/fr/login.json +11 -6
  296. package/locales/fr/logs.json +31 -2
  297. package/locales/fr/metrics.json +36 -1
  298. package/locales/fr/migrate.json +27 -1
  299. package/locales/fr/nav.json +11 -4
  300. package/locales/fr/network.json +27 -2
  301. package/locales/fr/nginx.json +4 -1
  302. package/locales/fr/notFound.json +6 -0
  303. package/locales/fr/notes.json +225 -37
  304. package/locales/fr/projects.json +131 -9
  305. package/locales/fr/protection.json +66 -2
  306. package/locales/fr/publicFiles.json +18 -1
  307. package/locales/fr/rbac.json +15 -2
  308. package/locales/fr/readiness.json +32 -1
  309. package/locales/fr/redis.json +25 -2
  310. package/locales/fr/runtime.json +49 -2
  311. package/locales/fr/search.json +11 -7
  312. package/locales/fr/security.json +68 -7
  313. package/locales/fr/serviceExposure.json +17 -5
  314. package/locales/fr/services.json +68 -2
  315. package/locales/fr/software.json +2 -1
  316. package/locales/fr/softwareLifecycle.json +12 -2
  317. package/locales/fr/ssl.json +12 -1
  318. package/locales/fr/stackWizard.json +9 -2
  319. package/locales/fr/support.json +37 -21
  320. package/locales/fr/system.json +31 -2
  321. package/locales/fr/systemd.json +3 -1
  322. package/locales/fr/terminal.json +9 -1
  323. package/locales/fr/translation.json +2352 -232
  324. package/locales/fr/updates.json +76 -3
  325. package/locales/fr/users.json +19 -1
  326. package/locales/fr/validators.json +325 -0
  327. package/locales/fr/vnc.json +17 -1
  328. package/locales/fr/vpn.json +17 -2
  329. package/locales/hi/agents.json +17 -2
  330. package/locales/hi/apache.json +7 -1
  331. package/locales/hi/audit.json +4 -1
  332. package/locales/hi/backups.json +36 -1
  333. package/locales/hi/btTracker.json +121 -39
  334. package/locales/hi/catalog.json +7 -7
  335. package/locales/hi/cdn.json +89 -1
  336. package/locales/hi/cli.json +1 -1
  337. package/locales/hi/common.json +9 -1
  338. package/locales/hi/cron.json +33 -1
  339. package/locales/hi/dashboard.json +24 -3
  340. package/locales/hi/db.json +75 -3
  341. package/locales/hi/dns.json +23 -1
  342. package/locales/hi/docker.json +248 -0
  343. package/locales/hi/email.json +49 -10
  344. package/locales/hi/errors.json +5 -2
  345. package/locales/hi/fail2ban.json +29 -4
  346. package/locales/hi/files.json +53 -10
  347. package/locales/hi/firewall.json +17 -8
  348. package/locales/hi/ftp.json +32 -1
  349. package/locales/hi/hostBrowse.json +37 -15
  350. package/locales/hi/listToolbar.json +2 -1
  351. package/locales/hi/login.json +13 -8
  352. package/locales/hi/logs.json +31 -2
  353. package/locales/hi/metrics.json +36 -1
  354. package/locales/hi/migrate.json +27 -1
  355. package/locales/hi/nav.json +11 -4
  356. package/locales/hi/network.json +27 -2
  357. package/locales/hi/nginx.json +4 -1
  358. package/locales/hi/notFound.json +6 -0
  359. package/locales/hi/notes.json +227 -39
  360. package/locales/hi/projects.json +134 -12
  361. package/locales/hi/protection.json +67 -3
  362. package/locales/hi/publicFiles.json +18 -1
  363. package/locales/hi/rbac.json +16 -3
  364. package/locales/hi/readiness.json +32 -1
  365. package/locales/hi/redis.json +24 -1
  366. package/locales/hi/runtime.json +49 -2
  367. package/locales/hi/search.json +14 -10
  368. package/locales/hi/security.json +68 -7
  369. package/locales/hi/serviceExposure.json +18 -6
  370. package/locales/hi/services.json +68 -2
  371. package/locales/hi/software.json +2 -1
  372. package/locales/hi/softwareLifecycle.json +12 -2
  373. package/locales/hi/ssl.json +12 -1
  374. package/locales/hi/stackWizard.json +9 -2
  375. package/locales/hi/support.json +36 -20
  376. package/locales/hi/system.json +31 -2
  377. package/locales/hi/systemd.json +3 -1
  378. package/locales/hi/terminal.json +9 -1
  379. package/locales/hi/translation.json +2379 -259
  380. package/locales/hi/updates.json +76 -3
  381. package/locales/hi/users.json +19 -1
  382. package/locales/hi/validators.json +325 -0
  383. package/locales/hi/vnc.json +17 -1
  384. package/locales/hi/vpn.json +19 -4
  385. package/locales/id/agents.json +17 -2
  386. package/locales/id/apache.json +7 -1
  387. package/locales/id/audit.json +4 -1
  388. package/locales/id/backups.json +36 -1
  389. package/locales/id/btTracker.json +119 -37
  390. package/locales/id/catalog.json +6 -6
  391. package/locales/id/cdn.json +89 -1
  392. package/locales/id/cli.json +2 -2
  393. package/locales/id/common.json +9 -1
  394. package/locales/id/cron.json +33 -1
  395. package/locales/id/dashboard.json +24 -3
  396. package/locales/id/db.json +75 -3
  397. package/locales/id/dns.json +23 -1
  398. package/locales/id/docker.json +248 -0
  399. package/locales/id/email.json +49 -10
  400. package/locales/id/errors.json +5 -2
  401. package/locales/id/fail2ban.json +26 -1
  402. package/locales/id/files.json +52 -9
  403. package/locales/id/firewall.json +15 -6
  404. package/locales/id/ftp.json +32 -1
  405. package/locales/id/hostBrowse.json +35 -13
  406. package/locales/id/listToolbar.json +2 -1
  407. package/locales/id/login.json +13 -8
  408. package/locales/id/logs.json +31 -2
  409. package/locales/id/metrics.json +36 -1
  410. package/locales/id/migrate.json +27 -1
  411. package/locales/id/nav.json +10 -3
  412. package/locales/id/network.json +27 -2
  413. package/locales/id/nginx.json +4 -1
  414. package/locales/id/notFound.json +6 -0
  415. package/locales/id/notes.json +224 -36
  416. package/locales/id/projects.json +132 -10
  417. package/locales/id/protection.json +66 -2
  418. package/locales/id/publicFiles.json +18 -1
  419. package/locales/id/rbac.json +15 -2
  420. package/locales/id/readiness.json +32 -1
  421. package/locales/id/redis.json +24 -1
  422. package/locales/id/runtime.json +49 -2
  423. package/locales/id/search.json +13 -9
  424. package/locales/id/security.json +67 -6
  425. package/locales/id/serviceExposure.json +18 -6
  426. package/locales/id/services.json +68 -2
  427. package/locales/id/software.json +2 -1
  428. package/locales/id/softwareLifecycle.json +12 -2
  429. package/locales/id/ssl.json +12 -1
  430. package/locales/id/stackWizard.json +9 -2
  431. package/locales/id/support.json +36 -20
  432. package/locales/id/system.json +31 -2
  433. package/locales/id/systemd.json +3 -1
  434. package/locales/id/terminal.json +9 -1
  435. package/locales/id/translation.json +2358 -238
  436. package/locales/id/updates.json +76 -3
  437. package/locales/id/users.json +19 -1
  438. package/locales/id/validators.json +325 -0
  439. package/locales/id/vnc.json +17 -1
  440. package/locales/id/vpn.json +18 -3
  441. package/locales/ja/agents.json +17 -2
  442. package/locales/ja/apache.json +7 -1
  443. package/locales/ja/audit.json +4 -1
  444. package/locales/ja/backups.json +36 -1
  445. package/locales/ja/btTracker.json +121 -39
  446. package/locales/ja/catalog.json +10 -10
  447. package/locales/ja/cdn.json +89 -1
  448. package/locales/ja/cli.json +3 -3
  449. package/locales/ja/common.json +9 -1
  450. package/locales/ja/cron.json +33 -1
  451. package/locales/ja/dashboard.json +24 -3
  452. package/locales/ja/db.json +75 -3
  453. package/locales/ja/dns.json +23 -1
  454. package/locales/ja/docker.json +248 -0
  455. package/locales/ja/email.json +49 -10
  456. package/locales/ja/errors.json +5 -2
  457. package/locales/ja/fail2ban.json +26 -1
  458. package/locales/ja/files.json +52 -9
  459. package/locales/ja/firewall.json +17 -8
  460. package/locales/ja/ftp.json +32 -1
  461. package/locales/ja/hostBrowse.json +37 -15
  462. package/locales/ja/listToolbar.json +2 -1
  463. package/locales/ja/login.json +11 -6
  464. package/locales/ja/logs.json +31 -2
  465. package/locales/ja/metrics.json +36 -1
  466. package/locales/ja/migrate.json +27 -1
  467. package/locales/ja/nav.json +13 -6
  468. package/locales/ja/network.json +28 -3
  469. package/locales/ja/nginx.json +4 -1
  470. package/locales/ja/notFound.json +6 -0
  471. package/locales/ja/notes.json +233 -45
  472. package/locales/ja/projects.json +133 -11
  473. package/locales/ja/protection.json +66 -2
  474. package/locales/ja/publicFiles.json +18 -1
  475. package/locales/ja/rbac.json +15 -2
  476. package/locales/ja/readiness.json +32 -1
  477. package/locales/ja/redis.json +24 -1
  478. package/locales/ja/runtime.json +50 -3
  479. package/locales/ja/search.json +12 -8
  480. package/locales/ja/security.json +68 -7
  481. package/locales/ja/serviceExposure.json +18 -6
  482. package/locales/ja/services.json +68 -2
  483. package/locales/ja/software.json +2 -1
  484. package/locales/ja/softwareLifecycle.json +12 -2
  485. package/locales/ja/ssl.json +12 -1
  486. package/locales/ja/stackWizard.json +9 -2
  487. package/locales/ja/support.json +38 -22
  488. package/locales/ja/system.json +31 -2
  489. package/locales/ja/systemd.json +3 -1
  490. package/locales/ja/terminal.json +9 -1
  491. package/locales/ja/translation.json +2385 -265
  492. package/locales/ja/updates.json +76 -3
  493. package/locales/ja/users.json +19 -1
  494. package/locales/ja/validators.json +325 -0
  495. package/locales/ja/vnc.json +17 -1
  496. package/locales/ja/vpn.json +18 -3
  497. package/locales/ko/agents.json +17 -2
  498. package/locales/ko/apache.json +7 -1
  499. package/locales/ko/audit.json +4 -1
  500. package/locales/ko/backups.json +36 -1
  501. package/locales/ko/btTracker.json +121 -39
  502. package/locales/ko/catalog.json +8 -8
  503. package/locales/ko/cdn.json +89 -1
  504. package/locales/ko/cli.json +2 -2
  505. package/locales/ko/common.json +9 -1
  506. package/locales/ko/cron.json +33 -1
  507. package/locales/ko/dashboard.json +24 -3
  508. package/locales/ko/db.json +75 -3
  509. package/locales/ko/dns.json +23 -1
  510. package/locales/ko/docker.json +248 -0
  511. package/locales/ko/email.json +49 -10
  512. package/locales/ko/errors.json +5 -2
  513. package/locales/ko/fail2ban.json +37 -12
  514. package/locales/ko/files.json +52 -9
  515. package/locales/ko/firewall.json +18 -9
  516. package/locales/ko/ftp.json +32 -1
  517. package/locales/ko/hostBrowse.json +37 -15
  518. package/locales/ko/listToolbar.json +2 -1
  519. package/locales/ko/login.json +10 -5
  520. package/locales/ko/logs.json +31 -2
  521. package/locales/ko/metrics.json +36 -1
  522. package/locales/ko/migrate.json +27 -1
  523. package/locales/ko/nav.json +11 -4
  524. package/locales/ko/network.json +27 -2
  525. package/locales/ko/nginx.json +4 -1
  526. package/locales/ko/notFound.json +6 -0
  527. package/locales/ko/notes.json +243 -55
  528. package/locales/ko/playbooks.json +1 -1
  529. package/locales/ko/projects.json +134 -12
  530. package/locales/ko/protection.json +69 -5
  531. package/locales/ko/publicFiles.json +18 -1
  532. package/locales/ko/rbac.json +15 -2
  533. package/locales/ko/readiness.json +33 -2
  534. package/locales/ko/redis.json +24 -1
  535. package/locales/ko/runtime.json +49 -2
  536. package/locales/ko/search.json +13 -9
  537. package/locales/ko/security.json +68 -7
  538. package/locales/ko/serviceExposure.json +18 -6
  539. package/locales/ko/services.json +68 -2
  540. package/locales/ko/software.json +2 -1
  541. package/locales/ko/softwareLifecycle.json +12 -2
  542. package/locales/ko/ssl.json +12 -1
  543. package/locales/ko/stackWizard.json +9 -2
  544. package/locales/ko/support.json +36 -20
  545. package/locales/ko/system.json +31 -2
  546. package/locales/ko/systemd.json +3 -1
  547. package/locales/ko/terminal.json +9 -1
  548. package/locales/ko/translation.json +2404 -284
  549. package/locales/ko/updates.json +76 -3
  550. package/locales/ko/users.json +19 -1
  551. package/locales/ko/validators.json +325 -0
  552. package/locales/ko/vnc.json +17 -1
  553. package/locales/ko/vpn.json +19 -4
  554. package/locales/pt/agents.json +17 -2
  555. package/locales/pt/apache.json +7 -1
  556. package/locales/pt/audit.json +4 -1
  557. package/locales/pt/backups.json +36 -1
  558. package/locales/pt/btTracker.json +119 -37
  559. package/locales/pt/catalog.json +4 -4
  560. package/locales/pt/cdn.json +89 -1
  561. package/locales/pt/cli.json +2 -2
  562. package/locales/pt/common.json +9 -1
  563. package/locales/pt/cron.json +33 -1
  564. package/locales/pt/dashboard.json +24 -3
  565. package/locales/pt/db.json +75 -3
  566. package/locales/pt/dns.json +23 -1
  567. package/locales/pt/docker.json +248 -0
  568. package/locales/pt/email.json +49 -10
  569. package/locales/pt/errors.json +5 -2
  570. package/locales/pt/fail2ban.json +26 -1
  571. package/locales/pt/files.json +52 -9
  572. package/locales/pt/firewall.json +16 -7
  573. package/locales/pt/ftp.json +32 -1
  574. package/locales/pt/hostBrowse.json +37 -15
  575. package/locales/pt/listToolbar.json +2 -1
  576. package/locales/pt/login.json +14 -9
  577. package/locales/pt/logs.json +31 -2
  578. package/locales/pt/metrics.json +36 -1
  579. package/locales/pt/migrate.json +27 -1
  580. package/locales/pt/nav.json +10 -3
  581. package/locales/pt/network.json +27 -2
  582. package/locales/pt/nginx.json +4 -1
  583. package/locales/pt/notFound.json +6 -0
  584. package/locales/pt/notes.json +226 -38
  585. package/locales/pt/projects.json +131 -9
  586. package/locales/pt/protection.json +66 -2
  587. package/locales/pt/publicFiles.json +18 -1
  588. package/locales/pt/rbac.json +15 -2
  589. package/locales/pt/readiness.json +32 -1
  590. package/locales/pt/redis.json +24 -1
  591. package/locales/pt/runtime.json +49 -2
  592. package/locales/pt/search.json +11 -7
  593. package/locales/pt/security.json +68 -7
  594. package/locales/pt/serviceExposure.json +17 -5
  595. package/locales/pt/services.json +68 -2
  596. package/locales/pt/software.json +2 -1
  597. package/locales/pt/softwareLifecycle.json +12 -2
  598. package/locales/pt/ssl.json +12 -1
  599. package/locales/pt/stackWizard.json +9 -2
  600. package/locales/pt/support.json +36 -20
  601. package/locales/pt/system.json +31 -2
  602. package/locales/pt/systemd.json +3 -1
  603. package/locales/pt/terminal.json +9 -1
  604. package/locales/pt/translation.json +2358 -238
  605. package/locales/pt/updates.json +76 -3
  606. package/locales/pt/users.json +19 -1
  607. package/locales/pt/validators.json +325 -0
  608. package/locales/pt/vnc.json +17 -1
  609. package/locales/pt/vpn.json +17 -2
  610. package/locales/ur/agents.json +17 -2
  611. package/locales/ur/apache.json +7 -1
  612. package/locales/ur/audit.json +4 -1
  613. package/locales/ur/backups.json +36 -1
  614. package/locales/ur/btTracker.json +121 -39
  615. package/locales/ur/catalog.json +6 -6
  616. package/locales/ur/cdn.json +89 -1
  617. package/locales/ur/cli.json +2 -2
  618. package/locales/ur/common.json +9 -1
  619. package/locales/ur/cron.json +33 -1
  620. package/locales/ur/dashboard.json +24 -3
  621. package/locales/ur/db.json +75 -3
  622. package/locales/ur/dns.json +23 -1
  623. package/locales/ur/docker.json +248 -0
  624. package/locales/ur/email.json +49 -10
  625. package/locales/ur/errors.json +5 -2
  626. package/locales/ur/fail2ban.json +26 -1
  627. package/locales/ur/files.json +53 -10
  628. package/locales/ur/firewall.json +17 -8
  629. package/locales/ur/ftp.json +32 -1
  630. package/locales/ur/hostBrowse.json +37 -15
  631. package/locales/ur/listToolbar.json +2 -1
  632. package/locales/ur/login.json +13 -8
  633. package/locales/ur/logs.json +31 -2
  634. package/locales/ur/metrics.json +36 -1
  635. package/locales/ur/migrate.json +27 -1
  636. package/locales/ur/nav.json +10 -3
  637. package/locales/ur/network.json +27 -2
  638. package/locales/ur/nginx.json +4 -1
  639. package/locales/ur/notFound.json +6 -0
  640. package/locales/ur/notes.json +222 -34
  641. package/locales/ur/projects.json +133 -11
  642. package/locales/ur/protection.json +66 -2
  643. package/locales/ur/publicFiles.json +18 -1
  644. package/locales/ur/rbac.json +15 -2
  645. package/locales/ur/readiness.json +32 -1
  646. package/locales/ur/redis.json +24 -1
  647. package/locales/ur/runtime.json +49 -2
  648. package/locales/ur/search.json +13 -9
  649. package/locales/ur/security.json +68 -7
  650. package/locales/ur/serviceExposure.json +18 -6
  651. package/locales/ur/services.json +68 -2
  652. package/locales/ur/software.json +2 -1
  653. package/locales/ur/softwareLifecycle.json +12 -2
  654. package/locales/ur/ssl.json +12 -1
  655. package/locales/ur/stackWizard.json +9 -2
  656. package/locales/ur/support.json +37 -21
  657. package/locales/ur/system.json +31 -2
  658. package/locales/ur/systemd.json +3 -1
  659. package/locales/ur/terminal.json +9 -1
  660. package/locales/ur/translation.json +2367 -247
  661. package/locales/ur/updates.json +76 -3
  662. package/locales/ur/users.json +19 -1
  663. package/locales/ur/validators.json +325 -0
  664. package/locales/ur/vnc.json +17 -1
  665. package/locales/ur/vpn.json +19 -4
  666. package/locales/zh-CN/agents.json +17 -2
  667. package/locales/zh-CN/apache.json +8 -2
  668. package/locales/zh-CN/audit.json +4 -1
  669. package/locales/zh-CN/backups.json +36 -1
  670. package/locales/zh-CN/btTracker.json +85 -3
  671. package/locales/zh-CN/catalog.json +2 -2
  672. package/locales/zh-CN/cdn.json +89 -1
  673. package/locales/zh-CN/cli.json +5 -5
  674. package/locales/zh-CN/common.json +9 -1
  675. package/locales/zh-CN/cron.json +33 -1
  676. package/locales/zh-CN/dashboard.json +25 -4
  677. package/locales/zh-CN/db.json +76 -4
  678. package/locales/zh-CN/dns.json +23 -1
  679. package/locales/zh-CN/docker.json +248 -0
  680. package/locales/zh-CN/email.json +49 -10
  681. package/locales/zh-CN/errors.json +5 -2
  682. package/locales/zh-CN/fail2ban.json +31 -6
  683. package/locales/zh-CN/files.json +46 -3
  684. package/locales/zh-CN/firewall.json +11 -2
  685. package/locales/zh-CN/ftp.json +32 -1
  686. package/locales/zh-CN/hostBrowse.json +23 -1
  687. package/locales/zh-CN/listToolbar.json +2 -1
  688. package/locales/zh-CN/login.json +6 -1
  689. package/locales/zh-CN/logs.json +36 -7
  690. package/locales/zh-CN/metrics.json +36 -1
  691. package/locales/zh-CN/migrate.json +27 -1
  692. package/locales/zh-CN/nav.json +10 -3
  693. package/locales/zh-CN/network.json +28 -3
  694. package/locales/zh-CN/nginx.json +5 -2
  695. package/locales/zh-CN/notFound.json +6 -0
  696. package/locales/zh-CN/notes.json +216 -28
  697. package/locales/zh-CN/projects.json +130 -8
  698. package/locales/zh-CN/protection.json +66 -2
  699. package/locales/zh-CN/publicFiles.json +18 -1
  700. package/locales/zh-CN/rbac.json +15 -2
  701. package/locales/zh-CN/readiness.json +33 -2
  702. package/locales/zh-CN/redis.json +24 -1
  703. package/locales/zh-CN/runtime.json +50 -3
  704. package/locales/zh-CN/search.json +5 -1
  705. package/locales/zh-CN/security.json +68 -7
  706. package/locales/zh-CN/serviceExposure.json +13 -1
  707. package/locales/zh-CN/services.json +68 -2
  708. package/locales/zh-CN/software.json +2 -1
  709. package/locales/zh-CN/softwareLifecycle.json +12 -2
  710. package/locales/zh-CN/ssl.json +12 -1
  711. package/locales/zh-CN/stackWizard.json +9 -2
  712. package/locales/zh-CN/support.json +18 -2
  713. package/locales/zh-CN/system.json +32 -3
  714. package/locales/zh-CN/systemd.json +3 -1
  715. package/locales/zh-CN/terminal.json +9 -1
  716. package/locales/zh-CN/translation.json +2273 -153
  717. package/locales/zh-CN/updates.json +76 -3
  718. package/locales/zh-CN/users.json +19 -1
  719. package/locales/zh-CN/validators.json +325 -0
  720. package/locales/zh-CN/vnc.json +17 -1
  721. package/locales/zh-CN/vpn.json +19 -4
  722. package/locales/zh-HK/agents.json +22 -7
  723. package/locales/zh-HK/apache.json +8 -2
  724. package/locales/zh-HK/audit.json +4 -1
  725. package/locales/zh-HK/backups.json +39 -4
  726. package/locales/zh-HK/btTracker.json +89 -7
  727. package/locales/zh-HK/catalog.json +2 -2
  728. package/locales/zh-HK/cdn.json +91 -3
  729. package/locales/zh-HK/cli.json +15 -15
  730. package/locales/zh-HK/common.json +9 -1
  731. package/locales/zh-HK/cron.json +37 -5
  732. package/locales/zh-HK/dashboard.json +28 -7
  733. package/locales/zh-HK/db.json +82 -10
  734. package/locales/zh-HK/dns.json +23 -1
  735. package/locales/zh-HK/docker.json +248 -0
  736. package/locales/zh-HK/email.json +64 -25
  737. package/locales/zh-HK/errors.json +6 -3
  738. package/locales/zh-HK/fail2ban.json +32 -7
  739. package/locales/zh-HK/files.json +48 -5
  740. package/locales/zh-HK/firewall.json +13 -4
  741. package/locales/zh-HK/ftp.json +34 -3
  742. package/locales/zh-HK/hostBrowse.json +24 -2
  743. package/locales/zh-HK/listToolbar.json +2 -1
  744. package/locales/zh-HK/login.json +7 -2
  745. package/locales/zh-HK/logs.json +40 -11
  746. package/locales/zh-HK/metrics.json +38 -3
  747. package/locales/zh-HK/migrate.json +26 -0
  748. package/locales/zh-HK/nav.json +12 -5
  749. package/locales/zh-HK/network.json +32 -7
  750. package/locales/zh-HK/nginx.json +6 -3
  751. package/locales/zh-HK/notFound.json +6 -0
  752. package/locales/zh-HK/notes.json +270 -82
  753. package/locales/zh-HK/projects.json +143 -21
  754. package/locales/zh-HK/protection.json +67 -3
  755. package/locales/zh-HK/publicFiles.json +20 -3
  756. package/locales/zh-HK/rbac.json +15 -2
  757. package/locales/zh-HK/readiness.json +35 -4
  758. package/locales/zh-HK/redis.json +27 -4
  759. package/locales/zh-HK/runtime.json +58 -11
  760. package/locales/zh-HK/search.json +5 -1
  761. package/locales/zh-HK/security.json +79 -18
  762. package/locales/zh-HK/serviceExposure.json +13 -1
  763. package/locales/zh-HK/services.json +69 -3
  764. package/locales/zh-HK/software.json +2 -1
  765. package/locales/zh-HK/softwareLifecycle.json +12 -2
  766. package/locales/zh-HK/ssl.json +13 -2
  767. package/locales/zh-HK/stackWizard.json +10 -3
  768. package/locales/zh-HK/support.json +22 -6
  769. package/locales/zh-HK/system.json +36 -7
  770. package/locales/zh-HK/systemd.json +9 -7
  771. package/locales/zh-HK/terminal.json +10 -2
  772. package/locales/zh-HK/translation.json +2475 -355
  773. package/locales/zh-HK/uiInline.json +3 -3
  774. package/locales/zh-HK/updates.json +77 -4
  775. package/locales/zh-HK/users.json +20 -2
  776. package/locales/zh-HK/validators.json +325 -0
  777. package/locales/zh-HK/vnc.json +23 -7
  778. package/locales/zh-HK/vpn.json +23 -8
  779. package/package.json +8 -9
@@ -15,7 +15,9 @@
15
15
  "failed": "فشل",
16
16
  "error": "خطأ",
17
17
  "unknown": "لم يتم التحقيق فيها",
18
- "fallback": "مجهول"
18
+ "fallback": "مجهول",
19
+ "activating": "Starting",
20
+ "stuck": "Start stuck"
19
21
  },
20
22
  "liveN": "{{count}} اونلاين",
21
23
  "registeredOnly": "مسجل فقط",
@@ -130,7 +132,20 @@
130
132
  "labelStderr": "com.stderr",
131
133
  "labelAckCli": "ACK + CLI JSON",
132
134
  "labelStdoutBody": "هيئة CLI stdout",
133
- "resultOuterHint": "النتيجة الخارجية هي CLI --json stdout."
135
+ "resultOuterHint": "النتيجة الخارجية هي CLI --json stdout.",
136
+ "statusFlowTitle": "تدفق الحالة",
137
+ "statusFlow": "مسجل فقط → عبر الإنترنت → قديم (> 60 ثانية) → غير متصل (غير متصل). تم قطع اتصال عامل التصفية \"غير متصل\".",
138
+ "colSession": "UUID للجلسة",
139
+ "copySession": "انسخ UUID للجلسة للمجموعة / CLI --session",
140
+ "staleFor": "الغيب {{age}}",
141
+ "commandTitle": "قم بوضع أمر في قائمة الانتظار لهذه الجلسة",
142
+ "historyTitleShort": "فتح سجل الأوامر (للقراءة فقط)",
143
+ "expEdge": "على حافة:",
144
+ "noteAllowlist": "Agent tool calls must pass the allowlist.",
145
+ "noteRbacCap": "Agent role is capped at write-low.",
146
+ "journal": "journal",
147
+ "activatingStuckHint": "Activating longer than 5 minutes — treated as failed. Check journal.",
148
+ "noOnlineAgents": "No agents online"
134
149
  },
135
150
  "ai": {
136
151
  "status": {
@@ -248,7 +263,13 @@
248
263
  "cleanupConflicts": "تنظيف مخلفات الصراع",
249
264
  "cleanupConflictsTitle": "تنظيف كافة مخلفات الصراع؟",
250
265
  "cleanupConflictsDesc": "قم بإزالة كل conf Artifact الموجود على القرص والذي يتعارض مع مشروع أو ServerName مستقل. يتم الاحتفاظ بصفوف المشروع.",
251
- "artifactRemovedOk": "تمت إزالة الكونفرت المتبقي"
266
+ "artifactRemovedOk": "تمت إزالة الكونفرت المتبقي",
267
+ "sslTerminatedUpstream": "ينتهي TLS عند Nginx الأمامي",
268
+ "removeArtifactHint": "يحذف إعداد القرص المتبقي هذا فقط. لا يحذف المشروع.",
269
+ "sourceOrphan": "Leftover",
270
+ "orphanSite": "Project gone",
271
+ "pillSitesSplit": "{{n}} sites · {{leftover}} leftover",
272
+ "stopSites": "{{n}} site(s) will stop answering HTTP."
252
273
  },
253
274
  "applyStatus": {
254
275
  "draft": "مسودة",
@@ -285,7 +306,10 @@
285
306
  "project.publish": "نشر نجينكس",
286
307
  "project.suspend": "تعليق المشروع",
287
308
  "software.install": "تثبيت البرنامج",
288
- "software.update": "تحديث البرنامج"
309
+ "software.update": "تحديث البرنامج",
310
+ "backup.restore": "Backup restore",
311
+ "backup.run": "Backup run",
312
+ "backup.delete": "Backup deleted"
289
313
  }
290
314
  },
291
315
  "backups": {
@@ -419,20 +443,55 @@
419
443
  "remotePushSub": "بعد نجاح القطران المحلي، انتقل إلى SFTP أو المسار المحلي أو S3",
420
444
  "accessKey": "مفتاح الوصول",
421
445
  "secretKey": "المفتاح السري",
422
- "overwriteConfirmHint": "اكتب OVERWRITE لتأكيد الكتابة الفوقية"
446
+ "overwriteConfirmHint": "اكتب OVERWRITE لتأكيد الكتابة الفوقية",
447
+ "testRemote": "اختبار الوجهة",
448
+ "testRemoteDone": "اكتمل فحص الوجهة",
449
+ "testRemoteFailed": "فشل فحص الوجهة",
450
+ "resticRepoPh": "دليل بيانات اللوحة /restic-repo",
451
+ "testDisabledHint": "قم بتشغيل الدفع عن بعد قبل الاختبار.",
452
+ "identityId": "هوية SSH الصادرة",
453
+ "identityHint": "المفضل. نفس قبو /security SSH. كلمة المرور تحتاج إلى sshpass.",
454
+ "identityNone": "لا شيء - كلمة المرور أو المفتاح الافتراضي",
455
+ "remotePathHint": "نسبة إلى منزل المستخدم البعيد (أو جذر SFTP). \".\" هو هذا المنزل.",
456
+ "restoreFullTitle": "قم بالكتابة فوق ملفات المشروع وقواعد البيانات من هذا الأرشيف — اكتب اسم الملف للتأكيد",
457
+ "restoreWebTitle": "استعادة ملفات موقع الويب من هذا الأرشيف فقط",
458
+ "previewTitle": "معاينة الاستعادة دون الكتابة",
459
+ "partialSkipped": "جزئي - تم تخطي بعض المشاريع",
460
+ "testRemoteHint": "Connects to the remote host and writes a small probe file. Not read-only.",
461
+ "skippedListHint": "These projects were skipped:",
462
+ "goLogs": "Open logs",
463
+ "goAbout": "Backup notes",
464
+ "skippedPendingOs": "Skipped — OS user / home not provisioned",
465
+ "latestFile": "Latest archive",
466
+ "tabTrash": "Recycle bin",
467
+ "trashTitle": "Recycle bin ({{count}})",
468
+ "trashSub": "Deleted archives stay here for 7 days, then they are removed permanently.",
469
+ "trashEmpty": "Recycle bin is empty",
470
+ "trashEmptyDesc": "Deleted backup files appear here for 7 days.",
471
+ "trashRestore": "Restore",
472
+ "trashPurge": "Delete forever",
473
+ "trashEmptyAll": "Empty recycle bin",
474
+ "trashExpires": "Expires {{at}}",
475
+ "trashPurgeTitle": "Permanently delete this backup?",
476
+ "trashPurgeDesc": "Permanently delete {{name}}. This cannot be undone.",
477
+ "trashEmptyTitle": "Empty recycle bin?",
478
+ "trashEmptyDescConfirm": "Permanently delete {{count}} archive(s). Type the count to confirm.",
479
+ "trashRestored": "Restored from recycle bin",
480
+ "trashPurged": "Permanently deleted",
481
+ "trashedOk": "Moved to recycle bin"
423
482
  },
424
483
  "btTracker": {
425
484
  "title": "جهاز تعقب بي تي",
426
485
  "sub": "Self-hosted BitTorrent / WebTorrent tracker for file shares",
427
486
  "pageDesc": "Seed panel file shares over BitTorrent. Start the tracker, set a public announce host, then create BT shares in Files.",
428
- "status": "Status",
429
- "running": "Running",
430
- "stopped": "Stopped",
487
+ "status": "حالة",
488
+ "running": "جري",
489
+ "stopped": "توقف",
431
490
  "installed": "Installed (bundled)",
432
491
  "start": "Start tracker",
433
492
  "stop": "Stop tracker",
434
- "refresh": "Refresh",
435
- "settings": "Settings",
493
+ "refresh": "ينعش",
494
+ "settings": "إعدادات",
436
495
  "httpPort": "HTTP / WebSocket port",
437
496
  "udpPort": "UDP port (0 = off)",
438
497
  "listenHost": "Listen host",
@@ -451,18 +510,18 @@
451
510
  "torrentsEmpty": "No announce traffic yet",
452
511
  "torrentsEmptyHint": "Create a file share with BitTorrent mode in Files. This table fills as peers announce and the server seeds.",
453
512
  "torrentsDesc": "Live swarm from the tracker, plus local seeder status for panel shares.",
454
- "colName": "Name",
513
+ "colName": "اسم",
455
514
  "colHash": "Info hash",
456
- "colSeeds": "Seeds",
457
- "colLeechers": "Leechers",
458
- "colStatus": "Status",
515
+ "colSeeds": "البذور",
516
+ "colLeechers": "العلق",
517
+ "colStatus": "حالة",
459
518
  "announceUrls": "Announce URLs",
460
519
  "announceDesc": "Put these trackers in clients, or rely on magnets generated by the panel.",
461
- "copy": "Copy",
462
- "copied": "Copied",
463
- "statsTorrents": "Torrents",
464
- "statsPeers": "Peers",
465
- "statsAnnounces": "Announces",
520
+ "copy": "ينسخ",
521
+ "copied": "منقول",
522
+ "statsTorrents": "السيول",
523
+ "statsPeers": "أقرانهم",
524
+ "statsAnnounces": "تعلن",
466
525
  "statsJobs": "Active jobs",
467
526
  "openShares": "File shares",
468
527
  "needExecute": "Enable system-change permission (YSK_EXECUTE) to open ports and run production seeds.",
@@ -471,27 +530,27 @@
471
530
  "restoreSeeds": "Re-seed BT shares",
472
531
  "restoreSeedsHint": "Start tracker if needed and re-seed shares that still have a .torrent on disk.",
473
532
  "bundledNote": "Bundled with YSK Server (Node). No apt install/uninstall — Start/Stop manages the process.",
474
- "stackTitle": "Software",
533
+ "stackTitle": "برمجة",
475
534
  "jobs": "Torrent jobs",
476
535
  "jobsEmpty": "No background torrent jobs",
477
536
  "jobsEmptyHint": "Large shares (≥128 MiB) build .torrent files in the background so the Files dialog stays responsive.",
478
537
  "jobsDesc": "Background create-torrent queue for large file or folder shares.",
479
- "colJob": "Job",
480
- "colShare": "Share",
538
+ "colJob": "وظيفة",
539
+ "colShare": "يشارك",
481
540
  "colJobStatus": "Job status",
482
541
  "colEnqueued": "Enqueued",
483
542
  "refreshJobs": "Refresh jobs",
484
- "tabOverview": "Overview",
485
- "tabTorrents": "Torrents",
486
- "tabJobs": "Jobs",
487
- "tabSettings": "Settings",
488
- "tabAbout": "About",
543
+ "tabOverview": "ملخص",
544
+ "tabTorrents": "السيول",
545
+ "tabJobs": "وظائف",
546
+ "tabSettings": "إعدادات",
547
+ "tabAbout": "عن",
489
548
  "heroRunning": "Tracker is live",
490
549
  "heroStopped": "Tracker is stopped",
491
550
  "heroRunningSub": "Peers can announce and discover seeds for panel shares.",
492
551
  "heroStoppedSub": "Start the tracker before sharing large files over BitTorrent.",
493
- "live": "Live",
494
- "liveOff": "Idle",
552
+ "live": "يعيش",
553
+ "liveOff": "عاطل",
495
554
  "quickStart": "Quick start",
496
555
  "quickStartDesc": "Three steps to share files over BitTorrent.",
497
556
  "step1Title": "Set public announce host",
@@ -500,28 +559,28 @@
500
559
  "step2Hint": "Open port exposure if peers are off this host.",
501
560
  "step3Title": "Create a BT share",
502
561
  "step3Hint": "In Files → Share, choose BitTorrent or both.",
503
- "stepDone": "Done",
504
- "stepTodo": "Todo",
505
- "networkCard": "Network",
562
+ "stepDone": "منتهي",
563
+ "stepTodo": "ما يجب القيام به",
564
+ "networkCard": "شبكة",
506
565
  "networkCardDesc": "Where the tracker listens and what host appears in magnets.",
507
- "seederCard": "Seeder",
566
+ "seederCard": "بزار",
508
567
  "seederCardDesc": "In-process WebTorrent seeder limits and peer ports.",
509
- "lifecycleCard": "Lifecycle",
568
+ "lifecycleCard": "دورة الحياة",
510
569
  "lifecycleCardDesc": "Boot behaviour and how the service is packaged.",
511
570
  "pid": "PID",
512
- "port": "Port",
571
+ "port": "ميناء",
513
572
  "announceHost": "Announce host",
514
573
  "goSettings": "Open settings",
515
574
  "searchTorrents": "Search name or hash…",
516
- "filterAll": "All",
517
- "filterSeeding": "Seeding",
518
- "filterOther": "Other",
575
+ "filterAll": "الجميع",
576
+ "filterSeeding": "البذر",
577
+ "filterOther": "آخر",
519
578
  "noMatch": "No torrents match your filter",
520
- "seedStatusSeeding": "Seeding",
521
- "seedStatusPending": "Pending",
522
- "seedStatusError": "Error",
523
- "seedStatusStopped": "Stopped",
524
- "seedStatusNone": "None",
579
+ "seedStatusSeeding": "البذر",
580
+ "seedStatusPending": "قيد الانتظار",
581
+ "seedStatusError": "خطأ",
582
+ "seedStatusStopped": "توقف",
583
+ "seedStatusNone": "لا أحد",
525
584
  "notesTitle": "Service notes",
526
585
  "exposureTitle": "Network access",
527
586
  "protoHttp": "HTTP",
@@ -538,34 +597,116 @@
538
597
  "udpPortClassic": "6969 · Classic",
539
598
  "portSuggest8000": "8000 · Recommended",
540
599
  "saveOkRestart": "تم الحفظ — أعد تشغيل المتعقب لتطبيق المنافذ",
541
- "announceHostUnset": ""
600
+ "announceHostUnset": "غير معيّن",
601
+ "tabTrackers": "أجهزة التتبع",
602
+ "addTorrent": "أضف تورنت",
603
+ "addTorrentTitle": "أضف تورنت",
604
+ "addTorrentHint": "قم بتحميل ملف تورنت أو لصق مغناطيس. اختر مجلد الملفات. يقوم WebTorrent بتنزيل الملفات والبذور المفقودة عند اكتمالها.",
605
+ "dropTorrent": "قم بإسقاط .torrent هنا",
606
+ "chooseFile": "أو اختر ملفًا",
607
+ "magnetLabel": "مغناطيس",
608
+ "magnetPlaceholder": "المغناطيس:?xt=جرة:btih:…",
609
+ "inspect": "يقرأ",
610
+ "extraTrackersPreview": "سيتم الإعلان أيضًا عن {{n}} متتبع (متتبعين) إضافيين",
611
+ "saveLocation": "حفظ الموقع",
612
+ "saveRootPublic": "الملفات العامة",
613
+ "newFolder": "مجلد جديد",
614
+ "destPreview": "سوف أكتب ل",
615
+ "startDownload": "بدء التنزيل",
616
+ "filterDownloading": "جارٍ التنزيل",
617
+ "filterPaused": "متوقف مؤقتًا",
618
+ "filterError": "خطأ",
619
+ "emptyDrop": "قم بإسقاط ملف .torrent هنا، أو اختر ملفًا",
620
+ "emptyHint": "تذهب الملفات إلى المجلد الذي تختاره. إذا كانت كاملة بالفعل، فهذا المضيف هو البذور. المحرك: WebTorrent — لا يوجد برامج تنزيل إضافية.",
621
+ "pause": "يوقف",
622
+ "resume": "سيرة ذاتية",
623
+ "openFolder": "افتح المجلد",
624
+ "remove": "يزيل",
625
+ "removeKeep": "إزالة، الاحتفاظ بالملفات",
626
+ "removeDelete": "إزالة وحذف الملفات",
627
+ "removeConfirm": "هل تريد إزالة هذا التورنت من المكتبة؟",
628
+ "kindShare": "يشارك",
629
+ "filesInTorrent": "ملفات",
630
+ "extraTrackersDesc": "عناوين URL للإعلان الإضافي. تستخدمها بذور التنزيل/البذور ومشاركة الملفات بالإضافة إلى قائمة .torrent. وهذا لا يفتح جهاز التعقب المحلي أمام أسراب عشوائية.",
631
+ "extraTrackersEmpty": "لا توجد أجهزة تعقب إضافية. أضف عناوين URL للإعلان عن HTTP(S) أو UDP أو WS(S) حتى يتمكن هذا المضيف من العثور على أقرانه.",
632
+ "extraTrackerAdd": "يضيف",
633
+ "extraTrackerUrl": "الإعلان عن عنوان URL",
634
+ "extraTrackerApply": "تنطبق على البذور الحالية",
635
+ "extraTrackerApplyOk": "تطبيق تعقب إضافي",
636
+ "extraEnabled": "على",
637
+ "extraTrackerBad": "يجب أن يبدأ عنوان URL بـ http:// أو https:// أو udp:// أو ws:// أو wss://",
638
+ "extraTrackerDup": "مدرجة بالفعل",
639
+ "extraTrackerLimit": "الحد الأقصى 32 جهاز تعقب إضافي",
640
+ "addOk": "تمت إضافتها إلى المكتبة",
641
+ "savedTo": "يحفظ",
642
+ "folderEmpty": "لا توجد مجلدات فرعية",
643
+ "needTorrentFile": "اختر ملف تورنت",
644
+ "torrentTooBig": ".تورنت أكبر من 8 ميجابايت",
645
+ "seedStatusDownloading": "جارٍ التنزيل",
646
+ "seedStatusChecking": "التحقق",
647
+ "seedStatusPaused": "متوقف مؤقتًا",
648
+ "seedStatusQueued": "في قائمة الانتظار",
649
+ "swarmLeftover": "لدى Tracker عدد {{count}} من announce خارج المكتبة (مصدر مختلف عن قائمة التورنت)",
650
+ "addSourceSection": "المصدر",
651
+ "addSourceFile": "ملف",
652
+ "addSourceMagnet": "مغناطيس",
653
+ "previewSection": "معاينة",
654
+ "saveRoot": "الجذر",
655
+ "clearFile": "مسح الملف",
656
+ "extraTrackersTitle": "announce إضافي",
657
+ "extraTrackersEmptyTitle": "لا توجد متتبعات بعد",
658
+ "extraEnabledCount": "{{count}} مفعّل",
659
+ "extraApplyHint": "فعّل واحداً على الأقل لتطبيقه على البذور الحالية",
660
+ "destMode": "استخدام هذا المجلد",
661
+ "seedExisting": "زرع الملفات الموجودة",
662
+ "downloadNewFolder": "التنزيل إلى مجلد جديد",
663
+ "destFileConflict": "يوجد ملف باسم {{name}} هنا. اختر مجلداً آخر أو ازرع الملف الموجود إن طابق.",
664
+ "waitingPeers": "بانتظار الأقران. إن كانت الملفات على هذا المضيف فأضفها مجدداً واختر زرع الموجود.",
665
+ "stopTitle": "أوقف أداة التعقب - ستتم مقاطعة عملية البذر والتنزيلات",
666
+ "stopDesc": "تشغيل السيول توقف عن الإعلان. يتم قطع اتصال الأقران حتى تقوم بتشغيل جهاز التعقب مرة أخرى.",
667
+ "fillPublicHost": "استخدم {{host}}",
668
+ "fillPublicHostTitle": "املأ اسم مضيف اللوحة الحالي كمضيف الإعلان العام",
669
+ "listenHostHint": "0.0.0.0 listens on every address. Prefer 127.0.0.1 unless peers must reach this host.",
670
+ "listenAllWarn": "Tracker is bound to all addresses. With the firewall off this is public. Bind 127.0.0.1 for local-only, or restrict the port in the firewall.",
671
+ "bindLoopback": "127.0.0.1 only",
672
+ "bindAll": "0.0.0.0 (all)",
673
+ "seederPortMin": "Peer port start",
674
+ "seederPortMax": "Peer port end",
675
+ "statsLibrary": "Library",
676
+ "statsLibraryHint": "Torrents in the panel library / file shares",
677
+ "statsTrackerLeftover": "Tracker leftover",
678
+ "statsTrackerLeftoverHint": "Tracker announce hashes that are not library rows",
679
+ "statsAnnouncesHint": "Announce requests seen by the tracker process",
680
+ "leftoverHashesTitle": "Tracker leftover hashes",
681
+ "leftoverHashesHint": "Read-only. These announces are not library or share rows.",
682
+ "publicHostMissingLive": "Tracker is listening but public announce host is not set. Off-host peers cannot find this seed."
542
683
  },
543
684
  "catalog": {
544
685
  "sw": {
545
686
  "vsftpd": "vsftpd (FTPS)",
546
687
  "db_util": "db-util (قاعدة بيانات مستخدم FTP)",
547
688
  "nginx": "Nginx",
548
- "certbot": "Certbot (دعونا نقوم بالتشفير)",
689
+ "certbot": "Certbot (Let's Encrypt)",
549
690
  "mysql_client": "عميل MySQL/MariaDB",
550
691
  "mysql_server": "خادم ماي إس كيو إل",
551
692
  "mariadb_server": "خادم ماريا دي بي",
552
693
  "postgresql_client": "عميل PostgreSQL",
553
- "postgresql": "خادم PostgreSQL",
694
+ "postgresql": "خادم بوستجرس",
554
695
  "redis_tools": "عميل ريديس",
555
696
  "redis_server": "خادم ريديس",
556
697
  "ufw": "جدار الحماية UFW",
557
- "fail2ban": "Fail2ban",
558
- "postfix": "بوستفيكس",
559
- "dovecot": "حمامة",
560
- "opendkim": "أوبنDKIM",
561
- "pdns_server": "باور دي إن إس",
698
+ "fail2ban": "fail2ban",
699
+ "postfix": "Postfix",
700
+ "dovecot": "Dovecot",
701
+ "opendkim": "OpenDKIM",
702
+ "pdns_server": "PowerDNS",
562
703
  "git": "بوابة",
563
704
  "node": "Node.js",
564
705
  "php": "PHP",
565
706
  "python": "Python",
566
707
  "go": "Go",
567
708
  "rust": "Rust",
568
- "chromium": "الكروم / الكروم"
709
+ "chromium": "Chromium / Chrome"
569
710
  },
570
711
  "php": {
571
712
  "session": "حصة",
@@ -689,7 +830,95 @@
689
830
  "deleteNodeDesc": "يحذف عقدة CDN \"{{name}}\".",
690
831
  "deleteSiteDesc": "يحذف موقع CDN \"{{name}}\".",
691
832
  "deleteSiteC1": "سياسة الموقع وجمعيات الحافة",
692
- "deleteSiteC2": "قد تحتاج تكوينات nginx المطبقة إلى عملية تنظيف منفصلة أو إعادة تطبيق"
833
+ "deleteSiteC2": "قد تحتاج تكوينات nginx المطبقة إلى عملية تنظيف منفصلة أو إعادة تطبيق",
834
+ "statOnline": "Online",
835
+ "statOffline": "غير متصل {{n}}",
836
+ "statHitRate": "معدل الإصابة {{v}}",
837
+ "hitNoStats": "لا إحصاءات حافة بعد",
838
+ "loopbackOriginBlocked": "لن يُطبَّق أصل الاسترجاع {{url}} على حافة بعيدة. عيّن أصلاً يمكن بلوغه.",
839
+ "applyFailedHint": "فشل التطبيق — انظر الملاحظات أدناه",
840
+ "applyStatus": {
841
+ "draft": "مسودة",
842
+ "planned": "مخطط",
843
+ "applying": "جارٍ التطبيق",
844
+ "applied": "مطبّق",
845
+ "failed": "فشل",
846
+ "partial": "جزئي"
847
+ },
848
+ "drain": "بالُوعَة",
849
+ "drainTitle": "توقف عن إرسال حركة مرور CDN جديدة إلى هذه الحافة",
850
+ "drainDesc": "استنزاف \"{{name}}\"؟ تبقى الاتصالات الموجودة حتى تنتهي.",
851
+ "drainLastTitle": "هذه هي الحافة الأخيرة – سوف يترك الصرف كل موقع بدون حافة",
852
+ "drainLastDesc": "\"{{name}}\" هي الحافة الوحيدة. استنزافها وجميع المواقع ليس لها أي حافة.",
853
+ "clearDrainTitle": "اقبل حركة المرور الجديدة على هذه الحافة مرة أخرى",
854
+ "clearDrainDesc": "مسح الاستنزاف على \"{{name}}\"؟",
855
+ "deleteNodeTitle": "احذف حافة CDN هذه",
856
+ "deleteLastNodeTitle": "احذف الحافة الأخيرة — لن يكون لجميع المواقع أي حافة",
857
+ "purge": "تطهير",
858
+ "previewTitle": "معاينة تكوين nginx (بدون كتابة)",
859
+ "writeConfTitle": "اكتب ملفات تكوين edge nginx",
860
+ "applyEdgesTitle": "قم بتطبيق هذا الموقع على الحواف (يكتب nginx)",
861
+ "purgeTitle": "تطهير ذاكرة التخزين المؤقت على الحواف",
862
+ "dnsSyncTitle": "كتابة سجلات DNS الخاصة بـ CDN",
863
+ "probeDnsTitle": "دقق في الحواف وDNS (للقراءة فقط)",
864
+ "distSslTitle": "انسخ مواد TLS إلى الحواف",
865
+ "leIssueTitle": "قم بإصدار شهادة Let's Encrypt وتوزيعها",
866
+ "deleteSiteTitle": "احذف موقع CDN هذا",
867
+ "siteOpConfirmGeneric": "هل تريد تشغيل هذا الإجراء على \"{{name}}\"؟",
868
+ "siteOpConfirmDesc": "الموقع “{{name}}” · {{action}}. يمكن أن يؤدي هذا إلى تغيير nginx أو DNS أو الشهادات.",
869
+ "siteOpConfirm": {
870
+ "apply": "تطبيق هذا الموقع على الحواف؟",
871
+ "render": "اكتب تكوين nginx لهذا الموقع؟",
872
+ "purge": "هل تريد مسح ذاكرة التخزين المؤقت لهذا الموقع؟",
873
+ "dns-sync": "هل تريد مزامنة DNS لهذا الموقع؟",
874
+ "dist": "توزيع TLS على الحواف؟",
875
+ "issue": "مشكلة دعونا تشفير وتوزيع؟"
876
+ },
877
+ "pillNodesSites": "{{n}} العقد · {{s}} المواقع",
878
+ "statHit": "معدل الضرب",
879
+ "hitUnknown": "مجهول",
880
+ "lastHealthHint": "المسبار الأخير {{at}} · {{ok}}",
881
+ "lastHealthNever": "لم يتم التحقيق فيه بعد - قم بتشغيل التحقيق",
882
+ "lastHealthFail": "فشل التحقيق",
883
+ "healthLoopNeedSites": "أضف موقعًا أولاً",
884
+ "nodeStatus": {
885
+ "online": "متصل",
886
+ "offline": "غير متصل",
887
+ "draining": "استنزاف",
888
+ "unknown": "مجهول"
889
+ },
890
+ "statOnlineOf": "Online {{n}}/{{total}}",
891
+ "statDraining": "Draining {{n}}",
892
+ "localTest": "local / test",
893
+ "colRegion": "Region",
894
+ "previewOnlyNote": "Preview only — nothing was written to the edges.",
895
+ "statByRegion": "Region: ",
896
+ "statByApply": "Apply status: ",
897
+ "col": {
898
+ "origin": "Origin",
899
+ "edges": "Edges",
900
+ "apply": "Apply",
901
+ "dns": "DNS",
902
+ "edgesOnline": "Edges online / applied",
903
+ "dnsRr": "CDN DNS records"
904
+ },
905
+ "mode": {
906
+ "origin_pull": "Origin pull",
907
+ "reverse_proxy": "Reverse proxy",
908
+ "static_edge": "Static edge"
909
+ },
910
+ "dnsStrategy": {
911
+ "multi_a": "Multiple A records",
912
+ "cname": "CNAME",
913
+ "geo": "Geo"
914
+ },
915
+ "edgesOnlineApplied": "{{online}}/{{total}} online · {{applied}} applied",
916
+ "hitMiss": "Hits {{hits}} / misses {{misses}}",
917
+ "cacheBytes": "Cache ≈ {{n}} B",
918
+ "hitRateUnknown": "No access log with cache status and no cache directory, so hit rate cannot be estimated.",
919
+ "offlineHint": "Offline — probe failed. Remove the node if it is leftover.",
920
+ "applyFailedNoNote": "No stored reason. Re-apply to capture the error.",
921
+ "statApplyFailed": "Apply failed"
693
922
  },
694
923
  "cli": {
695
924
  "unknownCommand": "أمر غير معروف: {{command}}\nتشغيل `{{cli}} مساعدة`",
@@ -1560,12 +1789,12 @@
1560
1789
  "defense": {
1561
1790
  "ban": {
1562
1791
  "--ip": {
1563
- "cc22de": "الاستخدام: {{CLI_NAME}} حظر الدفاع --ip <ip> [--method Fail2ban|ufw|كلاهما] [--سبب t] [--تنفيذ]"
1792
+ "cc22de": "الاستخدام: {{CLI_NAME}} حظر الدفاع --ip <ip> [--method fail2ban|ufw|كلاهما] [--سبب t] [--تنفيذ]"
1564
1793
  }
1565
1794
  },
1566
1795
  "unban": {
1567
1796
  "--ip": {
1568
- "46aa23": "الاستخدام: {{CLI_NAME}} Defense unban --ip <ip> [--method Fail2ban|ufw|كلاهما] [--تنفيذ]"
1797
+ "46aa23": "الاستخدام: {{CLI_NAME}} Defense unban --ip <ip> [--method fail2ban|ufw|كلاهما] [--تنفيذ]"
1569
1798
  }
1570
1799
  },
1571
1800
  "whitelist": {
@@ -1575,7 +1804,7 @@
1575
1804
  },
1576
1805
  "status": {
1577
1806
  "bans": {
1578
- "a8d96b": "الاستخدام: {{CLI_NAME}} حالة الدفاع|الحظر|المشتبه بهم|الحظر|unban|القائمة البيضاء|تطبيق المكدس|fail2ban|جدار الحماية|المخطط الزمني|الإعدادات المسبقة [--json]\n` +\n ` الحظر [--نص q] [--المصدر Fail2ban|لوحة|ufw|تلقائي]\n` +\n ` المشتبه بهم [--نص q]\n` +\n ` تطبيق المكدس [--تنفيذ] # UFW + Fail2ban + الإعداد المسبق الحالي\n` +\n `fail2ban | جدار الحماية # تحقيقات عميقة (صادقة)\n` +\n ` الجدول الزمني [--الحد N] [--نص q]\n` +\n `الإعدادات المسبقة # قائمة + activePreset"
1807
+ "a8d96b": "الاستخدام: {{CLI_NAME}} حالة الدفاع|الحظر|المشتبه بهم|الحظر|unban|القائمة البيضاء|تطبيق المكدس|fail2ban|جدار الحماية|المخطط الزمني|الإعدادات المسبقة [--json]\n الحظر [--نص q] [--المصدر fail2ban|لوحة|ufw|تلقائي]\n المشتبه بهم [--نص q]\n تطبيق المكدس [--تنفيذ] # UFW + fail2ban + الإعداد المسبق الحالي\nfail2ban | جدار الحماية # تحقيقات عميقة (صادقة)\n الجدول الزمني [--الحد N] [--نص q]\nالإعدادات المسبقة # قائمة + activePreset"
1579
1808
  }
1580
1809
  }
1581
1810
  }
@@ -1741,7 +1970,7 @@
1741
1970
  }
1742
1971
  },
1743
1972
  "x": {
1744
- "972912": "الاستخدام:\n يقوم خادم ysk بترحيل المخزون [--data-dir PATH] --json\n ysk-server ترحيل المضيف --target root@IP [--identity-file PATH|--identity-id ID|--password PW] --تنفيذ [--صيانة] [--force-wipe-target]\n يقوم خادم ysk بترحيل المنشور --معرف الوظيفة --data-dir PATH --execute # على الهدف\n حالة ترحيل خادم ysk [--معرف الوظيفة]\n ysk-server ترحيل السيرة الذاتية - معرف الوظيفة - تنفيذ"
1973
+ "972912": "الاستخدام:\n يقوم خادم ysk بترحيل المخزون [--data-dir PATH] --json\n ysk-server ترحيل المضيف --target root@IP [--identity-file PATH|--identity-id ID|--password PW] --تنفيذ [--صيانة] [--force-wipe-target]\n يقوم خادم ysk بترحيل المنشور --معرف الوظيفة --data-dir PATH --execute # على الهدف\n حالة ترحيل خادم ysk [--معرف الوظيفة]\n ysk-server ترحيل السيرة الذاتية - معرف الوظيفة - تنفيذ\n ysk-server migrate orphan-homes [--data-dir PATH] --json\n ysk-server migrate orphan-homes --path /home/ysk-server-UUID --confirm PATH --execute\n"
1745
1974
  },
1746
1975
  "hostingHelp": "الاستخدام: استضافة خادم ysk <sub>\n التشغيل الجاف الافتراضي للعمليات الخطرة؛ أضف --execute (+ YSK_EXECUTE=1) للتطبيق\n نجينكس | مزامنة nginx [--تنفيذ]\n توفير redis | توفير بوستجرس | توفير الخلية [--تنفيذ]\n منطقة نظام أسماء النطاقات --zone X --ip A.B.C.D [--ipv6 X:X::X] [--التحقق] [--إعادة التحميل]\n مناطق نظام أسماء النطاقات | حالة powerdns | تثبيت powerdns [--تثبيت|--تنفيذ]\n powerdns-load --zone X --ip A.B.C.D [--تحميل|--تنفيذ]\n تطبيق بالبريد الإلكتروني --domain X [--تثبيت|--تنفيذ]\n صندوق بريد البريد الإلكتروني - المجال X - المستخدم المحلي [- كلمة المرور P] [--ip A.B.C.D] [--النظام]\n تطبيق ftps --domain X [--تثبيت|--تنفيذ]\n أوقات التشغيل | تثبيت وقت التشغيل --kind العقدة|php|python|go|rust --version V [--install|--execute]\n حمامة-passdb --domain X | --الكل\n تطبيق بريد الويب --المجال webmail.example.com [--تنزيل]\n الملفات العامة --domain files.example.com [--إعادة تحميل]\n البريد الإلكتروني-bootstrap --domain example.com --ip A.B.C.D [--تثبيت|--تنفيذ]\n إمكانية تسليم البريد الإلكتروني --domain example.com # PTR/DNSBL/warmup pack (صادق)\n تطبيق جدار الحماية [--smtp] [--تنفيذ]",
1747
1976
  "logsQuery": "الاستخدام: {{CLI_NAME}} استعلام السجلات --المصدر <id> [--سطور N] [--grep G] [--منذ ساعة واحدة] [-خطأ الأولوية]\n أمثلة المصدر: مجلة: مجلة: ملف nginx.service: مشروع سجل النظام: <uuid>\n {{CLI_NAME}} مصادر السجلات --json\n {{CLI_NAME}} مجلة السجلات [--unit nginx.service] --json"
@@ -1910,6 +2139,7 @@
1910
2139
  "noData": "لا توجد بيانات",
1911
2140
  "input": "مدخل",
1912
2141
  "pleaseEnter": "أدخل {{value}}",
2142
+ "required": "مطلوب",
1913
2143
  "about": "عن",
1914
2144
  "operation": "الإجراءات",
1915
2145
  "delete": "يمسح",
@@ -1996,7 +2226,14 @@
1996
2226
  "show": "يعرض",
1997
2227
  "done": "منتهي",
1998
2228
  "next": "التالي",
1999
- "previous": "سابق"
2229
+ "previous": "سابق",
2230
+ "all": "الجميع",
2231
+ "showPassword": "يعرض",
2232
+ "hidePassword": "يخفي",
2233
+ "more": "أكثر",
2234
+ "redirectedTo": "فُتح {{to}} (كان {{from}})",
2235
+ "unavailable": "Not available right now",
2236
+ "ok": "OK"
2000
2237
  },
2001
2238
  "cron": {
2002
2239
  "presetCdTrue": "تطبيق cd + صحيح (اختبار)",
@@ -2135,7 +2372,39 @@
2135
2372
  "sourceHost": "يستضيف",
2136
2373
  "noHostJobs": "لا توجد وظائف crontab في هذا النطاق",
2137
2374
  "hostPartial": "لا يمكن قراءة كل crontab للمستخدم (الجذر مطلوب)",
2138
- "pendingInstall": "في انتظار التثبيت ({{count}})"
2375
+ "pendingInstall": "في انتظار التثبيت ({{count}})",
2376
+ "hourRange": "يجب أن تكون الساعة من 0 إلى 23.",
2377
+ "minuteRange": "يجب أن تكون الدقيقة 0–59.",
2378
+ "hoursCommon": "ساعات مشتركة",
2379
+ "hoursAll": "كل الساعات",
2380
+ "invalidExpr": "ليس تعبير cron صالحًا مكونًا من 5 حقول.",
2381
+ "needCommand": "الأمر مطلوب.",
2382
+ "needUser": "اختر مشروعًا أو مستخدمًا للنظام.",
2383
+ "hostCounts": "خطوط المضيف",
2384
+ "hostCountsVal": "{{ysk}} · أخرى {{other}} · الإجمالي {{total}}",
2385
+ "hostYskYes": "خطوط اللوحة موجودة",
2386
+ "hostYskNo": "لا خطوط لوحة",
2387
+ "emptyHostCrontab": "لا يوجد crontab لـ {{user}}.",
2388
+ "writtenOnHost": "Written",
2389
+ "registeredJobsChip": "Registered",
2390
+ "registeredVsWritten": "Registered in the panel vs written to host crontab",
2391
+ "installPreviewTitle": "Preview before installing to system crontab",
2392
+ "installPreviewDesc": "This merges the YSK block into the host crontab. Existing non-YSK lines stay.",
2393
+ "installPreviewMerge": "Install writes a YSK Server crontab merge block. It does not replace the whole crontab.",
2394
+ "installPreviewEmpty": "No pending managed jobs — install still refreshes the YSK block.",
2395
+ "editJobTitle": "Edit job",
2396
+ "editJobDesc": "Changes stay in the panel until you install to the system crontab.",
2397
+ "saveJob": "Save (management only)",
2398
+ "panelLines": "Panel lines",
2399
+ "otherLines": "Other lines",
2400
+ "totalLines": "Total",
2401
+ "writtenOnHostHint": "Lines already written to the host crontab",
2402
+ "registeredJobsHint": "Jobs registered in the panel (including pending install)",
2403
+ "pendingInstallCount": "{{n}} pending install",
2404
+ "systemJobBadge": "No project · system user",
2405
+ "willNotRun": "Not written to system crontab — will not run.",
2406
+ "pendingStale": "Not written to system crontab for {{days}} day(s) — it will not run.",
2407
+ "jobsTabPending": "Jobs ({{count}}) · pending {{pending}}"
2139
2408
  },
2140
2409
  "dashboard": {
2141
2410
  "title": "لوحة القيادة",
@@ -2181,7 +2450,8 @@
2181
2450
  "mode": {
2182
2451
  "degraded": "متدهورة",
2183
2452
  "production_capable": "الإنتاج جاهز",
2184
- "normal": "طبيعي"
2453
+ "normal": "طبيعي",
2454
+ "blocked": "blocked"
2185
2455
  },
2186
2456
  "details": "تفاصيل",
2187
2457
  "certExpiryTitle": "انتهاء الشهادة:",
@@ -2224,7 +2494,7 @@
2224
2494
  "runtime": "وقت التشغيل",
2225
2495
  "runtimeHint": "يضبط إصدار وقت التشغيل الافتراضي ونمط النشر",
2226
2496
  "runtimeVersion": "نسخة وقت التشغيل",
2227
- "versionHint": "مخزنة كمشروع runtime_version",
2497
+ "versionHint": "يكتب إعداد إصدار بيئة تشغيل المشروع",
2228
2498
  "serverIpv4": "خادم IPv4",
2229
2499
  "serverIpv4Hint": "DNS أ / البريد SPF",
2230
2500
  "serverIpv4Ph": "هذا المضيف IPv4 العام",
@@ -2246,7 +2516,27 @@
2246
2516
  "noNotifs": "لا الإخطارات",
2247
2517
  "noNotifsDesc": "تظهر تنبيهات النظام والمهام هنا",
2248
2518
  "applyAuditTitle": "تطبيق تدقيق الحالة",
2249
- "applyAuditDesc": "حسنًا {{ok}} · تحذير {{warn}} · سيئ {{bad}}"
2519
+ "applyAuditDesc": "حسنًا {{ok}} · تحذير {{warn}} · سيئ {{bad}}",
2520
+ "barTitle": "{{count}} تنبيه على المضيف",
2521
+ "levelCritical": "حرج",
2522
+ "levelWarn": "تحذير",
2523
+ "levelInfo": "معلومة",
2524
+ "colTitle": "تنبيه",
2525
+ "colDetail": "التفاصيل",
2526
+ "colSource": "المصدر",
2527
+ "notifSearch": "تنبيهات البحث",
2528
+ "notifAll": "الجميع",
2529
+ "notifDismiss": "يخفي",
2530
+ "goFix": "يصلح",
2531
+ "needDomainFirst": "أدخل نطاقاً أولاً",
2532
+ "serviceAria": "{{name}}: {{state}}",
2533
+ "sev": {
2534
+ "ok": "OK",
2535
+ "warn": "Warning",
2536
+ "bad": "Problem"
2537
+ },
2538
+ "publicNo2fa": "This panel listens on all interfaces and your admin account has no 2FA.",
2539
+ "readinessBlocked": "{{n}} blocker(s)"
2250
2540
  },
2251
2541
  "dataTable": {
2252
2542
  "empty": "لا توجد بيانات",
@@ -2471,7 +2761,54 @@
2471
2761
  "probe": "دقق",
2472
2762
  "name": "اسم",
2473
2763
  "type": "يكتب",
2474
- "status": "حالة"
2764
+ "status": {
2765
+ "healthy": "صحيح",
2766
+ "planned": "المخطط لها",
2767
+ "partial": "جزئي",
2768
+ "failed": "فشل",
2769
+ "draft": "مسودة",
2770
+ "degraded": "متدهورة",
2771
+ "applied": "مُطبَّق"
2772
+ },
2773
+ "fleetSession": "معرف جلسة وكيل الأسطول",
2774
+ "fleetSessionHint": "Optional. Paste a session UUID from /agents. Then this peer uses fleet (no SSH). Leave empty for SSH scp.",
2775
+ "fleetSessionPh": "UUID لجلسة صفحة الوكلاء",
2776
+ "engineNotInstalled": "{{engine}} غير مثبت على هذا المضيف — قم بتثبيته أولاً، أو افتح المحرك الذي يعمل بالفعل.",
2777
+ "fleetSessionNone": "لا شيء - استخدم SSH",
2778
+ "fleetSessionOpenAgents": "افتح / الوكلاء لتسجيل الجلسة",
2779
+ "createWizardTitle": "يفتح معالج الخطة. يحتاج إلى IP محلي ونظير ≥1. يكتب عناصر اللوحة فقط (التشغيل الجاف). لا يتم إعادة تشغيل المحرك حتى تقوم بالتقديم.",
2780
+ "bootstrap": "بوتستراب",
2781
+ "fleetApply": "تطبيق الأسطول",
2782
+ "planTitle": "إعادة إنشاء خطة المجموعة (بدون تغيير المضيف)",
2783
+ "writeFileTitle": "كتابة ملفات الإدارة ضمن لوحة البيانات dir (التشغيل الجاف)",
2784
+ "probeLocalTitle": "دقق في هذا المضيف فقط",
2785
+ "probeAllTitle": "التحقيق مع كل عضو مسجل",
2786
+ "bootstrapTitle": "قم بتثبيت القائمة المنسدلة المحلية وقم بتمهيد العقدة الأولى",
2787
+ "remoteInstallPlanTitle": "معاينة التثبيت عن بعد (بدون تنفيذ)",
2788
+ "downloadBundleTitle": "تنزيل حزمة نظير conf (.tar.gz)",
2789
+ "pushPlanTitle": "معاينة الدفع إلى النظير (بدون scp)",
2790
+ "fleetSyncPlanTitle": "معاينة مزامنة الأسطول (بدون تنفيذ)",
2791
+ "fleetApplyTitle": "هل تنطبق على أعضاء الأسطول؟",
2792
+ "redirectedFromCluster": "You were redirected here from /cluster. This is the database cluster tab.",
2793
+ "roleUnassigned": "No role assigned",
2794
+ "standaloneOtherEngines": "This engine is standalone. Other engines have clusters: {{names}}.",
2795
+ "notApplied": "Not applied",
2796
+ "plannedAt": "Created {{when}}",
2797
+ "clearStalePlans": "Clear stale plans",
2798
+ "clearStalePlansTitle": "Delete stale planned clusters?",
2799
+ "clearStalePlansDesc": "Deletes {{n}} planned/draft registration(s) older than 7 days. Does not apply or push. System conf is not touched.",
2800
+ "landingTitle": "Database cluster",
2801
+ "landingDesc": "No database engine is installed on this host. Open an engine page to install, then return here.",
2802
+ "landingNoneInstalled": "MySQL, MariaDB, PostgreSQL, and Redis are not installed. /cluster does not open a MySQL tab when MySQL is missing.",
2803
+ "openEngine": "Open {{engine}}",
2804
+ "overviewPill": "Clusters {{n}}",
2805
+ "enginesInstalled": "Engines",
2806
+ "plannedCount": "Planned",
2807
+ "overviewList": "Clusters ({{count}})",
2808
+ "overviewEmpty": "No cluster registrations yet.",
2809
+ "engine": "Engine",
2810
+ "kind": "Kind",
2811
+ "members": "Members"
2475
2812
  },
2476
2813
  "console": {
2477
2814
  "dataBrowse": "تصفح البيانات",
@@ -2511,7 +2848,9 @@
2511
2848
  "reloadConfig": "إعادة تحميل التكوين",
2512
2849
  "disableBoot": "تعطيل عند التمهيد",
2513
2850
  "needRights": "يحتاج إلى حقوق تغيير النظام والمسؤول. الفشل يظهر الأسباب - لا تتظاهر بالنجاح أبدًا.",
2514
- "noneFetched": "- لا أحد -"
2851
+ "noneFetched": "- لا أحد -",
2852
+ "disableBootConfirm": "لن يبدأ المحرك بعد إعادة التشغيل حتى تقوم بتمكينه مرة أخرى.",
2853
+ "affectsProjects": "Sites and services that use this engine will be interrupted."
2515
2854
  },
2516
2855
  "expiresLabel": "تنتهي",
2517
2856
  "importEntry": "الدخول: {{url}}",
@@ -2537,7 +2876,30 @@
2537
2876
  "unfreezeOk": "{{engine}} تم الانتهاء من الإصلاح",
2538
2877
  "startAfterUnfreeze": "بدء الخدمة (تشغيل خطة الإصلاح تلقائيًا عند الفشل)",
2539
2878
  "serviceDownTitle": "خدمة قاعدة البيانات معطلة",
2540
- "serviceDownBody": "الخدمة غير صحية"
2879
+ "serviceDownBody": "الخدمة غير صحية",
2880
+ "emptyDbHostHasRows": "لدى المضيف بالفعل قواعد بيانات غير موجودة في قائمة مستوى التحكم هذه.",
2881
+ "hostHasUntracked": "{{count}} قواعد البيانات المضيفة غير مسجلة في اللوحة",
2882
+ "hostInventoryHint": "الجدول عبارة عن صفوف مستوى التحكم فقط. الأسماء الحية تأتي من إظهار قواعد البيانات.",
2883
+ "adoptHostDb": "تسجيل {{name}}",
2884
+ "remoteTest": "اتصال الاختبار",
2885
+ "remoteTestDone": "انتهى مسبار المضيف البعيد",
2886
+ "remoteTestOk": "يمكن الوصول إليها",
2887
+ "remoteTestFail": "لا يمكن الوصول إليه",
2888
+ "remoteNotChecked": "لم يتم اختباره",
2889
+ "registeredVsHostHint": "مسجّل في اللوحة / موجود على المضيف",
2890
+ "dumpNeedRegistered": "سجّل قاعدة بيانات في اللوحة أولاً",
2891
+ "dumpFirstDbTitle": "تصدير أول قاعدة مسجّلة",
2892
+ "importNeedRegistered": "سجّل قاعدة بيانات في اللوحة أولاً",
2893
+ "importLatestNeedConfirm": "يحتاج تأكيدًا — يستورد إلى القاعدة المسجّلة",
2894
+ "adoptHostDbTitle": "يسجّل الاسم في مستوى التحكم فقط ولا يغيّر بيانات المضيف.",
2895
+ "cleanupExpiredTempUsersTitle": "يحذف مستخدمي اللوحة المؤقتين المنتهية صلاحيتهم",
2896
+ "remoteDeleteTitle": "إزالة هذا التسجيل فقط",
2897
+ "remoteDeleteConfirm": "إزالة التسجيل {{name}}؟ لن يُغيَّر الخادم البعيد.",
2898
+ "registeredCount": "Registered",
2899
+ "hostCount": "On host",
2900
+ "registeredUsers": "Registered users",
2901
+ "registeredUsersHint": "Panel registrations only — not every MySQL account",
2902
+ "hostStillExists": "Still on host"
2541
2903
  },
2542
2904
  "dialogs": {
2543
2905
  "confirmDefault": "يتأكد",
@@ -2761,7 +3123,277 @@
2761
3123
  "aboutHealthTitle": "صحة الخدمة",
2762
3124
  "aboutHealthBody": "استخدم الأدوات لفحص PowerDNS ومعالجة الارتباط وفتح المنفذ 53.",
2763
3125
  "aboutStackTitle": "برمجة",
2764
- "aboutStackBody": "قم بفحص/تحديث حزمة PowerDNS ضمن البرنامج."
3126
+ "aboutStackBody": "قم بفحص/تحديث حزمة PowerDNS ضمن البرنامج.",
3127
+ "invalidZone": "اسم المنطقة غير صالح. استخدم نطاقًا حقيقيًا (مثل example.com).",
3128
+ "invalidIpv4": "IPv4 غير صالح. يجب أن تكون كل ثماني بتات من 0 إلى 255.",
3129
+ "mailZonesMissing": "لا تحتوي مجالات البريد الإلكتروني على منطقة DNS هنا: {{domains}}.",
3130
+ "createMailZone": "إنشاء منطقة البريد",
3131
+ "createMailZoneNow": "منطقة البريد التي تم إنشاؤها {{domain}}",
3132
+ "healNeedInstall": "لم يتم تثبيت PowerDNS - قم بتثبيته في علامة التبويب \"البرامج\" أولاً",
3133
+ "applyNeedService": "خدمة DNS ليست قيد التشغيل - قم بتشغيلها أو تثبيتها قبل التطبيق",
3134
+ "deleteZoneNeedName": "احذف هذه المنطقة — ستكتب اسم المنطقة للتأكيد",
3135
+ "toolsFirewallTitle": "الجدار الناري (UFW)",
3136
+ "toolsFirewallHint": "السماح أو حظر المنفذ 53. هذا لا يشغّل أو يوقف PowerDNS.",
3137
+ "toolsUnitTitle": "وحدة PowerDNS",
3138
+ "toolsUnitHint": "وحدة systemd pdns — بدء، إيقاف، إعادة تشغيل، إعادة تحميل.",
3139
+ "installConfirmTitle": "تثبيت PowerDNS؟",
3140
+ "installConfirmDesc": "يثبّت pdns-server ويكتب الإعداد المُدار. يحتاج root و YSK_EXECUTE=1.",
3141
+ "installConfirmConsequence": "بعد التثبيت والتشغيل سيستخدم PowerDNS المنفذ 53.",
3142
+ "installPort53Busy": "يوجد بالفعل مستمع على المنفذ 53. قد يفشل ربط PowerDNS حتى يُوقف أو يُصلح ذلك المستمع.",
3143
+ "installPort53BusyConsequence": "أصلح الربط أو أوقف المستمع الآخر قبل توقع إجابات على المنفذ 53.",
3144
+ "createZoneNeedValid": "Enter a valid zone name and IPv4 address",
3145
+ "startProbeFailed": "Could not re-check DNS health after start",
3146
+ "startNotListening": "PowerDNS start returned, but the unit is not answering on port 53",
3147
+ "goStartService": "Start DNS service",
3148
+ "startBindHint": "If start returns to stopped, port 53 is often held by systemd-resolved. Use Heal bind below, then start again."
3149
+ },
3150
+ "docker": {
3151
+ "title": "Docker",
3152
+ "subtitle": "ثبّت وتحكّم بمحرك Docker والحاويات والصور ومشاريع Compose والقرص على هذا المضيف.",
3153
+ "refresh": "تحديث",
3154
+ "notInstalled": "Docker Engine غير مثبت. ثبّت docker.io و docker-compose-v2 من هذه الصفحة.",
3155
+ "protected": "محمي",
3156
+ "pruneConfirm": "اكتب PRUNE لتأكيد تنظيف volume أو النظام",
3157
+ "settingsHint": "مجموعة آمنة فقط من daemon.json. التطبيق يكتب الملف ويعيد تشغيل docker.service.",
3158
+ "cli": {
3159
+ "usage": "الاستخدام: ysk-server docker status|ps|images|volumes|networks|df|logs|inspect|exec|start|stop|restart|rm|pull|run|prune|engine|compose [--image IMG] [--name N] [--preset version|help|hostname] [--bin BIN] [--project P] [--execute] [--json]"
3160
+ },
3161
+ "tab": {
3162
+ "overview": "نظرة عامة",
3163
+ "containers": "الحاويات",
3164
+ "images": "الصور",
3165
+ "compose": "Compose",
3166
+ "volumes": "مجلدات",
3167
+ "networks": "الشبكات",
3168
+ "prune": "تنظيف",
3169
+ "settings": "الإعدادات",
3170
+ "about": "عن"
3171
+ },
3172
+ "col": {
3173
+ "engine": "المحرك",
3174
+ "containers": "الحاويات",
3175
+ "version": "الإصدار",
3176
+ "dataRoot": "دليل البيانات",
3177
+ "disk": "القرص",
3178
+ "validators": "مكدسات المدقق",
3179
+ "name": "الاسم",
3180
+ "image": "الصورة",
3181
+ "status": "الحالة",
3182
+ "ports": "المنافذ",
3183
+ "managed": "تديره اللوحة",
3184
+ "size": "الحجم",
3185
+ "driver": "المشغّل",
3186
+ "type": "النوع",
3187
+ "reclaimable": "قابل للاسترداد"
3188
+ },
3189
+ "state": {
3190
+ "up": "نشط",
3191
+ "down": "متوقف",
3192
+ "running": "Running",
3193
+ "exited": "Exited",
3194
+ "restarting": "Restarting",
3195
+ "restartingCount": "Restarting · {{n}} times",
3196
+ "paused": "Paused",
3197
+ "created": "Created",
3198
+ "dead": "Dead",
3199
+ "removing": "Removing",
3200
+ "unknown": "Unknown",
3201
+ "exitedCode": "Exited ({{n}})"
3202
+ },
3203
+ "actions": {
3204
+ "start": "بدء",
3205
+ "stop": "إيقاف",
3206
+ "restart": "إعادة تشغيل",
3207
+ "remove": "حذف",
3208
+ "logs": "السجلات",
3209
+ "inspect": "فحص",
3210
+ "exec": "Exec (الإصدار)",
3211
+ "run": "تشغيل صورة",
3212
+ "pull": "سحب",
3213
+ "up": "رفع",
3214
+ "down": "إنزال",
3215
+ "createVolume": "إنشاء volume",
3216
+ "createNetwork": "إنشاء شبكة",
3217
+ "pruneContainers": "تنظيف الحاويات",
3218
+ "pruneImages": "تنظيف الصور",
3219
+ "pruneVolumes": "تنظيف volumes",
3220
+ "pruneSystem": "تنظيف النظام",
3221
+ "startEngine": "بدء المحرك",
3222
+ "stopEngine": "إيقاف المحرك",
3223
+ "restartEngine": "إعادة تشغيل المحرك",
3224
+ "applyDaemon": "تطبيق إعدادات المحرك"
3225
+ },
3226
+ "empty": {
3227
+ "containers": "لا حاويات",
3228
+ "images": "لا صور",
3229
+ "compose": "لا مشاريع Compose",
3230
+ "volumes": "لا volumes",
3231
+ "networks": "لا شبكات",
3232
+ "composeDesc": "Projects come from validator nodes or Compose files already on this host. This page does not accept arbitrary YAML uploads.",
3233
+ "composeCta": "Open validator nodes"
3234
+ },
3235
+ "logs": {
3236
+ "empty": "لا سجلات بعد",
3237
+ "follow": "Follow"
3238
+ },
3239
+ "settings": {
3240
+ "logMaxSize": "الحد الأقصى لسجل الحاوية",
3241
+ "liveRestore": "استعادة حية (الإبقاء على الحاويات إن أُعيد تشغيل الشيطان)",
3242
+ "mirrors": "مرايا Registry (عنوان لكل سطر)",
3243
+ "insecure": "سجلات غير مشفّرة (مضيف لكل سطر)"
3244
+ },
3245
+ "about": {
3246
+ "body": "Docker خدمة مضيف من الدرجة الأولى في YSK Server مثل Nginx. يُثبَّت من اللوحة (Ubuntu docker.io + docker-compose-v2). تعمل عُقد المدقق كمشاريع Compose باسم yskval-*.",
3247
+ "honesty": "تغييرات المضيف تحتاج root و YSK_EXECUTE=1. الافتراضي dry-run. هذه الصفحة ليست Kubernetes.",
3248
+ "validators": "فتح عُقد المدقق"
3249
+ },
3250
+ "alerts": {
3251
+ "daemonTitle": "شيطان Docker متوقف",
3252
+ "daemonBody": "Docker مثبت لكن docker.service غير نشط. لا يمكن بدء مكدسات المدقق."
3253
+ },
3254
+ "errors": {
3255
+ "notInstalled": "Docker غير مثبت",
3256
+ "daemonDown": "شيطان Docker غير نشط",
3257
+ "needCompose": "مطلوب docker compose (إضافة v2)",
3258
+ "badImage": "مرجع صورة غير صالح",
3259
+ "badName": "اسم غير صالح",
3260
+ "badPort": "نشر منفذ غير صالح",
3261
+ "badEnv": "متغير بيئة غير صالح",
3262
+ "badVolume": "تركيب مجلد غير صالح",
3263
+ "badNetwork": "شبكة غير صالحة",
3264
+ "protectedNetwork": "لا يمكن حذف شبكة Docker مدمجة",
3265
+ "badRestart": "سياسة إعادة التشغيل غير صالحة",
3266
+ "badPrune": "نطاق التنظيف غير صالح",
3267
+ "needPruneConfirm": "تنظيف volume أو النظام يتطلب confirm=PRUNE",
3268
+ "badDaemon": "إعداد المحرك غير صالح",
3269
+ "composeMissing": "ملف Compose لهذا المشروع غير موجود",
3270
+ "logsFailed": "تعذر قراءة سجلات الحاوية",
3271
+ "mutateFailed": "فشل أمر Docker",
3272
+ "engineFailed": "تعذر التحكم بـ docker.service",
3273
+ "badExec": "exec مقتصر على الثنائيات والإعدادات المسبقة المسموحة (بدون صدفة ولا TTY)",
3274
+ "uninstallBusy": "أوقف الحاويات التي تديرها اللوحة (بما فيها مكدسات المدقق) قبل إزالة Docker"
3275
+ },
3276
+ "notes": {
3277
+ "dryMutate": "dry-run فقط. مرّر --execute و YSK_EXECUTE=1 لتغيير المضيف.",
3278
+ "dryPrune": "معاينة التنظيف (غير مطبّقة).",
3279
+ "dryEngine": "التحكم بالمحرك dry-run.",
3280
+ "dryDaemon": "سيُكتب /etc/docker/daemon.json ويُعاد تشغيل docker.service.",
3281
+ "daemonWrote": "كُتب daemon.json",
3282
+ "start": "بدأت الحاوية",
3283
+ "stop": "توقفت الحاوية",
3284
+ "restart": "أُعيد تشغيل الحاوية",
3285
+ "remove": "حُذفت الحاوية",
3286
+ "ran": "بدأت الحاوية من صورة",
3287
+ "pulled": "سُحبت الصورة",
3288
+ "exec": "شُغّل exec مسموح",
3289
+ "imageRemoved": "حُذفت الصورة",
3290
+ "volumeCreated": "أُنشئ volume",
3291
+ "volumeRemoved": "حُذف volume",
3292
+ "networkCreated": "أُنشئت الشبكة",
3293
+ "networkRemoved": "حُذفت الشبكة",
3294
+ "pruned": "اكتمل التنظيف",
3295
+ "compose": {
3296
+ "up": "بدأ مشروع Compose",
3297
+ "down": "توقف مشروع Compose",
3298
+ "restart": "أُعيد تشغيل مشروع Compose",
3299
+ "rm": "Compose project removed"
3300
+ },
3301
+ "engine": {
3302
+ "start": "بدأ docker.service",
3303
+ "stop": "توقف docker.service",
3304
+ "restart": "أُعيد تشغيل docker.service"
3305
+ }
3306
+ },
3307
+ "needEngineTitle": "Install Docker Engine first",
3308
+ "notInstalledValue": "Not installed",
3309
+ "nameHint": "Letters, digits, underscore, dot, hyphen (max 128)",
3310
+ "volPlaceholder": "my-data",
3311
+ "netPlaceholder": "my-net",
3312
+ "runPorts": "Publish ports",
3313
+ "runPortsHint": "host:container per line, e.g. 8080:80",
3314
+ "runEnv": "Environment",
3315
+ "runEnvHint": "KEY=value per line",
3316
+ "runRestart": "Restart policy",
3317
+ "runNetwork": "Network",
3318
+ "runVolumes": "Volumes",
3319
+ "runVolumesHint": "volume:dest per line",
3320
+ "runAdvancedHint": "For multi-service stacks use validator nodes or Compose files already on this host.",
3321
+ "daemonConfirmTitle": "Apply daemon settings?",
3322
+ "daemonConfirmDesc": "Writes daemon.json and restarts docker.service. All containers will be interrupted.",
3323
+ "ui": {
3324
+ "whatYouGet": "ماذا تفعل هذه الصفحة",
3325
+ "whatYouGetLead": "ثبّت Docker Engine أولاً. بعدها يمكنك تشغيل حاوية واحدة وسحب الصور وعرض مكدسات Compose للمدقق الموجودة على هذا المضيف.",
3326
+ "capEngine": "المحرك",
3327
+ "capEngineDesc": "تثبيت بنقرة واحدة لـ docker.io و docker-compose-v2. شغّل وأوقف docker.service من هنا.",
3328
+ "capWork": "الحاويات والصور",
3329
+ "capWorkDesc": "اختر صورة شائعة واسحبها وشغّلها ثم اقرأ السجلات أو افحص الحاوية.",
3330
+ "capStacks": "مكدسات المدقق",
3331
+ "capStacksDesc": "المكدسات متعددة الخدمات هي مشاريع Compose للمدقق (yskval-*). هذه الصفحة لا تقبل رفع YAML.",
3332
+ "cardEngine": "المحرك",
3333
+ "cardDisk": "القرص",
3334
+ "cardWork": "على هذا المضيف",
3335
+ "compose": "Compose",
3336
+ "cgroup": "cgroup",
3337
+ "used": "مستخدم",
3338
+ "free": "متاح",
3339
+ "running": "قيد التشغيل",
3340
+ "images": "صور",
3341
+ "volumes": "Volume",
3342
+ "networks": "شبكات",
3343
+ "goImages": "صور",
3344
+ "goValidators": "عقد المدقق",
3345
+ "imagePickHint": "اختر صورة شائعة. استخدم أخرى فقط عندما تحتاج مرجعاً مختلفاً.",
3346
+ "imageCustom": "أخرى",
3347
+ "driver": "المشغّل",
3348
+ "driverLocalOnly": "هذه اللوحة تنشئ مجلدات local فقط.",
3349
+ "netDefaultDriver": "الشبكات الجديدة تستخدم مشغّل bridge الافتراضي في Docker.",
3350
+ "pruneWhat": "ما الذي يُحذف",
3351
+ "pruneAck": "أفهم أن البيانات غير المستخدمة ستُحذف ولا يمكن استعادتها",
3352
+ "pruneAckDesc": "تنظيف المجلدات أو النظام لا يمكن التراجع عنه. تُحذف الحاويات المتوقفة والصور غير المستخدمة للنطاق المحدد.",
3353
+ "pruneNow": "تنظيف الآن",
3354
+ "useMirrors": "استخدام مرايا السجل",
3355
+ "useInsecure": "السماح بسجلات غير مشفّرة",
3356
+ "publishPorts": "نشر منافذ على المضيف",
3357
+ "attachVolume": "إرفاق مجلد",
3358
+ "setEnv": "تعيين متغيرات البيئة",
3359
+ "defaultNet": "افتراضي",
3360
+ "mountPath": "مسار التركيب",
3361
+ "restartNo": "أبداً",
3362
+ "restartUnless": "ما لم يُوقف",
3363
+ "restartAlways": "دائماً",
3364
+ "restartOnFail": "عند الفشل",
3365
+ "needAck": "أكّد قبل التنظيف",
3366
+ "scopeContainers": "حاويات متوقفة",
3367
+ "scopeImages": "صور غير مستخدمة",
3368
+ "scopeVolumes": "مجلدات غير مستخدمة",
3369
+ "scopeBuilder": "ذاكرة البناء المؤقتة",
3370
+ "scopeSystem": "كل غير المستخدم",
3371
+ "noVolumesYet": "لا توجد مجلدات بعد — أنشئ واحداً في تبويب المجلدات أولاً.",
3372
+ "customPort": "منفذ مضيف آخر",
3373
+ "customPortHost": "منفذ المضيف",
3374
+ "customPortContainer": "منفذ الحاوية",
3375
+ "pctUsed": "مستخدم {{n}}%",
3376
+ "customPortHint": "1–65535. Example: 9090 → 80.",
3377
+ "pickBridge": "Bridge network"
3378
+ },
3379
+ "deleteTitle": "Delete {{id}}",
3380
+ "deleteDesc": "This cannot be undone.",
3381
+ "deleteC1": "The resource is removed from this host.",
3382
+ "deleteComposeVal": "This is a validator stack — the validator instance is also deleted.",
3383
+ "pruneTitle": "Prune Docker resources",
3384
+ "pruneDesc": "Type PRUNE to confirm. Unused data cannot be restored.",
3385
+ "pruneC1": "Unused resources in the selected scope are deleted.",
3386
+ "pruneC2": "Volume and system prune permanently delete unused data volumes.",
3387
+ "pruneC3": "Stopped containers or unused images in this scope are removed.",
3388
+ "df": {
3389
+ "images": "Images",
3390
+ "containers": "Containers",
3391
+ "volumes": "Local volumes",
3392
+ "builder": "Build cache",
3393
+ "other": "Other"
3394
+ },
3395
+ "deleteRunningWarn": "This container is still running or restarting. It will be force-removed.",
3396
+ "stopEngineDesc": "This stops the Docker engine and all {{n}} container(s) on this host."
2765
3397
  },
2766
3398
  "email": {
2767
3399
  "title": "بريد إلكتروني",
@@ -2812,7 +3444,7 @@
2812
3444
  "needExecute": "يحتاج YSK_EXECUTE",
2813
3445
  "viewQueue": "عرض قائمة الانتظار",
2814
3446
  "flushQueue": "طابور دافق",
2815
- "queueHint": "انقر فوق عرض قائمة الانتظار لقراءة قائمة انتظار Postfix المحلية",
3447
+ "queueHint": "طابور Postfix المحلي. العرض قراءة؛ التفريغ يحتاج YSK_EXECUTE.",
2816
3448
  "deleteThisId": "احذف هذا المعرف",
2817
3449
  "queueEmpty": "لا يوجد بريد مؤجل",
2818
3450
  "queueEmptyHint": "لا توجد رسائل مؤجلة",
@@ -3031,7 +3663,7 @@
3031
3663
  "spfFix": "انشر v=spf1 بما في ذلك عنوان IP هذا",
3032
3664
  "dkim": "دكيم TXT",
3033
3665
  "dkimFix": "نشر المحدد._domainkey TXT من اللوحة",
3034
- "dmarc": "DMARC TXT",
3666
+ "dmarc": "ديمارك TXT",
3035
3667
  "dmarcFix": "نشر سياسة _dmarc (ابدأ بـ p=none)",
3036
3668
  "ptr": "عكس DNS (PTR)",
3037
3669
  "ptrFix": "قم بتعيين PTR على VPS/وحدة التحكم السحابية لمطابقة اسم مضيف البريد - لا يمكن للوحة تعيين هذا",
@@ -3081,7 +3713,8 @@
3081
3713
  "dmarcMissing": "DMARC مفقود — موصى به بشدة",
3082
3714
  "ptrBad": "PTR عكس DNS مفقود أو غير صحيح - طلب من مزود VPS",
3083
3715
  "port25Blocked": "يبدو أن المنفذ الصادر 25 محظور — اطلب إلغاء الحظر أو استخدم ترحيل SMTP",
3084
- "port25Unknown": "حالة المنفذ 25 غير معروفة - قم بإجراء فحص الاتصال"
3716
+ "port25Unknown": "حالة المنفذ 25 غير معروفة - قم بإجراء فحص الاتصال",
3717
+ "dmarcUnpublished": "يتم إنشاء DMARC في اللوحة ولكن لم يتم نشره في DNS العام بعد"
3085
3718
  },
3086
3719
  "stack": {
3087
3720
  "tlsNote": "شهادات TLS عبر Let’s Encrypt لـ SMTP/IMAP",
@@ -3122,7 +3755,8 @@
3122
3755
  "postfixReloaded": "تمت إعادة تحميل Postfix.",
3123
3756
  "postfixReloadFailed": "فشلت إعادة تحميل Postfix: {{detail}}",
3124
3757
  "dovecotApplied": "كتب مقتطف Dovecot TLS وحاول إعادة التحميل.",
3125
- "dovecotSkipped": "تم تخطي Dovecot (غير مثبت أو أن doveconf غير متوفر)."
3758
+ "dovecotSkipped": "تم تخطي Dovecot (غير مثبت أو أن doveconf غير متوفر).",
3759
+ "dovecotSslOmitted": "شهادة البريد مفقودة؛ كتب ssl=no حتى يتمكن Dovecot من البدء بدون ملفات LE."
3126
3760
  },
3127
3761
  "policyApplySystemHint": "حدد \"تطبيق على النظام\" لكتابة خرائط Postfix/Rspamd وإعادة التحميل؛",
3128
3762
  "rateLimitAppliedNote": "تم تطبيق معدل الصادر بالساعة وعلامة مكافحة البريد العشوائي (عند تشغيل النظام).",
@@ -3161,12 +3795,12 @@
3161
3795
  "deliverabilityDesc": "PTR / DNS / منفذ 25 الشيكات",
3162
3796
  "dnsTodosDesc": "انسخ ثم أضف إلى مضيف DNS الخاص بك",
3163
3797
  "deliverabilityHonesty": "لا يمكن ضبط PTR أو فتح المنفذ 25 لك",
3164
- "warmupSuggest": "暖身建議",
3165
- "writeSsoSkeleton": "寫入 Roundcube SSO 骨架",
3166
- "rateLimitPerHour": "شكرا جزيلا",
3167
- "rateLimitGlobalHint": "全域取各域名最小值",
3168
- "savePolicyWritten": "只寫入控制面",
3169
- "dnsblMultiIp": " IP RBL",
3798
+ "warmupSuggest": "اقتراحات الإحماء",
3799
+ "writeSsoSkeleton": "كتابة هيكل Roundcube SSO",
3800
+ "rateLimitPerHour": "حد الرسائل في الساعة",
3801
+ "rateLimitGlobalHint": "يستخدم العام أدنى حد لكل نطاق",
3802
+ "savePolicyWritten": "يُكتب في مستوى التحكم فقط",
3803
+ "dnsblMultiIp": "RBL متعدد العناوين",
3170
3804
  "webmailTool": "برنامج بريد الويب",
3171
3805
  "webmailToolRoundcube": "المكعب الدائري (افتراضي)",
3172
3806
  "webmailToolSnappy": "SnappyMail (خفيف الوزن)",
@@ -3238,7 +3872,44 @@
3238
3872
  "mailboxEmptyTitle": "لا توجد صناديق بريد حتى الآن",
3239
3873
  "passwordMismatch": "كلمات المرور غير متطابقة",
3240
3874
  "passwordTooShort": "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل",
3241
- "mailboxUpdateNeedField": "قم بتعيين كلمة مرور جديدة أو تغيير الحالة"
3875
+ "mailboxUpdateNeedField": "قم بتعيين كلمة مرور جديدة أو تغيير الحالة",
3876
+ "catchallHint": "الأجزاء المحلية غير المعروفة تذهب إلى صندوق الهدف. مسودة حتى التطبيق.",
3877
+ "queueSearchPh": "ابحث بالمعرّف أو المرسل أو المستلم…",
3878
+ "queueId": "معرّف الطابور",
3879
+ "queueSender": "المرسل",
3880
+ "queueRecipients": "المستلمون",
3881
+ "queueSize": "الحجم",
3882
+ "queueReason": "السبب",
3883
+ "queueActive": "نشط",
3884
+ "queueHeld": "موقوف",
3885
+ "queueDeferred": "مؤجل",
3886
+ "deleteQueueTitle": "حذف هذه الرسالة من الطابور؟",
3887
+ "deleteQueueDesc": "إزالة {{id}} من طابور MTA المحلي. يحتاج YSK_EXECUTE.",
3888
+ "openQueuePage": "فتح طابور البريد",
3889
+ "healthUnchecked": "لم يتم التحقق بعد",
3890
+ "dovecotFailedHint": "Dovecot failed. Open the Software tab for status; if the mail certificate is missing, issue it on the SSL page first.",
3891
+ "domainsListDesc": "مجالات البريد المسجلة على هذا المضيف",
3892
+ "healthChecklist": "قائمة التحقق {{score}}/100",
3893
+ "healthChecklistHint": "درجة القائمة — لم يُفحص DNS / PTR / المنفذ 25 بعد",
3894
+ "healthLiveHint": "درجة الفحص الحي",
3895
+ "installWebmailTitle": "إنشاء مشروع بريد الويب المشترك (التثبيت الأول)",
3896
+ "reinstallWebmailTitle": "إعادة بناء/ترقية مشروع بريد الويب الحالي",
3897
+ "reinstallNeedInstall": "قم بتثبيت بريد الويب أولاً",
3898
+ "dovecotFailedStatus": "الحمامة هي {{status}}. افتح علامة تبويب البرنامج للحصول على ملخص الوحدة.",
3899
+ "mailCertMissing": "لا توجد شهادة لـ {{hosts}}. قم بإصداره على صفحة SSL.",
3900
+ "mailCertPresent": "لقد تم إصدار شهادة بريد بالفعل — وهذه ليست مشكلة فقدان الشهادة.",
3901
+ "webmailNeedCert": "لا توجد شهادة لـ {{host}} — قم بإصدارها على SSL قبل فرض HTTPS.",
3902
+ "flushQueueEmpty": "قائمة الانتظار فارغة",
3903
+ "flushQueueNeedExecute": "يحتاج مسح قائمة الانتظار إلى YSK_EXECUTE (إذن تنفيذ المضيف)",
3904
+ "healthUncheckedHint": "لم يُفحص بعد DNS / PTR / المنفذ 25.",
3905
+ "deliverabilityScore": "حزمة قابلية التسليم",
3906
+ "opendkimNoReload": "OpenDKIM لا يدعم إعادة التحميل — استخدم إعادة التشغيل بعد تغيير المفاتيح أو الجداول.",
3907
+ "opendkimNoReloadTitle": "systemctl reload opendkim غير مدعوم في هذه الحزمة",
3908
+ "tlsRequestLeFor": "Request LE for {{host}}",
3909
+ "deliverabilityChecks": "Checks",
3910
+ "healthPartialScore": "Partial {{n}}/100 (DNS only)",
3911
+ "healthPartialHint": "DNS checklist only — live and blacklist not probed.",
3912
+ "deleteImpact": "{{mailboxes}} mailboxes · {{records}} DNS records · {{aliases}} aliases"
3242
3913
  },
3243
3914
  "errors": {
3244
3915
  "YSK_UNAUTHORIZED": "غير مصرح به",
@@ -3279,7 +3950,9 @@
3279
3950
  "sessionExpired": "انتهت صلاحية الجلسة؛ تسجيل الدخول مرة أخرى",
3280
3951
  "sessionIdle": "مهلة الخمول. تسجيل الدخول مرة أخرى",
3281
3952
  "totpNotEnabled": "لم يتم تمكين 2FA",
3282
- "totpSecretNoDataDir": "تم تشفير سر TOTP ولكن لم يتم تعيين dataDir"
3953
+ "totpSecretNoDataDir": "تم تشفير سر TOTP ولكن لم يتم تعيين dataDir",
3954
+ "mustChangePassword": "يجب تعيين كلمة مرور جديدة قبل المتابعة",
3955
+ "policyNeedsOwn2fa": "قم بتشغيل المصادقة الثنائية لهذا الحساب وقم بالتأكيد باستخدام رمز TOTP قبل طلب المصادقة الثنائية للآخرين"
3283
3956
  },
3284
3957
  "http": {
3285
3958
  "notFoundRoute": "لم يتم العثور على: {{method}} {{path}}",
@@ -3289,7 +3962,8 @@
3289
3962
  "unprocessable": "تم رفض الطلب من قبل الخادم",
3290
3963
  "requestFailed": "فشل الطلب ({{status}})",
3291
3964
  "jsonInvalid": "تنسيق JSON غير صالح",
3292
- "internal": "خطأ داخلي"
3965
+ "internal": "خطأ داخلي",
3966
+ "payloadTooLarge": "نص الطلب كبير جداً"
3293
3967
  },
3294
3968
  "YSK_HOST_BROWSE_SSRF": "تم حظر تصفح المضيف بواسطة سياسة الأمان",
3295
3969
  "YSK_HOST_BROWSE_SESSION": "لم يتم العثور على جلسة استعراض المضيف أو انتهت صلاحيتها",
@@ -3302,11 +3976,11 @@
3302
3976
  "statTotal": "المحظورة تماما",
3303
3977
  "statBanList": "قائمة الحظر",
3304
3978
  "statBoot": "على التمهيد",
3305
- "startedOk": "بدأ Fail2ban",
3979
+ "startedOk": "بدأ fail2ban",
3306
3980
  "startService": "ابدأ الخدمة",
3307
- "notInstalled": "لم يتم تثبيت Fail2ban",
3981
+ "notInstalled": "لم يتم تثبيت fail2ban",
3308
3982
  "toolHintPrefix": "الأدوات الأساسية:",
3309
- "toolHintBody": "Fail2ban = بعد مسح السجلات،",
3983
+ "toolHintBody": "fail2ban = بعد مسح السجلات،",
3310
3984
  "toolHintTemp": "مؤقت",
3311
3985
  "toolHintBody2": "الحظر · لاستخدام الرد على الهجوم",
3312
3986
  "toolHintUfw": "UFW = المنافذ / القواعد الدائمة",
@@ -3323,7 +3997,7 @@
3323
3997
  "banipOk": "تم القيام به",
3324
3998
  "manualBanHint": "كتلة مؤقتة",
3325
3999
  "currentBans": "محظورة حاليا",
3326
- "bannedTableTitle": "عناوين IP المحظورة (عميل Fail2ban المباشر)",
4000
+ "bannedTableTitle": "عناوين IP المحظورة (عميل fail2ban المباشر)",
3327
4001
  "bannedTableDesc": "يحتاج إلى وصول العميل؛ يحتاج إلغاء الحظر إلى YSK_EXECUTE",
3328
4002
  "unbanOk": "غير محظور",
3329
4003
  "unban": "إلغاء الحظر",
@@ -3331,9 +4005,9 @@
3331
4005
  "whitelistAdded": "تمت إضافته إلى القائمة البيضاء",
3332
4006
  "addWhitelistShort": "+القائمة البيضاء",
3333
4007
  "emptyBansTitle": "لا عناوين IP المحظورة",
3334
- "emptyBansDesc": "أو لا يوجد إذن لقراءة Fail2ban-client",
4008
+ "emptyBansDesc": "أو لا يوجد إذن لقراءة fail2ban-client",
3335
4009
  "ignoreipTitle": "تجاهل القائمة البيضاء",
3336
- "ignoreipDesc": "لم يتم حظر عناوين IP مطلقًا (ملف اللوحة + العميل المباشر Fail2ban الاختياري)",
4010
+ "ignoreipDesc": "لم يتم حظر عناوين IP مطلقًا (ملف اللوحة + العميل المباشر fail2ban الاختياري)",
3337
4011
  "addIp": "أضف IP",
3338
4012
  "addWhitelist": "أضف إلى القائمة البيضاء",
3339
4013
  "applyPolicyIgnoreip": "تطبيق السياسة (بما في ذلك التجاهل)",
@@ -3364,19 +4038,44 @@
3364
4038
  "enableJailsHint": "تمكين السجون (حدد ثم قم بالتطبيق):",
3365
4039
  "writtenOnlyMsg": "كتابة ملف اللوحة (غير مطبق على المضيف)",
3366
4040
  "writeOnly": "كتابة ملف اللوحة فقط",
3367
- "appliedOk": "تم تطبيق Fail2ban",
4041
+ "appliedOk": "تم تطبيق fail2ban",
3368
4042
  "applyToSystem": "تنطبق على النظام",
3369
4043
  "systemdTitle": "التحكم بالنظام",
3370
4044
  "enableAndStart": "تمكين والبدء",
3371
4045
  "serviceHint": "لاستخدام الاستجابة للهجوم",
3372
4046
  "serviceHintSuffix": "(يستدعي سجون هذه الصفحة + حدود معدل Nginx؛",
3373
4047
  "actionOk": {
3374
- "enable": "تم تمكين Fail2ban وبدأ",
3375
- "start": "بدأ Fail2ban",
3376
- "reload": "تم إعادة تحميل Fail2ban",
3377
- "restart": "تمت إعادة تشغيل Fail2ban",
3378
- "stop": "توقف Fail2ban"
3379
- }
4048
+ "enable": "تم تمكين fail2ban وبدأ",
4049
+ "start": "بدأ fail2ban",
4050
+ "reload": "تم إعادة تحميل fail2ban",
4051
+ "restart": "تمت إعادة تشغيل fail2ban",
4052
+ "stop": "توقف fail2ban"
4053
+ },
4054
+ "statWhitelist": "القائمة البيضاء",
4055
+ "invalidIp": "أدخل IPv4 أو IPv6 أو CIDR صالحًا.",
4056
+ "whitelistPendingApply": "تم الحفظ في قائمة اللوحة. اضغط على تطبيق السياسة لكتابة jail.local.",
4057
+ "ignoreipFile": "dataDir/fail2ban/ignoreip.txt",
4058
+ "jailsTabHint": "حالة السجون النشطة قم بتشغيل السجون أو إيقاف تشغيلها في علامة التبويب \"السياسة\".",
4059
+ "colJail": "سجن",
4060
+ "colEnabled": "على",
4061
+ "serviceStateLine": "الوحدة {{unit}} · {{state}} · التمهيد {{boot}}",
4062
+ "jail": {
4063
+ "sshd": "SSH القوة الغاشمة",
4064
+ "nginxHttpAuth": "مصادقة Nginx HTTP",
4065
+ "nginxBotsearch": "تحقيقات الماسح الضوئي / الروبوت Nginx",
4066
+ "nginxBadbots": "Nginx يعرف الروبوتات السيئة",
4067
+ "nginxLimitReq": "سجن الحد الأقصى لمعدل Nginx",
4068
+ "postfix": "البريد Postfix القوة الغاشمة",
4069
+ "dovecot": "تسجيل الدخول إلى بريد Dovecot",
4070
+ "recidive": "كرر الجناة"
4071
+ },
4072
+ "cannotBanSelf": "هذا هو المضيف أو عنوان IP لتسجيل الدخول الخاص بك - قم بإضافته إلى تجاهل بدلاً من الحظر",
4073
+ "suggestIgnoreHint": "عناوين IP للمشرف المقترحة (ملف اللوحة فقط حتى تقوم بتطبيق السياسة):",
4074
+ "suggestIgnoreAdd": "إضافة {{ip}}",
4075
+ "whitelistEmptyWarn": "القائمة البيضاء فارغة وقد تحظرك الـ jail. أضف IP الدخول قبل تطبيق ignoreip.",
4076
+ "suggestIgnoreLogin": "IP تسجيل الدخول {{ip}}",
4077
+ "applyIgnoreEmptyWarn": "التطبيق بقائمة بيضاء فارغة يفرّغ ignoreip",
4078
+ "applyIgnoreNeedConfirm": "يعيد كتابة ignoreip للـ jail ويعيد تحميل fail2ban"
3380
4079
  },
3381
4080
  "featurePage": {
3382
4081
  "back": "خلف"
@@ -3674,24 +4373,24 @@
3674
4373
  "shareTorrentFile": "تحميل. تورنت",
3675
4374
  "shareSeedStatus": "حالة البذر",
3676
4375
  "shareBtStats": "حالة بت تورنت",
3677
- "btSeeds": "Seeds",
3678
- "btLeechers": "Leechers",
3679
- "btPeers": "Peers",
4376
+ "btSeeds": "البذور",
4377
+ "btLeechers": "العلق",
4378
+ "btPeers": "أقرانهم",
3680
4379
  "btUploadSpeed": "سرعة التحميل",
3681
4380
  "btDownloadSpeed": "سرعة التحميل",
3682
- "btUploaded": "Uploaded",
3683
- "btDownloaded": "Downloaded",
3684
- "btRatio": "Ratio",
3685
- "btUpdatedAt": "Updated",
4381
+ "btUploaded": "تم الرفع",
4382
+ "btDownloaded": "تم التنزيل",
4383
+ "btRatio": "نسبة",
4384
+ "btUpdatedAt": "تم التحديث",
3686
4385
  "btServerStats": "بذر الخادم",
3687
4386
  "btClientStats": "العميل الخاص بك",
3688
- "btSeeding": "Seeding",
4387
+ "btSeeding": "البذر",
3689
4388
  "btPending": "البذر معلق",
3690
4389
  "btStopped": "توقفت البذور",
3691
4390
  "btError": "خطأ البذور",
3692
4391
  "publicShareMethod": "كيف تريد التحميل؟",
3693
4392
  "publicShareDirect": "تحميل مباشر",
3694
- "publicShareBt": "BitTorrent",
4393
+ "publicShareBt": "بت تورنت",
3695
4394
  "openBtTracker": "افتح برنامج تعقب بي تي",
3696
4395
  "publicShareBtInBrowser": "التحميل في المتصفح (WebTorrent)",
3697
4396
  "publicShareBtProgress": "تم التنزيل {{pct}}% · {{peers}} أقران · ↓ {{down}} · ↑ {{up}}",
@@ -3699,7 +4398,50 @@
3699
4398
  "publicShareBtFailed": "فشل WebTorrent: {{detail}}",
3700
4399
  "publicShareBtNeedMagnet": "لا يوجد URI مغناطيسي لهذه المشاركة",
3701
4400
  "publicShareBtUnsupported": "لا يمكن لهذا المتصفح تشغيل WebTorrent؛ استخدم المغناطيس أو .torrent بدلاً من ذلك",
3702
- "btNone": "—"
4401
+ "btNone": "—",
4402
+ "uploadStatusSkipped": "تم التخطي",
4403
+ "uploadStatusCancelled": "أُلغي",
4404
+ "conflict": {
4405
+ "titleFile": "يوجد عنصر باسم «{{name}}» بالفعل",
4406
+ "titleFolder": "يوجد مجلد باسم «{{name}}» بالفعل",
4407
+ "descFile": "اختر ما تريد فعله. لن يُستبدل شيء قبل اختيار استبدال.",
4408
+ "descFolder": "اختر ما تريد فعله. الدمج يُبقي المجلد الحالي ويكمل محتوياته.",
4409
+ "incoming": "الوارد",
4410
+ "existing": "موجود هنا",
4411
+ "kindFile": "ملف",
4412
+ "kindFolder": "مجلد",
4413
+ "skip": "تخطي",
4414
+ "skipHint": "لا تُضف هذا العنصر",
4415
+ "keepBoth": "الاحتفاظ بكليهما",
4416
+ "keepBothHint": "احفظ الوارد باسم {{name}}",
4417
+ "replace": "استبدال",
4418
+ "replaceHint": "استبدل الملف الحالي. تُحفظ لقطة إصدار إن أمكن.",
4419
+ "replaceFolderHint": "استبدل الملفات التي تحمل الاسم نفسه داخل هذا المجلد. تبقى الملفات الأخرى.",
4420
+ "merge": "دمج",
4421
+ "mergeHint": "أبقِ المجلد الحالي وأضف الملفات الواردة إليه",
4422
+ "applyAll": "تطبيق على بقية تعارضات الأسماء",
4423
+ "applyAllHint": "استخدم هذا الإجراء لبقية عملية الإفلات أو النقل",
4424
+ "cancelRest": "إلغاء الباقي",
4425
+ "progress": "{{current}} من {{total}}",
4426
+ "typeMismatch": "يوجد هنا {{destKind}} باسم «{{name}}». الوارد هو {{incomingKind}}.",
4427
+ "skipped": "تم التخطي",
4428
+ "cancelled": "أُلغي"
4429
+ },
4430
+ "emptyTrashTitle": "سلة المهملات فارغة؟",
4431
+ "emptyTrashDesc": "سيتم حذف كل ملف في سلة المهملات نهائيًا. لا يمكن التراجع عن هذا.",
4432
+ "purgeForeverDesc": "سيتم حذف هذا الملف نهائيًا. لا يمكن التراجع عن هذا.",
4433
+ "webdavReissueUnchanged": "لم يتغير معرف الرمز المميز بعد إعادة الإصدار - ربما لم تستمر عملية الكتابة. حاول ثانية.",
4434
+ "webdavDisableFailed": "يظل WebDAV ممكنًا بعد التعطيل - ربما لم تستمر عملية الكتابة. حاول ثانية.",
4435
+ "dirNamedLikeFile": "(مجلد متبقٍ؛ الاسم يشبه ملفًا)",
4436
+ "webdavAfterEnable": "متاح بعد تفعيل WebDAV وإصدار رمز.",
4437
+ "webdavAlreadyOff": "WebDAV is already off",
4438
+ "deleteMore": " and {{n}} more",
4439
+ "unshareTitle": "Revoke this share?",
4440
+ "unshareDesc": "Revoke the link for {{name}} ({{url}}). The link stops working immediately.",
4441
+ "pillTrash": "{{count}} in trash",
4442
+ "pillSpace": "{{used}} used",
4443
+ "webdavTokenInactive": "Disabled — token #{{id}} is not active",
4444
+ "webdavOffNoToken": "Disabled (no active token)"
3703
4445
  },
3704
4446
  "firewall": {
3705
4447
  "profiles": {
@@ -3732,7 +4474,7 @@
3732
4474
  "notInstalled": "لم يتم تثبيت UFW",
3733
4475
  "toolHintPrefix": "الأدوات الأساسية:",
3734
4476
  "toolHintBody": "UFW = المنافذ / القواعد الدائمة · للرد على الهجوم واستخدام الحظر التلقائي",
3735
- "toolHintFail2ban": "Fail2ban = الحظر المؤقت القائم على السجل",
4477
+ "toolHintfail2ban": "fail2ban = الحظر المؤقت القائم على السجل",
3736
4478
  "executeOffHint": "تم إيقاف تغييرات النظام — الحالة قابلة للقراءة؛",
3737
4479
  "tabs": {
3738
4480
  "rules": "قواعد",
@@ -3740,7 +4482,7 @@
3740
4482
  "deny": "رفض IP الدائم",
3741
4483
  "profiles": "الملفات الشخصية",
3742
4484
  "about": "عن",
3743
- "services": "Services"
4485
+ "services": "خدمات"
3744
4486
  },
3745
4487
  "currentRules": "القواعد الحالية",
3746
4488
  "rulesSourceHint": "قواعد مرقمة UFW (حالة ufw مرقمة)",
@@ -3770,14 +4512,14 @@
3770
4512
  "allowThisPort": "السماح بهذا المنفذ",
3771
4513
  "allowPortHint": "احتفظ بـ 22/80/443 لمضيف الويب؛",
3772
4514
  "denyTitle": "رفض IP الدائم",
3773
- "denySub": "UFW DENY · يختلف عن الحظر المؤقت لـ Fail2ban",
4515
+ "denySub": "UFW DENY · يختلف عن الحظر المؤقت لـ fail2ban",
3774
4516
  "denyPlaceholder": "IPv4 أو IPv6 للرفض",
3775
4517
  "deniedOk": "مرفوض نهائيا",
3776
4518
  "removedDeny": "تمت إزالة DENY",
3777
4519
  "remove": "يزيل",
3778
4520
  "noDenyRules": "لا توجد قواعد رفض IP دائمة",
3779
4521
  "oneClickProfiles": "ملفات تعريف بنقرة واحدة",
3780
- "oneClickDesc": "اكتب البرنامج النصي للوحة وقم بتطبيق UFW (لا يتم تثبيت Fail2ban - استخدم صفحة Fail2ban)",
4522
+ "oneClickDesc": "اكتب البرنامج النصي للوحة وقم بتطبيق UFW (لا يتم تثبيت fail2ban - استخدم صفحة fail2ban)",
3781
4523
  "customApply": "تطبيق مخصص",
3782
4524
  "allowSmtp": "السماح بمنافذ SMTP/IMAP",
3783
4525
  "extraTcp": "منافذ TCP إضافية",
@@ -3796,12 +4538,21 @@
3796
4538
  "servicesEmptyDesc": "ابدأ خدمة مُدارة (الويب، FTPS، VPN، DB...) لملء هذه القائمة.",
3797
4539
  "servicesManualHint": "توجد شرائح المنافذ اليدوية ضمن علامة التبويب \"المنافذ\" - تفضل إدارة الوصول هنا حتى تظل القواعد مميزة (ysk-svc).",
3798
4540
  "portsManualHint": "القواعد اليدوية المتقدمة تفضل علامة التبويب \"الخدمات\" للبرامج المُدارة.",
3799
- "colService": "Service",
3800
- "colMode": "Mode",
3801
- "colPorts": "Ports",
3802
- "colSync": "Status",
3803
- "synced": "Synced",
3804
- "syncNow": "Sync"
4541
+ "colService": "خدمة",
4542
+ "colMode": "وضع",
4543
+ "colPorts": "الموانئ",
4544
+ "colSync": "حالة",
4545
+ "synced": "تمت المزامنة",
4546
+ "syncNow": "مزامنة",
4547
+ "disableConfirmTitle": "تعطيل UFW؟",
4548
+ "disableConfirmDesc": "سيتوقف جدار حماية المضيف عن تصفية الحركة. على شبكة عامة قد يتعرض SSH واللوحة.",
4549
+ "disableConfirmConsequence": "تبقى قواعد السماح/الرفض مخزّنة لكنها لا تُفرض حتى إعادة تفعيل UFW.",
4550
+ "toolHintFail2ban": "Fail2ban = الحظر المؤقت القائم على السجل",
4551
+ "servicesUfwOff": "UFW معطل. هذه القائمة هي التعرض المطلوب، وليست القواعد التي يفرضها المضيف.",
4552
+ "desiredOnlyUfwOff": "المطلوب: {{mode}} · إيقاف UFW (غير مطبق)",
4553
+ "syncNotApplied": "UFW متوقف · لم يتم تطبيقه",
4554
+ "defaultNotApplied": "غير متوفر (إيقاف تشغيل UFW)",
4555
+ "ufwOffHint": "لا يتم تطبيق الوارد الافتراضي أثناء إيقاف تشغيل UFW"
3805
4556
  },
3806
4557
  "ftp": {
3807
4558
  "title": "حسابات اف تي بي اس",
@@ -3936,7 +4687,38 @@
3936
4687
  "sftpRegister": "مفتاح التسجيل",
3937
4688
  "sftpAddedAt": "تمت الإضافة {{time}}",
3938
4689
  "sftpTechSummary": "التفاصيل الفنية (متقدمة)",
3939
- "sftpTechNote": "تتم كتابة المفاتيح ضمن المسار المُدار"
4690
+ "sftpTechNote": "تتم كتابة المفاتيح ضمن المسار المُدار",
4691
+ "filterProject": "عرض حسابات FTP لهذا المشروع فقط",
4692
+ "clearProjectFilter": "عرض كل الحسابات",
4693
+ "vsftpdFailedHint": "فشل vsftpd. افتح علامة التبويب \"الخدمة\" (لا يمكن للاستماع وlisten_ipv6 أن يكونا نعم).",
4694
+ "tabService": "خدمة",
4695
+ "listenConflictLive": "يحتوي Live vsftpd.conf على استمع={{v4}} وlisten_ipv6={{v6}} — سيفشل كلاهما YES في البدء.",
4696
+ "listenConflictNeedFix": "أصلح الاستماع / استمع_ipv6 أولاً (لا يمكن أن يكون كلاهما نعم)، ثم قم بالتطبيق.",
4697
+ "fixListenIpv4": "استخدم IPv4 فقط (استمع=نعم، استمع_ipv6=لا)",
4698
+ "liveFileValue": "الملف الآن: {{value}}",
4699
+ "startBlockedFailed": "فشلت الخدمة — قم بتطبيق تكوين صالح قبل البدء",
4700
+ "ftpsNeedCert": "اختر مجال الشهادة أولاً",
4701
+ "detectPublicIp": "كشف IP العام",
4702
+ "detectPublicIpTitle": "املأ أول IPv4 غير الاسترجاعي من هذا المضيف",
4703
+ "pasvIpRequired": "عيّن IP عام لـ PASV قبل التطبيق (NAT/سحابة). اكتشف أو اكتب عنواناً.",
4704
+ "vsftpdFailedGeneric": "vsftpd failed. Open the Service tab for live settings and journal.",
4705
+ "stateFailed": "Failed to start",
4706
+ "plaintextInsecure": "Cleartext FTP (no TLS) — insecure. Enable FTPS before exposing port 21.",
4707
+ "plaintextPublicLive": "vsftpd is listening on a public address without FTPS. Credentials travel in the clear. Enable FTPS, bind to this host only, or confirm PLAINTEXT to keep this posture.",
4708
+ "bindAddress": "Listen scope",
4709
+ "bindAddressHint": "New installs bind to this host only. Public listen without FTPS needs a typed confirmation.",
4710
+ "bindLocal": "This host only",
4711
+ "bindLocalHint": "127.0.0.1 — fine without TLS for local tests",
4712
+ "bindPublic": "Public",
4713
+ "bindPublicHint": "All interfaces — enable FTPS or confirm PLAINTEXT",
4714
+ "enableFtpsAndStart": "Enable FTPS and start",
4715
+ "publicPlainNeedConfirm": "Public cleartext FTP needs a PLAINTEXT confirmation",
4716
+ "plainConfirmTitle": "Start public FTP without FTPS?",
4717
+ "plainConfirmDesc": "Port 21 will accept logins and data in the clear on the public address.",
4718
+ "plainConfirmC1": "Usernames and passwords are visible on the network.",
4719
+ "plainConfirmC2": "PASV will advertise the configured public IP.",
4720
+ "plainConfirmC3": "Host firewall and cloud security group are not opened for you.",
4721
+ "plainConfirmAction": "Start cleartext FTP"
3940
4722
  },
3941
4723
  "geo": {
3942
4724
  "continents": {
@@ -4181,26 +4963,26 @@
4181
4963
  "mediaNote": "متصفح حقيقي: يتم بث الفيديو؛ لم يتم بعد توصيل الصوت إلى اللوحة (المرحلة 2).",
4182
4964
  "isolationNote": "يقوم المتصفح الحقيقي بإنشاء مستخدم Linux سريع الزوال لمتصفح Chrome؛ يؤدي ترك الصفحة أو انتهاء مهلة الخمول إلى تدمير هذا المستخدم.",
4183
4965
  "resumeHint": "استئناف الجلسة السابقة ({{count}} علامات التبويب)",
4184
- "resume": "Resume",
4185
- "resumeDismiss": "Dismiss",
4966
+ "resume": "سيرة ذاتية",
4967
+ "resumeDismiss": "رفض",
4186
4968
  "resumeDone": "تم استئناف الجلسة",
4187
4969
  "settingsSafety": "سلامة الملاحة",
4188
4970
  "settingsSafetyHint": "حظر صارم للمضيفين الأكثر خطورة؛ يسمح الاسترخاء بأهداف إنترانت أوسع. لا يقوم بتعطيل حماية SSRF للبيانات التعريفية السحابية.",
4189
- "safetyStrict": "Strict",
4190
- "safetyStandard": "Standard",
4191
- "safetyRelaxed": "Relaxed",
4971
+ "safetyStrict": "حازم",
4972
+ "safetyStandard": "معيار",
4973
+ "safetyRelaxed": "استرخاء",
4192
4974
  "settingsBlockHosts": "لاحقات المضيف المحظورة",
4193
4975
  "settingsBlockHostsHint": "اسم مضيف واحد أو لاحقة واحدة لكل سطر (على سبيل المثال، Malware.test). يتم حظر التطابقات التامة واللاحقة.",
4194
4976
  "settingsAllowDangerousDownloads": "السماح بالتنزيلات عالية المخاطر (exe / البرامج النصية)",
4195
4977
  "settingsAudioBridge": "قم بتوصيل صوت الصفحة إلى اللوحة",
4196
4978
  "settingsAudioBridgeHint": "تستضيف التدفقات صوت Chrome في هذا المتصفح. تحتاج بعض المواقع إلى نقرة لفتح التشغيل.",
4197
- "downloads": "Downloads",
4979
+ "downloads": "التنزيلات",
4198
4980
  "downloadsEmpty": "لا توجد تنزيلات في هذه الجلسة",
4199
- "downloadReady": "Ready",
4200
- "downloadBlocked": "Blocked",
4201
- "downloadPending": "Pending",
4202
- "downloadFailed": "Failed",
4203
- "downloadSave": "Save",
4981
+ "downloadReady": "مستعد",
4982
+ "downloadBlocked": "محظور",
4983
+ "downloadPending": "قيد الانتظار",
4984
+ "downloadFailed": "فشل",
4985
+ "downloadSave": "يحفظ",
4204
4986
  "audioUnlock": "تمكين الصوت",
4205
4987
  "audioUnlockHint": "انقر لفتح تشغيل الصوت في علامة التبويب هذه",
4206
4988
  "audioUnlocked": "تم فتح الصوت",
@@ -4210,12 +4992,34 @@
4210
4992
  "audioNotBridged": "إيقاف الصوت",
4211
4993
  "audioNotBridgedHint": "قم بتشغيل الجسر الصوتي في الإعدادات لسماع الصفحة",
4212
4994
  "mediaPolicyTitle": "الوسائط في متصفح حقيقي",
4213
- "mediaVideoLabel": "Video",
4995
+ "mediaVideoLabel": "فيديو",
4214
4996
  "mediaVideoDesc": "يتم عرضه على المضيف وبثه كإطارات في اللوحة.",
4215
- "mediaAudioLabel": "Audio",
4997
+ "mediaAudioLabel": "صوتي",
4216
4998
  "mediaAudioDesc": "جسر اختياري من المضيف Chrome؛ قد يتطلب فتح النقر.",
4217
- "mediaPolicyLabel": "Policy",
4218
- "mediaPolicyDesc": "تتبع التنزيلات والتشغيل التلقائي إعدادات الأمان والتنزيل المذكورة أعلاه."
4999
+ "mediaPolicyLabel": "سياسة",
5000
+ "mediaPolicyDesc": "تتبع التنزيلات والتشغيل التلقائي إعدادات الأمان والتنزيل المذكورة أعلاه.",
5001
+ "frameBlocked": "لا يمكن عرض الصفحة في إطار اللوحة.",
5002
+ "historyEmpty": "لا يوجد سجل في هذه الجلسة.",
5003
+ "bookmarksEmpty": "لا توجد إشارات مرجعية حتى الآن.",
5004
+ "closeSessionHint": "مسح ملفات تعريف الارتباط لجلسة التصفح هذه. تبقى الإشارات المرجعية.",
5005
+ "bookmarkAdd": "إضافة أو إزالة الإشارة المرجعية",
5006
+ "bookmarkList": "قائمة الإشارات المرجعية",
5007
+ "envUnset": "لم يتم ضبطه",
5008
+ "envPanelValue": "لوحة: {{value}}",
5009
+ "settingsNoSandboxWarn": "تعطيل وضع حماية Chromium. استخدم فقط داخل حاوية موثوقة. ينطبق على جلسة المتصفح الحقيقي التالية.",
5010
+ "settingsDangerDlWarn": "يسمح بالتنزيلات القابلة للتنفيذ والبرنامج النصي من خلال المتصفح المضيف. تأكيد أنك بحاجة إلى هذا.",
5011
+ "settingsDangerConfirmTitle": "هل تريد تمكين إعداد التصفح عالي الخطورة؟",
5012
+ "needUrl": "أدخل عنوان URL أعلاه لبدء الجلسة.",
5013
+ "envColVar": "المتغير",
5014
+ "envColHost": "عملية المضيف",
5015
+ "envColPanel": "إعداد اللوحة",
5016
+ "envColEffective": "الفعّال",
5017
+ "engineBrowserNeedChrome": "Real browser (Chrome not installed)",
5018
+ "egressHint": "The target site sees this server’s outbound address ({{host}}), not your laptop. Cookies stay in the server session jar.",
5019
+ "closeNoSession": "No session yet",
5020
+ "resumeHintDetail": "Resume previous session ({{count}} tabs) · {{url}} · {{when}}",
5021
+ "resumeHintOwned": "Resume last browse for {{user}} ({{count}} tabs) · {{url}} · {{when}}",
5022
+ "clearSessionData": "Clear session data"
4219
5023
  },
4220
5024
  "listToolbar": {
4221
5025
  "searchPlaceholder": "يبحث…",
@@ -4227,24 +5031,30 @@
4227
5031
  "activeFilters": "{{count}} المرشحات نشطة",
4228
5032
  "noResults": "لا توجد مباريات",
4229
5033
  "noResultsHint": "جرّب كلمة رئيسية أخرى أو امسح عوامل التصفية.",
4230
- "searching": "البحث…"
5034
+ "searching": "البحث…",
5035
+ "emptyChip": "No items in this filter"
4231
5036
  },
4232
5037
  "logViewer": {
4233
5038
  "banIpTitle": "حظر {{ip}} في الحماية"
4234
5039
  },
4235
5040
  "login": {
4236
- "title": "قم بتسجيل الدخول إلى خادم YSK",
5041
+ "title": "تسجيل الدخول إلى YSK Server",
4237
5042
  "subtitle": "وحدة تحكم الخادم",
4238
5043
  "username": "اسم المستخدم",
4239
5044
  "password": "كلمة المرور",
4240
5045
  "submit": "تسجيل الدخول",
4241
- "failed": "فشل تسجيل الدخول. التحقق من اسم المستخدم أو كلمة المرور.",
4242
- "footer": "أحد منتجات شركة YSK المحدودة",
4243
- "totpRequired": "تم تمكين المصادقة الثنائية (2FA) لهذا الحساب. أدخل الرمز المكون من 6 أرقام.",
5046
+ "failed": "فشل تسجيل الدخول. تحقق من اسم المستخدم أو كلمة المرور.",
5047
+ "footer": "منتج من YSK Limited",
5048
+ "totpRequired": "المصادقة الثنائية مفعّلة لهذا الحساب. أدخل الرمز المكوّن من 6 أرقام.",
4244
5049
  "totpLabel": "رمز المصادقة",
4245
- "totpHint": "رمز مكون من 6 أرقام من تطبيق المصادقة الخاص بك",
4246
- "submitting": "تسجيل الدخول...",
4247
- "sessionExpired": "انتهت صلاحية الجلسة؛ تسجيل الدخول مرة أخرى"
5050
+ "totpHint": "رمز من 6 أرقام من تطبيق المصادقة",
5051
+ "submitting": "جارٍ تسجيل الدخول…",
5052
+ "sessionExpired": "انتهت الجلسة؛ سجّل الدخول مرة أخرى",
5053
+ "newPassword": "كلمة المرور الجديدة",
5054
+ "newPasswordAgain": "تأكيد كلمة المرور الجديدة",
5055
+ "changePassword": "تغيير كلمة المرور",
5056
+ "passwordMismatch": "كلمتا المرور غير متطابقتين",
5057
+ "passwordChanged": "تم تحديث كلمة المرور"
4248
5058
  },
4249
5059
  "logs": {
4250
5060
  "catSystem": "ملفات النظام",
@@ -4371,7 +5181,7 @@
4371
5181
  "logrotateLabel": "com.logrotate",
4372
5182
  "srcNginx": "nginx",
4373
5183
  "srcSsh": "سش",
4374
- "srcFail2ban": "Fail2ban",
5184
+ "srcfail2ban": "Fail2ban",
4375
5185
  "srcAuthLog": "auth.log",
4376
5186
  "srcNginxError": "خطأ إنجينكس",
4377
5187
  "srcLetsEncrypt": "com.letsencrypt",
@@ -4379,7 +5189,36 @@
4379
5189
  "groupVarLog": "/var/log",
4380
5190
  "prioErr": "يخطئ+",
4381
5191
  "prioWarn": "تحذير+",
4382
- "prioInfo": "معلومات+"
5192
+ "prioInfo": "معلومات+",
5193
+ "srcFail2ban": "Fail2ban",
5194
+ "vacuumSize": "الحد إلى 500 ميجابايت",
5195
+ "logrotateNoStatus": "لا يوجد ملف حالة تسجيل حتى الآن (طبيعي إذا لم يتم تشغيله مطلقًا).",
5196
+ "autoVacuumOff": "التنظيف التلقائي معطل. الوقت غير مستخدم حتى تقوم بتمكينه.",
5197
+ "aboutAllowlist": "يمكن للاستكشاف قراءة وحدات اليومية المدرجة في القائمة المسموح بها ومسارات /var/log فقط. لا يتم تقديم مسارات المضيف التعسفية.",
5198
+ "aboutCustomPath": "أضف مسارًا مخصصًا في الإعدادات (فقط /var/log أو /run/log). ثم افتحه من الاستكشاف.",
5199
+ "noRowsInWindow": "لا توجد سجلات في هذه النافذة الزمنية",
5200
+ "showInactiveUnits": "إظهار الوحدات غير النشطة",
5201
+ "sseNeedFollow": "قم بتشغيل \"المتابعة أولاً\" - SSE مخصص فقط للبث المباشر",
5202
+ "vacuumNeedRetention": "أدخل أولاً نافذة الاحتفاظ (مثل 14d)",
5203
+ "vacuumNeedConfirm": "يحتاج تأكيدًا — يحذف سجلات journal القديمة",
5204
+ "vacuumSizeNeedConfirm": "يحتاج تأكيدًا — يحد استخدام قرص journal",
5205
+ "vacuumSizeAlreadyBelow": "الاستخدام الحالي دون الحد؛ عادة لا يُحذف شيء.",
5206
+ "vacuumSizeNoopDesc": "journal أصلاً دون 500 م.ب. سيُشغَّل vacuum --size=500M ولن يُحذف شيء عادةً.",
5207
+ "journalDiskHint": "استخدام systemd-journald الحالي (journal النشط). لا يشمل الملفات المدوّرة تحت /var/log.",
5208
+ "varLogDiskHint": "تقدير /var/log بما فيه الملفات المدوّرة.",
5209
+ "queryFirst": "استعلم أولاً",
5210
+ "projectSourcesTitle": "{{n}} مصدرًا (ملفات + journal)",
5211
+ "logrotatePath": "طريق",
5212
+ "logrotateLast": "تم تدويره أخيرًا",
5213
+ "logrotateExpand": "عرض {{n}} المزيد",
5214
+ "logrotateCollapse": "عرض أقل",
5215
+ "logrotateVersion": "نسخة الحالة {{v}}",
5216
+ "errorsWindowHint": "Recent errors from the last overview probe (not live-updating when you switch tabs)",
5217
+ "sourceCount": "{{shown}} shown",
5218
+ "sourceUnavailable": "This source has not produced a log yet",
5219
+ "sourceNoLog": "No log yet",
5220
+ "exportJsonl": "JSONL export",
5221
+ "sseLive": " (live stream)"
4383
5222
  },
4384
5223
  "metrics": {
4385
5224
  "alert": {
@@ -4511,7 +5350,42 @@
4511
5350
  "usageNoteFull": "الاستخدام من du المحلي (غير مقدر). الحصة هي حد بسيط لمستوى التحكم؛ تحتاج الحصة المحددة الصعبة إلى التقديم على المضيف.",
4512
5351
  "sseNeedLogin": "لم يتم تسجيل الدخول؛ لا يمكن فتح SSE",
4513
5352
  "sseSessionExpired": "لم يتم تسجيل الدخول أو انتهت صلاحية الجلسة؛ لا يمكن فتح SSE",
4514
- "sseHttpError": "تيار HTTP {{status}}"
5353
+ "sseHttpError": "تيار HTTP {{status}}",
5354
+ "colFilesystem": "نظام الملفات",
5355
+ "colMount": "جبل",
5356
+ "colSize": "مقاس",
5357
+ "colUsed": "مستخدم",
5358
+ "colAvail": "متاح",
5359
+ "colUsePct": "مستخدم ٪",
5360
+ "colHome": "بيت",
5361
+ "usageNoteLink": "الحصص الناعمة لطائرة التحكم. قم بتطبيق الحدود الصارمة على علامة تبويب عزل المشروع.",
5362
+ "alertsBuiltinOnly": "عتبات وحدة المعالجة المركزية/الذاكرة/القرص المدمجة فقط. لا يوجد بريد إلكتروني أو خطاف ويب أو قناة Slack.",
5363
+ "lastEvaluated": "آخر فحص",
5364
+ "shareNoQuotaHint": "بلا حصة لا تكون النسبة مئوية. عيّنها في تبويب عزل المشروع.",
5365
+ "setQuotaLink": "تعيين الحصة",
5366
+ "unusualHome": "مسار غير معتاد",
5367
+ "unusualHomeHint": "ليس /الوطن/... مشروع الوطن. العزلة الأساسية هي /home/ysk-server-{id}.",
5368
+ "protectedPid": "لا يمكن الإشارة إلى PID 1 / init / systemd من اللوحة",
5369
+ "sigTermTitle": "أرسل SIGTERM (اطلب من العملية الخروج)",
5370
+ "sigKillTitle": "إرسال SIGKILL (القتل القسري - لا يمكن القبض عليه)",
5371
+ "batchTerm": "TERM",
5372
+ "batchKill": "KILL",
5373
+ "rawTopLabel": "قمة الخام (غير مترجم)",
5374
+ "followSseLabel": "متابعة (بث مباشر)",
5375
+ "alertsReadOnly": "عتبات وحدة المعالجة المركزية/الذاكرة/القرص المدمجة فقط. لا يوجد بريد إلكتروني أو خطاف ويب أو قناة Slack.",
5376
+ "alertsGoNotifications": "فتح مركز الإخطار",
5377
+ "lastCheck": "الاختيار الأخير",
5378
+ "rawTopHint": "إخراج أعلى (1) غير مترجم",
5379
+ "load1m": "Load 1m",
5380
+ "uptime": "Uptime",
5381
+ "filterCpu5": "≥5% CPU",
5382
+ "filterMem5": "≥5% memory",
5383
+ "signalHint": "Select a process, then send TERM or KILL.",
5384
+ "signalFromRow": "Select this process for TERM / KILL",
5385
+ "selectForSignal": "Select",
5386
+ "forceKillTitleNamed": "KILL PID {{pid}} ({{cmd}})?",
5387
+ "sendSigTitleNamed": "Send TERM to PID {{pid}} ({{cmd}})?",
5388
+ "controlPlaneNoSignal": "The control-plane process cannot be signalled"
4515
5389
  },
4516
5390
  "migrate": {
4517
5391
  "tabInventory": "جرد",
@@ -4593,7 +5467,33 @@
4593
5467
  "dryRunOnlyDesc": "· الجرد + الفحص المسبق فقط؛ لا يوجد rsync أو يكتب الهدف",
4594
5468
  "executeNote": "يحتاج المضيف إلى YSK_EXECUTE=1 وواجهة برمجة تطبيقات الجذر. بعد الترحيل، قم بتحديث DNS A/AAAA وتحقق من جدار الحماية السحابي + البريد PTR.",
4595
5469
  "dnsCutover": "قطع DNS (يدويًا)",
4596
- "dnsCutoverDesc": "أشر إلى A/AAAA لهذه الأسماء إلى عنوان IP العام الجديد؛"
5470
+ "dnsCutoverDesc": "أشر إلى A/AAAA لهذه الأسماء إلى عنوان IP العام الجديد؛",
5471
+ "orphanHomesHint": "منازل المشروع المتبقية (وليس في المتجر). قم بالإزالة فقط بعد التأكد من عدم استخدامها.",
5472
+ "orphanRemove": "إزالة بقايا المنزل",
5473
+ "orphanRemoveTitle": "هل تريد حذف المشروع المتبقي في المنزل؟",
5474
+ "orphanRemoveDesc": "حذف {{path}} نهائيًا من القرص. هذا ليس مشروع متجر. يحتاج YSK_EXECUTE=1.",
5475
+ "orphanRemovePhrase": "اكتب DELETE للتأكيد.",
5476
+ "orphanRemoveNeedConfirm": "يلزم التأكيد",
5477
+ "passwordNotStored": "Password is used for this SSH session only and is not saved on disk.",
5478
+ "overwriteDanger": "Overwrite will replace existing YSK data on the target. This cannot be undone from the panel.",
5479
+ "orphanBackupFirst": "Back up first (open Backups)",
5480
+ "expandAllWarnings": "Show all {{n}} warnings",
5481
+ "collapseWarnings": "Show fewer",
5482
+ "inventoriedWarn": "Inventoried · {{n}} warnings",
5483
+ "orphanMtime": "Last modified {{at}}",
5484
+ "inventoriedOrphans": "Inventoried · {{n}} leftover homes",
5485
+ "inventoriedWarnAndOrphans": "Inventoried · {{w}} warnings · {{n}} leftover",
5486
+ "orphanHomesTitle": "Leftover project homes ({{count}})",
5487
+ "orphanHomesSummary": "{{count}} path(s) on disk are not in the store. Back up first if unsure, then remove unused paths.",
5488
+ "orphanColHome": "Home",
5489
+ "orphanColModified": "Modified",
5490
+ "orphanKpi": "Leftover",
5491
+ "sourceOs": "OS",
5492
+ "sourceDataDir": "dataDir",
5493
+ "sourceDbRedis": "Databases / Redis",
5494
+ "sourceDbRedisValue": "{{db}} databases · {{redis}} Redis",
5495
+ "orphanColEntries": "Entries",
5496
+ "orphanEntries": "{{n}} top-level entries in the directory"
4597
5497
  },
4598
5498
  "multiCheck": {
4599
5499
  "customPlaceholder": "رمز مخصص",
@@ -4648,7 +5548,7 @@
4648
5548
  "rust": "Rust",
4649
5549
  "protection": "مركز الدفاع",
4650
5550
  "firewall": "جدار الحماية",
4651
- "fail2ban": "Fail2ban",
5551
+ "fail2ban": "fail2ban",
4652
5552
  "users": "المستخدمون والحزم",
4653
5553
  "services": "خدمات",
4654
5554
  "metrics": "المقاييس",
@@ -4670,7 +5570,9 @@
4670
5570
  "runtimes": "أوقات التشغيل",
4671
5571
  "security": "حماية",
4672
5572
  "system": "نظام",
4673
- "ai": "AI"
5573
+ "ai": "AI",
5574
+ "validators": "المدققون",
5575
+ "containers": "الحاويات"
4674
5576
  },
4675
5577
  "java": "Java",
4676
5578
  "kotlin": "Kotlin",
@@ -4689,8 +5591,13 @@
4689
5591
  "bookmarkPinned": "مثبت",
4690
5592
  "bookmarkAdded": "مثبت في الشريط الجانبي",
4691
5593
  "bookmarkRemoved": "تمت الإزالة من الشريط الجانبي",
4692
- "btTracker": "جهاز تعقب بي تي",
4693
- "support": "Support"
5594
+ "btTracker": "BT Tracker",
5595
+ "support": "يدعم",
5596
+ "noAccessTitle": "لا صلاحية",
5597
+ "noAccessDesc": "دورك لا يشمل هذه الصفحة. اطلب من مسؤول إن احتجت إليها.",
5598
+ "backToDashboard": "العودة إلى لوحة المعلومات",
5599
+ "validators": "المدققون (Beta)",
5600
+ "docker": "عامل ميناء"
4694
5601
  },
4695
5602
  "network": {
4696
5603
  "title": "واجهات الشبكة",
@@ -4829,10 +5736,35 @@
4829
5736
  "azure_frontdoor": "أزور الباب الأمامي",
4830
5737
  "gcore": "جيكور CDN",
4831
5738
  "custom": "وكلاء مخصصون"
4832
- }
5739
+ },
5740
+ "needProvider": "اختر موفر CDN قبل جلب قائمة IP الخاصة به.",
5741
+ "spoofWarn": "تتيح الثقة في CIDR الخاطئة للعملاء انتحال رؤوس X-Forwarded-For / CDN باعتبارها عنوان IP الخاص بهم."
4833
5742
  },
4834
5743
  "linkUp": "أعلى",
4835
- "linkDown": "تحت"
5744
+ "linkDown": "تحت",
5745
+ "linkDownTitle": "خذ {{name}} دون اتصال بالإنترنت",
5746
+ "linkDownNeedConfirm": "اكتب اسم الواجهة للتأكيد",
5747
+ "persistNmHint": "تعني كلمة \"استمرار\" أن التغييرات يمكن أن تستمر أثناء إعادة التشغيل عبر NetworkManager.",
5748
+ "hideRaw": "إخفاء الإخراج الخام",
5749
+ "rawLoadedAt": "تم التحميل {{time}}",
5750
+ "deleteDefaultPanelWarn": "يمكن أن يؤدي حذف المسار الافتراضي إلى إسقاط جلسة اللوحة هذه. اكتب الافتراضي للتأكيد.",
5751
+ "typeDefaultToConfirm": "اكتب الافتراضي للتأكيد",
5752
+ "deleteDefaultNeedConfirm": "يلزم التأكيد — اكتب DEFAULT (قد يقطع هذا اللوحة)",
5753
+ "deleteRouteNeedConfirm": "يلزم التأكيد",
5754
+ "nmUnavailable": "NetworkManager ليس قيد التشغيل — يمكن إضافة مسار مباشر فقط",
5755
+ "defaultRouteDownNeedName": "هذا هو مسار الخروج الافتراضي. اكتب اسم الواجهة للتأكيد — قد يتم قطع اتصال اللوحة.",
5756
+ "linkDownDefault": "Down default route",
5757
+ "loopbackImmutable": "Loopback cannot be changed",
5758
+ "operUnknownHint": "Kernel did not report UP/DOWN (common for lo). The interface is still usable.",
5759
+ "statUp": "Up",
5760
+ "oper": {
5761
+ "up": "Up",
5762
+ "down": "Down",
5763
+ "unknown": "Unknown",
5764
+ "other": "Other",
5765
+ "loopback": "Always on",
5766
+ "loopbackHint": "Loopback is always available and cannot be changed."
5767
+ }
4836
5768
  },
4837
5769
  "nginx": {
4838
5770
  "pillSites": "{{count}} موقع (مواقع)",
@@ -4916,7 +5848,16 @@
4916
5848
  "setHsts": "HSTS",
4917
5849
  "setCfRealIp": "Cloudflare ريال IP",
4918
5850
  "setIndexes": "قائمة الدليل",
4919
- "bodyInherit": "عالمي"
5851
+ "bodyInherit": "عالمي",
5852
+ "stopSites": "{{n}} site(s) will stop answering HTTP.",
5853
+ "purgeCacheTitle": "Purge Nginx cache and reload?",
5854
+ "purgeCacheDesc": "Clears the on-disk cache and reloads Nginx. Live sites stay up."
5855
+ },
5856
+ "notFound": {
5857
+ "title": "لم يتم العثور على الصفحة",
5858
+ "body": "لا توجد صفحة لوحة في {{path}}.",
5859
+ "hint": "لم تعد عناوين URL غير المعروفة ترسلك إلى لوحة المعلومات.",
5860
+ "home": "لوحة القيادة"
4920
5861
  },
4921
5862
  "notes": {
4922
5863
  "notFound": "لم يتم العثور عليه",
@@ -4950,19 +5891,53 @@
4950
5891
  },
4951
5892
  "ssh": {
4952
5893
  "identityNotFound": "لم يتم العثور على الهوية",
4953
- "registrationNotFound": "لم يتم العثور على التسجيل"
5894
+ "registrationNotFound": "لم يتم العثور على التسجيل",
5895
+ "keyOkNologin": "Key accepted. Account has no login shell (nologin) — use SFTP. Treated as PASS.",
5896
+ "keyOkSftp": "نجح SFTP pwd بعد رفض قذيفة SSH."
4954
5897
  },
4955
5898
  "cdn": {
4956
5899
  "siteNotFound": "لم يتم العثور على موقع CDN",
4957
- "nodeMissing": "العقدة غير موجودة"
5900
+ "nodeMissing": "العقدة غير موجودة",
5901
+ "probe": {
5902
+ "timeout": "مهلة الاتصال بعد {{ms}} مللي ثانية ({{detail}}). قد يكون النظير محميًا بجدار الحماية.",
5903
+ "dns": "فشل بحث DNS ({{detail}}).",
5904
+ "refused": "تم رفض الاتصال بعد {{ms}} مللي ثانية ({{detail}}). المنفذ مغلق أو محظور في اتجاه واحد.",
5905
+ "tls": "فشل التحقق من TLS ({{detail}}).",
5906
+ "unreach": "يتعذر الوصول إلى المضيف بعد {{ms}} مللي ثانية ({{detail}}).",
5907
+ "http": "فشل مسبار HTTP بعد {{ms}} مللي ثانية ({{detail}})."
5908
+ },
5909
+ "loopbackOriginRemote": "الأصل هو 127.0.0.1 — وهذا هو هذا المضيف، وليس حافة بعيدة. قم بتعيين عنوان IP أصلي يمكن الوصول إليه أو bind_ip.",
5910
+ "needSshOrFleet": "تحتاج الحافة البعيدة إلى هوية SSH صادرة (أو اسم مستخدم) أو جلسة أسطول /agents. URL الصحة وحده لا ينطبق على النقل.",
5911
+ "originRemoteRewrite": "ستستخدم الحواف البعيدة الأصل الذي يمكن الوصول إليه {{url}} بدلاً من الاسترجاع.",
5912
+ "originRemoteUnknown": "الأصل هو استرجاع ولا يوجد عنوان IP عام/LAN أو bind_ip معروف - سيرفض التطبيق الحواف البعيدة حتى يتم تعيينها."
4958
5913
  },
4959
5914
  "backup": {
4960
5915
  "fileNotFound": "لم يتم العثور على ملف النسخ الاحتياطي",
4961
5916
  "resticNoPassword": "تم تمكين Restic ولكن لم يتم تعيين كلمة المرور",
4962
- "resticNotInPath": "ريستيك ليس في PATH"
5917
+ "resticNotInPath": "ريستيك ليس في PATH",
5918
+ "dbEnvUnreadable": "لا يمكن قراءة .db.env؛ تخطي تفريغ SQL.",
5919
+ "dbEnvNoName": ".db.env ليس له اسم قاعدة بيانات؛ تخطي تفريغ SQL.",
5920
+ "targetOutside": "يجب أن يكون هدف الاستعادة داخل منزل المشروع أو جذر الملفات العامة.",
5921
+ "testUnsaved": "اختبار قيم النموذج غير المحفوظة (غير المكتوبة في الإعدادات).",
5922
+ "testIdentity": "ssh (identity) to {{spec}} ok",
5923
+ "sshAuthFailed": "تم رفض مفتاح SSH أو كلمة المرور (المفتاح العام). اختر هوية صادرة أو قم بتثبيت sshpass.",
5924
+ "remotePathIsFile": "المسار البعيد {{path}} هو ملف. استخدم الدليل.",
5925
+ "remoteMkdirFailed": "تعذر إنشاء دليل بعيد: {{detail}}",
5926
+ "sidecarPushed": "تم أيضًا دفع عربة SQL الجانبية {{name}}",
5927
+ "controlPlaneDryRun": "معاينة فقط - لا شيء مكتوب. في اللوحة، استخدم استعادة وتأكيد العبارة المراد كتابتها.",
5928
+ "controlPlaneNeedConfirm": "تحتاج استعادة مستوى التحكم الكامل إلى عبارة التأكيد RESTORE-CONTROL-PLANE.",
5929
+ "controlPlaneRestartAfter": "أعد تشغيل واجهة برمجة التطبيقات (API) بعد الاستعادة الناجحة.",
5930
+ "movedToTrash": "Moved {{name}} to the recycle bin. Permanent delete after {{days}} days.",
5931
+ "restoreNameExists": "Cannot restore {{name}} — a live archive with that name already exists.",
5932
+ "restoredFromTrash": "Restored {{name}} from the recycle bin.",
5933
+ "trashEmptied": "Permanently deleted {{n}} archive(s) from the recycle bin."
4963
5934
  },
4964
5935
  "redis": {
4965
- "cliMissing": "لم يتم تثبيت redis-cli"
5936
+ "cliMissing": "لم يتم تثبيت redis-cli",
5937
+ "requirepassAlreadySet": "Redis already has requirepass — not overwritten.",
5938
+ "requirepassApplied": "requirepass applied at runtime",
5939
+ "requirepassApplyFailed": "Could not CONFIG SET requirepass (will rely on restart + conf)",
5940
+ "generatedRequirepass": "Generated Redis password (shown once): {{password}}"
4966
5941
  },
4967
5942
  "nginx": {
4968
5943
  "reloaded": "تم إعادة تحميل nginx",
@@ -4985,7 +5960,8 @@
4985
5960
  "vsftpdStarted": "بدأ vsftpd",
4986
5961
  "openPortsStep": "منافذ جدار الحماية (يدوية)",
4987
5962
  "openPortsReminder": "افتح منافذ TCP على جدار الحماية المضيف ومجموعة الأمان السحابية: {{ports}}. تطبيق FTPS لا يفتح لك المنافذ.",
4988
- "openPortsPasvHint": "إذا كان تسجيل الدخول يعمل ولكن انتهت مهلة الدليل LIST، فسيتم حظر نطاق بيانات PASV — افتح الملف"
5963
+ "openPortsPasvHint": "إذا كان تسجيل الدخول يعمل ولكن انتهت مهلة الدليل LIST، فسيتم حظر نطاق بيانات PASV — افتح الملف",
5964
+ "publicPlaintextBlocked": "Refusing to start public FTP without FTPS. Bind to this host only, enable FTPS with a certificate, or confirm PLAINTEXT to expose cleartext on the public address."
4989
5965
  },
4990
5966
  "deploy": {
4991
5967
  "nodeMissingIsolated": "العقدة الثنائية مفقودة للنشر المعزول: {{path}} — تثبيت سلسلة أدوات العقدة {{version}} ثم إعادة النشر. رفض كتابة وحدة من شأنها أن 203/EXEC.",
@@ -5003,7 +5979,8 @@
5003
5979
  "pathOutsideSandbox": "المسار خارج صندوق الرمل: {{target}}",
5004
5980
  "notFoundRel": "لم يتم العثور على: {{relPath}}",
5005
5981
  "fileNotFoundRel": "لم يتم العثور على الملف: {{relPath}}",
5006
- "notFoundFrom": "لم يتم العثور على: {{fromPath}}"
5982
+ "notFoundFrom": "لم يتم العثور على: {{fromPath}}",
5983
+ "alreadyExists": "موجود مسبقاً: {{name}}"
5007
5984
  },
5008
5985
  "dns": {
5009
5986
  "needZoneServerIp": "أدخل المنطقة وعنوان IP الخاص بالخادم",
@@ -5039,11 +6016,24 @@
5039
6016
  "applyDigOk": "PowerDNS BIND: مناطق القائمة + حفر موافق",
5040
6017
  "applyDigFail": "المنطقة مسجلة في conf ولكن الحفر لا يزال فارغًا/مرفوضًا - لم يتم وضع علامة عليها",
5041
6018
  "applySyncIncomplete": "مزامنة ربط PowerDNS غير مكتملة - ملف المنطقة موجود على القرص فقط (غير مطبق). إصلاح سجلات EXECUTE/root أو pdns.",
5042
- "writeOnlyHint": "ملف المنطقة مكتوب فقط - لن يجيب PowerDNS حتى يتم تحميل/تطبيق السجلات المذكورة"
6019
+ "writeOnlyHint": "ملف المنطقة مكتوب فقط - لن يجيب PowerDNS حتى يتم تحميل/تطبيق السجلات المذكورة",
6020
+ "noActiveUnit": "No active named/bind9/pdns unit",
6021
+ "pdnsUnitRestarts": "pdns unit state/restarts: {{detail}}",
6022
+ "port53LoopbackOnly": "Port 53 is only on loopback (systemd-resolved 127.0.0.53) — not a product authoritative nameserver",
6023
+ "port53Closed": "Port 53 is not listening (UDP/TCP)",
6024
+ "udp53NotPublic": "UDP/53 is not listening on a public address",
6025
+ "tcp53NotPublic": "TCP/53 is not listening on a public address",
6026
+ "noManagedZones": "No managed zone files under dataDir/dns/zones",
6027
+ "pdnsListZones": "PowerDNS list-zones: {{n}}",
6028
+ "lookupIgnoredAt": "dig is unavailable — @{{server}} was ignored. Not using the system resolver as that server’s answer.",
6029
+ "localAOk": "local A {{name}} → {{ip}}"
5043
6030
  },
5044
6031
  "db": {
5045
6032
  "needExecuteCreate": "تنفيذ المضيف متوقف؛ لا يمكن إنشاء قاعدة بيانات من اللوحة",
5046
- "dryRunMysql": "التشغيل الجاف: لم يتم إنشاء قاعدة البيانات. استخدم --execute مع YSK_EXECUTE=1 للتوفير"
6033
+ "dryRunMysql": "التشغيل الجاف: لم يتم إنشاء قاعدة البيانات. استخدم --execute مع YSK_EXECUTE=1 للتوفير",
6034
+ "remoteNoCreds": "لا يوجد اسم مستخدم/كلمة مرور مخزنة - TCP فقط (التسجيل ليس تسجيل دخول).",
6035
+ "remoteReachable": "TCP {{host}}:{{port}} مفتوح ({{ms}} مللي ثانية).",
6036
+ "remoteUnreachable": "TCP {{host}}:{{port}} مغلق أو مفلتر ({{ms}} مللي ثانية)."
5047
6037
  },
5048
6038
  "net": {
5049
6039
  "invalidIface": "اسم الواجهة غير صالح",
@@ -5124,7 +6114,17 @@
5124
6114
  "dns": "DNS",
5125
6115
  "email": "بريد إلكتروني",
5126
6116
  "isolation": "عزل المشروع",
5127
- "ops": "العمليات"
6117
+ "ops": "العمليات",
6118
+ "runtimesNode": "Node.js",
6119
+ "runtimesPhp": "PHP",
6120
+ "runtimesPython": "بايثون",
6121
+ "runtimesGo": "Go",
6122
+ "pm2": "PM2",
6123
+ "runtimesNodeFix": "تثبيت العقدة من /runtimes/node",
6124
+ "runtimesPhpFix": "قم بتثبيت PHP من /runtimes/php",
6125
+ "runtimesPythonFix": "قم بتثبيت بايثون من /runtimes/python",
6126
+ "runtimesGoFix": "قم بتثبيت Go من /runtimes/go",
6127
+ "pm2Fix": "قم بتثبيت PM2 من صفحة وقت تشغيل العقدة"
5128
6128
  },
5129
6129
  "needAdmin": "إذن المسؤول مطلوب",
5130
6130
  "notInstalled": "غير مثبت",
@@ -5397,7 +6397,7 @@
5397
6397
  "n0259": "اِختِصاص",
5398
6398
  "n0260": "لم يتم العثور على المجال:",
5399
6399
  "n0261": "فشلت إعادة تحميل الحمامة أو لم تتم الخدمة (كتب المنخل؛ تم إعادة التحميل بنجاح)",
5400
- "n0262": "إرسال الأسطول الجاف (لا)",
6400
+ "n0262": "تجربة إرسال الأسطول (غير مدرج في الطابور)",
5401
6401
  "n0263": "دفع الأقران الجاف (وليس scp)",
5402
6402
  "n0264": "التثبيت عن بعد للتشغيل الجاف (وليس ssh)",
5403
6403
  "n0265": "تم النقل الجاف (التمهيد الكامل)",
@@ -5406,10 +6406,10 @@
5406
6406
  "n0268": "التشغيل الجاف - عدم الكتابة/الخ",
5407
6407
  "n0269": "التشغيل الجاف: إضافة - التنفيذ أولاً، تطبيق ufw",
5408
6408
  "n0270": "التشغيل الجاف: تم اجتياز المخزون + الاختبار المبدئي، وليس الحزمة/النقل",
5409
- "n0271": "التشغيل الجاف: مسبار/. إضافة --تنفيذ YSK_EXECUTE=1 توفير أولًا حقًا",
5410
- "n0272": "التشغيل الجاف: كتب الملف المُدار (dataDir). إضافة تنفيذ + YSK_EXECUTE=1 + القائمة المنسدلة للنظام الأول للجذر",
5411
- "n0273": "التشغيل الجاف: لا. إضافة --تنفيذ YSK_EXECUTE=1 أول حظر حقيقي",
5412
- "n0274": "التشغيل الجاف: لا. أضف --تنفيذ YSK_EXECUTE=1 أولاً قم بإلغاء الحظر حقًا",
6409
+ "n0271": "التشغيل الجاف: المسبار/الخطة فقط. قم بتمرير --execute باستخدام YSK_EXECUTE=1 للتوفير فعليًا.",
6410
+ "n0272": "التشغيل الجاف: كتابة الملف المُدار (dataDir). قم بتمرير --execute باستخدام YSK_EXECUTE=1 كجذر لتثبيت القائمة المنسدلة للنظام.",
6411
+ "n0273": "التشغيل الجاف: غير محظور. مرر --execute باستخدام YSK_EXECUTE=1 للحظر الفعلي.",
6412
+ "n0274": "التشغيل الجاف: غير محظور. مرر --execute باستخدام YSK_EXECUTE=1 لإلغاء الحظر فعليًا.",
5413
6413
  "n0275": "DryRun=true — تغيير واجهة برمجة التطبيقات",
5414
6414
  "n0276": "التشغيل الجاف: لا يكتب",
5415
6415
  "n0277": "تفريغ كتب dataDir، وليس نقل",
@@ -5417,13 +6417,13 @@
5417
6417
  "n0279": "تنفيذ (YSK_EXECUTE=1 + الجذر)",
5418
6418
  "n0280": "تنفيذ يتطلب سرد",
5419
6419
  "n0281": "مشرف التصدير",
5420
- "n0282": "فشل تطبيق Fail2ban",
5421
- "n0283": "خدمة Fail2ban",
5422
- "n0284": "Fail2ban غير نشط",
5423
- "n0285": "Fail2ban لا",
6420
+ "n0282": "فشل تطبيق fail2ban",
6421
+ "n0283": "خدمة fail2ban",
6422
+ "n0284": "fail2ban غير نشط",
6423
+ "n0285": "fail2ban لا",
5424
6424
  "n0286": "Fail2ban",
5425
- "n0287": "فشل Fail2ban StatusRead",
5426
- "n0288": "Fail2ban: sshd وnginx-http-auth والسجون القياسية",
6425
+ "n0287": "فشل fail2ban StatusRead",
6426
+ "n0288": "fail2ban: sshd وnginx-http-auth والسجون القياسية",
5427
6427
  "n0289": "FD غير متاح",
5428
6428
  "n0290": "ملفات (ملف)",
5429
6429
  "n0291": "تم حظر عملية تطهير الأسطول — قائمة الانتظار أو SSH",
@@ -5501,7 +6501,7 @@
5501
6501
  "n0363": "pam.d/sshd ليس pam_google_authenticator (لا يتم فرضه)",
5502
6502
  "n0364": "لوحة لا إعدادات 2FA أو سر - يرجى أولا \"\" TOTP",
5503
6503
  "n0365": "لوحة TOTP السرية - أول Web 2FA أو --from-panel",
5504
- "n0366": "فشل تسجيل الدخول إلى اللوحة - سجل Fail2ban (مجلة أو )",
6504
+ "n0366": "فشل تسجيل الدخول إلى اللوحة - سجل fail2ban (مجلة أو )",
5505
6505
  "n0367": "مفتاح المرور",
5506
6506
  "n0368": "فشل مفتاح المرور",
5507
6507
  "n0369": "نجاح مفتاح المرور",
@@ -5739,7 +6739,7 @@
5739
6739
  "n0601": "حذف الملف أو الدليل",
5740
6740
  "n0602": "حذف نظام المستخدم - رفض",
5741
6741
  "n0603": "حذف: لم يتم تمكين تنفيذ المضيف، دليل البيانات المدارة للمسار",
5742
- "n0604": "لتطبيق Fail2ban وتمكين الخدمة",
6742
+ "n0604": "لتطبيق fail2ban وتمكين الخدمة",
5743
6743
  "n0605": "لتمكين الصفحة (ناعم/عادي)",
5744
6744
  "n0606": "تصلب",
5745
6745
  "n0607": "أو",
@@ -5758,7 +6758,7 @@
5758
6758
  "n0620": "عملية البدء ليست عملية",
5759
6759
  "n0621": "OPcache",
5760
6760
  "n0622": "SSL",
5761
- "n0623": "",
6761
+ "n0623": "نشط",
5762
6762
  "n0624": "ملف",
5763
6763
  "n0625": "ملف",
5764
6764
  "n0626": "العقدة wsrep، العقدة HA ≥2",
@@ -5858,11 +6858,11 @@
5858
6858
  "n0720": "– يرجى التخطيط أولا",
5859
6859
  "n0721": "مستعد",
5860
6860
  "n0722": "وملف تعريف الارتباط",
5861
- "n0723": "تمكين --الآن Fail2ban",
6861
+ "n0723": "تمكين --الآن fail2ban",
5862
6862
  "n0724": "galera_new_cluster (bootstrap)",
5863
- "n0725": "إعادة تحميل Fail2ban",
6863
+ "n0725": "إعادة تحميل fail2ban",
5864
6864
  "n0726": "إعادة تحميل nginx",
5865
- "n0727": "إعادة تشغيل Fail2ban",
6865
+ "n0727": "إعادة تشغيل fail2ban",
5866
6866
  "n0728": "منطقة scp (مكتوبة على النظير ≠ المسماة معاد تحميلها)",
5867
6867
  "n0729": "scp إلى نظير /tmp (مكتوب عند إعادة تشغيل خدمة النظير ≠)",
5868
6868
  "n0730": "إعادة تحميل systemctl nginx",
@@ -5889,7 +6889,7 @@
5889
6889
  "n0751": "دليل ذاكرة التخزين المؤقت لـ nginx وإعادة التحميل (لا يمكن للمضيف proxy_cache)",
5890
6890
  "n0752": "شهادة الخادم من فضلك",
5891
6891
  "n0753": "UFW المطبق لـ CF فقط (Origin CF + keepport)",
5892
- "n0754": "تم تطبيق Fail2ban",
6892
+ "n0754": "تم تطبيق fail2ban",
5893
6893
  "n0755": "الإعدادات المطبقة على نظام Postfix",
5894
6894
  "n0756": "يتم تطبيقه على نظام Nginx",
5895
6895
  "n0757": "تطبيق جدار الحماية",
@@ -5974,7 +6974,7 @@
5974
6974
  "n0836": "فشل الشهادة من فضلك",
5975
6975
  "n0837": "≥ الملف",
5976
6976
  "n0838": "settings.settingsketbackup",
5977
- "n0839": "نجاح هذا الهدف يمكن أن يكون BatchMode، ",
6977
+ "n0839": "النجاح يعني أن هذا الهدف يقبل BatchMode SSH (غير تفاعلي). إنها ليست منحة للوصول العالمي.",
5978
6978
  "n0840": "أو 32767",
5979
6979
  "n0841": "تم تثبيت البرنامج",
5980
6980
  "n0842": "إذن/",
@@ -6034,18 +7034,18 @@
6034
7034
  "n0896": "مصادقة أسرع عندما يستخدم العملاء عناوين IP فقط",
6035
7035
  "n0897": ": مناطق Cloudflare + CF_API_TOKEN firstcan Under Attack API",
6036
7036
  "n0898": "لا يمكن القيام به",
6037
- "n0899": "إنجينكس و Fail2ban",
7037
+ "n0899": "إنجينكس و fail2ban",
6038
7038
  "n0900": "الأداء والموارد",
6039
7039
  "n0901": "IP/المجال. يرجى التحقق من Spamhaus وما إلى ذلك.",
6040
7040
  "n0902": "A/AAAA (القمة وwww)",
6041
- "n0903": "DMARC TXT",
7041
+ "n0903": "ديمارك TXT",
6042
7042
  "n0904": "MX/SPF/DKIM DNS",
6043
7043
  "n0905": "_dmarc TXT مع و.",
6044
7044
  "n0906": "الطريقة + العتبات",
6045
7045
  "n0907": "DNS MX وSPF (TXT) وDKIM (TXT). Cloudflare: mailoffplease DNS ().",
6046
7046
  "n0908": "قم بتثبيت أدوات PowerDNS من صفحة DNS",
6047
7047
  "n0909": "قم بتثبيت certbot من صفحة SSL",
6048
- "n0910": "قم بتثبيت Fail2ban من Defense Center أو شعار البرنامج",
7048
+ "n0910": "قم بتثبيت fail2ban من Defense Center أو شعار البرنامج",
6049
7049
  "n0911": "تثبيت وتمكين UFW من مركز الدفاع",
6050
7050
  "n0912": "قم بتثبيت Redis من صفحة Redis",
6051
7051
  "n0913": "قم بتثبيت الحزم المطلوبة لهذا الفحص",
@@ -6061,9 +7061,9 @@
6061
7061
  "n0923": "و",
6062
7062
  "n0924": "جدول ذاكرة التخزين المؤقت مفتوحة",
6063
7063
  "n0925": "نسخة PHP",
6064
- "n0926": "المزيد من سجون Fail2ban، وحظر أسرع",
7064
+ "n0926": "المزيد من سجون fail2ban، وحظر أسرع",
6065
7065
  "n0927": "من فضلك ريديس",
6066
- "n0928": "تحديث سجن Fail2ban (ملف مُدار)",
7066
+ "n0928": "تحديث سجن fail2ban (ملف مُدار)",
6067
7067
  "n0929": "updateIncomplete",
6068
7068
  "n0930": "حدود Nginx الأكثر صرامة (~1 طلب/طلبات)",
6069
7069
  "n0931": "12 دليل",
@@ -6134,7 +7134,7 @@
6134
7134
  "n0996": "nginx المحلي -t OK (الإعداد المُدار، ≠ الحافة المطبقة)",
6135
7135
  "n0997": "يمكن لـ wsrep المحلي الحجم وليس العقدة",
6136
7136
  "n0998": "لا يمكن لـ ysk.json المحلي قراءة / بصمة الإصبع",
6137
- "n0999": "موافق المحلية؛ استكمال التحقيق الأقران صحية (لا)",
7137
+ "n0999": "العقدة المحلية على ما يرام؛ الحالة الصحية الكاملة تحتاج إلى فحص نظير (لم يتم).",
6138
7138
  "n1000": "كتب nginx المحلي - conf، وليس إعادة التحميل",
6139
7139
  "n1001": "اتصال NM المحلي المتوفر؛ willSuccess. يمكن \"\" أو NetworkManager.",
6140
7140
  "n1002": "localAvailable ps - لا يمكن ()",
@@ -6228,7 +7228,7 @@
6228
7228
  "n1088": "عطلة.منخل يمكن",
6229
7229
  "n1089": "يتطلب vhost التحديث (أو خادم conf)",
6230
7230
  "n1090": "حالة wsrep (لا يمكن Galera أو Servicenot )",
6231
- "n1091": "السجن النشط أو Fail2ban لا يعمل",
7231
+ "n1091": "السجن النشط أو fail2ban لا يعمل",
6232
7232
  "n1092": "سجل",
6233
7233
  "n1093": "يمكن النظام (مكتوب)",
6234
7234
  "n1094": "يمكن استهداف (healthUrl / baseUrl / publicIpv4)",
@@ -6368,7 +7368,7 @@
6368
7368
  "n1228": "الحالة: مكتوب () — الحافة غير مطبقة؛ مخرج PR-C3 + nginx -t/reload",
6369
7369
  "n1229": "الحالة: مكتوبة (لا تنطبق على نظام Postfix/Rspamd)",
6370
7370
  "n1230": "الحالة: مكتوبة (ليست إلى نظام Nginx؛ سيحاول تطبيق ApplySystem إعادة التحميل)",
6371
- "n1231": "الحالة: مكتوبة (إدارة؛ مباشر Fail2ban-client YSK_EXECUTE، أو \"→تطبيق على النظام\" jail.local)",
7371
+ "n1231": "الحالة: مكتوبة (إدارة؛ مباشر fail2ban-client YSK_EXECUTE، أو \"→تطبيق على النظام\" jail.local)",
6372
7372
  "n1232": "الحالة: مكتوب (مفتاح/DS؛ منطقة ليست أو لا منطقة)",
6373
7373
  "n1233": "الحالة: مكتوب (ليس الدخول الموحد)",
6374
7374
  "n1234": "الحالة: مكتوب (لا/لا) — النجاح",
@@ -6463,7 +7463,7 @@
6463
7463
  "n1323": "dataDir مفقود، لا يمكن تثبيت وقت التشغيل",
6464
7464
  "n1324": "مفقود linuxUser/homeDir",
6465
7465
  "n1325": "الحظر المؤقت",
6466
- "n1326": "keyFailed",
7466
+ "n1326": "فشل المفتاح",
6467
7467
  "n1327": "فشل تثبيت المفتاح",
6468
7468
  "n1328": "VACUUM",
6469
7469
  "n1329": "حظر → إيقاف ()",
@@ -6485,7 +7485,7 @@
6485
7485
  "n1345": "المفاتيح المعتمدة عن بعد أو التحديث أو التفويض الذاتي",
6486
7486
  "n1346": "المجال غير صالح",
6487
7487
  "n1347": "حجم الجدول Tmp",
6488
- "n1348": "عامل التصفية/السجن Systemctl إعادة تحميل Fail2ban",
7488
+ "n1348": "عامل التصفية/السجن Systemctl إعادة تحميل fail2ban",
6489
7489
  "n1349": "فشل jail.local",
6490
7490
  "n1350": "انظر سجل التدقيق",
6491
7491
  "n1351": "النجاح (السر)",
@@ -6576,7 +7576,7 @@
6576
7576
  "n1436": "قراءة المحظورة فشل",
6577
7577
  "n1437": "قراءة المحظورة يمكن إذن؛ إلغاء الحظر/الحظر YSK_EXECUTE",
6578
7578
  "n1438": "قراءة المحظورة الفاشلة (الإذن أو الخدمة)",
6579
- "n1439": "قراءة الحظر Fail2ban فشل",
7579
+ "n1439": "قراءة الحظر fail2ban فشل",
6580
7580
  "n1440": "readFailed",
6581
7581
  "n1441": "فشل قراءة السجل",
6582
7582
  "n1442": "readfile",
@@ -6679,7 +7679,7 @@
6679
7679
  "n1539": "YSK_EXECUTE أولًا يمكن تطبيق ufw",
6680
7680
  "n1540": "سيتم حظر YSK_EXECUTE تلقائيًا حقًا",
6681
7681
  "n1541": "YSK_EXECUTE بانيب",
6682
- "n1542": "خدمة YSK_EXECUTE Fail2ban",
7682
+ "n1542": "خدمة YSK_EXECUTE fail2ban",
6683
7683
  "n1543": "YSK_EXECUTE=1 مجلة تفريغ أولية",
6684
7684
  "n1544": "تنفيذ: صحيح أو تشغيل جاف: صحيح",
6685
7685
  "n1545": "nginx log_format $upstream_cache_status (أو X-YSK-Cache) أول ضربة/ملكة جمال",
@@ -6730,7 +7730,7 @@
6730
7730
  "n1590": "",
6731
7731
  "n1591": "ليس جذرًا - مسارات نظام useradd / systemd / nginx مقيدة",
6732
7732
  "n1592": "لا يتطلب الأمر runAsUser",
6733
- "n1593": "لوحة من فضلك /",
7733
+ "n1593": "الطلبات العامة / د",
6734
7734
  "n1594": "اتصال اللوحة؛ متاح\"\" ( )",
6735
7735
  "n1595": "اللوحة لا تعمل كجذر",
6736
7736
  "n1596": "التطبيق المتاح: خطأ",
@@ -6970,8 +7970,8 @@
6970
7970
  "t0220": "فشل إلغاء الحظر: {{v0}}",
6971
7971
  "t0221": "إدارة: {{v0}} ({{v1}} )",
6972
7972
  "t0222": "sshd تجاهل {{v0}} {{v1}} · الحالة: مطبق",
6973
- "t0223": "فشل Fail2ban-clientignipe: {{v0}} (كتابة ملف مُدار؛ تم تطبيقه)",
6974
- "t0224": "سجون Fail2ban: {{v0}}",
7973
+ "t0223": "فشل fail2ban-clientignipe: {{v0}} (كتابة ملف مُدار؛ تم تطبيقه)",
7974
+ "t0224": "سجون fail2ban: {{v0}}",
6975
7975
  "t0225": "كتبت الوحدة {{v0}}",
6976
7976
  "t0226": "الحالة لا تزال {{v0}} (غير مطبق)",
6977
7977
  "t0227": "حالة_التقديم غير متوقعة: {{v0}}",
@@ -7001,7 +8001,7 @@
7001
8001
  "t0251": "{{v0}} التثبيت غير مكتمل",
7002
8002
  "t0252": "{{v0}} بداية الخدمة",
7003
8003
  "t0253": "فشل البدء: {{v0}}",
7004
- "t0254": "يدعم إصدار Node.js {{v0}}؛ الإصدار المتاح: {{v1}}",
8004
+ "t0254": "يدعم إصدار Node.js {{v0}}؛ الإصدارات المتاحة: {{v1}}",
7005
8005
  "t0255": "يدعم إصدار PHP {{v0}}؛ متاح: {{v1}}",
7006
8006
  "t0256": "يدعم إصدار بايثون {{v0}}؛ متاح: {{v1}}",
7007
8007
  "t0257": "يدعم إصدار Go {{v0}}؛ متاح: {{v1}}",
@@ -7042,9 +8042,9 @@
7042
8042
  "t0292": "ليس نظام التشغيل الرئيسي (يتطلب الجذر): {{v0}}; يمكن لمستخدم النظام {{v1}}",
7043
8043
  "t0293": "فشلت منطقة التحميل pdnsutil: {{v0}}",
7044
8044
  "t0294": "منطقة بدنسوتيل {{v0}}",
7045
- "t0295": "Systemctl {{v0}} Fail2ban حسنًا",
8045
+ "t0295": "Systemctl {{v0}} fail2ban حسنًا",
7046
8046
  "t0296": "{{v0}} فشل: {{v1}}",
7047
- "t0297": "حظر Fail2ban {{v0}} @ {{v1}} (، حدود وقت الحظر)",
8047
+ "t0297": "حظر fail2ban {{v0}} @ {{v1}} (، حدود وقت الحظر)",
7048
8048
  "t0298": "فشل بانيب: {{v0}}",
7049
8049
  "t0299": "السجون: {{v0}}",
7050
8050
  "t0300": "تجاهل: dataDir/fail2ban/ignoreip.txt",
@@ -7123,12 +8123,12 @@
7123
8123
  "t0373": "مشروع \"{{v0}}\" العزل",
7124
8124
  "t0374": "إلى المسار المحلي {{v0}}",
7125
8125
  "t0375": "الهوية {{v0}}: {{v1}}",
7126
- "t0376": "scp (الهوية) إلى {{v0}}",
7127
- "t0377": "فشل scp(الهوية): {{v0}}",
7128
- "t0378": "SCP إلى {{v0}}",
7129
- "t0379": "فشل scp: {{v0}}",
7130
- "t0380": "SCP إلى {{v0}}",
7131
- "t0381": "فشل scp: {{v0}} (معرف الهوية البعيد الاحتياطي)",
8126
+ "t0376": "نجح sftp (الهوية) إلى {{v0}}",
8127
+ "t0377": "فشل sftp (الهوية): {{v0}}",
8128
+ "t0378": "نجح sftp إلى {{v0}}",
8129
+ "t0379": "فشل sftp: {{v0}}",
8130
+ "t0380": "نجح sftp إلى {{v0}}",
8131
+ "t0381": "فشل sftp: {{v0}} (يمكن تعيين backup remote identityId)",
7132
8132
  "t0382": "S3 {{v0}}",
7133
8133
  "t0383": "فشل S3: {{v0}}",
7134
8134
  "t0384": ": {{v0}}/{{v1}} admin تمكين المصادقة الثنائية",
@@ -7136,7 +8136,7 @@
7136
8136
  "t0386": "{{v0}} المسار",
7137
8137
  "t0387": "{{v0}} غير موجود",
7138
8138
  "t0388": "قم بتثبيت {{v0}} أو أضفه إلى PATH",
7139
- "t0389": "الإصدار المتاح: {{v0}}",
8139
+ "t0389": "الإصدارات المتاحة: {{v0}}",
7140
8140
  "t0390": "{{v0}}% ( {{v1}} ميجابايت)",
7141
8141
  "t0391": "{{v0}}% ({{v1}})",
7142
8142
  "t0392": "بداية الخدمة {{v0}}",
@@ -7300,7 +8300,7 @@
7300
8300
  "t0550": "الإعداد المسبق للدفاع النشط → {{v0}}",
7301
8301
  "t0551": "الحظر → {{v0}} ({{v1}} / {{v2}})",
7302
8302
  "t0552": "الإعداد المسبق للدفاع التطبيقي: {{v0}}",
7303
- "t0553": "فشل Fail2ban: {{v0}}",
8303
+ "t0553": "فشل fail2ban: {{v0}}",
7304
8304
  "t0554": "فشل ufw: {{v0}}",
7305
8305
  "t0555": "{{v0}}",
7306
8306
  "t0556": "فشل حذف ufw: {{v0}}",
@@ -7379,15 +8379,15 @@
7379
8379
  "t0629": "مشروع {{v0}} المنزل: {{v1}}",
7380
8380
  "t0630": "مشروع {{v0}} bind_ip={{v1}} — يمكن ( IP )",
7381
8381
  "t0631": "المشروع {{v0}} الوطن وليس المسار : {{v1}}",
7382
- "t0632": "المنزل (المتجر): {{v0}}",
8382
+ "t0632": "منزل يتيم على القرص (لا يوجد مشروع متجر مطابق): {{v0}}",
7383
8383
  "t0633": "عنوان البريد: {{v0}}",
7384
8384
  "t0634": "{{v0}} — لا يمكن الاستهداف",
7385
8385
  "t0635": "لا يمكن التحقيق {{v0}}",
7386
8386
  "t0636": "{{v0}} · {{v1}}",
7387
8387
  "t0637": "مشروع {{v0}} · {{v1}} · DB {{v2}} · Redis {{v3}}",
7388
- "t0638": "تثبيت البرامج {{v0}} · المنازل {{v1}}",
8388
+ "t0638": "تثبيت البرنامج {{v0}} · homes {{v1}}",
7389
8389
  "t0639": "مضيف القطع {{v0}}",
7390
- "t0640": "تحذير {{v0}} (من فضلك)",
8390
+ "t0640": "{{v0}} تحذير (تحذيرات) - قم بالمراجعة قبل الاستبدال.",
7391
8391
  "t0641": "المفتاح {{v0}}",
7392
8392
  "t0642": "لامفتاح: {{v0}}",
7393
8393
  "t0643": "الهدفلا تكتب المفاتيح المعتمدة: {{v0}}",
@@ -7451,7 +8451,7 @@
7451
8451
  "t0701": "CDN {{v0}}",
7452
8452
  "t0702": "عقدة الدرع الأصلية غير موجودة: {{v0}}",
7453
8453
  "t0703": "الحواف: {{v0}}",
7454
- "t0704": "عنوان URL الأصلي (): {{v0}}",
8454
+ "t0704": "عنوان URL الأصلي (من ربط المشروع): {{v0}}",
7455
8455
  "t0705": "تحديث CDN {{v0}}",
7456
8456
  "t0706": "إنشاء CDN {{v0}}",
7457
8457
  "t0707": "الدرع الأصلي: درع الحافة {{v0}} → {{v1}}",
@@ -7547,7 +8547,16 @@
7547
8547
  "t0797": "فشلت المنطقة الزمنية: {{v0}}",
7548
8548
  "tScoreFrom": "النتيجة={{score}} من={{from}}",
7549
8549
  "appliedTag": "(مُطبَّق)",
7550
- "writtenTag": "(مكتوب فقط)"
8550
+ "writtenTag": "(مكتوب فقط)",
8551
+ "selfDestMissing": "تعذر العثور على مجلد التثبيت قيد التشغيل (systemd ExecStart أو cli.js)",
8552
+ "selfDestUnwritable": "تعذر الكتابة إلى مجلد التثبيت قيد التشغيل {{v0}}",
8553
+ "selfApplied": "تم تطبيق {{v0}} على {{v1}}",
8554
+ "selfVerifyFail": "ملف الإصدار لا يحتوي على {{v0}} بعد التطبيق",
8555
+ "selfDownloadFail": "تعذر تنزيل أو فك الحزمة الرسمية {{v0}}: {{v1}}",
8556
+ "selfOverlayFail": "تعذر تطبيق الحزمة الرسمية على المجلد قيد التشغيل: {{v0}}",
8557
+ "selfUpgradeHint": "فشل تطبيق اللوحة. نفّذ كـ root: curl -fsSL https://raw.githubusercontent.com/yanshekki/ysk-server/main/install.sh | bash -s -- --upgrade",
8558
+ "n1611": "UFW غير نشط: {{n}} يتم تخزين قاعدة (قواعد) الرفض الدائم في user.rules لكن النواة لا تنفذها.",
8559
+ "n1612": "UFW غير نشط. سيتم كتابة قاعدة الرفض إلى user.rules فقط، ولن تقوم النواة بإسقاط الحزم. قم بتمكين UFW أولاً. عدم التمكين تلقائيًا."
7551
8560
  },
7552
8561
  "tpl": {
7553
8562
  "deleted": "محذوفة {{name}}",
@@ -7610,7 +8619,7 @@
7610
8619
  "noParen": "(لا أحد)",
7611
8620
  "keepOldDb": "(احتفظ بقاعدة البيانات القديمة)",
7612
8621
  "ufwNotDetected": "لم يتم اكتشاف UFW على هذا المضيف",
7613
- "fail2banStartHint": "ابدأ تشغيله على صفحة Fail2ban",
8622
+ "fail2banStartHint": "ابدأ تشغيله على صفحة fail2ban",
7614
8623
  "hasExecuteNotRoot": "التنفيذ قيد التشغيل ولكن العملية ليست جذرًا",
7615
8624
  "notRootTarget": "ليس الجذر (سيتم حظر useradd/apt الهدف)",
7616
8625
  "reapplyDone": "أعد تطبيق الخطوات الرئيسية المكتملة",
@@ -7620,7 +8629,7 @@
7620
8629
  "sslDistributeNote": "توزيع SSL: شهادة على الحافة ≠ سلسلة ثقة كاملة للمتصفح؛ تحقق باستخدام dig/curl -vI https://",
7621
8630
  "autoNever": "تلقائياً أبداً",
7622
8631
  "autoManualEmergency": "الطوارئ اليدوية فقط",
7623
- "probeMech": "TCP العام، متطلبات اللوحة/الدقيقة، استخدام TCP، Fail2ban، UFW",
8632
+ "probeMech": "TCP العام، متطلبات اللوحة/الدقيقة، استخدام TCP، fail2ban، UFW",
7624
8633
  "probeTunable": "رفع / خفض العتبات",
7625
8634
  "priorityBlockers": "العنوان {{count}} الحواجز أولاً: {{list}}",
7626
8635
  "readinessNotProduction": "الاستعداد ليس جاهزًا للإنتاج: {{list}}",
@@ -7777,7 +8786,10 @@
7777
8786
  "accessReconnectHint": "يجب على العملاء المتصلين بالفعل إعادة الاتصال لالتقاط مسارات جديدة",
7778
8787
  "ovpnNatDurable": "تم تثبيت OpenVPN NAT/forward لإعادة التشغيل (systemd ExecStartPost).",
7779
8788
  "clientFullTunnelProtect": "تم اكتشاف عميل النفق الكامل (AllowedIPs 0.0.0.0/0). يتم تطبيق حماية المضيف بحيث تظل ردود اللوحة/SSH على LAN NIC.",
7780
- "clientFullTunnelHint": "نصيحة: للوصول المقسم فقط، قم بتعيين عناوين IP المسموح بها على VPN/LAN CIDRs (وليس 0.0.0.0/0) في ملف conf، ثم أعد الاتصال."
8789
+ "clientFullTunnelHint": "نصيحة: للوصول المقسم فقط، قم بتعيين عناوين IP المسموح بها على VPN/LAN CIDRs (وليس 0.0.0.0/0) في ملف conf، ثم أعد الاتصال.",
8790
+ "serverStopped": "{{engine}} توقف الخادم.",
8791
+ "serverStopFailed": "تعذر إيقاف خادم {{engine}}: {{detail}}",
8792
+ "peersSynced": "Peer list reloaded on the running WireGuard interface."
7781
8793
  },
7782
8794
  "vnc": {
7783
8795
  "needInstall": "تثبيت {{stack}}",
@@ -7871,7 +8883,21 @@
7871
8883
  "clientDeleted": "تم حذف ملف تعريف العميل",
7872
8884
  "sessionStartCwd": "فشل بدء VNC: لا يمكن لمستخدم الجلسة الوصول إلى دليل العمل (العرض: {{display}}). تم إصلاحه عن طريق البدء من المنزل.",
7873
8885
  "desktopRestarted": "تم تطبيق ملف تعريف سطح المكتب وإعادة تشغيل الجلسة ({{desktop}}). أعد توصيل VNC/noVNC.",
7874
- "desktopNeedsStart": "ملف تعريف سطح المكتب {{desktop}} مكتوب على xstartup. ابدأ الجلسة للتقديم."
8886
+ "desktopNeedsStart": "ملف تعريف سطح المكتب {{desktop}} مكتوب على xstartup. ابدأ الجلسة للتقديم.",
8887
+ "passwordNeedTiger": "لم يتم العثور على vncpasswd. قم بتثبيت TigerVNC (خادم Tigervnc المستقل) قبل تعيين كلمة المرور.",
8888
+ "linuxUserRolledBack": "تمت إزالة مستخدم Linux المتبقي {{user}} بعد فشل كلمة مرور VNC.",
8889
+ "linuxUserOrphan": "تعذرت إزالة مستخدم Linux المتبقي {{user}} بعد فشل كلمة مرور VNC.",
8890
+ "sessionStartHostname": "Failed to start display :{{display}}: this host cannot resolve its own hostname. Add the hostname to /etc/hosts (or fix DNS) then start the session again.",
8891
+ "userdelLeftover": "Panel account removed, but Linux user {{user}} is still on the host. Remove it from Users or the host.",
8892
+ "hostnameResolves": "Hostname {{hostname}} resolves.",
8893
+ "hostnameUnresolvable": "This host cannot resolve its own hostname ({{hostname}}). VNC session start will fail until /etc/hosts is fixed.",
8894
+ "hostnameAlreadyResolves": "Hostname {{hostname}} already resolves — /etc/hosts unchanged.",
8895
+ "hostnameWouldAppend": "Would append to /etc/hosts: {{line}}",
8896
+ "hostnameAppended": "Appended to /etc/hosts: {{line}}",
8897
+ "hostnameAppendFailed": "Could not write /etc/hosts: {{detail}}",
8898
+ "skipStartHostname": "Did not start the display — fix hostname resolution first.",
8899
+ "hostnameAliasPresent": "Hostname {{hostname}} is already an exact /etc/hosts alias — not appended again.",
8900
+ "hostnameStillUnresolvable": "Wrote /etc/hosts but {{hostname}} still does not resolve. Confirm nsswitch hosts includes files."
7875
8901
  },
7876
8902
  "apache": {
7877
8903
  "needServerName": "اسم الخادم مطلوب",
@@ -7921,7 +8947,110 @@
7921
8947
  "startedDetached": "بدأ العامل المنفصل لمتعقب BT (معرف الهوية {{pid}}، المنفذ {{port}})",
7922
8948
  "runningDetached": "جهاز التعقب يعمل كعامل منفصل (رقم التعريف الشخصي {{pid}})",
7923
8949
  "jobQueued": "تم وضع إنشاء سيل BT في قائمة الانتظار (حصة كبيرة)",
7924
- "jobRunning": "جاري إنشاء سيل BT"
8950
+ "jobRunning": "جاري إنشاء سيل BT",
8951
+ "libraryAdded": "تمت إضافة {{name}} إلى مكتبة WebTorrent",
8952
+ "libraryInspectFailed": "لا يمكن قراءة ذلك .torrent أو المغناطيس",
8953
+ "libraryDup": "هذا السيل موجود بالفعل في المكتبة",
8954
+ "libraryDestBad": "مجلد الحفظ ليس مسارًا صالحًا للملفات",
8955
+ "libraryTorrentTooBig": "حجم ملف .torrent أكبر من 8 ميجابايت",
8956
+ "libraryNotFound": "لم يتم العثور على عنصر المكتبة",
8957
+ "libraryPaused": "متوقف مؤقتًا",
8958
+ "libraryResumed": "مستأنفة",
8959
+ "libraryRemoved": "تمت الإزالة من المكتبة",
8960
+ "libraryFilesRemoved": "تم حذف الملفات التي تم تنزيلها",
8961
+ "libraryRestoreDone": "استعادة المكتبة: بدأت {{started}}/{{attempted}} (فشل {{failed}})",
8962
+ "applyTrackersDone": "تم تطبيق أدوات تعقب إضافية على فتحات الإعلان المباشر {{n}}",
8963
+ "libraryNeedServe": "أنقذ. افتح اللوحة (خدمة ysk-server) حتى يتمكن WebTorrent من التنزيل أو البذور.",
8964
+ "libraryDestIsFile": "لا يمكن إنشاء مجلد باسم {{name}} — هناك ملف بهذا الاسم موجود بالفعل.",
8965
+ "librarySeedMissing": "لا توجد ملفات مطابقة في هذا المجلد للبذور.",
8966
+ "libraryWaitingPeers": "في انتظار أقرانهم. إذا كانت الملفات موجودة بالفعل على هذا المضيف، فأضفها مرة أخرى واختر الملفات الموجودة بالفعل."
8967
+ },
8968
+ "leftover": {
8969
+ "staleCliTitle": "بقايا CLI التي لا معنى لها",
8970
+ "staleCli": "لا يزال متبقي CLI موجودًا: {{path}} (المنتج قيد التشغيل {{version}}). قد يفضله PATH. إزالة مع: rm -f {{path}}",
8971
+ "apacheDefaultTitle": "أباتشي بقايا الموقع الافتراضي",
8972
+ "apacheDefault": "لا يزال Apache 000-default ممكّنًا. هذا هو ملف موقع المخزون - وهذا لا يعني أن Apache يستمع إلى الجمهور:80 (من المتوقع أن يكون YSK Apache على 127.0.0.1:8080). التراكب لا يعطله. قم بتطبيق Apache من اللوحة أو قم بتطبيق استضافة Apache --تنفيذ.",
8973
+ "nginxCatchAllTitle": "Nginx كاتش كل شيء مفقود",
8974
+ "nginxCatchAll": "ysk-000-default.conf غير موجود في /etc/nginx/conf.d. يمكن أن يفشل SNI غير المعروف. قم بتشغيل المشاريع nginx-sync --execute.",
8975
+ "vsftpdTitle": "فشلت وحدة vsftpd",
8976
+ "vsftpd": "فشل vsftpd. لا يقوم التراكب بإعادة كتابة الاستماع/listen_ipv6. قم بتطبيق FTP من اللوحة.",
8977
+ "dovecotTitle": "يشير Dovecot TLS إلى الشهادة المفقودة",
8978
+ "dovecot": "نقاط Dovecot ssl_cert مفقودة {{path}}. التراكب لا يعيد كتابة ssl=no. قم بتطبيق TLS للبريد بعد إصدار الشهادة، أو قم بتطبيق حزمة البريد الإلكتروني.",
8979
+ "overlayDoesNotHeal": "لا يقوم تراكب المنتج بإعادة كتابة nginx أو Apache أو vsftpd أو Dovecot. استخدم أوامر التطبيق المدرجة (root + YSK_EXECUTE=1).",
8980
+ "readinessTitle": "استضافة بقايا الطعام بعد التراكب",
8981
+ "readinessClean": "لم يتم اكتشاف أي بقايا افتراضية لـ Apache، أو مفقودة في nginx، أو vsftpd فاشلة، أو CLI قديمة.",
8982
+ "staleCliRemoved": "تمت إزالة CLI المتبقي {{path}}.",
8983
+ "staleCliRemoveFailed": "تعذّر إزالة CLI المتبقي {{path}}: {{detail}}",
8984
+ "vsftpdSslOff": "ملف شهادة FTPS مفقود: عُيّن ssl_enable=NO في vsftpd ثم أُعيد التشغيل.",
8985
+ "dovecotSslOff": "{{path}} مفقود: عُيّن ssl=no في Dovecot ثم أُعيد التشغيل.",
8986
+ "nginxRemoved": "Removed leftover nginx conf {{path}}.",
8987
+ "nginxNotLeftover": "Not a leftover public-files conf — refuse delete.",
8988
+ "nginxUnusedKeep": "000-default is unused, not leftover — not deleted.",
8989
+ "nginxSystemCopy": "System copy still present: {{path}}. Needs YSK_EXECUTE + root to remove.",
8990
+ "nginxReloadFailed": "nginx -t or reload failed after removing {{path}}.",
8991
+ "executeStaleCli": "Pass --execute (root + YSK_EXECUTE=1) to remove stale CLI bins.",
8992
+ "executeMissingTls": "Pass --execute (root + YSK_EXECUTE=1) to disable missing-cert TLS so vsftpd/Dovecot can start.",
8993
+ "executeGeneric": "Pass --execute (root + YSK_EXECUTE=1) to apply leftover cleanup for the findings above."
8994
+ },
8995
+ "git": {
8996
+ "missingBin": "git ليس على PATH",
8997
+ "auth": "فشلت المصادقة. أضف مفتاح نشر أو رمز HTTPS المميز.",
8998
+ "hostkey": "فشل التحقق من مفتاح مضيف SSH. قم بتأكيد وتثبيت مفتاح المضيف.",
8999
+ "dirty": "تحتوي شجرة العمل على {{count}} تغيير (تغييرات) محلية. تم حظر السحب.",
9000
+ "diverged": "لا يمكن التقديم السريع. قم بإعادة التعيين إلى المرجع البعيد إذا كنت تنوي تجاهل سجل Git المحلي.",
9001
+ "missingRef": "هذا الفرع أو العلامة أو الالتزام غير موجود على جهاز التحكم عن بعد.",
9002
+ "shallow": "هذا الاستنساخ ضحل. قم بإحضار السجل الكامل قبل تثبيت الالتزام القديم.",
9003
+ "notRepo": "app/ ليس مستودع Git حتى الآن.",
9004
+ "unrelated": "تواريخ غير ذات صلة. لا يمكن إعادة الاستنساخ إلا بعد التأكيد — سيتم فقدان الملفات المخصصة.",
9005
+ "lock": "Git Index.lock موجود. قم بإزالته فقط في حالة عدم تشغيل أي عملية git.",
9006
+ "disk": "القرص ممتلئ أو تم تجاوز الحصة النسبية.",
9007
+ "timeout": "انتهت مهلة جيت.",
9008
+ "network": "خطأ في الشبكة أثناء التحدث إلى جهاز التحكم عن بعد.",
9009
+ "lfs": "يستخدم هذا الريبو Git LFS ولا يتوفر git-lfs.",
9010
+ "submodule": "فشل تحديث الوحدة الفرعية.",
9011
+ "unknown": "فشل البوابة. انظر إخراج الأمر.",
9012
+ "fetchOk": "مأخوذ من الأصل.",
9013
+ "checkoutOk": "تم السحب {{ref}}.",
9014
+ "resetOk": "إعادة تعيين الثابت إلى {{ref}}.",
9015
+ "envRestored": "تمت استعادة app/.env من مستوى التحكم.",
9016
+ "needPinHost": "لم يتم تثبيت مفتاح مضيف SSH. قم بمسحها ضوئيًا وتثبيتها قبل استنساخها أو جلبها.",
9017
+ "tokenSaved": "تم تخزين رمز HTTPS المميز (لم يتم عرضه مرة أخرى).",
9018
+ "tokenCleared": "تمت إزالة رمز HTTPS.",
9019
+ "tokenInvalid": "يجب أن يتكون الرمز المميز من 8 أحرف على الأقل.",
9020
+ "deployKeyCreated": "تم إنشاء مفتاح النشر. أضف المفتاح العام على مضيف Git.",
9021
+ "deployKeyCleared": "نشر مفتاح منفصل عن هذا المشروع.",
9022
+ "hostPinned": "مفاتيح مضيف SSH المثبتة لـ {{host}}.",
9023
+ "hostUnpinned": "تم مسح مفاتيح مضيف SSH المثبتة.",
9024
+ "hostScanFailed": "لم يُرجع ssh-keyscan أي مفاتيح لهذا المضيف.",
9025
+ "hookEnabled": "ربط Git الوارد قيد التشغيل. الصق عنوان URL في GitHub أو Gitea أو GitLab بنفسك.",
9026
+ "hookDisabled": "تم إيقاف ربط Git الوارد. لن تتم مزامنة عنوان URL.",
9027
+ "hookSecretOnce": "انسخ سر الخطاف هذا الآن. لا يظهر مرة أخرى.",
9028
+ "refsNeedUrl": "أدخل عنوان URL لـ Git أولاً.",
9029
+ "refsOk": "تم تحميل {{branches}} فرع (فروع) و {{tags}} علامة (علامات).",
9030
+ "refsEmpty": "تم الإعلان عن بعد بدون فروع أو علامات.",
9031
+ "diffEmpty": "لا يوجد فرق غير منظم (يتم استبعاد .env المحمي)."
9032
+ },
9033
+ "migrate": {
9034
+ "orphanConfirm": "اكتب المسار الرئيسي المتبقي بالضبط لتأكيد الحذف.",
9035
+ "orphanStillInStore": "هذا المنزل لا يزال ينتمي إلى مشروع في المتجر.",
9036
+ "orphanMissing": "المسار غير موجود على القرص: {{path}}",
9037
+ "orphanNeedExecute": "سيزيل بقايا {{path}}. يحتاج YSK_EXECUTE=1.",
9038
+ "orphanRmFailed": "لا يمكن إزالة بقايا المنزل: {{detail}}",
9039
+ "orphanRemoved": "تمت إزالة بقايا المشروع بالمنزل {{path}}."
9040
+ },
9041
+ "defense": {
9042
+ "panelReqLabel": "طلبات اللوحة / دقيقة",
9043
+ "panelReqExcluded": "حركة مرور اللوحة التي تمت مصادقتها - الموضحة هنا، لا يتم احتسابها في درجة التهديد",
9044
+ "tcpOk": "TCP {{target}} يمكن الوصول إليه",
9045
+ "tcpFail": "فشل TCP {{target}}",
9046
+ "dnsDegraded": "مسار DNS المتدهورة",
9047
+ "reqRateHigh": "معدل الطلب العام {{reqs}}/دقيقة ≥ {{threshold}}",
9048
+ "ddosHeuristic": "ارتفاع معدل الطلب العام بالإضافة إلى فشل مسبار الحافة"
9049
+ },
9050
+ "publicFiles": {
9051
+ "liveConf": "إعداد Nginx الفعّال: {{path}}",
9052
+ "publicRoot": "الجذر العام: {{path}}",
9053
+ "confNameStale": "الملف {{file}} لا يطابق server_name الحالي {{serverName}}. أعد تطبيق الملفات العامة لإعادة التسمية."
7925
9054
  }
7926
9055
  },
7927
9056
  "ops": {
@@ -8023,7 +9152,7 @@
8023
9152
  },
8024
9153
  "security-units": {
8025
9154
  "name": "وحدات الأمن",
8026
- "description": "حالة Fail2ban + sshd (للقراءة فقط)"
9155
+ "description": "حالة fail2ban + sshd (للقراءة فقط)"
8027
9156
  },
8028
9157
  "web-stack-status": {
8029
9158
  "name": "حالة مكدس الويب",
@@ -8103,7 +9232,7 @@
8103
9232
  "created": "مخلوق",
8104
9233
  "os": "مستخدم نظام التشغيل",
8105
9234
  "deploy": "نشر",
8106
- "nginx": "Nginx",
9235
+ "nginx": "نجينكس",
8107
9236
  "health": "صحة"
8108
9237
  },
8109
9238
  "next": {
@@ -8113,7 +9242,8 @@
8113
9242
  "deployTitle": "التالي: النشر",
8114
9243
  "deployBody": "استخدم Deploy في الرأس، أو علامة التبويب Deploy لـ Git.",
8115
9244
  "nginxTitle": "التالي: نشر Nginx",
8116
- "nginxBody": "افتح علامة التبويب \"الشبكة\" لنشر Nginx (SSL اختياري)."
9245
+ "nginxBody": "افتح علامة التبويب \"الشبكة\" لنشر Nginx (SSL اختياري).",
9246
+ "provisionOsAction": "Create system user"
8117
9247
  },
8118
9248
  "healthDetail": {
8119
9249
  "none": "لا يوجد فحص صحي حتى الآن",
@@ -8123,7 +9253,12 @@
8123
9253
  "httpStatus": "HTTP",
8124
9254
  "latency": "كمون",
8125
9255
  "error": "خطأ",
8126
- "at": "تم التحقق في"
9256
+ "at": "تم التحقق في",
9257
+ "deployMode": "Deploy mode",
9258
+ "edgeKind": "Edge",
9259
+ "goLiveOk": "Go-live",
9260
+ "goLiveAt": "Go-live at",
9261
+ "degraded": "Degraded"
8127
9262
  },
8128
9263
  "railPhp": "PHP/ الموقع",
8129
9264
  "railStatic": "موقع ثابت",
@@ -8556,12 +9691,12 @@
8556
9691
  "php": "PHP",
8557
9692
  "node": "Node.js",
8558
9693
  "static": "ثابت",
8559
- "python": "Python",
8560
- "go": "Go",
8561
- "rust": "Rust",
8562
- "java": "Java",
8563
- "kotlin": "Kotlin",
8564
- "bun": "Bun"
9694
+ "python": "بايثون",
9695
+ "go": "يذهب",
9696
+ "rust": "الصدأ",
9697
+ "java": "جافا",
9698
+ "kotlin": "كوتلين",
9699
+ "bun": "كعكة"
8565
9700
  },
8566
9701
  "netCacheTitle": "مخبأ",
8567
9702
  "logsDeepAccess": "مركز السجل · الوصول",
@@ -8598,16 +9733,132 @@
8598
9733
  "netPublishMaint": "صيانة",
8599
9734
  "sslNeedDomain": "قم بتعيين المجال قبل نشر Nginx / SSL.",
8600
9735
  "createTemplateMissing": "{{v0}} ;「 — —」.",
8601
- "deleteDialogDesc": "「{{v0}}」..",
9736
+ "deleteDialogDesc": "「{{name}}」..",
8602
9737
  "deleteWillStop": "سيستيم دي / بي ام 2 /",
8603
9738
  "deleteWillWeb": "Nginx conf، تجمع PHP-FPM، Apache vhost()",
8604
9739
  "deleteWillOs": "منزل لينكس ()",
8605
9740
  "deleteKeepOs": "المنزل لينكس ()",
8606
9741
  "deleteWillDb": "…",
8607
9742
  "deleteRemoveFilesDesc": "يلغي،",
8608
- "deleteTypeNameHint": "「{{v0}}」",
9743
+ "deleteTypeNameHint": "「{{name}}」",
8609
9744
  "deleteDnsWarn": "منطقة / مجال DNS .",
8610
- "manageInNginx": "الإدارة في Nginx"
9745
+ "manageInNginx": "الإدارة في Nginx",
9746
+ "advFtpHomeApp": "دليل app للموقع",
9747
+ "advFtpHomeRoot": "منزل المشروع (كامل)",
9748
+ "advFtpManage": "فتح صفحة FTP",
9749
+ "listDesc": "إدارة المواقع على هذا المضيف.",
9750
+ "resShell": "قذيفة تسجيل الدخول",
9751
+ "resSaveHint": "حفظ وتطبيق تغييرات نظام التشغيل المباشر. تقوم طائرة التحكم بتخزين النموذج فقط. تستخدم إعادة التطبيق آخر القيم المحفوظة.",
9752
+ "resBashConfirmTitle": "هل تسمح بالباش التفاعلي؟",
9753
+ "resBashConfirmDesc": "وهذا يمنح قذيفة تسجيل دخول تفاعلية لمستخدم المشروع. قم بالتأكيد فقط إذا كنت بحاجة إلى SSH أو PTY باعتبارك هذا المستخدم.",
9754
+ "noPathSepHint": "لا يمكن أن يحتوي الاسم على / أو \\.",
9755
+ "createGitHint": "خياري. مخزنة في المشروع استنساخ من علامة التبويب نشر (لا يتم الاستنساخ عند الإنشاء).",
9756
+ "gitBranch": "فرع",
9757
+ "gitBranchHint": "Branch or tag. Empty uses the remote default. First clone is shallow (depth 1).",
9758
+ "gitLastRef": "آخر مزامنة: {{branch}} @ {{commit}}",
9759
+ "gitConfirmTitle": "استنساخ في هذا المشروع؟",
9760
+ "gitConfirmBody": "إذا ظل app/ هو العنصر النائب لـ Hello World، فسيتم مسحه ثم استنساخه. يتم رفض الملفات المخصصة التي ليست سقالة YSK.",
9761
+ "runtimeActual": "الثنائي الفعلي {{path}}",
9762
+ "gitConfirmRemoteBody": "يشير هذا إلى عنوان URL الجديد ويسحبه. تفشل التواريخ غير ذات الصلة؛ لا يتم مسح الملفات المخصصة.",
9763
+ "runtimeFallback": "تم الاختيار {{version}} غير موجود في هذا المضيف. استخدامات العملية {{path}}.",
9764
+ "gitSync": "مزامنة",
9765
+ "gitFetch": "أحضر",
9766
+ "gitCheckout": "الدفع",
9767
+ "gitReset": "إعادة تعيين إلى جهاز التحكم عن بعد",
9768
+ "gitDeepen": "جلب التاريخ الكامل",
9769
+ "gitLogTitle": "الالتزامات الأخيرة",
9770
+ "gitDirtyTitle": "التغييرات المحلية تمنع السحب",
9771
+ "gitDirtyBody": "{{count}} تختلف الملفات عن Git (تحرير الملفات أو التطبيق). تجاهلهم أو إحباطهم.",
9772
+ "gitDiscard": "تجاهل الملفات المحلية",
9773
+ "gitOpenFiles": "فتح في الملفات",
9774
+ "gitNotCloned": "غير مستنسخة",
9775
+ "gitClean": "ينظف",
9776
+ "gitDirty": "متسخ",
9777
+ "gitBehind": "خلف {{count}}",
9778
+ "gitAhead": "إلى الأمام {{count}}",
9779
+ "gitDetached": "مثبت",
9780
+ "gitShallow": "أجوف",
9781
+ "gitMissing": "بوابة مفقودة",
9782
+ "gitResetConfirmTitle": "إعادة تعيين الصعب على جهاز التحكم عن بعد؟",
9783
+ "gitResetConfirmBody": "يؤدي هذا إلى تجاهل سجل Git المحلي والملفات التي لم يتم تعقبها باستثناء .env، ثم استعادة .env من مستوى التحكم.",
9784
+ "gitHeads": "الفروع النائية",
9785
+ "gitToken": "رمز HTTPS",
9786
+ "gitTokenHint": "Personal access token. Stored encrypted; never written into the remote URL.",
9787
+ "gitTokenPlaceholder": "ghp_… أو glpat-…",
9788
+ "gitTokenSet": "مجموعة الرمز المميز",
9789
+ "gitSaveToken": "حفظ الرمز المميز",
9790
+ "gitClearToken": "رمز واضح",
9791
+ "gitDeployKey": "نشر المفتاح العام",
9792
+ "gitDeployKeyHint": "أضف هذا كمفتاح نشر للقراءة فقط على مضيف Git.",
9793
+ "gitDeployKeyOn": "نشر المفتاح",
9794
+ "gitMakeKey": "إنشاء مفتاح النشر",
9795
+ "gitCopyPub": "انسخ المفتاح العام",
9796
+ "gitClearKey": "مسح مفتاح النشر",
9797
+ "gitKeyCopied": "تم نسخ المفتاح العام",
9798
+ "gitPinHost": "دبوس مفتاح المضيف",
9799
+ "gitPinHostBody": "{{host}} غير مثبت. قم بتأكيد بصمات الأصابع، ثم قم بتثبيتها قبل استنساخ SSH.",
9800
+ "gitHostUnpinned": "مفتاح المضيف غير مثبت",
9801
+ "gitHookTitle": "Inbound hook",
9802
+ "gitHookHint": "Paste POST /api/v1/hooks/git/<id> into GitHub / Gitea / GitLab yourself (push events). Not Slack. Secret is HMAC or X-YSK-Git-Hook.",
9803
+ "gitHookOn": "Hook on",
9804
+ "gitHookOff": "Hook off",
9805
+ "gitHookEnable": "Enable hook",
9806
+ "gitHookRotate": "تدوير سر",
9807
+ "gitHookDisable": "Disable hook",
9808
+ "gitHookSecretOnce": "Copy this secret now — it is not stored in the page after you leave.",
9809
+ "gitHookCopyUrl": "Copy URL",
9810
+ "gitHookCopySecret": "نسخ السر",
9811
+ "gitHookCopied": "منقول",
9812
+ "gitHookSetup": "Add the webhook yourself. Payload URL = the URL above. Content type application/json. Events: push only. Secret = the one-time value.",
9813
+ "gitHookGithub": "GitHub: Settings → Webhooks → Add webhook. Content type application/json. Events: Just the push event. GitHub.com requires HTTPS.",
9814
+ "gitHookGitea": "Gitea: Settings → Webhooks → Add Webhook → Gitea. HTTP Method POST. Push events.",
9815
+ "gitHookGitlab": "GitLab: Settings → Webhooks. Trigger: Push events. Secret token = the hook secret (sent as X-Gitlab-Token).",
9816
+ "gitHookHonesty": "The host unit must have YSK_EXECUTE=1. Without it the hook answers but does not clone or deploy.",
9817
+ "gitHookSkipOther": "Pushes to other branches are ignored. Only the project ref syncs.",
9818
+ "gitAuthHttps": "رمز HTTPS",
9819
+ "gitAuthSsh": "مفتاح نشر SSH",
9820
+ "gitLoadRefs": "تحميل الفروع",
9821
+ "gitRefDefault": "الافتراضي عن بعد",
9822
+ "gitRefBranches": "الفروع",
9823
+ "gitRefTags": "العلامات",
9824
+ "gitRefOther": "مرجع آخر…",
9825
+ "gitRefCustom": "الالتزام أو المرجع",
9826
+ "gitRefsNeedUrl": "أدخل عنوان URL أولاً.",
9827
+ "gitRefsNeedAuth": "احفظ رمزًا مميزًا أو مفتاح نشر، ثم قم بتحميل الفروع.",
9828
+ "gitRefsHint": "تحميل من جهاز التحكم عن بعد. اختر واحدة - لا تكتب.",
9829
+ "gitHookSetupToggle": "كيفية لصق هذا",
9830
+ "gitHookOneLiner": "HMAC أو X-YSK-Git-Hook. فقط مرجع هذا المشروع.",
9831
+ "gitHookExecuteHint": "يحتاج YSK_EXECUTE=1 للاستنساخ أو النشر.",
9832
+ "gitShowKey": "إظهار المفتاح",
9833
+ "gitHideKey": "يخفي",
9834
+ "gitBehindShort": "↓{{count}}",
9835
+ "gitAheadShort": "↑{{count}}",
9836
+ "gitDirtyShort": "قذر · {{count}}",
9837
+ "gitFilesLink": "ملفات",
9838
+ "gitTokenLaterHint": "يتم تعيين رمز HTTPS المميز وعمق الاستنساخ في علامة تبويب نشر المشروع بعد الإنشاء.",
9839
+ "netForceHttpsOn": "سيقوم HTTP بإعادة التوجيه إلى HTTPS بعد نشر الحافة.",
9840
+ "netForceHttpsOff": "لا يتم تخزين أي إعادة توجيه قسري.",
9841
+ "netHttpsLiveNotForced": "يوجد ملف حافة؛ قد يعمل HTTPS بالفعل. يفرض هذا المربع فقط HTTP → HTTPS.",
9842
+ "gitSyncBlockedDirty": "يتم تعطيل المزامنة حتى يتم تجاهل التغييرات المحلية (إعادة التعيين) أو تطابق الملفات مع Git.",
9843
+ "gitViewDiff": "عرض الفرق",
9844
+ "gitBranchAfterUrl": "أدخل عنوان Git أولاً. الفراغ يستخدم الفرع الافتراضي البعيد.",
9845
+ "gitResetNeedConfirm": "يلزم التأكيد — يتجاهل التزامات Git المحلية",
9846
+ "openUrlNeedDomain": "قم بتعيين المجال أولاً – لا تفتح 127.0.0.1 في متصفحك",
9847
+ "needOsUser": "قم بإنشاء مستخدم النظام في علامة التبويب \"العزل\" أولاً",
9848
+ "stopTitle": "إيقاف هذا المشروع (وحدة النظام والموقع العام)",
9849
+ "deployTitle": "نشر هذا المشروع",
9850
+ "httpStatsHint": "من سجل الوصول لهذا المشروع (العينة الأخيرة)",
9851
+ "httpStatsNone": "لا يوجد سجل وصول للمشروع حتى الآن",
9852
+ "statStoppedOnly": "توقف",
9853
+ "statReadyOnly": "مستعد",
9854
+ "netBoundCert": "الشهادة المرتبطة",
9855
+ "netBoundCertExpiry": "تنتهي {{at}}",
9856
+ "netNoBoundCert": "لا شهادة على القرص لهذا الاسم",
9857
+ "netForceHttpsNeedCert": "أصدر شهادة على /ssl لهذا النطاق قبل فرض HTTPS.",
9858
+ "goIsolation": "Open Isolation tab",
9859
+ "netHstsNeedHttps": "Turn on force HTTPS first",
9860
+ "homeMissing": "Home directory does not exist",
9861
+ "homeMissingHint": "Same live probe as migrate inventory — create the system user on Isolation"
8611
9862
  },
8612
9863
  "protection": {
8613
9864
  "levels": {
@@ -8641,7 +9892,9 @@
8641
9892
  "note": {
8642
9893
  "notApplied": "لا يتم تطبيقه على المضيف (يحتاج إلى الجذر + YSK_EXECUTE=1) - يتم حفظه في إعدادات اللوحة",
8643
9894
  "nginxWritten": "كتب ملف لوحة الحد الأقصى لمعدل Nginx",
8644
- "f2bWritten": "كتب إعدادات لوحة Fail2ban"
9895
+ "f2bWritten": "كتب إعدادات لوحة fail2ban",
9896
+ "hintDropped": "Internal protection hint omitted",
9897
+ "nginxLimits": "Will write Nginx rate-limit snippet"
8645
9898
  },
8646
9899
  "rel": {
8647
9900
  "justNow": "الآن",
@@ -8740,7 +9993,7 @@
8740
9993
  "signalDdos": "DDoS ارشادي",
8741
9994
  "signalTcp": "اتصالات TCP",
8742
9995
  "signalUfwOff": "UFW معطل",
8743
- "signalF2bBans": "عدد الحظر Fail2ban",
9996
+ "signalF2bBans": "عدد الحظر fail2ban",
8744
9997
  "weightHint": "{{label}} الوزن 0–3",
8745
9998
  "detected": "(مُكتَشَف)",
8746
9999
  "notSet": "(غير محدد)",
@@ -8760,7 +10013,7 @@
8760
10013
  "whitelistPlus": "القائمة البيضاء + {{ip}}",
8761
10014
  "whitelistAdded": "تمت إضافته إلى القائمة البيضاء",
8762
10015
  "activeBansTitle": "الحظر النشط ({{count}})",
8763
- "activeBansDesc": "إجمالي الحماية · إلغاء الحظر عبر واجهة برمجة التطبيقات الدفاعية (مثل Fail2ban-client)",
10016
+ "activeBansDesc": "إجمالي الحماية · إلغاء الحظر عبر واجهة برمجة التطبيقات الدفاعية (مثل fail2ban-client)",
8764
10017
  "source": "مصدر",
8765
10018
  "unbanned": "غير محظور",
8766
10019
  "noBans": "لا يوجد حظر",
@@ -8889,7 +10142,7 @@
8889
10142
  "jailsWhitelistPolicy": "السجون · القائمة البيضاء · السياسة",
8890
10143
  "divisionTitle": "تقسيم العمل",
8891
10144
  "divisionUfw": "UFW = المنافذ المفتوحة، رفض IP الدائم",
8892
- "divisionF2b": "Fail2ban = حظر مؤقت بعد فحص السجل",
10145
+ "divisionF2b": "fail2ban = حظر مؤقت بعد فحص السجل",
8893
10146
  "divisionDefense": "هذه الصفحة = تنسيق الهجوم (المعدلات المسبقة + الحظر التلقائي + المشتبه بهم)",
8894
10147
  "autoBanLabel": "الحظر التلقائي",
8895
10148
  "scanOnce": "مسح مرة واحدة",
@@ -8900,13 +10153,13 @@
8900
10153
  "alreadyBanned": "محظور",
8901
10154
  "whitelist": "القائمة البيضاء",
8902
10155
  "bansWorkflow": "الرد: قائمة المشتبه بهم → الحظر/إلغاء الحظر. سياسة السجن، التجاهل، دورة حياة الخدمة:",
8903
- "f2bTool": "أداة Fail2ban",
10156
+ "f2bTool": "أداة fail2ban",
8904
10157
  "noSecondJail": "(لا يوجد محرر سجن ثاني هنا).",
8905
10158
  "autoBanWhitelistTitle": "القائمة البيضاء للحظر التلقائي",
8906
- "autoBanWhitelistDesc": "استثناءات الحماية من الحظر التلقائي (مزامنة Fail2banignoip",
10159
+ "autoBanWhitelistDesc": "استثناءات الحماية من الحظر التلقائي (مزامنة fail2banignoip",
8907
10160
  "ignoreipWhitelist": "تجاهل القائمة البيضاء",
8908
10161
  "notSetSuggestAdmin": "لم يتم التعيين (أضف عنوان IP الخاص بالمشرف)",
8909
- "moreItems": "… {{n}} المزيد · راجع القائمة البيضاء لـ Fail2ban",
10162
+ "moreItems": "… {{n}} المزيد · راجع القائمة البيضاء لـ fail2ban",
8910
10163
  "add": "يضيف",
8911
10164
  "manualBanTitle": "الحظر اليدوي",
8912
10165
  "methodFollows": "الطريقة تتبع التحديد أعلاه (fail2ban / UFW)",
@@ -8955,7 +10208,69 @@
8955
10208
  "plusRegion": "+ المنطقة {{v}}",
8956
10209
  "plusCity": "+ المدينة {{v}}",
8957
10210
  "lastTickPrefix": "· الأخير {{t}}",
8958
- "nextTickPrefix": "· التالي {{t}}"
10211
+ "nextTickPrefix": "· التالي {{t}}",
10212
+ "stackApply": "تطبيق مكدس الحماية (UFW، Fail2ban، الإعداد المسبق)",
10213
+ "stackApplyDone": "تم طلب تطبيق مكدس الحماية",
10214
+ "stackApplyHint": "يؤدي ذلك إلى تمكين UFW وتطبيق Fail2ban بالإضافة إلى الإعداد المسبق المقترح. تأكد من أنك لن تمنع نفسك من الدخول إلى اللوحة البعيدة.",
10215
+ "cannotBanSelf": "لا يمكن حظر {{ip}} — هذا المضيف أو IP الدخول أو ignoreip",
10216
+ "selfIp": "هذا المضيف",
10217
+ "selfHostIp": "عنوان IP المضيف",
10218
+ "selfLoginIp": "IP تسجيل الدخول الخاص بك",
10219
+ "showZeroScore": "عرض 0-النتيجة",
10220
+ "hideZeroScore": "إخفاء 0-النتيجة",
10221
+ "freshnessNa": "غير متوفر",
10222
+ "geoDraftOnly": "السياسة متوقفة — الحفظ مسودة فقط. لن يطبّق Nginx حتى تفعّلها.",
10223
+ "selectAllCountriesWarn": "تحديد كل الدول في قائمة الحظر؟ قد يُقفل هذا المضيف وبلد تسجيل الدخول.",
10224
+ "badgeRecommendPreset": "يُستحسن إعداد أقوى للتهديد الحالي",
10225
+ "badgeAutomationOn": "الأتمتة قيد التشغيل",
10226
+ "badgeBanCount": "الحظر النشط",
10227
+ "badgeGeoOn": "سياسة وصول Geo مفعّلة",
10228
+ "badgeGeoNotReady": "قاعدة GeoIP غير جاهزة",
10229
+ "badgeIntelSignals": "الإشارات التي تضيف للنقاط الآن",
10230
+ "signalActive": "نشط",
10231
+ "signalInactive": "غير نشط",
10232
+ "signalJails": "{{n}} jail",
10233
+ "dbReadyHint": "ملفات MMDB موجودة",
10234
+ "dbNotReadyHint": "نزّل قاعدة GeoIP أولاً",
10235
+ "staleHint": "هل مرّ أكثر من 7 أيام على آخر تحديث ناجح",
10236
+ "statSuspects": "عناوين IP المشبوهة",
10237
+ "scoreBasisHint": "تستخدم درجة التهديد جدار الحماية، وحجم حظر الفشل 2ban، وإشارات معدل الطلب - وليس نفس العدد مثل قائمة إنتل المشبوهة.",
10238
+ "geoNeedDb": "قواعد بيانات GeoIP مفقودة — قم بتحديث ملفات MMDB أولاً",
10239
+ "colHits": "الضربات",
10240
+ "col429": "429",
10241
+ "topIpsTitle": "أعلى عناوين IP",
10242
+ "hitsCount": "{{n}} ضربة",
10243
+ "sampleWindowHint": "الأعداد من نافذة عينات access + auth الحالية، وليست من ملف السجل الكامل.",
10244
+ "statSuspectsSplit": "{{actionable}} actionable / {{total}} listed",
10245
+ "suspectActionableCount": "Actionable IPs {{count}}",
10246
+ "uaNeedZones": "Set a Cloudflare zone first",
10247
+ "banConfirmTitle": "Ban {{ip}}?",
10248
+ "banConfirmDesc": "This IP will be blocked on the host. Confirm it is not a current panel or session address.",
10249
+ "ufwOff": "UFW (off)",
10250
+ "ufwOffHint": "UFW is not active — fail2ban is the usable target.",
10251
+ "whitelistSyncHint": "{{n}} panel entries · fail2ban ignoreip sync: {{sync}}",
10252
+ "whitelistSyncOn": "on",
10253
+ "whitelistSyncOff": "off (lists may differ)",
10254
+ "draftBadge": "Draft",
10255
+ "banIsSelf": "This IP matches the current panel source or this host.",
10256
+ "banNotSelf": "This IP is not the current panel source.",
10257
+ "geoSourceLocal": "Local GeoIP library (sapics + DB-IP)",
10258
+ "nginxPreviewHint": "Nginx snippet this preset would write (preview only):",
10259
+ "modeValue": {
10260
+ "normal": "Normal",
10261
+ "degraded": "Degraded",
10262
+ "ddos-protection": "DDoS protection",
10263
+ "offline": "Offline"
10264
+ },
10265
+ "wlRemovedUndo": "Removed {{ip}} from the allow list. Undo within 5 seconds.",
10266
+ "undo": "Undo",
10267
+ "banSelectedConfirmTitle": "Ban {{count}} selected IPs?",
10268
+ "banSelectedConfirmDesc": "These addresses will be blocked on the host: {{ips}}",
10269
+ "freshnessMissing": "No database",
10270
+ "freshnessStale": "Stale",
10271
+ "freshnessFresh": "Current",
10272
+ "banConfirmMethod": "Method: {{method}}",
10273
+ "banConfirmUntilUnban": "Stays banned until you unban it (or fail2ban expiry)."
8959
10274
  },
8960
10275
  "publicFiles": {
8961
10276
  "notSet": "لم يتم ضبطه",
@@ -8987,7 +10302,24 @@
8987
10302
  "diskRoot": "جذر القرص",
8988
10303
  "filesInRoot": "إدخالات",
8989
10304
  "managedConf": "أسيوط المدارة",
8990
- "systemConf": "مؤتمرات النظام"
10305
+ "systemConf": "مؤتمرات النظام",
10306
+ "notes": {
10307
+ "noManagedConf": "لم يتم إدارة Nginx conf حتى الآن - انقر فوق \"تطبيق\".",
10308
+ "notSynced": "يوجد ملف conf مُدار ولكنه ليس ضمن /etc/nginx/conf.d - قم بتطبيقه مرة أخرى كجذر باستخدام YSK_EXECUTE"
10309
+ },
10310
+ "autoindex": "قائمة الدليل (الفهرسة التلقائية)",
10311
+ "liveSystemConf": "إعداد النظام الحي: {{path}}",
10312
+ "publicRootNote": "جذر عام: {{path}}",
10313
+ "applyConfirmTitle": "تطبيق موقع الملفات العامة؟",
10314
+ "applyConfirmDesc": "كتابة Nginx server_name {{name}} وإعادة تحميل Nginx.",
10315
+ "serverNameMismatch": "الإعداد الحي يستخدم {{live}}؛ النموذج فيه {{draft}}. طبّق للاستبدال.",
10316
+ "executeFlag": "Execute",
10317
+ "asRoot": "Root",
10318
+ "statusDraft": "Draft / not applied",
10319
+ "liveName": "Live name",
10320
+ "draftName": "Draft name",
10321
+ "draftUnapplied": "This draft is not applied. Nginx still serves the live name.",
10322
+ "discardDraft": "Discard draft"
8991
10323
  },
8992
10324
  "rbac": {
8993
10325
  "permissions": "الأذونات",
@@ -9071,7 +10403,13 @@
9071
10403
  "auditExport": "تصدير التدقيق",
9072
10404
  "securityApiKeysAdmin": "مسؤول مفاتيح API",
9073
10405
  "networkBrowse": "تصفح الويب بوساطة المضيف",
9074
- "networkVnc": "سطح المكتب البعيد VNC"
10406
+ "networkVnc": "سطح المكتب البعيد VNC",
10407
+ "validatorsRead": "المدققون (قراءة)",
10408
+ "validatorsManage": "المدققون إدارة",
10409
+ "validatorsWipe": "المدققون مسح البيانات",
10410
+ "dockerRead": "Docker (قراءة)",
10411
+ "dockerManage": "Docker إدارة",
10412
+ "dockerWipe": "Docker حذف / تنظيف"
9075
10413
  },
9076
10414
  "aboutRoles": "الأدوار (افتراضيات المصنع)",
9077
10415
  "aboutRolesBody": "تحدد الأدوار القدرات الافتراضية؛ يمكن للمستخدمين تجاوز تلك الفردية.",
@@ -9087,7 +10425,14 @@
9087
10425
  "capabilitiesHint": "قم بتبديل ما قد يفعله هذا الدور",
9088
10426
  "enabledCount": "{{enabled}} من {{total}} ممكّنة",
9089
10427
  "bandAboveMax": "فوق المستوى الأقصى",
9090
- "dirtyHint": "حسب الطلب (يختلف عن المصنع)"
10428
+ "dirtyHint": "حسب الطلب (يختلف عن المصنع)",
10429
+ "unsaved": "غير محفوظة",
10430
+ "unsavedHint": "التعديلات غير المحفوظة على هذا الدور",
10431
+ "nothingToSave": "لا شيء للحفظ",
10432
+ "saveRole": "حفظ {{role}} السياسة",
10433
+ "discardTitle": "هل تريد تجاهل السياسة غير المحفوظة؟",
10434
+ "discardDesc": "يؤدي تبديل الأدوار إلى إسقاط تعديلات الإمكانات غير المحفوظة.",
10435
+ "roleUnavailable": "Not available for this role"
9091
10436
  },
9092
10437
  "readiness": {
9093
10438
  "cat": {
@@ -9161,7 +10506,7 @@
9161
10506
  "scMetrics": "مقاييس المضيف",
9162
10507
  "scMetricsD": "تحميل · الذاكرة · التنبيهات",
9163
10508
  "scProtection": "مركز الدفاع",
9164
- "scProtectionD": "استجابة · UFW · Fail2ban",
10509
+ "scProtectionD": "استجابة · UFW · fail2ban",
9165
10510
  "policyNote": "السياسة: لا تتم المطالبة تلقائيًا باكتمال البريد PTR / المنفذ 25 / DNS الخاص بالمسجل. HTTP 503 = تقرير غير جاهز ولكنه كامل (ليس نجاحاً زائفًا).",
9166
10511
  "notProbedTitle": "لم يتم التحقيق فيها بعد",
9167
10512
  "notProbedDesc": "انقر فوق \"إعادة التحقيق\" لبدء التحقق من الاستعداد للقراءة فقط.",
@@ -9198,7 +10543,38 @@
9198
10543
  "fixNow": "أصلح الآن",
9199
10544
  "fixFailed": "فشل الإصلاح",
9200
10545
  "fixDone": "تم تعزيز أذونات dataDir (chmod 750)",
9201
- "fixDoneWebUi": "تم إنشاء/تثبيت واجهة مستخدم الويب"
10546
+ "fixDoneWebUi": "تم إنشاء/تثبيت واجهة مستخدم الويب",
10547
+ "rootLabel": "المستخدم المتميز",
10548
+ "exportStarted": "جاري التحميل {{name}}",
10549
+ "blockersHint": "العوائق مجموعة فرعية حرجة من «ناقص» وليست فحوصات إضافية.",
10550
+ "techDetails": "التفاصيل الفنية",
10551
+ "missingOwner": "لم يتم تعيين مالك اللوحة (إسناد حصة الحزمة)",
10552
+ "notOsProvisioned": "لم يتم توفير مستخدم نظام التشغيل/المنزل بعد",
10553
+ "ondrejNone": "لم يتم اكتشاف أي مصادر PHP لـ ondrej Launchpad",
10554
+ "ondrejFound": "تم العثور على مصادر ondrej/php القديمة التي تتعارض مع packages.sury.org: {{paths}}",
10555
+ "ondrejTitle": "مصدر PHP المناسب (ondrej المتبقي)",
10556
+ "systemctlActive": "الخدمة قيد التشغيل",
10557
+ "systemctlStatus": "حالة الخدمة: {{status}}",
10558
+ "binInPath": "{{bin}} في المسار",
10559
+ "leftoverApache": "أباتشي بقايا الموقع الافتراضي",
10560
+ "leftoverVsftpd": "فشلت وحدة vsftpd",
10561
+ "leftoverCli": "بقايا CLI التي لا معنى لها",
10562
+ "leftoverNginx": "Nginx كاتش كل شيء مفقود",
10563
+ "leftoverDovecot": "يشير Dovecot TLS إلى الشهادة المفقودة",
10564
+ "leftoverOther": "بقايا المضيف",
10565
+ "leftoverApply": "تنطبق بقايا",
10566
+ "isolationOwnerDegrades": "يؤثر فقدان Owner_user_id على إسناد حصة الحزمة — الحالة متدهورة وليست جاهزة.",
10567
+ "totalChecks": "All checks",
10568
+ "totalChecksHint": "Ready + degraded + missing = this total. Blockers are the critical missing subset.",
10569
+ "requireAdminTotp": "require admin 2FA policy",
10570
+ "listenBind": "listen address",
10571
+ "item": {
10572
+ "admin2fa": "Admin two-factor"
10573
+ },
10574
+ "dataDirPerms": "panel data-directory permissions",
10575
+ "mode750": "mode 750",
10576
+ "gateBlocked": "Not passed · {{n}} missing",
10577
+ "isolationPendingOs": "Same as project status: OS user pending. Open Isolation to provision the system user and home."
9202
10578
  },
9203
10579
  "redis": {
9204
10580
  "neverExpire": "لا تنتهي صلاحيته أبدًا",
@@ -9266,7 +10642,30 @@
9266
10642
  "pickKey": "حدد مفتاحًا على اليسار لعرض المحتوى.",
9267
10643
  "ttlPrefix": "تل: {{ttl}}",
9268
10644
  "writeLiveHint": "يكتب العيش ريديس. لا يمكن التراجع عن اللوحة بنقرة واحدة.",
9269
- "refPath": "المرجع: {{path}}"
10645
+ "refPath": "المرجع: {{path}}",
10646
+ "dbEmptyMark": " · فارغ",
10647
+ "noRequirepass": "وضع الحماية يعمل لكن requirepass فارغ أو غير مقروء — لا كلمة مرور.",
10648
+ "setRequirepass": "تعيين كلمة المرور",
10649
+ "rdbOnlyLossHint": "AOF متوقف وRDB يعمل. إعادة التشغيل أو الانهيار قد تفقد كتابات حديثة.",
10650
+ "dirDataContainer": "/ البيانات (الحاوية)",
10651
+ "dirHostDefault": "/var/lib/redis",
10652
+ "dirDefaultInstance": "/var/lib/redis/default",
10653
+ "dirDataWarn": "/ البيانات عادة ما تكون مسار حاوية؛ لا يمكن لهذه اللوحة تأكيد وجودها.",
10654
+ "saveOff": "تعطيل اللقطات (غير مستحسن)",
10655
+ "saveOffWarn": "تؤدي سلسلة الحفظ الفارغة إلى إيقاف تشغيل لقطات RDB. يمكن أن يؤدي العطل إلى فقدان جميع البيانات إذا تم إيقاف تشغيل AOF أيضًا.",
10656
+ "dirMoveWarn": "تغيير دير لا ينقل dump.rdb / AOF. تستخدم البداية التالية المسار الجديد كما هو.",
10657
+ "passwordUnset": "لم يتم تعيينه على الخدمة",
10658
+ "passwordSetHidden": "مجموعة (غير معروضة)",
10659
+ "scanHint": "Uses SCAN, not KEYS. Returns at most {{n}} keys — avoid * on huge databases.",
10660
+ "scanCapped": "Showing the first {{n}} matches.",
10661
+ "dbOptionKeys": "DB {{i}} · {{n}} keys",
10662
+ "dbOptionEmpty": "DB {{i}} · empty",
10663
+ "insecureShort": "No password",
10664
+ "generateRequirepass": "Generate and apply password",
10665
+ "generateRequirepassTitle": "Generate a Redis password?",
10666
+ "generateRequirepassDesc": "Writes requirepass and restarts Redis. The password is shown once. Host change needs EXECUTE.",
10667
+ "generateRequirepassDone": "Redis password applied",
10668
+ "generatedOnce": "Generated password (shown once): {{password}}"
9270
10669
  },
9271
10670
  "resources": {
9272
10671
  "created": "مخلوق",
@@ -9734,7 +11133,29 @@
9734
11133
  "projectsCount": "مشاريع YSK",
9735
11134
  "noProjects": "لا مشاريع",
9736
11135
  "noProjectsDesc": "لا توجد مشاريع عقدة/كعكة في اللوحة، أو لم يتم توفير مستخدم نظام التشغيل.",
9737
- "pm2OnlyDesc": "بدأت التطبيقات فقط مع PM2 ضمن مستخدم اللوحة. تظهر عمليات نشر systemd أعلاه."
11136
+ "pm2OnlyDesc": "بدأت التطبيقات فقط مع PM2 ضمن مستخدم اللوحة. تظهر عمليات نشر systemd أعلاه.",
11137
+ "startupTitle": "البدء في التمهيد",
11138
+ "startupDesc": "قم بتسجيل PM2 حتى تعود العمليات بعد إعادة التشغيل.",
11139
+ "systemdActionsHint": "تحتاج إجراءات systemd إلى الجذر وYSK_EXECUTE.",
11140
+ "startupOk": "Startup registered. {{notes}}",
11141
+ "startupFail": "Could not register startup. {{notes}}",
11142
+ "actionOk": "{{action}} {{name}} — {{notes}}",
11143
+ "actionFail": "Could not {{action}} {{name}}. {{notes}}",
11144
+ "startupReady": "Ready",
11145
+ "startupReadyYes": "Yes",
11146
+ "startupReadyNo": "No",
11147
+ "startupUnit": "Unit",
11148
+ "startupDump": "Dump",
11149
+ "startupInstall": "Install startup",
11150
+ "startupSave": "Save process list",
11151
+ "actRestart": "Restart",
11152
+ "actStop": "Stop",
11153
+ "actReload": "Reload",
11154
+ "pm2ActionsHint": "PM2 actions apply to the panel user’s process list only.",
11155
+ "noteUnparsed": "PM2 list could not be parsed (empty or unexpected output).",
11156
+ "notePanelUserOnly": "PM2 list is for the panel process user only.",
11157
+ "noteProjectUnits": "{{n}} YSK project unit(s) listed",
11158
+ "glossary": "PM2 = process manager; SSE = live stream."
9738
11159
  },
9739
11160
  "recordedInstalled": "تم التسجيل {{v}}",
9740
11161
  "remoteSourceSuffix": "({{source}})",
@@ -9788,7 +11209,32 @@
9788
11209
  "path": "طريق",
9789
11210
  "fullVersion": "النسخة الكاملة",
9790
11211
  "useListForDefaults": "لتغيير المضيف أو اللوحة الافتراضية، أو إزالة هذا الإصدار، استخدم القائمة أعلاه.",
9791
- "alreadyHostDefaultShort": "المضيف الافتراضي"
11212
+ "alreadyHostDefaultShort": "المضيف الافتراضي",
11213
+ "managedPathMissingTitle": "مسار {{name}} مُدار غير جاهز",
11214
+ "managedPathMissing": "إدارة YSK {{name}} للإصدار {{version}} ليست جاهزة. إعادة التحقيق أو إعادة التثبيت.",
11215
+ "installRecordedCta": "تم تسجيل التثبيت {{v}}",
11216
+ "targetMissing": "الإصدار المستهدف غير مثبت",
11217
+ "targetMissingHint": "الإصدار المستهدف {{version}} غير موجود على هذا المضيف. اربط إصدارًا مثبتًا أو ثبّت هذا التثبيت.",
11218
+ "needsInstall": "يحتاج تثبيتاً",
11219
+ "needsInstallHint": "ليس على هذا المضيف. ثبّته أولاً أو اختر إصداراً مثبتاً.",
11220
+ "unitBytes": "بايت",
11221
+ "headerSizeKb": "{{n}} كيلو بايت",
11222
+ "phpIniChipEmpty": "غير محمّل — افتح تبويب php.ini",
11223
+ "phpFpmService": "PHP-التيار الوطني الحر",
11224
+ "phpFpmServiceDesc": "بدء أو إيقاف أو إعادة تحميل أو إعادة تشغيل وحدة PHP-FPM",
11225
+ "rustupDefaultMissingTitle": "لا سلسلة أدوات rustup افتراضية",
11226
+ "rustupDefaultMissing": "لا افتراضي لـ rustup. عيّن stable في تبويب البرمجيات.",
11227
+ "rustupDefaultMissingShort": "لا توجد سلسلة أدوات افتراضية",
11228
+ "rustupSetDefaultHint": "تعيين سلسلة الأدوات الافتراضية",
11229
+ "uninstalledCountHint": "{{n}} إصدارًا ليس على هذا المضيف",
11230
+ "applyPhpVhostTitle": "يحتاج إلى تأكيد - يكتب ملفات التجمع/vhost",
11231
+ "applyPhpVhostDesc": "سوف يكتب {{pool}} تجمع و {{domain}} vhost. تحديث الخدمات: {{reload}}.",
11232
+ "binaryPath": "مسار البرنامج",
11233
+ "installedLabel": "Installed",
11234
+ "installedHint": "Host probe result — not the control-plane record",
11235
+ "targetHint": "Version this page will install or pin",
11236
+ "rebuildFromHost": "Rebuild record from host",
11237
+ "rebuiltFromHost": "Record refreshed from host probe"
9792
11238
  },
9793
11239
  "search": {
9794
11240
  "placeholder": "صفحات البحث والموارد...",
@@ -9797,21 +11243,25 @@
9797
11243
  "loading": "البحث…",
9798
11244
  "noResults": "لا توجد مباريات",
9799
11245
  "kinds": {
9800
- "page": "Pages",
9801
- "project": "Projects",
9802
- "email": "Email",
9803
- "mailbox": "Mailboxes",
11246
+ "page": "الصفحات",
11247
+ "project": "المشاريع",
11248
+ "email": "بريد إلكتروني",
11249
+ "mailbox": "صناديق البريد",
9804
11250
  "ssl": "SSL",
9805
11251
  "dns": "DNS",
9806
- "nginx": "Nginx",
9807
- "share": "Shares",
11252
+ "nginx": "نجينكس",
11253
+ "share": "أسهم",
9808
11254
  "ftp": "FTP",
9809
11255
  "mysql": "MySQL",
9810
11256
  "postgres": "PostgreSQL",
9811
- "redis": "Redis",
9812
- "cron": "Cron",
9813
- "user": "Users",
9814
- "other": "Other"
11257
+ "redis": "ريديس",
11258
+ "cron": "كرون",
11259
+ "user": "المستخدمين",
11260
+ "other": "آخر"
11261
+ },
11262
+ "alias": {
11263
+ "ssl": "شهادة شهادة شهادة",
11264
+ "projects": "مواقع المشروع"
9815
11265
  }
9816
11266
  },
9817
11267
  "security": {
@@ -9835,7 +11285,7 @@
9835
11285
  "tabApiKeys": "مفاتيح واجهة برمجة التطبيقات",
9836
11286
  "tabSsh": "SSH",
9837
11287
  "tabApprovals": "الموافقات",
9838
- "tabAllowlist": "القائمة المسموح بها",
11288
+ "tabAllowlist": "أدوات الوكيل",
9839
11289
  "apiTokenOnce": "رمز واجهة برمجة التطبيقات (يظهر مرة واحدة):",
9840
11290
  "copiedToken": "تم نسخ الرمز المميز",
9841
11291
  "totpTitle": "عامل ثنائي (TOTP)",
@@ -9919,8 +11369,8 @@
9919
11369
  "revokeAllDevices": "إبطال كافة الأجهزة",
9920
11370
  "revokedAllDevices": "تم إبطال جميع الأجهزة الموثوقة",
9921
11371
  "export2faBackup": "تصدير نسخة احتياطية مشفرة 2FA",
9922
- "fail2banSnippetMsg": "مقتطفات Fail2ban: {{written}} — {{notes}}",
9923
- "generateFail2ban": "إنشاء مقتطفات Fail2ban",
11372
+ "fail2banSnippetMsg": "مقتطفات fail2ban: {{written}} — {{notes}}",
11373
+ "generatefail2ban": "إنشاء مقتطفات fail2ban",
9924
11374
  "adminPolicyTitle": "سياسة 2FA المشرف",
9925
11375
  "adminPolicyDesc": "",
9926
11376
  "requireAdmin2fa": "تتطلب المشرف 2FA",
@@ -9940,8 +11390,8 @@
9940
11390
  "apiKeysEmpty": "لا توجد مفاتيح API حتى الآن",
9941
11391
  "apiKeysEmptyHint": "إنشاء من شريط الأدوات. ثم اتصل بواجهة برمجة التطبيقات باستخدام الرمز المميز لحاملها",
9942
11392
  "approve": "يعتمد",
9943
- "allowlistTitle": "القائمة المسموح بها ({{count}})",
9944
- "allowlistEmpty": "لا توجد أدوات القائمة المسموح بها",
11393
+ "allowlistTitle": "أدوات الوكيل ({{count}})",
11394
+ "allowlistEmpty": "لا توجد أدوات في الكتالوج",
9945
11395
  "createApiKeyTitle": "إنشاء مفتاح API",
9946
11396
  "createApiKeyDesc": "يتم عرض الرمز المميز الكامل مرة واحدة فقط بعد الإنشاء",
9947
11397
  "createKeyBtn": "إنشاء مفتاح",
@@ -10183,7 +11633,23 @@
10183
11633
  "sharePanelTitle": "مشاركة سر لوحة TOTP؟",
10184
11634
  "sharePanelDesc": "مخاطر عالية. اكتب مشترك للتأكيد.",
10185
11635
  "confirmString": "سلسلة التأكيد",
10186
- "enableShare": "تمكين المشاركة"
11636
+ "enableShare": "تمكين المشاركة",
11637
+ "invalidPub": "الصق سطر مفتاح OpenSSH العام كاملًا (ssh-ed25519 / ssh-rsa / ecdsa…).",
11638
+ "dryRunOk": "انتهت المعاينة. راجع المحتوى أدناه.",
11639
+ "strictBlocked": "الحزمة أو PAM غير جاهزة؛ لا يمكن تطبيق Strict.",
11640
+ "strictDryRun": "معاينة الوضع الصارم",
11641
+ "errorNoDetail": "فشل الاختبار (بدون تفاصيل)",
11642
+ "privCloseWithoutAck": "مغلق. لن يتم عرض المفتاح الخاص مرة أخرى؛ قم بإنشاء واحدة جديدة إذا لم تقم بحفظها.",
11643
+ "loginNoProjects": "لا مشاريع. قم بتفويض مستخدم Linux الحالي (الجذر/المختبر) أدناه. تحتاج كتابة /root/.ssh إلى YSK_EXECUTE=1.",
11644
+ "loginLinuxHint": "تستخدم عندما لا يوجد مشروع. على سبيل المثال: الجذر أو اختبار.",
11645
+ "pkgStatus": "Package {{status}}",
11646
+ "pamStatus": "PAM {{status}}",
11647
+ "kbdStatus": "sshd keyboard-interactive {{status}}",
11648
+ "light": {
11649
+ "green": "ok",
11650
+ "yellow": "check",
11651
+ "red": "missing"
11652
+ }
10187
11653
  },
10188
11654
  "sessionsActive": "جلسات نشطة",
10189
11655
  "sessionsOther": "أجهزة أخرى",
@@ -10206,7 +11672,52 @@
10206
11672
  "revokeOthersDesc": "سيؤدي هذا إلى إنهاء {{count}} جلسة (جلسات) أخرى. يظل متصفحك الحالي قيد تسجيل الدخول.",
10207
11673
  "sessionRevoked": "تم تسجيل الخروج من الجلسة",
10208
11674
  "mySecurityHint": "",
10209
- "policyTotpHint": "سياسة الموقع: يجب على كل مسؤول تمكين المصادقة الثنائية الخاصة به (QR الفردي)"
11675
+ "policyTotpHint": "سياسة الموقع: يجب على كل مسؤول تمكين المصادقة الثنائية الخاصة به (QR الفردي)",
11676
+ "requireUser2fa": "إلزام كل مستخدمي اللوحة بـ 2FA",
11677
+ "generateFail2ban": "إنشاء مقاطع fail2ban",
11678
+ "changePasswordTitle": "تغيير كلمة مرور تسجيل الدخول",
11679
+ "currentPassword": "كلمة المرور الحالية",
11680
+ "newPassword": "كلمة المرور الجديدة",
11681
+ "confirmNewPassword": "تأكيد كلمة المرور الجديدة",
11682
+ "passwordMismatch": "كلمتا المرور الجديدتان غير متطابقتين.",
11683
+ "changePassword": "تغيير كلمة المرور",
11684
+ "passwordChanged": "تم تحديث كلمة المرور.",
11685
+ "strictNeedsEnrolled": "يجب أن يملك أحد المسؤولين تحققًا بخطوتين قبل تشغيل Strict.",
11686
+ "policyTotpNeedSelf": "فعّل التحقق بخطوتين لهذا الحساب أولًا؛ وإلا لا يمكن إدخال رمز التأكيد.",
11687
+ "fail2banSnippetTitle": "مقطع fail2ban",
11688
+ "fail2banSnippetEmpty": "لم يُكتب أي مقطع.",
11689
+ "trustedDevicesTitle": "الأجهزة الموثوقة",
11690
+ "noTrustedDevices": "لا توجد أجهزة موثوقة.",
11691
+ "strictConfirmTitle": "تشغيل التحقق الصارم؟",
11692
+ "strictConfirmDesc": "سيُرفض دخول المستخدمين بلا تحقق بخطوتين. تأكد أن لديك TOTP أو Passkey يعمل.",
11693
+ "revokeDevicesTitle": "إلغاء الأجهزة الموثوقة؟",
11694
+ "revokeDevicesDesc": "ستحتاج المتصفحات المحفوظة إلى تحقق بخطوتين مجددًا.",
11695
+ "approvalsHint": "تظهر الموافقات عندما تحتاج أداة عالية المخاطر إلى مشغّل ثانٍ. اضبط الصلاحيات من المستخدمون → الصلاحيات.",
11696
+ "allowlistReadonly": "كتالوج أدوات الوكيل (للقراءة فقط). تُضبط القدرات من المستخدمون → الصلاحيات.",
11697
+ "colTool": "الأداة",
11698
+ "colAllowed": "مسموح",
11699
+ "colRisk": "المخاطر",
11700
+ "colApproval": "الموافقة",
11701
+ "risk": {
11702
+ "low": "منخفض",
11703
+ "medium": "متوسط",
11704
+ "high": "مرتفع",
11705
+ "critical": "حرج"
11706
+ },
11707
+ "totpStatusLoadFailed": "تعذّر تحميل حالة التحقق بخطوتين",
11708
+ "confirmDeleteApiKey": "هل تريد حذف مفتاح واجهة برمجة التطبيقات هذا؟",
11709
+ "confirmDeleteApiKeyDesc": "\"{{name}}\" سيتوقف عن المصادقة. لا يمكن التراجع عن هذا.",
11710
+ "policyNoTotpHint": "This account has no 2FA yet — saving policy does not need a TOTP. Set up 2FA above if you want to require it for others.",
11711
+ "sessionCli": "CLI",
11712
+ "sessionApi": "API",
11713
+ "statApiSessions": "جلسات API",
11714
+ "revokeOtherTitle": "تسجيل الخروج {{n}} جلسة (جلسات) أخرى",
11715
+ "policyNeedSelf2fa": "قم بتمكين المصادقة الثنائية على هذا الحساب أولاً، ثم قم بالتأكيد باستخدام رمز TOTP",
11716
+ "revokeAllDevicesTitle": "قم بإبطال كل جهاز تم تذكره — يجب عليك وعلى المسؤولين الآخرين التحقق من المصادقة الثنائية مرة أخرى",
11717
+ "statSshValue": "{{keys}} keys · {{auth}} authorized",
11718
+ "statSshHint": "Outbound identities / authorized login keys",
11719
+ "needCurrentPassword": "Enter the current password first",
11720
+ "passwordMin8": "New password must be at least 8 characters"
10210
11721
  },
10211
11722
  "serviceExposure": {
10212
11723
  "title": "الوصول إلى الشبكة",
@@ -10215,8 +11726,8 @@
10215
11726
  "manageDesc": "التحكم في كيفية الوصول إلى {{service}} على جدار الحماية المضيف.",
10216
11727
  "mode": "وضع الوصول",
10217
11728
  "modePrivate": "محلي فقط",
10218
- "modePublic": "Public",
10219
- "modeRestricted": "Restricted",
11729
+ "modePublic": "عام",
11730
+ "modeRestricted": "مقيد",
10220
11731
  "summaryPrivate": "غير مفتوح على جدار الحماية العام.",
10221
11732
  "summaryPublic": "مفتوح · {{ports}}",
10222
11733
  "summaryRestricted": "مقيد · {{count}} المصدر (المصادر)",
@@ -10224,9 +11735,9 @@
10224
11735
  "outOfSync": "خارج المزامنة",
10225
11736
  "firewallOff": "جدار الحماية معطل",
10226
11737
  "ufwMissing": "لم يتم تثبيت UFW",
10227
- "ufwInactive": "inactive",
10228
- "firewallLink": "Firewall",
10229
- "portsLabel": "Ports",
11738
+ "ufwInactive": "غير نشط",
11739
+ "firewallLink": "جدار الحماية",
11740
+ "portsLabel": "الموانئ",
10230
11741
  "allowFrom": "المصادر المسموح بها (IP / CIDR)",
10231
11742
  "allowCountries": "الدول المسموح بها (ISO)",
10232
11743
  "hintPrivate": "قد تستمر الخدمة في الاستماع على المضيف المحلي؛ لا توجد قواعد تسمح بقواعد UFW العامة.",
@@ -10237,7 +11748,19 @@
10237
11748
  "restrictedNeedSource": "أضف رمز IP/CIDR أو رمز البلد واحدًا على الأقل للوضع المقيد.",
10238
11749
  "privateStartTitle": "فضح {{service}} على الشبكة؟",
10239
11750
  "confirmAndStart": "تأكيد والبدء",
10240
- "cloudSgNote": "جدار حماية المضيف فقط - لم يتم تغيير مجموعات الأمان السحابية (AWS/GCP/Azure)."
11751
+ "cloudSgNote": "جدار حماية المضيف فقط - لم يتم تغيير مجموعات الأمان السحابية (AWS/GCP/Azure).",
11752
+ "modeUndecided": "لم يتم ضبطه",
11753
+ "modeLoading": "تحميل",
11754
+ "summaryUndecided": "لم يتم تأكيد وضع الوصول (الكتالوج الافتراضي: {{suggested}}).",
11755
+ "summaryNotEnforced": "جدار الحماية معطل - اللوحة لا تفتح هذه المنافذ أو تحجبها.",
11756
+ "roleSmtp": "إرسال SMTP",
11757
+ "roleImap": "صندوق بريد IMAP/POP3",
11758
+ "serviceNotInstalled": "لم يتم تثبيت هذه الخدمة، لذا لا يتم تطبيق قواعد جدار الحماية.",
11759
+ "openButStopped": "المنافذ مفتوحة - الخدمة لا تعمل",
11760
+ "openNoTenants": "الموانئ العامة بدون مستأجرين",
11761
+ "summaryFirewallOffOnly": "Host firewall is not enabled, so port rules are not enforced.",
11762
+ "modePublicLive": "Public (live bind)",
11763
+ "summaryPublicLive": "Listening on {{bind}} — reachable on all interfaces. Confirm access mode; this is not private."
10241
11764
  },
10242
11765
  "services": {
10243
11766
  "enabledBoot": "على التمهيد",
@@ -10245,8 +11768,27 @@
10245
11768
  "start": "يبدأ",
10246
11769
  "stop": "قف",
10247
11770
  "restart": "إعادة تشغيل",
10248
- "reload": "إعادة تحميل"
10249
- },
11771
+ "reload": "إعادة تحميل",
11772
+ "enable": "تمكين عند الإقلاع",
11773
+ "disable": "تعطيل عند الإقلاع"
11774
+ },
11775
+ "lifecycleTitle": "التحكم بخدمة {{label}}",
11776
+ "startedOk": "تم تشغيل {{label}}",
11777
+ "stoppedOk": "تم إيقاف {{label}}",
11778
+ "restartedOk": "تم إعادة تشغيل {{label}}",
11779
+ "reloadedOk": "تم إعادة تحميل {{label}}",
11780
+ "stopConfirmTitle": "إيقاف {{label}}؟",
11781
+ "stopConfirmDesc": "سيتوقف {{label}} عن الاستماع. يمكن تشغيله من هذه الصفحة لاحقًا.",
11782
+ "stopConfirmEdgeDesc": "إيقاف {{label}} يُخرج المواقع والوكيل العكسي عن الخدمة حتى إعادة التشغيل.",
11783
+ "stopConfirmEdgeConsequence": "لن يُقدَّم HTTP/HTTPS على هذا المضيف أثناء إيقاف {{label}}.",
11784
+ "stopConfirmSshdTitle": "إيقاف sshd؟",
11785
+ "stopConfirmSshdDesc": "إيقاف sshd يغلق SSH البعيد. تأكد من وجود وحدة تحكم أو مسار دخول آخر.",
11786
+ "stopConfirmSshdToken": "وقف سشد",
11787
+ "stopConfirmSshdConsequence": "ستفشل جلسات SSH الجديدة حتى تشغيل sshd من وحدة تحكم المضيف.",
11788
+ "stopConfirmPanelTitle": "إيقاف YSK Server؟",
11789
+ "stopConfirmPanelDesc": "ستتوقف اللوحة وواجهة API حتى تشغيل الوحدة على المضيف.",
11790
+ "stopConfirmPanelToken": "إيقاف خادم ysk",
11791
+ "stopConfirmPanelConsequence": "سينقطع هذا المتصفح. شغّل الوحدة من SSH أو وحدة تحكم المضيف.",
10250
11792
  "actionDone": "{{action}} تم",
10251
11793
  "runningOf": "{{running}}/{{total}} جاري",
10252
11794
  "canMutate": "متقلب",
@@ -10273,11 +11815,58 @@
10273
11815
  "controlPage": "صفحة التحكم",
10274
11816
  "manageRuntime": "التثبيت / التحديث",
10275
11817
  "protectionTitle": "مسبار الحماية",
10276
- "protectionSub": "للقراءة فقط؛ لا يغير جدار الحماية / Fail2ban",
11818
+ "protectionSub": "للقراءة فقط؛ لا يغير جدار الحماية / fail2ban",
10277
11819
  "protectionDoneNote": "انتهى مسبار الحماية",
10278
11820
  "probeDone": "اكتمل التحقيق",
10279
11821
  "runProtection": "تشغيل مسبار الحماية",
10280
- "notProbedYet": "لم يتم التحقيق فيها بعد"
11822
+ "notProbedYet": "لم يتم التحقيق فيها بعد",
11823
+ "stopConfirmFail2banTitle": "وقف Fail2ban؟",
11824
+ "stopConfirmFail2banDesc": "يؤدي إيقاف Fail2ban إلى إيقاف حظر IP التلقائي. تستمر مواقع الويب وSSH في العمل.",
11825
+ "stopConfirmFail2banConsequence": "لا يتم حظر المهاجمين الجدد حتى يتم بدء Fail2ban مرة أخرى.",
11826
+ "installOrOpen": "تثبيت / فتح",
11827
+ "statusFilter": {
11828
+ "all": "جميع الولايات",
11829
+ "running": "جري",
11830
+ "failed": "فشل",
11831
+ "missing": "غير مثبت"
11832
+ },
11833
+ "stopNeedConfirm": "يلزم التأكيد",
11834
+ "stopNeedConfirmPhrase": "يلزم إدخال عبارة التأكيد",
11835
+ "enabledOk": "تم تمكين {{label}} عند الإقلاع",
11836
+ "bootDisabledWarn": "{{label}} يعمل لكنه لن يبدأ عند الإقلاع. مكّنه ليثبت بعد إعادة التشغيل.",
11837
+ "bootDisabledShort": "ليس عند الإقلاع",
11838
+ "mariadbNotInstalled": "MariaDB غير مثبّت",
11839
+ "mariadbNotInstalledMysqlOk": "Not installed: MariaDB (MySQL is installed)",
11840
+ "restartConfirmPanelTitle": "Restart YSK Server?",
11841
+ "restartConfirmPanelDesc": "The panel and API will drop briefly while the unit restarts.",
11842
+ "unitNotFound": "Unit not installed",
11843
+ "unitNa": "Not applicable",
11844
+ "unitStatic": "static",
11845
+ "unitIndirect": "indirect",
11846
+ "needRunning": "{{label}} is not running",
11847
+ "bootNa": "Not applicable",
11848
+ "permLabel": "Permission",
11849
+ "permCanChange": "Can change the system (superuser)",
11850
+ "permBlocked": "Cannot change the system",
11851
+ "permHint": "System change {{exec}} · Superuser {{root}}",
11852
+ "clusterLegend": "Planned = saved in the panel, not applied on the host.",
11853
+ "active": {
11854
+ "active": "Running",
11855
+ "inactive": "Stopped",
11856
+ "not-found": "Not installed",
11857
+ "failed": "Failed",
11858
+ "tool": "Tool",
11859
+ "activating": "Starting"
11860
+ },
11861
+ "sshdBootOffWarn": "sshd is not enabled on boot. After reboot this host will have no SSH rescue path.",
11862
+ "restartConfirmTitle": "Restart {{label}}?",
11863
+ "restartConfirmDesc": "Restart {{label}} now. Active connections may drop.",
11864
+ "startVerifyFailed": "{{label}} start did not stay healthy.",
11865
+ "stopNeedConfirmImpact": "Stop {{label}}? Active connections to this service will drop.",
11866
+ "reloadTitle": "Reload {{label}} configuration without a full restart",
11867
+ "stopConfirmPanelSshdOffDesc": "The panel and API will go offline. sshd is not enabled on boot, so SSH may not be a rescue path after reboot.",
11868
+ "stopConfirmPanelSshdOffConsequence": "sshd is not enabled on boot. After reboot you may have no SSH rescue path.",
11869
+ "ufwNoLifecycle": "UFW is not started or stopped from this matrix."
10281
11870
  },
10282
11871
  "software": {
10283
11872
  "title": "برمجة",
@@ -10368,7 +11957,8 @@
10368
11957
  "pick": "اختر الإصدار",
10369
11958
  "noTarget": "لا يوجد هدف التحديث",
10370
11959
  "needRuntimePage": "قم بتثبيت هذا الإصدار على صفحة وقت التشغيل",
10371
- "noAptCandidate": "لا يوجد نسخة مرشحة مناسبة"
11960
+ "noAptCandidate": "لا يوجد نسخة مرشحة مناسبة",
11961
+ "sourceLabel": "مصدر"
10372
11962
  },
10373
11963
  "install": {
10374
11964
  "progress": "التثبيت: {{list}}…",
@@ -10467,14 +12057,24 @@
10467
12057
  "generic": "قد تتوقف الخدمات ذات الصلة",
10468
12058
  "purgeData": "سيتم حذف مسارات البيانات",
10469
12059
  "protectedSkipped": "يتم تخطي المكونات المحمية",
10470
- "runtimeStack": "ستتم إزالة كافة الإصدارات التي تديرها اللوحة من وقت التشغيل هذا"
12060
+ "runtimeStack": "ستتم إزالة كافة الإصدارات التي تديرها اللوحة من وقت التشغيل هذا",
12061
+ "containers": "ستتوقف الحاويات قيد التشغيل",
12062
+ "validators": "ستتوقف مكدسات المدقق التي تستخدم Docker Compose"
10471
12063
  },
10472
12064
  "requestCancel": "طلب الإلغاء",
10473
12065
  "cancelling": "جارٍ الإلغاء…",
10474
12066
  "dockCancelling": "الإلغاء · {{title}}",
10475
12067
  "dockCancelled": "تم الإلغاء · {{title}}",
10476
12068
  "cancelHint": "إلغاء الطلب. توقف العميل عن الاستماع؛ قد ينهي المضيف الخطوة/الخطوة الحالية. أعد فحص الحالة بعد لحظة.",
10477
- "cancelledToast": "تم إلغاء العملية (توقف العميل عن التدفق)"
12069
+ "cancelledToast": "تم إلغاء العملية (توقف العميل عن التدفق)",
12070
+ "kindApply": "يتقدم",
12071
+ "kindScan": "مسح",
12072
+ "kindDeploy": "نشر",
12073
+ "kindRuntime": "وقت التشغيل",
12074
+ "jobDone": "انتهى · {{title}}",
12075
+ "jobFailed": "فشل · {{title}}",
12076
+ "uninstallUfwWarn": "إزالة UFW تترك هذا المضيف دون جدار حماية المنافذ الذي يديره اللوحة.",
12077
+ "uninstallFail2banWarn": "إزالة fail2ban توقف الـ jail وترفع الحظر الحالي. إن أبقيته فأضف IP تسجيل الدخول إلى ignoreip أولاً."
10478
12078
  },
10479
12079
  "sqlEngineHealth": {
10480
12080
  "finding": {
@@ -10690,7 +12290,18 @@
10690
12290
  "requestDone": "اكتمل طلب الشهادة",
10691
12291
  "requestFailed": "لم ينجح طلب الشهادة",
10692
12292
  "applyFailed": "فشل الطلب",
10693
- "deletedCert": "محذوفة {{domain}}"
12293
+ "deletedCert": "محذوفة {{domain}}",
12294
+ "uninstallCertbotWarn": "تؤدي إزالة certbot إلى إيقاف التجديد التلقائي لشهادات Let's Encrypt الموجودة.",
12295
+ "renew": "تجديد",
12296
+ "renewFor": "قم بتجديد Let's Encrypt لـ {{domain}}",
12297
+ "domainRequired": "أدخل نطاقاً.",
12298
+ "domainInvalid": "صيغة النطاق غير صالحة.",
12299
+ "domainKnownHint": "اختر نطاقاً معروفاً من مشروع أو DNS أو بريد، أو اكتبه.",
12300
+ "deleteNeedDomain": "احذف هذه الشهادة — اكتب اسم المجال للتأكيد",
12301
+ "panelCertHint": "Panel HTTPS uses {{path}} (expires {{exp}}). It is not listed as a site certificate.",
12302
+ "openPanelTls": "Open panel HTTPS",
12303
+ "deleteDomain": "Delete {{domain}}",
12304
+ "uninstallCertbot": "Uninstall certbot (loses auto-renew)"
10694
12305
  },
10695
12306
  "stackWizard": {
10696
12307
  "purgeConfirm": "تأكيد التطهير؟ سيتم حذف مسارات البيانات المسجلة (قواعد البيانات/البريد) نهائيًا.",
@@ -10705,39 +12316,62 @@
10705
12316
  "componentsTitle": "مكونات للتثبيت",
10706
12317
  "dryRun": "معاينة التشغيل الجاف",
10707
12318
  "installNow": "التثبيت الآن",
10708
- "uninstallHint": "حدد الحزم المراد إزالتها",
12319
+ "uninstallHint": "حدد الحزم المراد إزالتها. دون تحديد لا يمكن الإزالة. تُحفظ البيانات افتراضيًا.",
10709
12320
  "dataPolicy": "سياسة البيانات",
10710
12321
  "keepData": "احتفظ بالبيانات",
10711
12322
  "purgeData": "تطهير البيانات",
10712
- "uninstallNow": "قم بإلغاء التثبيت الآن"
12323
+ "uninstallNow": "قم بإلغاء التثبيت الآن",
12324
+ "uninstallNeedSelect": "حدد حزمة واحدة على الأقل. التحديد الفارغ لم يعد يعني إزالة الكل.",
12325
+ "uninstallConfirmTitle": "هل تريد إزالة الحزم المحددة؟",
12326
+ "uninstallConfirmDesc": "{{count}} سيتم إزالة الحزمة (الحزم). اكتب إزالة للتأكيد.",
12327
+ "countHint": "These counts are OS packages in the software plan — not the service-matrix units on the other tab.",
12328
+ "executeRoot": "System changes {{execute}} · administrator {{root}}",
12329
+ "manifestPlan": "Plan {{plan}} ({{bundles}})",
12330
+ "manifestHint": "Last chosen software plan and bundles"
10713
12331
  },
10714
12332
  "support": {
10715
- "title": "Support",
10716
- "sub": "منشئ وتبرع وشركة YSK المحدودة - منتج مجاني ومساعدة حقيقية",
10717
- "creatorTitle": "Creator",
10718
- "creatorBody": "تم تصميم YSK Server كطائرة تحكم مجانية وصادقة أحادية المضيف للمشغلين الذين يرغبون في امتلاك مكدسهم. يتم الحفاظ على المشروع في العراء. ردود الفعل وتقارير الأخطاء تبقيها حادة.",
12333
+ "title": "الدعم",
12334
+ "sub": "Creator والتبرع و YSK Limited منتج مجاني ومساعدة حقيقية",
12335
+ "creatorTitle": "الخالق",
12336
+ "creatorBody": "YSK Server مستوى تحكم لمضيف واحد، مجاني وصادق، للمشغّلين الذين يريدون امتلاك حزمتهم. يُصان المشروع علنًا؛ الملاحظات وتقارير الأخطاء تبقيه حادًا.",
10719
12337
  "donateTitle": "الدعم / التبرع",
10720
- "donateBody": "إذا كان خادم YSK يوفر عليك الوقت، ففكر في رعاية التطوير. تساعد كل مساهمة في إبقاء المنتج مجانيًا للجميع.",
12338
+ "donateBody": "إذا وفّر YSK Server وقتك، فكّر في رعاية التطوير. كل مساهمة تساعد على إبقاء المنتج مجانيًا للجميع.",
10721
12339
  "donateGithub": "رعاة جيثب",
10722
12340
  "donateOther": "طرق أخرى للعطاء",
10723
12341
  "yskTitle": "YSK Limited",
10724
- "yskIntro": "هل تحتاج إلى مساعدة عملية خارج نطاق اللوحة المجانية؟ يمكن لشركة YSK المحدودة المساعدة في:",
10725
- "yskSvc1": "إعداد الخادم وتصلبه والعمليات المستمرة",
10726
- "yskSvc2": "تصميم مكدس الاستضافة (الويب، البريد، DNS، قواعد البيانات)",
10727
- "yskSvc3": "الهجرة والأتمتة والتكامل المخصص",
12342
+ "yskIntro": "تحتاج مساعدة عملية تتجاوز اللوحة المجانية؟ تستطيع YSK Limited المساعدة في:",
12343
+ "yskSvc1": "إعداد الخادم وتقويته والتشغيل المستمر",
12344
+ "yskSvc2": "تصميم حزمة الاستضافة (الويب والبريد وDNS وقواعد البيانات)",
12345
+ "yskSvc3": "الترحيل والأتمتة والتكامل المخصص",
10728
12346
  "yskSvc4": "الاستجابة للحوادث ومراجعات جاهزية الإنتاج",
10729
- "yskNoPrice": "لا توجد أسعار مدرجة هنا - اتصل بنا لإجراء محادثة تناسب بيئتك.",
12347
+ "yskNoPrice": "لا توجد أسعار هنا تواصل معنا لنقاش يناسب بيئتك.",
10730
12348
  "yskWebsite": "ysk.hk",
10731
12349
  "helpTitle": "هل تواجه مشكلة؟",
10732
- "helpBody": "راسلنا عبر البريد الإلكتروني مع نظام التشغيل الخاص بك ومسار سجل التثبيت وما توقعته مقابل ما حدث. نقرأ كل رسالة.",
12350
+ "helpBody": "راسلنا بنظام التشغيل ومسار سجل التثبيت وما توقعته مقابل ما حدث. نقرأ كل رسالة.",
10733
12351
  "docsHint": "التوثيق الكامل موجود في المستودع تحت",
10734
12352
  "donateLinktree": "Linktree",
10735
- "cryptoTitle": "مقابض التشفير / web3",
10736
- "cryptoHint": "أرسل على الشبكة المطابقة فقط. تحقق جيدًا من العنوان قبل الإرسال.",
10737
- "cryptoNetwork": "Network",
10738
- "cryptoAddress": "Address",
10739
- "copy": "Copy",
10740
- "copied": "Copied"
12353
+ "cryptoTitle": "العملات المشفّرة / معرّفات Web3",
12354
+ "cryptoHint": "أرسل على الشبكة المطابقة فقط. راجع العنوان قبل الإرسال.",
12355
+ "cryptoNetwork": "الشبكة",
12356
+ "cryptoAddress": "العنوان",
12357
+ "copy": "نسخ",
12358
+ "copied": "تم النسخ",
12359
+ "docsLink": "التوثيق",
12360
+ "diagTitle": "ملخص التشخيص",
12361
+ "diagBody": "انسخ الإصدار، وقم بتنفيذ، واستضافة الحقائق للصقها في رسالة بريد إلكتروني. هذه ليست حزمة سجل كاملة.",
12362
+ "diagCopy": "نسخ الملخص التشخيصي",
12363
+ "diagCopied": "تم نسخ الملخص التشخيصي",
12364
+ "copyTitle": "نسخ {{address}}",
12365
+ "diagCopyTitle": "نسخ الإصدار وEXECUTE وبيانات المضيف",
12366
+ "diagPreview": "معاينة ما سيُنسخ",
12367
+ "diagLoading": "جارٍ تحميل التشخيص…",
12368
+ "diagLoadFailed": "تعذر تحميل التشخيص",
12369
+ "copiedAddr": "Copied {{addr}}",
12370
+ "diagStatus": "Status",
12371
+ "diagMode": "Mode",
12372
+ "diagProtection": "Protection",
12373
+ "diagHostname": "Hostname",
12374
+ "diagOs": "OS"
10741
12375
  },
10742
12376
  "system": {
10743
12377
  "exportLoadFailed": "فشل تحميل بيانات التصدير",
@@ -10818,7 +12452,18 @@
10818
12452
  "leOk": "دعونا تشفير الشهادة التي تم الحصول عليها لـ {{domain}}",
10819
12453
  "leFailed": "فشل طلب الشهادة: {{detail}}",
10820
12454
  "leHint": "تأكد من إمكانية الوصول إلى نقاط DNS A هنا ومن إمكانية الوصول إلى المنفذ 80 (أو أن nginx يخدم المجال)",
10821
- "openFirewall": "إذا كان عامًا: السماح بمنفذ اللوحة {{port}}/tcp (جدار الحماية → فتح المنفذ → لوحة 9287)"
12455
+ "openFirewall": "إذا كان عامًا: السماح بمنفذ اللوحة {{port}}/tcp (جدار الحماية → فتح المنفذ → لوحة 9287)",
12456
+ "disableConfirmTitle": "هل تريد تعطيل لوحة HTTPS؟",
12457
+ "disableConfirmDesc": "سوف تخدم اللوحة HTTP. سيتوقف WebAuthn / Passkey عن العمل حتى يتم تشغيل HTTPS مرة أخرى.",
12458
+ "disablePasskeyWarn": "تحتاج مفاتيح المرور المسجلة إلى HTTPS - وسوف تفشل على HTTP.",
12459
+ "disableNeedConfirm": "يلزم التأكيد — اكتب DISABLE-HTTPS",
12460
+ "listenPublic": "تستمع اللوحة إلى خطاب عام (0.0.0.0/::). التقييد بجدار الحماية أو الارتباط بـ 127.0.0.1.",
12461
+ "bootstrapCert": "هذه هي شهادة التمهيد الموقعة ذاتيًا — ستحذر المتصفحات. قم بإصدار شهادة موثوقة لمجال اللوحة.",
12462
+ "cliNoSocket": "لا تحتوي واجهة سطر الأوامر (CLI) على مقبس HTTP مباشر؛ يتم استنتاجservingHttps من مآخذ التكوين والاستماع (ss).",
12463
+ "listenHost": "عنوان الاستماع",
12464
+ "currentHost": "هذه الجلسة",
12465
+ "replaceCert": "استبدلها بشهادة موثوقة",
12466
+ "needFqdn": "Need a FQDN (example.com), not a bare hostname"
10822
12467
  },
10823
12468
  "timeNtp": "الوقت وNTP",
10824
12469
  "clockStatus": "حالة ساعة النظام",
@@ -10923,7 +12568,25 @@
10923
12568
  "exportPath": "مسار التصدير",
10924
12569
  "mode": "وضع",
10925
12570
  "managedConf": "أسيوط المدارة",
10926
- "dryRunFlag": "التشغيل الجاف"
12571
+ "dryRunFlag": "التشغيل الجاف",
12572
+ "timezoneSearch": "تصفية المناطق الزمنية...",
12573
+ "resyncNtp": "إعادة مزامنة NTP",
12574
+ "storageSub": "استخدام القرص",
12575
+ "syncReloadNeedConfirm": "يحتاج تأكيدًا — يكتب /etc/nginx/conf.d ويعيد تحميل Nginx",
12576
+ "nginxLeftover": "بقايا",
12577
+ "nginxUnused": "غير مستخدم",
12578
+ "nginxLeftoverHint": "إعدادات بقايا (مثل public-files). تبقى في المزامنة حتى تتصرّف.",
12579
+ "nginxUnusedHint": "إعداد افتراضي / catch-all (000-default). يبقى في المزامنة حتى تتصرّف.",
12580
+ "powerUnlock": "فتح منطقة الخطر",
12581
+ "powerLock": "قفل منطقة الخطر",
12582
+ "noScheduledPower": "لم تتم جدولة إعادة التشغيل أو إيقاف التشغيل",
12583
+ "timezoneNow": "Host time now: {{time}} ({{tz}})",
12584
+ "timezoneBrowserDiff": "This host uses {{host}}; your browser uses {{browser}}. Changing timezone here changes the host clock, not the browser.",
12585
+ "notExported": "Not exported yet",
12586
+ "nginxRemoveLeftover": "Remove leftover",
12587
+ "nginxRemoveLeftoverTitle": "Remove leftover nginx conf?",
12588
+ "nginxRemoveLeftoverDesc": "Deletes {{name}} from the panel inventory. The live /etc/nginx copy is removed only with YSK_EXECUTE + root. 000-default is not leftover and cannot be deleted here.",
12589
+ "needExecuteRoot": "Needs YSK_EXECUTE + root"
10927
12590
  },
10928
12591
  "systemd": {
10929
12592
  "enabled": "ممكّن",
@@ -11017,7 +12680,9 @@
11017
12680
  "aboutPolicySub": "تعد كتابة القالب وتثبيت النظام خطوتين منفصلتين. تعتبر إعادة التشغيل بعد التثبيت عملية عادية، وليست خطوة مفقودة.",
11018
12681
  "policyInstallFull": "التثبيت والتمكين: النسخ إلى /etc/systemd/system، daemon-reload، تمكين --now. يحتاج إلى الجذر + التنفيذ.",
11019
12682
  "policyBlockedTitle": "محظور دون امتياز",
11020
- "policyNotEqualTitle": "الدول ليست متكافئة"
12683
+ "policyNotEqualTitle": "الدول ليست متكافئة",
12684
+ "rawStateHint": "Raw unit state in tooltip",
12685
+ "bootHint": "Whether the unit starts at boot"
11021
12686
  },
11022
12687
  "tabs": {
11023
12688
  "scrollLeft": "انتقل علامات التبويب إلى اليسار",
@@ -11057,7 +12722,15 @@
11057
12722
  "stepUpHint": "يتطلب تسجيل الدخول الجذر إجراء 2FA عندما يكون TOTP في حسابك ممكّنًا.",
11058
12723
  "stepUpTitle": "تأكيد قذيفة الجذر",
11059
12724
  "stepUpDesc": "أدخل رمز المصادقة الخاص بك أو رمز الاسترداد.",
11060
- "totpLabel": "TOTP / رمز الاسترداد"
12725
+ "totpLabel": "TOTP / رمز الاسترداد",
12726
+ "sessionStillOpen": "لا يزال الغلاف المباشر متصلاً أثناء قراءة هذه الصفحة.",
12727
+ "rootConfirmTitle": "فتح قذيفة الجذر؟",
12728
+ "rootConfirmDesc": "هذه الجلسة عبارة عن جذر PTY غير مقيد على المضيف. يتم تدقيق الأوامر.",
12729
+ "rootConfirmBody": "تابع فقط إذا كنت تنوي تشغيل أوامر المضيف المميزة.",
12730
+ "copyAll": "انسخ الكل",
12731
+ "copyAllNeedConn": "الاتصال أولاً - المخزن المؤقت فارغ أثناء قطع الاتصال",
12732
+ "groupSystem": "System",
12733
+ "groupProject": "Project"
11061
12734
  },
11062
12735
  "uiInline": {
11063
12736
  "s27d9daa5": "وقت التشغيل {{v0}} {{v1}}،",
@@ -11357,9 +13030,9 @@
11357
13030
  "applyPanelUpdate": "تطبيق تحديث اللوحة",
11358
13031
  "recheck": "إعادة الفحص",
11359
13032
  "aboutScope": "نِطَاق",
11360
- "aboutScopeV": "إصدار طائرة التحكم بخادم ysk · عدم ترقية النظام بالكامل",
13033
+ "aboutScopeV": "لوحة خادم ysk + خدمات الكتالوج + أوقات التشغيل + الحزم الملائمة المتبقية",
11361
13034
  "aboutChannel": "قناة",
11362
- "aboutChannelV": "npm → إصدار GitHub → package.json؛ تقدم بطلب عبر npm install -g أو git (YSK_SOURCE_ROOT)",
13035
+ "aboutChannelV": "حزمة npm ysk-server → إصدار GitHub → apps/server/package.json؛ تطبيق: npm i -g ysk-server@version أو git (YSK_SOURCE_ROOT)",
11363
13036
  "aboutFail": "الفشل",
11364
13037
  "aboutFailV": "لا يتم الإبلاغ عن القنوات غير المتوفرة على أنها محدثة؛ تطبيق الاحتياجات تنفيذ؛ يحتاج تطبيق git إلى إعادة تشغيل الخدمة",
11365
13038
  "jobsTitle": "الوظائف المجدولة",
@@ -11436,7 +13109,80 @@
11436
13109
  "scanNow": "مسح الآن",
11437
13110
  "viewUpgradable": "عرض للترقية",
11438
13111
  "installElsewhere": "لتثبيت الحزم (Nginx، PHP، قواعد البيانات...)، افتح صفحة الميزات المطابقة - وليس هذا المحور.",
11439
- "status": "حالة"
13112
+ "status": "حالة",
13113
+ "groupService": "خدمات",
13114
+ "groupRuntime": "أوقات التشغيل",
13115
+ "groupOs": "حزم النظام",
13116
+ "notInstalled": "غير مثبت",
13117
+ "goToPage": "افتح الصفحة",
13118
+ "hubHint": "برنامج الكتالوج وأوقات التشغيل على هذا المضيف. المسح للتحديث.",
13119
+ "intervalDay": "كل يوم",
13120
+ "intervalDays": "كل {{n}} يوم",
13121
+ "intervalHour": "كل ساعة",
13122
+ "intervalHours": "كل {{n}} ساعة",
13123
+ "intervalMinutes": "كل {{n}} دقيقة",
13124
+ "intervalSeconds": "كل {{n}} ثانية",
13125
+ "availableHint": "الحزم مع مرشح أحدث من مدير الحزم.",
13126
+ "servicesHint": "خدمات الكتالوج على هذا المضيف. افتح صفحة الخدمة للتثبيت.",
13127
+ "runtimeHint": "أوقات التشغيل على هذا المضيف. تتم ترقيات الإصدار في كل صفحة وقت التشغيل.",
13128
+ "needsReboot": "هناك حاجة إلى إعادة التشغيل",
13129
+ "kernelRebootWarn": "عادةً ما يحتاج تثبيت نواة جديدة إلى إعادة التشغيل قبل استخدامها.",
13130
+ "neverRun": "لم يتم تشغيله بعد",
13131
+ "scanOsvN": "مسح + OSV (الأول {{n}})",
13132
+ "rebootNeeded": "إعادة التشغيل",
13133
+ "kernelRebootHint": "تحتاج حزم Kernel إلى إعادة التشغيل بعد التطبيق",
13134
+ "needApprovalHint": "افتح متاح وقم بالتصفية حسب الحزم التي تحتاج إلى موافقة",
13135
+ "applyNeedConfirm": "يفتح مربع حوار التأكيد قبل التقديم",
13136
+ "probeFailed": "فشل التحقيق",
13137
+ "notViaApt": "لا تتم إدارته بواسطة apt - لا يوجد مرشح",
13138
+ "noCandidate": "لا توجد نسخة مرشحة",
13139
+ "jobOpenGeo": "صفحة GeoIP",
13140
+ "job": {
13141
+ "protection_probe": {
13142
+ "name": "مسبار الحماية",
13143
+ "hint": "إشارات الدفاع الدورية"
13144
+ },
13145
+ "updates_scan": {
13146
+ "name": "فحص التحديثات",
13147
+ "hint": "تحديث مخزون الحزمة"
13148
+ },
13149
+ "daily_backup": {
13150
+ "name": "النسخ الاحتياطي اليومي",
13151
+ "hint": "النسخ الاحتياطي المقرر كافة"
13152
+ },
13153
+ "db_temp_expire": {
13154
+ "name": "انتهاء صلاحية مستخدمي قاعدة البيانات المؤقتة",
13155
+ "hint": "إسقاط مستخدمي قاعدة البيانات المؤقتة منتهية الصلاحية"
13156
+ },
13157
+ "defense_auto_ban": {
13158
+ "name": "الحظر التلقائي للدفاع",
13159
+ "hint": "تطبيق علامة الحظر التلقائي"
13160
+ },
13161
+ "defense_geoip_update": {
13162
+ "name": "تحديث GeoIP",
13163
+ "hint": "تحميل قواعد بيانات GeoIP"
13164
+ },
13165
+ "log_auto_vacuum": {
13166
+ "name": "سجل الفراغ",
13167
+ "hint": "الاحتفاظ بالمجلة"
13168
+ },
13169
+ "email_dnsbl": {
13170
+ "name": "البريد الإلكتروني DNSBL",
13171
+ "hint": "التحقق من البريد DNSBL"
13172
+ },
13173
+ "validators_upgrade_scan": {
13174
+ "name": "Validators upgrade scan",
13175
+ "hint": "Check validator image / binary updates"
13176
+ }
13177
+ },
13178
+ "applyPanelAlreadyLatest": "بالفعل أحدث إصدار من اللوحة",
13179
+ "panelRestarting": "يعاد تشغيل اللوحة لتحميل الإصدار الجديد…",
13180
+ "panelRestarted": "عادت اللوحة · {{version}}",
13181
+ "panelRestartWait": "تم التطبيق. إن لم تتحدث هذه الصفحة، أعد التحميل بعد ثوان.",
13182
+ "cveNotChecked": "Not checked",
13183
+ "cveLabel": "CVE",
13184
+ "riskUnevaluated": "Not evaluated — run Scan + OSV",
13185
+ "footerNewVersion": "New version {{version}}"
11440
13186
  },
11441
13187
  "users": {
11442
13188
  "userCount": "{{count}} المستخدمين",
@@ -11558,7 +13304,350 @@
11558
13304
  "securityClearTotpHint": "يتطلب خطوة المتابعة",
11559
13305
  "securityClearConfirm": "اكتب اسم المستخدم لتأكيد مسح المصادقة الثنائية (2FA).",
11560
13306
  "securityClearOk": "تم مسح المصادقة الثنائية لـ {{name}}",
11561
- "securitySelfNote": "لإعداد المصادقة الثنائية (2FA) الخاصة بك، افتح الأمان → الأمان الخاص بي."
13307
+ "securitySelfNote": "لإعداد المصادقة الثنائية (2FA) الخاصة بك، افتح الأمان → الأمان الخاص بي.",
13308
+ "cannotDeleteSelf": "لا يمكن حذف الحساب الذي سجلت الدخول به",
13309
+ "cannotModifySelf": "لا يمكن إيقاف أو تخفيض الحساب الذي سجلت الدخول به",
13310
+ "cannotDeleteLastAdmin": "لا يمكن حذف آخر مسؤول",
13311
+ "cannotDemoteLastAdmin": "لا يمكن إيقاف أو تخفيض آخر مسؤول",
13312
+ "lockSelfHint": "هذا هو الحساب المسجّل دخوله. حُظر الحذف والإيقاف وتغيير الدور لمنع فقدان الدخول.",
13313
+ "lockLastAdminHint": "هذا آخر مسؤول. حُظر الحذف والإيقاف والتخفيض.",
13314
+ "demoteAdminTitle": "تخفيض هذا المسؤول؟",
13315
+ "demoteAdminDesc": "سيفقد هذا المستخدم صلاحيات المسؤول الكاملة. تأكد من بقاء مسؤول آخر.",
13316
+ "searchPkgPh": "اسم الحزمة",
13317
+ "quotaNonNeg": "لا يمكن أن تكون الأعداد والحصص سلبية.",
13318
+ "diskQuotaHint": "الإعدادات المسبقة هي GiB؛ الصندوق المخصص هو MiB.",
13319
+ "bandwidthHint": "0 يعني غير محدود.",
13320
+ "impersonateHint": "يفتح جلسة باسم هذا المستخدم. استخدم قائمة الحساب لترك انتحال الشخصية.",
13321
+ "operatorHighRiskHint": "دور المشغّل الافتراضي يشمل كتابات عالية المخاطر. تضييقه يؤثر على الحسابات الجديدة فقط؛ تغيير الافتراضي يؤثر على المشغّلين الحاليين.",
13322
+ "cannotImpersonateSelf": "لقد قمت بالفعل بتسجيل الدخول باستخدام هذا الحساب",
13323
+ "singleAdminNo2fa": "هذا المضيف لديه مسؤول واحد والمصادقة الثنائية متوقفة - قم بتمكين المصادقة الثنائية وأضف مسؤولًا احتياطيًا.",
13324
+ "enableAdmin2fa": "Enable admin 2FA",
13325
+ "addBackupAdmin": "Add a backup admin"
13326
+ },
13327
+ "validators": {
13328
+ "title": "المدققون (Beta)",
13329
+ "subtitle": "ثبّت وأدر عُقد L1 على هذا المضيف. غير وصائي — المفاتيح تبقى لديك.",
13330
+ "beta": "Beta",
13331
+ "tab": {
13332
+ "nodes": "العُقد",
13333
+ "disk": "القرص",
13334
+ "about": "حول",
13335
+ "stack": "Software"
13336
+ },
13337
+ "empty": {
13338
+ "title": "لا توجد عُقد مدقق بعد",
13339
+ "desc": "أنشئ عقدة شبكة اختبار بعدة نقرات."
13340
+ },
13341
+ "refresh": "تحديث",
13342
+ "disk": {
13343
+ "title": "قرص المدققين",
13344
+ "root": "دليل البيانات",
13345
+ "free": "حر",
13346
+ "used": "مستخدم",
13347
+ "none": "لا توجد بيانات مثيل بعد",
13348
+ "warn": "استخدام القرص مرتفع (٧٠٪+)",
13349
+ "danger": "استخدام القرص حرج (٨٥٪+)",
13350
+ "autoClear": "مسح أكبر مثيل متوقف تلقائيًا عند حرج القرص (معطّل افتراضيًا)",
13351
+ "autoClearRisk": "Destructive: the largest stopped instance is deleted without a further prompt. Default is off. Check audit / logs after it fires.",
13352
+ "autoClearConfirmTitle": "Enable auto-clear?",
13353
+ "autoClearC1": "When disk is critical, the largest stopped instance is deleted without asking again.",
13354
+ "fsUsed": "Filesystem used",
13355
+ "leftoverTitle": "Leftover data ({{count}})",
13356
+ "leftoverDesc": "Directories under the validators root that are not a store instance. Remove only after you confirm they are unused.",
13357
+ "leftoverRemove": "Remove",
13358
+ "leftoverRemoveTitle": "Delete leftover validator data?",
13359
+ "leftoverRemoveDesc": "Permanently delete {{path}} from disk. This is not a listed node.",
13360
+ "autoClearThreshold": "Trigger: filesystem use at or above 85%.",
13361
+ "autoClearCandidate": "Current candidate: {{id}}",
13362
+ "autoClearNone": "No stopped instance is a candidate right now.",
13363
+ "browseRoot": "Open in file browser",
13364
+ "leftoverEmpty": "No leftover instance directories"
13365
+ },
13366
+ "chain": {
13367
+ "eth": "Ethereum",
13368
+ "avax": "Avalanche",
13369
+ "near": "NEAR",
13370
+ "ada": "Cardano",
13371
+ "btc": "Bitcoin",
13372
+ "cosmos": "Cosmos Hub",
13373
+ "sui": "Sui",
13374
+ "aptos": "Aptos",
13375
+ "dot": "Polkadot",
13376
+ "sol": "Solana"
13377
+ },
13378
+ "network": {
13379
+ "hoodi": "Hoodi",
13380
+ "sepolia": "Sepolia",
13381
+ "mainnet": "الشبكة الرئيسية",
13382
+ "fuji": "Fuji",
13383
+ "testnet": "شبكة الاختبار",
13384
+ "preview": "معاينة",
13385
+ "preprod": "إنتاج مسبق",
13386
+ "westend": "Westend"
13387
+ },
13388
+ "networkKind": {
13389
+ "testnet": "شبكة الاختبار",
13390
+ "mainnet": "الشبكة الرئيسية",
13391
+ "mixed": "Mainnet + testnet"
13392
+ },
13393
+ "profile": {
13394
+ "minimal": "أدنى",
13395
+ "pruned": "Pruned",
13396
+ "validator-ready": "جاهز للمدقق",
13397
+ "rpc": "RPC"
13398
+ },
13399
+ "col": {
13400
+ "id": "ID",
13401
+ "chain": "السلسلة",
13402
+ "network": "الشبكة",
13403
+ "profile": "الملف",
13404
+ "status": "الحالة",
13405
+ "disk": "القرص"
13406
+ },
13407
+ "cli": {
13408
+ "usage": "الاستخدام: ysk-server validators list|chains|disk|get|status|logs|create|start|stop|restart|clear|upgrade|policy|mithril|prune|switch-network|snapshot|compose|settings [--chain C] [--network N] [--profile P] [--el EL] [--cl CL] [--data-path P] [--rpc-port N] [--id ID] [--upgrade POLICY] [--confirm TOKEN] [--execute] [--json]"
13409
+ },
13410
+ "clients": {
13411
+ "el": "عميل التنفيذ",
13412
+ "cl": "عميل الإجماع"
13413
+ },
13414
+ "mithril": {
13415
+ "label": "استعادة من لقطة Mithril أولًا (موصى به في شبكة الاختبار)",
13416
+ "action": "استعادة بـ Mithril"
13417
+ },
13418
+ "errors": {
13419
+ "notFound": "مثيل المدقق غير موجود",
13420
+ "invalidId": "معرّف المثيل غير صالح",
13421
+ "diskLow": "لا يكفي القرص الحر لهذه السلسلة والشبكة والملف",
13422
+ "diskUnknownMainnet": "تعذر قياس القرص الحر؛ رُفض الإنشاء على الشبكة الرئيسية",
13423
+ "needDocker": "Docker Compose مطلوب ولم يُعثر عليه",
13424
+ "composeFailed": "فشل docker compose",
13425
+ "needConfirm": "المسح يتطلب confirm=معرّف المثيل أو CLEAR",
13426
+ "mithrilAdaOnly": "استعادة Mithril متاحة لـ Cardano فقط",
13427
+ "needMithrilConfirm": "Mithril يتطلب confirm=معرّف المثيل أو MITHRIL",
13428
+ "mithrilBlocked": "حُظر docker run الخاص بـ Mithril بواسطة قائمة السماح",
13429
+ "mithrilKey": "تعذر تحميل مفتاح التحقق genesis لـ Mithril",
13430
+ "mithrilFailed": "فشل تنزيل لقطة Mithril",
13431
+ "pruneFailed": "فشل التنظيف",
13432
+ "switchNeedStop": "أوقف العقدة قبل تبديل الشبكة",
13433
+ "switchNeedClear": "تبديل الشبكة يمسح بيانات السلسلة. أكّد بمعرّف المثيل أو CLEAR",
13434
+ "composeMissing": "ملف Compose غير موجود",
13435
+ "composeNotManaged": "رفض كتابة ملف Compose لا تديره YSK",
13436
+ "badDataPath": "يجب أن يكون مسار البيانات مجلدًا مطلقًا خارج مسارات النظام",
13437
+ "portInUse": "منفذ RPC هذا مستخدم فعلًا من مثيل مدقق آخر",
13438
+ "snapshotUnsupported": "لا يوجد مصدر لقطة مسموح لهذه السلسلة",
13439
+ "snapshotLookup": "تعذر حل مؤشر اللقطة الرسمي",
13440
+ "needSnapshotConfirm": "استعادة اللقطة تتطلب confirm=معرّف المثيل أو SNAPSHOT",
13441
+ "snapshotBlocked": "حُظر docker run الخاص باللقطة بواسطة قائمة السماح",
13442
+ "snapshotFailed": "فشل تنزيل اللقطة أو استخراجها"
13443
+ },
13444
+ "notes": {
13445
+ "beta": "هذه الميزة Beta. تغييرات المضيف تحتاج root و YSK_EXECUTE=1.",
13446
+ "noKeys": "لا يولّد YSK Server مفاتيح الرهن ولا يخزنها أبدًا.",
13447
+ "dockerSoon": "Install and start from this page wizard. Host changes need root and YSK_EXECUTE=1.",
13448
+ "dryCreate": "كُتبت مواصفات المثيل وcompose (dry-run). مرّر --execute و YSK_EXECUTE=1 لبدء الحاويات.",
13449
+ "dryStart": "البدء dry-run. مرّر --execute و YSK_EXECUTE=1.",
13450
+ "dryStop": "الإيقاف dry-run. مرّر --execute و YSK_EXECUTE=1.",
13451
+ "dryClear": "المسح dry-run. مرّر --execute و YSK_EXECUTE=1.",
13452
+ "created": "أُنشئت العقدة وبدأ compose",
13453
+ "started": "بدأت العقدة",
13454
+ "stopped": "توقفت العقدة",
13455
+ "cleared": "مُسحت بيانات السلسلة",
13456
+ "dryMithril": "استعادة Mithril dry-run. مرّر --execute و YSK_EXECUTE=1.",
13457
+ "mithril": "استُعيدت لقطة Mithril؛ أُعيد تشغيل العقدة",
13458
+ "dryPrune": "التنظيف dry-run. مرّر --execute و YSK_EXECUTE=1.",
13459
+ "pruned": "نُظفت صور المشروع غير المستخدمة",
13460
+ "pruneProfile": "التقليم الأصلي للعميل هو ملف pruned/minimal. أعد الإنشاء لتغييره.",
13461
+ "sameNetwork": "موجود أصلًا على تلك الشبكة",
13462
+ "drySwitch": "تبديل الشبكة dry-run.",
13463
+ "switched": "بُدّلت الشبكة ومُسحت بيانات السلسلة",
13464
+ "dryCompose": "سيُكتب compose.yml",
13465
+ "composeWrote": "كُتب compose.yml",
13466
+ "statsEmpty": "لا توجد حاويات قيد التشغيل للقياس",
13467
+ "autoClearNone": "لا يوجد مثيل متوقف للمسح التلقائي",
13468
+ "drySnapshot": "استعادة اللقطة dry-run. مرّر --execute و YSK_EXECUTE=1.",
13469
+ "snapshotEthEl": "استُعيد أرشيف EL من ethPandaOps وأُعيد ضبط CL لمزامنة نقطة التحقق",
13470
+ "snapshotEthCl": "أُعيد ضبط بيانات CL لمزامنة نقطة التحقق الرسمية",
13471
+ "snapshotNear": "مُسحت بيانات NEAR؛ سيعيد compose التهيئة بالـ genesis الرسمي وepoch sync",
13472
+ "nativePrune": "شُغّل أمر التقليم الأصلي للعميل",
13473
+ "dryDelete": "Delete is dry-run. Pass --execute and YSK_EXECUTE=1.",
13474
+ "deleted": "Node deleted",
13475
+ "leftoverRemoved": "Removed leftover {{path}}"
13476
+ },
13477
+ "create": "إنشاء عقدة",
13478
+ "wizard": {
13479
+ "title": "إنشاء عقدة",
13480
+ "back": "رجوع",
13481
+ "next": "التالي",
13482
+ "install": "تثبيت",
13483
+ "mainnetWarn": "الشبكة الرئيسية تحتاج مساحة حرة كبيرة (ETH غالبًا ٨٠٠ جيبيبايت+). يُنصح بشبكة الاختبار.",
13484
+ "mainnetAck": "أفهم مخاطر القرص والقطع. المتابعة على الشبكة الرئيسية.",
13485
+ "heavyWarn": "هذه السلسلة ثقيلة (قرص كبير وIOPS مرتفع). Solana على الشبكة الرئيسية تحتاج عادة ٢ تيبيبايت+.",
13486
+ "memory": "حد الذاكرة (مثل 4g)",
13487
+ "cpus": "حد المعالج (مثل 2.0)",
13488
+ "dataPath": "مسار البيانات (اختياري)",
13489
+ "rpcPort": "منفذ RPC (اختياري)",
13490
+ "stepOf": "Step {{n}} / {{total}}",
13491
+ "stepChain": "Chain",
13492
+ "stepNetwork": "Network",
13493
+ "stepProfile": "Profile",
13494
+ "stepSummary": "Summary",
13495
+ "needDocker": "Docker Engine is not installed. Install it first — this button stays disabled.",
13496
+ "diskNeed": "This profile needs about {{need}} · free {{free}}",
13497
+ "diskShort": "Not enough free disk for this chain / network / profile",
13498
+ "limitNone": "No limit",
13499
+ "rpcDefault": "Default",
13500
+ "customPath": "Use a custom data path",
13501
+ "installConfirmTitle": "Install this node?",
13502
+ "installConfirmDesc": "{{chain}} · {{network}} · {{profile}}. About {{disk}} of disk. The image pull can take a long time.",
13503
+ "installC1": "Several gigabytes of images may be downloaded.",
13504
+ "installC2": "You can cancel the panel task; already-pulled images are not deleted automatically.",
13505
+ "lowDiskAcked": "Free disk is below the recommended size. You confirmed create anyway; sync may stop if the disk fills.",
13506
+ "diskNeedNetwork": "Default (Minimal) for this network needs about {{need}} · free {{free}}",
13507
+ "diskShortDetail": "Need {{need}} · free {{free}} · short {{short}}",
13508
+ "needCustomPath": "Enter an absolute data path",
13509
+ "previewId": "Node id",
13510
+ "previewCompose": "Compose project",
13511
+ "profileSeeAbout": "What each profile means is on the About tab.",
13512
+ "dockerAbout": "Docker Engine is required to install and start nodes.",
13513
+ "dockerAboutOk": "Docker Engine is installed.",
13514
+ "dockerAboutMissing": "Docker Engine is not installed. Open Docker to install it.",
13515
+ "rewriteCompose": "Rewrite compose",
13516
+ "rewriteComposeTitle": "Rewrite compose.yml from the current adapter?",
13517
+ "rewriteComposeDesc": "Overwrites the generated compose for {{id}} using the shipped flags for this chain.",
13518
+ "chainMeta": "{{disk}} min · {{clients}} clients",
13519
+ "profileHint": {
13520
+ "minimal": "Smallest sync — light disk, not for staking.",
13521
+ "pruned": "Keeps recent history only (Pruned). Smaller than archive, still usable for RPC.",
13522
+ "validator-ready": "Sized for a staking validator. Needs more disk than Minimal.",
13523
+ "rpc": "Public RPC node — not a staking validator."
13524
+ }
13525
+ },
13526
+ "actions": {
13527
+ "detail": "التفاصيل",
13528
+ "start": "بدء",
13529
+ "stop": "إيقاف",
13530
+ "restart": "إعادة تشغيل",
13531
+ "clear": "مسح",
13532
+ "upgrade": "ترقية",
13533
+ "clearConfirm": "اكتب معرّف المثيل أو CLEAR",
13534
+ "prune": "تنظيف الصور",
13535
+ "switchNetwork": "تبديل الشبكة",
13536
+ "removeUnit": "احذف أيضًا compose / سجل المثيل",
13537
+ "restoreAfter": "استعادة اللقطة بعد المسح",
13538
+ "delete": "Delete",
13539
+ "deleteTitle": "Delete {{id}}",
13540
+ "deleteDesc": "This removes the node from the panel.",
13541
+ "deleteC1": "Docker Compose is stopped and removed",
13542
+ "deleteC2": "Chain data on disk is deleted",
13543
+ "deleteC3": "The instance record is removed",
13544
+ "pruneTitle": "Prune unused images",
13545
+ "pruneDesc": "Type the instance id to prune unused Compose images for this node.",
13546
+ "pruneC1": "Unused images labelled for this Compose project are deleted.",
13547
+ "clearTitle": "Clear {{id}}",
13548
+ "clearC1": "Chain data on disk is deleted.",
13549
+ "clearC2": "The instance stays in the panel, stopped and empty.",
13550
+ "switchTitle": "Switch network",
13551
+ "switchC1": "The node is stopped and chain data is wiped before the new network is written."
13552
+ },
13553
+ "policy": {
13554
+ "label": "سياسة الترقية",
13555
+ "manual": "يدوي",
13556
+ "notify": "إشعار",
13557
+ "auto-safe": "تلقائي (آمن)",
13558
+ "auto-all": "تلقائي (الكل)"
13559
+ },
13560
+ "logs": {
13561
+ "empty": "لا سجلات بعد",
13562
+ "follow": "متابعة السجلات"
13563
+ },
13564
+ "compose": {
13565
+ "label": "ملف Compose",
13566
+ "save": "حفظ compose"
13567
+ },
13568
+ "snapshot": {
13569
+ "action": "استعادة اللقطة",
13570
+ "mithril": "يستخدم Cardano Mithril لاستعادة لقطة معتمدة.",
13571
+ "eth": "تبدأ Ethereum على الشبكة الرئيسية بمزامنة نقطة التحقق الرسمية لعميل الإجماع. يستمر EL بمزامنة snap.",
13572
+ "ethEl": "يمكن لـ Hoodi/Sepolia استعادة أرشيف EL من ethPandaOps ثم مزامنة نقطة التحقق للـ CL.",
13573
+ "avax": "تستخدم Avalanche state-sync في ملف compose.",
13574
+ "near": "أُوقفت لقطات tar المجانية الرسمية لـ NEAR. الاستعادة تمسح البيانات وتستخدم genesis الرسمي وepoch sync.",
13575
+ "none": "لا يوجد مصدر لقطة مضبوط لهذه السلسلة."
13576
+ },
13577
+ "stake": {
13578
+ "title": "الاستعداد للرهن (المفاتيح تبقى لديك)",
13579
+ "offlineKeys": "ولّد المفاتيح دون اتصال. اللوحة لا تخزنها أبدًا.",
13580
+ "deposit": "أكمل الإيداع / التسجيل على المنصة الرسمية.",
13581
+ "withdrawal": "اضبط بيانات اعتماد السحب بنفسك.",
13582
+ "monitor": "راقب القرص والأقران وشارات الترقية في هذه الصفحة."
13583
+ },
13584
+ "alerts": {
13585
+ "diskTitle": "قرص المدقق حرج",
13586
+ "diskBody": "المساحة الحرة على مجلد بيانات المدقق منخفضة جدًا.",
13587
+ "upgradeTitle": "تتوفر ترقية للمدقق",
13588
+ "upgradeBody": "لدى عميل عقدة واحد أو أكثر إصدار مثبت أحدث.",
13589
+ "syncTitle": "عقدة المدقق تحتاج انتباهًا",
13590
+ "syncBody": "عقدة تُزامن منذ أكثر من ٦ ساعات أو أبلغت عن خطأ.",
13591
+ "rollbackTitle": "أُلغيت ترقية المدقق",
13592
+ "rollbackBody": "فشلت ترقية {{id}} في فحص الصحة وأُلغيت."
13593
+ },
13594
+ "upgrade": {
13595
+ "changelog": "سجل التغييرات"
13596
+ },
13597
+ "readiness": {
13598
+ "dockerTitle": "Docker لعُقد المدقق",
13599
+ "dockerOk": "{{count}} مثيل مدقق؛ Docker مثبت",
13600
+ "dockerMissing": "توجد مثيلات مدقق لكن أمر docker غير موجود"
13601
+ },
13602
+ "detail": {
13603
+ "status": "Status",
13604
+ "sync": "Sync",
13605
+ "peers": "Peers",
13606
+ "version": "Version",
13607
+ "access": "Access",
13608
+ "upgrade": "Updates",
13609
+ "upgradeHint": "How this node tracks client versions.",
13610
+ "network": "Network",
13611
+ "networkHint": "Switching network stops the node and clears chain data. Confirm under Clear data first.",
13612
+ "maintain": "Maintenance",
13613
+ "danger": "Clear data",
13614
+ "dangerHint": "Type the instance id or CLEAR. This deletes chain data on disk.",
13615
+ "compose": "Compose",
13616
+ "logs": "Logs"
13617
+ },
13618
+ "state": {
13619
+ "unknown": "Unknown",
13620
+ "stopped": "Stopped",
13621
+ "running": "Running",
13622
+ "syncing": "Syncing",
13623
+ "error": "Error",
13624
+ "starting": "Starting"
13625
+ },
13626
+ "profileHelp": {
13627
+ "title": "Profiles",
13628
+ "desc": "The four choices on wizard step 3 are mainly disk budget and role. Each chain shows its recommended size in the wizard. The panel never holds staking keys.",
13629
+ "minimal": "Smallest disk. Use for testnets or a first install. Not a full history, and not for a live staking validator.",
13630
+ "pruned": "Keeps recent chain state and drops older blocks (Pruned). More disk than Minimal, less than a full node. Use to follow the tip long-term.",
13631
+ "validatorReady": "Reserves more disk so you can later attest or propose as a validator. Generate keys offline yourself. Being offline or misconfigured can lose stake.",
13632
+ "rpc": "For this host or other services to query the chain. RPC listens on 127.0.0.1 by default and is not published to the internet."
13633
+ },
13634
+ "software": {
13635
+ "engine": "Docker Engine",
13636
+ "engineDesc": "Validator nodes run as Compose projects. Install Docker here if it is missing. Image prune stays on the Docker page.",
13637
+ "client": "Client",
13638
+ "image": "Image",
13639
+ "present": "Local",
13640
+ "local": "Pulled",
13641
+ "missing": "Not pulled",
13642
+ "size": "Size",
13643
+ "usedBy": "Used by",
13644
+ "unused": "No instance",
13645
+ "pull": "Pull",
13646
+ "pulling": "Pull {{ref}}",
13647
+ "empty": "No pinned client images",
13648
+ "emptyDesc": "The catalog is empty. This should not happen.",
13649
+ "daemonDown": "Docker Engine is not running"
13650
+ }
11562
13651
  },
11563
13652
  "vnc": {
11564
13653
  "pageDesc": "خادم وعميل VNC",
@@ -11804,15 +13893,31 @@
11804
13893
  "stackMissingShort": "غير مثبت",
11805
13894
  "editClientTitle": "تحرير العميل البعيد",
11806
13895
  "editClientDesc": "قم بتحديث المسار والمضيفين وكلمة المرور المخزنة الاختيارية.",
11807
- "clientUpdated": "تم تحديث ملف تعريف العميل"
13896
+ "clientUpdated": "تم تحديث ملف تعريف العميل",
13897
+ "rememberNeedPassword": "أدخل كلمة المرور أولاً.",
13898
+ "settingsNeedStack": "تنطبق هذه الإعدادات الافتراضية عند تثبيت TigerVNC (وXFCE إذا تم تحديده). قم بتثبيتها في علامة التبويب \"تثبيت\" أولاً.",
13899
+ "clientNeedNovnc": "الفتح في المتصفح يحتاج إلى noVNC. قم بتثبيته في علامة التبويب \"تثبيت\" قبل إضافة أجهزة التحكم عن بعد التي تتوقع فتحها هنا.",
13900
+ "needXfceFirst": "Install XFCE first",
13901
+ "needSessionRunning": "Session is not running — start it first",
13902
+ "deleteKeepUserWarn": "The Linux user will stay on the host as an orphan. You must clean it up later.",
13903
+ "bindRfbLine": "RFB {{bind}} :{{port}}",
13904
+ "bindNovncLine": "noVNC 127.0.0.1:{{port}}",
13905
+ "bindNovncHint": "noVNC listens on localhost. The desktop is reached through this panel, not the public internet, unless RFB bind is all interfaces.",
13906
+ "hostnameBroken": "This host cannot resolve its own hostname ({{hostname}}). Session start will fail.",
13907
+ "hostnameFix": "Write hostname to /etc/hosts",
13908
+ "hostnameFixTitle": "Append this line to /etc/hosts?",
13909
+ "hostnameFixDesc": "{{line}}",
13910
+ "hostnameFixDone": "Hostname /etc/hosts updated",
13911
+ "startAfterCreateBlocked": "Disabled until the hostname resolves",
13912
+ "hostnameBrokenIdle": "Hostname {{hostname}} does not resolve on this host. Fix /etc/hosts before you create a session."
11808
13913
  },
11809
13914
  "vpn": {
11810
13915
  "pageDesc": "خادم VPN والعميل",
11811
13916
  "eyebrow": "VPN",
11812
13917
  "tab": {
11813
13918
  "wireguard": "WireGuard",
11814
- "openvpn": "المسنجر",
11815
- "outline": "شادوسوكس",
13919
+ "openvpn": "OpenVPN",
13920
+ "outline": "Shadowsocks",
11816
13921
  "client": "العميل المحلي",
11817
13922
  "software": "برمجة",
11818
13923
  "monitor": "شاشة",
@@ -11935,6 +14040,21 @@
11935
14040
  "lanCidrs": "شبكات LAN",
11936
14041
  "customCidr": "CIDR",
11937
14042
  "addCidr": "يضيف"
11938
- }
14043
+ },
14044
+ "engineNotInstalled": "محرك VPN هذا غير مثبت على المضيف.",
14045
+ "serverNotListening": "وحدة الخادم غير نشطة. قد يكون UDP/TCP {{port}} مغلقاً.",
14046
+ "installEngineFirst": "قم بتثبيت محرك VPN أولاً",
14047
+ "portHint": {
14048
+ "51820": "منفذ الاستماع WireGuard الافتراضي",
14049
+ "51821": "منفذ استماع بديل لـ WireGuard",
14050
+ "51822": "منفذ الاستماع البديل الثاني WireGuard"
14051
+ },
14052
+ "needServerRunning": "{{engine}} is not running — apply the server first",
14053
+ "engineSummarySoftware": "{{installed}} installed · {{running}} running",
14054
+ "privateKeyOnce": "The client private key is shown only here. Download or copy it now — it cannot be recovered later.",
14055
+ "showPrivateKey": "Show private key",
14056
+ "hidePrivateKey": "Hide private key",
14057
+ "deletePeerTitle": "Delete peer {{name}}?",
14058
+ "deletePeerDesc": "Remove {{name}} ({{address}}). The client disconnects immediately and the config cannot be restored."
11939
14059
  }
11940
14060
  }