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": "Fallido",
16
16
  "error": "Error",
17
17
  "unknown": "No investigado",
18
- "fallback": "Desconocido"
18
+ "fallback": "Desconocido",
19
+ "activating": "Starting",
20
+ "stuck": "Start stuck"
19
21
  },
20
22
  "liveN": "{{count}} en línea",
21
23
  "registeredOnly": "Sólo registrado",
@@ -130,7 +132,20 @@
130
132
  "labelStderr": "stderr",
131
133
  "labelAckCli": "reconocimiento + CLI JSON",
132
134
  "labelStdoutBody": "Cuerpo de salida estándar CLI",
133
- "resultOuterHint": "El resultado externo es CLI --json stdout."
135
+ "resultOuterHint": "El resultado externo es CLI --json stdout.",
136
+ "statusFlowTitle": "Flujo de estado",
137
+ "statusFlow": "Solo registrado → en línea → obsoleto (>60 s) → fuera de línea (desconectado). El filtro \"Sin conexión\" está desconectado.",
138
+ "colSession": "UUID de sesión",
139
+ "copySession": "Copiar UUID de sesión para clúster/CLI --session",
140
+ "staleFor": "Invisible {{age}}",
141
+ "commandTitle": "Poner en cola un comando para esta sesión",
142
+ "historyTitleShort": "Abrir historial de comandos (solo lectura)",
143
+ "expEdge": "En un borde:",
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": "Limpiar los residuos del conflicto",
249
264
  "cleanupConflictsTitle": "¿Limpiar todos los residuos del conflicto?",
250
265
  "cleanupConflictsDesc": "Elimine todas las configuraciones de artefactos en el disco que entren en conflicto con un proyecto o un nombre de servidor independiente. Se mantienen las filas del proyecto.",
251
- "artifactRemovedOk": "Configuración residual eliminada"
266
+ "artifactRemovedOk": "Configuración residual eliminada",
267
+ "sslTerminatedUpstream": "TLS termina al frente de Nginx",
268
+ "removeArtifactHint": "Borra solo este conf residual en disco. No elimina el proyecto.",
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": "Borrador",
@@ -285,7 +306,10 @@
285
306
  "project.publish": "Publicar Nginx",
286
307
  "project.suspend": "Suspender proyecto",
287
308
  "software.install": "instalar software",
288
- "software.update": "Actualizar software"
309
+ "software.update": "Actualizar software",
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": "Después de que el tar local tenga éxito, envíelo a SFTP, ruta local o S3.",
420
444
  "accessKey": "Clave de acceso",
421
445
  "secretKey": "clave secreta",
422
- "overwriteConfirmHint": "Escriba OVERWRITE para confirmar la sobrescritura."
446
+ "overwriteConfirmHint": "Escriba OVERWRITE para confirmar la sobrescritura.",
447
+ "testRemote": "Probar destino",
448
+ "testRemoteDone": "Sonda remota finalizada",
449
+ "testRemoteFailed": "Sonda remota fallida",
450
+ "resticRepoPh": "Directorio de datos del panel / restic-repo",
451
+ "testDisabledHint": "Active la pulsación remota antes de realizar la prueba.",
452
+ "identityId": "Identidad SSH saliente",
453
+ "identityHint": "Privilegiado. Misma bóveda que /security SSH. La contraseña necesita sshpass.",
454
+ "identityNone": "Ninguno: contraseña o clave predeterminada",
455
+ "remotePathHint": "Relativo a la casa del usuario remoto (o chroot SFTP). “.” es ese hogar.",
456
+ "restoreFullTitle": "Sobrescriba los archivos del proyecto y las bases de datos de este archivo: escriba el nombre del archivo para confirmar",
457
+ "restoreWebTitle": "Restaurar archivos del sitio web solo desde este archivo",
458
+ "previewTitle": "Vista previa de restauración sin escribir",
459
+ "partialSkipped": "Parcial: algunos proyectos se omitieron",
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": "Rastreador BT",
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": "Estado",
488
+ "running": "Correr",
489
+ "stopped": "Interrumpido",
431
490
  "installed": "Installed (bundled)",
432
491
  "start": "Start tracker",
433
492
  "stop": "Stop tracker",
434
- "refresh": "Refresh",
435
- "settings": "Settings",
493
+ "refresh": "Refrescar",
494
+ "settings": "Ajustes",
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": "Nombre",
455
514
  "colHash": "Info hash",
456
- "colSeeds": "Seeds",
457
- "colLeechers": "Leechers",
458
- "colStatus": "Status",
515
+ "colSeeds": "Semillas",
516
+ "colLeechers": "sanguijuelas",
517
+ "colStatus": "Estado",
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": "Copiar",
521
+ "copied": "copiado",
522
+ "statsTorrents": "Torrentes",
523
+ "statsPeers": "Colegas",
524
+ "statsAnnounces": "anuncia",
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.",
@@ -476,22 +535,22 @@
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": "Trabajo",
539
+ "colShare": "Compartir",
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": "Descripción general",
544
+ "tabTorrents": "Torrentes",
545
+ "tabJobs": "Empleos",
546
+ "tabSettings": "Ajustes",
547
+ "tabAbout": "Acerca de",
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": "Vivir",
553
+ "liveOff": "Inactivo",
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": "Hecho",
563
+ "stepTodo": "Hacer",
564
+ "networkCard": "Red",
506
565
  "networkCardDesc": "Where the tracker listens and what host appears in magnets.",
507
- "seederCard": "Seeder",
566
+ "seederCard": "Sembradora",
508
567
  "seederCardDesc": "In-process WebTorrent seeder limits and peer ports.",
509
- "lifecycleCard": "Lifecycle",
568
+ "lifecycleCard": "Ciclo vital",
510
569
  "lifecycleCardDesc": "Boot behaviour and how the service is packaged.",
511
570
  "pid": "PID",
512
- "port": "Port",
571
+ "port": "Puerto",
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": "Todo",
576
+ "filterSeeding": "siembra",
577
+ "filterOther": "Otro",
519
578
  "noMatch": "No torrents match your filter",
520
- "seedStatusSeeding": "Seeding",
521
- "seedStatusPending": "Pending",
579
+ "seedStatusSeeding": "siembra",
580
+ "seedStatusPending": "Pendiente",
522
581
  "seedStatusError": "Error",
523
- "seedStatusStopped": "Stopped",
524
- "seedStatusNone": "None",
582
+ "seedStatusStopped": "Interrumpido",
583
+ "seedStatusNone": "Ninguno",
525
584
  "notesTitle": "Service notes",
526
585
  "exposureTitle": "Network access",
527
586
  "protoHttp": "HTTP",
@@ -538,14 +597,96 @@
538
597
  "udpPortClassic": "6969 · Classic",
539
598
  "portSuggest8000": "8000 · Recommended",
540
599
  "saveOkRestart": "Guardado: reinicie el rastreador para aplicar puertos",
541
- "announceHostUnset": ""
600
+ "announceHostUnset": "No definido",
601
+ "tabTrackers": "Rastreadores",
602
+ "addTorrent": "Agregar torrente",
603
+ "addTorrentTitle": "Agregar torrente",
604
+ "addTorrentHint": "Sube un .torrent o pega un imán. Elija una carpeta de Archivos. WebTorrent descarga los archivos y las semillas que faltan cuando se completa.",
605
+ "dropTorrent": "Suelta un .torrent aquí",
606
+ "chooseFile": "o elige un archivo",
607
+ "magnetLabel": "Imán",
608
+ "magnetPlaceholder": "imán:?xt=urna:btih:…",
609
+ "inspect": "Leer",
610
+ "extraTrackersPreview": "También anunciará a {{n}} rastreadores adicionales",
611
+ "saveLocation": "Guardar ubicación",
612
+ "saveRootPublic": "Archivos públicos",
613
+ "newFolder": "Nueva carpeta",
614
+ "destPreview": "escribirá a",
615
+ "startDownload": "Iniciar descarga",
616
+ "filterDownloading": "Descargando",
617
+ "filterPaused": "En pausa",
618
+ "filterError": "Error",
619
+ "emptyDrop": "Suelta un .torrent aquí o elige un archivo",
620
+ "emptyHint": "Los archivos van en la carpeta que elijas. Si ya están completos, este hospeda las semillas. Motor: WebTorrent: no se requiere descarga de software adicional.",
621
+ "pause": "Pausa",
622
+ "resume": "Reanudar",
623
+ "openFolder": "Abrir carpeta",
624
+ "remove": "Eliminar",
625
+ "removeKeep": "Eliminar, conservar archivos",
626
+ "removeDelete": "Quitar y eliminar archivos",
627
+ "removeConfirm": "¿Eliminar este torrent de la biblioteca?",
628
+ "kindShare": "Compartir",
629
+ "filesInTorrent": "archivos",
630
+ "extraTrackersDesc": "URL de anuncio adicionales. Las semillas de descarga/semilla de biblioteca y de archivos compartidos las utilizan además de la lista .torrent. Esto no abre el rastreador local a enjambres arbitrarios.",
631
+ "extraTrackersEmpty": "Sin rastreadores adicionales. Agregue URL de anuncio HTTP(S), UDP o WS(S) para que este host pueda encontrar pares.",
632
+ "extraTrackerAdd": "Agregar",
633
+ "extraTrackerUrl": "Anunciar URL",
634
+ "extraTrackerApply": "Aplicar a las semillas actuales.",
635
+ "extraTrackerApplyOk": "Rastreadores adicionales aplicados",
636
+ "extraEnabled": "En",
637
+ "extraTrackerBad": "La URL debe comenzar con http://, https://, udp://, ws:// o wss://.",
638
+ "extraTrackerDup": "Ya listado",
639
+ "extraTrackerLimit": "Máximo 32 rastreadores adicionales",
640
+ "addOk": "Agregado a la biblioteca",
641
+ "savedTo": "Ahorrar",
642
+ "folderEmpty": "Sin subcarpetas",
643
+ "needTorrentFile": "Elija un archivo .torrent",
644
+ "torrentTooBig": ".torrent de más de 8 MiB",
645
+ "seedStatusDownloading": "Descargando",
646
+ "seedStatusChecking": "De cheques",
647
+ "seedStatusPaused": "En pausa",
648
+ "seedStatusQueued": "En cola",
649
+ "swarmLeftover": "El Tracker tiene {{count}} anuncio(s) que no están en la biblioteca (origen distinto de la lista de torrents)",
650
+ "addSourceSection": "Origen",
651
+ "addSourceFile": "Archivo",
652
+ "addSourceMagnet": "Imán",
653
+ "previewSection": "Vista previa",
654
+ "saveRoot": "Raíz",
655
+ "clearFile": "Quitar archivo",
656
+ "extraTrackersTitle": "Announce extra",
657
+ "extraTrackersEmptyTitle": "Aún no hay trackers",
658
+ "extraEnabledCount": "{{count}} activos",
659
+ "extraApplyHint": "Active al menos uno para aplicar a las semillas actuales",
660
+ "destMode": "Uso de esta carpeta",
661
+ "seedExisting": "Sembrar archivos existentes",
662
+ "downloadNewFolder": "Descargar en una carpeta nueva",
663
+ "destFileConflict": "Ya existe el archivo {{name}}. Elija otra carpeta o siembre el archivo existente si coincide.",
664
+ "waitingPeers": "Esperando pares. Si los archivos ya están en este host, vuelva a añadir y elija sembrar existentes.",
665
+ "stopTitle": "Detenga el rastreador: la inicialización y las descargas se interrumpirán",
666
+ "stopDesc": "Los torrents en ejecución dejan de anunciarse. Los pares se desconectan hasta que inicies el rastreador nuevamente.",
667
+ "fillPublicHost": "Utilice {{host}}",
668
+ "fillPublicHostTitle": "Complete el nombre de host del panel actual como host de anuncio público",
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 (base de datos de usuario FTP)",
547
688
  "nginx": "Nginx",
548
- "certbot": "Certbot (Cifremos)",
689
+ "certbot": "Certbot (Let's Encrypt)",
549
690
  "mysql_client": "Cliente MySQL/MariaDB",
550
691
  "mysql_server": "servidor mysql",
551
692
  "mariadb_server": "servidor mariadb",
@@ -554,10 +695,10 @@
554
695
  "redis_tools": "Cliente Redis",
555
696
  "redis_server": "servidor redis",
556
697
  "ufw": "cortafuegos UFW",
557
- "fail2ban": "falla2ban",
558
- "postfix": "Sufijo",
559
- "dovecot": "Palomar",
560
- "opendkim": "AbiertoDKIM",
698
+ "fail2ban": "fail2ban",
699
+ "postfix": "Postfix",
700
+ "dovecot": "Dovecot",
701
+ "opendkim": "OpenDKIM",
561
702
  "pdns_server": "PowerDNS",
562
703
  "git": "git",
563
704
  "node": "Node.js",
@@ -565,7 +706,7 @@
565
706
  "python": "Python",
566
707
  "go": "Go",
567
708
  "rust": "Rust",
568
- "chromium": "Cromo / Cromo"
709
+ "chromium": "Chromium / Chrome"
569
710
  },
570
711
  "php": {
571
712
  "session": "Sesión",
@@ -689,7 +830,95 @@
689
830
  "deleteNodeDesc": "Elimina el nodo CDN \"{{name}}\".",
690
831
  "deleteSiteDesc": "Elimina el sitio CDN \"{{name}}\".",
691
832
  "deleteSiteC1": "Política del sitio y asociaciones perimetrales",
692
- "deleteSiteC2": "Las configuraciones de nginx aplicadas pueden necesitar una limpieza por separado o volver a aplicarse"
833
+ "deleteSiteC2": "Las configuraciones de nginx aplicadas pueden necesitar una limpieza por separado o volver a aplicarse",
834
+ "statOnline": "Online",
835
+ "statOffline": "Sin conexión {{n}}",
836
+ "statHitRate": "Tasa de aciertos {{v}}",
837
+ "hitNoStats": "Aún no hay estadísticas de borde",
838
+ "loopbackOriginBlocked": "No se aplicará el origin de bucle {{url}} a un borde remoto. Ponga un origin alcanzable.",
839
+ "applyFailedHint": "Fallo al aplicar — vea las notas abajo",
840
+ "applyStatus": {
841
+ "draft": "Borrador",
842
+ "planned": "Planificado",
843
+ "applying": "Aplicando",
844
+ "applied": "Aplicado",
845
+ "failed": "Fallido",
846
+ "partial": "Parcial"
847
+ },
848
+ "drain": "Drenar",
849
+ "drainTitle": "Dejar de enviar nuevo tráfico CDN a este borde",
850
+ "drainDesc": "¿Drenar “{{name}}”? Las conexiones existentes permanecen hasta que finalizan.",
851
+ "drainLastTitle": "Este es el último borde: el drenaje dejará todos los sitios sin borde.",
852
+ "drainLastDesc": "“{{name}}” es la única ventaja. Drenelo y todos los sitios no tendrán ventaja.",
853
+ "clearDrainTitle": "Aceptar nuevo tráfico en este borde nuevamente",
854
+ "clearDrainDesc": "¿Drenaje limpio en “{{name}}”?",
855
+ "deleteNodeTitle": "Eliminar este borde CDN",
856
+ "deleteLastNodeTitle": "Elimine el último borde: todos los sitios no tendrán borde",
857
+ "purge": "Purga",
858
+ "previewTitle": "Vista previa de la configuración de nginx (sin escritura)",
859
+ "writeConfTitle": "Escribir archivos de configuración de Edge Nginx",
860
+ "applyEdgesTitle": "Aplicar este sitio a los bordes (escribe nginx)",
861
+ "purgeTitle": "Purgar caché en los bordes",
862
+ "dnsSyncTitle": "Escribir registros DNS CDN",
863
+ "probeDnsTitle": "Bordes de sonda y DNS (solo lectura)",
864
+ "distSslTitle": "Copie materiales TLS a los bordes",
865
+ "leIssueTitle": "Emitir un certificado Let's Encrypt y distribuirlo",
866
+ "deleteSiteTitle": "Eliminar este sitio CDN",
867
+ "siteOpConfirmGeneric": "¿Ejecutar esta acción en “{{name}}”?",
868
+ "siteOpConfirmDesc": "Sitio “{{name}}” · {{action}}. Esto puede cambiar nginx, DNS o certificados.",
869
+ "siteOpConfirm": {
870
+ "apply": "¿Aplicar este sitio a los bordes?",
871
+ "render": "¿Escribir configuración de nginx para este sitio?",
872
+ "purge": "¿Borrar caché de este sitio?",
873
+ "dns-sync": "¿Sincronizar DNS para este sitio?",
874
+ "dist": "¿Distribuir TLS a los bordes?",
875
+ "issue": "Problema ¿Vamos a cifrar y distribuir?"
876
+ },
877
+ "pillNodesSites": "{{n}} nodos · {{s}} sitios",
878
+ "statHit": "Tasa de aciertos",
879
+ "hitUnknown": "Desconocido",
880
+ "lastHealthHint": "Última sonda {{at}} · {{ok}}",
881
+ "lastHealthNever": "Aún no sondeado: ejecute Sondeo",
882
+ "lastHealthFail": "sonda fallida",
883
+ "healthLoopNeedSites": "Agrega un sitio primero",
884
+ "nodeStatus": {
885
+ "online": "en línea",
886
+ "offline": "desconectado",
887
+ "draining": "drenaje",
888
+ "unknown": "desconocido"
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": "Comando desconocido: {{command}}\nEjecute `{{cli}} ayuda`",
@@ -1575,7 +1804,7 @@
1575
1804
  },
1576
1805
  "status": {
1577
1806
  "bans": {
1578
- "a8d96b": "Uso: {{CLI_NAME}} estado de defensa|prohibiciones|sospechosos|prohibición|unban|lista blanca|stack-apply|fail2ban|firewall|timeline|presets [--json]\n` +\n ` prohibiciones [--q texto] [--source fail2ban|panel|ufw|auto]\n` +\n ` sospechosos [--q texto]\n` +\n `stack-apply [--execute] # UFW + fail2ban + valor preestablecido actual\n` +\n `fail2ban | firewall # sondas profundas (honestas)\n` +\n ` línea de tiempo [--limit N] [--q texto]\n` +\n ` presets # lista + activePreset"
1807
+ "a8d96b": "Uso: {{CLI_NAME}} estado de defensa|prohibiciones|sospechosos|prohibición|unban|lista blanca|stack-apply|fail2ban|firewall|timeline|presets [--json]\n prohibiciones [--q texto] [--source fail2ban|panel|ufw|auto]\n sospechosos [--q texto]\nstack-apply [--execute] # UFW + fail2ban + valor preestablecido actual\nfail2ban | firewall # sondas profundas (honestas)\n línea de tiempo [--limit N] [--q texto]\n presets # lista + activePreset"
1579
1808
  }
1580
1809
  }
1581
1810
  }
@@ -1741,7 +1970,7 @@
1741
1970
  }
1742
1971
  },
1743
1972
  "x": {
1744
- "972912": "Uso:\n ysk-server migra inventario [--data-dir PATH] --json\n ysk-server migrar host --target root@IP [--identity-file PATH|--identity-id ID|--contraseña PW] --execute [--maintenance] [--force-wipe-target]\n ysk-server migrar publicación --ID de trabajo --data-dir RUTA --ejecutar # en el objetivo\n Estado de migración del servidor ysk [--ID de trabajo]\n ysk-server migrar currículum --ID de trabajo --ejecutar"
1973
+ "972912": "Uso:\n ysk-server migra inventario [--data-dir PATH] --json\n ysk-server migrar host --target root@IP [--identity-file PATH|--identity-id ID|--contraseña PW] --execute [--maintenance] [--force-wipe-target]\n ysk-server migrar publicación --ID de trabajo --data-dir RUTA --ejecutar # en el objetivo\n Estado de migración del servidor ysk [--ID de trabajo]\n ysk-server migrar currículum --ID de trabajo --ejecutar\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": "Uso: alojamiento del servidor ysk <sub>\n Operaciones peligrosas en seco por defecto; agregue --execute (+ YSK_EXECUTE=1) para aplicar\n nginx | nginx-sync [--ejecutar]\n redis-provisión | provisión-postgres | mysql-provision [--ejecutar]\n dns-zone --zone X --ip A.B.C.D [--ipv6 X:X::X] [--validar] [--recargar]\n zonas-dns | estado-powerdns | instalación-powerdns [--instalar|--ejecutar]\n powerdns-load --zone X --ip A.B.C.D [--carga|--ejecutar]\n aplicar correo electrónico --dominio X [--instalar|--ejecutar]\n buzón de correo electrónico --dominio X --usuario local [--contraseña P] [--ip A.B.C.D] [--sistema]\n ftps-apply --dominio X [--instalar|--ejecutar]\n tiempos de ejecución | instalación en tiempo de ejecución --kind node|php|python|go|rust --versión V [--install|--execute]\n dovecot-passdb --dominio X | --todos\n aplicación de correo web --dominio webmail.ejemplo.com [--descargar]\n archivos-públicos --archivos de dominio.ejemplo.com [--recargar]\n email-bootstrap --dominio ejemplo.com --ip A.B.C.D [--instalar|--ejecutar]\n capacidad de entrega de correo electrónico --dominio ejemplo.com # PTR/DNSBL/paquete de preparación (honesto)\n aplicar firewall [--smtp] [--ejecutar]",
1747
1976
  "logsQuery": "Uso: {{CLI_NAME}} consulta de registros --source <id> [--lines N] [--grep G] [--since 1h] [--priority err]\n ejemplos de fuentes: diario: diario:nginx.service archivo:syslog proyecto:<uuid>\n {{CLI_NAME}} fuentes de registros --json\n {{CLI_NAME}} diario de registros [--unit nginx.service] --json"
@@ -1910,6 +2139,7 @@
1910
2139
  "noData": "Sin datos",
1911
2140
  "input": "Aporte",
1912
2141
  "pleaseEnter": "Ingrese {{value}}",
2142
+ "required": "Obligatorio",
1913
2143
  "about": "Acerca de",
1914
2144
  "operation": "Comportamiento",
1915
2145
  "delete": "Borrar",
@@ -1996,7 +2226,14 @@
1996
2226
  "show": "Espectáculo",
1997
2227
  "done": "Hecho",
1998
2228
  "next": "Próximo",
1999
- "previous": "Anterior"
2229
+ "previous": "Anterior",
2230
+ "all": "Todo",
2231
+ "showPassword": "Espectáculo",
2232
+ "hidePassword": "Esconder",
2233
+ "more": "Más",
2234
+ "redirectedTo": "Se abrió {{to}} (antes {{from}})",
2235
+ "unavailable": "Not available right now",
2236
+ "ok": "OK"
2000
2237
  },
2001
2238
  "cron": {
2002
2239
  "presetCdTrue": "aplicación de CD + verdadero (prueba)",
@@ -2135,7 +2372,39 @@
2135
2372
  "sourceHost": "Anfitrión",
2136
2373
  "noHostJobs": "No hay trabajos crontab en este ámbito",
2137
2374
  "hostPartial": "No se pudo leer el crontab de todos los usuarios (se requiere root)",
2138
- "pendingInstall": "Instalación pendiente ({{count}})"
2375
+ "pendingInstall": "Instalación pendiente ({{count}})",
2376
+ "hourRange": "La hora debe ser de 0 a 23.",
2377
+ "minuteRange": "Los minutos deben ser 0–59.",
2378
+ "hoursCommon": "Horario común",
2379
+ "hoursAll": "todas las horas",
2380
+ "invalidExpr": "No es una expresión cron de 5 campos válida.",
2381
+ "needCommand": "Se requiere comando.",
2382
+ "needUser": "Elija un proyecto o un usuario del sistema.",
2383
+ "hostCounts": "Líneas de host",
2384
+ "hostCountsVal": "{{ysk}} · otro {{other}} · total {{total}}",
2385
+ "hostYskYes": "líneas del panel presentes",
2386
+ "hostYskNo": "sin líneas de paneles",
2387
+ "emptyHostCrontab": "No hay crontab para {{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": "Panel",
@@ -2181,7 +2450,8 @@
2181
2450
  "mode": {
2182
2451
  "degraded": "degradado",
2183
2452
  "production_capable": "listo para la producción",
2184
- "normal": "normal"
2453
+ "normal": "normal",
2454
+ "blocked": "blocked"
2185
2455
  },
2186
2456
  "details": "Detalles",
2187
2457
  "certExpiryTitle": "Caducidad del certificado:",
@@ -2224,7 +2494,7 @@
2224
2494
  "runtime": "Tiempo de ejecución",
2225
2495
  "runtimeHint": "Establece la versión de tiempo de ejecución predeterminada y el estilo de implementación.",
2226
2496
  "runtimeVersion": "Versión en tiempo de ejecución",
2227
- "versionHint": "Almacenado como proyecto runtime_version",
2497
+ "versionHint": "Se guarda como versión de entorno de ejecución del proyecto",
2228
2498
  "serverIpv4": "Servidor IPv4",
2229
2499
  "serverIpv4Hint": "DNS A/correo SPF",
2230
2500
  "serverIpv4Ph": "Este host público IPv4",
@@ -2246,7 +2516,27 @@
2246
2516
  "noNotifs": "Sin notificaciones",
2247
2517
  "noNotifsDesc": "Las alertas del sistema y todos aparecen aquí.",
2248
2518
  "applyAuditTitle": "Aplicar auditoría de estado",
2249
- "applyAuditDesc": "ok {{ok}} · advertir {{warn}} · malo {{bad}}"
2519
+ "applyAuditDesc": "ok {{ok}} · advertir {{warn}} · malo {{bad}}",
2520
+ "barTitle": "{{count}} aviso(s) del host",
2521
+ "levelCritical": "Crítico",
2522
+ "levelWarn": "Aviso",
2523
+ "levelInfo": "Información",
2524
+ "colTitle": "Aviso",
2525
+ "colDetail": "Detalle",
2526
+ "colSource": "Origen",
2527
+ "notifSearch": "Alertas de búsqueda",
2528
+ "notifAll": "Todo",
2529
+ "notifDismiss": "Esconder",
2530
+ "goFix": "Arreglar",
2531
+ "needDomainFirst": "Escriba primero un dominio",
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": "Sin datos",
@@ -2471,7 +2761,54 @@
2471
2761
  "probe": "Sonda",
2472
2762
  "name": "Nombre",
2473
2763
  "type": "Tipo",
2474
- "status": "Estado"
2764
+ "status": {
2765
+ "healthy": "Saludable",
2766
+ "planned": "Planificado",
2767
+ "partial": "Parcial",
2768
+ "failed": "Fallido",
2769
+ "draft": "Borrador",
2770
+ "degraded": "Degradado",
2771
+ "applied": "Aplicado"
2772
+ },
2773
+ "fleetSession": "ID de sesión del agente de flota",
2774
+ "fleetSessionHint": "Optional. Paste a session UUID from /agents. Then this peer uses fleet (no SSH). Leave empty for SSH scp.",
2775
+ "fleetSessionPh": "UUID de sesión de página de agentes",
2776
+ "engineNotInstalled": "{{engine}} no está instalado en este host; instálelo primero o abra el motor que realmente se está ejecutando.",
2777
+ "fleetSessionNone": "Ninguno: use SSH",
2778
+ "fleetSessionOpenAgents": "Abrir /agentes para registrar una sesión",
2779
+ "createWizardTitle": "Abre el asistente de planes. Necesita una IP local y ≥1 par. Escribe únicamente artefactos del panel (ejecución en seco). No reinicia el motor hasta que lo aplica.",
2780
+ "bootstrap": "Oreja",
2781
+ "fleetApply": "Aplicar flota",
2782
+ "planTitle": "Regenerar el plan de clúster (sin cambio de host)",
2783
+ "writeFileTitle": "Escribir archivos de administración en el directorio de datos del panel (ejecución en seco)",
2784
+ "probeLocalTitle": "Sondear solo este host",
2785
+ "probeAllTitle": "Sondear a cada miembro registrado",
2786
+ "bootstrapTitle": "Instale el drop-in local y arranque el primer nodo",
2787
+ "remoteInstallPlanTitle": "Vista previa de la instalación remota (sin ejecución)",
2788
+ "downloadBundleTitle": "Descargar paquete de configuración de pares (.tar.gz)",
2789
+ "pushPlanTitle": "Vista previa push to peer (sin scp)",
2790
+ "fleetSyncPlanTitle": "Vista previa de sincronización de flota (sin ejecución)",
2791
+ "fleetApplyTitle": "¿Se aplica la cola a los miembros de la flota?",
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": "Explorar datos",
@@ -2511,7 +2848,9 @@
2511
2848
  "reloadConfig": "Recargar configuración",
2512
2849
  "disableBoot": "Deshabilitar al arrancar",
2513
2850
  "needRights": "Necesita derechos de cambio de sistema y administrador. Los fracasos muestran razones, nunca finjas el éxito.",
2514
- "noneFetched": "- ninguno -"
2851
+ "noneFetched": "- ninguno -",
2852
+ "disableBootConfirm": "El motor no arrancará después del reinicio hasta que lo habilite nuevamente.",
2853
+ "affectsProjects": "Sites and services that use this engine will be interrupted."
2515
2854
  },
2516
2855
  "expiresLabel": "Vence",
2517
2856
  "importEntry": "Entrada: {{url}}",
@@ -2537,7 +2876,30 @@
2537
2876
  "unfreezeOk": "{{engine}} reparación completa",
2538
2877
  "startAfterUnfreeze": "Iniciar servicio (plan de reparación de ejecución automática en caso de falla)",
2539
2878
  "serviceDownTitle": "El servicio de base de datos está caído",
2540
- "serviceDownBody": "El servicio no es saludable."
2879
+ "serviceDownBody": "El servicio no es saludable.",
2880
+ "emptyDbHostHasRows": "El host ya tiene bases de datos que no están en esta lista del plano de control.",
2881
+ "hostHasUntracked": "{{count}} las bases de datos del host no están registradas en el panel",
2882
+ "hostInventoryHint": "La tabla incluye únicamente filas del plano de control. Los nombres en vivo provienen de MOSTRAR BASES DE DATOS.",
2883
+ "adoptHostDb": "Regístrate {{name}}",
2884
+ "remoteTest": "Conexión de prueba",
2885
+ "remoteTestDone": "Sonda del host remoto finalizada",
2886
+ "remoteTestOk": "accesible",
2887
+ "remoteTestFail": "inalcanzable",
2888
+ "remoteNotChecked": "no probado",
2889
+ "registeredVsHostHint": "Registrado en el panel / hallado en el anfitrión",
2890
+ "dumpNeedRegistered": "Registre primero una base de datos en el panel",
2891
+ "dumpFirstDbTitle": "Exportar la primera base registrada",
2892
+ "importNeedRegistered": "Registre primero una base de datos en el panel",
2893
+ "importLatestNeedConfirm": "Requiere confirmación — importa a la base registrada",
2894
+ "adoptHostDbTitle": "Solo registra el nombre en el plano de control; no cambia datos del anfitrión.",
2895
+ "cleanupExpiredTempUsersTitle": "Elimina usuarios temporales del panel que ya caducaron",
2896
+ "remoteDeleteTitle": "Quitar solo este registro",
2897
+ "remoteDeleteConfirm": "¿Quitar el registro {{name}}? El servidor remoto no cambia.",
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": "Confirmar",
@@ -2761,7 +3123,277 @@
2761
3123
  "aboutHealthTitle": "Estado del servicio",
2762
3124
  "aboutHealthBody": "Utilice Herramientas para sondear PowerDNS, reparar el enlace y abrir el puerto 53.",
2763
3125
  "aboutStackTitle": "Software",
2764
- "aboutStackBody": "Verifique/actualice el paquete PowerDNS en Software."
3126
+ "aboutStackBody": "Verifique/actualice el paquete PowerDNS en Software.",
3127
+ "invalidZone": "Nombre de zona no válido. Utilice un dominio real (por ejemplo, ejemplo.com).",
3128
+ "invalidIpv4": "IPv4 no válido. Cada octeto debe tener un valor entre 0 y 255.",
3129
+ "mailZonesMissing": "Los dominios de correo electrónico no tienen zona DNS aquí: {{domains}}.",
3130
+ "createMailZone": "Crear zona de correo",
3131
+ "createMailZoneNow": "Zona de correo creada {{domain}}",
3132
+ "healNeedInstall": "PowerDNS no está instalado: instálelo primero en la pestaña Software",
3133
+ "applyNeedService": "El servicio DNS no se está ejecutando: inícielo o instálelo antes de aplicar",
3134
+ "deleteZoneNeedName": "Eliminar esta zona: escribirá el nombre de la zona para confirmar",
3135
+ "toolsFirewallTitle": "Cortafuegos (UFW)",
3136
+ "toolsFirewallHint": "Permitir o denegar el puerto 53. No inicia ni detiene PowerDNS.",
3137
+ "toolsUnitTitle": "Unidad PowerDNS",
3138
+ "toolsUnitHint": "Unidad systemd pdns: iniciar, detener, reiniciar, recargar.",
3139
+ "installConfirmTitle": "¿Instalar PowerDNS?",
3140
+ "installConfirmDesc": "Instala pdns-server y escribe la config gestionada. Requiere root y YSK_EXECUTE=1.",
3141
+ "installConfirmConsequence": "Tras instalar e iniciar, PowerDNS usará el puerto 53.",
3142
+ "installPort53Busy": "Algo ya escucha en el puerto 53. PowerDNS puede fallar al enlazar hasta detener o reparar ese proceso.",
3143
+ "installPort53BusyConsequence": "Repare el enlace o detenga el otro oyente antes de esperar respuestas en 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": "Instala y controla el motor Docker, contenedores, imágenes, proyectos Compose y disco en este host.",
3153
+ "refresh": "Actualizar",
3154
+ "notInstalled": "Docker Engine no está instalado. Instala docker.io y docker-compose-v2 desde esta página.",
3155
+ "protected": "Protegido",
3156
+ "pruneConfirm": "Escribe PRUNE para confirmar la limpieza de volume o del sistema",
3157
+ "settingsHint": "Solo un subconjunto seguro de daemon.json. Aplicar escribe el archivo y reinicia docker.service.",
3158
+ "cli": {
3159
+ "usage": "Uso: 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": "Resumen",
3163
+ "containers": "Contenedores",
3164
+ "images": "Imágenes",
3165
+ "compose": "Compose",
3166
+ "volumes": "Volúmenes",
3167
+ "networks": "Redes",
3168
+ "prune": "Limpiar",
3169
+ "settings": "Ajustes",
3170
+ "about": "Acerca de"
3171
+ },
3172
+ "col": {
3173
+ "engine": "Motor",
3174
+ "containers": "Contenedores",
3175
+ "version": "Versión",
3176
+ "dataRoot": "Directorio de datos",
3177
+ "disk": "Disco",
3178
+ "validators": "Pilas de validador",
3179
+ "name": "Nombre",
3180
+ "image": "Imagen",
3181
+ "status": "Estado",
3182
+ "ports": "Puertos",
3183
+ "managed": "Gestionado por el panel",
3184
+ "size": "Tamaño",
3185
+ "driver": "Controlador",
3186
+ "type": "Tipo",
3187
+ "reclaimable": "Recuperable"
3188
+ },
3189
+ "state": {
3190
+ "up": "Activo",
3191
+ "down": "Detenido",
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": "Iniciar",
3205
+ "stop": "Detener",
3206
+ "restart": "Reiniciar",
3207
+ "remove": "Eliminar",
3208
+ "logs": "Registros",
3209
+ "inspect": "Inspeccionar",
3210
+ "exec": "Exec (versión)",
3211
+ "run": "Ejecutar imagen",
3212
+ "pull": "Descargar",
3213
+ "up": "Levantar",
3214
+ "down": "Bajar",
3215
+ "createVolume": "Crear volume",
3216
+ "createNetwork": "Crear red",
3217
+ "pruneContainers": "Limpiar contenedores",
3218
+ "pruneImages": "Limpiar imágenes",
3219
+ "pruneVolumes": "Limpiar volumes",
3220
+ "pruneSystem": "Limpieza del sistema",
3221
+ "startEngine": "Iniciar motor",
3222
+ "stopEngine": "Detener motor",
3223
+ "restartEngine": "Reiniciar motor",
3224
+ "applyDaemon": "Aplicar ajustes del motor"
3225
+ },
3226
+ "empty": {
3227
+ "containers": "No hay contenedores",
3228
+ "images": "No hay imágenes",
3229
+ "compose": "No hay proyectos Compose",
3230
+ "volumes": "No hay volumes",
3231
+ "networks": "No hay redes",
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": "Aún no hay registros",
3237
+ "follow": "Follow"
3238
+ },
3239
+ "settings": {
3240
+ "logMaxSize": "Tamaño máximo de registro del contenedor",
3241
+ "liveRestore": "Restauración en vivo (mantener contenedores si el demonio se reinicia)",
3242
+ "mirrors": "Espejos de Registry (una URL por línea)",
3243
+ "insecure": "Registries sin cifrado (un host por línea)"
3244
+ },
3245
+ "about": {
3246
+ "body": "Docker es un servicio de host de primer nivel en YSK Server, como Nginx. Se instala desde el panel (Ubuntu docker.io + docker-compose-v2). Los nodos validador se ejecutan como proyectos Compose yskval-*.",
3247
+ "honesty": "Los cambios de host necesitan root y YSK_EXECUTE=1. El valor predeterminado es dry-run. Esta página no es Kubernetes.",
3248
+ "validators": "Abrir nodos validador"
3249
+ },
3250
+ "alerts": {
3251
+ "daemonTitle": "El demonio Docker está caído",
3252
+ "daemonBody": "Docker está instalado pero docker.service no está activo. Las pilas de validador no pueden arrancar."
3253
+ },
3254
+ "errors": {
3255
+ "notInstalled": "Docker no está instalado",
3256
+ "daemonDown": "El demonio Docker no está activo",
3257
+ "needCompose": "Se requiere docker compose (complemento v2)",
3258
+ "badImage": "Referencia de imagen no válida",
3259
+ "badName": "Nombre no válido",
3260
+ "badPort": "Publicación de puerto no válida",
3261
+ "badEnv": "Variable de entorno no válida",
3262
+ "badVolume": "Montaje de volumen no válido",
3263
+ "badNetwork": "Red no válida",
3264
+ "protectedNetwork": "No se puede eliminar una red Docker integrada",
3265
+ "badRestart": "Política de reinicio no válida",
3266
+ "badPrune": "Ámbito de limpieza no válido",
3267
+ "needPruneConfirm": "Limpiar volume o sistema exige confirm=PRUNE",
3268
+ "badDaemon": "Ajuste del motor no válido",
3269
+ "composeMissing": "No se encontró el archivo Compose de este proyecto",
3270
+ "logsFailed": "No se pudieron leer los registros del contenedor",
3271
+ "mutateFailed": "El comando Docker falló",
3272
+ "engineFailed": "No se pudo controlar docker.service",
3273
+ "badExec": "Exec se limita a binarios y preajustes permitidos (sin shell ni TTY)",
3274
+ "uninstallBusy": "Detén los contenedores gestionados por el panel (incluidas las pilas de validador) antes de desinstalar Docker"
3275
+ },
3276
+ "notes": {
3277
+ "dryMutate": "Solo dry-run. Pasa --execute y YSK_EXECUTE=1 para cambiar el host.",
3278
+ "dryPrune": "Vista previa de limpieza (no aplicada).",
3279
+ "dryEngine": "El control del motor es dry-run.",
3280
+ "dryDaemon": "Se escribiría /etc/docker/daemon.json y se reiniciaría docker.service.",
3281
+ "daemonWrote": "Se escribió daemon.json",
3282
+ "start": "Contenedor iniciado",
3283
+ "stop": "Contenedor detenido",
3284
+ "restart": "Contenedor reiniciado",
3285
+ "remove": "Contenedor eliminado",
3286
+ "ran": "Contenedor iniciado desde imagen",
3287
+ "pulled": "Imagen descargada",
3288
+ "exec": "Se ejecutó un exec permitido",
3289
+ "imageRemoved": "Imagen eliminada",
3290
+ "volumeCreated": "Volume creado",
3291
+ "volumeRemoved": "Volume eliminado",
3292
+ "networkCreated": "Red creada",
3293
+ "networkRemoved": "Red eliminada",
3294
+ "pruned": "Limpieza terminada",
3295
+ "compose": {
3296
+ "up": "Proyecto Compose iniciado",
3297
+ "down": "Proyecto Compose detenido",
3298
+ "restart": "Proyecto Compose reiniciado",
3299
+ "rm": "Compose project removed"
3300
+ },
3301
+ "engine": {
3302
+ "start": "docker.service iniciado",
3303
+ "stop": "docker.service detenido",
3304
+ "restart": "docker.service reiniciado"
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": "Qué hace esta página",
3325
+ "whatYouGetLead": "Instala primero Docker Engine. Después puedes ejecutar un contenedor, extraer imágenes y ver las pilas Compose de validador que ya están en este anfitrión.",
3326
+ "capEngine": "Motor",
3327
+ "capEngineDesc": "Instalación en un clic de docker.io y docker-compose-v2. Inicia y detén docker.service aquí.",
3328
+ "capWork": "Contenedores e imágenes",
3329
+ "capWorkDesc": "Elige una imagen habitual, extráela, ejecútala y luego lee los registros o inspecciona el contenedor.",
3330
+ "capStacks": "Pilas de validador",
3331
+ "capStacksDesc": "Las pilas de varios servicios son proyectos Compose de validador (yskval-*). Esta página no acepta YAML subido.",
3332
+ "cardEngine": "Motor",
3333
+ "cardDisk": "Disco",
3334
+ "cardWork": "En este anfitrión",
3335
+ "compose": "Compose",
3336
+ "cgroup": "cgroup",
3337
+ "used": "Usado",
3338
+ "free": "Libre",
3339
+ "running": "En ejecución",
3340
+ "images": "Imágenes",
3341
+ "volumes": "Volúmenes",
3342
+ "networks": "Redes",
3343
+ "goImages": "Imágenes",
3344
+ "goValidators": "Nodos validador",
3345
+ "imagePickHint": "Elige una imagen habitual. Usa Otra solo si necesitas otra referencia.",
3346
+ "imageCustom": "Otra",
3347
+ "driver": "Controlador",
3348
+ "driverLocalOnly": "Este panel solo crea volúmenes local.",
3349
+ "netDefaultDriver": "Las redes nuevas usan el controlador bridge predeterminado de Docker.",
3350
+ "pruneWhat": "Qué eliminar",
3351
+ "pruneAck": "Entiendo que los datos no usados se eliminarán y no se podrán restaurar",
3352
+ "pruneAckDesc": "Limpiar volúmenes o el sistema no se puede deshacer. Se eliminan contenedores detenidos e imágenes no usadas del alcance elegido.",
3353
+ "pruneNow": "Limpiar ahora",
3354
+ "useMirrors": "Usar réplicas de registro",
3355
+ "useInsecure": "Permitir registros sin cifrado",
3356
+ "publishPorts": "Publicar puertos en el anfitrión",
3357
+ "attachVolume": "Adjuntar un volumen",
3358
+ "setEnv": "Definir variables de entorno",
3359
+ "defaultNet": "Predeterminada",
3360
+ "mountPath": "Ruta de montaje",
3361
+ "restartNo": "Nunca",
3362
+ "restartUnless": "Salvo que se detenga",
3363
+ "restartAlways": "Siempre",
3364
+ "restartOnFail": "Si falla",
3365
+ "needAck": "Confirma antes de limpiar",
3366
+ "scopeContainers": "Contenedores detenidos",
3367
+ "scopeImages": "Imágenes no usadas",
3368
+ "scopeVolumes": "Volúmenes no usados",
3369
+ "scopeBuilder": "Caché de construcción",
3370
+ "scopeSystem": "Todo lo no usado",
3371
+ "noVolumesYet": "Aún no hay volúmenes: créalo primero en la pestaña Volúmenes.",
3372
+ "customPort": "Otro puerto del anfitrión",
3373
+ "customPortHost": "Puerto del anfitrión",
3374
+ "customPortContainer": "Puerto del contenedor",
3375
+ "pctUsed": "{{n}}% usado",
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": "Correo electrónico",
@@ -2812,7 +3444,7 @@
2812
3444
  "needExecute": "Necesita YSK_EXECUTE",
2813
3445
  "viewQueue": "Ver cola",
2814
3446
  "flushQueue": "Cola de vaciado",
2815
- "queueHint": "Haga clic en Ver cola para leer la cola de Postfix local.",
3447
+ "queueHint": "Cola Postfix local. Ver es una sonda de lectura; vaciar requiere YSK_EXECUTE.",
2816
3448
  "deleteThisId": "Eliminar esta identificación",
2817
3449
  "queueEmpty": "Sin correo diferido",
2818
3450
  "queueEmptyHint": "Sin mensajes diferidos",
@@ -3081,7 +3713,8 @@
3081
3713
  "dmarcMissing": "Falta DMARC: muy recomendable",
3082
3714
  "ptrBad": "Falta el DNS inverso de PTR o es incorrecto: solicitud al proveedor de VPS",
3083
3715
  "port25Blocked": "El puerto de salida 25 aparece bloqueado: solicite desbloquearlo o utilice la retransmisión SMTP",
3084
- "port25Unknown": "Estado del puerto 25 desconocido: ejecute la verificación de conectividad"
3716
+ "port25Unknown": "Estado del puerto 25 desconocido: ejecute la verificación de conectividad",
3717
+ "dmarcUnpublished": "DMARC se genera en el panel pero aún no se publica en el DNS público"
3085
3718
  },
3086
3719
  "stack": {
3087
3720
  "tlsNote": "Certificados TLS a través de Let's Encrypt para SMTP/IMAP",
@@ -3122,7 +3755,8 @@
3122
3755
  "postfixReloaded": "Postfix recargado.",
3123
3756
  "postfixReloadFailed": "Falló la recarga de Postfix: {{detail}}",
3124
3757
  "dovecotApplied": "Escribí un fragmento de TLS de Dovecot e intenté recargarlo.",
3125
- "dovecotSkipped": "Dovecot omitido (no instalado o doveconf no disponible)."
3758
+ "dovecotSkipped": "Dovecot omitido (no instalado o doveconf no disponible).",
3759
+ "dovecotSslOmitted": "Falta el certificado de correo; escribió ssl=no para que Dovecot pueda iniciar sin los archivos LE."
3126
3760
  },
3127
3761
  "policyApplySystemHint": "Marque \"aplicar al sistema\" para escribir mapas Postfix/Rspamd y recargar;",
3128
3762
  "rateLimitAppliedNote": "Se aplica la tarifa saliente por hora y el indicador antispam (cuando la aplicación del sistema está activada).",
@@ -3161,12 +3795,12 @@
3161
3795
  "deliverabilityDesc": "Comprobaciones PTR/DNS/puerto 25",
3162
3796
  "dnsTodosDesc": "Copie y luego agregue en su host DNS",
3163
3797
  "deliverabilityHonesty": "No puedo configurar PTR o desbloquear el puerto 25 por ti",
3164
- "warmupSuggest": "暖身建議",
3165
- "writeSsoSkeleton": "Aplicación Roundcube SSO",
3166
- "rateLimitPerHour": "每小時訊息上限",
3167
- "rateLimitGlobalHint": "全域取各域名最小值",
3168
- "savePolicyWritten": "只寫入控制面",
3169
- "dnsblMultiIp": " IP RBL",
3798
+ "warmupSuggest": "Sugerencias de calentamiento",
3799
+ "writeSsoSkeleton": "Escribir el esqueleto SSO de Roundcube",
3800
+ "rateLimitPerHour": "Límite de mensajes por hora",
3801
+ "rateLimitGlobalHint": "El global usa el mínimo de cada dominio",
3802
+ "savePolicyWritten": "Solo se escribe en el plano de control",
3803
+ "dnsblMultiIp": "RBL de varias IP",
3170
3804
  "webmailTool": "software de correo web",
3171
3805
  "webmailToolRoundcube": "Cubo redondo (predeterminado)",
3172
3806
  "webmailToolSnappy": "SnappyMail (ligero)",
@@ -3238,7 +3872,44 @@
3238
3872
  "mailboxEmptyTitle": "Aún no hay buzones",
3239
3873
  "passwordMismatch": "Las contraseñas no coinciden",
3240
3874
  "passwordTooShort": "La contraseña debe tener al menos 8 caracteres.",
3241
- "mailboxUpdateNeedField": "Establecer una nueva contraseña o cambiar el estado"
3875
+ "mailboxUpdateNeedField": "Establecer una nueva contraseña o cambiar el estado",
3876
+ "catchallHint": "Las partes locales desconocidas van al buzón destino. Borrador hasta aplicar.",
3877
+ "queueSearchPh": "Buscar ID, remitente o destinatario…",
3878
+ "queueId": "ID de cola",
3879
+ "queueSender": "Remitente",
3880
+ "queueRecipients": "Destinatarios",
3881
+ "queueSize": "Tamaño",
3882
+ "queueReason": "Motivo",
3883
+ "queueActive": "Activo",
3884
+ "queueHeld": "Retenido",
3885
+ "queueDeferred": "Diferido",
3886
+ "deleteQueueTitle": "¿Eliminar este mensaje de la cola?",
3887
+ "deleteQueueDesc": "Quitar {{id}} de la cola MTA local. Requiere YSK_EXECUTE.",
3888
+ "openQueuePage": "Abrir cola de correo",
3889
+ "healthUnchecked": "Aún no comprobado",
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": "Dominios de correo registrados en este host",
3892
+ "healthChecklist": "Lista {{score}}/100",
3893
+ "healthChecklistHint": "Puntuación de lista — aún no se ha sondeado DNS / PTR / puerto 25",
3894
+ "healthLiveHint": "Puntuación de sonda en vivo",
3895
+ "installWebmailTitle": "Cree el proyecto de correo web compartido (primera instalación)",
3896
+ "reinstallWebmailTitle": "Reconstruir/actualizar el proyecto de correo web existente",
3897
+ "reinstallNeedInstall": "Instale el correo web primero",
3898
+ "dovecotFailedStatus": "El palomar es {{status}}. Abra la pestaña Software para ver el resumen de la unidad.",
3899
+ "mailCertMissing": "Sin certificado para {{hosts}}. Emítelo en la página SSL.",
3900
+ "mailCertPresent": "Ya se ha emitido un certificado de correo; este no es un problema de certificado faltante.",
3901
+ "webmailNeedCert": "Sin certificado para {{host}}: emítelo en SSL antes de forzar HTTPS.",
3902
+ "flushQueueEmpty": "La cola está vacía.",
3903
+ "flushQueueNeedExecute": "Vaciar la cola necesita YSK_EXECUTE (permiso de ejecución del host)",
3904
+ "healthUncheckedHint": "Aún no se ha sondeado DNS / PTR / puerto 25.",
3905
+ "deliverabilityScore": "Paquete de entregabilidad",
3906
+ "opendkimNoReload": "OpenDKIM no admite recarga — use reinicio tras cambiar claves o tablas.",
3907
+ "opendkimNoReloadTitle": "systemctl reload opendkim no está soportado en este conjunto",
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": "No autorizado",
@@ -3279,7 +3950,9 @@
3279
3950
  "sessionExpired": "La sesión expiró; iniciar sesión de nuevo",
3280
3951
  "sessionIdle": "Tiempo de inactividad; iniciar sesión de nuevo",
3281
3952
  "totpNotEnabled": "2FA no está habilitado",
3282
- "totpSecretNoDataDir": "El secreto TOTP está cifrado pero el directorio de datos no está configurado"
3953
+ "totpSecretNoDataDir": "El secreto TOTP está cifrado pero el directorio de datos no está configurado",
3954
+ "mustChangePassword": "Debe establecer una contraseña nueva antes de continuar",
3955
+ "policyNeedsOwn2fa": "Active 2FA para esta cuenta y confirme con un código TOTP antes de solicitar 2FA para otras"
3283
3956
  },
3284
3957
  "http": {
3285
3958
  "notFoundRoute": "No encontrado: {{method}} {{path}}",
@@ -3289,7 +3962,8 @@
3289
3962
  "unprocessable": "Solicitud rechazada por el servidor",
3290
3963
  "requestFailed": "Solicitud fallida ({{status}})",
3291
3964
  "jsonInvalid": "JSON no válido",
3292
- "internal": "error interno"
3965
+ "internal": "error interno",
3966
+ "payloadTooLarge": "El cuerpo de la solicitud es demasiado grande"
3293
3967
  },
3294
3968
  "YSK_HOST_BROWSE_SSRF": "Navegación del host bloqueada por la política de seguridad",
3295
3969
  "YSK_HOST_BROWSE_SESSION": "Sesión de exploración del host no encontrada o caducada",
@@ -3376,7 +4050,32 @@
3376
4050
  "reload": "fail2ban recargado",
3377
4051
  "restart": "fail2ban reiniciado",
3378
4052
  "stop": "fail2ban detenido"
3379
- }
4053
+ },
4054
+ "statWhitelist": "Lista blanca",
4055
+ "invalidIp": "Ingrese un IPv4, IPv6 o CIDR válido.",
4056
+ "whitelistPendingApply": "Guardado en la lista de paneles. Presione Aplicar política para escribir jail.local.",
4057
+ "ignoreipFile": "dataDir/fail2ban/ignoreip.txt",
4058
+ "jailsTabHint": "Estado de las cárceles activas. Active o desactive las cárceles en la pestaña Política.",
4059
+ "colJail": "Celda",
4060
+ "colEnabled": "En",
4061
+ "serviceStateLine": "Unidad {{unit}} · {{state}} · arranque {{boot}}",
4062
+ "jail": {
4063
+ "sshd": "fuerza bruta SSH",
4064
+ "nginxHttpAuth": "Autenticación HTTP Nginx",
4065
+ "nginxBotsearch": "Escáner Nginx / sondas bot",
4066
+ "nginxBadbots": "Nginx conoce robots malos",
4067
+ "nginxLimitReq": "Cárcel de límite de tasa de Nginx",
4068
+ "postfix": "Fuerza bruta del correo Postfix",
4069
+ "dovecot": "Inicio de sesión de correo de Dovecot",
4070
+ "recidive": "Reincidentes"
4071
+ },
4072
+ "cannotBanSelf": "Este es el host o su IP de inicio de sesión: agréguelo a ignoreip en lugar de prohibirlo.",
4073
+ "suggestIgnoreHint": "IP de administrador sugeridas (archivo de panel solo hasta que aplique la política):",
4074
+ "suggestIgnoreAdd": "Añadir {{ip}}",
4075
+ "whitelistEmptyWarn": "La lista blanca está vacía y las jails pueden bloquearle. Añada su IP de inicio antes de aplicar ignoreip.",
4076
+ "suggestIgnoreLogin": "Su IP de inicio {{ip}}",
4077
+ "applyIgnoreEmptyWarn": "Aplicar con lista blanca vacía borra ignoreip",
4078
+ "applyIgnoreNeedConfirm": "Reescribe ignoreip del jail y recarga fail2ban"
3380
4079
  },
3381
4080
  "featurePage": {
3382
4081
  "back": "Atrás"
@@ -3674,18 +4373,18 @@
3674
4373
  "shareTorrentFile": "Descargar .torrent",
3675
4374
  "shareSeedStatus": "Estado de siembra",
3676
4375
  "shareBtStats": "Estado de BitTorrent",
3677
- "btSeeds": "Seeds",
3678
- "btLeechers": "Leechers",
3679
- "btPeers": "Peers",
4376
+ "btSeeds": "Semillas",
4377
+ "btLeechers": "sanguijuelas",
4378
+ "btPeers": "Colegas",
3680
4379
  "btUploadSpeed": "Velocidad de carga",
3681
4380
  "btDownloadSpeed": "Velocidad de descarga",
3682
- "btUploaded": "Uploaded",
3683
- "btDownloaded": "Downloaded",
3684
- "btRatio": "Ratio",
3685
- "btUpdatedAt": "Updated",
4381
+ "btUploaded": "subido",
4382
+ "btDownloaded": "Descargado",
4383
+ "btRatio": "Relación",
4384
+ "btUpdatedAt": "Actualizado",
3686
4385
  "btServerStats": "Sembradora de servidor",
3687
4386
  "btClientStats": "tu cliente",
3688
- "btSeeding": "Seeding",
4387
+ "btSeeding": "siembra",
3689
4388
  "btPending": "Siembra pendiente",
3690
4389
  "btStopped": "Semilla parada",
3691
4390
  "btError": "error de semilla",
@@ -3699,7 +4398,50 @@
3699
4398
  "publicShareBtFailed": "WebTorrent falló: {{detail}}",
3700
4399
  "publicShareBtNeedMagnet": "No hay URI magnético para este recurso compartido",
3701
4400
  "publicShareBtUnsupported": "Este navegador no puede ejecutar WebTorrent; use magnet o .torrent en su lugar",
3702
- "btNone": "—"
4401
+ "btNone": "—",
4402
+ "uploadStatusSkipped": "Omitido",
4403
+ "uploadStatusCancelled": "Cancelado",
4404
+ "conflict": {
4405
+ "titleFile": "Ya existe un elemento llamado “{{name}}”",
4406
+ "titleFolder": "Ya existe una carpeta llamada “{{name}}”",
4407
+ "descFile": "Elige qué hacer. No se sobrescribe nada hasta que pulses Reemplazar.",
4408
+ "descFolder": "Elige qué hacer. Combinar conserva la carpeta existente y sigue con su contenido.",
4409
+ "incoming": "Entrante",
4410
+ "existing": "Ya está aquí",
4411
+ "kindFile": "Archivo",
4412
+ "kindFolder": "Carpeta",
4413
+ "skip": "Omitir",
4414
+ "skipHint": "No añadir este elemento",
4415
+ "keepBoth": "Conservar ambos",
4416
+ "keepBothHint": "Guardar el entrante como {{name}}",
4417
+ "replace": "Reemplazar",
4418
+ "replaceHint": "Sobrescribir el archivo existente. Se guarda una instantánea de versión si es posible.",
4419
+ "replaceFolderHint": "Sobrescribe los archivos con el mismo nombre en esta carpeta. Los demás se quedan.",
4420
+ "merge": "Combinar",
4421
+ "mergeHint": "Conservar la carpeta existente y añadir los archivos entrantes dentro",
4422
+ "applyAll": "Aplicar a todos los conflictos restantes",
4423
+ "applyAllHint": "Usar esta acción para el resto de este arrastre o transferencia",
4424
+ "cancelRest": "Cancelar el resto",
4425
+ "progress": "{{current}} de {{total}}",
4426
+ "typeMismatch": "Ya hay {{destKind}} llamado “{{name}}”. Lo que llega es {{incomingKind}}.",
4427
+ "skipped": "Omitido",
4428
+ "cancelled": "Cancelado"
4429
+ },
4430
+ "emptyTrashTitle": "¿Basura vacía?",
4431
+ "emptyTrashDesc": "Todos los archivos de la papelera se eliminarán permanentemente. Esto no se puede deshacer.",
4432
+ "purgeForeverDesc": "Este archivo se eliminará permanentemente. Esto no se puede deshacer.",
4433
+ "webdavReissueUnchanged": "La identificación del token no cambió después de la reemisión; es posible que la escritura no haya persistido. Intentar otra vez.",
4434
+ "webdavDisableFailed": "WebDAV todavía está habilitado después de deshabilitarlo; es posible que la escritura no haya persistido. Intentar otra vez.",
4435
+ "dirNamedLikeFile": "(carpeta residual; el nombre parece un archivo)",
4436
+ "webdavAfterEnable": "Disponible después de activar WebDAV y emitir un token.",
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 no está instalado",
3733
4475
  "toolHintPrefix": "Herramientas subyacentes:",
3734
4476
  "toolHintBody": "UFW = puertos/reglas permanentes · para respuesta a ataques y uso de prohibición automática",
3735
- "toolHintFail2ban": "fail2ban = prohibiciones temporales basadas en registros",
4477
+ "toolHintfail2ban": "fail2ban = prohibiciones temporales basadas en registros",
3736
4478
  "executeOffHint": "El sistema se apaga: el estado es legible;",
3737
4479
  "tabs": {
3738
4480
  "rules": "Normas",
@@ -3740,7 +4482,7 @@
3740
4482
  "deny": "Denegación permanente de IP",
3741
4483
  "profiles": "Perfiles",
3742
4484
  "about": "Acerca de",
3743
- "services": "Services"
4485
+ "services": "Servicios"
3744
4486
  },
3745
4487
  "currentRules": "Reglas actuales",
3746
4488
  "rulesSourceHint": "Reglas numeradas de UFW (estado de ufw numerado)",
@@ -3796,12 +4538,21 @@
3796
4538
  "servicesEmptyDesc": "Inicie un servicio administrado (web, FTPS, VPN, DB…) para completar esta lista.",
3797
4539
  "servicesManualHint": "Los chips de puerto manuales se encuentran en la pestaña Puertos; prefiera administrar el acceso aquí para que las reglas permanezcan etiquetadas (ysk-svc).",
3798
4540
  "portsManualHint": "Reglas manuales avanzadas. Prefiera la pestaña Servicios para software administrado.",
3799
- "colService": "Service",
3800
- "colMode": "Mode",
3801
- "colPorts": "Ports",
3802
- "colSync": "Status",
3803
- "synced": "Synced",
3804
- "syncNow": "Sync"
4541
+ "colService": "Servicio",
4542
+ "colMode": "Modo",
4543
+ "colPorts": "Puertos",
4544
+ "colSync": "Estado",
4545
+ "synced": "Sincronizado",
4546
+ "syncNow": "Sincronizar",
4547
+ "disableConfirmTitle": "¿Desactivar UFW?",
4548
+ "disableConfirmDesc": "El cortafuegos del host dejará de filtrar el tráfico. En una red pública, SSH y el panel pueden quedar expuestos.",
4549
+ "disableConfirmConsequence": "Las reglas de permitir/denegar se conservan, pero no se aplican hasta volver a activar UFW.",
4550
+ "toolHintFail2ban": "fail2ban = prohibiciones temporales basadas en registros",
4551
+ "servicesUfwOff": "La UFW está cancelada. Esta lista es la exposición deseada, no las reglas que el anfitrión impone.",
4552
+ "desiredOnlyUfwOff": "Deseado: {{mode}} · UFW desactivado (no aplicado)",
4553
+ "syncNotApplied": "UFW desactivado · no aplicado",
4554
+ "defaultNotApplied": "n/a (UFW desactivado)",
4555
+ "ufwOffHint": "La entrada predeterminada no se aplica mientras UFW está desactivado"
3805
4556
  },
3806
4557
  "ftp": {
3807
4558
  "title": "cuentas FTPS",
@@ -3936,7 +4687,38 @@
3936
4687
  "sftpRegister": "Clave de registro",
3937
4688
  "sftpAddedAt": "Añadido {{time}}",
3938
4689
  "sftpTechSummary": "Detalles técnicos (avanzado)",
3939
- "sftpTechNote": "Las claves se escriben en la ruta administrada."
4690
+ "sftpTechNote": "Las claves se escriben en la ruta administrada.",
4691
+ "filterProject": "Solo cuentas FTP de este proyecto",
4692
+ "clearProjectFilter": "Mostrar todas las cuentas",
4693
+ "vsftpdFailedHint": "vsftpd falló. Abra la pestaña Servicio (escuchar y escuchar_ipv6 no pueden ser ambos SÍ).",
4694
+ "tabService": "Servicio",
4695
+ "listenConflictLive": "Live vsftpd.conf tiene listening={{v4}} y listening_ipv6={{v6}}; ambos SÍ no podrán iniciarse.",
4696
+ "listenConflictNeedFix": "Primero arregle listening/listen_ipv6 (ambos no pueden ser SÍ), luego aplique.",
4697
+ "fixListenIpv4": "Utilice solo IPv4 (escuchar=SÍ, escuchar_ipv6=NO)",
4698
+ "liveFileValue": "Presentar ahora: {{value}}",
4699
+ "startBlockedFailed": "El servicio falla: aplique una configuración válida antes de comenzar",
4700
+ "ftpsNeedCert": "Elija primero un dominio de certificado",
4701
+ "detectPublicIp": "Detectar IP pública",
4702
+ "detectPublicIpTitle": "Complete el primer IPv4 sin bucle invertido de este host",
4703
+ "pasvIpRequired": "Defina una IP pública PASV antes de aplicar (NAT/nube). Detecte o escriba una dirección.",
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": "Navegador real: se transmite vídeo; el audio aún no está puenteado al panel (fase 2).",
4182
4964
  "isolationNote": "El navegador real crea un usuario efímero de Linux para Chrome; abandonar la página o el tiempo de inactividad destruye a ese usuario.",
4183
4965
  "resumeHint": "Reanudar sesión anterior ({{count}} pestañas)",
4184
- "resume": "Resume",
4185
- "resumeDismiss": "Dismiss",
4966
+ "resume": "Reanudar",
4967
+ "resumeDismiss": "Despedir",
4186
4968
  "resumeDone": "Sesión reanudada",
4187
4969
  "settingsSafety": "Seguridad de la navegación",
4188
4970
  "settingsSafetyHint": "Bloqueos estrictos de hosts más riesgosos; Relajado permite objetivos de intranet más amplios. No deshabilita las protecciones SSRF para metadatos en la nube.",
4189
- "safetyStrict": "Strict",
4190
- "safetyStandard": "Standard",
4191
- "safetyRelaxed": "Relaxed",
4971
+ "safetyStrict": "Estricto",
4972
+ "safetyStandard": "Estándar",
4973
+ "safetyRelaxed": "Relajado",
4192
4974
  "settingsBlockHosts": "Sufijos de host bloqueados",
4193
4975
  "settingsBlockHostsHint": "Un nombre de host o sufijo por línea (por ejemplo, malware.test). Se bloquean las coincidencias exactas y de sufijos.",
4194
4976
  "settingsAllowDangerousDownloads": "Permitir descargas de alto riesgo (exe/scripts)",
4195
4977
  "settingsAudioBridge": "Puentear el audio de la página al panel.",
4196
4978
  "settingsAudioBridgeHint": "Transmite audio de Chrome del host a este navegador. Algunos sitios necesitan un clic para desbloquear la reproducción.",
4197
- "downloads": "Downloads",
4979
+ "downloads": "Descargas",
4198
4980
  "downloadsEmpty": "No hay descargas en esta sesión",
4199
- "downloadReady": "Ready",
4200
- "downloadBlocked": "Blocked",
4201
- "downloadPending": "Pending",
4202
- "downloadFailed": "Failed",
4203
- "downloadSave": "Save",
4981
+ "downloadReady": "Listo",
4982
+ "downloadBlocked": "Obstruido",
4983
+ "downloadPending": "Pendiente",
4984
+ "downloadFailed": "Fallido",
4985
+ "downloadSave": "Ahorrar",
4204
4986
  "audioUnlock": "Habilitar sonido",
4205
4987
  "audioUnlockHint": "Haga clic para desbloquear la reproducción de audio en esta pestaña",
4206
4988
  "audioUnlocked": "Audio desbloqueado",
@@ -4214,8 +4996,30 @@
4214
4996
  "mediaVideoDesc": "Renderizado en el host y transmitido como fotogramas al panel.",
4215
4997
  "mediaAudioLabel": "Audio",
4216
4998
  "mediaAudioDesc": "Puente opcional desde el host Chrome; Es posible que sea necesario hacer clic en desbloquear.",
4217
- "mediaPolicyLabel": "Policy",
4218
- "mediaPolicyDesc": "Las descargas y la reproducción automática siguen las configuraciones de seguridad y descarga anteriores."
4999
+ "mediaPolicyLabel": "Política",
5000
+ "mediaPolicyDesc": "Las descargas y la reproducción automática siguen las configuraciones de seguridad y descarga anteriores.",
5001
+ "frameBlocked": "La página no se pudo mostrar en el marco del panel.",
5002
+ "historyEmpty": "No hay antecedentes en esta sesión.",
5003
+ "bookmarksEmpty": "Aún no hay marcadores.",
5004
+ "closeSessionHint": "Borra las cookies para esta sesión de navegación. Los marcadores permanecen.",
5005
+ "bookmarkAdd": "Agregar o eliminar marcador",
5006
+ "bookmarkList": "Lista de favoritos",
5007
+ "envUnset": "no establecido",
5008
+ "envPanelValue": "panel: {{value}}",
5009
+ "settingsNoSandboxWarn": "Desactiva la zona de pruebas de Chromium. Úselo únicamente dentro de un contenedor confiable. Se aplica en la próxima sesión del navegador real.",
5010
+ "settingsDangerDlWarn": "Permite descargas de ejecutables y scripts a través del navegador del host. Confirma que necesitas esto.",
5011
+ "settingsDangerConfirmTitle": "¿Habilitar una configuración de navegación de alto riesgo?",
5012
+ "needUrl": "Escriba una URL arriba para iniciar una sesión.",
5013
+ "envColVar": "Variable",
5014
+ "envColHost": "Proceso del host",
5015
+ "envColPanel": "Ajuste del panel",
5016
+ "envColEffective": "Efectivo",
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": "Buscar…",
@@ -4227,24 +5031,30 @@
4227
5031
  "activeFilters": "{{count}} filtros activos",
4228
5032
  "noResults": "No hay coincidencias",
4229
5033
  "noResultsHint": "Pruebe con otra palabra clave o borre los filtros.",
4230
- "searching": "Búsqueda…"
5034
+ "searching": "Búsqueda…",
5035
+ "emptyChip": "No items in this filter"
4231
5036
  },
4232
5037
  "logViewer": {
4233
5038
  "banIpTitle": "Prohibición {{ip}} en Protección"
4234
5039
  },
4235
5040
  "login": {
4236
- "title": "Iniciar sesión en el servidor YSK",
5041
+ "title": "Iniciar sesión en YSK Server",
4237
5042
  "subtitle": "Consola del servidor",
4238
- "username": "Nombre de usuario",
5043
+ "username": "Usuario",
4239
5044
  "password": "Contraseña",
4240
5045
  "submit": "Iniciar sesión",
4241
- "failed": "Error al iniciar sesión. Verifique el nombre de usuario o la contraseña.",
5046
+ "failed": "Error al iniciar sesión. Compruebe el usuario o la contraseña.",
4242
5047
  "footer": "Un producto de YSK Limited",
4243
- "totpRequired": "2FA está habilitado para esta cuenta. Ingrese el código de 6 dígitos.",
4244
- "totpLabel": "código de autenticación",
4245
- "totpHint": "Código de 6 dígitos de tu aplicación de autenticación",
5048
+ "totpRequired": "Esta cuenta tiene 2FA. Introduzca el código de 6 dígitos.",
5049
+ "totpLabel": "Código de autenticación",
5050
+ "totpHint": "Código de 6 dígitos de su aplicación de autenticación",
4246
5051
  "submitting": "Iniciando sesión…",
4247
- "sessionExpired": "La sesión expiró; iniciar sesión de nuevo"
5052
+ "sessionExpired": "La sesión caducó; inicie sesión de nuevo",
5053
+ "newPassword": "Nueva contraseña",
5054
+ "newPasswordAgain": "Confirmar nueva contraseña",
5055
+ "changePassword": "Cambiar contraseña",
5056
+ "passwordMismatch": "Las contraseñas no coinciden",
5057
+ "passwordChanged": "Contraseña actualizada"
4248
5058
  },
4249
5059
  "logs": {
4250
5060
  "catSystem": "Archivos del sistema",
@@ -4371,7 +5181,7 @@
4371
5181
  "logrotateLabel": "logrotate",
4372
5182
  "srcNginx": "nginx",
4373
5183
  "srcSsh": "ssh",
4374
- "srcFail2ban": "falla2ban",
5184
+ "srcfail2ban": "falla2ban",
4375
5185
  "srcAuthLog": "auth.log",
4376
5186
  "srcNginxError": "error de nginx",
4377
5187
  "srcLetsEncrypt": "vamos a cifrar",
@@ -4379,7 +5189,36 @@
4379
5189
  "groupVarLog": "/var/log",
4380
5190
  "prioErr": "errar+",
4381
5191
  "prioWarn": "advertir+",
4382
- "prioInfo": "información+"
5192
+ "prioInfo": "información+",
5193
+ "srcFail2ban": "falla2ban",
5194
+ "vacuumSize": "Límite a 500 MB",
5195
+ "logrotateNoStatus": "Aún no hay ningún archivo de estado de logrotate (normal si nunca se ha ejecutado).",
5196
+ "autoVacuumOff": "La limpieza automática está desactivada. El tiempo no se utiliza hasta que lo habilites.",
5197
+ "aboutAllowlist": "Explore solo puede leer unidades de diario incluidas en la lista permitida y rutas /var/log. No se ofrecen rutas de host arbitrarias.",
5198
+ "aboutCustomPath": "Agregue una ruta personalizada en Configuración (solo /var/log o /run/log). Luego ábrelo desde Explorar.",
5199
+ "noRowsInWindow": "No hay registros en esta ventana de tiempo",
5200
+ "showInactiveUnits": "Mostrar unidades inactivas",
5201
+ "sseNeedFollow": "Active Seguir primero: SSE es solo para cola en vivo",
5202
+ "vacuumNeedRetention": "Introduzca primero una ventana de retención (p. ej. 14d)",
5203
+ "vacuumNeedConfirm": "Requiere confirmación — borra journal antiguos",
5204
+ "vacuumSizeNeedConfirm": "Requiere confirmación — limita el disco de journal",
5205
+ "vacuumSizeAlreadyBelow": "El uso actual ya está bajo el tope; normalmente no borra nada.",
5206
+ "vacuumSizeNoopDesc": "El journal ya está bajo 500 MB. Aun así ejecuta vacuum --size=500M y normalmente no borra nada.",
5207
+ "journalDiskHint": "Uso actual de systemd-journald (journal activo). No incluye rotados en /var/log.",
5208
+ "varLogDiskHint": "Estimación de /var/log, incluidos rotados.",
5209
+ "queryFirst": "Consulte primero",
5210
+ "projectSourcesTitle": "{{n}} origen(es) (archivos + journal)",
5211
+ "logrotatePath": "Camino",
5212
+ "logrotateLast": "Última rotación",
5213
+ "logrotateExpand": "Mostrar {{n}} más",
5214
+ "logrotateCollapse": "Mostrar menos",
5215
+ "logrotateVersion": "Versión de estado {{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": "Uso del du local (no estimado). La cuota es un límite flexible del plano de control; La cuota establecida rígida necesita aplicarse al host.",
4512
5351
  "sseNeedLogin": "No iniciado sesión; no puedo abrir SSE",
4513
5352
  "sseSessionExpired": "No iniciado sesión o la sesión expiró; no puedo abrir SSE",
4514
- "sseHttpError": "transmitir HTTP {{status}}"
5353
+ "sseHttpError": "transmitir HTTP {{status}}",
5354
+ "colFilesystem": "Sistema de archivos",
5355
+ "colMount": "Montar",
5356
+ "colSize": "Tamaño",
5357
+ "colUsed": "Usado",
5358
+ "colAvail": "Disponible",
5359
+ "colUsePct": "Usado %",
5360
+ "colHome": "Hogar",
5361
+ "usageNoteLink": "Cuota flexible del plano de control. Aplique límites estrictos en la pestaña Aislamiento del proyecto.",
5362
+ "alertsBuiltinOnly": "Umbrales de CPU/memoria/disco integrados únicamente. Sin correo electrónico, webhook ni canal Slack.",
5363
+ "lastEvaluated": "Última comprobación",
5364
+ "shareNoQuotaHint": "Sin cuota, la proporción no es un porcentaje. Fíjela en la pestaña Aislamiento del proyecto.",
5365
+ "setQuotaLink": "Fijar cuota",
5366
+ "unusualHome": "Ruta inusual",
5367
+ "unusualHomeHint": "No es una casa de proyecto /home/…. El aislamiento canónico es /home/ysk-server-{id}.",
5368
+ "protectedPid": "PID 1 / init / systemd no se puede señalar desde el panel",
5369
+ "sigTermTitle": "Enviar SIGTERM (pedir al proceso que salga)",
5370
+ "sigKillTitle": "Enviar SIGKILL (muerte forzada, no se puede capturar)",
5371
+ "batchTerm": "TERM",
5372
+ "batchKill": "KILL",
5373
+ "rawTopLabel": "Tapa cruda (sin traducir)",
5374
+ "followSseLabel": "Seguir (transmisión en vivo)",
5375
+ "alertsReadOnly": "Umbrales de CPU/memoria/disco integrados únicamente. Sin correo electrónico, webhook ni canal Slack.",
5376
+ "alertsGoNotifications": "Abrir centro de notificaciones",
5377
+ "lastCheck": "último control",
5378
+ "rawTopHint": "Salida superior (1) sin traducir",
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": "Inventario",
@@ -4593,7 +5467,33 @@
4593
5467
  "dryRunOnlyDesc": "· Inventario + verificación previa solamente; sin rsync o escrituras de destino",
4594
5468
  "executeNote": "El host necesita YSK_EXECUTE=1 y API raíz. Después de migrar, actualice DNS A/AAAA y verifique el firewall en la nube + PTR de correo.",
4595
5469
  "dnsCutover": "Transferencia de DNS (manual)",
4596
- "dnsCutoverDesc": "Punto A/AAAA para estos nombres a la nueva IP pública;"
5470
+ "dnsCutoverDesc": "Punto A/AAAA para estos nombres a la nueva IP pública;",
5471
+ "orphanHomesHint": "Viviendas sobrantes del proyecto (no en la tienda). Elimínelos solo después de confirmar que no se usaron.",
5472
+ "orphanRemove": "Quitar los restos de casa",
5473
+ "orphanRemoveTitle": "¿Eliminar el proyecto sobrante en casa?",
5474
+ "orphanRemoveDesc": "Elimina permanentemente {{path}} del disco. Este no es un proyecto de tienda. Necesita YSK_EXECUTE=1.",
5475
+ "orphanRemovePhrase": "Escriba DELETE para confirmar.",
5476
+ "orphanRemoveNeedConfirm": "Requiere confirmación",
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": "código personalizado",
@@ -4648,7 +5548,7 @@
4648
5548
  "rust": "Rust",
4649
5549
  "protection": "Centro de defensa",
4650
5550
  "firewall": "Cortafuegos",
4651
- "fail2ban": "falla2ban",
5551
+ "fail2ban": "fail2ban",
4652
5552
  "users": "Usuarios y paquetes",
4653
5553
  "services": "Servicios",
4654
5554
  "metrics": "Métrica",
@@ -4670,7 +5570,9 @@
4670
5570
  "runtimes": "Tiempos de ejecución",
4671
5571
  "security": "Seguridad",
4672
5572
  "system": "Sistema",
4673
- "ai": "AI"
5573
+ "ai": "AI",
5574
+ "validators": "Validadores",
5575
+ "containers": "Contenedores"
4674
5576
  },
4675
5577
  "java": "Java",
4676
5578
  "kotlin": "Kotlin",
@@ -4689,8 +5591,13 @@
4689
5591
  "bookmarkPinned": "Fijado",
4690
5592
  "bookmarkAdded": "Fijado en la barra lateral",
4691
5593
  "bookmarkRemoved": "Eliminado de la barra lateral",
4692
- "btTracker": "Rastreador BT",
4693
- "support": "Support"
5594
+ "btTracker": "BT Tracker",
5595
+ "support": "Apoyo",
5596
+ "noAccessTitle": "Sin acceso",
5597
+ "noAccessDesc": "Su rol no incluye esta página. Pida acceso a un administrador si la necesita.",
5598
+ "backToDashboard": "Volver al panel",
5599
+ "validators": "Validadores (Beta)",
5600
+ "docker": "Estibador"
4694
5601
  },
4695
5602
  "network": {
4696
5603
  "title": "Interfaces de red",
@@ -4829,10 +5736,35 @@
4829
5736
  "azure_frontdoor": "Puerta de entrada azul",
4830
5737
  "gcore": "CDN de Gcore",
4831
5738
  "custom": "servidores proxy personalizados"
4832
- }
5739
+ },
5740
+ "needProvider": "Elija un proveedor de CDN antes de obtener su lista de IP.",
5741
+ "spoofWarn": "Confiar en el CIDR incorrecto permite a los clientes falsificar los encabezados X-Forwarded-For/CDN como su IP."
4833
5742
  },
4834
5743
  "linkUp": "Arriba",
4835
- "linkDown": "Abajo"
5744
+ "linkDown": "Abajo",
5745
+ "linkDownTitle": "Desconecta {{name}}",
5746
+ "linkDownNeedConfirm": "Escriba el nombre de la interfaz para confirmar",
5747
+ "persistNmHint": "Persistente significa que los cambios pueden sobrevivir al reinicio a través de NetworkManager.",
5748
+ "hideRaw": "Ocultar salida sin procesar",
5749
+ "rawLoadedAt": "Cargado {{time}}",
5750
+ "deleteDefaultPanelWarn": "Eliminar la ruta predeterminada puede cancelar esta sesión del panel. Escriba DEFAULT para confirmar.",
5751
+ "typeDefaultToConfirm": "Escriba DEFAULT para confirmar",
5752
+ "deleteDefaultNeedConfirm": "Requiere confirmación — escriba DEFAULT (puede cortar este panel)",
5753
+ "deleteRouteNeedConfirm": "Requiere confirmación",
5754
+ "nmUnavailable": "NetworkManager no se está ejecutando; solo se puede agregar una ruta activa",
5755
+ "defaultRouteDownNeedName": "Esta es la ruta de salida predeterminada. Escriba el nombre de la interfaz para confirmar; el panel puede desconectarse.",
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}} sitio(s)",
@@ -4916,7 +5848,16 @@
4916
5848
  "setHsts": "HSTS",
4917
5849
  "setCfRealIp": "IP real de Cloudflare",
4918
5850
  "setIndexes": "listado de directorio",
4919
- "bodyInherit": "Global"
5851
+ "bodyInherit": "Global",
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": "Página no encontrada",
5858
+ "body": "No hay página de panel en {{path}}.",
5859
+ "hint": "Las URL desconocidas ya no te envían al panel.",
5860
+ "home": "Panel"
4920
5861
  },
4921
5862
  "notes": {
4922
5863
  "notFound": "Extraviado",
@@ -4950,19 +5891,53 @@
4950
5891
  },
4951
5892
  "ssh": {
4952
5893
  "identityNotFound": "Identidad no encontrada",
4953
- "registrationNotFound": "Registro no encontrado"
5894
+ "registrationNotFound": "Registro no encontrado",
5895
+ "keyOkNologin": "Key accepted. Account has no login shell (nologin) — use SFTP. Treated as PASS.",
5896
+ "keyOkSftp": "SFTP pwd tuvo éxito después de que se rechazó el shell SSH."
4954
5897
  },
4955
5898
  "cdn": {
4956
5899
  "siteNotFound": "Sitio CDN no encontrado",
4957
- "nodeMissing": "El nodo no existe"
5900
+ "nodeMissing": "El nodo no existe",
5901
+ "probe": {
5902
+ "timeout": "Tiempo de espera de conexión después de {{ms}}ms ({{detail}}). El par puede tener un firewall.",
5903
+ "dns": "La búsqueda de DNS falló ({{detail}}).",
5904
+ "refused": "Conexión rechazada después de {{ms}}ms ({{detail}}). Puerto cerrado o bloqueo unidireccional.",
5905
+ "tls": "La verificación TLS falló ({{detail}}).",
5906
+ "unreach": "Host inalcanzable después de {{ms}}ms ({{detail}}).",
5907
+ "http": "La sonda HTTP falló después de {{ms}}ms ({{detail}})."
5908
+ },
5909
+ "loopbackOriginRemote": "El origen es 127.0.0.1: es este host, no un borde remoto. Establezca una IP de origen accesible o bind_ip.",
5910
+ "needSshOrFleet": "El borde remoto necesita una identidad SSH saliente (o nombre de usuario) o una sesión de flota /agents. La URL de salud por sí sola no se aplica al transporte.",
5911
+ "originRemoteRewrite": "Los bordes remotos utilizarán el origen accesible {{url}} en lugar del bucle invertido.",
5912
+ "originRemoteUnknown": "El origen es loopback y no se conoce ninguna IP pública/LAN o bind_ip; la aplicación rechazará los bordes remotos hasta que se establezca uno."
4958
5913
  },
4959
5914
  "backup": {
4960
5915
  "fileNotFound": "Archivo de copia de seguridad no encontrado",
4961
5916
  "resticNoPassword": "restic está habilitado pero la contraseña no está establecida",
4962
- "resticNotInPath": "restic no en RUTA"
5917
+ "resticNotInPath": "restic no en RUTA",
5918
+ "dbEnvUnreadable": "No se pudo leer .db.env; volcado de SQL omitido.",
5919
+ "dbEnvNoName": ".db.env no tiene nombre de base de datos; volcado de SQL omitido.",
5920
+ "targetOutside": "El destino de la restauración debe estar dentro del inicio del proyecto o en la raíz de los archivos públicos.",
5921
+ "testUnsaved": "Prueba de valores de formulario no guardados (no escritos en la configuración).",
5922
+ "testIdentity": "ssh (identity) to {{spec}} ok",
5923
+ "sshAuthFailed": "Clave SSH o contraseña rechazada (clave pública). Elija una identidad saliente o instale sshpass.",
5924
+ "remotePathIsFile": "La ruta remota {{path}} es un archivo. Utilice un directorio.",
5925
+ "remoteMkdirFailed": "No se pudo crear el directorio remoto: {{detail}}",
5926
+ "sidecarPushed": "También se impulsó el sidecar SQL {{name}}",
5927
+ "controlPlaneDryRun": "Solo vista previa, nada escrito. En el panel, use Restaurar y confirme la frase a escribir.",
5928
+ "controlPlaneNeedConfirm": "La restauración total del plano de control necesita la frase de confirmación RESTAURAR-PLANO-CONTROL.",
5929
+ "controlPlaneRestartAfter": "Reinicie la API después de una restauración exitosa.",
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 no está instalado"
5936
+ "cliMissing": "redis-cli no está instalado",
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 recargado",
@@ -4985,7 +5960,8 @@
4985
5960
  "vsftpdStarted": "vsftpd iniciado",
4986
5961
  "openPortsStep": "Puertos de firewall (manual)",
4987
5962
  "openPortsReminder": "Abra los puertos TCP en el firewall del host y el grupo de seguridad de la nube: {{ports}}. La aplicación FTPS no abre puertos para usted.",
4988
- "openPortsPasvHint": "Si el inicio de sesión funciona pero el directorio LIST se agota, el rango de datos PASV está bloqueado: abra la página completa"
5963
+ "openPortsPasvHint": "Si el inicio de sesión funciona pero el directorio LIST se agota, el rango de datos PASV está bloqueado: abra la página completa",
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": "Falta el binario del nodo para la implementación aislada: {{path}}: instale la cadena de herramientas del Nodo {{version}} y luego vuelva a implementarlo. Negarse a escribir una unidad que sería 203/EXEC.",
@@ -5003,7 +5979,8 @@
5003
5979
  "pathOutsideSandbox": "Ruta fuera del arenero: {{target}}",
5004
5980
  "notFoundRel": "No encontrado: {{relPath}}",
5005
5981
  "fileNotFoundRel": "Archivo no encontrado: {{relPath}}",
5006
- "notFoundFrom": "No encontrado: {{fromPath}}"
5982
+ "notFoundFrom": "No encontrado: {{fromPath}}",
5983
+ "alreadyExists": "Ya existe: {{name}}"
5007
5984
  },
5008
5985
  "dns": {
5009
5986
  "needZoneServerIp": "Ingrese la zona y la IP del servidor",
@@ -5039,11 +6016,24 @@
5039
6016
  "applyDigOk": "PowerDNS BIND: listar zonas + excavar OK",
5040
6017
  "applyDigFail": "Zona registrada en conf pero la excavación aún está vacía/RECHAZADA: no se aplicó la marca",
5041
6018
  "applySyncIncomplete": "Sincronización de enlace de PowerDNS incompleta: archivo de zona solo en el disco (no aplicado). Repare los registros EXECUTE/root o pdns.",
5042
- "writeOnlyHint": "Archivo de zona escrito únicamente: PowerDNS no responderá hasta que cargue/aplique los registros nombrados"
6019
+ "writeOnlyHint": "Archivo de zona escrito únicamente: PowerDNS no responderá hasta que cargue/aplique los registros nombrados",
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": "La ejecución del host está desactivada; No se puede crear una base de datos desde el panel.",
5046
- "dryRunMysql": "ejecución en seco: base de datos no creada. Utilice --execute con YSK_EXECUTE=1 para aprovisionar"
6033
+ "dryRunMysql": "ejecución en seco: base de datos no creada. Utilice --execute con YSK_EXECUTE=1 para aprovisionar",
6034
+ "remoteNoCreds": "No se almacena ningún nombre de usuario ni contraseña: solo TCP (el registro no es un inicio de sesión).",
6035
+ "remoteReachable": "TCP {{host}}:{{port}} abierto ({{ms}}ms).",
6036
+ "remoteUnreachable": "TCP {{host}}:{{port}} cerrado o filtrado ({{ms}}ms)."
5047
6037
  },
5048
6038
  "net": {
5049
6039
  "invalidIface": "Nombre de interfaz no válido",
@@ -5124,7 +6114,17 @@
5124
6114
  "dns": "DNS",
5125
6115
  "email": "Correo electrónico",
5126
6116
  "isolation": "Aislamiento del proyecto",
5127
- "ops": "Operaciones"
6117
+ "ops": "Operaciones",
6118
+ "runtimesNode": "Nodo.js",
6119
+ "runtimesPhp": "PHP",
6120
+ "runtimesPython": "Pitón",
6121
+ "runtimesGo": "Go",
6122
+ "pm2": "PM2",
6123
+ "runtimesNodeFix": "Instalar Node desde /runtimes/node",
6124
+ "runtimesPhpFix": "Instalar PHP desde /runtimes/php",
6125
+ "runtimesPythonFix": "Instalar Python desde /runtimes/python",
6126
+ "runtimesGoFix": "Instalar Go desde /runtimes/go",
6127
+ "pm2Fix": "Instale PM2 desde la página de tiempo de ejecución de Node"
5128
6128
  },
5129
6129
  "needAdmin": "Se requiere permiso de administrador",
5130
6130
  "notInstalled": "No instalado",
@@ -5206,8 +6206,8 @@
5206
6206
  "n0068": "4. PHP + Nginx/SSL",
5207
6207
  "n0069": "Un IPv4",
5208
6208
  "n0070": "Un IPv4",
5209
- "n0071": "AAAA IPv6",
5210
- "n0072": "AAAA IPv6",
6209
+ "n0071": "AAAAIPv6",
6210
+ "n0072": "AAAAIPv6",
5211
6211
  "n0073": "AOF persiste",
5212
6212
  "n0074": "El archivo de administrador no existe; por favor descargar: verdadero",
5213
6213
  "n0075": "El agente no puede escribir",
@@ -5397,7 +6397,7 @@
5397
6397
  "n0259": "dominio",
5398
6398
  "n0260": "dominio no encontrado:",
5399
6399
  "n0261": "La recarga del palomar falló o el servicio no (tamiz escrito; recarga exitosa)",
5400
- "n0262": "despacho de flota en seco (no )",
6400
+ "n0262": "simulación de envío de flota (no en cola)",
5401
6401
  "n0263": "empuje de pares de ejecución en seco (no scp)",
5402
6402
  "n0264": "instalación remota en seco (no ssh)",
5403
6403
  "n0265": "transferencia de ejecución en seco realizada (arranque completo)",
@@ -5406,10 +6406,10 @@
5406
6406
  "n0268": "ejecución en seco: no escribir /etc.",
5407
6407
  "n0269": "ejecución en seco: agregar --ejecutar primero aplicar ufw",
5408
6408
  "n0270": "ejecución en seco: inventario + verificación previa aprobada, no paquete/transferencia",
5409
- "n0271": "funcionamiento en seco: sonda/. agregar --execute YSK_EXECUTE=1 primero realmente aprovisionar",
5410
- "n0272": "ejecución en seco: se escribió el archivo administrado (dataDir). agregar ejecutar + YSK_EXECUTE=1 + raíz del primer sistema desplegable",
5411
- "n0273": "ensayo: no. agregar --execute YSK_EXECUTE=1 primero realmente prohibir",
5412
- "n0274": "ensayo: no. agregar --execute YSK_EXECUTE=1 primero realmente desbanear",
6409
+ "n0271": "Ejecución en seco: solo sonda/plan. Pase --execute con YSK_EXECUTE=1 para aprovisionar realmente.",
6410
+ "n0272": "Ejecución en seco: escribió el archivo administrado (dataDir). Pase --execute con YSK_EXECUTE=1 como root para instalar el sistema directo.",
6411
+ "n0273": "Ejecución en seco: no prohibido. Pase --execute con YSK_EXECUTE=1 para prohibir realmente.",
6412
+ "n0274": "Ejecución en seco: no desprohibido. Pase --execute con YSK_EXECUTE=1 para desbanear realmente.",
5413
6413
  "n0275": "dryRun=true - cambiar API",
5414
6414
  "n0276": "dryRun: no escribir",
5415
6415
  "n0277": "dump Escribió dataDir, no transfirió",
@@ -5417,7 +6417,7 @@
5417
6417
  "n0279": "ejecutar (YSK_EXECUTE=1 + raíz)",
5418
6418
  "n0280": "ejecutar requiere ponerse en cola",
5419
6419
  "n0281": "administrador de exportación",
5420
- "n0282": "Fail2ban aplicarFailed",
6420
+ "n0282": "fail2ban aplicarFailed",
5421
6421
  "n0283": "servicio fail2ban",
5422
6422
  "n0284": "fail2ban no activo",
5423
6423
  "n0285": "fail2ban no",
@@ -5758,7 +6758,7 @@
5758
6758
  "n0620": "proceso de inicio, no proceso",
5759
6759
  "n0621": "OPcache",
5760
6760
  "n0622": "SSL",
5761
- "n0623": "",
6761
+ "n0623": "Activo",
5762
6762
  "n0624": "archivo",
5763
6763
  "n0625": "archivo",
5764
6764
  "n0626": "nodo wsrep, HA ≥2 nodos",
@@ -5860,9 +6860,9 @@
5860
6860
  "n0722": "y galleta",
5861
6861
  "n0723": "habilitar --ahora fail2ban",
5862
6862
  "n0724": "galera_new_cluster (arranque)",
5863
- "n0725": "Fail2ban recargado",
6863
+ "n0725": "fail2ban recargado",
5864
6864
  "n0726": "recargar nginx",
5865
- "n0727": "Fail2ban reiniciado",
6865
+ "n0727": "fail2ban reiniciado",
5866
6866
  "n0728": "zona scp (escrito en el par ≠ llamado recargado)",
5867
6867
  "n0729": "scp a peer /tmp (escrito en peer ≠ servicio reiniciado)",
5868
6868
  "n0730": "systemctl recarga nginx",
@@ -5889,7 +6889,7 @@
5889
6889
  "n0751": "Directorio de caché de nginx y recarga (hostnot proxy_cache puede)",
5890
6890
  "n0752": "servidorhechocertificadopor favor",
5891
6891
  "n0753": "UFW aplicado solo para CF (CF de origen + puerto mantenido)",
5892
- "n0754": "Fail2ban aplicado",
6892
+ "n0754": "fail2ban aplicado",
5893
6893
  "n0755": "Configuración aplicada al sistema Postfix",
5894
6894
  "n0756": "Aplicado al sistema Nginx",
5895
6895
  "n0757": "Regla de firewall aplicada",
@@ -5974,7 +6974,7 @@
5974
6974
  "n0836": "certificado por favor fallido",
5975
6975
  "n0837": "≥ archivo",
5976
6976
  "n0838": "configuración mantenida copia de seguridad",
5977
- "n0839": "Éxito, este objetivo puede usar BatchMode, ",
6977
+ "n0839": "El éxito significa que este destino acepta BatchMode SSH (no interactivo). No es una concesión de acceso global.",
5978
6978
  "n0840": "o 32767",
5979
6979
  "n0841": "softwareInstalado",
5980
6980
  "n0842": "permiso/",
@@ -6134,7 +7134,7 @@
6134
7134
  "n0996": "nginx local -t OK (configuración administrada, ≠ borde aplicado)",
6135
7135
  "n0997": "wsrep local puede, tamaño no nodo",
6136
7136
  "n0998": "ysk.json local no puede leer/huella digital",
6137
- "n0999": "localmente bien; sonda de pares completa y saludable (no )",
7137
+ "n0999": "El nodo local está bien; un estado completo y saludable necesita una prueba de pares (no realizada).",
6138
7138
  "n1000": "nginx local - conf Escribió, no recargó",
6139
7139
  "n1001": "Conexión NM local disponible; voluntadÉxito. puede \"\" o NetworkManager.",
6140
7140
  "n1002": "localAvailable ps - no puede ()",
@@ -6730,7 +7730,7 @@
6730
7730
  "n1590": "",
6731
7731
  "n1591": "No root: las rutas del sistema useradd/systemd/nginx están restringidas",
6732
7732
  "n1592": "no seccomp requiere runAsUser",
6733
- "n1593": "panelpor favor /",
7733
+ "n1593": "Solicitudes públicas / min",
6734
7734
  "n1594": "conexión de paneles; Disponible\"\" ( )",
6735
7735
  "n1595": "El panel no se ejecuta como root",
6736
7736
  "n1596": "Disponible aplicar:falso",
@@ -7001,7 +8001,7 @@
7001
8001
  "t0251": "{{v0}} Instalación incompleta",
7002
8002
  "t0252": "{{v0}} inicio de servicio",
7003
8003
  "t0253": "Inicio fallido: {{v0}}",
7004
- "t0254": "Admite la versión {{v0}} de Node.js; Versión disponible: {{v1}}",
8004
+ "t0254": "Admite Node.js {{v0}}; versiones disponibles: {{v1}}",
7005
8005
  "t0255": "Admite la versión PHP {{v0}}; Disponible: {{v1}}",
7006
8006
  "t0256": "Admite la versión de Python {{v0}}; Disponible: {{v1}}",
7007
8007
  "t0257": "Admite la versión Go {{v0}}; Disponible: {{v1}}",
@@ -7123,12 +8123,12 @@
7123
8123
  "t0373": "Aislamiento del proyecto \"{{v0}}\"",
7124
8124
  "t0374": "a la ruta local {{v0}}",
7125
8125
  "t0375": "identidad {{v0}}: {{v1}}",
7126
- "t0376": "scp (identidad) a {{v0}}",
7127
- "t0377": "scp(identidad) falló: {{v0}}",
7128
- "t0378": "scp a {{v0}}",
7129
- "t0379": "scp falló: {{v0}}",
7130
- "t0380": "scp a {{v0}}",
7131
- "t0381": "scp falló: {{v0}} (ID de identidad remota de respaldo)",
8126
+ "t0376": "sftp (identidad) a {{v0}} correcto",
8127
+ "t0377": "sftp (identidad) falló: {{v0}}",
8128
+ "t0378": "sftp a {{v0}} correcto",
8129
+ "t0379": "sftp falló: {{v0}}",
8130
+ "t0380": "sftp a {{v0}} correcto",
8131
+ "t0381": "sftp falló: {{v0}} (puede fijar backup remote identityId)",
7132
8132
  "t0382": "T3 {{v0}}",
7133
8133
  "t0383": "S3 falló: {{v0}}",
7134
8134
  "t0384": ": {{v0}}/{{v1}} administrador 2FA habilitado",
@@ -7136,7 +8136,7 @@
7136
8136
  "t0386": "{{v0}} RUTA",
7137
8137
  "t0387": "{{v0}} no encontrado",
7138
8138
  "t0388": "Instale {{v0}} o agréguelo a PATH",
7139
- "t0389": "Versión disponible: {{v0}}",
8139
+ "t0389": "Versiones disponibles: {{v0}}",
7140
8140
  "t0390": "{{v0}}% ({{v1}}MB)",
7141
8141
  "t0391": "{{v0}}% ({{v1}})",
7142
8142
  "t0392": "inicio de servicio {{v0}}",
@@ -7379,15 +8379,15 @@
7379
8379
  "t0629": "proyecto {{v0}} casa: {{v1}}",
7380
8380
  "t0630": "proyecto {{v0}} bind_ip={{v1}} - puede (IP)",
7381
8381
  "t0631": "proyecto {{v0}} casa, no ruta: {{v1}}",
7382
- "t0632": "casa (tienda): {{v0}}",
8382
+ "t0632": "Casa huérfana en disco (no hay proyecto de tienda coincidente): {{v0}}",
7383
8383
  "t0633": "Dirección de correo: {{v0}}",
7384
8384
  "t0634": "{{v0}} — no se puede apuntar",
7385
8385
  "t0635": "no puedo sondear {{v0}}",
7386
8386
  "t0636": "{{v0}} · {{v1}}",
7387
8387
  "t0637": "proyecto {{v0}} · {{v1}} · DB {{v2}} · Redis {{v3}}",
7388
- "t0638": "instalar software {{v0}} · casas {{v1}}",
8388
+ "t0638": "Instalar software {{v0}} · homes {{v1}}",
7389
8389
  "t0639": "host de transición {{v0}}",
7390
- "t0640": "Advertencia {{v0}} (por favor)",
8390
+ "t0640": "{{v0}} advertencia(s): revisar antes de la transición.",
7391
8391
  "t0641": "tecla {{v0}}",
7392
8392
  "t0642": "no puedo clave: {{v0}}",
7393
8393
  "t0643": "targetnot escribir claves_autorizadas: {{v0}}",
@@ -7451,7 +8451,7 @@
7451
8451
  "t0701": "CDN {{v0}}",
7452
8452
  "t0702": "El nodo de escudo de origen no existe: {{v0}}",
7453
8453
  "t0703": "bordes: {{v0}}",
7454
- "t0704": "URL de origen (): {{v0}}",
8454
+ "t0704": "URL de origen (desde el enlace del proyecto): {{v0}}",
7455
8455
  "t0705": "actualizar CDN {{v0}}",
7456
8456
  "t0706": "crear CDN {{v0}}",
7457
8457
  "t0707": "escudo de origen: escudo de borde {{v0}} → {{v1}}",
@@ -7547,7 +8547,16 @@
7547
8547
  "t0797": "zona horaria fallida: {{v0}}",
7548
8548
  "tScoreFrom": "puntuación={{score}} de={{from}}",
7549
8549
  "appliedTag": "(aplicado)",
7550
- "writtenTag": "(solo escrito)"
8550
+ "writtenTag": "(solo escrito)",
8551
+ "selfDestMissing": "No se encuentra el directorio de instalación en ejecución (systemd ExecStart o cli.js)",
8552
+ "selfDestUnwritable": "No se puede escribir en el directorio de instalación en ejecución {{v0}}",
8553
+ "selfApplied": "Se aplicó {{v0}} en {{v1}}",
8554
+ "selfVerifyFail": "El archivo de versión no contiene {{v0}} tras aplicar",
8555
+ "selfDownloadFail": "No se puede descargar o descomprimir el paquete oficial {{v0}}: {{v1}}",
8556
+ "selfOverlayFail": "No se pudo aplicar el paquete oficial al directorio en ejecución: {{v0}}",
8557
+ "selfUpgradeHint": "Falló la aplicación del panel. Como root: curl -fsSL https://raw.githubusercontent.com/yanshekki/ysk-server/main/install.sh | bash -s -- --upgrade",
8558
+ "n1611": "UFW está inactivo: {{n}} las reglas de denegación permanente están almacenadas en user.rules pero el kernel no las aplica.",
8559
+ "n1612": "UFW está inactivo. Una regla de denegación se escribiría únicamente en user.rules: el kernel no descartaría paquetes. Habilite UFW primero. No habilitar automáticamente."
7551
8560
  },
7552
8561
  "tpl": {
7553
8562
  "deleted": "Eliminado {{name}}",
@@ -7610,7 +8619,7 @@
7610
8619
  "noParen": "(ninguno)",
7611
8620
  "keepOldDb": "(mantuvo la base de datos antigua)",
7612
8621
  "ufwNotDetected": "UFW no detectado en este host",
7613
- "fail2banStartHint": "Inícielo en la página Fail2ban",
8622
+ "fail2banStartHint": "Inícielo en la página fail2ban",
7614
8623
  "hasExecuteNotRoot": "EXECUTE está activado pero el proceso no es root",
7615
8624
  "notRootTarget": "No root (se bloqueará el usuario objetivo add/apt)",
7616
8625
  "reapplyDone": "volver a aplicar los pasos clave completados",
@@ -7777,7 +8786,10 @@
7777
8786
  "accessReconnectHint": "Los clientes ya conectados deben volver a conectarse para elegir nuevas rutas",
7778
8787
  "ovpnNatDurable": "OpenVPN NAT/forward instalado para reiniciar (systemd ExecStartPost).",
7779
8788
  "clientFullTunnelProtect": "Cliente de túnel completo detectado (AllowedIPs 0.0.0.0/0). Se aplicó protección de host para que las respuestas del panel/SSH permanezcan en la NIC de LAN.",
7780
- "clientFullTunnelHint": "Consejo: solo para acceso dividido, configure las IP permitidas en CIDR de VPN/LAN (no 0.0.0.0/0) en la configuración y luego vuelva a conectarse."
8789
+ "clientFullTunnelHint": "Consejo: solo para acceso dividido, configure las IP permitidas en CIDR de VPN/LAN (no 0.0.0.0/0) en la configuración y luego vuelva a conectarse.",
8790
+ "serverStopped": "{{engine}} servidor detenido.",
8791
+ "serverStopFailed": "No se pudo detener el servidor {{engine}}: {{detail}}",
8792
+ "peersSynced": "Peer list reloaded on the running WireGuard interface."
7781
8793
  },
7782
8794
  "vnc": {
7783
8795
  "needInstall": "Instalar {{stack}}",
@@ -7871,7 +8883,21 @@
7871
8883
  "clientDeleted": "Perfil de cliente eliminado",
7872
8884
  "sessionStartCwd": "Error al iniciar VNC: el directorio de trabajo no es accesible para el usuario de la sesión (pantalla: {{display}}). Se solucionó comenzando desde CASA.",
7873
8885
  "desktopRestarted": "Se aplicó el perfil de escritorio y se reinició la sesión ({{desktop}}). Vuelva a conectar VNC/noVNC.",
7874
- "desktopNeedsStart": "Perfil de escritorio {{desktop}} escrito en xstartup. Inicie la sesión para postularse."
8886
+ "desktopNeedsStart": "Perfil de escritorio {{desktop}} escrito en xstartup. Inicie la sesión para postularse.",
8887
+ "passwordNeedTiger": "Vncpasswd no encontrado. Instale TigerVNC (tigervnc-standalone-server) antes de establecer una contraseña.",
8888
+ "linuxUserRolledBack": "Se eliminó el usuario restante de Linux {{user}} después de que falló la contraseña de VNC.",
8889
+ "linuxUserOrphan": "No se pudo eliminar el usuario de Linux restante {{user}} después de que falló la contraseña de 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": "Nombre del servidor requerido",
@@ -7921,7 +8947,110 @@
7921
8947
  "startedDetached": "Se inició el trabajador independiente del rastreador BT (pid {{pid}}, puerto {{port}})",
7922
8948
  "runningDetached": "Rastreador ejecutándose como trabajador independiente (pid {{pid}})",
7923
8949
  "jobQueued": "Creación de torrents BT en cola (gran proporción)",
7924
- "jobRunning": "Creación de torrent BT en ejecución"
8950
+ "jobRunning": "Creación de torrent BT en ejecución",
8951
+ "libraryAdded": "Agregado {{name}} a la biblioteca WebTorrent",
8952
+ "libraryInspectFailed": "No se pudo leer ese .torrent o magnet",
8953
+ "libraryDup": "Ese torrent ya está en la biblioteca.",
8954
+ "libraryDestBad": "La carpeta para guardar no es una ruta de archivos válida",
8955
+ "libraryTorrentTooBig": "El archivo .torrent pesa más de 8 MiB",
8956
+ "libraryNotFound": "Elemento de biblioteca no encontrado",
8957
+ "libraryPaused": "En pausa",
8958
+ "libraryResumed": "Reanudado",
8959
+ "libraryRemoved": "Eliminado de la biblioteca",
8960
+ "libraryFilesRemoved": "Archivos descargados eliminados",
8961
+ "libraryRestoreDone": "Restauración de biblioteca: iniciada {{started}}/{{attempted}} (fallida {{failed}})",
8962
+ "applyTrackersDone": "Se aplicaron rastreadores adicionales a {{n}} espacios de anuncios en vivo",
8963
+ "libraryNeedServe": "Guardado. Abra el panel (servidor ysk-server) para que WebTorrent pueda descargar o inicializar.",
8964
+ "libraryDestIsFile": "No se puede crear una carpeta llamada {{name}}; ya existe un archivo con ese nombre.",
8965
+ "librarySeedMissing": "No hay archivos coincidentes en esa carpeta para inicializar.",
8966
+ "libraryWaitingPeers": "Esperando a sus compañeros. Si los archivos ya están en este host, agréguelos nuevamente y elija semilla existente."
8967
+ },
8968
+ "leftover": {
8969
+ "staleCliTitle": "CLI sobrante obsoleta",
8970
+ "staleCli": "La CLI sobrante aún está presente: {{path}} (producto en ejecución {{version}}). PATH puede que lo prefiera. Eliminar con: rm -f {{path}}",
8971
+ "apacheDefaultTitle": "Sitio predeterminado sobrante de Apache",
8972
+ "apacheDefault": "Apache 000 predeterminado todavía está habilitado. Ese es el archivo del sitio de valores; no significa que Apache esté escuchando en público :80 (se espera YSK Apache en 127.0.0.1:8080). La superposición no lo desactiva. Aplicar Apache desde el panel o hosting apache apply --execute.",
8973
+ "nginxCatchAllTitle": "Falta el comodín Nginx",
8974
+ "nginxCatchAll": "ysk-000-default.conf no está en /etc/nginx/conf.d. Un SNI desconocido puede fallar. Ejecute proyectos nginx-sync --execute.",
8975
+ "vsftpdTitle": "unidad vsftpd falló",
8976
+ "vsftpd": "vsftpd falló. La superposición no reescribe listening/listen_ipv6. Aplicar FTP desde el panel.",
8977
+ "dovecotTitle": "Dovecot TLS apunta al certificado faltante",
8978
+ "dovecot": "Dovecot ssl_cert señala que falta {{path}}. La superposición no reescribe ssl=no. Aplique TLS de correo después de emitir el certificado o aplique la pila de correo electrónico.",
8979
+ "overlayDoesNotHeal": "La superposición del producto no reescribe nginx, Apache, vsftpd o Dovecot. Utilice los comandos de aplicación enumerados (root + YSK_EXECUTE=1).",
8980
+ "readinessTitle": "Restos de host después de la superposición",
8981
+ "readinessClean": "No se ha detectado ningún valor predeterminado de Apache sobrante, falta el nginx catch-all, vsftpd fallido o CLI obsoleta.",
8982
+ "staleCliRemoved": "Se eliminó el CLI residual {{path}}.",
8983
+ "staleCliRemoveFailed": "No se pudo eliminar el CLI residual {{path}}: {{detail}}",
8984
+ "vsftpdSslOff": "Sin certificado FTPS: se puso ssl_enable=NO en vsftpd y se reinició.",
8985
+ "dovecotSslOff": "Falta {{path}}: Dovecot con ssl=no y reinicio.",
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 no está en la RUTA",
8997
+ "auth": "La autenticación falló. Agregue una clave de implementación o un token HTTPS.",
8998
+ "hostkey": "Error en la verificación de la clave del host SSH. Confirme y fije la clave de host.",
8999
+ "dirty": "El árbol de trabajo tiene {{count}} cambios locales. La tracción está bloqueada.",
9000
+ "diverged": "No se puede avanzar rápidamente. Restablezca la referencia remota si desea descartar el historial de Git local.",
9001
+ "missingRef": "Esa rama, etiqueta o confirmación no está en el control remoto.",
9002
+ "shallow": "Este clon es superficial. Obtenga el historial completo antes de fijar una confirmación anterior.",
9003
+ "notRepo": "app/ aún no es un repositorio de Git.",
9004
+ "unrelated": "Historias no relacionadas. Vuelva a clonar solo después de confirmar: los archivos personalizados se perderán.",
9005
+ "lock": "Git index.lock está presente. Elimínelo solo si no se está ejecutando ningún proceso de git.",
9006
+ "disk": "Disco lleno o cuota excedida.",
9007
+ "timeout": "Se agotó el tiempo de espera de Git.",
9008
+ "network": "Error de red al hablar con el control remoto.",
9009
+ "lfs": "Este repositorio usa Git LFS y git-lfs no está disponible.",
9010
+ "submodule": "Error en la actualización del submódulo.",
9011
+ "unknown": "Git falló. Vea el resultado del comando.",
9012
+ "fetchOk": "Obtenido del origen.",
9013
+ "checkoutOk": "Revisado {{ref}}.",
9014
+ "resetOk": "Restablezca con fuerza a {{ref}}.",
9015
+ "envRestored": "Aplicación/.env restaurada desde el plano de control.",
9016
+ "needPinHost": "La clave de host SSH no está fijada. Escanéelo y fíjelo antes de clonarlo o recuperarlo.",
9017
+ "tokenSaved": "Token HTTPS almacenado (nunca más se muestra).",
9018
+ "tokenCleared": "Se eliminó el token HTTPS.",
9019
+ "tokenInvalid": "El token debe tener al menos 8 caracteres.",
9020
+ "deployKeyCreated": "Clave de implementación creada. Agregue la clave pública en el host de Git.",
9021
+ "deployKeyCleared": "Implementar clave separada de este proyecto.",
9022
+ "hostPinned": "Claves de host SSH fijadas para {{host}}.",
9023
+ "hostUnpinned": "Se borraron las claves de host SSH ancladas.",
9024
+ "hostScanFailed": "ssh-keyscan no devolvió claves para ese host.",
9025
+ "hookEnabled": "El gancho Git entrante está activado. Pegue la URL en GitHub, Gitea o GitLab usted mismo.",
9026
+ "hookDisabled": "El gancho Git entrante está desactivado. La URL no se sincronizará.",
9027
+ "hookSecretOnce": "Copie este secreto de gancho ahora. No se vuelve a mostrar.",
9028
+ "refsNeedUrl": "Primero ingrese una URL de Git.",
9029
+ "refsOk": "Cargado {{branches}} rama(s) y {{tags}} etiqueta(s).",
9030
+ "refsEmpty": "El control remoto no anuncia ramas ni etiquetas.",
9031
+ "diffEmpty": "Sin diferencias no preparadas (se excluye el .env protegido)."
9032
+ },
9033
+ "migrate": {
9034
+ "orphanConfirm": "Escriba la ruta de inicio sobrante exacta para confirmar la eliminación.",
9035
+ "orphanStillInStore": "Esa casa todavía pertenece a un proyecto en la tienda.",
9036
+ "orphanMissing": "Ruta no en el disco: {{path}}",
9037
+ "orphanNeedExecute": "Eliminaría los restos de {{path}}. Necesita YSK_EXECUTE=1.",
9038
+ "orphanRmFailed": "No se pudieron eliminar los restos de casa: {{detail}}",
9039
+ "orphanRemoved": "Se eliminó la casa sobrante del proyecto {{path}}."
9040
+ },
9041
+ "defense": {
9042
+ "panelReqLabel": "Solicitudes de paneles / min",
9043
+ "panelReqExcluded": "Tráfico del panel autenticado: se muestra aquí, no se cuenta en la puntuación de amenaza",
9044
+ "tcpOk": "TCP {{target}} accesible",
9045
+ "tcpFail": "TCP {{target}} falló",
9046
+ "dnsDegraded": "Ruta DNS degradada",
9047
+ "reqRateHigh": "Tasa de solicitud pública {{reqs}}/min ≥ {{threshold}}",
9048
+ "ddosHeuristic": "Alta tasa de solicitudes públicas más fallas en la sonda de borde"
9049
+ },
9050
+ "publicFiles": {
9051
+ "liveConf": "Conf Nginx en vivo: {{path}}",
9052
+ "publicRoot": "Raíz pública: {{path}}",
9053
+ "confNameStale": "El archivo {{file}} no coincide con el server_name actual {{serverName}}. Vuelva a aplicar archivos públicos para renombrarlo."
7925
9054
  }
7926
9055
  },
7927
9056
  "ops": {
@@ -8103,7 +9232,7 @@
8103
9232
  "created": "Creado",
8104
9233
  "os": "Usuario del sistema operativo",
8105
9234
  "deploy": "Desplegar",
8106
- "nginx": "Nginx",
9235
+ "nginx": "nginx",
8107
9236
  "health": "Salud"
8108
9237
  },
8109
9238
  "next": {
@@ -8113,7 +9242,8 @@
8113
9242
  "deployTitle": "Siguiente: Implementar",
8114
9243
  "deployBody": "Utilice Implementar en el encabezado o la pestaña Implementar para Git.",
8115
9244
  "nginxTitle": "Siguiente: Publicar Nginx",
8116
- "nginxBody": "Abra la pestaña Red para publicar Nginx (SSL opcional)."
9245
+ "nginxBody": "Abra la pestaña Red para publicar Nginx (SSL opcional).",
9246
+ "provisionOsAction": "Create system user"
8117
9247
  },
8118
9248
  "healthDetail": {
8119
9249
  "none": "Aún no hay control de salud",
@@ -8123,7 +9253,12 @@
8123
9253
  "httpStatus": "HTTP",
8124
9254
  "latency": "Estado latente",
8125
9255
  "error": "Error",
8126
- "at": "Comprobado en"
9256
+ "at": "Comprobado en",
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/sitio",
8129
9264
  "railStatic": "Sitio estático",
@@ -8554,14 +9689,14 @@
8554
9689
  "railNode": "Proceso de nodo",
8555
9690
  "runtimeName": {
8556
9691
  "php": "PHP",
8557
- "node": "Node.js",
9692
+ "node": "Nodo.js",
8558
9693
  "static": "Estático",
8559
- "python": "Python",
8560
- "go": "Go",
8561
- "rust": "Rust",
9694
+ "python": "Pitón",
9695
+ "go": "Ir",
9696
+ "rust": "Óxido",
8562
9697
  "java": "Java",
8563
9698
  "kotlin": "Kotlin",
8564
- "bun": "Bun"
9699
+ "bun": "Bollo"
8565
9700
  },
8566
9701
  "netCacheTitle": "Cache",
8567
9702
  "logsDeepAccess": "Centro de registro · acceso",
@@ -8598,16 +9733,132 @@
8598
9733
  "netPublishMaint": "Mantenimiento",
8599
9734
  "sslNeedDomain": "Establezca un dominio antes de publicar Nginx/SSL.",
8600
9735
  "createTemplateMissing": "{{v0}} ;「— —」。",
8601
- "deleteDialogDesc": "「{{v0}}」。。",
9736
+ "deleteDialogDesc": "「{{name}}」。。",
8602
9737
  "deleteWillStop": "sistemad/PM2/",
8603
9738
  "deleteWillWeb": "Configuración de Nginx, grupo PHP-FPM, Apache vhost ()",
8604
9739
  "deleteWillOs": "Inicio de Linux()",
8605
9740
  "deleteKeepOs": "inicio Linux()",
8606
9741
  "deleteWillDb": "…",
8607
9742
  "deleteRemoveFilesDesc": "Cancelar,",
8608
- "deleteTypeNameHint": "「{{v0}}」",
9743
+ "deleteTypeNameHint": "「{{name}}」",
8609
9744
  "deleteDnsWarn": "Zona/dominio DNS 。",
8610
- "manageInNginx": "Administrar en Nginx"
9745
+ "manageInNginx": "Administrar en Nginx",
9746
+ "advFtpHomeApp": "Directorio app del sitio",
9747
+ "advFtpHomeRoot": "Inicio del proyecto (completo)",
9748
+ "advFtpManage": "Abrir página FTP",
9749
+ "listDesc": "Administrar sitios en este host.",
9750
+ "resShell": "shell de inicio de sesión",
9751
+ "resSaveHint": "Guarde y aplique los cambios del sistema operativo en vivo. El plano de control solo almacena el formulario. Volver a aplicar utiliza los últimos valores guardados.",
9752
+ "resBashConfirmTitle": "¿Permitir bash interactivo?",
9753
+ "resBashConfirmDesc": "Esto otorga un shell de inicio de sesión interactivo al usuario del proyecto. Confirme solo si necesita SSH o PTY como ese usuario.",
9754
+ "noPathSepHint": "El nombre no puede contener / o \\.",
9755
+ "createGitHint": "Opcional. Almacenado en el proyecto; clonar desde la pestaña Implementar (no se clona al crear).",
9756
+ "gitBranch": "Rama",
9757
+ "gitBranchHint": "Branch or tag. Empty uses the remote default. First clone is shallow (depth 1).",
9758
+ "gitLastRef": "Última sincronización: {{branch}} @ {{commit}}",
9759
+ "gitConfirmTitle": "¿Clonar en este proyecto?",
9760
+ "gitConfirmBody": "Si app/ sigue siendo el marcador de posición Hola Mundo, se borrará y luego se clonará. Se rechazan los archivos personalizados que no sean un andamio de YSK.",
9761
+ "runtimeActual": "Binario real {{path}}",
9762
+ "gitConfirmRemoteBody": "Esto apunta el origen a la nueva URL y extrae. Las historias no relacionadas fallan; Los archivos personalizados no se borran.",
9763
+ "runtimeFallback": "Elegido {{version}} no está en este host. Usos del proceso {{path}}.",
9764
+ "gitSync": "Sincronizar",
9765
+ "gitFetch": "Buscar",
9766
+ "gitCheckout": "Verificar",
9767
+ "gitReset": "Restablecer a control remoto",
9768
+ "gitDeepen": "Obtener el historial completo",
9769
+ "gitLogTitle": "Confirmaciones recientes",
9770
+ "gitDirtyTitle": "Extracción de bloques de cambios locales",
9771
+ "gitDirtyBody": "{{count}} los archivos difieren de Git (ediciones de archivos o la aplicación). Deséchelos o cancele.",
9772
+ "gitDiscard": "Descartar archivos locales",
9773
+ "gitOpenFiles": "Abrir en archivos",
9774
+ "gitNotCloned": "No clonado",
9775
+ "gitClean": "Limpio",
9776
+ "gitDirty": "Sucio",
9777
+ "gitBehind": "Detrás {{count}}",
9778
+ "gitAhead": "Adelante {{count}}",
9779
+ "gitDetached": "Fijado",
9780
+ "gitShallow": "Poco profundo",
9781
+ "gitMissing": "falta git",
9782
+ "gitResetConfirmTitle": "¿Restablecer difícilmente a control remoto?",
9783
+ "gitResetConfirmBody": "Esto descarta el historial de Git local y los archivos sin seguimiento, excepto .env, y luego restaura .env desde el plano de control.",
9784
+ "gitHeads": "Sucursales remotas",
9785
+ "gitToken": "token HTTPS",
9786
+ "gitTokenHint": "Personal access token. Stored encrypted; never written into the remote URL.",
9787
+ "gitTokenPlaceholder": "ghp_… o glpat-…",
9788
+ "gitTokenSet": "Conjunto de fichas",
9789
+ "gitSaveToken": "Guardar token",
9790
+ "gitClearToken": "Borrar token",
9791
+ "gitDeployKey": "Implementar clave pública",
9792
+ "gitDeployKeyHint": "Agregue esto como una clave de implementación de solo lectura en el host Git.",
9793
+ "gitDeployKeyOn": "Implementar clave",
9794
+ "gitMakeKey": "Crear clave de implementación",
9795
+ "gitCopyPub": "Copiar clave pública",
9796
+ "gitClearKey": "Borrar clave de implementación",
9797
+ "gitKeyCopied": "Clave pública copiada",
9798
+ "gitPinHost": "Fijar clave de host",
9799
+ "gitPinHostBody": "{{host}} no está fijado. Confirme las huellas digitales, luego fije antes del clon SSH.",
9800
+ "gitHostUnpinned": "Clave de host no fijada",
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": "Rotar secreto",
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": "Copiar secreto",
9811
+ "gitHookCopied": "copiado",
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": "token HTTPS",
9819
+ "gitAuthSsh": "Clave de implementación SSH",
9820
+ "gitLoadRefs": "Cargar ramas",
9821
+ "gitRefDefault": "Predeterminado remoto",
9822
+ "gitRefBranches": "Sucursales",
9823
+ "gitRefTags": "Etiquetas",
9824
+ "gitRefOther": "Otra ref…",
9825
+ "gitRefCustom": "cometer o ref.",
9826
+ "gitRefsNeedUrl": "Primero ingrese una URL.",
9827
+ "gitRefsNeedAuth": "Guarde un token o implemente una clave, luego cargue las ramas.",
9828
+ "gitRefsHint": "Cargado desde el control remoto. Elija uno: no escriba.",
9829
+ "gitHookSetupToggle": "como pegar esto",
9830
+ "gitHookOneLiner": "HMAC o X-YSK-Git-Hook. Sólo la ref de este proyecto.",
9831
+ "gitHookExecuteHint": "Necesita YSK_EXECUTE=1 para clonar o implementar.",
9832
+ "gitShowKey": "Mostrar clave",
9833
+ "gitHideKey": "Esconder",
9834
+ "gitBehindShort": "↓{{count}}",
9835
+ "gitAheadShort": "↑{{count}}",
9836
+ "gitDirtyShort": "Sucio · {{count}}",
9837
+ "gitFilesLink": "Archivos",
9838
+ "gitTokenLaterHint": "El token HTTPS y la profundidad de clonación se configuran en la pestaña Implementar del proyecto después de la creación.",
9839
+ "netForceHttpsOn": "HTTP redireccionará a HTTPS después de publicar el borde.",
9840
+ "netForceHttpsOff": "No se almacena ninguna redirección forzada.",
9841
+ "netHttpsLiveNotForced": "Existe un archivo de borde; Es posible que HTTPS ya funcione. Este cuadro solo fuerza HTTP→HTTPS.",
9842
+ "gitSyncBlockedDirty": "La sincronización está deshabilitada hasta que se descarten los cambios locales (Restablecer) o los archivos coincidan con Git.",
9843
+ "gitViewDiff": "Ver diferencia",
9844
+ "gitBranchAfterUrl": "Introduzca primero la URL de Git. Vacío usa la rama predeterminada remota.",
9845
+ "gitResetNeedConfirm": "Requiere confirmación — descarta confirmaciones locales",
9846
+ "openUrlNeedDomain": "Primero establezca un dominio: no abra 127.0.0.1 en su navegador",
9847
+ "needOsUser": "Primero cree el usuario del sistema en la pestaña Aislamiento.",
9848
+ "stopTitle": "Detener este proyecto (unidad systemd y sitio público)",
9849
+ "deployTitle": "Implementar este proyecto",
9850
+ "httpStatsHint": "Del registro de acceso de este proyecto (última muestra)",
9851
+ "httpStatsNone": "Aún no hay registro de acceso al proyecto",
9852
+ "statStoppedOnly": "Interrumpido",
9853
+ "statReadyOnly": "Listo",
9854
+ "netBoundCert": "Certificado vinculado",
9855
+ "netBoundCertExpiry": "caduca {{at}}",
9856
+ "netNoBoundCert": "No hay certificado en disco para este nombre",
9857
+ "netForceHttpsNeedCert": "Emita un certificado en /ssl para este dominio antes de forzar 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": "No aplicado en el host (necesita root + YSK_EXECUTE=1): guardado en la configuración del panel",
8643
9894
  "nginxWritten": "Escribió el archivo del panel de límite de velocidad de Nginx",
8644
- "f2bWritten": "Escribí la configuración del panel fail2ban"
9895
+ "f2bWritten": "Escribí la configuración del panel fail2ban",
9896
+ "hintDropped": "Internal protection hint omitted",
9897
+ "nginxLimits": "Will write Nginx rate-limit snippet"
8645
9898
  },
8646
9899
  "rel": {
8647
9900
  "justNow": "En este momento",
@@ -8955,7 +10208,69 @@
8955
10208
  "plusRegion": "+ región {{v}}",
8956
10209
  "plusCity": "+ ciudad {{v}}",
8957
10210
  "lastTickPrefix": "· último {{t}}",
8958
- "nextTickPrefix": "· siguiente {{t}}"
10211
+ "nextTickPrefix": "· siguiente {{t}}",
10212
+ "stackApply": "Aplicar pila de protección (UFW, fail2ban, preestablecido)",
10213
+ "stackApplyDone": "Se solicita la aplicación de la pila de protección",
10214
+ "stackApplyHint": "Esto habilita UFW y aplica fail2ban más el valor preestablecido sugerido. Confirme que no se bloqueará en un panel remoto.",
10215
+ "cannotBanSelf": "No se puede bloquear {{ip}} — es el anfitrión, su IP de inicio o ignoreip",
10216
+ "selfIp": "este anfitrión",
10217
+ "selfHostIp": "IP del host",
10218
+ "selfLoginIp": "Su IP de inicio de sesión",
10219
+ "showZeroScore": "Mostrar puntuación 0",
10220
+ "hideZeroScore": "Ocultar puntuación 0",
10221
+ "freshnessNa": "n / A",
10222
+ "geoDraftOnly": "La política está apagada: Guardar solo deja un borrador. Nginx no aplica hasta que la active.",
10223
+ "selectAllCountriesWarn": "¿Seleccionar todos los países en lista de bloqueo? Puede bloquear este anfitrión y su país de inicio.",
10224
+ "badgeRecommendPreset": "Se recomienda un preajuste más fuerte para la amenaza actual",
10225
+ "badgeAutomationOn": "La automatización está activa",
10226
+ "badgeBanCount": "Bloqueos activos",
10227
+ "badgeGeoOn": "La política de acceso Geo está activa",
10228
+ "badgeGeoNotReady": "La base GeoIP no está lista",
10229
+ "badgeIntelSignals": "Señales que suman puntuación ahora",
10230
+ "signalActive": "Activo",
10231
+ "signalInactive": "Inactivo",
10232
+ "signalJails": "{{n}} cárcel(es)",
10233
+ "dbReadyHint": "Hay archivos MMDB",
10234
+ "dbNotReadyHint": "Descargue primero una base GeoIP",
10235
+ "staleHint": "Si la última actualización correcta tiene más de 7 días",
10236
+ "statSuspects": "IP sospechosas",
10237
+ "scoreBasisHint": "La puntuación de amenazas utiliza firewall, volumen de prohibición de fail2ban y señales de tasa de solicitudes; no es el mismo recuento que la lista de sospechosos de inteligencia.",
10238
+ "geoNeedDb": "Faltan bases de datos GeoIP: actualice primero los archivos MMDB",
10239
+ "colHits": "Impactos",
10240
+ "col429": "429",
10241
+ "topIpsTitle": "IP principales",
10242
+ "hitsCount": "{{n}} impactos",
10243
+ "sampleWindowHint": "Los recuentos son de la ventana de muestras access + auth actual, no del archivo de registro completo.",
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": "No establecido",
@@ -8987,7 +10302,24 @@
8987
10302
  "diskRoot": "raíz del disco",
8988
10303
  "filesInRoot": "Entradas",
8989
10304
  "managedConf": "Configuración administrada",
8990
- "systemConf": "Configuración del sistema"
10305
+ "systemConf": "Configuración del sistema",
10306
+ "notes": {
10307
+ "noManagedConf": "Aún no hay ninguna configuración de Nginx administrada: haga clic en Aplicar",
10308
+ "notSynced": "La configuración administrada existe pero no está en /etc/nginx/conf.d; aplíquela nuevamente como root con YSK_EXECUTE"
10309
+ },
10310
+ "autoindex": "Listado de directorios (autoindex)",
10311
+ "liveSystemConf": "Conf. del sistema en vivo: {{path}}",
10312
+ "publicRootNote": "Raíz pública: {{path}}",
10313
+ "applyConfirmTitle": "¿Aplicar el sitio de archivos públicos?",
10314
+ "applyConfirmDesc": "Escribir Nginx server_name {{name}} y recargar Nginx.",
10315
+ "serverNameMismatch": "La conf. en vivo usa {{live}}; el formulario tiene {{draft}}. Aplique para reemplazar.",
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": "Permisos",
@@ -9071,7 +10403,13 @@
9071
10403
  "auditExport": "Exportación de auditoría",
9072
10404
  "securityApiKeysAdmin": "Administrador de claves API",
9073
10405
  "networkBrowse": "Navegación web mediada por host",
9074
- "networkVnc": "Escritorio remoto VNC"
10406
+ "networkVnc": "Escritorio remoto VNC",
10407
+ "validatorsRead": "Validadores (lectura)",
10408
+ "validatorsManage": "Validadores gestionar",
10409
+ "validatorsWipe": "Validadores borrar datos",
10410
+ "dockerRead": "Docker (lectura)",
10411
+ "dockerManage": "Docker gestionar",
10412
+ "dockerWipe": "Docker borrar / limpiar"
9075
10413
  },
9076
10414
  "aboutRoles": "Roles (valores predeterminados de fábrica)",
9077
10415
  "aboutRolesBody": "Los roles establecen capacidades predeterminadas; los usuarios pueden anular los individuales.",
@@ -9087,7 +10425,14 @@
9087
10425
  "capabilitiesHint": "Alternar qué puede hacer este rol",
9088
10426
  "enabledCount": "{{enabled}} de {{total}} habilitado",
9089
10427
  "bandAboveMax": "Por encima del nivel máximo",
9090
- "dirtyHint": "Personalizado (difiere de fábrica)"
10428
+ "dirtyHint": "Personalizado (difiere de fábrica)",
10429
+ "unsaved": "No guardado",
10430
+ "unsavedHint": "Ediciones no guardadas en este rol",
10431
+ "nothingToSave": "Nada que salvar",
10432
+ "saveRole": "Guardar política {{role}}",
10433
+ "discardTitle": "¿Descartar la política no guardada?",
10434
+ "discardDesc": "El cambio de roles elimina las ediciones de capacidades no guardadas.",
10435
+ "roleUnavailable": "Not available for this role"
9091
10436
  },
9092
10437
  "readiness": {
9093
10438
  "cat": {
@@ -9198,7 +10543,38 @@
9198
10543
  "fixNow": "Arreglar ahora",
9199
10544
  "fixFailed": "La solución falló",
9200
10545
  "fixDone": "Permisos de dataDir reforzados (chmod 750)",
9201
- "fixDoneWebUi": "UI web construida/instalada"
10546
+ "fixDoneWebUi": "UI web construida/instalada",
10547
+ "rootLabel": "Superusuario",
10548
+ "exportStarted": "Descargando {{name}}",
10549
+ "blockersHint": "Los bloqueos son el subconjunto crítico de Faltantes, no comprobaciones extra.",
10550
+ "techDetails": "Detalles técnicos",
10551
+ "missingOwner": "No hay propietario de panel asignado (atribución de cuota de paquete)",
10552
+ "notOsProvisioned": "Usuario/casa del sistema operativo aún no aprovisionado",
10553
+ "ondrejNone": "No se detectaron fuentes PHP de Ondrej Launchpad",
10554
+ "ondrejFound": "Se encontraron fuentes heredadas de ondrej/php que entran en conflicto con packages.sury.org: {{paths}}",
10555
+ "ondrejTitle": "Fuente PHP apt (residual ondrej)",
10556
+ "systemctlActive": "El servicio está funcionando",
10557
+ "systemctlStatus": "Estado del servicio: {{status}}",
10558
+ "binInPath": "{{bin}} en RUTA",
10559
+ "leftoverApache": "Sitio predeterminado sobrante de Apache",
10560
+ "leftoverVsftpd": "unidad vsftpd falló",
10561
+ "leftoverCli": "CLI sobrante obsoleta",
10562
+ "leftoverNginx": "Falta el comodín Nginx",
10563
+ "leftoverDovecot": "Dovecot TLS apunta al certificado faltante",
10564
+ "leftoverOther": "Restos de hostia",
10565
+ "leftoverApply": "Aplicar sobrantes",
10566
+ "isolationOwnerDegrades": "La falta deowner_user_id afecta la atribución de cuota de paquete: el estado está degradado, no listo.",
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": "Nunca caduca",
@@ -9266,7 +10642,30 @@
9266
10642
  "pickKey": "Seleccione una tecla a la izquierda para ver el contenido.",
9267
10643
  "ttlPrefix": "TTL: {{ttl}}",
9268
10644
  "writeLiveHint": "Escribe Redis en vivo; no se puede deshacer desde el panel con un solo clic.",
9269
- "refPath": "Ref: {{path}}"
10645
+ "refPath": "Ref: {{path}}",
10646
+ "dbEmptyMark": " · vacío",
10647
+ "noRequirepass": "El modo protegido está activo, pero requirepass está vacío o no se leyó — no hay contraseña.",
10648
+ "setRequirepass": "Fijar contraseña",
10649
+ "rdbOnlyLossHint": "AOF off y RDB on. Un reinicio o fallo puede perder escrituras recientes.",
10650
+ "dirDataContainer": "/datos (contenedor)",
10651
+ "dirHostDefault": "/var/lib/redis",
10652
+ "dirDefaultInstance": "/var/lib/redis/default",
10653
+ "dirDataWarn": "/data suele ser una ruta de contenedor; Este panel no puede confirmar que exista.",
10654
+ "saveOff": "Deshabilitar instantáneas (no recomendado)",
10655
+ "saveOffWarn": "La cadena de guardado vacía desactiva las instantáneas RDB. En caso de fallo, se pueden perder todos los datos si AOF también está desactivado.",
10656
+ "dirMoveWarn": "Cambiar el directorio no mueve dump.rdb/AOF. El siguiente inicio utiliza la nueva ruta tal como está.",
10657
+ "passwordUnset": "No configurado en el servicio",
10658
+ "passwordSetHidden": "Conjunto (no mostrado)",
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": "Creado",
@@ -9734,7 +11133,29 @@
9734
11133
  "projectsCount": "Proyectos YSK",
9735
11134
  "noProjects": "Sin proyectos",
9736
11135
  "noProjectsDesc": "No hay proyectos de nodo/bun en el panel o usuario del sistema operativo no aprovisionado.",
9737
- "pm2OnlyDesc": "Solo las aplicaciones iniciadas con PM2 bajo el usuario del panel. Las implementaciones de systemd aparecen arriba."
11136
+ "pm2OnlyDesc": "Solo las aplicaciones iniciadas con PM2 bajo el usuario del panel. Las implementaciones de systemd aparecen arriba.",
11137
+ "startupTitle": "Comenzar al arrancar",
11138
+ "startupDesc": "Registre PM2 para que los procesos regresen después del reinicio.",
11139
+ "systemdActionsHint": "Las acciones de systemd necesitan root y 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": "Grabado {{v}}",
9740
11161
  "remoteSourceSuffix": "({{source}})",
@@ -9788,7 +11209,32 @@
9788
11209
  "path": "Camino",
9789
11210
  "fullVersion": "Versión completa",
9790
11211
  "useListForDefaults": "Para cambiar el valor predeterminado del host o del panel, o eliminar esta versión, utilice la lista anterior.",
9791
- "alreadyHostDefaultShort": "Valor predeterminado del host"
11212
+ "alreadyHostDefaultShort": "Valor predeterminado del host",
11213
+ "managedPathMissingTitle": "La ruta administrada {{name}} no está lista",
11214
+ "managedPathMissing": "La versión {{name}} administrada por YSK para la versión {{version}} no está lista. Vuelva a sondear o reinstale.",
11215
+ "installRecordedCta": "Instalar grabado {{v}}",
11216
+ "targetMissing": "Versión de destino no instalada",
11217
+ "targetMissingHint": "El destino {{version}} no está en este host. Enlace una versión instalada o instale este pin.",
11218
+ "needsInstall": "hay que instalar",
11219
+ "needsInstallHint": "No está en este anfitrión. Instálelo o elija una versión instalada.",
11220
+ "unitBytes": "bytes",
11221
+ "headerSizeKb": "{{n}}KB",
11222
+ "phpIniChipEmpty": "No cargado — abra la pestaña php.ini",
11223
+ "phpFpmService": "PHP-FPM",
11224
+ "phpFpmServiceDesc": "Iniciar, detener, recargar o reiniciar la unidad PHP-FPM",
11225
+ "rustupDefaultMissingTitle": "No hay toolchain predeterminada de rustup",
11226
+ "rustupDefaultMissing": "rustup no tiene toolchain predeterminada. Fije stable en la pestaña Software.",
11227
+ "rustupDefaultMissingShort": "Sin cadena de herramientas predeterminada",
11228
+ "rustupSetDefaultHint": "Establecer cadena de herramientas predeterminada",
11229
+ "uninstalledCountHint": "{{n}} versión(es) no están en este anfitrión",
11230
+ "applyPhpVhostTitle": "Necesita confirmación: escribe archivos pool/vhost",
11231
+ "applyPhpVhostDesc": "Escribirá el {{pool}} pool y el {{domain}} vhost. Servicios de recarga: {{reload}}.",
11232
+ "binaryPath": "Ruta del binario",
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": "Buscar páginas y recursos...",
@@ -9797,21 +11243,25 @@
9797
11243
  "loading": "Búsqueda…",
9798
11244
  "noResults": "No hay coincidencias",
9799
11245
  "kinds": {
9800
- "page": "Pages",
9801
- "project": "Projects",
9802
- "email": "Email",
9803
- "mailbox": "Mailboxes",
11246
+ "page": "paginas",
11247
+ "project": "Proyectos",
11248
+ "email": "Correo electrónico",
11249
+ "mailbox": "Buzones",
9804
11250
  "ssl": "SSL",
9805
11251
  "dns": "DNS",
9806
- "nginx": "Nginx",
9807
- "share": "Shares",
11252
+ "nginx": "nginx",
11253
+ "share": "Acciones",
9808
11254
  "ftp": "FTP",
9809
11255
  "mysql": "MySQL",
9810
11256
  "postgres": "PostgreSQL",
9811
11257
  "redis": "Redis",
9812
- "cron": "Cron",
9813
- "user": "Users",
9814
- "other": "Other"
11258
+ "cron": "cron",
11259
+ "user": "Usuarios",
11260
+ "other": "Otro"
11261
+ },
11262
+ "alias": {
11263
+ "ssl": "certificado certificado certificados",
11264
+ "projects": "sitios del proyecto"
9815
11265
  }
9816
11266
  },
9817
11267
  "security": {
@@ -9835,7 +11285,7 @@
9835
11285
  "tabApiKeys": "Claves API",
9836
11286
  "tabSsh": "SSH",
9837
11287
  "tabApprovals": "Aprobaciones",
9838
- "tabAllowlist": "Lista de permitidos",
11288
+ "tabAllowlist": "Herramientas del agente",
9839
11289
  "apiTokenOnce": "Token API (se muestra una vez):",
9840
11290
  "copiedToken": "Token copiado",
9841
11291
  "totpTitle": "Dos factores (TOTP)",
@@ -9919,8 +11369,8 @@
9919
11369
  "revokeAllDevices": "Revocar todos los dispositivos",
9920
11370
  "revokedAllDevices": "Todos los dispositivos de confianza revocados",
9921
11371
  "export2faBackup": "Exportar copia de seguridad cifrada 2FA",
9922
- "fail2banSnippetMsg": "Fragmentos de Fail2ban: {{written}} — {{notes}}",
9923
- "generateFail2ban": "Generar fragmentos de Fail2ban",
11372
+ "fail2banSnippetMsg": "Fragmentos de fail2ban: {{written}} — {{notes}}",
11373
+ "generatefail2ban": "Generar fragmentos de fail2ban",
9924
11374
  "adminPolicyTitle": "Política de administrador 2FA",
9925
11375
  "adminPolicyDesc": "",
9926
11376
  "requireAdmin2fa": "Requerir administrador 2FA",
@@ -9940,8 +11390,8 @@
9940
11390
  "apiKeysEmpty": "Aún no hay claves API",
9941
11391
  "apiKeysEmptyHint": "Crear desde la barra de herramientas; luego llame a la API con el token de portador",
9942
11392
  "approve": "Aprobar",
9943
- "allowlistTitle": "Lista de permitidos ({{count}})",
9944
- "allowlistEmpty": "Sin herramientas de lista permitida",
11393
+ "allowlistTitle": "Herramientas del agente ({{count}})",
11394
+ "allowlistEmpty": "No hay herramientas en el catálogo",
9945
11395
  "createApiKeyTitle": "Crear clave API",
9946
11396
  "createApiKeyDesc": "El token completo se muestra solo una vez después de la creación.",
9947
11397
  "createKeyBtn": "Crear clave",
@@ -10183,7 +11633,23 @@
10183
11633
  "sharePanelTitle": "¿Compartir secreto TOTP del panel?",
10184
11634
  "sharePanelDesc": "Alto riesgo. Escribe COMPARTIDO para confirmar.",
10185
11635
  "confirmString": "Cadena de confirmación",
10186
- "enableShare": "Habilitar compartir"
11636
+ "enableShare": "Habilitar compartir",
11637
+ "invalidPub": "Pegue una línea completa de clave pública OpenSSH (ssh-ed25519 / ssh-rsa / ecdsa…).",
11638
+ "dryRunOk": "Vista previa lista. Revise el contenido abajo.",
11639
+ "strictBlocked": "El paquete o PAM no está listo; no se puede aplicar Strict.",
11640
+ "strictDryRun": "Vista previa del modo estricto",
11641
+ "errorNoDetail": "Prueba fallida (sin detalles)",
11642
+ "privCloseWithoutAck": "Cerrado. La clave privada no se volverá a mostrar; generar uno nuevo si no lo guardaste.",
11643
+ "loginNoProjects": "Sin proyectos. Autorice a un usuario de Linux existente (root/tester) a continuación. Escribir /root/.ssh necesita YSK_EXECUTE=1.",
11644
+ "loginLinuxHint": "Se utiliza cuando no hay proyecto. Ejemplo: root o tester.",
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": "Sesiones activas",
10189
11655
  "sessionsOther": "Otros dispositivos",
@@ -10206,7 +11672,52 @@
10206
11672
  "revokeOthersDesc": "Esto finalizará {{count}} otras sesiones. Su navegador actual permanece conectado.",
10207
11673
  "sessionRevoked": "Sesión cerrada",
10208
11674
  "mySecurityHint": "",
10209
- "policyTotpHint": "Política del sitio: cada administrador debe habilitar su propio 2FA (QR individual)"
11675
+ "policyTotpHint": "Política del sitio: cada administrador debe habilitar su propio 2FA (QR individual)",
11676
+ "requireUser2fa": "Exigir 2FA a todos los usuarios del panel",
11677
+ "generateFail2ban": "Generar fragmentos fail2ban",
11678
+ "changePasswordTitle": "Cambiar la contraseña de inicio de sesión",
11679
+ "currentPassword": "Contraseña actual",
11680
+ "newPassword": "Nueva contraseña",
11681
+ "confirmNewPassword": "Confirmar nueva contraseña",
11682
+ "passwordMismatch": "Las contraseñas nuevas no coinciden.",
11683
+ "changePassword": "Cambiar contraseña",
11684
+ "passwordChanged": "Contraseña actualizada.",
11685
+ "strictNeedsEnrolled": "Al menos un administrador debe tener 2FA antes de activar Strict.",
11686
+ "policyTotpNeedSelf": "Active 2FA en esta cuenta primero; si no, no se puede rellenar el código de confirmación.",
11687
+ "fail2banSnippetTitle": "Fragmento fail2ban",
11688
+ "fail2banSnippetEmpty": "No se escribió ningún fragmento.",
11689
+ "trustedDevicesTitle": "Dispositivos de confianza",
11690
+ "noTrustedDevices": "No hay dispositivos de confianza.",
11691
+ "strictConfirmTitle": "¿Activar 2FA Strict?",
11692
+ "strictConfirmDesc": "Los usuarios sin 2FA no podrán iniciar sesión. Confirme que ya tiene TOTP o Passkey.",
11693
+ "revokeDevicesTitle": "¿Revocar dispositivos de confianza?",
11694
+ "revokeDevicesDesc": "Los navegadores recordados volverán a pedir 2FA.",
11695
+ "approvalsHint": "Las aprobaciones aparecen cuando una herramienta de alto riesgo necesita un segundo operador. Configure permisos en Usuarios → Permisos.",
11696
+ "allowlistReadonly": "Catálogo de herramientas del agente (solo lectura). Las capacidades se configuran en Usuarios → Permisos.",
11697
+ "colTool": "Herramienta",
11698
+ "colAllowed": "Permitido",
11699
+ "colRisk": "Riesgo",
11700
+ "colApproval": "Aprobación",
11701
+ "risk": {
11702
+ "low": "Bajo",
11703
+ "medium": "Medio",
11704
+ "high": "Alto",
11705
+ "critical": "Crítico"
11706
+ },
11707
+ "totpStatusLoadFailed": "No se pudo cargar el estado de 2FA",
11708
+ "confirmDeleteApiKey": "¿Eliminar esta clave API?",
11709
+ "confirmDeleteApiKeyDesc": "“{{name}}” dejará de autenticarse. Esto no se puede deshacer.",
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": "Sesiones API",
11714
+ "revokeOtherTitle": "Cerrar sesión {{n}} otras sesiones",
11715
+ "policyNeedSelf2fa": "Primero habilite 2FA en esta cuenta, luego confirme con un código TOTP",
11716
+ "revokeAllDevicesTitle": "Revocar todos los dispositivos recordados: usted y otros administradores deben verificar 2FA nuevamente",
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": "Acceso a la red",
@@ -10215,8 +11726,8 @@
10215
11726
  "manageDesc": "Controle cómo se puede acceder a {{service}} en el firewall del host.",
10216
11727
  "mode": "Modo de acceso",
10217
11728
  "modePrivate": "Sólo locales",
10218
- "modePublic": "Public",
10219
- "modeRestricted": "Restricted",
11729
+ "modePublic": "Público",
11730
+ "modeRestricted": "Restringido",
10220
11731
  "summaryPrivate": "No abierto en el firewall público.",
10221
11732
  "summaryPublic": "Abrir · {{ports}}",
10222
11733
  "summaryRestricted": "Restringido · {{count}} fuente(s)",
@@ -10224,9 +11735,9 @@
10224
11735
  "outOfSync": "Fuera de sincronización",
10225
11736
  "firewallOff": "Cortafuegos desactivado",
10226
11737
  "ufwMissing": "UFW no instalado",
10227
- "ufwInactive": "inactive",
10228
- "firewallLink": "Firewall",
10229
- "portsLabel": "Ports",
11738
+ "ufwInactive": "inactivo",
11739
+ "firewallLink": "Cortafuegos",
11740
+ "portsLabel": "Puertos",
10230
11741
  "allowFrom": "Fuentes permitidas (IP/CIDR)",
10231
11742
  "allowCountries": "Países permitidos (ISO)",
10232
11743
  "hintPrivate": "Es posible que el servicio aún escuche en localhost; ninguna UFW pública permite reglas.",
@@ -10237,7 +11748,19 @@
10237
11748
  "restrictedNeedSource": "Agregue al menos una IP/CIDR o código de país para el modo restringido.",
10238
11749
  "privateStartTitle": "¿Exponer {{service}} en la red?",
10239
11750
  "confirmAndStart": "Confirmar y comenzar",
10240
- "cloudSgNote": "Solo firewall de host: los grupos de seguridad en la nube (AWS/GCP/Azure) no se modifican."
11751
+ "cloudSgNote": "Solo firewall de host: los grupos de seguridad en la nube (AWS/GCP/Azure) no se modifican.",
11752
+ "modeUndecided": "No establecido",
11753
+ "modeLoading": "Cargando",
11754
+ "summaryUndecided": "Modo de acceso no confirmado (valor predeterminado del catálogo: {{suggested}}).",
11755
+ "summaryNotEnforced": "El firewall está desactivado: el panel no abre ni bloquea estos puertos.",
11756
+ "roleSmtp": "Envío SMTP",
11757
+ "roleImap": "Buzón IMAP/POP3",
11758
+ "serviceNotInstalled": "Este servicio no está instalado, por lo que no se aplican las reglas del firewall.",
11759
+ "openButStopped": "Puertos abiertos: el servicio no se está ejecutando",
11760
+ "openNoTenants": "Puertos públicos sin inquilinos",
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": "En el arranque",
@@ -10245,8 +11768,27 @@
10245
11768
  "start": "Comenzar",
10246
11769
  "stop": "Detener",
10247
11770
  "restart": "Reanudar",
10248
- "reload": "Recargar"
10249
- },
11771
+ "reload": "Recargar",
11772
+ "enable": "Habilitar al arranque",
11773
+ "disable": "Deshabilitar al arranque"
11774
+ },
11775
+ "lifecycleTitle": "Control del servicio {{label}}",
11776
+ "startedOk": "{{label}} iniciado",
11777
+ "stoppedOk": "{{label}} detenido",
11778
+ "restartedOk": "{{label}} reiniciado",
11779
+ "reloadedOk": "{{label}} recargado",
11780
+ "stopConfirmTitle": "¿Detener {{label}}?",
11781
+ "stopConfirmDesc": "{{label}} dejará de escuchar. Puede iniciarlo de nuevo en esta página.",
11782
+ "stopConfirmEdgeDesc": "Detener {{label}} deja los sitios y el proxy inverso fuera de línea hasta que se inicie de nuevo.",
11783
+ "stopConfirmEdgeConsequence": "Mientras {{label}} esté detenido, este host no servirá HTTP/HTTPS.",
11784
+ "stopConfirmSshdTitle": "¿Detener sshd?",
11785
+ "stopConfirmSshdDesc": "Detener sshd cierra SSH remoto. Confirme que tiene consola u otra vía de acceso.",
11786
+ "stopConfirmSshdToken": "detener sshd",
11787
+ "stopConfirmSshdConsequence": "Las nuevas sesiones SSH fallarán hasta iniciar sshd desde la consola del host.",
11788
+ "stopConfirmPanelTitle": "¿Detener YSK Server?",
11789
+ "stopConfirmPanelDesc": "El panel y la API quedarán fuera de línea hasta iniciar la unidad en el host.",
11790
+ "stopConfirmPanelToken": "detener el servidor ysk",
11791
+ "stopConfirmPanelConsequence": "Esta sesión del navegador se desconectará. Inicie la unidad desde SSH o la consola.",
10250
11792
  "actionDone": "{{action}} hecho",
10251
11793
  "runningOf": "{{running}}/{{total}} corriendo",
10252
11794
  "canMutate": "Mudable",
@@ -10277,7 +11819,54 @@
10277
11819
  "protectionDoneNote": "Sonda de protección terminada",
10278
11820
  "probeDone": "Sonda completa",
10279
11821
  "runProtection": "Ejecutar sonda de protección",
10280
- "notProbedYet": "Aún no investigado"
11822
+ "notProbedYet": "Aún no investigado",
11823
+ "stopConfirmFail2banTitle": "¿Detener fail2ban?",
11824
+ "stopConfirmFail2banDesc": "Detener fail2ban desactiva las prohibiciones automáticas de IP. Los sitios web y SSH siguen funcionando.",
11825
+ "stopConfirmFail2banConsequence": "Los nuevos atacantes no son prohibidos hasta que se reinicie fail2ban.",
11826
+ "installOrOpen": "Instalar/abrir",
11827
+ "statusFilter": {
11828
+ "all": "Todos los estados",
11829
+ "running": "Correr",
11830
+ "failed": "Fallido",
11831
+ "missing": "No instalado"
11832
+ },
11833
+ "stopNeedConfirm": "Requiere confirmación",
11834
+ "stopNeedConfirmPhrase": "Hay que escribir la frase de confirmación",
11835
+ "enabledOk": "{{label}} habilitado al arranque",
11836
+ "bootDisabledWarn": "{{label}} está en ejecución pero no arrancará al iniciar. Habilítelo para persistir.",
11837
+ "bootDisabledShort": "No al arranque",
11838
+ "mariadbNotInstalled": "MariaDB no está instalado",
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": "Software",
@@ -10368,7 +11957,8 @@
10368
11957
  "pick": "Elegir versión",
10369
11958
  "noTarget": "Sin objetivo de actualización",
10370
11959
  "needRuntimePage": "Instale esta versión en la página de tiempo de ejecución",
10371
- "noAptCandidate": "No hay versión candidata apta"
11960
+ "noAptCandidate": "No hay versión candidata apta",
11961
+ "sourceLabel": "Fuente"
10372
11962
  },
10373
11963
  "install": {
10374
11964
  "progress": "Instalando: {{list}}…",
@@ -10467,14 +12057,24 @@
10467
12057
  "generic": "Los servicios relacionados pueden detenerse",
10468
12058
  "purgeData": "Las rutas de datos se eliminarán",
10469
12059
  "protectedSkipped": "Se omiten los componentes protegidos",
10470
- "runtimeStack": "Se eliminarán todas las versiones administradas por panel de este tiempo de ejecución."
12060
+ "runtimeStack": "Se eliminarán todas las versiones administradas por panel de este tiempo de ejecución.",
12061
+ "containers": "Los contenedores en ejecución se detendrán",
12062
+ "validators": "Las pilas de validador que usan Docker Compose se detendrán"
10471
12063
  },
10472
12064
  "requestCancel": "Solicitar cancelar",
10473
12065
  "cancelling": "Cancelado…",
10474
12066
  "dockCancelling": "Cancelando · {{title}}",
10475
12067
  "dockCancelled": "Cancelado · {{title}}",
10476
12068
  "cancelHint": "Cancelar solicitado. El cliente dejó de escuchar; el anfitrión puede finalizar el apto/paso actual. Vuelva a sondear el estado después de un momento.",
10477
- "cancelledToast": "Operación cancelada (el cliente dejó de transmitir)"
12069
+ "cancelledToast": "Operación cancelada (el cliente dejó de transmitir)",
12070
+ "kindApply": "Aplicar",
12071
+ "kindScan": "Escanear",
12072
+ "kindDeploy": "Desplegar",
12073
+ "kindRuntime": "Tiempo de ejecución",
12074
+ "jobDone": "Terminado · {{title}}",
12075
+ "jobFailed": "Fallido · {{title}}",
12076
+ "uninstallUfwWarn": "Quitar UFW deja este host sin el cortafuegos de puertos gestionado por el panel.",
12077
+ "uninstallFail2banWarn": "Quitar fail2ban detiene las jails y libera los bloqueos. Si lo conserva, añada su IP de inicio a ignoreip."
10478
12078
  },
10479
12079
  "sqlEngineHealth": {
10480
12080
  "finding": {
@@ -10690,7 +12290,18 @@
10690
12290
  "requestDone": "Solicitud de certificado completada",
10691
12291
  "requestFailed": "La solicitud de certificado no tuvo éxito",
10692
12292
  "applyFailed": "Solicitud fallida",
10693
- "deletedCert": "Eliminado {{domain}}"
12293
+ "deletedCert": "Eliminado {{domain}}",
12294
+ "uninstallCertbotWarn": "La eliminación de certbot detiene la renovación automática de los certificados Let's Encrypt existentes.",
12295
+ "renew": "Renovar",
12296
+ "renewFor": "Renovar Let's Encrypt para {{domain}}",
12297
+ "domainRequired": "Introduzca un dominio.",
12298
+ "domainInvalid": "El formato del dominio no es válido.",
12299
+ "domainKnownHint": "Elija un dominio de proyecto, DNS o correo, o escriba uno.",
12300
+ "deleteNeedDomain": "Eliminar este certificado: escriba el nombre de dominio para confirmar",
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": "¿Confirmar purga? Las rutas de datos registradas (bases de datos/correo) se eliminarán permanentemente.",
@@ -10705,39 +12316,62 @@
10705
12316
  "componentsTitle": "Componentes para instalar",
10706
12317
  "dryRun": "Vista previa del ensayo",
10707
12318
  "installNow": "Instalar ahora",
10708
- "uninstallHint": "Seleccionar paquetes para eliminar",
12319
+ "uninstallHint": "Seleccione los paquetes a quitar. Sin selección no se puede quitar. Los datos se conservan por defecto.",
10709
12320
  "dataPolicy": "Política de datos",
10710
12321
  "keepData": "Mantener datos",
10711
12322
  "purgeData": "Purgar datos",
10712
- "uninstallNow": "Desinstalar ahora"
12323
+ "uninstallNow": "Desinstalar ahora",
12324
+ "uninstallNeedSelect": "Seleccione al menos un paquete. La selección vacía ya no significa eliminar todo.",
12325
+ "uninstallConfirmTitle": "¿Eliminar paquetes seleccionados?",
12326
+ "uninstallConfirmDesc": "{{count}} se eliminarán los paquetes. Escriba ELIMINAR para confirmar.",
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": "Creador, donación y YSK Limited: producto gratuito, ayuda real",
10717
- "creatorTitle": "Creator",
10718
- "creatorBody": "YSK Server está diseñado como un plano de control de host único, honesto y gratuito para operadores que desean ser dueños de su pila. El proyecto se mantiene al aire libre; Los comentarios y los informes de errores lo mantienen actualizado.",
10719
- "donateTitle": "Apoyar / Donar",
10720
- "donateBody": "Si YSK Server le ahorra tiempo, considere patrocinar el desarrollo. Cada contribución ayuda a que el producto sea gratuito para todos.",
12333
+ "title": "Soporte",
12334
+ "sub": "Creator, donaciones y YSK Limited producto gratuito, ayuda real",
12335
+ "creatorTitle": "Creador",
12336
+ "creatorBody": "YSK Server es un plano de control de un solo host, gratuito y honesto, para operadores que quieren poseer su pila. El proyecto se mantiene en abierto; los comentarios y los informes de errores lo mejoran.",
12337
+ "donateTitle": "Apoyo / Donar",
12338
+ "donateBody": "Si YSK Server le ahorra tiempo, considere patrocinar el desarrollo. Cada contribución ayuda a mantener el producto gratuito para todos.",
10721
12339
  "donateGithub": "Patrocinadores de GitHub",
10722
- "donateOther": "Otras formas de dar",
12340
+ "donateOther": "Otras formas de contribuir",
10723
12341
  "yskTitle": "YSK Limited",
10724
12342
  "yskIntro": "¿Necesita ayuda práctica más allá del panel gratuito? YSK Limited puede ayudar con:",
10725
- "yskSvc1": "Configuración, refuerzo y operaciones continuas del servidor",
10726
- "yskSvc2": "Diseño de stack de hosting (web, correo, DNS, bases de datos)",
10727
- "yskSvc3": "Migración, automatización e integración personalizada",
10728
- "yskSvc4": "Revisiones de respuesta a incidentes y preparación para la producción",
10729
- "yskNoPrice": "Aquí no figuran precios; contáctenos para una conversación que se adapte a su entorno.",
12343
+ "yskSvc1": "Instalación, endurecimiento y operación continua del servidor",
12344
+ "yskSvc2": "Diseño de pila de hosting (web, correo, DNS, bases de datos)",
12345
+ "yskSvc3": "Migración, automatización e integración a medida",
12346
+ "yskSvc4": "Respuesta a incidentes y revisiones de preparación para producción",
12347
+ "yskNoPrice": "Aquí no hay precios. Contacte para una conversación adaptada a su entorno.",
10730
12348
  "yskWebsite": "ysk.hk",
10731
- "helpTitle": "¿Tienes un problema?",
10732
- "helpBody": "Envíenos un correo electrónico con su sistema operativo, la ruta del registro de instalación y lo que esperaba versus lo que sucedió. Leemos cada mensaje.",
10733
- "docsHint": "La documentación completa se encuentra en el repositorio bajo",
12349
+ "helpTitle": "¿Tiene un problema?",
12350
+ "helpBody": "Escríbanos con su SO, la ruta del registro de instalación y lo que esperaba frente a lo que ocurrió. Leemos todos los mensajes.",
12351
+ "docsHint": "La documentación completa está en el repositorio en",
10734
12352
  "donateLinktree": "Linktree",
10735
- "cryptoTitle": "Manejadores criptográficos/web3",
10736
- "cryptoHint": "Envíe solo en la red coincidente. Vuelva a verificar la dirección antes de enviar.",
10737
- "cryptoNetwork": "Network",
10738
- "cryptoAddress": "Address",
10739
- "copy": "Copy",
10740
- "copied": "Copied"
12353
+ "cryptoTitle": "Cripto / identificadores Web3",
12354
+ "cryptoHint": "Envíe solo en la red correspondiente. Compruebe la dirección antes de enviar.",
12355
+ "cryptoNetwork": "Red",
12356
+ "cryptoAddress": "Dirección",
12357
+ "copy": "Copiar",
12358
+ "copied": "Copiado",
12359
+ "docsLink": "Documentación",
12360
+ "diagTitle": "Resumen diagnóstico",
12361
+ "diagBody": "Copie la versión, ejecútela y aloje datos para pegarlos en un correo electrónico. Este no es un paquete de registro completo.",
12362
+ "diagCopy": "Copiar resumen de diagnóstico",
12363
+ "diagCopied": "Resumen de diagnóstico copiado",
12364
+ "copyTitle": "Copiar {{address}}",
12365
+ "diagCopyTitle": "Copiar versión, EXECUTE y datos del anfitrión",
12366
+ "diagPreview": "Vista previa de lo que se copiará",
12367
+ "diagLoading": "Cargando diagnóstico…",
12368
+ "diagLoadFailed": "No se pudo cargar el diagnóstico",
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": "No se pudieron cargar los datos de exportación",
@@ -10818,7 +12452,18 @@
10818
12452
  "leOk": "Certificado Let's Encrypt obtenido para {{domain}}",
10819
12453
  "leFailed": "Error en la solicitud de certificado: {{detail}}",
10820
12454
  "leHint": "Asegúrese de que DNS A apunte aquí y que se pueda acceder al puerto 80 (o nginx sirve al dominio)",
10821
- "openFirewall": "Si es público: permitir el puerto del panel {{port}}/tcp (Firewall → abrir puerto → Panel 9287)"
12455
+ "openFirewall": "Si es público: permitir el puerto del panel {{port}}/tcp (Firewall → abrir puerto → Panel 9287)",
12456
+ "disableConfirmTitle": "¿Desactivar el panel HTTPS?",
12457
+ "disableConfirmDesc": "El panel servirá HTTP. WebAuthn/Passkey dejará de funcionar hasta que HTTPS vuelva a estar activado.",
12458
+ "disablePasskeyWarn": "Las claves de acceso registradas necesitan HTTPS; fallarán en HTTP.",
12459
+ "disableNeedConfirm": "Requiere confirmación — escriba DISABLE-HTTPS",
12460
+ "listenPublic": "El panel está escuchando en una dirección pública (0.0.0.0/::). Restrinja con un firewall o vincule a 127.0.0.1.",
12461
+ "bootstrapCert": "Este es el certificado de arranque autofirmado: los navegadores lo advertirán. Emita un certificado de confianza para el dominio del panel.",
12462
+ "cliNoSocket": "CLI no tiene un socket HTTP activo; serverHttps se infiere de los sockets de configuración y escucha (ss).",
12463
+ "listenHost": "Escuchar dirección",
12464
+ "currentHost": "Esta sesión",
12465
+ "replaceCert": "Reemplazar con un certificado confiable",
12466
+ "needFqdn": "Need a FQDN (example.com), not a bare hostname"
10822
12467
  },
10823
12468
  "timeNtp": "Tiempo y NTP",
10824
12469
  "clockStatus": "Estado del reloj del sistema",
@@ -10923,7 +12568,25 @@
10923
12568
  "exportPath": "Ruta de exportación",
10924
12569
  "mode": "Modo",
10925
12570
  "managedConf": "Configuración administrada",
10926
- "dryRunFlag": "Ejecución en seco"
12571
+ "dryRunFlag": "Ejecución en seco",
12572
+ "timezoneSearch": "Filtrar zonas horarias...",
12573
+ "resyncNtp": "Volver a sincronizar NTP",
12574
+ "storageSub": "Uso del disco",
12575
+ "syncReloadNeedConfirm": "Requiere confirmación — escribe /etc/nginx/conf.d y recarga Nginx",
12576
+ "nginxLeftover": "Sobrante",
12577
+ "nginxUnused": "Sin uso",
12578
+ "nginxLeftoverHint": "Conf residual (p. ej. public-files). Sigue en la sincronización hasta que actúe.",
12579
+ "nginxUnusedHint": "Conf de stock / catch-all (000-default). Sigue en la sincronización hasta que actúe.",
12580
+ "powerUnlock": "Desbloquear zona de peligro",
12581
+ "powerLock": "Bloquear zona de peligro",
12582
+ "noScheduledPower": "No está programado ningún reinicio o apagado",
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": "Activado",
@@ -11017,7 +12680,9 @@
11017
12680
  "aboutPolicySub": "La escritura de la plantilla y la instalación del sistema son pasos separados. Volver a ejecutar después de la instalación es una operación normal, no es un paso que falta.",
11018
12681
  "policyInstallFull": "Instalar y habilitar: copiar a /etc/systemd/system, daemon-reload, habilitar --now. Necesita root + EJECUTAR.",
11019
12682
  "policyBlockedTitle": "Bloqueado sin privilegios",
11020
- "policyNotEqualTitle": "Los estados no son equivalentes."
12683
+ "policyNotEqualTitle": "Los estados no son equivalentes.",
12684
+ "rawStateHint": "Raw unit state in tooltip",
12685
+ "bootHint": "Whether the unit starts at boot"
11021
12686
  },
11022
12687
  "tabs": {
11023
12688
  "scrollLeft": "Desplazarse por las pestañas hacia la izquierda",
@@ -11057,7 +12722,15 @@
11057
12722
  "stepUpHint": "El inicio de sesión raíz requiere un paso adelante 2FA cuando su cuenta tiene TOTP habilitado.",
11058
12723
  "stepUpTitle": "Confirmar shell raíz",
11059
12724
  "stepUpDesc": "Ingrese su código de autenticación o un código de recuperación.",
11060
- "totpLabel": "TOTP/código de recuperación"
12725
+ "totpLabel": "TOTP/código de recuperación",
12726
+ "sessionStillOpen": "Un shell en vivo todavía está conectado mientras lees esta página.",
12727
+ "rootConfirmTitle": "¿Abrir un shell raíz?",
12728
+ "rootConfirmDesc": "Esta sesión es un PTY raíz sin restricciones en el host. Los comandos son auditados.",
12729
+ "rootConfirmBody": "Continúe únicamente si desea ejecutar comandos de host privilegiados.",
12730
+ "copyAll": "Copiar todo",
12731
+ "copyAllNeedConn": "Conéctese primero: el búfer está vacío mientras está desconectado",
12732
+ "groupSystem": "System",
12733
+ "groupProject": "Project"
11061
12734
  },
11062
12735
  "uiInline": {
11063
12736
  "s27d9daa5": "tiempo de ejecución {{v0}} {{v1}},",
@@ -11357,9 +13030,9 @@
11357
13030
  "applyPanelUpdate": "Aplicar actualización del panel",
11358
13031
  "recheck": "Vuelva a comprobar",
11359
13032
  "aboutScope": "Alcance",
11360
- "aboutScopeV": "Versión del plano de control del servidor ysk · no es una actualización adecuada del sistema completo",
13033
+ "aboutScopeV": "panel ysk-server + servicios de catálogo + tiempos de ejecución + paquetes apt restantes",
11361
13034
  "aboutChannel": "Canal",
11362
- "aboutChannelV": "npm → Lanzamiento de GitHub → paquete.json; aplicar a través de npm install -g o git (YSK_SOURCE_ROOT)",
13035
+ "aboutChannelV": "paquete npm ysk-server versión de GitHub → apps/server/package.json; aplicar: npm i -g ysk-server@version o git (YSK_SOURCE_ROOT)",
11363
13036
  "aboutFail": "Fallos",
11364
13037
  "aboutFailV": "Los canales no disponibles no se informan como actualizados; aplicar necesidades EJECUTAR; git apply necesita reiniciar el servicio",
11365
13038
  "jobsTitle": "Trabajos programados",
@@ -11436,7 +13109,80 @@
11436
13109
  "scanNow": "Escanear ahora",
11437
13110
  "viewUpgradable": "Ver actualizable",
11438
13111
  "installElsewhere": "Para instalar paquetes (Nginx, PHP, bases de datos…), abra la página de funciones correspondientes, no este centro.",
11439
- "status": "Estado"
13112
+ "status": "Estado",
13113
+ "groupService": "Servicios",
13114
+ "groupRuntime": "Tiempos de ejecución",
13115
+ "groupOs": "Paquetes de sistema",
13116
+ "notInstalled": "No instalado",
13117
+ "goToPage": "Abrir página",
13118
+ "hubHint": "Catálogo de software y tiempos de ejecución en este host. Escanee para actualizar.",
13119
+ "intervalDay": "cada día",
13120
+ "intervalDays": "cada {{n}} días",
13121
+ "intervalHour": "cada hora",
13122
+ "intervalHours": "cada {{n}} horas",
13123
+ "intervalMinutes": "cada {{n}} minutos",
13124
+ "intervalSeconds": "cada {{n}} segundos",
13125
+ "availableHint": "Paquetes con un candidato más nuevo del administrador de paquetes.",
13126
+ "servicesHint": "Servicios de catálogo en este host. Abra la página de servicio para instalar.",
13127
+ "runtimeHint": "Tiempos de ejecución en este host. Las actualizaciones de versión se realizan en cada página de tiempo de ejecución.",
13128
+ "needsReboot": "Reiniciar es necesario",
13129
+ "kernelRebootWarn": "La instalación de un nuevo kernel generalmente requiere un reinicio antes de usarlo.",
13130
+ "neverRun": "aún no se ha ejecutado",
13131
+ "scanOsvN": "Escanear + OSV (primero {{n}})",
13132
+ "rebootNeeded": "reiniciar",
13133
+ "kernelRebootHint": "Los paquetes del kernel necesitan reiniciarse después de aplicar",
13134
+ "needApprovalHint": "Abra Disponible y filtre por paquetes que necesitan aprobación",
13135
+ "applyNeedConfirm": "Abre un cuadro de diálogo de confirmación antes de aplicar.",
13136
+ "probeFailed": "Sonda fallida",
13137
+ "notViaApt": "No gestionado por apt: no hay candidato",
13138
+ "noCandidate": "Sin versión candidata",
13139
+ "jobOpenGeo": "página GeoIP",
13140
+ "job": {
13141
+ "protection_probe": {
13142
+ "name": "Sonda de protección",
13143
+ "hint": "Señales de defensa periódicas."
13144
+ },
13145
+ "updates_scan": {
13146
+ "name": "Escaneo de actualizaciones",
13147
+ "hint": "Actualizar inventario de paquetes"
13148
+ },
13149
+ "daily_backup": {
13150
+ "name": "Copia de seguridad diaria",
13151
+ "hint": "Copia de seguridad programada de todos"
13152
+ },
13153
+ "db_temp_expire": {
13154
+ "name": "Caducar usuarios temporales de base de datos",
13155
+ "hint": "Eliminar usuarios de bases de datos temporales caducados"
13156
+ },
13157
+ "defense_auto_ban": {
13158
+ "name": "Prohibición automática de defensa",
13159
+ "hint": "Aplicar marca de prohibición automática"
13160
+ },
13161
+ "defense_geoip_update": {
13162
+ "name": "Actualización GeoIP",
13163
+ "hint": "Descargar bases de datos GeoIP"
13164
+ },
13165
+ "log_auto_vacuum": {
13166
+ "name": "vacío de troncos",
13167
+ "hint": "retención en diario"
13168
+ },
13169
+ "email_dnsbl": {
13170
+ "name": "Correo electrónico DNSBL",
13171
+ "hint": "Comprobación DNSBL de correo"
13172
+ },
13173
+ "validators_upgrade_scan": {
13174
+ "name": "Validators upgrade scan",
13175
+ "hint": "Check validator image / binary updates"
13176
+ }
13177
+ },
13178
+ "applyPanelAlreadyLatest": "Ya la última versión del panel.",
13179
+ "panelRestarting": "El panel se está reiniciando para cargar la nueva versión…",
13180
+ "panelRestarted": "El panel ha vuelto · {{version}}",
13181
+ "panelRestartWait": "Actualización aplicada. Si esta página no se actualiza, recarga en unos segundos.",
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}} usuarios",
@@ -11558,7 +13304,350 @@
11558
13304
  "securityClearTotpHint": "Requiere un paso adelante",
11559
13305
  "securityClearConfirm": "Escriba el nombre de usuario para confirmar la eliminación de 2FA",
11560
13306
  "securityClearOk": "Se completó 2FA para {{name}}",
11561
- "securitySelfNote": "Para configurar su propia 2FA, abra Seguridad → Mi seguridad."
13307
+ "securitySelfNote": "Para configurar su propia 2FA, abra Seguridad → Mi seguridad.",
13308
+ "cannotDeleteSelf": "No puede eliminar la cuenta con la que ha iniciado sesión",
13309
+ "cannotModifySelf": "No puede suspender ni degradar la cuenta con la que ha iniciado sesión",
13310
+ "cannotDeleteLastAdmin": "No se puede eliminar el último administrador",
13311
+ "cannotDemoteLastAdmin": "No se puede suspender ni degradar al último administrador",
13312
+ "lockSelfHint": "Esta es la cuenta con la que ha iniciado sesión. Eliminar, suspender y cambiar el rol están bloqueados para evitar el bloqueo.",
13313
+ "lockLastAdminHint": "Este es el último administrador. Eliminar, suspender y degradar están bloqueados.",
13314
+ "demoteAdminTitle": "¿Degradar a este administrador?",
13315
+ "demoteAdminDesc": "Este usuario perderá el acceso completo de administrador. Confirme que queda otro administrador.",
13316
+ "searchPkgPh": "Nombre del paquete",
13317
+ "quotaNonNeg": "Los conteos y cuotas no pueden ser negativos.",
13318
+ "diskQuotaHint": "Los ajustes preestablecidos son GiB; La caja personalizada es MiB.",
13319
+ "bandwidthHint": "0 significa ilimitado.",
13320
+ "impersonateHint": "Abre una sesión como este usuario. Utilice el menú de cuenta para salir de la suplantación.",
13321
+ "operatorHighRiskHint": "El operador de fábrica incluye escrituras de alto riesgo. Estrecharlo solo afecta cuentas nuevas; cambiar el valor predeterminado afecta a los operadores existentes.",
13322
+ "cannotImpersonateSelf": "Ya has iniciado sesión como esta cuenta",
13323
+ "singleAdminNo2fa": "Este host tiene un único administrador y 2FA está desactivado: habilite 2FA y agregue un administrador de respaldo.",
13324
+ "enableAdmin2fa": "Enable admin 2FA",
13325
+ "addBackupAdmin": "Add a backup admin"
13326
+ },
13327
+ "validators": {
13328
+ "title": "Validadores (Beta)",
13329
+ "subtitle": "Instala y gestiona nodos L1 en este host. No custodial: tú conservas las claves.",
13330
+ "beta": "Beta",
13331
+ "tab": {
13332
+ "nodes": "Nodos",
13333
+ "disk": "Disco",
13334
+ "about": "Acerca de",
13335
+ "stack": "Software"
13336
+ },
13337
+ "empty": {
13338
+ "title": "Aún no hay nodos validador",
13339
+ "desc": "Crea un nodo de testnet en unos clics."
13340
+ },
13341
+ "refresh": "Actualizar",
13342
+ "disk": {
13343
+ "title": "Disco de validadores",
13344
+ "root": "Directorio de datos",
13345
+ "free": "Libre",
13346
+ "used": "Usado",
13347
+ "none": "Aún no hay datos de instancia",
13348
+ "warn": "El uso de disco es alto (70%+)",
13349
+ "danger": "El uso de disco es crítico (85%+)",
13350
+ "autoClear": "Vaciar automáticamente la instancia detenida más grande cuando el disco es crítico (desactivado por defecto)",
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": "Red principal",
13382
+ "fuji": "Fuji",
13383
+ "testnet": "Red de pruebas",
13384
+ "preview": "Avance",
13385
+ "preprod": "preproducción",
13386
+ "westend": "Westend"
13387
+ },
13388
+ "networkKind": {
13389
+ "testnet": "Red de pruebas",
13390
+ "mainnet": "Red principal",
13391
+ "mixed": "Mainnet + testnet"
13392
+ },
13393
+ "profile": {
13394
+ "minimal": "Mínimo",
13395
+ "pruned": "Pruned",
13396
+ "validator-ready": "Listo para validador",
13397
+ "rpc": "RPC"
13398
+ },
13399
+ "col": {
13400
+ "id": "ID",
13401
+ "chain": "Cadena",
13402
+ "network": "Red",
13403
+ "profile": "Perfil",
13404
+ "status": "Estado",
13405
+ "disk": "Disco"
13406
+ },
13407
+ "cli": {
13408
+ "usage": "Uso: 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": "Cliente de ejecución",
13412
+ "cl": "Cliente de consenso"
13413
+ },
13414
+ "mithril": {
13415
+ "label": "Restaurar primero desde instantánea Mithril (recomendado en testnet)",
13416
+ "action": "Restaurar con Mithril"
13417
+ },
13418
+ "errors": {
13419
+ "notFound": "Instancia de validador no encontrada",
13420
+ "invalidId": "Id de instancia no válido",
13421
+ "diskLow": "No hay disco libre suficiente para esta cadena, red y perfil",
13422
+ "diskUnknownMainnet": "No se puede medir el disco libre; se rechaza crear en red principal",
13423
+ "needDocker": "Se requiere Docker Compose y no se encontró",
13424
+ "composeFailed": "docker compose falló",
13425
+ "needConfirm": "Vaciar exige confirm=id de instancia o CLEAR",
13426
+ "mithrilAdaOnly": "La restauración Mithril solo está disponible para Cardano",
13427
+ "needMithrilConfirm": "Mithril exige confirm=id de instancia o MITHRIL",
13428
+ "mithrilBlocked": "El docker run de Mithril fue bloqueado por la lista permitida",
13429
+ "mithrilKey": "No se pudo cargar la clave de verificación genesis de Mithril",
13430
+ "mithrilFailed": "Falló la descarga de la instantánea Mithril",
13431
+ "pruneFailed": "La limpieza falló",
13432
+ "switchNeedStop": "Detén el nodo antes de cambiar de red",
13433
+ "switchNeedClear": "Cambiar de red borra los datos de cadena. Confirma con el id de instancia o CLEAR",
13434
+ "composeMissing": "No se encontró el archivo Compose",
13435
+ "composeNotManaged": "Se rechaza escribir un archivo Compose que no gestiona YSK",
13436
+ "badDataPath": "La ruta de datos debe ser un directorio absoluto fuera de las rutas del sistema",
13437
+ "portInUse": "Ese puerto RPC ya lo usa otra instancia de validador",
13438
+ "snapshotUnsupported": "No hay origen de instantánea permitido para esta cadena",
13439
+ "snapshotLookup": "No se pudo resolver el puntero oficial de instantánea",
13440
+ "needSnapshotConfirm": "Restaurar instantánea exige confirm=id de instancia o SNAPSHOT",
13441
+ "snapshotBlocked": "El docker run de instantánea fue bloqueado por la lista permitida",
13442
+ "snapshotFailed": "Falló la descarga o extracción de la instantánea"
13443
+ },
13444
+ "notes": {
13445
+ "beta": "Esta función es Beta. Los cambios de host necesitan root y YSK_EXECUTE=1.",
13446
+ "noKeys": "YSK Server nunca genera ni guarda claves de staking.",
13447
+ "dockerSoon": "Install and start from this page wizard. Host changes need root and YSK_EXECUTE=1.",
13448
+ "dryCreate": "Se escribió la especificación y el compose (dry-run). Pasa --execute y YSK_EXECUTE=1 para iniciar contenedores.",
13449
+ "dryStart": "El arranque es dry-run. Pasa --execute y YSK_EXECUTE=1.",
13450
+ "dryStop": "La parada es dry-run. Pasa --execute y YSK_EXECUTE=1.",
13451
+ "dryClear": "El vaciado es dry-run. Pasa --execute y YSK_EXECUTE=1.",
13452
+ "created": "Nodo creado y compose iniciado",
13453
+ "started": "Nodo iniciado",
13454
+ "stopped": "Nodo detenido",
13455
+ "cleared": "Datos de cadena vaciados",
13456
+ "dryMithril": "La restauración Mithril es dry-run. Pasa --execute y YSK_EXECUTE=1.",
13457
+ "mithril": "Instantánea Mithril restaurada; nodo reiniciado",
13458
+ "dryPrune": "La limpieza es dry-run. Pasa --execute y YSK_EXECUTE=1.",
13459
+ "pruned": "Imágenes no usadas del proyecto limpiadas",
13460
+ "pruneProfile": "La poda nativa del cliente es el perfil pruned/minimal. Recrea para cambiarlo.",
13461
+ "sameNetwork": "Ya está en esa red",
13462
+ "drySwitch": "El cambio de red es dry-run.",
13463
+ "switched": "Red cambiada y datos de cadena vaciados",
13464
+ "dryCompose": "Se escribiría compose.yml",
13465
+ "composeWrote": "Se escribió compose.yml",
13466
+ "statsEmpty": "No hay contenedores en ejecución para medir",
13467
+ "autoClearNone": "No hay instancia detenida para vaciar automáticamente",
13468
+ "drySnapshot": "La restauración de instantánea es dry-run. Pasa --execute y YSK_EXECUTE=1.",
13469
+ "snapshotEthEl": "Archivo EL de ethPandaOps restaurado y CL restablecido para checkpoint sync",
13470
+ "snapshotEthCl": "Datos CL restablecidos para el checkpoint sync oficial",
13471
+ "snapshotNear": "Datos NEAR borrados; compose reinicializará con genesis oficial y epoch sync",
13472
+ "nativePrune": "Se ejecutó la poda nativa del cliente",
13473
+ "dryDelete": "Delete is dry-run. Pass --execute and YSK_EXECUTE=1.",
13474
+ "deleted": "Node deleted",
13475
+ "leftoverRemoved": "Removed leftover {{path}}"
13476
+ },
13477
+ "create": "Crear nodo",
13478
+ "wizard": {
13479
+ "title": "Crear nodo",
13480
+ "back": "Atrás",
13481
+ "next": "Siguiente",
13482
+ "install": "Instalar",
13483
+ "mainnetWarn": "La red principal necesita mucho disco libre (ETH suele ser 800 GiB+). Se recomienda testnet.",
13484
+ "mainnetAck": "Entiendo el riesgo de disco y slashing. Continuar en red principal.",
13485
+ "heavyWarn": "Esta cadena es pesada (mucho disco y IOPS altos). Solana en red principal suele necesitar 2 TiB+.",
13486
+ "memory": "Límite de memoria (p. ej. 4g)",
13487
+ "cpus": "Límite de CPU (p. ej. 2.0)",
13488
+ "dataPath": "Ruta de datos (opcional)",
13489
+ "rpcPort": "Puerto RPC (opcional)",
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": "Detalles",
13528
+ "start": "Iniciar",
13529
+ "stop": "Detener",
13530
+ "restart": "Reiniciar",
13531
+ "clear": "Vaciar",
13532
+ "upgrade": "Actualizar",
13533
+ "clearConfirm": "Escribe el id de instancia o CLEAR",
13534
+ "prune": "Limpiar imágenes",
13535
+ "switchNetwork": "Cambiar red",
13536
+ "removeUnit": "También eliminar compose / registro de instancia",
13537
+ "restoreAfter": "Restaurar instantánea tras vaciar",
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": "Política de actualización",
13555
+ "manual": "A mano",
13556
+ "notify": "Notificar",
13557
+ "auto-safe": "Automático (seguro)",
13558
+ "auto-all": "Automático (todo)"
13559
+ },
13560
+ "logs": {
13561
+ "empty": "Aún no hay registros",
13562
+ "follow": "Seguir registros"
13563
+ },
13564
+ "compose": {
13565
+ "label": "Archivo Compose",
13566
+ "save": "Guardar compose"
13567
+ },
13568
+ "snapshot": {
13569
+ "action": "Restaurar instantánea",
13570
+ "mithril": "Cardano usa Mithril para restaurar instantáneas certificadas.",
13571
+ "eth": "Ethereum en red principal arranca con checkpoint sync oficial del cliente de consenso. El EL sigue con snap sync.",
13572
+ "ethEl": "Hoodi/Sepolia pueden restaurar un archivo EL de ethPandaOps y luego hacer checkpoint-sync del CL.",
13573
+ "avax": "Avalanche usa state-sync en el perfil compose.",
13574
+ "near": "Las instantáneas tar gratuitas oficiales de NEAR se retiraron. Restaurar borra datos y usa genesis oficial más epoch sync.",
13575
+ "none": "No hay origen de instantánea configurado para esta cadena."
13576
+ },
13577
+ "stake": {
13578
+ "title": "Preparar staking (tú conservas las claves)",
13579
+ "offlineKeys": "Genera las claves sin conexión. El panel nunca las guarda.",
13580
+ "deposit": "Completa el depósito / registro en el launchpad oficial.",
13581
+ "withdrawal": "Configura tú mismo las credenciales de retirada.",
13582
+ "monitor": "Vigila disco, pares e insignias de actualización en esta página."
13583
+ },
13584
+ "alerts": {
13585
+ "diskTitle": "Disco de validador crítico",
13586
+ "diskBody": "El espacio libre del volumen de datos del validador es crítico.",
13587
+ "upgradeTitle": "Hay una actualización de validador",
13588
+ "upgradeBody": "Uno o más clientes de nodo tienen una versión fijada más nueva.",
13589
+ "syncTitle": "El nodo validador necesita atención",
13590
+ "syncBody": "Un nodo lleva más de 6 horas sincronizando o ha informado un error.",
13591
+ "rollbackTitle": "Actualización de validador revertida",
13592
+ "rollbackBody": "La actualización de {{id}} falló la comprobación de salud y se revirtió."
13593
+ },
13594
+ "upgrade": {
13595
+ "changelog": "Registro de cambios"
13596
+ },
13597
+ "readiness": {
13598
+ "dockerTitle": "Docker para nodos validador",
13599
+ "dockerOk": "{{count}} instancia(s) de validador; Docker está instalado",
13600
+ "dockerMissing": "Hay instancias de validador pero no se encontró el comando 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": "Servidor y cliente VNC",
@@ -11804,15 +13893,31 @@
11804
13893
  "stackMissingShort": "No instalado",
11805
13894
  "editClientTitle": "Editar cliente remoto",
11806
13895
  "editClientDesc": "Actualice la ruta, los hosts y la contraseña almacenada opcional.",
11807
- "clientUpdated": "Perfil de cliente actualizado"
13896
+ "clientUpdated": "Perfil de cliente actualizado",
13897
+ "rememberNeedPassword": "Primero ingrese una contraseña.",
13898
+ "settingsNeedStack": "Estos valores predeterminados se aplican cuando se instala TigerVNC (y XFCE si se selecciona). Instálelos primero en la pestaña Instalar.",
13899
+ "clientNeedNovnc": "Abrir en el navegador no necesita VNC. Instálelo en la pestaña Instalar antes de agregar los controles remotos que espera abrir aquí.",
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": "Servidor y cliente VPN",
11811
13916
  "eyebrow": "VPN",
11812
13917
  "tab": {
11813
- "wireguard": "AlambreGuardia",
13918
+ "wireguard": "WireGuard",
11814
13919
  "openvpn": "OpenVPN",
11815
- "outline": "calcetines de sombra",
13920
+ "outline": "Shadowsocks",
11816
13921
  "client": "Cliente local",
11817
13922
  "software": "Software",
11818
13923
  "monitor": "Monitor",
@@ -11935,6 +14040,21 @@
11935
14040
  "lanCidrs": "Redes LAN",
11936
14041
  "customCidr": "CIDR",
11937
14042
  "addCidr": "Agregar"
11938
- }
14043
+ },
14044
+ "engineNotInstalled": "Este motor VPN no está instalado en el host.",
14045
+ "serverNotListening": "La unidad del servidor no está activa. UDP/TCP {{port}} puede estar cerrado.",
14046
+ "installEngineFirst": "Instale el motor VPN primero",
14047
+ "portHint": {
14048
+ "51820": "Puerto de escucha WireGuard predeterminado",
14049
+ "51821": "Puerto de escucha alternativo de WireGuard",
14050
+ "51822": "Segundo puerto de escucha alternativo de 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
  }