ysk-server-shared 1.0.0 → 1.1.0

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 (766) 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/databases.d.ts +2 -0
  15. package/dist/databases.d.ts.map +1 -1
  16. package/dist/docker.d.ts +134 -0
  17. package/dist/docker.d.ts.map +1 -0
  18. package/dist/docker.js +94 -0
  19. package/dist/docker.js.map +1 -0
  20. package/dist/dto.d.ts +9 -0
  21. package/dist/dto.d.ts.map +1 -1
  22. package/dist/email-domain.d.ts +7 -0
  23. package/dist/email-domain.d.ts.map +1 -1
  24. package/dist/files.d.ts +18 -0
  25. package/dist/files.d.ts.map +1 -1
  26. package/dist/files.js +35 -1
  27. package/dist/files.js.map +1 -1
  28. package/dist/ftp.d.ts +3 -0
  29. package/dist/ftp.d.ts.map +1 -1
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +2 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/migrate.d.ts +6 -0
  35. package/dist/migrate.d.ts.map +1 -1
  36. package/dist/migrate.js.map +1 -1
  37. package/dist/route-capabilities.d.ts +16 -0
  38. package/dist/route-capabilities.d.ts.map +1 -1
  39. package/dist/route-capabilities.js +132 -4
  40. package/dist/route-capabilities.js.map +1 -1
  41. package/dist/system.d.ts +4 -0
  42. package/dist/system.d.ts.map +1 -1
  43. package/dist/validators.d.ts +141 -0
  44. package/dist/validators.d.ts.map +1 -0
  45. package/dist/validators.js +109 -0
  46. package/dist/validators.js.map +1 -0
  47. package/locales/ar/agents.json +11 -1
  48. package/locales/ar/apache.json +5 -1
  49. package/locales/ar/audit.json +4 -1
  50. package/locales/ar/backups.json +20 -1
  51. package/locales/ar/btTracker.json +118 -39
  52. package/locales/ar/catalog.json +8 -8
  53. package/locales/ar/cdn.json +87 -1
  54. package/locales/ar/cli.json +4 -4
  55. package/locales/ar/common.json +8 -1
  56. package/locales/ar/cron.json +30 -1
  57. package/locales/ar/dashboard.json +21 -2
  58. package/locales/ar/db.json +58 -3
  59. package/locales/ar/dns.json +19 -1
  60. package/locales/ar/docker.json +247 -0
  61. package/locales/ar/email.json +47 -11
  62. package/locales/ar/errors.json +5 -2
  63. package/locales/ar/fail2ban.json +38 -13
  64. package/locales/ar/files.json +52 -10
  65. package/locales/ar/firewall.json +19 -10
  66. package/locales/ar/ftp.json +16 -1
  67. package/locales/ar/hostBrowse.json +35 -15
  68. package/locales/ar/listToolbar.json +2 -1
  69. package/locales/ar/login.json +12 -7
  70. package/locales/ar/logs.json +31 -2
  71. package/locales/ar/metrics.json +36 -1
  72. package/locales/ar/migrate.json +14 -1
  73. package/locales/ar/nav.json +11 -4
  74. package/locales/ar/network.json +25 -2
  75. package/locales/ar/notFound.json +6 -0
  76. package/locales/ar/notes.json +213 -61
  77. package/locales/ar/playbooks.json +1 -1
  78. package/locales/ar/projects.json +132 -11
  79. package/locales/ar/protection.json +70 -8
  80. package/locales/ar/publicFiles.json +14 -1
  81. package/locales/ar/rbac.json +15 -2
  82. package/locales/ar/readiness.json +33 -2
  83. package/locales/ar/redis.json +19 -1
  84. package/locales/ar/runtime.json +49 -2
  85. package/locales/ar/search.json +14 -10
  86. package/locales/ar/security.json +66 -7
  87. package/locales/ar/serviceExposure.json +18 -6
  88. package/locales/ar/services.json +61 -3
  89. package/locales/ar/software.json +2 -1
  90. package/locales/ar/softwareLifecycle.json +12 -2
  91. package/locales/ar/ssl.json +12 -1
  92. package/locales/ar/stackWizard.json +9 -2
  93. package/locales/ar/support.json +33 -17
  94. package/locales/ar/system.json +26 -2
  95. package/locales/ar/systemd.json +3 -1
  96. package/locales/ar/terminal.json +9 -1
  97. package/locales/ar/translation.json +2189 -295
  98. package/locales/ar/updates.json +75 -3
  99. package/locales/ar/users.json +19 -1
  100. package/locales/ar/validators.json +266 -0
  101. package/locales/ar/vnc.json +10 -1
  102. package/locales/ar/vpn.json +18 -3
  103. package/locales/bn/agents.json +11 -1
  104. package/locales/bn/apache.json +5 -1
  105. package/locales/bn/audit.json +4 -1
  106. package/locales/bn/backups.json +20 -1
  107. package/locales/bn/btTracker.json +118 -39
  108. package/locales/bn/catalog.json +5 -5
  109. package/locales/bn/cdn.json +87 -1
  110. package/locales/bn/cli.json +2 -2
  111. package/locales/bn/common.json +8 -1
  112. package/locales/bn/cron.json +30 -1
  113. package/locales/bn/dashboard.json +21 -2
  114. package/locales/bn/db.json +58 -3
  115. package/locales/bn/dns.json +19 -1
  116. package/locales/bn/docker.json +247 -0
  117. package/locales/bn/email.json +46 -10
  118. package/locales/bn/errors.json +5 -2
  119. package/locales/bn/fail2ban.json +26 -1
  120. package/locales/bn/files.json +52 -10
  121. package/locales/bn/firewall.json +17 -8
  122. package/locales/bn/ftp.json +16 -1
  123. package/locales/bn/hostBrowse.json +35 -15
  124. package/locales/bn/listToolbar.json +2 -1
  125. package/locales/bn/login.json +13 -8
  126. package/locales/bn/logs.json +31 -2
  127. package/locales/bn/metrics.json +36 -1
  128. package/locales/bn/migrate.json +14 -1
  129. package/locales/bn/nav.json +10 -3
  130. package/locales/bn/network.json +25 -2
  131. package/locales/bn/notFound.json +6 -0
  132. package/locales/bn/notes.json +183 -31
  133. package/locales/bn/projects.json +131 -10
  134. package/locales/bn/protection.json +64 -2
  135. package/locales/bn/publicFiles.json +14 -1
  136. package/locales/bn/rbac.json +15 -2
  137. package/locales/bn/readiness.json +32 -1
  138. package/locales/bn/redis.json +19 -1
  139. package/locales/bn/runtime.json +49 -2
  140. package/locales/bn/search.json +13 -9
  141. package/locales/bn/security.json +66 -7
  142. package/locales/bn/serviceExposure.json +18 -6
  143. package/locales/bn/services.json +60 -2
  144. package/locales/bn/software.json +2 -1
  145. package/locales/bn/softwareLifecycle.json +12 -2
  146. package/locales/bn/ssl.json +12 -1
  147. package/locales/bn/stackWizard.json +9 -2
  148. package/locales/bn/support.json +38 -22
  149. package/locales/bn/system.json +26 -2
  150. package/locales/bn/systemd.json +3 -1
  151. package/locales/bn/terminal.json +9 -1
  152. package/locales/bn/translation.json +2133 -239
  153. package/locales/bn/updates.json +75 -3
  154. package/locales/bn/users.json +19 -1
  155. package/locales/bn/validators.json +266 -0
  156. package/locales/bn/vnc.json +10 -1
  157. package/locales/bn/vpn.json +18 -3
  158. package/locales/en/agents.json +15 -5
  159. package/locales/en/apache.json +4 -0
  160. package/locales/en/audit.json +4 -1
  161. package/locales/en/backups.json +21 -2
  162. package/locales/en/btTracker.json +82 -3
  163. package/locales/en/cdn.json +102 -2
  164. package/locales/en/cli.json +7 -7
  165. package/locales/en/common.json +8 -1
  166. package/locales/en/cron.json +30 -1
  167. package/locales/en/dashboard.json +25 -6
  168. package/locales/en/db.json +64 -8
  169. package/locales/en/dns.json +19 -1
  170. package/locales/en/docker.json +247 -0
  171. package/locales/en/email.json +47 -11
  172. package/locales/en/errors.json +6 -3
  173. package/locales/en/fail2ban.json +31 -6
  174. package/locales/en/files.json +43 -1
  175. package/locales/en/firewall.json +10 -1
  176. package/locales/en/ftp.json +18 -3
  177. package/locales/en/hostBrowse.json +22 -2
  178. package/locales/en/listToolbar.json +2 -1
  179. package/locales/en/login.json +6 -1
  180. package/locales/en/logs.json +33 -4
  181. package/locales/en/metrics.json +37 -2
  182. package/locales/en/migrate.json +14 -1
  183. package/locales/en/nav.json +9 -2
  184. package/locales/en/network.json +25 -2
  185. package/locales/en/notFound.json +6 -0
  186. package/locales/en/notes.json +190 -38
  187. package/locales/en/projects.json +132 -11
  188. package/locales/en/protection.json +66 -3
  189. package/locales/en/publicFiles.json +14 -1
  190. package/locales/en/rbac.json +15 -2
  191. package/locales/en/readiness.json +30 -1
  192. package/locales/en/redis.json +19 -1
  193. package/locales/en/runtime.json +51 -3
  194. package/locales/en/search.json +4 -0
  195. package/locales/en/security.json +68 -9
  196. package/locales/en/serviceExposure.json +13 -1
  197. package/locales/en/services.json +60 -2
  198. package/locales/en/software.json +2 -1
  199. package/locales/en/softwareLifecycle.json +11 -1
  200. package/locales/en/ssl.json +12 -1
  201. package/locales/en/stackWizard.json +9 -2
  202. package/locales/en/support.json +17 -1
  203. package/locales/en/system.json +30 -6
  204. package/locales/en/systemd.json +2 -0
  205. package/locales/en/terminal.json +10 -2
  206. package/locales/en/translation.json +2074 -180
  207. package/locales/en/updates.json +49 -4
  208. package/locales/en/users.json +20 -1
  209. package/locales/en/validators.json +266 -0
  210. package/locales/en/vnc.json +16 -7
  211. package/locales/en/vpn.json +17 -2
  212. package/locales/es/agents.json +11 -1
  213. package/locales/es/apache.json +5 -1
  214. package/locales/es/audit.json +4 -1
  215. package/locales/es/backups.json +20 -1
  216. package/locales/es/btTracker.json +116 -37
  217. package/locales/es/catalog.json +6 -6
  218. package/locales/es/cdn.json +87 -1
  219. package/locales/es/cli.json +2 -2
  220. package/locales/es/common.json +8 -1
  221. package/locales/es/cron.json +30 -1
  222. package/locales/es/dashboard.json +21 -2
  223. package/locales/es/db.json +58 -3
  224. package/locales/es/dns.json +19 -1
  225. package/locales/es/docker.json +247 -0
  226. package/locales/es/email.json +46 -10
  227. package/locales/es/errors.json +5 -2
  228. package/locales/es/fail2ban.json +26 -1
  229. package/locales/es/files.json +51 -9
  230. package/locales/es/firewall.json +17 -8
  231. package/locales/es/ftp.json +16 -1
  232. package/locales/es/hostBrowse.json +33 -13
  233. package/locales/es/listToolbar.json +2 -1
  234. package/locales/es/login.json +12 -7
  235. package/locales/es/logs.json +31 -2
  236. package/locales/es/metrics.json +36 -1
  237. package/locales/es/migrate.json +14 -1
  238. package/locales/es/nav.json +11 -4
  239. package/locales/es/network.json +25 -2
  240. package/locales/es/notFound.json +6 -0
  241. package/locales/es/notes.json +190 -38
  242. package/locales/es/projects.json +131 -10
  243. package/locales/es/protection.json +64 -2
  244. package/locales/es/publicFiles.json +14 -1
  245. package/locales/es/rbac.json +15 -2
  246. package/locales/es/readiness.json +32 -1
  247. package/locales/es/redis.json +19 -1
  248. package/locales/es/runtime.json +49 -2
  249. package/locales/es/search.json +13 -9
  250. package/locales/es/security.json +66 -7
  251. package/locales/es/serviceExposure.json +18 -6
  252. package/locales/es/services.json +60 -2
  253. package/locales/es/software.json +2 -1
  254. package/locales/es/softwareLifecycle.json +12 -2
  255. package/locales/es/ssl.json +12 -1
  256. package/locales/es/stackWizard.json +9 -2
  257. package/locales/es/support.json +37 -21
  258. package/locales/es/system.json +26 -2
  259. package/locales/es/systemd.json +3 -1
  260. package/locales/es/terminal.json +9 -1
  261. package/locales/es/translation.json +2135 -241
  262. package/locales/es/updates.json +75 -3
  263. package/locales/es/users.json +19 -1
  264. package/locales/es/validators.json +266 -0
  265. package/locales/es/vnc.json +10 -1
  266. package/locales/es/vpn.json +18 -3
  267. package/locales/fr/agents.json +11 -1
  268. package/locales/fr/apache.json +5 -1
  269. package/locales/fr/audit.json +4 -1
  270. package/locales/fr/backups.json +20 -1
  271. package/locales/fr/btTracker.json +115 -36
  272. package/locales/fr/catalog.json +6 -6
  273. package/locales/fr/cdn.json +87 -1
  274. package/locales/fr/cli.json +3 -3
  275. package/locales/fr/common.json +8 -1
  276. package/locales/fr/cron.json +30 -1
  277. package/locales/fr/dashboard.json +21 -2
  278. package/locales/fr/db.json +58 -3
  279. package/locales/fr/dns.json +19 -1
  280. package/locales/fr/docker.json +247 -0
  281. package/locales/fr/email.json +44 -8
  282. package/locales/fr/errors.json +5 -2
  283. package/locales/fr/fail2ban.json +27 -2
  284. package/locales/fr/files.json +51 -9
  285. package/locales/fr/firewall.json +13 -4
  286. package/locales/fr/ftp.json +16 -1
  287. package/locales/fr/hostBrowse.json +32 -12
  288. package/locales/fr/listToolbar.json +2 -1
  289. package/locales/fr/login.json +11 -6
  290. package/locales/fr/logs.json +31 -2
  291. package/locales/fr/metrics.json +36 -1
  292. package/locales/fr/migrate.json +14 -1
  293. package/locales/fr/nav.json +11 -4
  294. package/locales/fr/network.json +25 -2
  295. package/locales/fr/notFound.json +6 -0
  296. package/locales/fr/notes.json +186 -34
  297. package/locales/fr/projects.json +129 -8
  298. package/locales/fr/protection.json +64 -2
  299. package/locales/fr/publicFiles.json +14 -1
  300. package/locales/fr/rbac.json +15 -2
  301. package/locales/fr/readiness.json +32 -1
  302. package/locales/fr/redis.json +20 -2
  303. package/locales/fr/runtime.json +49 -2
  304. package/locales/fr/search.json +11 -7
  305. package/locales/fr/security.json +66 -7
  306. package/locales/fr/serviceExposure.json +17 -5
  307. package/locales/fr/services.json +60 -2
  308. package/locales/fr/software.json +2 -1
  309. package/locales/fr/softwareLifecycle.json +12 -2
  310. package/locales/fr/ssl.json +12 -1
  311. package/locales/fr/stackWizard.json +9 -2
  312. package/locales/fr/support.json +37 -21
  313. package/locales/fr/system.json +26 -2
  314. package/locales/fr/systemd.json +3 -1
  315. package/locales/fr/terminal.json +9 -1
  316. package/locales/fr/translation.json +2119 -225
  317. package/locales/fr/updates.json +75 -3
  318. package/locales/fr/users.json +19 -1
  319. package/locales/fr/validators.json +266 -0
  320. package/locales/fr/vnc.json +10 -1
  321. package/locales/fr/vpn.json +17 -2
  322. package/locales/hi/agents.json +11 -1
  323. package/locales/hi/apache.json +5 -1
  324. package/locales/hi/audit.json +4 -1
  325. package/locales/hi/backups.json +20 -1
  326. package/locales/hi/btTracker.json +118 -39
  327. package/locales/hi/catalog.json +7 -7
  328. package/locales/hi/cdn.json +87 -1
  329. package/locales/hi/cli.json +1 -1
  330. package/locales/hi/common.json +8 -1
  331. package/locales/hi/cron.json +30 -1
  332. package/locales/hi/dashboard.json +21 -2
  333. package/locales/hi/db.json +58 -3
  334. package/locales/hi/dns.json +19 -1
  335. package/locales/hi/docker.json +247 -0
  336. package/locales/hi/email.json +46 -10
  337. package/locales/hi/errors.json +5 -2
  338. package/locales/hi/fail2ban.json +29 -4
  339. package/locales/hi/files.json +52 -10
  340. package/locales/hi/firewall.json +17 -8
  341. package/locales/hi/ftp.json +16 -1
  342. package/locales/hi/hostBrowse.json +35 -15
  343. package/locales/hi/listToolbar.json +2 -1
  344. package/locales/hi/login.json +13 -8
  345. package/locales/hi/logs.json +31 -2
  346. package/locales/hi/metrics.json +36 -1
  347. package/locales/hi/migrate.json +14 -1
  348. package/locales/hi/nav.json +11 -4
  349. package/locales/hi/network.json +25 -2
  350. package/locales/hi/notFound.json +6 -0
  351. package/locales/hi/notes.json +188 -36
  352. package/locales/hi/projects.json +132 -11
  353. package/locales/hi/protection.json +65 -3
  354. package/locales/hi/publicFiles.json +14 -1
  355. package/locales/hi/rbac.json +16 -3
  356. package/locales/hi/readiness.json +32 -1
  357. package/locales/hi/redis.json +19 -1
  358. package/locales/hi/runtime.json +49 -2
  359. package/locales/hi/search.json +14 -10
  360. package/locales/hi/security.json +66 -7
  361. package/locales/hi/serviceExposure.json +18 -6
  362. package/locales/hi/services.json +60 -2
  363. package/locales/hi/software.json +2 -1
  364. package/locales/hi/softwareLifecycle.json +12 -2
  365. package/locales/hi/ssl.json +12 -1
  366. package/locales/hi/stackWizard.json +9 -2
  367. package/locales/hi/support.json +36 -20
  368. package/locales/hi/system.json +26 -2
  369. package/locales/hi/systemd.json +3 -1
  370. package/locales/hi/terminal.json +9 -1
  371. package/locales/hi/translation.json +2146 -252
  372. package/locales/hi/updates.json +75 -3
  373. package/locales/hi/users.json +19 -1
  374. package/locales/hi/validators.json +266 -0
  375. package/locales/hi/vnc.json +10 -1
  376. package/locales/hi/vpn.json +19 -4
  377. package/locales/id/agents.json +11 -1
  378. package/locales/id/apache.json +5 -1
  379. package/locales/id/audit.json +4 -1
  380. package/locales/id/backups.json +20 -1
  381. package/locales/id/btTracker.json +116 -37
  382. package/locales/id/catalog.json +6 -6
  383. package/locales/id/cdn.json +87 -1
  384. package/locales/id/cli.json +2 -2
  385. package/locales/id/common.json +8 -1
  386. package/locales/id/cron.json +30 -1
  387. package/locales/id/dashboard.json +21 -2
  388. package/locales/id/db.json +58 -3
  389. package/locales/id/dns.json +19 -1
  390. package/locales/id/docker.json +247 -0
  391. package/locales/id/email.json +46 -10
  392. package/locales/id/errors.json +5 -2
  393. package/locales/id/fail2ban.json +26 -1
  394. package/locales/id/files.json +51 -9
  395. package/locales/id/firewall.json +15 -6
  396. package/locales/id/ftp.json +16 -1
  397. package/locales/id/hostBrowse.json +33 -13
  398. package/locales/id/listToolbar.json +2 -1
  399. package/locales/id/login.json +13 -8
  400. package/locales/id/logs.json +31 -2
  401. package/locales/id/metrics.json +36 -1
  402. package/locales/id/migrate.json +14 -1
  403. package/locales/id/nav.json +10 -3
  404. package/locales/id/network.json +25 -2
  405. package/locales/id/notFound.json +6 -0
  406. package/locales/id/notes.json +185 -33
  407. package/locales/id/projects.json +130 -9
  408. package/locales/id/protection.json +64 -2
  409. package/locales/id/publicFiles.json +14 -1
  410. package/locales/id/rbac.json +15 -2
  411. package/locales/id/readiness.json +32 -1
  412. package/locales/id/redis.json +19 -1
  413. package/locales/id/runtime.json +49 -2
  414. package/locales/id/search.json +13 -9
  415. package/locales/id/security.json +65 -6
  416. package/locales/id/serviceExposure.json +18 -6
  417. package/locales/id/services.json +60 -2
  418. package/locales/id/software.json +2 -1
  419. package/locales/id/softwareLifecycle.json +12 -2
  420. package/locales/id/ssl.json +12 -1
  421. package/locales/id/stackWizard.json +9 -2
  422. package/locales/id/support.json +36 -20
  423. package/locales/id/system.json +26 -2
  424. package/locales/id/systemd.json +3 -1
  425. package/locales/id/terminal.json +9 -1
  426. package/locales/id/translation.json +2125 -231
  427. package/locales/id/updates.json +75 -3
  428. package/locales/id/users.json +19 -1
  429. package/locales/id/validators.json +266 -0
  430. package/locales/id/vnc.json +10 -1
  431. package/locales/id/vpn.json +18 -3
  432. package/locales/ja/agents.json +11 -1
  433. package/locales/ja/apache.json +5 -1
  434. package/locales/ja/audit.json +4 -1
  435. package/locales/ja/backups.json +20 -1
  436. package/locales/ja/btTracker.json +118 -39
  437. package/locales/ja/catalog.json +10 -10
  438. package/locales/ja/cdn.json +87 -1
  439. package/locales/ja/cli.json +3 -3
  440. package/locales/ja/common.json +8 -1
  441. package/locales/ja/cron.json +30 -1
  442. package/locales/ja/dashboard.json +21 -2
  443. package/locales/ja/db.json +58 -3
  444. package/locales/ja/dns.json +19 -1
  445. package/locales/ja/docker.json +247 -0
  446. package/locales/ja/email.json +46 -10
  447. package/locales/ja/errors.json +5 -2
  448. package/locales/ja/fail2ban.json +26 -1
  449. package/locales/ja/files.json +51 -9
  450. package/locales/ja/firewall.json +17 -8
  451. package/locales/ja/ftp.json +16 -1
  452. package/locales/ja/hostBrowse.json +35 -15
  453. package/locales/ja/listToolbar.json +2 -1
  454. package/locales/ja/login.json +11 -6
  455. package/locales/ja/logs.json +31 -2
  456. package/locales/ja/metrics.json +36 -1
  457. package/locales/ja/migrate.json +14 -1
  458. package/locales/ja/nav.json +13 -6
  459. package/locales/ja/network.json +26 -3
  460. package/locales/ja/notFound.json +6 -0
  461. package/locales/ja/notes.json +194 -42
  462. package/locales/ja/projects.json +131 -10
  463. package/locales/ja/protection.json +64 -2
  464. package/locales/ja/publicFiles.json +14 -1
  465. package/locales/ja/rbac.json +15 -2
  466. package/locales/ja/readiness.json +32 -1
  467. package/locales/ja/redis.json +19 -1
  468. package/locales/ja/runtime.json +50 -3
  469. package/locales/ja/search.json +12 -8
  470. package/locales/ja/security.json +66 -7
  471. package/locales/ja/serviceExposure.json +18 -6
  472. package/locales/ja/services.json +60 -2
  473. package/locales/ja/software.json +2 -1
  474. package/locales/ja/softwareLifecycle.json +12 -2
  475. package/locales/ja/ssl.json +12 -1
  476. package/locales/ja/stackWizard.json +9 -2
  477. package/locales/ja/support.json +38 -22
  478. package/locales/ja/system.json +26 -2
  479. package/locales/ja/systemd.json +3 -1
  480. package/locales/ja/terminal.json +9 -1
  481. package/locales/ja/translation.json +2152 -258
  482. package/locales/ja/updates.json +75 -3
  483. package/locales/ja/users.json +19 -1
  484. package/locales/ja/validators.json +266 -0
  485. package/locales/ja/vnc.json +10 -1
  486. package/locales/ja/vpn.json +18 -3
  487. package/locales/ko/agents.json +11 -1
  488. package/locales/ko/apache.json +5 -1
  489. package/locales/ko/audit.json +4 -1
  490. package/locales/ko/backups.json +20 -1
  491. package/locales/ko/btTracker.json +118 -39
  492. package/locales/ko/catalog.json +8 -8
  493. package/locales/ko/cdn.json +87 -1
  494. package/locales/ko/cli.json +2 -2
  495. package/locales/ko/common.json +8 -1
  496. package/locales/ko/cron.json +30 -1
  497. package/locales/ko/dashboard.json +21 -2
  498. package/locales/ko/db.json +58 -3
  499. package/locales/ko/dns.json +19 -1
  500. package/locales/ko/docker.json +247 -0
  501. package/locales/ko/email.json +46 -10
  502. package/locales/ko/errors.json +5 -2
  503. package/locales/ko/fail2ban.json +37 -12
  504. package/locales/ko/files.json +51 -9
  505. package/locales/ko/firewall.json +18 -9
  506. package/locales/ko/ftp.json +16 -1
  507. package/locales/ko/hostBrowse.json +35 -15
  508. package/locales/ko/listToolbar.json +2 -1
  509. package/locales/ko/login.json +10 -5
  510. package/locales/ko/logs.json +31 -2
  511. package/locales/ko/metrics.json +36 -1
  512. package/locales/ko/migrate.json +14 -1
  513. package/locales/ko/nav.json +11 -4
  514. package/locales/ko/network.json +25 -2
  515. package/locales/ko/notFound.json +6 -0
  516. package/locales/ko/notes.json +204 -52
  517. package/locales/ko/playbooks.json +1 -1
  518. package/locales/ko/projects.json +132 -11
  519. package/locales/ko/protection.json +67 -5
  520. package/locales/ko/publicFiles.json +14 -1
  521. package/locales/ko/rbac.json +15 -2
  522. package/locales/ko/readiness.json +33 -2
  523. package/locales/ko/redis.json +19 -1
  524. package/locales/ko/runtime.json +49 -2
  525. package/locales/ko/search.json +13 -9
  526. package/locales/ko/security.json +66 -7
  527. package/locales/ko/serviceExposure.json +18 -6
  528. package/locales/ko/services.json +60 -2
  529. package/locales/ko/software.json +2 -1
  530. package/locales/ko/softwareLifecycle.json +12 -2
  531. package/locales/ko/ssl.json +12 -1
  532. package/locales/ko/stackWizard.json +9 -2
  533. package/locales/ko/support.json +36 -20
  534. package/locales/ko/system.json +26 -2
  535. package/locales/ko/systemd.json +3 -1
  536. package/locales/ko/terminal.json +9 -1
  537. package/locales/ko/translation.json +2171 -277
  538. package/locales/ko/updates.json +75 -3
  539. package/locales/ko/users.json +19 -1
  540. package/locales/ko/validators.json +266 -0
  541. package/locales/ko/vnc.json +10 -1
  542. package/locales/ko/vpn.json +19 -4
  543. package/locales/pt/agents.json +11 -1
  544. package/locales/pt/apache.json +5 -1
  545. package/locales/pt/audit.json +4 -1
  546. package/locales/pt/backups.json +20 -1
  547. package/locales/pt/btTracker.json +116 -37
  548. package/locales/pt/catalog.json +4 -4
  549. package/locales/pt/cdn.json +87 -1
  550. package/locales/pt/cli.json +2 -2
  551. package/locales/pt/common.json +8 -1
  552. package/locales/pt/cron.json +30 -1
  553. package/locales/pt/dashboard.json +21 -2
  554. package/locales/pt/db.json +58 -3
  555. package/locales/pt/dns.json +19 -1
  556. package/locales/pt/docker.json +247 -0
  557. package/locales/pt/email.json +46 -10
  558. package/locales/pt/errors.json +5 -2
  559. package/locales/pt/fail2ban.json +26 -1
  560. package/locales/pt/files.json +51 -9
  561. package/locales/pt/firewall.json +16 -7
  562. package/locales/pt/ftp.json +16 -1
  563. package/locales/pt/hostBrowse.json +35 -15
  564. package/locales/pt/listToolbar.json +2 -1
  565. package/locales/pt/login.json +14 -9
  566. package/locales/pt/logs.json +31 -2
  567. package/locales/pt/metrics.json +36 -1
  568. package/locales/pt/migrate.json +14 -1
  569. package/locales/pt/nav.json +10 -3
  570. package/locales/pt/network.json +25 -2
  571. package/locales/pt/notFound.json +6 -0
  572. package/locales/pt/notes.json +187 -35
  573. package/locales/pt/projects.json +129 -8
  574. package/locales/pt/protection.json +64 -2
  575. package/locales/pt/publicFiles.json +14 -1
  576. package/locales/pt/rbac.json +15 -2
  577. package/locales/pt/readiness.json +32 -1
  578. package/locales/pt/redis.json +19 -1
  579. package/locales/pt/runtime.json +49 -2
  580. package/locales/pt/search.json +11 -7
  581. package/locales/pt/security.json +66 -7
  582. package/locales/pt/serviceExposure.json +17 -5
  583. package/locales/pt/services.json +60 -2
  584. package/locales/pt/software.json +2 -1
  585. package/locales/pt/softwareLifecycle.json +12 -2
  586. package/locales/pt/ssl.json +12 -1
  587. package/locales/pt/stackWizard.json +9 -2
  588. package/locales/pt/support.json +36 -20
  589. package/locales/pt/system.json +26 -2
  590. package/locales/pt/systemd.json +3 -1
  591. package/locales/pt/terminal.json +9 -1
  592. package/locales/pt/translation.json +2125 -231
  593. package/locales/pt/updates.json +75 -3
  594. package/locales/pt/users.json +19 -1
  595. package/locales/pt/validators.json +266 -0
  596. package/locales/pt/vnc.json +10 -1
  597. package/locales/pt/vpn.json +17 -2
  598. package/locales/ur/agents.json +11 -1
  599. package/locales/ur/apache.json +5 -1
  600. package/locales/ur/audit.json +4 -1
  601. package/locales/ur/backups.json +20 -1
  602. package/locales/ur/btTracker.json +118 -39
  603. package/locales/ur/catalog.json +6 -6
  604. package/locales/ur/cdn.json +87 -1
  605. package/locales/ur/cli.json +2 -2
  606. package/locales/ur/common.json +8 -1
  607. package/locales/ur/cron.json +30 -1
  608. package/locales/ur/dashboard.json +21 -2
  609. package/locales/ur/db.json +58 -3
  610. package/locales/ur/dns.json +19 -1
  611. package/locales/ur/docker.json +247 -0
  612. package/locales/ur/email.json +46 -10
  613. package/locales/ur/errors.json +5 -2
  614. package/locales/ur/fail2ban.json +26 -1
  615. package/locales/ur/files.json +52 -10
  616. package/locales/ur/firewall.json +17 -8
  617. package/locales/ur/ftp.json +16 -1
  618. package/locales/ur/hostBrowse.json +35 -15
  619. package/locales/ur/listToolbar.json +2 -1
  620. package/locales/ur/login.json +13 -8
  621. package/locales/ur/logs.json +31 -2
  622. package/locales/ur/metrics.json +36 -1
  623. package/locales/ur/migrate.json +14 -1
  624. package/locales/ur/nav.json +10 -3
  625. package/locales/ur/network.json +25 -2
  626. package/locales/ur/notFound.json +6 -0
  627. package/locales/ur/notes.json +183 -31
  628. package/locales/ur/projects.json +131 -10
  629. package/locales/ur/protection.json +64 -2
  630. package/locales/ur/publicFiles.json +14 -1
  631. package/locales/ur/rbac.json +15 -2
  632. package/locales/ur/readiness.json +32 -1
  633. package/locales/ur/redis.json +19 -1
  634. package/locales/ur/runtime.json +49 -2
  635. package/locales/ur/search.json +13 -9
  636. package/locales/ur/security.json +66 -7
  637. package/locales/ur/serviceExposure.json +18 -6
  638. package/locales/ur/services.json +60 -2
  639. package/locales/ur/software.json +2 -1
  640. package/locales/ur/softwareLifecycle.json +12 -2
  641. package/locales/ur/ssl.json +12 -1
  642. package/locales/ur/stackWizard.json +9 -2
  643. package/locales/ur/support.json +37 -21
  644. package/locales/ur/system.json +26 -2
  645. package/locales/ur/systemd.json +3 -1
  646. package/locales/ur/terminal.json +9 -1
  647. package/locales/ur/translation.json +2134 -240
  648. package/locales/ur/updates.json +75 -3
  649. package/locales/ur/users.json +19 -1
  650. package/locales/ur/validators.json +266 -0
  651. package/locales/ur/vnc.json +10 -1
  652. package/locales/ur/vpn.json +19 -4
  653. package/locales/zh-CN/agents.json +11 -1
  654. package/locales/zh-CN/apache.json +6 -2
  655. package/locales/zh-CN/audit.json +4 -1
  656. package/locales/zh-CN/backups.json +20 -1
  657. package/locales/zh-CN/btTracker.json +82 -3
  658. package/locales/zh-CN/catalog.json +2 -2
  659. package/locales/zh-CN/cdn.json +87 -1
  660. package/locales/zh-CN/cli.json +5 -5
  661. package/locales/zh-CN/common.json +8 -1
  662. package/locales/zh-CN/cron.json +30 -1
  663. package/locales/zh-CN/dashboard.json +22 -3
  664. package/locales/zh-CN/db.json +59 -4
  665. package/locales/zh-CN/dns.json +19 -1
  666. package/locales/zh-CN/docker.json +247 -0
  667. package/locales/zh-CN/email.json +46 -10
  668. package/locales/zh-CN/errors.json +5 -2
  669. package/locales/zh-CN/fail2ban.json +31 -6
  670. package/locales/zh-CN/files.json +45 -3
  671. package/locales/zh-CN/firewall.json +11 -2
  672. package/locales/zh-CN/ftp.json +16 -1
  673. package/locales/zh-CN/hostBrowse.json +21 -1
  674. package/locales/zh-CN/listToolbar.json +2 -1
  675. package/locales/zh-CN/login.json +6 -1
  676. package/locales/zh-CN/logs.json +36 -7
  677. package/locales/zh-CN/metrics.json +36 -1
  678. package/locales/zh-CN/migrate.json +14 -1
  679. package/locales/zh-CN/nav.json +10 -3
  680. package/locales/zh-CN/network.json +26 -3
  681. package/locales/zh-CN/nginx.json +1 -1
  682. package/locales/zh-CN/notFound.json +6 -0
  683. package/locales/zh-CN/notes.json +177 -25
  684. package/locales/zh-CN/projects.json +128 -7
  685. package/locales/zh-CN/protection.json +64 -2
  686. package/locales/zh-CN/publicFiles.json +14 -1
  687. package/locales/zh-CN/rbac.json +15 -2
  688. package/locales/zh-CN/readiness.json +33 -2
  689. package/locales/zh-CN/redis.json +19 -1
  690. package/locales/zh-CN/runtime.json +50 -3
  691. package/locales/zh-CN/search.json +5 -1
  692. package/locales/zh-CN/security.json +66 -7
  693. package/locales/zh-CN/serviceExposure.json +13 -1
  694. package/locales/zh-CN/services.json +60 -2
  695. package/locales/zh-CN/software.json +2 -1
  696. package/locales/zh-CN/softwareLifecycle.json +12 -2
  697. package/locales/zh-CN/ssl.json +12 -1
  698. package/locales/zh-CN/stackWizard.json +9 -2
  699. package/locales/zh-CN/support.json +18 -2
  700. package/locales/zh-CN/system.json +27 -3
  701. package/locales/zh-CN/systemd.json +3 -1
  702. package/locales/zh-CN/terminal.json +9 -1
  703. package/locales/zh-CN/translation.json +2040 -146
  704. package/locales/zh-CN/updates.json +75 -3
  705. package/locales/zh-CN/users.json +19 -1
  706. package/locales/zh-CN/validators.json +266 -0
  707. package/locales/zh-CN/vnc.json +10 -1
  708. package/locales/zh-CN/vpn.json +19 -4
  709. package/locales/zh-HK/agents.json +17 -7
  710. package/locales/zh-HK/apache.json +6 -2
  711. package/locales/zh-HK/audit.json +4 -1
  712. package/locales/zh-HK/backups.json +21 -2
  713. package/locales/zh-HK/btTracker.json +86 -7
  714. package/locales/zh-HK/catalog.json +2 -2
  715. package/locales/zh-HK/cdn.json +89 -3
  716. package/locales/zh-HK/cli.json +15 -15
  717. package/locales/zh-HK/common.json +8 -1
  718. package/locales/zh-HK/cron.json +34 -5
  719. package/locales/zh-HK/dashboard.json +25 -6
  720. package/locales/zh-HK/db.json +65 -10
  721. package/locales/zh-HK/dns.json +19 -1
  722. package/locales/zh-HK/docker.json +247 -0
  723. package/locales/zh-HK/email.json +61 -25
  724. package/locales/zh-HK/errors.json +6 -3
  725. package/locales/zh-HK/fail2ban.json +32 -7
  726. package/locales/zh-HK/files.json +47 -5
  727. package/locales/zh-HK/firewall.json +13 -4
  728. package/locales/zh-HK/ftp.json +18 -3
  729. package/locales/zh-HK/hostBrowse.json +22 -2
  730. package/locales/zh-HK/listToolbar.json +2 -1
  731. package/locales/zh-HK/login.json +7 -2
  732. package/locales/zh-HK/logs.json +40 -11
  733. package/locales/zh-HK/metrics.json +38 -3
  734. package/locales/zh-HK/migrate.json +13 -0
  735. package/locales/zh-HK/nav.json +12 -5
  736. package/locales/zh-HK/network.json +30 -7
  737. package/locales/zh-HK/nginx.json +2 -2
  738. package/locales/zh-HK/notFound.json +6 -0
  739. package/locales/zh-HK/notes.json +228 -76
  740. package/locales/zh-HK/projects.json +142 -21
  741. package/locales/zh-HK/protection.json +65 -3
  742. package/locales/zh-HK/publicFiles.json +16 -3
  743. package/locales/zh-HK/rbac.json +15 -2
  744. package/locales/zh-HK/readiness.json +35 -4
  745. package/locales/zh-HK/redis.json +22 -4
  746. package/locales/zh-HK/runtime.json +58 -11
  747. package/locales/zh-HK/search.json +5 -1
  748. package/locales/zh-HK/security.json +77 -18
  749. package/locales/zh-HK/serviceExposure.json +13 -1
  750. package/locales/zh-HK/services.json +61 -3
  751. package/locales/zh-HK/software.json +2 -1
  752. package/locales/zh-HK/softwareLifecycle.json +12 -2
  753. package/locales/zh-HK/ssl.json +13 -2
  754. package/locales/zh-HK/stackWizard.json +10 -3
  755. package/locales/zh-HK/support.json +22 -6
  756. package/locales/zh-HK/system.json +30 -6
  757. package/locales/zh-HK/systemd.json +9 -7
  758. package/locales/zh-HK/terminal.json +10 -2
  759. package/locales/zh-HK/translation.json +2238 -344
  760. package/locales/zh-HK/uiInline.json +3 -3
  761. package/locales/zh-HK/updates.json +76 -4
  762. package/locales/zh-HK/users.json +20 -2
  763. package/locales/zh-HK/validators.json +266 -0
  764. package/locales/zh-HK/vnc.json +16 -7
  765. package/locales/zh-HK/vpn.json +23 -8
  766. package/package.json +1 -1
@@ -130,7 +130,17 @@
130
130
  "labelStderr": "표준 오류",
131
131
  "labelAckCli": "ack + CLI JSON",
132
132
  "labelStdoutBody": "CLI 표준 출력 본문",
133
- "resultOuterHint": "외부 결과는 CLI --json stdout입니다."
133
+ "resultOuterHint": "외부 결과는 CLI --json stdout입니다.",
134
+ "statusFlowTitle": "상태 흐름",
135
+ "statusFlow": "등록만 → 온라인 → 오래된(60초 이상) → 오프라인(연결 끊김). 필터 \"오프라인\"이 연결 해제되었습니다.",
136
+ "colSession": "세션 UUID",
137
+ "copySession": "클러스터/CLI --session에 대한 세션 UUID 복사",
138
+ "staleFor": "보이지 않음 {{age}}",
139
+ "commandTitle": "이 세션에 대한 명령을 대기열에 넣습니다.",
140
+ "historyTitleShort": "명령 기록 열기(읽기 전용)",
141
+ "expEdge": "가장자리에서:",
142
+ "noteAllowlist": "Agent tool calls must pass the allowlist.",
143
+ "noteRbacCap": "Agent role is capped at write-low."
134
144
  },
135
145
  "ai": {
136
146
  "status": {
@@ -248,7 +258,11 @@
248
258
  "cleanupConflicts": "깨끗한 충돌 잔차",
249
259
  "cleanupConflictsTitle": "모든 충돌 잔여물을 청소하시겠습니까?",
250
260
  "cleanupConflictsDesc": "프로젝트 또는 독립 실행형 ServerName과 충돌하는 모든 디스크상의 아티팩트 구성을 제거하십시오. 프로젝트 행은 유지됩니다.",
251
- "artifactRemovedOk": "잔여 conf가 제거되었습니다."
261
+ "artifactRemovedOk": "잔여 conf가 제거되었습니다.",
262
+ "sslTerminatedUpstream": "TLS는 전면 Nginx에서 끝납니다.",
263
+ "removeArtifactHint": "이 잔여 디스크 conf만 삭제하며 프로젝트는 지우지 않습니다.",
264
+ "sourceOrphan": "Leftover",
265
+ "orphanSite": "Project gone"
252
266
  },
253
267
  "applyStatus": {
254
268
  "draft": "초안",
@@ -285,7 +299,10 @@
285
299
  "project.publish": "Nginx 게시",
286
300
  "project.suspend": "프로젝트 일시 중단",
287
301
  "software.install": "소프트웨어 설치",
288
- "software.update": "소프트웨어 업데이트"
302
+ "software.update": "소프트웨어 업데이트",
303
+ "backup.restore": "Backup restore",
304
+ "backup.run": "Backup run",
305
+ "backup.delete": "Backup deleted"
289
306
  }
290
307
  },
291
308
  "backups": {
@@ -419,20 +436,39 @@
419
436
  "remotePushSub": "로컬 tar가 성공한 후 SFTP, 로컬 경로 또는 S3로 푸시합니다.",
420
437
  "accessKey": "액세스 키",
421
438
  "secretKey": "비밀키",
422
- "overwriteConfirmHint": "덮어쓰기를 확인하려면 OVERWRITE를 입력하세요."
439
+ "overwriteConfirmHint": "덮어쓰기를 확인하려면 OVERWRITE를 입력하세요.",
440
+ "testRemote": "대상 테스트",
441
+ "testRemoteDone": "원격 탐침 완료",
442
+ "testRemoteFailed": "원격 탐침 실패",
443
+ "resticRepoPh": "패널 데이터 디렉토리 / Restic-repo",
444
+ "testDisabledHint": "테스트하기 전에 원격 푸시를 켜십시오.",
445
+ "identityId": "아웃바운드 SSH ID",
446
+ "identityHint": "우선의. /security SSH와 동일한 볼트입니다. 비밀번호에는 sshpass가 필요합니다.",
447
+ "identityNone": "없음 — 비밀번호 또는 기본 키",
448
+ "remotePathHint": "원격 사용자의 집(또는 SFTP chroot)을 기준으로 합니다. “.” 그 집이에요.",
449
+ "restoreFullTitle": "이 아카이브의 프로젝트 파일 및 데이터베이스 덮어쓰기 - 확인하려면 파일 이름을 입력하세요.",
450
+ "restoreWebTitle": "이 아카이브에서만 웹사이트 파일을 복원하세요.",
451
+ "previewTitle": "쓰지 않고 복원 미리보기",
452
+ "partialSkipped": "부분 — 일부 프로젝트를 건너뛰었습니다.",
453
+ "testRemoteHint": "Connects to the remote host and writes a small probe file. Not read-only.",
454
+ "skippedListHint": "These projects were skipped:",
455
+ "goLogs": "Open logs",
456
+ "goAbout": "Backup notes",
457
+ "skippedPendingOs": "Skipped — OS user / home not provisioned",
458
+ "latestFile": "Latest archive"
423
459
  },
424
460
  "btTracker": {
425
461
  "title": "블루투스 트래커",
426
462
  "sub": "Self-hosted BitTorrent / WebTorrent tracker for file shares",
427
463
  "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",
464
+ "status": "상태",
465
+ "running": "달리기",
466
+ "stopped": "중지됨",
431
467
  "installed": "Installed (bundled)",
432
468
  "start": "Start tracker",
433
469
  "stop": "Stop tracker",
434
- "refresh": "Refresh",
435
- "settings": "Settings",
470
+ "refresh": "새로고침",
471
+ "settings": "설정",
436
472
  "httpPort": "HTTP / WebSocket port",
437
473
  "udpPort": "UDP port (0 = off)",
438
474
  "listenHost": "Listen host",
@@ -451,18 +487,18 @@
451
487
  "torrentsEmpty": "No announce traffic yet",
452
488
  "torrentsEmptyHint": "Create a file share with BitTorrent mode in Files. This table fills as peers announce and the server seeds.",
453
489
  "torrentsDesc": "Live swarm from the tracker, plus local seeder status for panel shares.",
454
- "colName": "Name",
490
+ "colName": "이름",
455
491
  "colHash": "Info hash",
456
- "colSeeds": "Seeds",
457
- "colLeechers": "Leechers",
458
- "colStatus": "Status",
492
+ "colSeeds": "씨앗",
493
+ "colLeechers": "거머리",
494
+ "colStatus": "상태",
459
495
  "announceUrls": "Announce URLs",
460
496
  "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",
497
+ "copy": "복사",
498
+ "copied": "복사됨",
499
+ "statsTorrents": "급류",
500
+ "statsPeers": "동료",
501
+ "statsAnnounces": "발표하다",
466
502
  "statsJobs": "Active jobs",
467
503
  "openShares": "File shares",
468
504
  "needExecute": "Enable system-change permission (YSK_EXECUTE) to open ports and run production seeds.",
@@ -471,27 +507,27 @@
471
507
  "restoreSeeds": "Re-seed BT shares",
472
508
  "restoreSeedsHint": "Start tracker if needed and re-seed shares that still have a .torrent on disk.",
473
509
  "bundledNote": "Bundled with YSK Server (Node). No apt install/uninstall — Start/Stop manages the process.",
474
- "stackTitle": "Software",
510
+ "stackTitle": "소프트웨어",
475
511
  "jobs": "Torrent jobs",
476
512
  "jobsEmpty": "No background torrent jobs",
477
513
  "jobsEmptyHint": "Large shares (≥128 MiB) build .torrent files in the background so the Files dialog stays responsive.",
478
514
  "jobsDesc": "Background create-torrent queue for large file or folder shares.",
479
- "colJob": "Job",
480
- "colShare": "Share",
515
+ "colJob": "직업",
516
+ "colShare": "공유하다",
481
517
  "colJobStatus": "Job status",
482
518
  "colEnqueued": "Enqueued",
483
519
  "refreshJobs": "Refresh jobs",
484
- "tabOverview": "Overview",
485
- "tabTorrents": "Torrents",
486
- "tabJobs": "Jobs",
487
- "tabSettings": "Settings",
488
- "tabAbout": "About",
520
+ "tabOverview": "개요",
521
+ "tabTorrents": "급류",
522
+ "tabJobs": "채용정보",
523
+ "tabSettings": "설정",
524
+ "tabAbout": "설명",
489
525
  "heroRunning": "Tracker is live",
490
526
  "heroStopped": "Tracker is stopped",
491
527
  "heroRunningSub": "Peers can announce and discover seeds for panel shares.",
492
528
  "heroStoppedSub": "Start the tracker before sharing large files over BitTorrent.",
493
- "live": "Live",
494
- "liveOff": "Idle",
529
+ "live": "살다",
530
+ "liveOff": "게으른",
495
531
  "quickStart": "Quick start",
496
532
  "quickStartDesc": "Three steps to share files over BitTorrent.",
497
533
  "step1Title": "Set public announce host",
@@ -500,28 +536,28 @@
500
536
  "step2Hint": "Open port exposure if peers are off this host.",
501
537
  "step3Title": "Create a BT share",
502
538
  "step3Hint": "In Files → Share, choose BitTorrent or both.",
503
- "stepDone": "Done",
504
- "stepTodo": "Todo",
505
- "networkCard": "Network",
539
+ "stepDone": "완료",
540
+ "stepTodo": "토도",
541
+ "networkCard": "네트워크",
506
542
  "networkCardDesc": "Where the tracker listens and what host appears in magnets.",
507
- "seederCard": "Seeder",
543
+ "seederCard": "파종기",
508
544
  "seederCardDesc": "In-process WebTorrent seeder limits and peer ports.",
509
- "lifecycleCard": "Lifecycle",
545
+ "lifecycleCard": "수명주기",
510
546
  "lifecycleCardDesc": "Boot behaviour and how the service is packaged.",
511
547
  "pid": "PID",
512
- "port": "Port",
548
+ "port": "포트",
513
549
  "announceHost": "Announce host",
514
550
  "goSettings": "Open settings",
515
551
  "searchTorrents": "Search name or hash…",
516
- "filterAll": "All",
517
- "filterSeeding": "Seeding",
518
- "filterOther": "Other",
552
+ "filterAll": "전체",
553
+ "filterSeeding": "파종",
554
+ "filterOther": "다른",
519
555
  "noMatch": "No torrents match your filter",
520
- "seedStatusSeeding": "Seeding",
521
- "seedStatusPending": "Pending",
522
- "seedStatusError": "Error",
523
- "seedStatusStopped": "Stopped",
524
- "seedStatusNone": "None",
556
+ "seedStatusSeeding": "파종",
557
+ "seedStatusPending": "보류 중",
558
+ "seedStatusError": "오류",
559
+ "seedStatusStopped": "중지됨",
560
+ "seedStatusNone": "없음",
525
561
  "notesTitle": "Service notes",
526
562
  "exposureTitle": "Network access",
527
563
  "protoHttp": "HTTP",
@@ -538,14 +574,93 @@
538
574
  "udpPortClassic": "6969 · Classic",
539
575
  "portSuggest8000": "8000 · Recommended",
540
576
  "saveOkRestart": "저장됨 - 포트를 적용하려면 트래커를 다시 시작하세요",
541
- "announceHostUnset": ""
577
+ "announceHostUnset": "미설정",
578
+ "tabTrackers": "추적기",
579
+ "addTorrent": "토렌트 추가",
580
+ "addTorrentTitle": "토렌트 추가",
581
+ "addTorrentHint": ".torrent를 업로드하거나 자석을 붙여넣으세요. 파일 폴더를 선택합니다. WebTorrent는 완료되면 누락된 파일과 시드를 다운로드합니다.",
582
+ "dropTorrent": "여기에 .torrent를 드롭하세요.",
583
+ "chooseFile": "또는 파일을 선택하세요",
584
+ "magnetLabel": "자석",
585
+ "magnetPlaceholder": "자석:?xt=urn:btih:…",
586
+ "inspect": "읽다",
587
+ "extraTrackersPreview": "{{n}} 추가 추적자에게도 알립니다.",
588
+ "saveLocation": "위치 저장",
589
+ "saveRootPublic": "공개 파일",
590
+ "newFolder": "새 폴더",
591
+ "destPreview": "에 쓸 것입니다",
592
+ "startDownload": "다운로드 시작",
593
+ "filterDownloading": "다운로드 중",
594
+ "filterPaused": "일시중지됨",
595
+ "filterError": "오류",
596
+ "emptyDrop": "여기에 .torrent를 드롭하거나 파일을 선택하세요.",
597
+ "emptyHint": "선택한 폴더에 파일이 들어갑니다. 이미 완료된 경우 이 호스트가 시드됩니다. 엔진: WebTorrent — 추가 소프트웨어 다운로드가 없습니다.",
598
+ "pause": "정지시키다",
599
+ "resume": "재개하다",
600
+ "openFolder": "폴더 열기",
601
+ "remove": "제거하다",
602
+ "removeKeep": "파일 제거, 보관",
603
+ "removeDelete": "파일 제거 및 삭제",
604
+ "removeConfirm": "라이브러리에서 이 토렌트를 삭제하시겠습니까?",
605
+ "kindShare": "공유하다",
606
+ "filesInTorrent": "파일",
607
+ "extraTrackersDesc": "추가 공지 URL. 라이브러리 다운로드/시드 및 파일 공유 시드는 .torrent 목록 외에 이를 사용합니다. 이것은 임의의 떼에 대한 로컬 추적기를 열지 않습니다.",
608
+ "extraTrackersEmpty": "추가 추적기가 없습니다. 이 호스트가 피어를 찾을 수 있도록 HTTP(S), UDP 또는 WS(S) 알림 URL을 추가하세요.",
609
+ "extraTrackerAdd": "추가하다",
610
+ "extraTrackerUrl": "URL 발표",
611
+ "extraTrackerApply": "현재 시드에 적용",
612
+ "extraTrackerApplyOk": "추가 추적기 적용",
613
+ "extraEnabled": "켜짐",
614
+ "extraTrackerBad": "URL은 http://, https://, udp://, ws:// 또는 wss://로 시작해야 합니다.",
615
+ "extraTrackerDup": "이미 나열됨",
616
+ "extraTrackerLimit": "최대 32개의 추가 추적기",
617
+ "addOk": "라이브러리에 추가됨",
618
+ "savedTo": "저장",
619
+ "folderEmpty": "하위 폴더 없음",
620
+ "needTorrentFile": ".torrent 파일을 선택하세요",
621
+ "torrentTooBig": "8MiB보다 큰 .torrent",
622
+ "seedStatusDownloading": "다운로드 중",
623
+ "seedStatusChecking": "확인 중",
624
+ "seedStatusPaused": "일시중지됨",
625
+ "seedStatusQueued": "대기 중",
626
+ "swarmLeftover": "Tracker에 라이브러리에 없는 announce가 {{count}}개 있습니다(Torrent 목록과 출처가 다름)",
627
+ "addSourceSection": "소스",
628
+ "addSourceFile": "파일",
629
+ "addSourceMagnet": "자석",
630
+ "previewSection": "미리보기",
631
+ "saveRoot": "루트",
632
+ "clearFile": "파일 지우기",
633
+ "extraTrackersTitle": "추가 announce",
634
+ "extraTrackersEmptyTitle": "아직 Tracker가 없습니다",
635
+ "extraEnabledCount": "{{count}}개 사용 중",
636
+ "extraApplyHint": "기존 시드에 적용하려면 하나 이상 켜세요",
637
+ "destMode": "이 폴더 사용 방법",
638
+ "seedExisting": "기존 파일로 시드",
639
+ "downloadNewFolder": "새 폴더로 다운로드",
640
+ "destFileConflict": "여기에 {{name}} 파일이 있습니다. 다른 폴더를 고르거나, 내용이 같으면 기존 파일로 시드하세요.",
641
+ "waitingPeers": "피어를 기다리는 중입니다. 파일이 이 호스트에 있으면 다시 추가하고 기존 파일로 시드하세요.",
642
+ "stopTitle": "추적기를 중지합니다. 시드 및 다운로드가 중단됩니다.",
643
+ "stopDesc": "실행 중인 토렌트가 발표를 중지합니다. 추적기를 다시 시작할 때까지 피어의 연결이 끊어집니다.",
644
+ "fillPublicHost": "{{host}} 사용",
645
+ "fillPublicHostTitle": "현재 패널 호스트 이름을 공개 발표 호스트로 입력하세요.",
646
+ "listenHostHint": "0.0.0.0 listens on every address. Prefer 127.0.0.1 unless peers must reach this host.",
647
+ "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.",
648
+ "bindLoopback": "127.0.0.1 only",
649
+ "bindAll": "0.0.0.0 (all)",
650
+ "seederPortMin": "Peer port start",
651
+ "seederPortMax": "Peer port end",
652
+ "statsLibrary": "Library",
653
+ "statsLibraryHint": "Torrents in the panel library / file shares",
654
+ "statsTrackerLeftover": "Tracker leftover",
655
+ "statsTrackerLeftoverHint": "Tracker announce hashes that are not library rows",
656
+ "statsAnnouncesHint": "Announce requests seen by the tracker process"
542
657
  },
543
658
  "catalog": {
544
659
  "sw": {
545
660
  "vsftpd": "vsftpd(FTPS)",
546
661
  "db_util": "db-util (FTP 사용자 DB)",
547
662
  "nginx": "Nginx",
548
- "certbot": "Certbot(암호화하자)",
663
+ "certbot": "Certbot (Let's Encrypt)",
549
664
  "mysql_client": "MySQL/MariaDB 클라이언트",
550
665
  "mysql_server": "MySQL 서버",
551
666
  "mariadb_server": "마리아DB 서버",
@@ -554,22 +669,22 @@
554
669
  "redis_tools": "레디스 클라이언트",
555
670
  "redis_server": "레디스 서버",
556
671
  "ufw": "UFW 방화벽",
557
- "fail2ban": "실패2금지",
558
- "postfix": "접미사",
559
- "dovecot": "비둘기장",
560
- "opendkim": "오픈DKIM",
561
- "pdns_server": "파워DNS",
672
+ "fail2ban": "fail2ban",
673
+ "postfix": "Postfix",
674
+ "dovecot": "Dovecot",
675
+ "opendkim": "OpenDKIM",
676
+ "pdns_server": "PowerDNS",
562
677
  "git": "힘내",
563
678
  "node": "Node.js",
564
679
  "php": "PHP",
565
680
  "python": "Python",
566
681
  "go": "Go",
567
682
  "rust": "Rust",
568
- "chromium": "크롬 / 크롬"
683
+ "chromium": "Chromium / Chrome"
569
684
  },
570
685
  "php": {
571
686
  "session": "세션",
572
- "opcache": "OP캐시"
687
+ "opcache": "OPcache"
573
688
  }
574
689
  },
575
690
  "cdn": {
@@ -689,7 +804,93 @@
689
804
  "deleteNodeDesc": "CDN 노드 \"{{name}}\"을 삭제합니다.",
690
805
  "deleteSiteDesc": "CDN 사이트 \"{{name}}\"을 삭제합니다.",
691
806
  "deleteSiteC1": "사이트 정책 및 에지 연결",
692
- "deleteSiteC2": "적용된 nginx 구성은 별도의 정리 또는 재적용이 필요할 수 있습니다."
807
+ "deleteSiteC2": "적용된 nginx 구성은 별도의 정리 또는 재적용이 필요할 수 있습니다.",
808
+ "statOnline": "Online",
809
+ "statOffline": "오프라인 {{n}}",
810
+ "statHitRate": "적중률 {{v}}",
811
+ "hitNoStats": "아직 에지 통계가 없습니다",
812
+ "loopbackOriginBlocked": "루프백 origin {{url}}을 원격 에지에 쓰지 않습니다. 먼저 도달 가능한 origin으로 바꾸세요.",
813
+ "applyFailedHint": "적용 실패 — 아래 메모를 보세요",
814
+ "applyStatus": {
815
+ "draft": "초안",
816
+ "planned": "계획됨",
817
+ "applying": "적용 중",
818
+ "applied": "적용됨",
819
+ "failed": "실패",
820
+ "partial": "부분"
821
+ },
822
+ "drain": "물을 빼다",
823
+ "drainTitle": "이 에지로 새 CDN 트래픽 전송을 중지합니다.",
824
+ "drainDesc": "“{{name}}”을 비우시겠습니까? 기존 연결은 완료될 때까지 유지됩니다.",
825
+ "drainLastTitle": "이것이 마지막 가장자리입니다. 배수구는 가장자리 없이 모든 사이트를 떠납니다.",
826
+ "drainLastDesc": "“{{name}}”이 유일한 가장자리입니다. 그것을 비우면 모든 사이트에 우위가 없습니다.",
827
+ "clearDrainTitle": "이 에지에서 새 트래픽을 다시 수락합니다.",
828
+ "clearDrainDesc": "'{{name}}'의 배수를 삭제하시겠습니까?",
829
+ "deleteNodeTitle": "이 CDN 에지 삭제",
830
+ "deleteLastNodeTitle": "마지막 가장자리 삭제 - 모든 사이트에 가장자리가 없습니다.",
831
+ "purge": "숙청",
832
+ "previewTitle": "nginx 구성 미리보기(쓰기 없음)",
833
+ "writeConfTitle": "Edge nginx 구성 파일 쓰기",
834
+ "applyEdgesTitle": "이 사이트를 엣지에 적용(nginx 작성)",
835
+ "purgeTitle": "가장자리의 캐시 제거",
836
+ "dnsSyncTitle": "CDN DNS 레코드 쓰기",
837
+ "probeDnsTitle": "프로브 에지 및 DNS(읽기 전용)",
838
+ "distSslTitle": "TLS 자료를 가장자리에 복사",
839
+ "leIssueTitle": "Let’s Encrypt 인증서 발급 및 배포",
840
+ "deleteSiteTitle": "이 CDN 사이트 삭제",
841
+ "siteOpConfirmGeneric": "'{{name}}'에서 이 작업을 실행하시겠습니까?",
842
+ "siteOpConfirmDesc": "사이트 “{{name}}” · {{action}}. 이는 nginx, DNS 또는 인증서를 변경할 수 있습니다.",
843
+ "siteOpConfirm": {
844
+ "apply": "이 사이트를 가장자리에 적용하시겠습니까?",
845
+ "render": "이 사이트에 대한 nginx 구성을 작성하시겠습니까?",
846
+ "purge": "이 사이트의 캐시를 삭제하시겠습니까?",
847
+ "dns-sync": "이 사이트의 DNS를 동기화하시겠습니까?",
848
+ "dist": "TLS를 에지에 배포하시겠습니까?",
849
+ "issue": "Issue 암호화해서 배포하자?"
850
+ },
851
+ "pillNodesSites": "{{n}} 노드 · {{s}} 사이트",
852
+ "statHit": "적중률",
853
+ "hitUnknown": "알 수 없음",
854
+ "lastHealthHint": "마지막 조사 {{at}} · {{ok}}",
855
+ "lastHealthNever": "아직 프로브되지 않음 - 프로브 실행",
856
+ "lastHealthFail": "프로브 실패",
857
+ "healthLoopNeedSites": "먼저 사이트를 추가하세요.",
858
+ "nodeStatus": {
859
+ "online": "온라인",
860
+ "offline": "오프라인",
861
+ "draining": "배수",
862
+ "unknown": "알려지지 않은"
863
+ },
864
+ "statOnlineOf": "Online {{n}}/{{total}}",
865
+ "statDraining": "Draining {{n}}",
866
+ "localTest": "local / test",
867
+ "colRegion": "Region",
868
+ "previewOnlyNote": "Preview only — nothing was written to the edges.",
869
+ "statByRegion": "Region: ",
870
+ "statByApply": "Apply status: ",
871
+ "col": {
872
+ "origin": "Origin",
873
+ "edges": "Edges",
874
+ "apply": "Apply",
875
+ "dns": "DNS",
876
+ "edgesOnline": "Edges online / applied",
877
+ "dnsRr": "CDN DNS records"
878
+ },
879
+ "mode": {
880
+ "origin_pull": "Origin pull",
881
+ "reverse_proxy": "Reverse proxy",
882
+ "static_edge": "Static edge"
883
+ },
884
+ "dnsStrategy": {
885
+ "multi_a": "Multiple A records",
886
+ "cname": "CNAME",
887
+ "geo": "Geo"
888
+ },
889
+ "edgesOnlineApplied": "{{online}}/{{total}} online · {{applied}} applied",
890
+ "hitMiss": "Hits {{hits}} / misses {{misses}}",
891
+ "cacheBytes": "Cache ≈ {{n}} B",
892
+ "hitRateUnknown": "No access log with cache status and no cache directory, so hit rate cannot be estimated.",
893
+ "offlineHint": "Offline — probe failed. Remove the node if it is leftover."
693
894
  },
694
895
  "cli": {
695
896
  "unknownCommand": "알 수 없는 명령: {{command}}\n`{{cli}} 도움말`을 실행하세요.",
@@ -1575,7 +1776,7 @@
1575
1776
  },
1576
1777
  "status": {
1577
1778
  "bans": {
1578
- "a8d96b": "사용법: {{CLI_NAME}} 방어 상태|bans|suspects|ban|unban|whitelist|stack-apply|fail2ban|firewall|timeline|presets [--json]\n` +\n ` 금지 [--q 텍스트] [--source 실패2ban|패널|ufw|자동]\n` +\n ` 용의자 [--q 텍스트]\n` +\n ` stack-apply [--execute] # UFW + Fail2ban + 현재 프리셋\n` +\n ` 실패2반 | 방화벽 # 심층 조사(정직)\n` +\n ` 타임라인 [--limit N] [--q 텍스트]\n` +\n ` 사전 설정 # 목록 + activePreset"
1779
+ "a8d96b": "사용법: {{CLI_NAME}} 방어 상태|bans|suspects|ban|unban|whitelist|stack-apply|fail2ban|firewall|timeline|presets [--json]\n 금지 [--q 텍스트] [--source 실패2ban|패널|ufw|자동]\n 용의자 [--q 텍스트]\n stack-apply [--execute] # UFW + fail2ban + 현재 프리셋\n 실패2반 | 방화벽 # 심층 조사(정직)\n 타임라인 [--limit N] [--q 텍스트]\n 사전 설정 # 목록 + activePreset"
1579
1780
  }
1580
1781
  }
1581
1782
  }
@@ -1741,7 +1942,7 @@
1741
1942
  }
1742
1943
  },
1743
1944
  "x": {
1744
- "972912": "사용법:\n ysk-server 인벤토리 마이그레이션 [--data-dir PATH] --json\n ysk-server 마이그레이션 호스트 --target root@IP [--identity-file PATH|--identity-id ID|--password PW] --execute [--maintenance] [--force-wipe-target]\n ysk-server 마이그레이션 post --job ID --data-dir PATH --execute # 대상에서\n ysk-server 마이그레이션 상태 [--작업 ID]\n ysk-server 마이그레이션 이력서 --작업 ID --execute"
1945
+ "972912": "사용법:\n ysk-server 인벤토리 마이그레이션 [--data-dir PATH] --json\n ysk-server 마이그레이션 호스트 --target root@IP [--identity-file PATH|--identity-id ID|--password PW] --execute [--maintenance] [--force-wipe-target]\n ysk-server 마이그레이션 post --job ID --data-dir PATH --execute # 대상에서\n ysk-server 마이그레이션 상태 [--작업 ID]\n ysk-server 마이그레이션 이력서 --작업 ID --execute\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
1946
  },
1746
1947
  "hostingHelp": "사용법: ysk-server 호스팅 <sub>\n 위험한 작전의 기본 테스트 실행; 적용하려면 --execute(+ YSK_EXECUTE=1)를 추가하세요.\n 엔진엑스 | nginx-sync [--실행]\n redis 제공 | postgres 제공 | mysql-provision [--실행]\n dns-zone --zone X --ip A.B.C.D [--ipv6 X:X::X] [--validate] [--reload]\n DNS 영역 | powerdns 상태 | powerdns-install [--install|--실행]\n powerdns-load --zone X --ip A.B.C.D [--load|--execute]\n 이메일 적용 --domain X [--install|--execute]\n email-mailbox --domain X --local user [--password P] [--ip A.B.C.D] [--system]\n ftps-apply --domain X [--install|--execute]\n 런타임 | 런타임 설치 --kind node|php|python|go|rust --version V [--install|--execute]\n dovecot-passdb --domain X | --모두\n webmail-apply --domain webmail.example.com [--다운로드]\n 공개 파일 --domain files.example.com [--reload]\n email-bootstrap --domain example.com --ip A.B.C.D [--install|--execute]\n email-deliverability --domain example.com # PTR/DNSBL/웜업 팩(정직)\n 방화벽 적용 [--smtp] [--실행]",
1747
1948
  "logsQuery": "사용법: {{CLI_NAME}} 로그 쿼리 --source <id> [--lines N] [--grep G] [--since 1h] [--priority err]\n 소스 예: 저널: 저널:nginx.service 파일:syslog 프로젝트:<uuid>\n {{CLI_NAME}} 로그 소스 --json\n {{CLI_NAME}} 로그 저널 [--unit nginx.service] --json"
@@ -1910,6 +2111,7 @@
1910
2111
  "noData": "데이터 없음",
1911
2112
  "input": "입력",
1912
2113
  "pleaseEnter": "{{value}} 입력",
2114
+ "required": "필수",
1913
2115
  "about": "설명",
1914
2116
  "operation": "행위",
1915
2117
  "delete": "삭제",
@@ -1996,7 +2198,13 @@
1996
2198
  "show": "보여주다",
1997
2199
  "done": "완료",
1998
2200
  "next": "다음",
1999
- "previous": "이전"
2201
+ "previous": "이전",
2202
+ "all": "전체",
2203
+ "showPassword": "보여주다",
2204
+ "hidePassword": "숨다",
2205
+ "more": "더",
2206
+ "redirectedTo": "{{to}}(으)로 이동했습니다(원래 {{from}})",
2207
+ "unavailable": "Not available right now"
2000
2208
  },
2001
2209
  "cron": {
2002
2210
  "presetCdTrue": "CD 앱 + true(테스트)",
@@ -2135,7 +2343,36 @@
2135
2343
  "sourceHost": "주인",
2136
2344
  "noHostJobs": "이 범위에는 crontab 작업이 없습니다.",
2137
2345
  "hostPartial": "모든 사용자 crontab을 읽을 수 없습니다(루트 필요).",
2138
- "pendingInstall": "설치 대기 중({{count}})"
2346
+ "pendingInstall": "설치 대기 중({{count}})",
2347
+ "hourRange": "시간은 0~23이어야 합니다.",
2348
+ "minuteRange": "분은 0~59여야 합니다.",
2349
+ "hoursCommon": "공통시간",
2350
+ "hoursAll": "모든 시간",
2351
+ "invalidExpr": "유효한 5개 필드 크론 표현식이 아닙니다.",
2352
+ "needCommand": "명령이 필요합니다.",
2353
+ "needUser": "프로젝트 또는 시스템 사용자를 선택합니다.",
2354
+ "hostCounts": "호스트 라인",
2355
+ "hostCountsVal": "{{ysk}} · 기타 {{other}} · 합계 {{total}}",
2356
+ "hostYskYes": "패널라인 존재",
2357
+ "hostYskNo": "패널라인이 없다",
2358
+ "emptyHostCrontab": "{{user}}에는 crontab이 없습니다.",
2359
+ "writtenOnHost": "Written",
2360
+ "registeredJobsChip": "Registered",
2361
+ "registeredVsWritten": "Registered in the panel vs written to host crontab",
2362
+ "installPreviewTitle": "Preview before installing to system crontab",
2363
+ "installPreviewDesc": "This merges the YSK block into the host crontab. Existing non-YSK lines stay.",
2364
+ "installPreviewMerge": "Install writes a YSK Server crontab merge block. It does not replace the whole crontab.",
2365
+ "installPreviewEmpty": "No pending managed jobs — install still refreshes the YSK block.",
2366
+ "editJobTitle": "Edit job",
2367
+ "editJobDesc": "Changes stay in the panel until you install to the system crontab.",
2368
+ "saveJob": "Save (management only)",
2369
+ "panelLines": "Panel lines",
2370
+ "otherLines": "Other lines",
2371
+ "totalLines": "Total",
2372
+ "writtenOnHostHint": "Lines already written to the host crontab",
2373
+ "registeredJobsHint": "Jobs registered in the panel (including pending install)",
2374
+ "pendingInstallCount": "{{n}} pending install",
2375
+ "systemJobBadge": "No project · system user"
2139
2376
  },
2140
2377
  "dashboard": {
2141
2378
  "title": "대시보드",
@@ -2224,7 +2461,7 @@
2224
2461
  "runtime": "실행 시간",
2225
2462
  "runtimeHint": "기본 런타임 버전 및 배포 스타일 설정",
2226
2463
  "runtimeVersion": "런타임 버전",
2227
- "versionHint": "프로젝트 런타임_버전으로 저장됨",
2464
+ "versionHint": "프로젝트 실행 환경 버전 설정에 씁니다",
2228
2465
  "serverIpv4": "서버 IPv4",
2229
2466
  "serverIpv4Hint": "DNS A/메일 SPF",
2230
2467
  "serverIpv4Ph": "이 호스트의 공개 IPv4",
@@ -2246,7 +2483,26 @@
2246
2483
  "noNotifs": "알림 없음",
2247
2484
  "noNotifsDesc": "시스템 경고 및 할 일이 여기에 표시됩니다.",
2248
2485
  "applyAuditTitle": "현황 감사 적용",
2249
- "applyAuditDesc": "알았어 {{ok}} · 경고 {{warn}} · 나쁘다 {{bad}}"
2486
+ "applyAuditDesc": "알았어 {{ok}} · 경고 {{warn}} · 나쁘다 {{bad}}",
2487
+ "barTitle": "호스트 알림 {{count}}건",
2488
+ "levelCritical": "심각",
2489
+ "levelWarn": "경고",
2490
+ "levelInfo": "정보",
2491
+ "colTitle": "알림",
2492
+ "colDetail": "내용",
2493
+ "colSource": "출처",
2494
+ "notifSearch": "알림 검색",
2495
+ "notifAll": "전체",
2496
+ "notifDismiss": "숨다",
2497
+ "goFix": "고치다",
2498
+ "needDomainFirst": "먼저 도메인을 입력하세요",
2499
+ "serviceAria": "{{name}}: {{state}}",
2500
+ "sev": {
2501
+ "ok": "OK",
2502
+ "warn": "Warning",
2503
+ "bad": "Problem"
2504
+ },
2505
+ "publicNo2fa": "This panel listens on all interfaces and your admin account has no 2FA."
2250
2506
  },
2251
2507
  "dataTable": {
2252
2508
  "empty": "데이터 없음",
@@ -2471,7 +2727,37 @@
2471
2727
  "probe": "조사",
2472
2728
  "name": "이름",
2473
2729
  "type": "유형",
2474
- "status": "상태"
2730
+ "status": {
2731
+ "healthy": "건강한",
2732
+ "planned": "예정",
2733
+ "partial": "부분",
2734
+ "failed": "실패한",
2735
+ "draft": "초안",
2736
+ "degraded": "타락한",
2737
+ "applied": "적용된"
2738
+ },
2739
+ "fleetSession": "Fleet 에이전트 세션 ID",
2740
+ "fleetSessionHint": "Optional. Paste a session UUID from /agents. Then this peer uses fleet (no SSH). Leave empty for SSH scp.",
2741
+ "fleetSessionPh": "에이전트 페이지 세션 UUID",
2742
+ "engineNotInstalled": "{{engine}}은(는) 이 호스트에 설치되어 있지 않습니다. 먼저 설치하거나 실제로 실행 중인 엔진을 엽니다.",
2743
+ "fleetSessionNone": "없음 - SSH 사용",
2744
+ "fleetSessionOpenAgents": "/agents를 열어 세션을 등록하세요.",
2745
+ "createWizardTitle": "계획 마법사를 엽니다. 로컬 IP와 1개 이상의 피어가 필요합니다. 패널 아티팩트만 씁니다(시험 실행). 적용할 때까지 엔진을 다시 시작하지 않습니다.",
2746
+ "bootstrap": "부트스트랩",
2747
+ "fleetApply": "함대 적용",
2748
+ "planTitle": "클러스터 계획 재생성(호스트 변경 없음)",
2749
+ "writeFileTitle": "패널 데이터 디렉토리 아래에 관리 파일 쓰기(드라이런)",
2750
+ "probeLocalTitle": "이 호스트만 프로브",
2751
+ "probeAllTitle": "등록된 모든 회원을 조사하세요.",
2752
+ "bootstrapTitle": "로컬 드롭인 설치 및 첫 번째 노드 부트스트랩",
2753
+ "remoteInstallPlanTitle": "원격 설치 미리보기(실행 없음)",
2754
+ "downloadBundleTitle": "피어 conf 번들(.tar.gz) 다운로드",
2755
+ "pushPlanTitle": "피어로 푸시 미리보기(SCP 없음)",
2756
+ "fleetSyncPlanTitle": "플릿 동기화 미리보기(실행 없음)",
2757
+ "fleetApplyTitle": "함대 구성원에게 대기열을 적용하시겠습니까?",
2758
+ "redirectedFromCluster": "You were redirected here from /cluster. This is the database cluster tab.",
2759
+ "roleUnassigned": "No role assigned",
2760
+ "standaloneOtherEngines": "This engine is standalone. Other engines have clusters: {{names}}."
2475
2761
  },
2476
2762
  "console": {
2477
2763
  "dataBrowse": "데이터 찾아보기",
@@ -2511,7 +2797,9 @@
2511
2797
  "reloadConfig": "구성 다시 로드",
2512
2798
  "disableBoot": "부팅 시 비활성화",
2513
2799
  "needRights": "시스템 변경 권한과 관리자가 필요합니다. 실패는 이유를 보여줍니다. 절대 가짜 성공이 아닙니다.",
2514
- "noneFetched": "- 없음 -"
2800
+ "noneFetched": "- 없음 -",
2801
+ "disableBootConfirm": "다시 활성화할 때까지 재부팅 후 엔진이 시작되지 않습니다.",
2802
+ "affectsProjects": "Sites and services that use this engine will be interrupted."
2515
2803
  },
2516
2804
  "expiresLabel": "만료",
2517
2805
  "importEntry": "입장: {{url}}",
@@ -2537,7 +2825,30 @@
2537
2825
  "unfreezeOk": "{{engine}} 수리 완료",
2538
2826
  "startAfterUnfreeze": "서비스 시작(실패 시 복구 계획 자동 실행)",
2539
2827
  "serviceDownTitle": "데이터베이스 서비스가 다운되었습니다",
2540
- "serviceDownBody": "서비스 상태가 좋지 않음"
2828
+ "serviceDownBody": "서비스 상태가 좋지 않음",
2829
+ "emptyDbHostHasRows": "호스트에는 이 제어 영역 목록에 없는 데이터베이스가 이미 있습니다.",
2830
+ "hostHasUntracked": "{{count}} 호스트 데이터베이스가 패널에 등록되지 않았습니다.",
2831
+ "hostInventoryHint": "테이블은 제어 영역 행 전용입니다. 실제 이름은 SHOW DATABASES에서 가져옵니다.",
2832
+ "adoptHostDb": "등록 {{name}}",
2833
+ "remoteTest": "테스트 연결",
2834
+ "remoteTestDone": "원격 호스트 프로브 완료",
2835
+ "remoteTestOk": "도달 가능",
2836
+ "remoteTestFail": "접근할 수 없음",
2837
+ "remoteNotChecked": "테스트되지 않음",
2838
+ "registeredVsHostHint": "패널 등록 / 호스트 실측",
2839
+ "dumpNeedRegistered": "먼저 패널에 데이터베이스를 등록하세요",
2840
+ "dumpFirstDbTitle": "첫 등록 데이터베이스 내보내기",
2841
+ "importNeedRegistered": "먼저 패널에 데이터베이스를 등록하세요",
2842
+ "importLatestNeedConfirm": "확인 필요 — 등록된 데이터베이스로 가져옵니다",
2843
+ "adoptHostDbTitle": "제어면에 이름만 등록하며 호스트 데이터는 바꾸지 않습니다.",
2844
+ "cleanupExpiredTempUsersTitle": "만료된 패널 임시 사용자를 삭제합니다",
2845
+ "remoteDeleteTitle": "이 등록만 제거",
2846
+ "remoteDeleteConfirm": "등록 {{name}}을(를) 제거할까요? 원격 서버는 변경되지 않습니다.",
2847
+ "registeredCount": "Registered",
2848
+ "hostCount": "On host",
2849
+ "registeredUsers": "Registered users",
2850
+ "registeredUsersHint": "Panel registrations only — not every MySQL account",
2851
+ "hostStillExists": "Still on host"
2541
2852
  },
2542
2853
  "dialogs": {
2543
2854
  "confirmDefault": "확인하다",
@@ -2761,7 +3072,272 @@
2761
3072
  "aboutHealthTitle": "서비스 상태",
2762
3073
  "aboutHealthBody": "도구를 사용하여 PowerDNS를 검색하고 바인딩을 복구하고 포트 53을 엽니다.",
2763
3074
  "aboutStackTitle": "소프트웨어",
2764
- "aboutStackBody": "소프트웨어에서 PowerDNS 패키지를 확인/업데이트하세요."
3075
+ "aboutStackBody": "소프트웨어에서 PowerDNS 패키지를 확인/업데이트하세요.",
3076
+ "invalidZone": "영역 이름이 잘못되었습니다. 실제 도메인(예: example.com)을 사용하세요.",
3077
+ "invalidIpv4": "IPv4가 잘못되었습니다. 각 옥텟은 0~255여야 합니다.",
3078
+ "mailZonesMissing": "이메일 도메인에는 DNS 영역이 없습니다: {{domains}}.",
3079
+ "createMailZone": "메일 영역 생성",
3080
+ "createMailZoneNow": "메일존 생성 {{domain}}",
3081
+ "healNeedInstall": "PowerDNS가 설치되지 않았습니다. 먼저 소프트웨어 탭에 설치하세요.",
3082
+ "applyNeedService": "DNS 서비스가 실행되고 있지 않습니다. 적용하기 전에 시작하거나 설치하세요.",
3083
+ "deleteZoneNeedName": "이 영역 삭제 — 확인을 위해 영역 이름을 입력합니다.",
3084
+ "toolsFirewallTitle": "방화벽(UFW)",
3085
+ "toolsFirewallHint": "53번 포트를 허용하거나 차단합니다. PowerDNS를 시작하거나 중지하지 않습니다.",
3086
+ "toolsUnitTitle": "PowerDNS 유닛",
3087
+ "toolsUnitHint": "systemd 유닛 pdns — 시작, 중지, 재시작, 다시 로드.",
3088
+ "installConfirmTitle": "PowerDNS를 설치할까요?",
3089
+ "installConfirmDesc": "pdns-server를 설치하고 관리 설정을 씁니다. root와 YSK_EXECUTE=1이 필요합니다.",
3090
+ "installConfirmConsequence": "설치 후 시작하면 PowerDNS가 53번 포트를 바인딩합니다.",
3091
+ "installPort53Busy": "53번 포트가 이미 사용 중입니다. 해당 수신을 중지하거나 복구하기 전에는 PowerDNS 바인딩이 실패할 수 있습니다.",
3092
+ "installPort53BusyConsequence": "53번에서 응답을 기대하기 전에 바인드를 복구하거나 다른 수신을 중지하십시오.",
3093
+ "createZoneNeedValid": "Enter a valid zone name and IPv4 address"
3094
+ },
3095
+ "docker": {
3096
+ "title": "Docker",
3097
+ "subtitle": "이 서버에서 Docker 엔진, 컨테이너, 이미지, Compose 프로젝트, 디스크를 설치하고 제어합니다.",
3098
+ "refresh": "새로 고침",
3099
+ "notInstalled": "Docker Engine이 설치되어 있지 않습니다. 이 페이지에서 docker.io와 docker-compose-v2를 설치하세요.",
3100
+ "protected": "보호됨",
3101
+ "pruneConfirm": "volume 또는 시스템 정리를 확인하려면 PRUNE을 입력",
3102
+ "settingsHint": "안전한 daemon.json 항목만 엽니다. 적용하면 파일을 쓰고 docker.service를 다시 시작합니다.",
3103
+ "cli": {
3104
+ "usage": "사용법: ysk-server docker status|ps|images|volumes|networks|df|logs|inspect|exec|start|stop|restart|rm|pull|run|prune|engine|compose [--image IMG] [--name N] [--preset version|help|hostname] [--bin BIN] [--project P] [--execute] [--json]"
3105
+ },
3106
+ "tab": {
3107
+ "overview": "개요",
3108
+ "containers": "컨테이너",
3109
+ "images": "이미지",
3110
+ "compose": "Compose",
3111
+ "volumes": "Volume",
3112
+ "networks": "네트워크",
3113
+ "prune": "정리",
3114
+ "settings": "설정",
3115
+ "about": "설명"
3116
+ },
3117
+ "col": {
3118
+ "engine": "엔진",
3119
+ "containers": "컨테이너",
3120
+ "version": "버전",
3121
+ "dataRoot": "데이터 디렉터리",
3122
+ "disk": "디스크",
3123
+ "validators": "검증자 스택",
3124
+ "name": "이름",
3125
+ "image": "이미지",
3126
+ "status": "상태",
3127
+ "ports": "포트",
3128
+ "managed": "패널 관리",
3129
+ "size": "크기",
3130
+ "driver": "드라이버",
3131
+ "type": "유형",
3132
+ "reclaimable": "회수 가능"
3133
+ },
3134
+ "state": {
3135
+ "up": "실행 중",
3136
+ "down": "중지됨",
3137
+ "running": "Running",
3138
+ "exited": "Exited",
3139
+ "restarting": "Restarting",
3140
+ "restartingCount": "Restarting · {{n}} times",
3141
+ "paused": "Paused",
3142
+ "created": "Created",
3143
+ "dead": "Dead",
3144
+ "removing": "Removing",
3145
+ "unknown": "Unknown"
3146
+ },
3147
+ "actions": {
3148
+ "start": "시작",
3149
+ "stop": "중지",
3150
+ "restart": "다시 시작",
3151
+ "remove": "삭제",
3152
+ "logs": "로그",
3153
+ "inspect": "검사",
3154
+ "exec": "실행(version)",
3155
+ "run": "이미지 실행",
3156
+ "pull": "받기",
3157
+ "up": "시작",
3158
+ "down": "중지",
3159
+ "createVolume": "volume 만들기",
3160
+ "createNetwork": "네트워크 만들기",
3161
+ "pruneContainers": "컨테이너 정리",
3162
+ "pruneImages": "이미지 정리",
3163
+ "pruneVolumes": "volume 정리",
3164
+ "pruneSystem": "시스템 정리",
3165
+ "startEngine": "엔진 시작",
3166
+ "stopEngine": "엔진 중지",
3167
+ "restartEngine": "엔진 다시 시작",
3168
+ "applyDaemon": "엔진 설정 적용"
3169
+ },
3170
+ "empty": {
3171
+ "containers": "컨테이너 없음",
3172
+ "images": "이미지 없음",
3173
+ "compose": "Compose 프로젝트 없음",
3174
+ "volumes": "volume 없음",
3175
+ "networks": "네트워크 없음",
3176
+ "composeDesc": "Projects come from validator nodes or Compose files already on this host. This page does not accept arbitrary YAML uploads.",
3177
+ "composeCta": "Open validator nodes"
3178
+ },
3179
+ "logs": {
3180
+ "empty": "아직 로그가 없습니다",
3181
+ "follow": "Follow"
3182
+ },
3183
+ "settings": {
3184
+ "logMaxSize": "컨테이너 로그 한도",
3185
+ "liveRestore": "실시간 복원(데몬 재시작 시 컨테이너 유지)",
3186
+ "mirrors": "Registry 미러(줄마다 URL 하나)",
3187
+ "insecure": "암호화되지 않은 Registry(줄마다 호스트 하나)"
3188
+ },
3189
+ "about": {
3190
+ "body": "Docker는 Nginx와 같은 등급의 YSK Server 호스트 서비스입니다. 패널에서 Ubuntu docker.io + docker-compose-v2로 설치합니다. 검증자 노드는 yskval-* Compose 프로젝트로 실행됩니다.",
3191
+ "honesty": "호스트 변경에는 root와 YSK_EXECUTE=1이 필요합니다. 기본은 시험 실행입니다. 이 페이지는 Kubernetes가 아닙니다.",
3192
+ "validators": "검증자 노드 열기"
3193
+ },
3194
+ "alerts": {
3195
+ "daemonTitle": "Docker 데몬이 중지됨",
3196
+ "daemonBody": "Docker는 설치되어 있지만 docker.service가 활성 상태가 아닙니다. 검증자 스택을 시작할 수 없습니다."
3197
+ },
3198
+ "errors": {
3199
+ "notInstalled": "Docker가 설치되어 있지 않습니다",
3200
+ "daemonDown": "Docker 데몬이 활성 상태가 아닙니다",
3201
+ "needCompose": "docker compose(v2 플러그인)가 필요합니다",
3202
+ "badImage": "이미지 참조가 올바르지 않습니다",
3203
+ "badName": "이름이 올바르지 않습니다",
3204
+ "badPort": "포트 공개가 올바르지 않습니다",
3205
+ "badEnv": "환경 변수가 올바르지 않습니다",
3206
+ "badVolume": "볼륨 마운트가 올바르지 않습니다",
3207
+ "badNetwork": "네트워크가 올바르지 않습니다",
3208
+ "protectedNetwork": "내장 Docker 네트워크는 삭제할 수 없습니다",
3209
+ "badRestart": "재시작 정책이 올바르지 않습니다",
3210
+ "badPrune": "정리 범위가 올바르지 않습니다",
3211
+ "needPruneConfirm": "volume 또는 시스템 정리에는 confirm=PRUNE이 필요합니다",
3212
+ "badDaemon": "엔진 설정이 올바르지 않습니다",
3213
+ "composeMissing": "이 프로젝트의 Compose 파일을 찾을 수 없습니다",
3214
+ "logsFailed": "컨테이너 로그를 읽을 수 없습니다",
3215
+ "mutateFailed": "Docker 명령이 실패했습니다",
3216
+ "engineFailed": "docker.service를 제어할 수 없습니다",
3217
+ "badExec": "exec는 허용 목록의 바이너리와 프리셋만 가능합니다(셸 불가, TTY 불가)",
3218
+ "uninstallBusy": "Docker를 제거하기 전에 패널이 관리하는 컨테이너(검증자 스택 포함)를 중지하십시오"
3219
+ },
3220
+ "notes": {
3221
+ "dryMutate": "시험 실행입니다. 호스트를 바꾸려면 --execute와 YSK_EXECUTE=1을 사용하세요.",
3222
+ "dryPrune": "정리 미리보기(적용되지 않음).",
3223
+ "dryEngine": "엔진 제어는 시험 실행입니다.",
3224
+ "dryDaemon": "/etc/docker/daemon.json을 쓰고 docker.service를 다시 시작합니다.",
3225
+ "daemonWrote": "daemon.json을 썼습니다",
3226
+ "start": "컨테이너를 시작했습니다",
3227
+ "stop": "컨테이너를 중지했습니다",
3228
+ "restart": "컨테이너를 다시 시작했습니다",
3229
+ "remove": "컨테이너를 삭제했습니다",
3230
+ "ran": "이미지로 컨테이너를 시작했습니다",
3231
+ "pulled": "이미지를 받았습니다",
3232
+ "exec": "허용 목록 exec를 실행했습니다",
3233
+ "imageRemoved": "이미지를 삭제했습니다",
3234
+ "volumeCreated": "volume을 만들었습니다",
3235
+ "volumeRemoved": "volume을 삭제했습니다",
3236
+ "networkCreated": "네트워크를 만들었습니다",
3237
+ "networkRemoved": "네트워크를 삭제했습니다",
3238
+ "pruned": "정리가 끝났습니다",
3239
+ "compose": {
3240
+ "up": "Compose 프로젝트를 시작했습니다",
3241
+ "down": "Compose 프로젝트를 중지했습니다",
3242
+ "restart": "Compose 프로젝트를 다시 시작했습니다",
3243
+ "rm": "Compose project removed"
3244
+ },
3245
+ "engine": {
3246
+ "start": "docker.service를 시작했습니다",
3247
+ "stop": "docker.service를 중지했습니다",
3248
+ "restart": "docker.service를 다시 시작했습니다"
3249
+ }
3250
+ },
3251
+ "needEngineTitle": "Install Docker Engine first",
3252
+ "notInstalledValue": "Not installed",
3253
+ "nameHint": "Letters, digits, underscore, dot, hyphen (max 128)",
3254
+ "volPlaceholder": "my-data",
3255
+ "netPlaceholder": "my-net",
3256
+ "runPorts": "Publish ports",
3257
+ "runPortsHint": "host:container per line, e.g. 8080:80",
3258
+ "runEnv": "Environment",
3259
+ "runEnvHint": "KEY=value per line",
3260
+ "runRestart": "Restart policy",
3261
+ "runNetwork": "Network",
3262
+ "runVolumes": "Volumes",
3263
+ "runVolumesHint": "volume:dest per line",
3264
+ "runAdvancedHint": "For multi-service stacks use validator nodes or Compose files already on this host.",
3265
+ "daemonConfirmTitle": "Apply daemon settings?",
3266
+ "daemonConfirmDesc": "Writes daemon.json and restarts docker.service. All containers will be interrupted.",
3267
+ "ui": {
3268
+ "whatYouGet": "이 페이지에서 할 수 있는 일",
3269
+ "whatYouGetLead": "먼저 Docker Engine을 설치합니다. 이후 단일 컨테이너 실행, 이미지 받기, 이 호스트의 검증자 Compose 스택 확인이 가능합니다.",
3270
+ "capEngine": "엔진",
3271
+ "capEngineDesc": "docker.io와 docker-compose-v2를 한 번에 설치합니다. docker.service 시작과 중지도 여기에서 합니다.",
3272
+ "capWork": "컨테이너와 이미지",
3273
+ "capWorkDesc": "자주 쓰는 이미지를 고르고 받은 뒤 실행하고, 로그를 보거나 검사합니다.",
3274
+ "capStacks": "검증자 스택",
3275
+ "capStacksDesc": "다중 서비스 스택은 검증자 Compose 프로젝트(yskval-*)입니다. 이 페이지는 YAML 업로드를 받지 않습니다.",
3276
+ "cardEngine": "엔진",
3277
+ "cardDisk": "디스크",
3278
+ "cardWork": "이 호스트",
3279
+ "compose": "Compose",
3280
+ "cgroup": "cgroup",
3281
+ "used": "사용량",
3282
+ "free": "여유",
3283
+ "running": "실행 중",
3284
+ "images": "이미지",
3285
+ "volumes": "Volume",
3286
+ "networks": "네트워크",
3287
+ "goImages": "이미지",
3288
+ "goValidators": "검증자 노드",
3289
+ "imagePickHint": "자주 쓰는 이미지를 고르세요. 다른 참조가 필요할 때만 기타를 사용합니다.",
3290
+ "imageCustom": "기타",
3291
+ "driver": "드라이버",
3292
+ "driverLocalOnly": "이 패널은 local volume만 만듭니다.",
3293
+ "netDefaultDriver": "새 네트워크는 Docker 기본 bridge 드라이버를 사용합니다.",
3294
+ "pruneWhat": "삭제할 항목",
3295
+ "pruneAck": "사용하지 않는 데이터가 삭제되며 복구할 수 없음을 이해합니다",
3296
+ "pruneAckDesc": "Volume 또는 시스템 정리는 되돌릴 수 없습니다. 선택한 범위의 중지된 컨테이너와 미사용 이미지를 삭제합니다.",
3297
+ "pruneNow": "지금 정리",
3298
+ "useMirrors": "Registry 미러 사용",
3299
+ "useInsecure": "암호화되지 않은 Registry 허용",
3300
+ "publishPorts": "호스트에 포트 공개",
3301
+ "attachVolume": "Volume 연결",
3302
+ "setEnv": "환경 변수 설정",
3303
+ "defaultNet": "기본",
3304
+ "mountPath": "마운트 경로",
3305
+ "restartNo": "안 함",
3306
+ "restartUnless": "중지하기 전까지",
3307
+ "restartAlways": "항상",
3308
+ "restartOnFail": "실패 시",
3309
+ "needAck": "정리 전에 확인해 주세요",
3310
+ "scopeContainers": "중지된 컨테이너",
3311
+ "scopeImages": "미사용 이미지",
3312
+ "scopeVolumes": "미사용 Volume",
3313
+ "scopeBuilder": "빌드 캐시",
3314
+ "scopeSystem": "미사용 전부",
3315
+ "noVolumesYet": "Volume이 없습니다. 먼저 Volume 탭에서 만드세요.",
3316
+ "customPort": "다른 호스트 포트",
3317
+ "customPortHost": "호스트 포트",
3318
+ "customPortContainer": "컨테이너 포트",
3319
+ "pctUsed": "{{n}}% 사용",
3320
+ "customPortHint": "1–65535. Example: 9090 → 80.",
3321
+ "pickBridge": "Bridge network"
3322
+ },
3323
+ "deleteTitle": "Delete {{id}}",
3324
+ "deleteDesc": "This cannot be undone.",
3325
+ "deleteC1": "The resource is removed from this host.",
3326
+ "deleteComposeVal": "This is a validator stack — the validator instance is also deleted.",
3327
+ "pruneTitle": "Prune Docker resources",
3328
+ "pruneDesc": "Type PRUNE to confirm. Unused data cannot be restored.",
3329
+ "pruneC1": "Unused resources in the selected scope are deleted.",
3330
+ "pruneC2": "Volume and system prune permanently delete unused data volumes.",
3331
+ "pruneC3": "Stopped containers or unused images in this scope are removed.",
3332
+ "df": {
3333
+ "images": "Images",
3334
+ "containers": "Containers",
3335
+ "volumes": "Local volumes",
3336
+ "builder": "Build cache",
3337
+ "other": "Other"
3338
+ },
3339
+ "deleteRunningWarn": "This container is still running or restarting. It will be force-removed.",
3340
+ "stopEngineDesc": "This stops the Docker engine and all {{n}} container(s) on this host."
2765
3341
  },
2766
3342
  "email": {
2767
3343
  "title": "이메일",
@@ -2812,7 +3388,7 @@
2812
3388
  "needExecute": "YSK_EXECUTE 필요",
2813
3389
  "viewQueue": "대기열 보기",
2814
3390
  "flushQueue": "대기열 플러시",
2815
- "queueHint": "로컬 Postfix 대기열을 읽으려면 대기열 보기를 클릭하세요.",
3391
+ "queueHint": "로컬 Postfix 큐. 조회는 읽기 탐침이며 비우기는 YSK_EXECUTE가 필요합니다.",
2816
3392
  "deleteThisId": "이 ID 삭제",
2817
3393
  "queueEmpty": "지연된 메일 없음",
2818
3394
  "queueEmptyHint": "지연된 메시지 없음",
@@ -3081,7 +3657,8 @@
3081
3657
  "dmarcMissing": "DMARC 누락 - 적극 권장",
3082
3658
  "ptrBad": "PTR 역방향 DNS가 없거나 잘못됨 - VPS 공급자에게 요청",
3083
3659
  "port25Blocked": "아웃바운드 포트 25가 차단된 것으로 나타납니다. 차단 해제를 요청하거나 SMTP 릴레이를 사용하세요.",
3084
- "port25Unknown": "포트 25 상태를 알 수 없음 - 연결 확인 실행"
3660
+ "port25Unknown": "포트 25 상태를 알 수 없음 - 연결 확인 실행",
3661
+ "dmarcUnpublished": "DMARC가 패널에서 생성되었지만 아직 공개 DNS에 게시되지 않았습니다."
3085
3662
  },
3086
3663
  "stack": {
3087
3664
  "tlsNote": "SMTP/IMAP용 Let's Encrypt를 통한 TLS 인증서",
@@ -3122,7 +3699,8 @@
3122
3699
  "postfixReloaded": "Postfix가 다시 로드되었습니다.",
3123
3700
  "postfixReloadFailed": "접미사 다시 로드 실패: {{detail}}",
3124
3701
  "dovecotApplied": "Dovecot TLS 코드 조각을 작성하고 다시 로드를 시도했습니다.",
3125
- "dovecotSkipped": "건너뛴 Dovecot(설치되지 않았거나 doveconf를 사용할 수 없음)"
3702
+ "dovecotSkipped": "건너뛴 Dovecot(설치되지 않았거나 doveconf를 사용할 수 없음)",
3703
+ "dovecotSslOmitted": "메일 인증서가 누락되었습니다. ssl=no를 작성하여 Dovecot이 LE 파일 없이 시작할 수 있도록 했습니다."
3126
3704
  },
3127
3705
  "policyApplySystemHint": "Postfix/Rspamd 맵을 작성하고 다시 로드하려면 \"시스템에 적용\"을 선택하세요.",
3128
3706
  "rateLimitAppliedNote": "시간당 아웃바운드 비율 및 스팸 방지 플래그가 적용됩니다(시스템 적용이 켜져 있는 경우).",
@@ -3161,12 +3739,12 @@
3161
3739
  "deliverabilityDesc": "PTR/DNS/포트 25 확인",
3162
3740
  "dnsTodosDesc": "복사한 후 DNS 호스트에 추가하세요.",
3163
3741
  "deliverabilityHonesty": "PTR을 설정하거나 포트 25를 잠금 해제할 수 없습니다.",
3164
- "warmupSuggest": "暖身建議",
3165
- "writeSsoSkeleton": "寫入 Roundcube SSO 지원",
3166
- "rateLimitPerHour": "每小시계息上限",
3167
- "rateLimitGlobalHint": "전체域取各域name最小值",
3168
- "savePolicyWritten": "只寫入控조제면",
3169
- "dnsblMultiIp": "많은 IP RBL",
3742
+ "warmupSuggest": "워밍업 제안",
3743
+ "writeSsoSkeleton": "Roundcube SSO 골격 기록",
3744
+ "rateLimitPerHour": "시간당 메시지 상한",
3745
+ "rateLimitGlobalHint": "전역은 도메인별 최솟값 사용",
3746
+ "savePolicyWritten": "제어면에만 기록",
3747
+ "dnsblMultiIp": "다중 IP RBL",
3170
3748
  "webmailTool": "웹메일 소프트웨어",
3171
3749
  "webmailToolRoundcube": "원형큐브(기본값)",
3172
3750
  "webmailToolSnappy": "SnappyMail(경량)",
@@ -3238,7 +3816,41 @@
3238
3816
  "mailboxEmptyTitle": "아직 편지함 없음",
3239
3817
  "passwordMismatch": "비밀번호가 일치하지 않습니다.",
3240
3818
  "passwordTooShort": "비밀번호는 8자 이상이어야 합니다.",
3241
- "mailboxUpdateNeedField": "새 비밀번호를 설정하거나 상태를 변경하세요."
3819
+ "mailboxUpdateNeedField": "새 비밀번호를 설정하거나 상태를 변경하세요.",
3820
+ "catchallHint": "정의되지 않은 로컬 부분은 대상 사서함으로 갑니다. 적용 전까지 초안입니다.",
3821
+ "queueSearchPh": "ID, 보낸 사람, 받는 사람 검색…",
3822
+ "queueId": "큐 ID",
3823
+ "queueSender": "보낸 사람",
3824
+ "queueRecipients": "받는 사람",
3825
+ "queueSize": "크기",
3826
+ "queueReason": "이유",
3827
+ "queueActive": "전송 중",
3828
+ "queueHeld": "보류",
3829
+ "queueDeferred": "지연",
3830
+ "deleteQueueTitle": "이 큐 메일을 삭제할까요?",
3831
+ "deleteQueueDesc": "로컬 MTA 큐에서 {{id}}를 제거합니다. YSK_EXECUTE가 필요합니다.",
3832
+ "openQueuePage": "메일 큐 열기",
3833
+ "healthUnchecked": "아직 확인되지 않음",
3834
+ "dovecotFailedHint": "Dovecot failed. Open the Software tab for status; if the mail certificate is missing, issue it on the SSL page first.",
3835
+ "domainsListDesc": "이 호스트에 등록된 메일 도메인",
3836
+ "healthChecklist": "점검표 {{score}}/100",
3837
+ "healthChecklistHint": "점검표 점수 — DNS/PTR/포트 25 실측 전",
3838
+ "healthLiveHint": "실측 점수",
3839
+ "installWebmailTitle": "공유 웹메일 프로젝트 생성(첫 설치)",
3840
+ "reinstallWebmailTitle": "기존 웹메일 프로젝트 재구축/업그레이드",
3841
+ "reinstallNeedInstall": "먼저 웹메일을 설치하세요",
3842
+ "dovecotFailedStatus": "비둘기장은 {{status}}입니다. 장치 요약을 보려면 소프트웨어 탭을 엽니다.",
3843
+ "mailCertMissing": "{{hosts}}에 대한 인증서가 없습니다. SSL 페이지에서 발급하세요.",
3844
+ "mailCertPresent": "메일 인증서가 이미 발급되었습니다. 이는 인증서 누락 문제가 아닙니다.",
3845
+ "webmailNeedCert": "{{host}}에 대한 인증서가 없습니다. HTTPS를 강제하기 전에 SSL에서 발급하세요.",
3846
+ "flushQueueEmpty": "대기열이 비어 있습니다.",
3847
+ "flushQueueNeedExecute": "큐를 플러시하려면 YSK_EXECUTE(호스트 실행 권한)가 필요합니다.",
3848
+ "healthUncheckedHint": "DNS / PTR / 25번 포트는 아직 검사하지 않았습니다.",
3849
+ "deliverabilityScore": "전달성 팩",
3850
+ "opendkimNoReload": "OpenDKIM은 다시 로드를 지원하지 않습니다. 키나 테이블 변경 후 재시작하십시오.",
3851
+ "opendkimNoReloadTitle": "이 스택에서는 systemctl reload opendkim을 지원하지 않습니다",
3852
+ "tlsRequestLeFor": "Request LE for {{host}}",
3853
+ "deliverabilityChecks": "Checks"
3242
3854
  },
3243
3855
  "errors": {
3244
3856
  "YSK_UNAUTHORIZED": "승인되지 않은",
@@ -3279,7 +3891,9 @@
3279
3891
  "sessionExpired": "세션이 만료되었습니다. 다시 로그인",
3280
3892
  "sessionIdle": "유휴 시간 초과; 다시 로그인",
3281
3893
  "totpNotEnabled": "2FA가 활성화되지 않았습니다",
3282
- "totpSecretNoDataDir": "TOTP 비밀번호가 암호화되었지만 dataDir이 설정되지 않았습니다."
3894
+ "totpSecretNoDataDir": "TOTP 비밀번호가 암호화되었지만 dataDir이 설정되지 않았습니다.",
3895
+ "mustChangePassword": "계속하려면 새 비밀번호를 설정해야 합니다",
3896
+ "policyNeedsOwn2fa": "이 계정에 대해 2FA를 활성화하고 다른 사람에게 2FA를 요구하기 전에 TOTP 코드로 확인하세요."
3283
3897
  },
3284
3898
  "http": {
3285
3899
  "notFoundRoute": "찾을 수 없음: {{method}} {{path}}",
@@ -3289,7 +3903,8 @@
3289
3903
  "unprocessable": "서버에서 요청을 거부했습니다.",
3290
3904
  "requestFailed": "요청 실패({{status}})",
3291
3905
  "jsonInvalid": "잘못된 JSON",
3292
- "internal": "내부 오류"
3906
+ "internal": "내부 오류",
3907
+ "payloadTooLarge": "요청 본문이 너무 큽니다"
3293
3908
  },
3294
3909
  "YSK_HOST_BROWSE_SSRF": "보안 정책에 의해 호스트 탐색이 차단되었습니다.",
3295
3910
  "YSK_HOST_BROWSE_SESSION": "호스트 찾아보기 세션을 찾을 수 없거나 만료되었습니다.",
@@ -3302,9 +3917,9 @@
3302
3917
  "statTotal": "총 금지",
3303
3918
  "statBanList": "금지 목록",
3304
3919
  "statBoot": "부팅 시",
3305
- "startedOk": "Fail2ban이 시작되었습니다",
3920
+ "startedOk": "fail2ban이 시작되었습니다",
3306
3921
  "startService": "서비스 시작",
3307
- "notInstalled": "Fail2ban이 설치되어 있지 않습니다",
3922
+ "notInstalled": "fail2ban이 설치되어 있지 않습니다",
3308
3923
  "toolHintPrefix": "기본 도구:",
3309
3924
  "toolHintBody": "failure2ban = 로그를 스캔한 후,",
3310
3925
  "toolHintTemp": "일시적인",
@@ -3323,7 +3938,7 @@
3323
3938
  "banipOk": "반입 완료",
3324
3939
  "manualBanHint": "임시 차단;",
3325
3940
  "currentBans": "현재 금지됨",
3326
- "bannedTableTitle": "금지된 IP(실시간 Fail2ban-client)",
3941
+ "bannedTableTitle": "금지된 IP(실시간 fail2ban-client)",
3327
3942
  "bannedTableDesc": "클라이언트 액세스가 필요합니다. 금지 해제에는 YSK_EXECUTE가 필요합니다.",
3328
3943
  "unbanOk": "금지 해제됨",
3329
3944
  "unban": "금지 해제",
@@ -3331,9 +3946,9 @@
3331
3946
  "whitelistAdded": "허용 목록에 추가됨",
3332
3947
  "addWhitelistShort": "+화이트리스트",
3333
3948
  "emptyBansTitle": "금지된 IP 없음",
3334
- "emptyBansDesc": "또는 Fail2ban-client를 읽을 권한이 없습니다.",
3949
+ "emptyBansDesc": "또는 fail2ban-client를 읽을 권한이 없습니다.",
3335
3950
  "ignoreipTitle": "IP 허용 목록 무시",
3336
- "ignoreipDesc": "IP는 절대 금지되지 않습니다(패널 파일 + 선택적 라이브 Fail2ban-client)",
3951
+ "ignoreipDesc": "IP는 절대 금지되지 않습니다(패널 파일 + 선택적 라이브 fail2ban-client)",
3337
3952
  "addIp": "IP 추가",
3338
3953
  "addWhitelist": "허용 목록에 추가",
3339
3954
  "applyPolicyIgnoreip": "정책 적용(ignoreip 포함)",
@@ -3364,19 +3979,44 @@
3364
3979
  "enableJailsHint": "감옥 활성화(확인 후 적용):",
3365
3980
  "writtenOnlyMsg": "패널 파일 작성(호스트에는 적용되지 않음)",
3366
3981
  "writeOnly": "패널 파일만 쓰기",
3367
- "appliedOk": "Fail2ban 적용됨",
3982
+ "appliedOk": "fail2ban 적용됨",
3368
3983
  "applyToSystem": "시스템에 적용",
3369
3984
  "systemdTitle": "체계화된 제어",
3370
3985
  "enableAndStart": "활성화 및 시작",
3371
3986
  "serviceHint": "공격 대응용",
3372
3987
  "serviceHintSuffix": "(이 페이지의 감옥 + Nginx 속도 제한을 호출합니다.",
3373
3988
  "actionOk": {
3374
- "enable": "Fail2ban 활성화 및 시작됨",
3375
- "start": "Fail2ban이 시작되었습니다",
3376
- "reload": "Fail2ban이 다시 로드되었습니다.",
3377
- "restart": "Fail2ban이 다시 시작되었습니다.",
3378
- "stop": "Fail2ban이 중지되었습니다."
3379
- }
3989
+ "enable": "fail2ban 활성화 및 시작됨",
3990
+ "start": "fail2ban이 시작되었습니다",
3991
+ "reload": "fail2ban이 다시 로드되었습니다.",
3992
+ "restart": "fail2ban이 다시 시작되었습니다.",
3993
+ "stop": "fail2ban이 중지되었습니다."
3994
+ },
3995
+ "statWhitelist": "화이트리스트",
3996
+ "invalidIp": "유효한 IPv4, IPv6 또는 CIDR을 입력하세요.",
3997
+ "whitelistPendingApply": "패널 목록에 저장됩니다. Jail.local을 작성하려면 정책 적용을 누르세요.",
3998
+ "ignoreipFile": "dataDir/fail2ban/ignoreip.txt",
3999
+ "jailsTabHint": "활성 감옥 상태. 정책 탭에서 감옥을 켜거나 끕니다.",
4000
+ "colJail": "교도소",
4001
+ "colEnabled": "켜짐",
4002
+ "serviceStateLine": "장치 {{unit}} · {{state}} · 부팅 {{boot}}",
4003
+ "jail": {
4004
+ "sshd": "SSH 무차별 대입",
4005
+ "nginxHttpAuth": "Nginx HTTP 인증",
4006
+ "nginxBotsearch": "Nginx 스캐너/봇 프로브",
4007
+ "nginxBadbots": "Nginx는 알려진 나쁜 봇",
4008
+ "nginxLimitReq": "Nginx 속도 제한 감옥",
4009
+ "postfix": "접미사 메일 무차별 대입",
4010
+ "dovecot": "Dovecot 메일 로그인",
4011
+ "recidive": "반복 위반자"
4012
+ },
4013
+ "cannotBanSelf": "이것은 호스트 또는 로그인 IP입니다. 금지하는 대신 Ignoreip에 추가하세요.",
4014
+ "suggestIgnoreHint": "제안된 관리자 IP(정책을 적용할 때까지만 패널 파일):",
4015
+ "suggestIgnoreAdd": "{{ip}} 추가",
4016
+ "whitelistEmptyWarn": "허용 목록이 비어 있습니다. jail이 당신을 차단할 수 있습니다. ignoreip 적용 전에 로그인 IP를 넣으세요.",
4017
+ "suggestIgnoreLogin": "내 로그인 IP {{ip}}",
4018
+ "applyIgnoreEmptyWarn": "허용 목록이 빈 채로 적용하면 ignoreip가 비워집니다",
4019
+ "applyIgnoreNeedConfirm": "jail ignoreip를 다시 쓰고 fail2ban을 다시 불러옵니다"
3380
4020
  },
3381
4021
  "featurePage": {
3382
4022
  "back": "뒤로"
@@ -3674,15 +4314,15 @@
3674
4314
  "shareTorrentFile": ".torrent 다운로드",
3675
4315
  "shareSeedStatus": "시딩 상태",
3676
4316
  "shareBtStats": "비트토렌트 상태",
3677
- "btSeeds": "Seeds",
3678
- "btLeechers": "Leechers",
3679
- "btPeers": "Peers",
4317
+ "btSeeds": "씨앗",
4318
+ "btLeechers": "거머리",
4319
+ "btPeers": "동료",
3680
4320
  "btUploadSpeed": "업로드 속도",
3681
4321
  "btDownloadSpeed": "다운로드 속도",
3682
- "btUploaded": "Uploaded",
3683
- "btDownloaded": "Downloaded",
3684
- "btRatio": "Ratio",
3685
- "btUpdatedAt": "Updated",
4322
+ "btUploaded": "업로드됨",
4323
+ "btDownloaded": "다운로드됨",
4324
+ "btRatio": "비율",
4325
+ "btUpdatedAt": "업데이트됨",
3686
4326
  "btServerStats": "서버 시더",
3687
4327
  "btClientStats": "귀하의 고객",
3688
4328
  "btSeeding": "시딩 중",
@@ -3691,7 +4331,7 @@
3691
4331
  "btError": "시드 오류",
3692
4332
  "publicShareMethod": "어떻게 다운로드하시겠습니까?",
3693
4333
  "publicShareDirect": "직접 다운로드",
3694
- "publicShareBt": "BitTorrent",
4334
+ "publicShareBt": "비트토렌트",
3695
4335
  "openBtTracker": "BT 트래커 열기",
3696
4336
  "publicShareBtInBrowser": "브라우저에서 WebTorrent 다운로드",
3697
4337
  "publicShareBtProgress": "다운로드 {{pct}}% · peers {{peers}} · ↓ {{down}} · ↑ {{up}}",
@@ -3699,7 +4339,49 @@
3699
4339
  "publicShareBtFailed": "WebTorrent 실패: {{detail}}",
3700
4340
  "publicShareBtNeedMagnet": "이 공유에 대한 마그넷 URI가 없습니다.",
3701
4341
  "publicShareBtUnsupported": "이 브라우저는 WebTorrent를 실행할 수 없습니다. 대신 자석이나 .torrent를 사용하세요.",
3702
- "btNone": "—"
4342
+ "btNone": "—",
4343
+ "uploadStatusSkipped": "건너뜀",
4344
+ "uploadStatusCancelled": "취소됨",
4345
+ "conflict": {
4346
+ "titleFile": "“{{name}}” 항목이 이미 있습니다",
4347
+ "titleFolder": "“{{name}}” 폴더가 이미 있습니다",
4348
+ "descFile": "처리 방법을 선택하세요. 바꾸기를 고르기 전에는 덮어쓰지 않습니다.",
4349
+ "descFolder": "처리 방법을 선택하세요. 병합은 기존 폴더를 유지하고 내용을 이어서 처리합니다.",
4350
+ "incoming": "가져올 항목",
4351
+ "existing": "이미 있음",
4352
+ "kindFile": "파일",
4353
+ "kindFolder": "폴더",
4354
+ "skip": "건너뛰기",
4355
+ "skipHint": "이 항목을 추가하지 않습니다",
4356
+ "keepBoth": "둘 다 유지",
4357
+ "keepBothHint": "가져올 항목을 {{name}}(으)로 저장",
4358
+ "replace": "바꾸기",
4359
+ "replaceHint": "기존 파일을 덮어씁니다. 가능하면 버전 스냅샷을 남깁니다.",
4360
+ "replaceFolderHint": "이 폴더 안의 같은 이름 파일을 덮어씁니다. 다른 파일은 그대로입니다.",
4361
+ "merge": "병합",
4362
+ "mergeHint": "기존 폴더를 유지하고 새 파일을 그 안에 추가합니다",
4363
+ "applyAll": "남은 이름 충돌 모두에 적용",
4364
+ "applyAllHint": "이번 끌어놓기 또는 복사/이동의 나머지에 같은 동작을 사용합니다",
4365
+ "cancelRest": "나머지 취소",
4366
+ "progress": "{{current}} / {{total}}",
4367
+ "typeMismatch": "“{{name}}” {{destKind}}이(가) 이미 있습니다. 가져올 항목은 {{incomingKind}}입니다.",
4368
+ "skipped": "건너뜀",
4369
+ "cancelled": "취소됨"
4370
+ },
4371
+ "emptyTrashTitle": "휴지통을 비우시겠습니까?",
4372
+ "emptyTrashDesc": "휴지통에 있는 모든 파일은 영구적으로 삭제됩니다. 이 작업은 취소할 수 없습니다.",
4373
+ "purgeForeverDesc": "이 파일은 영구적으로 삭제됩니다. 이 작업은 취소할 수 없습니다.",
4374
+ "webdavReissueUnchanged": "재발행 후에도 토큰 ID가 변경되지 않았습니다. 쓰기가 지속되지 않았을 수 있습니다. 다시 시도해 보세요.",
4375
+ "webdavDisableFailed": "WebDAV는 비활성화 후에도 여전히 활성화되어 있습니다. 쓰기가 지속되지 않았을 수 있습니다. 다시 시도해 보세요.",
4376
+ "dirNamedLikeFile": "(폴더 잔여물; 이름이 파일처럼 보임)",
4377
+ "webdavAfterEnable": "WebDAV를 켜고 토큰을 발급한 뒤에 사용할 수 있습니다.",
4378
+ "webdavAlreadyOff": "WebDAV is already off",
4379
+ "deleteMore": " and {{n}} more",
4380
+ "unshareTitle": "Revoke this share?",
4381
+ "unshareDesc": "Revoke the link for {{name}} ({{url}}). The link stops working immediately.",
4382
+ "pillTrash": "{{count}} in trash",
4383
+ "pillSpace": "{{used}} used",
4384
+ "webdavTokenInactive": "Disabled — token #{{id}} is not active"
3703
4385
  },
3704
4386
  "firewall": {
3705
4387
  "profiles": {
@@ -3732,7 +4414,7 @@
3732
4414
  "notInstalled": "UFW가 설치되지 않았습니다",
3733
4415
  "toolHintPrefix": "기본 도구:",
3734
4416
  "toolHintBody": "UFW = 포트/영구 규칙 · 공격 대응 및 자동 금지 사용",
3735
- "toolHintFail2ban": "failure2ban = 임시 로그 기반 금지",
4417
+ "toolHintfail2ban": "failure2ban = 임시 로그 기반 금지",
3736
4418
  "executeOffHint": "시스템 변경 꺼짐 — 상태를 읽을 수 있습니다.",
3737
4419
  "tabs": {
3738
4420
  "rules": "규칙",
@@ -3740,7 +4422,7 @@
3740
4422
  "deny": "IP 영구 거부",
3741
4423
  "profiles": "프로필",
3742
4424
  "about": "설명",
3743
- "services": "Services"
4425
+ "services": "서비스"
3744
4426
  },
3745
4427
  "currentRules": "현재 규칙",
3746
4428
  "rulesSourceHint": "UFW 번호가 매겨진 규칙(ufw 상태 번호가 매겨짐)",
@@ -3770,7 +4452,7 @@
3770
4452
  "allowThisPort": "이 포트를 허용하세요",
3771
4453
  "allowPortHint": "웹 호스트의 경우 22/80/443을 유지합니다.",
3772
4454
  "denyTitle": "IP 영구 거부",
3773
- "denySub": "UFW DENY · 일시적인 Fail2ban 금지와는 다름",
4455
+ "denySub": "UFW DENY · 일시적인 fail2ban 금지와는 다름",
3774
4456
  "denyPlaceholder": "거부할 IPv4 또는 IPv6",
3775
4457
  "deniedOk": "영구적으로 거부됨",
3776
4458
  "removedDeny": "거부가 삭제되었습니다.",
@@ -3796,12 +4478,21 @@
3796
4478
  "servicesEmptyDesc": "이 목록을 채우려면 관리형 서비스(웹, FTPS, VPN, DB…)를 시작하세요.",
3797
4479
  "servicesManualHint": "수동 포트 칩은 포트 탭 아래에 있습니다. 규칙이 태그된 상태로 유지되도록 여기에서 액세스를 관리하는 것이 좋습니다(ysk-svc).",
3798
4480
  "portsManualHint": "고급 수동 규칙. 관리되는 소프트웨어의 경우 서비스 탭을 선호합니다.",
3799
- "colService": "Service",
3800
- "colMode": "Mode",
3801
- "colPorts": "Ports",
3802
- "colSync": "Status",
3803
- "synced": "Synced",
3804
- "syncNow": "Sync"
4481
+ "colService": "서비스",
4482
+ "colMode": "방법",
4483
+ "colPorts": "포트",
4484
+ "colSync": "상태",
4485
+ "synced": "동기화됨",
4486
+ "syncNow": "동조",
4487
+ "disableConfirmTitle": "UFW를 사용 중지할까요?",
4488
+ "disableConfirmDesc": "호스트 방화벽이 트래픽을 필터하지 않습니다. 공용 네트워크에서는 SSH와 패널이 노출될 수 있습니다.",
4489
+ "disableConfirmConsequence": "기존 허용/거부 규칙은 유지되지만 UFW를 다시 켤 때까지 적용되지 않습니다.",
4490
+ "toolHintFail2ban": "failure2ban = 임시 로그 기반 금지",
4491
+ "servicesUfwOff": "UFW는 꺼져있습니다. 이 목록은 호스트가 시행하는 규칙이 아니라 원하는 노출입니다.",
4492
+ "desiredOnlyUfwOff": "원하는: {{mode}} · UFW 꺼짐(적용되지 않음)",
4493
+ "syncNotApplied": "UFW 꺼짐 · 적용되지 않음",
4494
+ "defaultNotApplied": "해당 없음(UFW 꺼짐)",
4495
+ "ufwOffHint": "UFW가 꺼진 동안에는 기본 수신이 적용되지 않습니다."
3805
4496
  },
3806
4497
  "ftp": {
3807
4498
  "title": "FTPS 계정",
@@ -3936,7 +4627,22 @@
3936
4627
  "sftpRegister": "키 등록",
3937
4628
  "sftpAddedAt": "추가됨 {{time}}",
3938
4629
  "sftpTechSummary": "기술 세부정보(고급)",
3939
- "sftpTechNote": "키는 관리 경로 아래에 기록됩니다."
4630
+ "sftpTechNote": "키는 관리 경로 아래에 기록됩니다.",
4631
+ "filterProject": "이 프로젝트의 FTP 계정만 표시",
4632
+ "clearProjectFilter": "모든 계정 보기",
4633
+ "vsftpdFailedHint": "vsftpd가 실패했습니다. 서비스 탭을 엽니다(listen과 ​​listening_ipv6이 둘 다 YES일 수는 없습니다).",
4634
+ "tabService": "서비스",
4635
+ "listenConflictLive": "Live vsftpd.conf에는 listening={{v4}} 및 listening_ipv6={{v6}}이 있습니다. 두 가지 모두 YES가 시작되지 않습니다.",
4636
+ "listenConflictNeedFix": "먼저 Listen / Listen_ipv6을 수정한 다음(둘 다 YES일 수 없음) 적용하세요.",
4637
+ "fixListenIpv4": "IPv4만 사용(listen=YES, listening_ipv6=NO)",
4638
+ "liveFileValue": "지금 제출하세요: {{value}}",
4639
+ "startBlockedFailed": "서비스가 실패했습니다. 시작하기 전에 유효한 구성을 적용하세요.",
4640
+ "ftpsNeedCert": "먼저 인증서 도메인을 선택하세요.",
4641
+ "detectPublicIp": "공개 IP 감지",
4642
+ "detectPublicIpTitle": "이 호스트에서 첫 번째 비루프백 IPv4를 채웁니다.",
4643
+ "pasvIpRequired": "적용 전에 PASV 공인 IP를 지정하세요(NAT/클라우드). 감지하거나 주소를 입력합니다.",
4644
+ "vsftpdFailedGeneric": "vsftpd failed. Open the Service tab for live settings and journal.",
4645
+ "stateFailed": "Failed to start"
3940
4646
  },
3941
4647
  "geo": {
3942
4648
  "continents": {
@@ -4181,26 +4887,26 @@
4181
4887
  "mediaNote": "실제 브라우저: 비디오가 스트리밍됩니다. 오디오가 아직 패널에 연결되지 않았습니다(2단계).",
4182
4888
  "isolationNote": "실제 브라우저는 Chrome용 임시 Linux 사용자를 생성합니다. 페이지를 떠나거나 유휴 시간 초과로 인해 해당 사용자가 삭제됩니다.",
4183
4889
  "resumeHint": "이전 세션 재개({{count}} 탭)",
4184
- "resume": "Resume",
4185
- "resumeDismiss": "Dismiss",
4890
+ "resume": "재개하다",
4891
+ "resumeDismiss": "해고하다",
4186
4892
  "resumeDone": "세션이 재개되었습니다.",
4187
4893
  "settingsSafety": "항해 안전",
4188
4894
  "settingsSafetyHint": "엄격한 차단은 더 위험한 호스트를 차단합니다. 완화됨은 더 넓은 인트라넷 대상을 허용합니다. 클라우드 메타데이터에 대한 SSRF 보호를 비활성화하지 않습니다.",
4189
- "safetyStrict": "Strict",
4190
- "safetyStandard": "Standard",
4191
- "safetyRelaxed": "Relaxed",
4895
+ "safetyStrict": "엄격한",
4896
+ "safetyStandard": "기준",
4897
+ "safetyRelaxed": "편안한",
4192
4898
  "settingsBlockHosts": "차단된 호스트 접미사",
4193
4899
  "settingsBlockHostsHint": "한 줄에 하나의 호스트 이름 또는 접미사(예: Malware.test). 정확한 일치와 접미사 일치는 차단됩니다.",
4194
4900
  "settingsAllowDangerousDownloads": "위험도가 높은 다운로드 허용(exe/스크립트)",
4195
4901
  "settingsAudioBridge": "페이지 오디오를 패널에 연결",
4196
4902
  "settingsAudioBridgeHint": "호스트 Chrome 오디오를 이 브라우저로 스트리밍합니다. 일부 사이트에서는 재생 잠금을 해제하려면 클릭이 필요합니다.",
4197
- "downloads": "Downloads",
4903
+ "downloads": "다운로드",
4198
4904
  "downloadsEmpty": "이 세션에는 다운로드가 없습니다.",
4199
- "downloadReady": "Ready",
4200
- "downloadBlocked": "Blocked",
4201
- "downloadPending": "Pending",
4202
- "downloadFailed": "Failed",
4203
- "downloadSave": "Save",
4905
+ "downloadReady": "준비됨",
4906
+ "downloadBlocked": "막힌",
4907
+ "downloadPending": "보류 중",
4908
+ "downloadFailed": "실패한",
4909
+ "downloadSave": "저장",
4204
4910
  "audioUnlock": "소리 활성화",
4205
4911
  "audioUnlockHint": "이 탭에서 오디오 재생을 잠금 해제하려면 클릭하세요.",
4206
4912
  "audioUnlocked": "오디오 잠금 해제됨",
@@ -4210,12 +4916,32 @@
4210
4916
  "audioNotBridged": "오디오 꺼짐",
4211
4917
  "audioNotBridgedHint": "페이지를 들으려면 설정에서 오디오 브리지를 켜세요.",
4212
4918
  "mediaPolicyTitle": "실제 브라우저의 미디어",
4213
- "mediaVideoLabel": "Video",
4919
+ "mediaVideoLabel": "동영상",
4214
4920
  "mediaVideoDesc": "호스트에서 렌더링되고 패널에 프레임으로 스트리밍됩니다.",
4215
- "mediaAudioLabel": "Audio",
4921
+ "mediaAudioLabel": "오디오",
4216
4922
  "mediaAudioDesc": "호스트 Chrome의 선택적 브리지; 잠금 해제 클릭이 필요할 수 있습니다.",
4217
- "mediaPolicyLabel": "Policy",
4218
- "mediaPolicyDesc": "다운로드 및 자동 재생은 위의 안전 및 다운로드 설정을 따릅니다."
4923
+ "mediaPolicyLabel": "정책",
4924
+ "mediaPolicyDesc": "다운로드 및 자동 재생은 위의 안전 및 다운로드 설정을 따릅니다.",
4925
+ "frameBlocked": "페이지를 패널 프레임에 표시할 수 없습니다.",
4926
+ "historyEmpty": "이 세션에는 기록이 없습니다.",
4927
+ "bookmarksEmpty": "아직 북마크가 없습니다.",
4928
+ "closeSessionHint": "이 탐색 세션에 대한 쿠키를 지웁니다. 북마크가 유지됩니다.",
4929
+ "bookmarkAdd": "북마크 추가 또는 제거",
4930
+ "bookmarkList": "북마크 목록",
4931
+ "envUnset": "설정되지 않음",
4932
+ "envPanelValue": "패널: {{value}}",
4933
+ "settingsNoSandboxWarn": "Chromium 샌드박스를 비활성화합니다. 신뢰할 수 있는 용기 내에서만 사용하세요. 다음 실제 브라우저 세션에 적용됩니다.",
4934
+ "settingsDangerDlWarn": "호스트 브라우저를 통해 실행 파일 및 스크립트 다운로드를 허용합니다. 이것이 필요하다는 것을 확인하세요.",
4935
+ "settingsDangerConfirmTitle": "위험도가 높은 탐색 설정을 활성화하시겠습니까?",
4936
+ "needUrl": "위에서 URL을 입력해 세션을 시작하세요.",
4937
+ "envColVar": "변수",
4938
+ "envColHost": "호스트 프로세스",
4939
+ "envColPanel": "패널 설정",
4940
+ "envColEffective": "적용값",
4941
+ "engineBrowserNeedChrome": "Real browser (Chrome not installed)",
4942
+ "egressHint": "The target site sees this server’s outbound address ({{host}}), not your laptop. Cookies stay in the server session jar.",
4943
+ "closeNoSession": "No session yet",
4944
+ "resumeHintDetail": "Resume previous session ({{count}} tabs) · {{url}} · {{when}}"
4219
4945
  },
4220
4946
  "listToolbar": {
4221
4947
  "searchPlaceholder": "찾다…",
@@ -4227,24 +4953,30 @@
4227
4953
  "activeFilters": "{{count}} 필터 활성화됨",
4228
4954
  "noResults": "일치하는 항목 없음",
4229
4955
  "noResultsHint": "다른 키워드를 사용하거나 필터를 삭제해 보세요.",
4230
- "searching": "수색…"
4956
+ "searching": "수색…",
4957
+ "emptyChip": "No items in this filter"
4231
4958
  },
4232
4959
  "logViewer": {
4233
4960
  "banIpTitle": "보호에서 {{ip}} 금지"
4234
4961
  },
4235
4962
  "login": {
4236
- "title": "YSK 서버에 로그인",
4963
+ "title": "YSK Server 로그인",
4237
4964
  "subtitle": "서버 콘솔",
4238
4965
  "username": "사용자 이름",
4239
4966
  "password": "비밀번호",
4240
4967
  "submit": "로그인",
4241
- "failed": "로그인에 실패했습니다. 사용자 이름이나 비밀번호를 확인하세요.",
4968
+ "failed": "로그인에 실패했습니다. 사용자 이름 또는 비밀번호를 확인하세요.",
4242
4969
  "footer": "YSK Limited의 제품",
4243
- "totpRequired": "이 계정에는 2FA가 활성화되어 있습니다. 6자리 코드를 입력하세요.",
4244
- "totpLabel": "인증코드",
4970
+ "totpRequired": "이 계정은 2FA가 켜져 있습니다. 6자리 코드를 입력하세요.",
4971
+ "totpLabel": "인증 코드",
4245
4972
  "totpHint": "인증 앱의 6자리 코드",
4246
4973
  "submitting": "로그인 중…",
4247
- "sessionExpired": "세션이 만료되었습니다. 다시 로그인"
4974
+ "sessionExpired": "세션이 만료되었습니다. 다시 로그인하세요",
4975
+ "newPassword": "새 비밀번호",
4976
+ "newPasswordAgain": "새 비밀번호 확인",
4977
+ "changePassword": "비밀번호 변경",
4978
+ "passwordMismatch": "비밀번호가 일치하지 않습니다",
4979
+ "passwordChanged": "비밀번호가 업데이트되었습니다"
4248
4980
  },
4249
4981
  "logs": {
4250
4982
  "catSystem": "시스템 파일",
@@ -4371,7 +5103,7 @@
4371
5103
  "logrotateLabel": "로그로테이션",
4372
5104
  "srcNginx": "nginx",
4373
5105
  "srcSsh": "SSH",
4374
- "srcFail2ban": "실패2금지",
5106
+ "srcfail2ban": "실패2금지",
4375
5107
  "srcAuthLog": "auth.log",
4376
5108
  "srcNginxError": "nginx 오류",
4377
5109
  "srcLetsEncrypt": "암호화하자",
@@ -4379,7 +5111,36 @@
4379
5111
  "groupVarLog": "/var/log",
4380
5112
  "prioErr": "오류+",
4381
5113
  "prioWarn": "경고+",
4382
- "prioInfo": "정보+"
5114
+ "prioInfo": "정보+",
5115
+ "srcFail2ban": "실패2금지",
5116
+ "vacuumSize": "500MB로 제한",
5117
+ "logrotateNoStatus": "아직 logrotate 상태 파일이 없습니다(실행된 적이 없다면 정상).",
5118
+ "autoVacuumOff": "자동 청소가 꺼져 있습니다. 활성화할 때까지 시간은 사용되지 않습니다.",
5119
+ "aboutAllowlist": "Explore는 허용 목록에 있는 저널 단위와 /var/log 경로만 읽을 수 있습니다. 임의의 호스트 경로는 제공되지 않습니다.",
5120
+ "aboutCustomPath": "설정에 사용자 정의 경로를 추가합니다(/var/log 또는 /run/log만 해당). 그런 다음 탐색에서 엽니다.",
5121
+ "noRowsInWindow": "이 기간에는 기록이 없습니다.",
5122
+ "showInactiveUnits": "비활성 장치 표시",
5123
+ "sseNeedFollow": "먼저 팔로우를 켭니다. SSE는 라이브 테일에만 사용됩니다.",
5124
+ "vacuumNeedRetention": "먼저 보존 기간을 입력하세요(예: 14d)",
5125
+ "vacuumNeedConfirm": "확인 필요 — 오래된 journal 로그를 삭제합니다",
5126
+ "vacuumSizeNeedConfirm": "확인 필요 — journal 디스크 사용을 제한합니다",
5127
+ "vacuumSizeAlreadyBelow": "현재 사용량이 한도보다 낮아 보통 삭제되지 않습니다.",
5128
+ "vacuumSizeNoopDesc": "journal이 이미 500 MB 미만입니다. vacuum --size=500M은 실행되지만 보통 삭제하지 않습니다.",
5129
+ "journalDiskHint": "현재 systemd-journald 사용량(활성 journal). /var/log 순환 파일은 포함하지 않습니다.",
5130
+ "varLogDiskHint": "/var/log 추정(순환 파일 포함).",
5131
+ "queryFirst": "먼저 조회하세요",
5132
+ "projectSourcesTitle": "출처 {{n}}개(파일 + journal)",
5133
+ "logrotatePath": "길",
5134
+ "logrotateLast": "마지막 회전",
5135
+ "logrotateExpand": "{{n}} 더보기",
5136
+ "logrotateCollapse": "간략히 표시",
5137
+ "logrotateVersion": "상태 버전 {{v}}",
5138
+ "errorsWindowHint": "Recent errors from the last overview probe (not live-updating when you switch tabs)",
5139
+ "sourceCount": "{{shown}} shown",
5140
+ "sourceUnavailable": "This source has not produced a log yet",
5141
+ "sourceNoLog": "No log yet",
5142
+ "exportJsonl": "JSONL export",
5143
+ "sseLive": " (live stream)"
4383
5144
  },
4384
5145
  "metrics": {
4385
5146
  "alert": {
@@ -4511,7 +5272,42 @@
4511
5272
  "usageNoteFull": "로컬 du의 사용량(추정되지 않음) 할당량은 제어 영역의 소프트 한도입니다. 하드 설정 할당량에는 호스트에 적용이 필요합니다.",
4512
5273
  "sseNeedLogin": "로그인되지 않았습니다. SSE를 열 수 없습니다",
4513
5274
  "sseSessionExpired": "로그인되지 않았거나 세션이 만료되었습니다. SSE를 열 수 없습니다",
4514
- "sseHttpError": "HTTP 스트리밍 {{status}}"
5275
+ "sseHttpError": "HTTP 스트리밍 {{status}}",
5276
+ "colFilesystem": "파일 시스템",
5277
+ "colMount": "산",
5278
+ "colSize": "크기",
5279
+ "colUsed": "사용된",
5280
+ "colAvail": "사용 가능",
5281
+ "colUsePct": "사용된 %",
5282
+ "colHome": "집",
5283
+ "usageNoteLink": "제어 영역 소프트 할당량. 프로젝트 격리 탭에 엄격한 제한을 적용합니다.",
5284
+ "alertsBuiltinOnly": "내장 CPU/메모리/디스크 임계값만 해당됩니다. 이메일, 웹훅 또는 Slack 채널이 없습니다.",
5285
+ "lastEvaluated": "마지막 확인",
5286
+ "shareNoQuotaHint": "할당량이 없어 비율이 없습니다. 프로젝트 격리 탭에서 설정하세요.",
5287
+ "setQuotaLink": "할당량 설정",
5288
+ "unusualHome": "비표준 경로",
5289
+ "unusualHomeHint": "/home/… 프로젝트 홈이 아닙니다. 정식 격리는 /home/ysk-server-{id}입니다.",
5290
+ "protectedPid": "PID 1 / init / systemd는 패널에서 신호를 보낼 수 없습니다",
5291
+ "sigTermTitle": "SIGTERM 보내기(프로세스 종료 요청)",
5292
+ "sigKillTitle": "SIGKILL 보내기(강제 종료 — 잡을 수 없음)",
5293
+ "batchTerm": "TERM",
5294
+ "batchKill": "KILL",
5295
+ "rawTopLabel": "원시 상단 (번역되지 않음)",
5296
+ "followSseLabel": "팔로우(실시간 스트림)",
5297
+ "alertsReadOnly": "내장 CPU/메모리/디스크 임계값만 해당됩니다. 이메일, 웹훅 또는 Slack 채널이 없습니다.",
5298
+ "alertsGoNotifications": "알림 센터 열기",
5299
+ "lastCheck": "마지막 확인",
5300
+ "rawTopHint": "번역되지 않은 top(1) 출력",
5301
+ "load1m": "Load 1m",
5302
+ "uptime": "Uptime",
5303
+ "filterCpu5": "≥5% CPU",
5304
+ "filterMem5": "≥5% memory",
5305
+ "signalHint": "Select a process, then send TERM or KILL.",
5306
+ "signalFromRow": "Select this process for TERM / KILL",
5307
+ "selectForSignal": "Select",
5308
+ "forceKillTitleNamed": "KILL PID {{pid}} ({{cmd}})?",
5309
+ "sendSigTitleNamed": "Send TERM to PID {{pid}} ({{cmd}})?",
5310
+ "controlPlaneNoSignal": "The control-plane process cannot be signalled"
4515
5311
  },
4516
5312
  "migrate": {
4517
5313
  "tabInventory": "목록",
@@ -4593,7 +5389,20 @@
4593
5389
  "dryRunOnlyDesc": "· 재고 + 사전 확인만; rsync 또는 대상 쓰기 없음",
4594
5390
  "executeNote": "호스트에는 YSK_EXECUTE=1 및 루트 API가 필요합니다. 마이그레이션 후 DNS A/AAAA를 업데이트하고 클라우드 방화벽 + 메일 PTR을 확인하세요.",
4595
5391
  "dnsCutover": "DNS 컷오버(수동)",
4596
- "dnsCutoverDesc": "이러한 이름에 대한 A/AAAA를 새 공용 IP로 지정합니다."
5392
+ "dnsCutoverDesc": "이러한 이름에 대한 A/AAAA를 새 공용 IP로 지정합니다.",
5393
+ "orphanHomesHint": "남은 프로젝트 주택(상점에 없음) 사용되지 않은 것을 확인한 후에만 제거하십시오.",
5394
+ "orphanRemove": "남은 집 없애기",
5395
+ "orphanRemoveTitle": "남은 프로젝트 홈을 삭제하시겠습니까?",
5396
+ "orphanRemoveDesc": "디스크에서 {{path}}를 영구적으로 삭제합니다. 이것은 상점 프로젝트가 아닙니다. YSK_EXECUTE=1이 필요합니다.",
5397
+ "orphanRemovePhrase": "확인하려면 DELETE를 입력하세요.",
5398
+ "orphanRemoveNeedConfirm": "확인이 필요합니다",
5399
+ "passwordNotStored": "Password is used for this SSH session only and is not saved on disk.",
5400
+ "overwriteDanger": "Overwrite will replace existing YSK data on the target. This cannot be undone from the panel.",
5401
+ "orphanBackupFirst": "Back up first (open Backups)",
5402
+ "expandAllWarnings": "Show all {{n}} warnings",
5403
+ "collapseWarnings": "Show fewer",
5404
+ "inventoriedWarn": "Inventoried · {{n}} warnings",
5405
+ "orphanMtime": "Last modified {{at}}"
4597
5406
  },
4598
5407
  "multiCheck": {
4599
5408
  "customPlaceholder": "맞춤 코드",
@@ -4648,7 +5457,7 @@
4648
5457
  "rust": "Rust",
4649
5458
  "protection": "방어센터",
4650
5459
  "firewall": "방화벽",
4651
- "fail2ban": "실패2금지",
5460
+ "fail2ban": "fail2ban",
4652
5461
  "users": "사용자 및 패키지",
4653
5462
  "services": "서비스",
4654
5463
  "metrics": "측정항목",
@@ -4670,7 +5479,9 @@
4670
5479
  "runtimes": "런타임",
4671
5480
  "security": "보안",
4672
5481
  "system": "시스템",
4673
- "ai": "AI"
5482
+ "ai": "AI",
5483
+ "validators": "검증자",
5484
+ "containers": "컨테이너"
4674
5485
  },
4675
5486
  "java": "Java",
4676
5487
  "kotlin": "Kotlin",
@@ -4689,8 +5500,13 @@
4689
5500
  "bookmarkPinned": "고정됨",
4690
5501
  "bookmarkAdded": "사이드바에 고정됨",
4691
5502
  "bookmarkRemoved": "사이드바에서 삭제됨",
4692
- "btTracker": "블루투스 트래커",
4693
- "support": "Support"
5503
+ "btTracker": "BT Tracker",
5504
+ "support": "지원하다",
5505
+ "noAccessTitle": "접근 권한 없음",
5506
+ "noAccessDesc": "현재 역할로는 이 페이지를 열 수 없습니다. 필요하면 관리자에게 요청하세요.",
5507
+ "backToDashboard": "대시보드로 돌아가기",
5508
+ "validators": "검증자 (Beta)",
5509
+ "docker": "도커"
4694
5510
  },
4695
5511
  "network": {
4696
5512
  "title": "네트워크 인터페이스",
@@ -4829,10 +5645,33 @@
4829
5645
  "azure_frontdoor": "푸른 정문",
4830
5646
  "gcore": "G코어 CDN",
4831
5647
  "custom": "맞춤형 프록시"
4832
- }
5648
+ },
5649
+ "needProvider": "IP 목록을 가져오기 전에 CDN 제공업체를 선택하세요.",
5650
+ "spoofWarn": "잘못된 CIDR을 신뢰하면 클라이언트가 X-Forwarded-For/CDN 헤더를 IP로 스푸핑할 수 있습니다."
4833
5651
  },
4834
5652
  "linkUp": "위로",
4835
- "linkDown": "아래에"
5653
+ "linkDown": "아래에",
5654
+ "linkDownTitle": "{{name}} 오프라인으로 전환",
5655
+ "linkDownNeedConfirm": "확인하려면 인터페이스 이름을 입력하세요.",
5656
+ "persistNmHint": "지속 가능이란 변경 사항이 NetworkManager를 통해 재부팅 후에도 유지될 수 있음을 의미합니다.",
5657
+ "hideRaw": "원시 출력 숨기기",
5658
+ "rawLoadedAt": "로드됨 {{time}}",
5659
+ "deleteDefaultPanelWarn": "기본 경로를 삭제하면 이 패널 세션이 중단될 수 있습니다. 확인하려면 DEFAULT를 입력하세요.",
5660
+ "typeDefaultToConfirm": "확인하려면 DEFAULT를 입력하세요.",
5661
+ "deleteDefaultNeedConfirm": "확인 필요 — DEFAULT 입력(이 패널 연결이 끊길 수 있음)",
5662
+ "deleteRouteNeedConfirm": "확인이 필요합니다",
5663
+ "nmUnavailable": "NetworkManager가 실행되고 있지 않습니다. 실시간 경로만 추가할 수 있습니다.",
5664
+ "defaultRouteDownNeedName": "이는 기본 경로 송신입니다. 확인하려면 인터페이스 이름을 입력하세요. 패널 연결이 끊어질 수 있습니다.",
5665
+ "linkDownDefault": "Down default route",
5666
+ "loopbackImmutable": "Loopback cannot be changed",
5667
+ "operUnknownHint": "Kernel did not report UP/DOWN (common for lo). The interface is still usable.",
5668
+ "statUp": "Up",
5669
+ "oper": {
5670
+ "up": "Up",
5671
+ "down": "Down",
5672
+ "unknown": "Unknown",
5673
+ "other": "Other"
5674
+ }
4836
5675
  },
4837
5676
  "nginx": {
4838
5677
  "pillSites": "{{count}} 사이트",
@@ -4918,6 +5757,12 @@
4918
5757
  "setIndexes": "디렉토리 목록",
4919
5758
  "bodyInherit": "글로벌"
4920
5759
  },
5760
+ "notFound": {
5761
+ "title": "페이지를 찾을 수 없습니다",
5762
+ "body": "{{path}}에 패널 페이지가 없습니다.",
5763
+ "hint": "알 수 없는 URL은 더 이상 대시보드로 보내지 않습니다.",
5764
+ "home": "대시보드"
5765
+ },
4921
5766
  "notes": {
4922
5767
  "notFound": "찾을 수 없음",
4923
5768
  "needPath": "경로 지정",
@@ -4950,16 +5795,42 @@
4950
5795
  },
4951
5796
  "ssh": {
4952
5797
  "identityNotFound": "신원을 찾을 수 없습니다",
4953
- "registrationNotFound": "등록을 찾을 수 없습니다"
5798
+ "registrationNotFound": "등록을 찾을 수 없습니다",
5799
+ "keyOkNologin": "Key accepted. Account has no login shell (nologin) — use SFTP. Treated as PASS.",
5800
+ "keyOkSftp": "SSH 쉘이 거부된 후 SFTP 비밀번호가 성공했습니다."
4954
5801
  },
4955
5802
  "cdn": {
4956
5803
  "siteNotFound": "CDN 사이트를 찾을 수 없습니다",
4957
- "nodeMissing": "노드가 존재하지 않습니다"
5804
+ "nodeMissing": "노드가 존재하지 않습니다",
5805
+ "probe": {
5806
+ "timeout": "{{ms}}ms({{detail}}) 후 연결 시간이 초과되었습니다. 피어에 방화벽이 있을 수 있습니다.",
5807
+ "dns": "DNS 조회에 실패했습니다({{detail}}).",
5808
+ "refused": "{{ms}}ms({{detail}}) 후에 연결이 거부되었습니다. 포트 폐쇄 또는 단방향 차단.",
5809
+ "tls": "TLS 확인에 실패했습니다({{detail}}).",
5810
+ "unreach": "{{ms}}ms({{detail}}) 후에 호스트에 연결할 수 없습니다.",
5811
+ "http": "{{ms}}ms({{detail}}) 후에 HTTP 프로브가 실패했습니다."
5812
+ },
5813
+ "loopbackOriginRemote": "원본은 127.0.0.1입니다. 즉, 원격 에지가 아닌 이 호스트입니다. 연결 가능한 원본 IP 또는 바인딩_ip를 설정합니다.",
5814
+ "needSshOrFleet": "원격 엣지에는 아웃바운드 SSH ID(또는 사용자 이름) 또는 /agents 플릿 세션이 필요합니다. 상태 URL만으로는 전송이 적용되지 않습니다.",
5815
+ "originRemoteRewrite": "원격 에지는 루프백 대신 도달 가능한 원점 {{url}}을 사용합니다.",
5816
+ "originRemoteUnknown": "오리진은 루프백이고 공개/LAN IP 또는 바인딩_ip가 알려져 있지 않습니다. Apply는 원격 에지가 설정될 때까지 거부합니다."
4958
5817
  },
4959
5818
  "backup": {
4960
5819
  "fileNotFound": "백업 파일을 찾을 수 없습니다",
4961
5820
  "resticNoPassword": "Restic이 활성화되었지만 비밀번호가 설정되지 않았습니다",
4962
- "resticNotInPath": "PATH에 있지 않음"
5821
+ "resticNotInPath": "PATH에 있지 않음",
5822
+ "dbEnvUnreadable": ".db.env를 읽을 수 없습니다. SQL 덤프를 건너뛰었습니다.",
5823
+ "dbEnvNoName": ".db.env에는 데이터베이스 이름이 없습니다. SQL 덤프를 건너뛰었습니다.",
5824
+ "targetOutside": "복원 대상은 프로젝트 홈 또는 공용 파일 루트 내부에 있어야 합니다.",
5825
+ "testUnsaved": "저장되지 않은 양식 값 테스트(설정에 기록되지 않음)",
5826
+ "testIdentity": "ssh (identity) to {{spec}} ok",
5827
+ "sshAuthFailed": "SSH 키 또는 비밀번호가 거부되었습니다(공개 키). 아웃바운드 ID를 선택하거나 sshpass를 설치하세요.",
5828
+ "remotePathIsFile": "원격 경로 {{path}}는 파일입니다. 디렉토리를 사용하십시오.",
5829
+ "remoteMkdirFailed": "원격 디렉터리를 생성할 수 없습니다: {{detail}}",
5830
+ "sidecarPushed": "SQL 사이드카도 푸시됨 {{name}}",
5831
+ "controlPlaneDryRun": "미리보기만 가능 - 작성된 내용이 없습니다. 패널에서 복원을 사용하고 작성할 문구를 확인하세요.",
5832
+ "controlPlaneNeedConfirm": "전체 제어 영역 복원에는 RESTORE-Control-PLANE 확인 문구가 필요합니다.",
5833
+ "controlPlaneRestartAfter": "복원에 성공한 후 API를 다시 시작하세요."
4963
5834
  },
4964
5835
  "redis": {
4965
5836
  "cliMissing": "redis-cli가 설치되지 않았습니다"
@@ -5003,7 +5874,8 @@
5003
5874
  "pathOutsideSandbox": "샌드박스 외부 경로: {{target}}",
5004
5875
  "notFoundRel": "찾을 수 없음: {{relPath}}",
5005
5876
  "fileNotFoundRel": "파일을 찾을 수 없습니다: {{relPath}}",
5006
- "notFoundFrom": "찾을 수 없음: {{fromPath}}"
5877
+ "notFoundFrom": "찾을 수 없음: {{fromPath}}",
5878
+ "alreadyExists": "같은 이름이 이미 있습니다: {{name}}"
5007
5879
  },
5008
5880
  "dns": {
5009
5881
  "needZoneServerIp": "영역 및 서버 IP 입력",
@@ -5043,7 +5915,10 @@
5043
5915
  },
5044
5916
  "db": {
5045
5917
  "needExecuteCreate": "호스트 실행이 꺼져 있습니다. 패널에서 데이터베이스를 생성할 수 없습니다.",
5046
- "dryRunMysql": "테스트 실행: 데이터베이스가 생성되지 않았습니다. YSK_EXECUTE=1과 함께 --execute를 사용하여 프로비저닝"
5918
+ "dryRunMysql": "테스트 실행: 데이터베이스가 생성되지 않았습니다. YSK_EXECUTE=1과 함께 --execute를 사용하여 프로비저닝",
5919
+ "remoteNoCreds": "사용자 이름/비밀번호가 저장되지 않음 — TCP 전용(등록은 로그인이 아님)",
5920
+ "remoteReachable": "TCP {{host}}:{{port}} 개방({{ms}}ms).",
5921
+ "remoteUnreachable": "TCP {{host}}:{{port}} 폐쇄 또는 필터링됨({{ms}}ms)."
5047
5922
  },
5048
5923
  "net": {
5049
5924
  "invalidIface": "잘못된 인터페이스 이름",
@@ -5124,7 +5999,17 @@
5124
5999
  "dns": "DNS",
5125
6000
  "email": "이메일",
5126
6001
  "isolation": "프로젝트 격리",
5127
- "ops": "운영"
6002
+ "ops": "운영",
6003
+ "runtimesNode": "Node.js",
6004
+ "runtimesPhp": "PHP",
6005
+ "runtimesPython": "파이썬",
6006
+ "runtimesGo": "Go",
6007
+ "pm2": "PM2",
6008
+ "runtimesNodeFix": "/runtimes/node에서 노드 설치",
6009
+ "runtimesPhpFix": "/runtimes/php에서 PHP 설치",
6010
+ "runtimesPythonFix": "/runtimes/python에서 Python 설치",
6011
+ "runtimesGoFix": "/runtimes/go에서 Go 설치",
6012
+ "pm2Fix": "노드 런타임 페이지에서 PM2 설치"
5128
6013
  },
5129
6014
  "needAdmin": "관리자 권한이 필요합니다",
5130
6015
  "notInstalled": "미설치",
@@ -5397,7 +6282,7 @@
5397
6282
  "n0259": "도메인",
5398
6283
  "n0260": "도메인을 찾을 수 없음:",
5399
6284
  "n0261": "dovecot 다시 로드 실패 또는 servicenot(시브 쓰기, 다시 로드 성공)",
5400
- "n0262": "시험 운행 함대 파견 (아님)",
6285
+ "n0262": "플릿 디스패치 미리보기(대기열에 넣지 않음)",
5401
6286
  "n0263": "테스트 실행 피어 푸시(SCP 아님)",
5402
6287
  "n0264": "테스트 실행 원격 설치(Ssh 아님)",
5403
6288
  "n0265": "테스트 실행 전송 완료(전체 부트스트랩)",
@@ -5406,10 +6291,10 @@
5406
6291
  "n0268": "테스트 실행 — /etc를 쓰지 않음",
5407
6292
  "n0269": "테스트 실행: add --execute firstapply ufw",
5408
6293
  "n0270": "테스트 실행: 인벤토리 + 프리플라이트 통과, 패키지/이송 아님",
5409
- "n0271": "테스트 실행: 프로브/. add --execute YSK_EXECUTE=1 firstreally 프로비저닝",
5410
- "n0272": "dry-run: 관리 파일(dataDir)을 작성했습니다. 실행 추가 + YSK_EXECUTE=1 + 루트 번째 시스템 드롭인",
5411
- "n0273": "드라이런: 아닙니다. add --execute YSK_EXECUTE=1 firstreally 금지",
5412
- "n0274": "드라이런: 아닙니다. add --execute YSK_EXECUTE=1 firstreally 차단 해제",
6294
+ "n0271": "테스트 실행: 프로브/계획 전용. 실제로 프로비저닝하려면 YSK_EXECUTE=1 --execute를 전달하세요.",
6295
+ "n0272": "Dry-run: 관리 파일(dataDir)을 작성했습니다. --execute를 YSK_EXECUTE=1 전달하여 시스템 드롭인을 설치합니다.",
6296
+ "n0273": "드라이런(Dry-run): 금지되지 않음. 실제로 금지하려면 --execute YSK_EXECUTE=1 전달하세요.",
6297
+ "n0274": "테스트 실행: 금지가 해제되지 않았습니다. 실제로 금지를 해제하려면 YSK_EXECUTE=1 --execute를 전달하세요.",
5413
6298
  "n0275": "dryRun=true — API 변경",
5414
6299
  "n0276": "dryRun: 쓰지 않음",
5415
6300
  "n0277": "dump write dataDir, 전송하지 않음",
@@ -5417,10 +6302,10 @@
5417
6302
  "n0279": "실행( YSK_EXECUTE=1 + 루트)",
5418
6303
  "n0280": "실행하려면 대기열에 추가해야 합니다.",
5419
6304
  "n0281": "내보내기 관리자",
5420
- "n0282": "Fail2ban 적용 실패",
5421
- "n0283": "Fail2ban 서비스",
5422
- "n0284": "Fail2ban이 활성화되지 않았습니다.",
5423
- "n0285": "Fail2ban 아님",
6305
+ "n0282": "fail2ban 적용 실패",
6306
+ "n0283": "fail2ban 서비스",
6307
+ "n0284": "fail2ban이 활성화되지 않았습니다.",
6308
+ "n0285": "fail2ban 아님",
5424
6309
  "n0286": "실패2금지",
5425
6310
  "n0287": "fail2ban 상태 읽기 실패",
5426
6311
  "n0288": "fall2ban: sshd, nginx-http-auth 및 표준 감옥",
@@ -5676,7 +6561,7 @@
5676
6561
  "n0538": "YSK_SECRETS_KEY",
5677
6562
  "n0539": "baseUrl/.ysk-cdn-health 경로(C2 캔 상태 위치)",
5678
6563
  "n0540": "버전(최신 재정의)",
5679
- "n0541": "YSK_LATEST_VERSION (/)",
6564
+ "n0541": "YSK_LATEST_VERSION(/)",
5680
6565
  "n0542": "없는",
5681
6566
  "n0543": "mysqldump — 패키지는 MySQL을 사용할 수 없습니다.",
5682
6567
  "n0544": "pg_dump — 패키지는 Postgres를 사용할 수 없습니다.",
@@ -5739,7 +6624,7 @@
5739
6624
  "n0601": "파일 또는 디렉토리 삭제",
5740
6625
  "n0602": "deletesystemuser — 거부",
5741
6626
  "n0603": "삭제: 호스트 실행이 활성화되지 않았습니다. 경로 관리 데이터 디렉터리",
5742
- "n0604": "Fail2ban을 적용하고 서비스를 활성화하려면",
6627
+ "n0604": "fail2ban을 적용하고 서비스를 활성화하려면",
5743
6628
  "n0605": "페이지 활성화(소프트/일반)",
5744
6629
  "n0606": "강화",
5745
6630
  "n0607": "또는",
@@ -5758,7 +6643,7 @@
5758
6643
  "n0620": "시작프로세스프로세스가 아님",
5759
6644
  "n0621": "OP캐시",
5760
6645
  "n0622": "SSL",
5761
- "n0623": "",
6646
+ "n0623": "활성",
5762
6647
  "n0624": "파일",
5763
6648
  "n0625": "파일",
5764
6649
  "n0626": "노드 wsrep, HA ≥2 노드",
@@ -5860,9 +6745,9 @@
5860
6745
  "n0722": "그리고 쿠키",
5861
6746
  "n0723": "활성화 --이제 실패2반",
5862
6747
  "n0724": "galera_new_cluster(부트스트랩)",
5863
- "n0725": "Fail2ban을 다시 로드했습니다.",
6748
+ "n0725": "fail2ban을 다시 로드했습니다.",
5864
6749
  "n0726": "nginx를 다시 로드하세요",
5865
- "n0727": "Fail2ban을 다시 시작했습니다.",
6750
+ "n0727": "fail2ban을 다시 시작했습니다.",
5866
6751
  "n0728": "scp 영역(다시 로드된 피어 ≠ 명명됨)에 기록됨",
5867
6752
  "n0729": "scp에서 피어/tmp로(피어에 기록됨 ≠ 서비스가 다시 시작됨)",
5868
6753
  "n0730": "systemctl reload nginx",
@@ -5889,7 +6774,7 @@
5889
6774
  "n0751": "nginx 캐시 디렉토리 및 다시 로드(hostnot Proxy_cache는 가능)",
5890
6775
  "n0752": "서버완료인증서제발",
5891
6776
  "n0753": "CF 전용 UFW 적용 (origin CF + Keepport)",
5892
- "n0754": "Fail2ban 적용",
6777
+ "n0754": "fail2ban 적용",
5893
6778
  "n0755": "시스템 Postfix에 적용된 설정",
5894
6779
  "n0756": "시스템 Nginx에 적용",
5895
6780
  "n0757": "적용된 방화벽 규칙",
@@ -5974,7 +6859,7 @@
5974
6859
  "n0836": "인증서를 주세요. 실패했습니다.",
5975
6860
  "n0837": "≥ 파일",
5976
6861
  "n0838": "설정유지백업",
5977
- "n0839": "성공이 대상은 BatchMode, 가능",
6862
+ "n0839": "성공은 대상이 BatchMode SSH(비대화형)를 허용한다는 것을 의미합니다. 이는 전역 액세스 권한을 부여하는 것이 아닙니다.",
5978
6863
  "n0840": "또는 32767",
5979
6864
  "n0841": "소프트웨어가 설치됨",
5980
6865
  "n0842": "허가/",
@@ -6034,7 +6919,7 @@
6034
6919
  "n0896": "클라이언트가 IP만 사용할 때 더 빠른 인증",
6035
6920
  "n0897": ": Cloudflare 영역 + CF_API_TOKEN firstcan Under Attack API",
6036
6921
  "n0898": "할 수 없다",
6037
- "n0899": "Nginx와 Fail2ban",
6922
+ "n0899": "Nginx와 fail2ban",
6038
6923
  "n0900": "성능 및 리소스",
6039
6924
  "n0901": "IP/도메인. Spamhaus 등을 확인해 보시기 바랍니다.",
6040
6925
  "n0902": "A/AAAA(정점 및 www)",
@@ -6061,9 +6946,9 @@
6061
6946
  "n0923": "그리고",
6062
6947
  "n0924": "테이블 오픈 캐시",
6063
6948
  "n0925": "PHP 버전",
6064
- "n0926": "더 많은 Fail2ban 감옥, 더 빠른 금지",
6949
+ "n0926": "더 많은 fail2ban 감옥, 더 빠른 금지",
6065
6950
  "n0927": "Redis를 부탁드립니다",
6066
- "n0928": "Fail2ban 감옥 업데이트(관리 파일)",
6951
+ "n0928": "fail2ban 감옥 업데이트(관리 파일)",
6067
6952
  "n0929": "업데이트미완료",
6068
6953
  "n0930": "가장 엄격한 Nginx 제한(~1req/s)",
6069
6954
  "n0931": "12 디렉토리",
@@ -6134,7 +7019,7 @@
6134
7019
  "n0996": "local nginx -t OK (관리형 conf, ≠ edge 적용)",
6135
7020
  "n0997": "로컬 wsrep은 노드가 아닌 크기일 수 있습니다.",
6136
7021
  "n0998": "로컬 ysk.json을 읽을 수 없음/지문",
6137
- "n0999": "로컬 OK; 완전한 정상 피어 프로브( 아님)",
7022
+ "n0999": "로컬 노드는 괜찮습니다. 완전한 정상 상태에는 피어 프로브가 필요합니다(완료되지 않음).",
6138
7023
  "n1000": "local nginx — conf 작성했지만 다시 로드하지 않음",
6139
7024
  "n1001": "localAvailable NM 연결; 성공할 것입니다. \"\" 또는 NetworkManager를 사용할 수 있습니다.",
6140
7025
  "n1002": "localAvailable ps - 할 수 없음 ()",
@@ -6228,7 +7113,7 @@
6228
7113
  "n1088": "휴가.체 캔",
6229
7114
  "n1089": "vhost requireupdate (또는 conf 서버)",
6230
7115
  "n1090": "wsrep 상태(Galera 또는 servicenot 불가)",
6231
- "n1091": "활성 감옥 또는 Fail2ban이 실행되지 않음",
7116
+ "n1091": "활성 감옥 또는 fail2ban이 실행되지 않음",
6232
7117
  "n1092": "통나무",
6233
7118
  "n1093": "캔 시스템 (작성)",
6234
7119
  "n1094": "타겟팅 가능(healthUrl / baseUrl / publicIpv4)",
@@ -6368,7 +7253,7 @@
6368
7253
  "n1228": "상태: 작성됨() - 가장자리 적용되지 않음; PR-C3 팬아웃 + nginx -t/reload",
6369
7254
  "n1229": "상태: 작성됨(시스템 Postfix/Rspamd에는 적용되지 않음)",
6370
7255
  "n1230": "상태: 기록됨(시스템 Nginx가 아님, ApplySystem이 다시 로드를 시도함)",
6371
- "n1231": "상태: 작성됨(관리; 라이브 Fail2ban-client YSK_EXECUTE 또는 \"→시스템에 적용\" Jail.local)",
7256
+ "n1231": "상태: 작성됨(관리; 라이브 fail2ban-client YSK_EXECUTE 또는 \"→시스템에 적용\" Jail.local)",
6372
7257
  "n1232": "상태: 기록됨(키/DS, 영역이 아니거나 영역이 아님)",
6373
7258
  "n1233": "상태: 작성됨(SSO 아님)",
6374
7259
  "n1234": "상태: 기록됨( /not 아님) - 성공",
@@ -6576,7 +7461,7 @@
6576
7461
  "n1436": "읽기 금지 실패",
6577
7462
  "n1437": "금지된 권한을 읽을 수 있습니다. 금지 해제/금지 YSK_EXECUTE",
6578
7463
  "n1438": "읽기 금지 실패(권한 또는 서비스)",
6579
- "n1439": "Fail2ban 금지 읽기 실패",
7464
+ "n1439": "fail2ban 금지 읽기 실패",
6580
7465
  "n1440": "읽지 못했습니다.",
6581
7466
  "n1441": "읽기 로그 실패",
6582
7467
  "n1442": "읽기 파일",
@@ -6679,7 +7564,7 @@
6679
7564
  "n1539": "YSK_EXECUTE 먼저 ufw 적용 가능",
6680
7565
  "n1540": "YSK_EXECUTE는 실제로 자동 차단됩니다.",
6681
7566
  "n1541": "YSK_EXECUTE 바닙",
6682
- "n1542": "YSK_EXECUTE Fail2ban 서비스",
7567
+ "n1542": "YSK_EXECUTE fail2ban 서비스",
6683
7568
  "n1543": "YSK_EXECUTE=1 firstcan 진공 저널",
6684
7569
  "n1544": "실행:true 또는 dryRun:true",
6685
7570
  "n1545": "nginx log_format $upstream_cache_status(또는 X-YSK-캐시)첫 번째 HIT/MISS",
@@ -6730,7 +7615,7 @@
6730
7615
  "n1590": "",
6731
7616
  "n1591": "루트 아님 — useradd / systemd / nginx 시스템 경로가 제한됩니다.",
6732
7617
  "n1592": "seccomp가 아닌 경우 runAsUser가 필요합니다.",
6733
- "n1593": "패널부탁드립니다 /",
7618
+ "n1593": "공개 요청 /",
6734
7619
  "n1594": "패널연결; 사용 가능\"\" ( )",
6735
7620
  "n1595": "패널이 루트로 실행되고 있지 않습니다.",
6736
7621
  "n1596": "사용 가능 적용:거짓",
@@ -6971,7 +7856,7 @@
6971
7856
  "t0221": "관리하다: {{v0}} ({{v1}} )",
6972
7857
  "t0222": "sshdignoreip {{v0}} {{v1}} · 상태: 적용됨",
6973
7858
  "t0223": "실패2ban-clientignoreip 실패: {{v0}} (관리되는 파일 쓰기; 적용됨)",
6974
- "t0224": "Fail2ban 감옥: {{v0}}",
7859
+ "t0224": "fail2ban 감옥: {{v0}}",
6975
7860
  "t0225": "쓴 단위 {{v0}}",
6976
7861
  "t0226": "상태는 여전히 {{v0}} (적용되지 않음)",
6977
7862
  "t0227": "예상치 못한 Apply_status: {{v0}}",
@@ -7001,7 +7886,7 @@
7001
7886
  "t0251": "{{v0}} 설치가 완료되지 않았습니다.",
7002
7887
  "t0252": "{{v0}} 서비스 시작",
7003
7888
  "t0253": "시작 실패: {{v0}}",
7004
- "t0254": "Node.js 버전 {{v0}} 지원; 사용 가능한 버전: {{v1}}",
7889
+ "t0254": "Node.js 버전 {{v0}} 지원; 사용 가능 버전: {{v1}}",
7005
7890
  "t0255": "PHP 버전 {{v0}} 지원; 사용 가능 시간: {{v1}}",
7006
7891
  "t0256": "Python 버전 {{v0}} 지원; 사용 가능 시간: {{v1}}",
7007
7892
  "t0257": "Go 버전 {{v0}} 지원; 사용 가능 시간: {{v1}}",
@@ -7044,7 +7929,7 @@
7044
7929
  "t0294": "pdnsutil 영역 {{v0}}",
7045
7930
  "t0295": "systemctl {{v0}} fall2ban 알았어",
7046
7931
  "t0296": "{{v0}} 실패: {{v1}}",
7047
- "t0297": "Fail2ban 금지 {{v0}} @ {{v1}} (, 금지 시간 제한)",
7932
+ "t0297": "fail2ban 금지 {{v0}} @ {{v1}} (, 금지 시간 제한)",
7048
7933
  "t0298": "Banip 실패: {{v0}}",
7049
7934
  "t0299": "감옥: {{v0}}",
7050
7935
  "t0300": "IP 무시: dataDir/fail2ban/ignoreip.txt",
@@ -7123,12 +8008,12 @@
7123
8008
  "t0373": "프로젝트 \"{{v0}}\" 격리",
7124
8009
  "t0374": "로컬 경로로 {{v0}}",
7125
8010
  "t0375": "신원 {{v0}}: {{v1}}",
7126
- "t0376": "scp(ID) {{v0}}",
7127
- "t0377": "scp(ID) 실패: {{v0}}",
7128
- "t0378": "scp를 {{v0}}",
7129
- "t0379": "scp 실패: {{v0}}",
7130
- "t0380": "scp를 {{v0}}",
7131
- "t0381": "scp 실패: {{v0}} (원격 ID 백업)",
8011
+ "t0376": "sftp(identity) {{v0}}에 성공",
8012
+ "t0377": "sftp(identity) 실패: {{v0}}",
8013
+ "t0378": "sftp로 {{v0}}에 성공",
8014
+ "t0379": "sftp 실패: {{v0}}",
8015
+ "t0380": "sftp로 {{v0}}에 성공",
8016
+ "t0381": "sftp 실패: {{v0}} (백업 remote identityId를 설정할 수 있음)",
7132
8017
  "t0382": "시즌3 {{v0}}",
7133
8018
  "t0383": "S3 실패: {{v0}}",
7134
8019
  "t0384": ": {{v0}}/{{v1}} 관리자 2FA 활성화",
@@ -7136,7 +8021,7 @@
7136
8021
  "t0386": "{{v0}} 경로",
7137
8022
  "t0387": "{{v0}} 찾을 수 없음",
7138
8023
  "t0388": "{{v0}}를 설치하거나 PATH에 추가하세요.",
7139
- "t0389": "사용 가능한 버전: {{v0}}",
8024
+ "t0389": "사용 가능 버전: {{v0}}",
7140
8025
  "t0390": "{{v0}}%( {{v1}}MB)",
7141
8026
  "t0391": "{{v0}}% ({{v1}})",
7142
8027
  "t0392": "서비스 시작 {{v0}}",
@@ -7218,7 +8103,7 @@
7218
8103
  "t0468": "인상할 수 있음(후보자 ≠ 현재): {{v0}}",
7219
8104
  "t0469": "npm 레지스트리 HTTP {{v0}}",
7220
8105
  "t0470": "GitHub, HTTP {{v0}} 출시",
7221
- "t0471": "GitHub package.json HTTP {{v0}}",
8106
+ "t0471": "GitHub 패키지.json HTTP {{v0}}",
7222
8107
  "t0472": "npm: {{v0}}@{{v1}}",
7223
8108
  "t0473": "npm {{v0}} 사용할 수 없음: {{v1}}",
7224
8109
  "t0474": "GitHub 릴리스를 사용할 수 없음: {{v0}}",
@@ -7300,7 +8185,7 @@
7300
8185
  "t0550": "액티브 디펜스 프리셋 → {{v0}}",
7301
8186
  "t0551": "금지 → {{v0}} ({{v1}} / {{v2}})",
7302
8187
  "t0552": "적용된 방어 프리셋: {{v0}}",
7303
- "t0553": "Fail2ban 실패: {{v0}}",
8188
+ "t0553": "fail2ban 실패: {{v0}}",
7304
8189
  "t0554": "ufw 실패: {{v0}}",
7305
8190
  "t0555": "{{v0}}",
7306
8191
  "t0556": "ufw 삭제 실패: {{v0}}",
@@ -7379,15 +8264,15 @@
7379
8264
  "t0629": "프로젝트 {{v0}} 집: {{v1}}",
7380
8265
  "t0630": "프로젝트 {{v0}} bind_ip={{v1}} — 가능 ( IP )",
7381
8266
  "t0631": "프로젝트 {{v0}} 집이 아닌 경로: {{v1}}",
7382
- "t0632": "집(상점): {{v0}}",
8267
+ "t0632": "디스크에 있는 고아 집(일치하는 상점 프로젝트 없음): {{v0}}",
7383
8268
  "t0633": "메일주소: {{v0}}",
7384
8269
  "t0634": "{{v0}} — 타겟팅할 수 없음",
7385
8270
  "t0635": "조사할 수 없습니다 {{v0}}",
7386
8271
  "t0636": "{{v0}} · {{v1}}",
7387
8272
  "t0637": "프로젝트 {{v0}} · {{v1}} · DB {{v2}} · Redis {{v3}}",
7388
- "t0638": "설치소프트웨어 {{v0}} · 주택 {{v1}}",
8273
+ "t0638": "설치할 소프트웨어 {{v0}} · homes {{v1}}",
7389
8274
  "t0639": "컷오버 호스트 {{v0}}",
7390
- "t0640": "경고 {{v0}} (부탁드립니다)",
8275
+ "t0640": "{{v0}} 경고 — 컷오버 전에 검토하세요.",
7391
8276
  "t0641": "열쇠 {{v0}}",
7392
8277
  "t0642": "키를 사용할 수 없습니다: {{v0}}",
7393
8278
  "t0643": "targetnot writeauthorized_keys: {{v0}}",
@@ -7451,7 +8336,7 @@
7451
8336
  "t0701": "CDN {{v0}}",
7452
8337
  "t0702": "원본 쉴드 노드가 존재하지 않습니다: {{v0}}",
7453
8338
  "t0703": "가장자리: {{v0}}",
7454
- "t0704": "원본 URL(): {{v0}}",
8339
+ "t0704": "원본 URL(프로젝트 바인딩에서): {{v0}}",
7455
8340
  "t0705": "CDN 업데이트 {{v0}}",
7456
8341
  "t0706": "CDN 생성 {{v0}}",
7457
8342
  "t0707": "원점 방패: 가장자리 방패 {{v0}} → {{v1}}",
@@ -7547,7 +8432,16 @@
7547
8432
  "t0797": "시간대 실패: {{v0}}",
7548
8433
  "tScoreFrom": "점수={{score}} from={{from}}",
7549
8434
  "appliedTag": "(적용된)",
7550
- "writtenTag": "(작성만 가능)"
8435
+ "writtenTag": "(작성만 가능)",
8436
+ "selfDestMissing": "실행 중인 설치 디렉터리를 찾을 수 없습니다(systemd ExecStart 또는 cli.js)",
8437
+ "selfDestUnwritable": "실행 중인 설치 디렉터리에 쓸 수 없습니다 {{v0}}",
8438
+ "selfApplied": "{{v0}}을(를) {{v1}}에 적용했습니다",
8439
+ "selfVerifyFail": "적용 후 버전 파일에 {{v0}}이(가) 없습니다",
8440
+ "selfDownloadFail": "공식 패키지 {{v0}}을(를) 다운로드하거나 압축을 풀 수 없습니다: {{v1}}",
8441
+ "selfOverlayFail": "공식 패키지를 실행 중인 디렉터리에 적용하지 못했습니다: {{v0}}",
8442
+ "selfUpgradeHint": "패널 적용에 실패했습니다. root로 실행: curl -fsSL https://raw.githubusercontent.com/yanshekki/ysk-server/main/install.sh | bash -s -- --upgrade",
8443
+ "n1611": "UFW가 비활성 상태입니다. {{n}} 영구 거부 규칙이 user.rules에 저장되어 있지만 커널이 이를 시행하지 않습니다.",
8444
+ "n1612": "UFW는 비활성 상태입니다. 거부 규칙은 user.rules에만 기록되며 커널은 패킷을 삭제하지 않습니다. 먼저 UFW를 활성화하세요. 자동으로 활성화되지 않습니다."
7551
8445
  },
7552
8446
  "tpl": {
7553
8447
  "deleted": "삭제됨 {{name}}",
@@ -7610,7 +8504,7 @@
7610
8504
  "noParen": "(없음)",
7611
8505
  "keepOldDb": "(오래된 DB를 유지)",
7612
8506
  "ufwNotDetected": "이 호스트에서는 UFW가 감지되지 않습니다.",
7613
- "fail2banStartHint": "Fail2ban 페이지에서 시작하세요",
8507
+ "fail2banStartHint": "fail2ban 페이지에서 시작하세요",
7614
8508
  "hasExecuteNotRoot": "EXECUTE가 켜져 있지만 프로세스가 루트가 아닙니다.",
7615
8509
  "notRootTarget": "루트가 아님(대상 사용자add/apt가 차단됨)",
7616
8510
  "reapplyDone": "주요 단계 재적용 완료",
@@ -7777,7 +8671,10 @@
7777
8671
  "accessReconnectHint": "이미 연결된 클라이언트는 새 경로를 선택하려면 다시 연결해야 합니다.",
7778
8672
  "ovpnNatDurable": "재부팅을 위해 OpenVPN NAT/forward가 설치되었습니다(systemd ExecStartPost).",
7779
8673
  "clientFullTunnelProtect": "전체 터널 클라이언트가 감지되었습니다(AllowedIPs 0.0.0.0/0). 패널/SSH 응답이 LAN NIC에 유지되도록 호스트 보호를 적용했습니다.",
7780
- "clientFullTunnelHint": "팁: 분할 액세스의 경우에만 conf에서 AllowedIP를 VPN/LAN CIDR(0.0.0.0/0 아님)로 설정한 다음 다시 연결하세요."
8674
+ "clientFullTunnelHint": "팁: 분할 액세스의 경우에만 conf에서 AllowedIP를 VPN/LAN CIDR(0.0.0.0/0 아님)로 설정한 다음 다시 연결하세요.",
8675
+ "serverStopped": "{{engine}} 서버가 중지되었습니다.",
8676
+ "serverStopFailed": "중지할 수 없습니다. {{engine}} 서버: {{detail}}",
8677
+ "peersSynced": "Peer list reloaded on the running WireGuard interface."
7781
8678
  },
7782
8679
  "vnc": {
7783
8680
  "needInstall": "설치 {{stack}}",
@@ -7871,7 +8768,12 @@
7871
8768
  "clientDeleted": "고객 프로필이 삭제되었습니다.",
7872
8769
  "sessionStartCwd": "VNC 시작 실패: 세션 사용자가 작업 디렉터리에 액세스할 수 없습니다(표시 :{{display}}). HOME에서 시작하여 수정되었습니다.",
7873
8770
  "desktopRestarted": "데스크톱 프로필이 적용되고 세션이 다시 시작되었습니다({{desktop}}). VNC/noVNC를 다시 연결합니다.",
7874
- "desktopNeedsStart": "데스크탑 프로필 {{desktop}}가 xstartup에 기록되었습니다. 신청하려면 세션을 시작하세요."
8771
+ "desktopNeedsStart": "데스크탑 프로필 {{desktop}}가 xstartup에 기록되었습니다. 신청하려면 세션을 시작하세요.",
8772
+ "passwordNeedTiger": "vncpasswd를 찾을 수 없습니다. 비밀번호를 설정하기 전에 TigerVNC(tigervnc-standalone-server)를 설치하세요.",
8773
+ "linuxUserRolledBack": "VNC 비밀번호 실패 후 남은 Linux 사용자 {{user}}를 제거했습니다.",
8774
+ "linuxUserOrphan": "VNC 비밀번호 실패 후 남은 Linux 사용자 {{user}}를 제거할 수 없습니다.",
8775
+ "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.",
8776
+ "userdelLeftover": "Panel account removed, but Linux user {{user}} is still on the host. Remove it from Users or the host."
7875
8777
  },
7876
8778
  "apache": {
7877
8779
  "needServerName": "서버 이름이 필요합니다",
@@ -7921,7 +8823,102 @@
7921
8823
  "startedDetached": "BT 추적기 분리 작업자 시작됨(pid {{pid}}, 포트 {{port}})",
7922
8824
  "runningDetached": "분리된 작업자로 실행되는 추적기(pid {{pid}})",
7923
8825
  "jobQueued": "BT 토렌트 생성 대기 중(큰 공유)",
7924
- "jobRunning": "BT 토렌트 생성 실행 중"
8826
+ "jobRunning": "BT 토렌트 생성 실행 중",
8827
+ "libraryAdded": "WebTorrent 라이브러리에 {{name}}를 추가했습니다.",
8828
+ "libraryInspectFailed": "해당 .torrent 또는 자석을 읽을 수 없습니다.",
8829
+ "libraryDup": "해당 토렌트는 이미 라이브러리에 있습니다.",
8830
+ "libraryDestBad": "저장 폴더는 유효한 파일 경로가 아닙니다.",
8831
+ "libraryTorrentTooBig": ".torrent 파일이 8MiB보다 큽니다.",
8832
+ "libraryNotFound": "라이브러리 항목을 찾을 수 없습니다.",
8833
+ "libraryPaused": "일시중지됨",
8834
+ "libraryResumed": "재개됨",
8835
+ "libraryRemoved": "라이브러리에서 삭제됨",
8836
+ "libraryFilesRemoved": "다운로드한 파일을 삭제했습니다.",
8837
+ "libraryRestoreDone": "라이브러리 복원: 시작됨 {{started}}/{{attempted}}(실패함 {{failed}})",
8838
+ "applyTrackersDone": "{{n}} 실시간 발표 슬롯에 추가 추적기를 적용했습니다.",
8839
+ "libraryNeedServe": "저장되었습니다. WebTorrent가 다운로드하거나 시드할 수 있도록 패널(ysk-serverserv)을 엽니다.",
8840
+ "libraryDestIsFile": "{{name}}이라는 폴더를 만들 수 없습니다. 해당 이름의 파일이 이미 존재합니다.",
8841
+ "librarySeedMissing": "해당 폴더에 시드할 일치하는 파일이 없습니다.",
8842
+ "libraryWaitingPeers": "동료를 기다리고 있습니다. 파일이 이미 이 호스트에 있는 경우 다시 추가하고 시드-기존을 선택합니다."
8843
+ },
8844
+ "leftover": {
8845
+ "staleCliTitle": "오래된 남은 CLI",
8846
+ "staleCli": "남은 CLI가 여전히 존재합니다: {{path}}(실행 중인 제품 {{version}}). PATH가 이를 선호할 수도 있습니다. 제거 방법: rm -f {{path}}",
8847
+ "apacheDefaultTitle": "Apache 남은 기본 사이트",
8848
+ "apacheDefault": "Apache 000-default는 여전히 활성화되어 있습니다. 이는 스톡 사이트 파일입니다. 이는 Apache가 공개 :80(YSK Apache는 127.0.0.1:8080에서 예상됨)을 수신한다는 의미는 아닙니다. 오버레이는 이를 비활성화하지 않습니다. 패널에서 Apache를 적용하거나 Apache를 호스팅하여 --execute를 적용합니다.",
8849
+ "nginxCatchAllTitle": "Nginx 포괄 기능이 누락되었습니다.",
8850
+ "nginxCatchAll": "ysk-000-default.conf가 /etc/nginx/conf.d에 없습니다. 알 수 없는 SNI가 실패할 수 있습니다. 프로젝트 nginx-sync --execute를 실행합니다.",
8851
+ "vsftpdTitle": "vsftpd 장치 실패",
8852
+ "vsftpd": "vsftpd가 실패했습니다. 오버레이는 Listen/listen_ipv6을 다시 작성하지 않습니다. 패널에서 FTP를 적용합니다.",
8853
+ "dovecotTitle": "누락된 인증서를 가리키는 Dovecot TLS",
8854
+ "dovecot": "Dovecot ssl_cert가 {{path}} 누락을 가리킵니다. 오버레이는 ssl=no를 다시 쓰지 않습니다. 인증서 발급 후 메일 TLS를 적용하거나 이메일 스택을 적용하세요.",
8855
+ "overlayDoesNotHeal": "제품 오버레이는 nginx, Apache, vsftpd 또는 Dovecot을 다시 작성하지 않습니다. 나열된 적용 명령(root + YSK_EXECUTE=1)을 사용합니다.",
8856
+ "readinessTitle": "오버레이 후 호스트 남은 부분",
8857
+ "readinessClean": "남은 Apache 기본값이 없거나 nginx catch-all이 누락되었거나 vsftpd가 실패했거나 오래된 CLI가 감지되었습니다.",
8858
+ "staleCliRemoved": "잔여 CLI {{path}}을(를) 제거했습니다.",
8859
+ "staleCliRemoveFailed": "잔여 CLI {{path}}을(를) 제거하지 못했습니다: {{detail}}",
8860
+ "vsftpdSslOff": "FTPS 인증서 파일이 없어 vsftpd를 ssl_enable=NO로 설정한 뒤 다시 시작했습니다.",
8861
+ "dovecotSslOff": "{{path}}이(가) 없어 Dovecot을 ssl=no로 설정한 뒤 다시 시작했습니다."
8862
+ },
8863
+ "git": {
8864
+ "missingBin": "자식이 PATH에 없습니다",
8865
+ "auth": "인증에 실패했습니다. 배포 키 또는 HTTPS 토큰을 추가합니다.",
8866
+ "hostkey": "SSH 호스트 키 확인에 실패했습니다. 호스트 키를 확인하고 고정하세요.",
8867
+ "dirty": "작업 트리에는 {{count}} 로컬 변경 사항이 있습니다. 당기기가 차단되었습니다.",
8868
+ "diverged": "빨리감기를 할 수 없습니다. 로컬 Git 기록을 삭제하려면 원격 참조로 재설정하세요.",
8869
+ "missingRef": "해당 분기, 태그 또는 커밋이 원격에 없습니다.",
8870
+ "shallow": "이 클론은 얕습니다. 이전 커밋을 고정하기 전에 전체 기록을 가져오세요.",
8871
+ "notRepo": "app/은 아직 Git 저장소가 아닙니다.",
8872
+ "unrelated": "관련 없는 역사. 확인 후에만 다시 복제하십시오. 사용자 정의 파일은 손실됩니다.",
8873
+ "lock": "Git index.lock이 존재합니다. git 프로세스가 실행되고 있지 않은 경우에만 제거하십시오.",
8874
+ "disk": "디스크가 가득 찼거나 할당량이 초과되었습니다.",
8875
+ "timeout": "힘내 시간이 초과되었습니다.",
8876
+ "network": "리모컨과 통신 중 네트워크 오류가 발생했습니다.",
8877
+ "lfs": "이 저장소는 Git LFS를 사용하며 git-lfs는 사용할 수 없습니다.",
8878
+ "submodule": "하위 모듈 업데이트에 실패했습니다.",
8879
+ "unknown": "Git이 실패했습니다. 명령 출력을 참조하세요.",
8880
+ "fetchOk": "원본에서 가져왔습니다.",
8881
+ "checkoutOk": "{{ref}}를 확인했습니다.",
8882
+ "resetOk": "{{ref}}로 하드 재설정하세요.",
8883
+ "envRestored": "제어 영역에서 app/.env를 복원했습니다.",
8884
+ "needPinHost": "SSH 호스트 키가 고정되지 않았습니다. 복제하거나 가져오기 전에 스캔하고 고정하세요.",
8885
+ "tokenSaved": "HTTPS 토큰이 저장되었습니다(다시 표시되지 않음).",
8886
+ "tokenCleared": "HTTPS 토큰이 제거되었습니다.",
8887
+ "tokenInvalid": "토큰은 8자 이상이어야 합니다.",
8888
+ "deployKeyCreated": "배포 키가 생성되었습니다. Git 호스트에 공개 키를 추가합니다.",
8889
+ "deployKeyCleared": "이 프로젝트에서 분리된 키를 배포합니다.",
8890
+ "hostPinned": "{{host}}에 대한 SSH 호스트 키가 고정되었습니다.",
8891
+ "hostUnpinned": "고정된 SSH 호스트 키를 삭제했습니다.",
8892
+ "hostScanFailed": "ssh-keyscan은 해당 호스트에 대해 키를 반환하지 않았습니다.",
8893
+ "hookEnabled": "인바운드 Git 후크가 켜져 있습니다. URL을 GitHub, Gitea 또는 GitLab에 직접 붙여넣으세요.",
8894
+ "hookDisabled": "인바운드 Git 후크가 꺼져 있습니다. URL은 동기화되지 않습니다.",
8895
+ "hookSecretOnce": "지금 이 후크 비밀을 복사하세요. 다시 표시되지 않습니다.",
8896
+ "refsNeedUrl": "먼저 Git URL을 입력하세요.",
8897
+ "refsOk": "{{branches}} 브랜치 및 {{tags}} 태그가 로드되었습니다.",
8898
+ "refsEmpty": "원격에 분기나 태그가 없음을 알렸습니다.",
8899
+ "diffEmpty": "단계적이지 않은 diff가 없습니다(보호된 .env는 제외됨)."
8900
+ },
8901
+ "migrate": {
8902
+ "orphanConfirm": "삭제를 확인하려면 남은 홈 경로를 정확하게 입력하세요.",
8903
+ "orphanStillInStore": "그 집은 여전히 ​​상점의 프로젝트에 속해 있습니다.",
8904
+ "orphanMissing": "디스크에 없는 경로: {{path}}",
8905
+ "orphanNeedExecute": "남은 {{path}}을 제거하겠습니다. YSK_EXECUTE=1이 필요합니다.",
8906
+ "orphanRmFailed": "남은 집을 제거할 수 없습니다: {{detail}}",
8907
+ "orphanRemoved": "남은 프로젝트 홈 {{path}}을 제거했습니다."
8908
+ },
8909
+ "defense": {
8910
+ "panelReqLabel": "패널 요청/분",
8911
+ "panelReqExcluded": "인증된 패널 트래픽 - 여기에 표시되지만 위협 점수에는 포함되지 않습니다.",
8912
+ "tcpOk": "TCP {{target}} 도달 가능",
8913
+ "tcpFail": "TCP {{target}} 실패",
8914
+ "dnsDegraded": "DNS 경로 성능 저하",
8915
+ "reqRateHigh": "공개 요청 비율 {{reqs}}/분 ≥ {{threshold}}",
8916
+ "ddosHeuristic": "높은 공개 요청률과 에지 프로브 실패"
8917
+ },
8918
+ "publicFiles": {
8919
+ "liveConf": "적용 중인 Nginx 설정: {{path}}",
8920
+ "publicRoot": "공개 루트: {{path}}",
8921
+ "confNameStale": "설정 파일 {{file}}이(가) 현재 server_name {{serverName}}과(와) 일치하지 않습니다. 공개 파일을 다시 적용해 이름을 바꾸세요."
7925
8922
  }
7926
8923
  },
7927
8924
  "ops": {
@@ -8023,7 +9020,7 @@
8023
9020
  },
8024
9021
  "security-units": {
8025
9022
  "name": "보안 유닛",
8026
- "description": "Fail2ban + sshd 상태(읽기 전용)"
9023
+ "description": "fail2ban + sshd 상태(읽기 전용)"
8027
9024
  },
8028
9025
  "web-stack-status": {
8029
9026
  "name": "웹 스택 상태",
@@ -8103,7 +9100,7 @@
8103
9100
  "created": "생성됨",
8104
9101
  "os": "OS 사용자",
8105
9102
  "deploy": "배포",
8106
- "nginx": "Nginx",
9103
+ "nginx": "엔진엑스",
8107
9104
  "health": "건강"
8108
9105
  },
8109
9106
  "next": {
@@ -8123,7 +9120,12 @@
8123
9120
  "httpStatus": "HTTP",
8124
9121
  "latency": "숨어 있음",
8125
9122
  "error": "오류",
8126
- "at": "확인 시간"
9123
+ "at": "확인 시간",
9124
+ "deployMode": "Deploy mode",
9125
+ "edgeKind": "Edge",
9126
+ "goLiveOk": "Go-live",
9127
+ "goLiveAt": "Go-live at",
9128
+ "degraded": "Degraded"
8127
9129
  },
8128
9130
  "railPhp": "PHP / 사이트",
8129
9131
  "railStatic": "정적 사이트",
@@ -8556,12 +9558,12 @@
8556
9558
  "php": "PHP",
8557
9559
  "node": "Node.js",
8558
9560
  "static": "공전",
8559
- "python": "Python",
8560
- "go": "Go",
8561
- "rust": "Rust",
8562
- "java": "Java",
8563
- "kotlin": "Kotlin",
8564
- "bun": "Bun"
9561
+ "python": "파이썬",
9562
+ "go": "가다",
9563
+ "rust": "",
9564
+ "java": "자바",
9565
+ "kotlin": "코틀린",
9566
+ "bun": "혈액 요소 질소"
8565
9567
  },
8566
9568
  "netCacheTitle": "은닉처",
8567
9569
  "logsDeepAccess": "로그센터 · 접속",
@@ -8598,16 +9600,132 @@
8598
9600
  "netPublishMaint": "유지",
8599
9601
  "sslNeedDomain": "Nginx/SSL을 게시하기 전에 도메인을 설정하세요.",
8600
9602
  "createTemplateMissing": "{{v0}} ;「— —」。",
8601
- "deleteDialogDesc": "「{{v0}}」。。",
9603
+ "deleteDialogDesc": "「{{name}}」。。",
8602
9604
  "deleteWillStop": "시스템 / PM2 /",
8603
9605
  "deleteWillWeb": "Nginx conf, PHP-FPM 풀, Apache 가상 호스트()",
8604
9606
  "deleteWillOs": "리눅스 홈 ()",
8605
9607
  "deleteKeepOs": "홈 리눅스 ()",
8606
9608
  "deleteWillDb": "…",
8607
9609
  "deleteRemoveFilesDesc": "취소,",
8608
- "deleteTypeNameHint": "「{{v0}}」",
9610
+ "deleteTypeNameHint": "「{{name}}」",
8609
9611
  "deleteDnsWarn": "DNS 영역/도메인 。",
8610
- "manageInNginx": "Nginx에서 관리"
9612
+ "manageInNginx": "Nginx에서 관리",
9613
+ "advFtpHomeApp": "사이트 app 디렉터리",
9614
+ "advFtpHomeRoot": "프로젝트 홈(전체)",
9615
+ "advFtpManage": "FTP 페이지 열기",
9616
+ "listDesc": "이 호스트에서 사이트를 관리하세요.",
9617
+ "resShell": "로그인 쉘",
9618
+ "resSaveHint": "라이브 OS의 변경 사항을 저장하고 적용합니다. 제어 영역은 양식만 저장합니다. 다시 적용하면 마지막으로 저장된 값이 사용됩니다.",
9619
+ "resBashConfirmTitle": "대화형 bash를 허용하시겠습니까?",
9620
+ "resBashConfirmDesc": "그러면 프로젝트 사용자에게 대화형 로그인 셸이 부여됩니다. 해당 사용자로 SSH 또는 PTY가 필요한 경우에만 확인하세요.",
9621
+ "noPathSepHint": "이름에는 / 또는 \\가 포함될 수 없습니다.",
9622
+ "createGitHint": "선택 과목. 프로젝트에 저장됩니다. 배포 탭에서 복제합니다(생성 시 복제되지 않음).",
9623
+ "gitBranch": "나뭇가지",
9624
+ "gitBranchHint": "Branch or tag. Empty uses the remote default. First clone is shallow (depth 1).",
9625
+ "gitLastRef": "마지막 동기화: {{branch}} @ {{commit}}",
9626
+ "gitConfirmTitle": "이 프로젝트에 복제하시겠습니까?",
9627
+ "gitConfirmBody": "app/이 여전히 Hello World 자리 표시자인 경우 지워진 다음 복제됩니다. YSK 스캐폴드가 아닌 사용자 정의 파일은 거부됩니다.",
9628
+ "runtimeActual": "실제 바이너리 {{path}}",
9629
+ "gitConfirmRemoteBody": "이는 새 URL의 출처를 가리키고 가져옵니다. 관련되지 않은 기록은 실패합니다. 사용자 정의 파일은 지워지지 않습니다.",
9630
+ "runtimeFallback": "선택된 {{version}}은(는) 이 호스트에 없습니다. 프로세스는 {{path}}을 사용합니다.",
9631
+ "gitSync": "동조",
9632
+ "gitFetch": "술책",
9633
+ "gitCheckout": "점검",
9634
+ "gitReset": "원격으로 재설정",
9635
+ "gitDeepen": "전체 기록 가져오기",
9636
+ "gitLogTitle": "최근 커밋",
9637
+ "gitDirtyTitle": "로컬 변경 블록 풀",
9638
+ "gitDirtyBody": "{{count}} 파일이 Git(파일 편집 또는 앱)과 다릅니다. 이를 폐기하거나 중단하십시오.",
9639
+ "gitDiscard": "로컬 파일 삭제",
9640
+ "gitOpenFiles": "파일에서 열기",
9641
+ "gitNotCloned": "복제되지 않음",
9642
+ "gitClean": "깨끗한",
9643
+ "gitDirty": "더러운",
9644
+ "gitBehind": "뒤에 {{count}}",
9645
+ "gitAhead": "앞으로 {{count}}",
9646
+ "gitDetached": "고정됨",
9647
+ "gitShallow": "얕은",
9648
+ "gitMissing": "자식이 없어",
9649
+ "gitResetConfirmTitle": "원격으로 하드 재설정하시겠습니까?",
9650
+ "gitResetConfirmBody": "이렇게 하면 로컬 Git 기록과 .env를 제외한 추적되지 않는 파일이 삭제되고 제어 플레인에서 .env가 복원됩니다.",
9651
+ "gitHeads": "원격 지점",
9652
+ "gitToken": "HTTPS 토큰",
9653
+ "gitTokenHint": "Personal access token. Stored encrypted; never written into the remote URL.",
9654
+ "gitTokenPlaceholder": "ghp_… 또는 glpat-…",
9655
+ "gitTokenSet": "토큰 세트",
9656
+ "gitSaveToken": "토큰 저장",
9657
+ "gitClearToken": "토큰 지우기",
9658
+ "gitDeployKey": "공개 키 배포",
9659
+ "gitDeployKeyHint": "이를 Git 호스트에 읽기 전용 배포 키로 추가하세요.",
9660
+ "gitDeployKeyOn": "키 배포",
9661
+ "gitMakeKey": "배포 키 생성",
9662
+ "gitCopyPub": "공개 키 복사",
9663
+ "gitClearKey": "배포 키 지우기",
9664
+ "gitKeyCopied": "공개 키가 복사되었습니다.",
9665
+ "gitPinHost": "호스트 키 고정",
9666
+ "gitPinHostBody": "{{host}}이 고정되지 않았습니다. 지문을 확인한 다음 SSH 복제 전에 고정하세요.",
9667
+ "gitHostUnpinned": "호스트 키가 고정되지 않음",
9668
+ "gitHookTitle": "Inbound hook",
9669
+ "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.",
9670
+ "gitHookOn": "Hook on",
9671
+ "gitHookOff": "Hook off",
9672
+ "gitHookEnable": "Enable hook",
9673
+ "gitHookRotate": "비밀 순환",
9674
+ "gitHookDisable": "Disable hook",
9675
+ "gitHookSecretOnce": "Copy this secret now — it is not stored in the page after you leave.",
9676
+ "gitHookCopyUrl": "Copy URL",
9677
+ "gitHookCopySecret": "비밀 복사",
9678
+ "gitHookCopied": "복사됨",
9679
+ "gitHookSetup": "Add the webhook yourself. Payload URL = the URL above. Content type application/json. Events: push only. Secret = the one-time value.",
9680
+ "gitHookGithub": "GitHub: Settings → Webhooks → Add webhook. Content type application/json. Events: Just the push event. GitHub.com requires HTTPS.",
9681
+ "gitHookGitea": "Gitea: Settings → Webhooks → Add Webhook → Gitea. HTTP Method POST. Push events.",
9682
+ "gitHookGitlab": "GitLab: Settings → Webhooks. Trigger: Push events. Secret token = the hook secret (sent as X-Gitlab-Token).",
9683
+ "gitHookHonesty": "The host unit must have YSK_EXECUTE=1. Without it the hook answers but does not clone or deploy.",
9684
+ "gitHookSkipOther": "Pushes to other branches are ignored. Only the project ref syncs.",
9685
+ "gitAuthHttps": "HTTPS 토큰",
9686
+ "gitAuthSsh": "SSH 배포 키",
9687
+ "gitLoadRefs": "브랜치 로드",
9688
+ "gitRefDefault": "원격 기본값",
9689
+ "gitRefBranches": "지점",
9690
+ "gitRefTags": "태그",
9691
+ "gitRefOther": "기타 참고…",
9692
+ "gitRefCustom": "커밋 또는 참조",
9693
+ "gitRefsNeedUrl": "먼저 URL을 입력하세요.",
9694
+ "gitRefsNeedAuth": "토큰 또는 배포 키를 저장한 다음 분기를 로드하세요.",
9695
+ "gitRefsHint": "리모콘에서 로드되었습니다. 하나를 선택하십시오. 입력하지 마십시오.",
9696
+ "gitHookSetupToggle": "이것을 붙여넣는 방법",
9697
+ "gitHookOneLiner": "HMAC 또는 X-YSK-Git-Hook. 이 프로젝트의 심판만 해당됩니다.",
9698
+ "gitHookExecuteHint": "복제하거나 배포하려면 YSK_EXECUTE=1이 필요합니다.",
9699
+ "gitShowKey": "키 표시",
9700
+ "gitHideKey": "숨다",
9701
+ "gitBehindShort": "↓{{count}}",
9702
+ "gitAheadShort": "↑{{count}}",
9703
+ "gitDirtyShort": "더러운 · {{count}}",
9704
+ "gitFilesLink": "파일",
9705
+ "gitTokenLaterHint": "HTTPS 토큰 및 복제 깊이는 생성 후 프로젝트 배포 탭에서 설정됩니다.",
9706
+ "netForceHttpsOn": "Edge를 게시하면 HTTP가 HTTPS로 리디렉션됩니다.",
9707
+ "netForceHttpsOff": "강제 리디렉션이 저장되지 않습니다.",
9708
+ "netHttpsLiveNotForced": "Edge 파일이 존재합니다. HTTPS가 이미 작동할 수도 있습니다. 이 상자는 HTTP→HTTPS만 강제합니다.",
9709
+ "gitSyncBlockedDirty": "로컬 변경 사항이 삭제되거나(재설정) 파일이 Git과 일치할 때까지 동기화가 비활성화됩니다.",
9710
+ "gitViewDiff": "차이점 보기",
9711
+ "gitBranchAfterUrl": "먼저 Git URL을 입력하세요. 비우면 원격 기본 분기를 사용합니다.",
9712
+ "gitResetNeedConfirm": "확인 필요 — 로컬 커밋을 버립니다",
9713
+ "openUrlNeedDomain": "먼저 도메인을 설정하세요. 브라우저에서 127.0.0.1을 열지 마세요.",
9714
+ "needOsUser": "먼저 격리 탭에서 시스템 사용자를 생성합니다.",
9715
+ "stopTitle": "이 프로젝트를 중지하십시오(시스템 장치 및 공개 사이트).",
9716
+ "deployTitle": "이 프로젝트 배포",
9717
+ "httpStatsHint": "이 프로젝트의 액세스 로그에서(마지막 샘플)",
9718
+ "httpStatsNone": "아직 프로젝트 액세스 로그가 없습니다.",
9719
+ "statStoppedOnly": "중지됨",
9720
+ "statReadyOnly": "준비됨",
9721
+ "netBoundCert": "바인딩된 인증서",
9722
+ "netBoundCertExpiry": "만료 {{at}}",
9723
+ "netNoBoundCert": "이 호스트 이름의 인증서가 디스크에 없습니다",
9724
+ "netForceHttpsNeedCert": "HTTPS를 강제하기 전에 /ssl에서 이 도메인 인증서를 발급하세요.",
9725
+ "goIsolation": "Open Isolation tab",
9726
+ "netHstsNeedHttps": "Turn on force HTTPS first",
9727
+ "homeMissing": "Home directory does not exist",
9728
+ "homeMissingHint": "Same live probe as migrate inventory — create the system user on Isolation"
8611
9729
  },
8612
9730
  "protection": {
8613
9731
  "levels": {
@@ -8641,7 +9759,9 @@
8641
9759
  "note": {
8642
9760
  "notApplied": "호스트에 적용되지 않음(루트 + YSK_EXECUTE=1 필요) - 패널 설정에 저장됨",
8643
9761
  "nginxWritten": "Nginx 속도 제한 패널 파일 작성",
8644
- "f2bWritten": "Fail2ban 패널 설정을 작성했습니다."
9762
+ "f2bWritten": "fail2ban 패널 설정을 작성했습니다.",
9763
+ "hintDropped": "Internal protection hint omitted",
9764
+ "nginxLimits": "Will write Nginx rate-limit snippet"
8645
9765
  },
8646
9766
  "rel": {
8647
9767
  "justNow": "방금",
@@ -8740,7 +9860,7 @@
8740
9860
  "signalDdos": "DDoS 휴리스틱",
8741
9861
  "signalTcp": "TCP 연결",
8742
9862
  "signalUfwOff": "UFW 꺼짐",
8743
- "signalF2bBans": "Fail2ban 금지 횟수",
9863
+ "signalF2bBans": "fail2ban 금지 횟수",
8744
9864
  "weightHint": "{{label}} 가중치 0–3",
8745
9865
  "detected": "(감지됨)",
8746
9866
  "notSet": "(설정되지 않음)",
@@ -8900,13 +10020,13 @@
8900
10020
  "alreadyBanned": "금지됨",
8901
10021
  "whitelist": "화이트리스트",
8902
10022
  "bansWorkflow": "대응: 용의자 목록 → 금지/금지 해제. 감옥 정책, IP 무시, 서비스 수명 주기:",
8903
- "f2bTool": "Fail2ban 도구",
10023
+ "f2bTool": "fail2ban 도구",
8904
10024
  "noSecondJail": "(여기에는 두 번째 감옥 편집자가 없습니다).",
8905
10025
  "autoBanWhitelistTitle": "자동 차단 허용 목록",
8906
10026
  "autoBanWhitelistDesc": "보호 자동 차단 예외(fail2banignoreip 동기화)",
8907
10027
  "ignoreipWhitelist": "IP 허용 목록 무시",
8908
10028
  "notSetSuggestAdmin": "설정되지 않음(관리자 IP 추가)",
8909
- "moreItems": "… {{n}} 더보기 · Fail2ban 허용 목록 참조",
10029
+ "moreItems": "… {{n}} 더보기 · fail2ban 허용 목록 참조",
8910
10030
  "add": "추가하다",
8911
10031
  "manualBanTitle": "수동 차단",
8912
10032
  "methodFollows": "방법은 위의 선택을 따릅니다(fail2ban / UFW).",
@@ -8955,7 +10075,67 @@
8955
10075
  "plusRegion": "+ 지역 {{v}}",
8956
10076
  "plusCity": "+ 도시 {{v}}",
8957
10077
  "lastTickPrefix": "· 마지막 {{t}}",
8958
- "nextTickPrefix": "· 다음 {{t}}"
10078
+ "nextTickPrefix": "· 다음 {{t}}",
10079
+ "stackApply": "보호 스택 적용(UFW, Fail2ban, 사전 설정)",
10080
+ "stackApplyDone": "보호 스택 적용이 요청되었습니다.",
10081
+ "stackApplyHint": "이렇게 하면 UFW가 활성화되고 Fail2ban과 제안된 사전 설정이 적용됩니다. 원격 패널에서 자신을 잠그지 않을 것인지 확인하십시오.",
10082
+ "cannotBanSelf": "{{ip}}는 차단할 수 없습니다 — 호스트, 로그인 IP 또는 ignoreip입니다",
10083
+ "selfIp": "이 호스트",
10084
+ "selfHostIp": "호스트 IP",
10085
+ "selfLoginIp": "귀하의 로그인 IP",
10086
+ "showZeroScore": "0점 표시",
10087
+ "hideZeroScore": "0점 숨기기",
10088
+ "freshnessNa": "해당사항 없음",
10089
+ "geoDraftOnly": "정책이 꺼져 있습니다. 저장은 초안만 씁니다. 켜기 전까지 Nginx는 적용하지 않습니다.",
10090
+ "selectAllCountriesWarn": "차단 목록에서 모든 국가를 선택할까요? 이 호스트와 로그인 국가도 막힐 수 있습니다.",
10091
+ "badgeRecommendPreset": "현재 위협 수준에는 더 강한 프리셋을 권장합니다",
10092
+ "badgeAutomationOn": "자동화가 켜져 있습니다",
10093
+ "badgeBanCount": "현재 차단 수",
10094
+ "badgeGeoOn": "Geo 접근 정책이 켜져 있습니다",
10095
+ "badgeGeoNotReady": "GeoIP 데이터베이스가 준비되지 않았습니다",
10096
+ "badgeIntelSignals": "지금 점수에 더해지는 신호 수",
10097
+ "signalActive": "동작 중",
10098
+ "signalInactive": "비활성",
10099
+ "signalJails": "jail {{n}}개",
10100
+ "dbReadyHint": "MMDB 파일이 있습니다",
10101
+ "dbNotReadyHint": "먼저 GeoIP 데이터베이스를 받으세요",
10102
+ "staleHint": "마지막 성공 업데이트가 7일을 넘겼는지",
10103
+ "statSuspects": "의심되는 IP",
10104
+ "scoreBasisHint": "위협 점수는 방화벽, Fail2ban 금지 볼륨 및 요청 속도 신호를 사용하며 인텔 용의자 목록과 동일한 수는 아닙니다.",
10105
+ "geoNeedDb": "GeoIP 데이터베이스가 없습니다. 먼저 MMDB 파일을 업데이트하세요.",
10106
+ "colHits": "횟수",
10107
+ "col429": "429",
10108
+ "topIpsTitle": "상위 IP",
10109
+ "hitsCount": "{{n}}회",
10110
+ "sampleWindowHint": "횟수는 전체 로그가 아니라 현재 access + auth 샘플 창에서 나옵니다.",
10111
+ "statSuspectsSplit": "{{actionable}} actionable / {{total}} listed",
10112
+ "suspectActionableCount": "Actionable IPs {{count}}",
10113
+ "uaNeedZones": "Set a Cloudflare zone first",
10114
+ "banConfirmTitle": "Ban {{ip}}?",
10115
+ "banConfirmDesc": "This IP will be blocked on the host. Confirm it is not a current panel or session address.",
10116
+ "ufwOff": "UFW (off)",
10117
+ "ufwOffHint": "UFW is not active — fail2ban is the usable target.",
10118
+ "whitelistSyncHint": "{{n}} panel entries · fail2ban ignoreip sync: {{sync}}",
10119
+ "whitelistSyncOn": "on",
10120
+ "whitelistSyncOff": "off (lists may differ)",
10121
+ "draftBadge": "Draft",
10122
+ "banIsSelf": "This IP matches the current panel source or this host.",
10123
+ "banNotSelf": "This IP is not the current panel source.",
10124
+ "geoSourceLocal": "Local GeoIP library (sapics + DB-IP)",
10125
+ "nginxPreviewHint": "Nginx snippet this preset would write (preview only):",
10126
+ "modeValue": {
10127
+ "normal": "Normal",
10128
+ "degraded": "Degraded",
10129
+ "ddos-protection": "DDoS protection",
10130
+ "offline": "Offline"
10131
+ },
10132
+ "wlRemovedUndo": "Removed {{ip}} from the allow list. Undo within 5 seconds.",
10133
+ "undo": "Undo",
10134
+ "banSelectedConfirmTitle": "Ban {{count}} selected IPs?",
10135
+ "banSelectedConfirmDesc": "These addresses will be blocked on the host: {{ips}}",
10136
+ "freshnessMissing": "No database",
10137
+ "freshnessStale": "Stale",
10138
+ "freshnessFresh": "Current"
8959
10139
  },
8960
10140
  "publicFiles": {
8961
10141
  "notSet": "설정되지 않음",
@@ -8987,7 +10167,20 @@
8987
10167
  "diskRoot": "디스크 루트",
8988
10168
  "filesInRoot": "항목",
8989
10169
  "managedConf": "관리형 구성",
8990
- "systemConf": "시스템 구성"
10170
+ "systemConf": "시스템 구성",
10171
+ "notes": {
10172
+ "noManagedConf": "아직 관리되는 Nginx conf가 없습니다. 적용을 클릭하세요.",
10173
+ "notSynced": "관리되는 conf가 존재하지만 /etc/nginx/conf.d 아래에 있지 않습니다. YSK_EXECUTE를 사용하여 루트로 다시 적용합니다."
10174
+ },
10175
+ "autoindex": "디렉토리 목록(자동 색인)",
10176
+ "liveSystemConf": "실제 시스템 설정: {{path}}",
10177
+ "publicRootNote": "공개 루트: {{path}}",
10178
+ "applyConfirmTitle": "공개 파일 사이트를 적용할까요?",
10179
+ "applyConfirmDesc": "Nginx server_name {{name}}을(를) 쓰고 Nginx를 다시 로드합니다.",
10180
+ "serverNameMismatch": "실제 설정은 {{live}}이고 폼은 {{draft}}입니다. 적용하면 교체됩니다.",
10181
+ "executeFlag": "Execute",
10182
+ "asRoot": "Root",
10183
+ "statusDraft": "Draft / not applied"
8991
10184
  },
8992
10185
  "rbac": {
8993
10186
  "permissions": "권한",
@@ -9071,7 +10264,13 @@
9071
10264
  "auditExport": "내보내기 감사",
9072
10265
  "securityApiKeysAdmin": "API 키 관리자",
9073
10266
  "networkBrowse": "호스트 중재 웹 탐색",
9074
- "networkVnc": "VNC 원격 데스크톱"
10267
+ "networkVnc": "VNC 원격 데스크톱",
10268
+ "validatorsRead": "검증자(읽기)",
10269
+ "validatorsManage": "검증자 관리",
10270
+ "validatorsWipe": "검증자 데이터 삭제",
10271
+ "dockerRead": "Docker(읽기)",
10272
+ "dockerManage": "Docker 관리",
10273
+ "dockerWipe": "Docker 삭제/정리"
9075
10274
  },
9076
10275
  "aboutRoles": "역할(공장 기본값)",
9077
10276
  "aboutRolesBody": "역할은 기본 기능을 설정합니다. 사용자는 개별 항목을 재정의할 수 있습니다.",
@@ -9087,7 +10286,14 @@
9087
10286
  "capabilitiesHint": "이 역할이 수행할 수 있는 작업 전환",
9088
10287
  "enabledCount": "{{total}} 중 {{enabled}} 활성화됨",
9089
10288
  "bandAboveMax": "최대 레벨 이상",
9090
- "dirtyHint": "맞춤형(공장마다 다름)"
10289
+ "dirtyHint": "맞춤형(공장마다 다름)",
10290
+ "unsaved": "저장되지 않음",
10291
+ "unsavedHint": "이 역할에 대한 저장되지 않은 수정사항",
10292
+ "nothingToSave": "저장할 항목이 없습니다.",
10293
+ "saveRole": "{{role}} 정책 저장",
10294
+ "discardTitle": "저장되지 않은 정책을 삭제하시겠습니까?",
10295
+ "discardDesc": "역할을 전환하면 저장되지 않은 기능 편집 내용이 삭제됩니다.",
10296
+ "roleUnavailable": "Not available for this role"
9091
10297
  },
9092
10298
  "readiness": {
9093
10299
  "cat": {
@@ -9161,7 +10367,7 @@
9161
10367
  "scMetrics": "호스트 측정항목",
9162
10368
  "scMetricsD": "로드 · 메모리 · 경고",
9163
10369
  "scProtection": "국방센터",
9164
- "scProtectionD": "대응 · UFW · Fail2ban",
10370
+ "scProtectionD": "대응 · UFW · fail2ban",
9165
10371
  "policyNote": "정책: 메일 PTR / 포트 25 / 등록자 DNS는 자동으로 완료되지 않습니다. HTTP 503 = 준비되지 않았지만 전체 보고서(가짜 성공 아님)",
9166
10372
  "notProbedTitle": "아직 조사되지 않음",
9167
10373
  "notProbedDesc": "읽기 전용 준비 상태 확인을 시작하려면 \"다시 프로브\"를 클릭하세요.",
@@ -9198,7 +10404,38 @@
9198
10404
  "fixNow": "지금 고치세요",
9199
10405
  "fixFailed": "수정 실패",
9200
10406
  "fixDone": "dataDir 권한 강화(chmod 750)",
9201
- "fixDoneWebUi": "웹 UI 구축/설치"
10407
+ "fixDoneWebUi": "웹 UI 구축/설치",
10408
+ "rootLabel": "수퍼유저",
10409
+ "exportStarted": "다운로드 중 {{name}}",
10410
+ "blockersHint": "「차단」은 「없음」의 핵심 부분집합이며 추가 검사가 아닙니다.",
10411
+ "techDetails": "기술적인 세부사항",
10412
+ "missingOwner": "할당된 패널 소유자 없음(패키지 할당량 속성)",
10413
+ "notOsProvisioned": "OS 사용자/홈이 아직 프로비저닝되지 않았습니다.",
10414
+ "ondrejNone": "ondrej Launchpad PHP 소스가 감지되지 않았습니다.",
10415
+ "ondrejFound": "packages.sury.org와 충돌하는 기존 ondrej/php 소스 발견: {{paths}}",
10416
+ "ondrejTitle": "PHP 적절한 소스(ondrej 잔여)",
10417
+ "systemctlActive": "서비스가 실행 중입니다.",
10418
+ "systemctlStatus": "서비스 상태: {{status}}",
10419
+ "binInPath": "PATH의 {{bin}}",
10420
+ "leftoverApache": "Apache 남은 기본 사이트",
10421
+ "leftoverVsftpd": "vsftpd 장치 실패",
10422
+ "leftoverCli": "오래된 남은 CLI",
10423
+ "leftoverNginx": "Nginx 포괄 기능이 누락되었습니다.",
10424
+ "leftoverDovecot": "누락된 인증서를 가리키는 Dovecot TLS",
10425
+ "leftoverOther": "호스트 남은 음식",
10426
+ "leftoverApply": "남은 적용",
10427
+ "isolationOwnerDegrades": "owner_user_id가 누락되면 패키지 할당량 특성에 영향을 미칩니다. 상태는 저하됨, 준비되지 않음입니다.",
10428
+ "totalChecks": "All checks",
10429
+ "totalChecksHint": "Ready + degraded + missing = this total. Blockers are the critical missing subset.",
10430
+ "requireAdminTotp": "require admin 2FA policy",
10431
+ "listenBind": "listen address",
10432
+ "item": {
10433
+ "admin2fa": "Admin two-factor"
10434
+ },
10435
+ "dataDirPerms": "panel data-directory permissions",
10436
+ "mode750": "mode 750",
10437
+ "gateBlocked": "Not passed · {{n}} missing",
10438
+ "isolationPendingOs": "Same as project status: OS user pending. Open Isolation to provision the system user and home."
9202
10439
  },
9203
10440
  "redis": {
9204
10441
  "neverExpire": "만료되지 않음",
@@ -9266,7 +10503,25 @@
9266
10503
  "pickKey": "콘텐츠를 보려면 왼쪽에 있는 키를 선택하세요.",
9267
10504
  "ttlPrefix": "TTL: {{ttl}}",
9268
10505
  "writeLiveHint": "라이브 Redis를 작성합니다. 한 번의 클릭으로 패널에서 실행 취소할 수 없습니다.",
9269
- "refPath": "참조: {{path}}"
10506
+ "refPath": "참조: {{path}}",
10507
+ "dbEmptyMark": " · 비어 있음",
10508
+ "noRequirepass": "보호 모드는 켜져 있지만 requirepass가 비었거나 읽히지 않았습니다 — 암호 없음.",
10509
+ "setRequirepass": "암호 설정",
10510
+ "rdbOnlyLossHint": "AOF 꺼짐, RDB 켜짐. 재시작이나 충돌 시 최근 쓰기가 유실될 수 있습니다.",
10511
+ "dirDataContainer": "/data(컨테이너)",
10512
+ "dirHostDefault": "/var/lib/redis",
10513
+ "dirDefaultInstance": "/var/lib/redis/default",
10514
+ "dirDataWarn": "/data는 일반적으로 컨테이너 경로입니다. 이 패널에서는 존재 여부를 확인할 수 없습니다.",
10515
+ "saveOff": "스냅샷 비활성화(권장되지 않음)",
10516
+ "saveOffWarn": "빈 저장 문자열은 RDB 스냅샷을 끕니다. AOF도 꺼져 있으면 충돌로 인해 모든 데이터가 손실될 수 있습니다.",
10517
+ "dirMoveWarn": "dir을 변경해도 dump.rdb / AOF는 이동되지 않습니다. 다음 시작에서는 새 경로를 그대로 사용합니다.",
10518
+ "passwordUnset": "서비스에 설정되지 않음",
10519
+ "passwordSetHidden": "설정(표시되지 않음)",
10520
+ "scanHint": "Uses SCAN, not KEYS. Returns at most {{n}} keys — avoid * on huge databases.",
10521
+ "scanCapped": "Showing the first {{n}} matches.",
10522
+ "dbOptionKeys": "DB {{i}} · {{n}} keys",
10523
+ "dbOptionEmpty": "DB {{i}} · empty",
10524
+ "insecureShort": "No password"
9270
10525
  },
9271
10526
  "resources": {
9272
10527
  "created": "생성됨",
@@ -9734,7 +10989,29 @@
9734
10989
  "projectsCount": "YSK 프로젝트",
9735
10990
  "noProjects": "프로젝트 없음",
9736
10991
  "noProjectsDesc": "패널에 노드/bun 프로젝트가 없거나 OS 사용자가 프로비저닝되지 않았습니다.",
9737
- "pm2OnlyDesc": "패널 사용자 아래에서 PM2로 시작된 앱만 해당됩니다. systemd 배포가 위에 나타납니다."
10992
+ "pm2OnlyDesc": "패널 사용자 아래에서 PM2로 시작된 앱만 해당됩니다. systemd 배포가 위에 나타납니다.",
10993
+ "startupTitle": "부팅 시 시작",
10994
+ "startupDesc": "PM2를 등록하면 재부팅 후 프로세스가 다시 시작됩니다.",
10995
+ "systemdActionsHint": "systemd 작업에는 루트와 YSK_EXECUTE가 필요합니다.",
10996
+ "startupOk": "Startup registered. {{notes}}",
10997
+ "startupFail": "Could not register startup. {{notes}}",
10998
+ "actionOk": "{{action}} {{name}} — {{notes}}",
10999
+ "actionFail": "Could not {{action}} {{name}}. {{notes}}",
11000
+ "startupReady": "Ready",
11001
+ "startupReadyYes": "Yes",
11002
+ "startupReadyNo": "No",
11003
+ "startupUnit": "Unit",
11004
+ "startupDump": "Dump",
11005
+ "startupInstall": "Install startup",
11006
+ "startupSave": "Save process list",
11007
+ "actRestart": "Restart",
11008
+ "actStop": "Stop",
11009
+ "actReload": "Reload",
11010
+ "pm2ActionsHint": "PM2 actions apply to the panel user’s process list only.",
11011
+ "noteUnparsed": "PM2 list could not be parsed (empty or unexpected output).",
11012
+ "notePanelUserOnly": "PM2 list is for the panel process user only.",
11013
+ "noteProjectUnits": "{{n}} YSK project unit(s) listed",
11014
+ "glossary": "PM2 = process manager; SSE = live stream."
9738
11015
  },
9739
11016
  "recordedInstalled": "녹화됨 {{v}}",
9740
11017
  "remoteSourceSuffix": "({{source}})",
@@ -9788,7 +11065,32 @@
9788
11065
  "path": "길",
9789
11066
  "fullVersion": "정식 버전",
9790
11067
  "useListForDefaults": "호스트 또는 패널 기본값을 변경하거나 이 버전을 제거하려면 위 목록을 사용하십시오.",
9791
- "alreadyHostDefaultShort": "호스트 기본값"
11068
+ "alreadyHostDefaultShort": "호스트 기본값",
11069
+ "managedPathMissingTitle": "관리형 {{name}} 경로가 준비되지 않음",
11070
+ "managedPathMissing": "버전 {{version}}에 대한 YSK 관리 {{name}}가 준비되지 않았습니다. 다시 조사하거나 다시 설치하십시오.",
11071
+ "installRecordedCta": "설치 기록 {{v}}",
11072
+ "targetMissing": "대상 버전이 설치되지 않음",
11073
+ "targetMissingHint": "대상 {{version}}이(가) 이 호스트에 없습니다. 설치된 버전에 묶거나 이 핀을 설치하세요.",
11074
+ "needsInstall": "설치 필요",
11075
+ "needsInstallHint": "이 버전은 이 호스트에 없습니다. 먼저 설치하거나 설치된 버전을 고르세요.",
11076
+ "unitBytes": "바이트",
11077
+ "headerSizeKb": "{{n}}KB",
11078
+ "phpIniChipEmpty": "불러오지 않음 — php.ini 탭을 여세요",
11079
+ "phpFpmService": "PHP-FPM",
11080
+ "phpFpmServiceDesc": "PHP-FPM 유닛 시작, 중지, 다시 불러오기, 재시작",
11081
+ "rustupDefaultMissingTitle": "rustup 기본 툴체인이 없습니다",
11082
+ "rustupDefaultMissing": "rustup에 기본값이 없습니다. 소프트웨어 탭에서 stable을 설정하세요.",
11083
+ "rustupDefaultMissingShort": "기본 툴체인 없음",
11084
+ "rustupSetDefaultHint": "기본 툴체인 설정",
11085
+ "uninstalledCountHint": "{{n}}개 버전이 이 호스트에 없습니다",
11086
+ "applyPhpVhostTitle": "확인 필요 - 풀/가상 호스트 파일 쓰기",
11087
+ "applyPhpVhostDesc": "{{pool}} 풀과 {{domain}} 가상 호스트를 작성합니다. 서비스 새로고침: {{reload}}.",
11088
+ "binaryPath": "바이너리 경로",
11089
+ "installedLabel": "Installed",
11090
+ "installedHint": "Host probe result — not the control-plane record",
11091
+ "targetHint": "Version this page will install or pin",
11092
+ "rebuildFromHost": "Rebuild record from host",
11093
+ "rebuiltFromHost": "Record refreshed from host probe"
9792
11094
  },
9793
11095
  "search": {
9794
11096
  "placeholder": "페이지 및 리소스 검색…",
@@ -9797,21 +11099,25 @@
9797
11099
  "loading": "수색…",
9798
11100
  "noResults": "일치하는 항목 없음",
9799
11101
  "kinds": {
9800
- "page": "Pages",
9801
- "project": "Projects",
9802
- "email": "Email",
9803
- "mailbox": "Mailboxes",
11102
+ "page": "페이지",
11103
+ "project": "프로젝트",
11104
+ "email": "이메일",
11105
+ "mailbox": "사서함",
9804
11106
  "ssl": "SSL",
9805
11107
  "dns": "DNS",
9806
- "nginx": "Nginx",
9807
- "share": "Shares",
11108
+ "nginx": "엔진엑스",
11109
+ "share": "주식",
9808
11110
  "ftp": "FTP",
9809
11111
  "mysql": "MySQL",
9810
11112
  "postgres": "PostgreSQL",
9811
- "redis": "Redis",
11113
+ "redis": "레디스",
9812
11114
  "cron": "Cron",
9813
- "user": "Users",
9814
- "other": "Other"
11115
+ "user": "사용자",
11116
+ "other": "다른"
11117
+ },
11118
+ "alias": {
11119
+ "ssl": "인증서 인증서 인증서",
11120
+ "projects": "프로젝트 사이트"
9815
11121
  }
9816
11122
  },
9817
11123
  "security": {
@@ -9835,7 +11141,7 @@
9835
11141
  "tabApiKeys": "API 키",
9836
11142
  "tabSsh": "SSH",
9837
11143
  "tabApprovals": "승인",
9838
- "tabAllowlist": "허용 목록",
11144
+ "tabAllowlist": "에이전트 도구",
9839
11145
  "apiTokenOnce": "API 토큰(한 번 표시됨):",
9840
11146
  "copiedToken": "토큰이 복사되었습니다.",
9841
11147
  "totpTitle": "2단계(TOTP)",
@@ -9919,8 +11225,8 @@
9919
11225
  "revokeAllDevices": "모든 기기 취소",
9920
11226
  "revokedAllDevices": "신뢰할 수 있는 모든 기기가 취소되었습니다.",
9921
11227
  "export2faBackup": "2FA 암호화 백업 내보내기",
9922
- "fail2banSnippetMsg": "Fail2ban 스니펫: {{written}} — {{notes}}",
9923
- "generateFail2ban": "Fail2ban 스니펫 생성",
11228
+ "fail2banSnippetMsg": "fail2ban 스니펫: {{written}} — {{notes}}",
11229
+ "generatefail2ban": "fail2ban 스니펫 생성",
9924
11230
  "adminPolicyTitle": "관리자 2FA 정책",
9925
11231
  "adminPolicyDesc": "",
9926
11232
  "requireAdmin2fa": "관리자 2FA 필요",
@@ -9940,8 +11246,8 @@
9940
11246
  "apiKeysEmpty": "아직 API 키가 없습니다.",
9941
11247
  "apiKeysEmptyHint": "도구 모음에서 생성하세요. 그런 다음 Bearer 토큰으로 API를 호출합니다.",
9942
11248
  "approve": "승인하다",
9943
- "allowlistTitle": "허용 목록({{count}})",
9944
- "allowlistEmpty": "허용 목록 도구 없음",
11249
+ "allowlistTitle": "에이전트 도구({{count}})",
11250
+ "allowlistEmpty": "카탈로그에 도구가 없습니다",
9945
11251
  "createApiKeyTitle": "API 키 생성",
9946
11252
  "createApiKeyDesc": "전체 토큰은 생성 후 한 번만 표시됩니다.",
9947
11253
  "createKeyBtn": "키 생성",
@@ -10183,7 +11489,23 @@
10183
11489
  "sharePanelTitle": "패널 TOTP 비밀을 공유하시겠습니까?",
10184
11490
  "sharePanelDesc": "위험. 확인하려면 SHARED를 입력하세요.",
10185
11491
  "confirmString": "확인 문자열",
10186
- "enableShare": "공유 활성화"
11492
+ "enableShare": "공유 활성화",
11493
+ "invalidPub": "OpenSSH 공개 키를 한 줄로 붙여 넣으세요(ssh-ed25519 / ssh-rsa / ecdsa…).",
11494
+ "dryRunOk": "미리보기가 끝났습니다. 아래 내용을 확인하세요.",
11495
+ "strictBlocked": "패키지 또는 PAM이 준비되지 않아 Strict 적용이 비활성화되었습니다.",
11496
+ "strictDryRun": "엄격 모드 미리보기",
11497
+ "errorNoDetail": "테스트 실패(상세 없음)",
11498
+ "privCloseWithoutAck": "닫은. 개인 키는 다시 표시되지 않습니다. 저장하지 않은 경우 새 것을 생성하십시오.",
11499
+ "loginNoProjects": "프로젝트가 없습니다. 아래에서 기존 Linux 사용자(루트/테스터)에게 권한을 부여하세요. /root/.ssh를 작성하려면 YSK_EXECUTE=1이 필요합니다.",
11500
+ "loginLinuxHint": "프로젝트가 없을 때 사용됩니다. 예: 루트 또는 테스터.",
11501
+ "pkgStatus": "Package {{status}}",
11502
+ "pamStatus": "PAM {{status}}",
11503
+ "kbdStatus": "sshd keyboard-interactive {{status}}",
11504
+ "light": {
11505
+ "green": "ok",
11506
+ "yellow": "check",
11507
+ "red": "missing"
11508
+ }
10187
11509
  },
10188
11510
  "sessionsActive": "활성 세션",
10189
11511
  "sessionsOther": "기타 장치",
@@ -10206,7 +11528,50 @@
10206
11528
  "revokeOthersDesc": "{{count}} 다른 세션이 종료됩니다. 현재 브라우저는 로그인된 상태로 유지됩니다.",
10207
11529
  "sessionRevoked": "세션이 로그아웃되었습니다.",
10208
11530
  "mySecurityHint": "",
10209
- "policyTotpHint": "사이트 정책: 각 관리자는 자신의 2FA(개별 QR)를 활성화해야 합니다."
11531
+ "policyTotpHint": "사이트 정책: 각 관리자는 자신의 2FA(개별 QR)를 활성화해야 합니다.",
11532
+ "requireUser2fa": "모든 패널 사용자에게 2FA 요구",
11533
+ "generateFail2ban": "fail2ban 스니펫 생성",
11534
+ "changePasswordTitle": "로그인 비밀번호 변경",
11535
+ "currentPassword": "현재 비밀번호",
11536
+ "newPassword": "새 비밀번호",
11537
+ "confirmNewPassword": "새 비밀번호 확인",
11538
+ "passwordMismatch": "새 비밀번호가 일치하지 않습니다.",
11539
+ "changePassword": "비밀번호 변경",
11540
+ "passwordChanged": "비밀번호가 업데이트되었습니다.",
11541
+ "strictNeedsEnrolled": "Strict를 켜려면 관리자 2단계가 필요합니다.",
11542
+ "policyTotpNeedSelf": "먼저 이 계정에서 2단계를 사용하세요. 확인 코드를 입력할 수 없습니다.",
11543
+ "fail2banSnippetTitle": "fail2ban 스니펫",
11544
+ "fail2banSnippetEmpty": "스니펫이 기록되지 않았습니다.",
11545
+ "trustedDevicesTitle": "신뢰하는 기기",
11546
+ "noTrustedDevices": "신뢰하는 기기가 없습니다.",
11547
+ "strictConfirmTitle": "Strict 2단계를 켤까요?",
11548
+ "strictConfirmDesc": "2단계가 없는 사용자는 로그인할 수 없습니다. 사용 가능한 TOTP 또는 Passkey가 있는지 확인하세요.",
11549
+ "revokeDevicesTitle": "신뢰하는 기기를 취소할까요?",
11550
+ "revokeDevicesDesc": "기억된 브라우저는 다시 2단계가 필요합니다.",
11551
+ "approvalsHint": "고위험 도구에 두 번째 운영자 승인이 필요할 때 표시됩니다. 권한은 「사용자 → 권한」에서 설정합니다.",
11552
+ "allowlistReadonly": "에이전트 도구 카탈로그(읽기 전용). 능력 부여는 「사용자 → 권한」에서 설정합니다.",
11553
+ "colTool": "도구",
11554
+ "colAllowed": "허용",
11555
+ "colRisk": "위험",
11556
+ "colApproval": "승인",
11557
+ "risk": {
11558
+ "low": "낮음",
11559
+ "medium": "보통",
11560
+ "high": "높음",
11561
+ "critical": "심각"
11562
+ },
11563
+ "totpStatusLoadFailed": "2단계 상태를 불러오지 못했습니다",
11564
+ "confirmDeleteApiKey": "이 API 키를 삭제하시겠습니까?",
11565
+ "confirmDeleteApiKeyDesc": "'{{name}}'을 입력하면 인증이 중단됩니다. 이 작업은 취소할 수 없습니다.",
11566
+ "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.",
11567
+ "sessionCli": "CLI",
11568
+ "sessionApi": "API",
11569
+ "statApiSessions": "API 세션",
11570
+ "revokeOtherTitle": "로그아웃 {{n}} 다른 세션",
11571
+ "policyNeedSelf2fa": "먼저 이 계정에서 2FA를 활성화한 다음 TOTP 코드로 확인하세요.",
11572
+ "revokeAllDevicesTitle": "기억된 모든 장치를 취소합니다. 귀하와 다른 관리자는 2FA를 다시 확인해야 합니다.",
11573
+ "statSshValue": "{{keys}} keys · {{auth}} authorized",
11574
+ "statSshHint": "Outbound identities / authorized login keys"
10210
11575
  },
10211
11576
  "serviceExposure": {
10212
11577
  "title": "네트워크 접속",
@@ -10215,8 +11580,8 @@
10215
11580
  "manageDesc": "호스트 방화벽에서 {{service}}에 접근할 수 있는 방법을 제어합니다.",
10216
11581
  "mode": "액세스 모드",
10217
11582
  "modePrivate": "로컬 전용",
10218
- "modePublic": "Public",
10219
- "modeRestricted": "Restricted",
11583
+ "modePublic": "공공의",
11584
+ "modeRestricted": "제한된",
10220
11585
  "summaryPrivate": "공용 방화벽에서는 열리지 않습니다.",
10221
11586
  "summaryPublic": "열려 있음 · {{ports}}",
10222
11587
  "summaryRestricted": "제한됨 · {{count}} 소스",
@@ -10224,9 +11589,9 @@
10224
11589
  "outOfSync": "동기화되지 않음",
10225
11590
  "firewallOff": "방화벽 꺼짐",
10226
11591
  "ufwMissing": "UFW가 설치되지 않았습니다",
10227
- "ufwInactive": "inactive",
10228
- "firewallLink": "Firewall",
10229
- "portsLabel": "Ports",
11592
+ "ufwInactive": "비활성",
11593
+ "firewallLink": "방화벽",
11594
+ "portsLabel": "포트",
10230
11595
  "allowFrom": "허용된 소스(IP/CIDR)",
10231
11596
  "allowCountries": "허용 국가(ISO)",
10232
11597
  "hintPrivate": "서비스는 여전히 localhost에서 수신 대기할 수 있습니다. 공개 UFW 허용 규칙이 없습니다.",
@@ -10237,7 +11602,19 @@
10237
11602
  "restrictedNeedSource": "제한 모드에 대한 IP/CIDR 또는 국가 코드를 하나 이상 추가하세요.",
10238
11603
  "privateStartTitle": "네트워크에 {{service}}를 노출하시겠습니까?",
10239
11604
  "confirmAndStart": "확인하고 시작하세요",
10240
- "cloudSgNote": "호스트 방화벽만 해당 - 클라우드 보안 그룹(AWS/GCP/Azure)은 변경되지 않습니다."
11605
+ "cloudSgNote": "호스트 방화벽만 해당 - 클라우드 보안 그룹(AWS/GCP/Azure)은 변경되지 않습니다.",
11606
+ "modeUndecided": "설정되지 않음",
11607
+ "modeLoading": "로드 중",
11608
+ "summaryUndecided": "액세스 모드가 확인되지 않았습니다(카탈로그 기본값: {{suggested}}).",
11609
+ "summaryNotEnforced": "방화벽이 꺼져 있습니다. 패널이 이러한 포트를 열거나 차단하지 않습니다.",
11610
+ "roleSmtp": "SMTP 제출",
11611
+ "roleImap": "IMAP/POP3 사서함",
11612
+ "serviceNotInstalled": "이 서비스는 설치되지 않았으므로 방화벽 규칙이 적용되지 않습니다.",
11613
+ "openButStopped": "포트가 열려 있음 - 서비스가 실행되고 있지 않음",
11614
+ "openNoTenants": "테넌트가 없는 공용 포트",
11615
+ "summaryFirewallOffOnly": "Host firewall is not enabled, so port rules are not enforced.",
11616
+ "modePublicLive": "Public (live bind)",
11617
+ "summaryPublicLive": "Listening on {{bind}} — reachable on all interfaces. Confirm access mode; this is not private."
10241
11618
  },
10242
11619
  "services": {
10243
11620
  "enabledBoot": "부팅 시",
@@ -10245,8 +11622,27 @@
10245
11622
  "start": "시작",
10246
11623
  "stop": "멈추다",
10247
11624
  "restart": "다시 시작",
10248
- "reload": "새로고침"
10249
- },
11625
+ "reload": "새로고침",
11626
+ "enable": "부팅 시 사용",
11627
+ "disable": "부팅 시 사용 안 함"
11628
+ },
11629
+ "lifecycleTitle": "{{label}} 서비스 제어",
11630
+ "startedOk": "{{label}}을(를) 시작했습니다",
11631
+ "stoppedOk": "{{label}}을(를) 중지했습니다",
11632
+ "restartedOk": "{{label}}을(를) 재시작했습니다",
11633
+ "reloadedOk": "{{label}}을(를) 다시 불러왔습니다",
11634
+ "stopConfirmTitle": "{{label}}을(를) 중지할까요?",
11635
+ "stopConfirmDesc": "{{label}} 수신을 중지합니다. 필요하면 이 페이지에서 다시 시작하세요.",
11636
+ "stopConfirmEdgeDesc": "{{label}}을(를) 중지하면 사이트와 리버스 프록시가 다시 시작할 때까지 오프라인입니다.",
11637
+ "stopConfirmEdgeConsequence": "{{label}}이(가) 중지된 동안 이 호스트는 HTTP/HTTPS를 제공하지 않습니다.",
11638
+ "stopConfirmSshdTitle": "sshd를 중지할까요?",
11639
+ "stopConfirmSshdDesc": "sshd를 중지하면 원격 SSH가 끊깁니다. 콘솔 등 다른 로그인 경로가 있는지 확인하세요.",
11640
+ "stopConfirmSshdToken": "SSHD 중지",
11641
+ "stopConfirmSshdConsequence": "호스트 콘솔에서 sshd를 시작할 때까지 새 SSH 세션은 실패합니다.",
11642
+ "stopConfirmPanelTitle": "YSK Server를 중지할까요?",
11643
+ "stopConfirmPanelDesc": "호스트에서 유닛을 시작할 때까지 패널과 API가 오프라인입니다.",
11644
+ "stopConfirmPanelToken": "ysk 서버 중지",
11645
+ "stopConfirmPanelConsequence": "이 브라우저 세션이 끊깁니다. SSH 또는 호스트 콘솔에서 시작하세요.",
10250
11646
  "actionDone": "{{action}} 완료",
10251
11647
  "runningOf": "{{running}}/{{total}} 달리기",
10252
11648
  "canMutate": "변하기 쉬운",
@@ -10277,7 +11673,46 @@
10277
11673
  "protectionDoneNote": "보호 프로브 완료",
10278
11674
  "probeDone": "프로브 완료",
10279
11675
  "runProtection": "보호 프로브 실행",
10280
- "notProbedYet": "아직 조사되지 않음"
11676
+ "notProbedYet": "아직 조사되지 않음",
11677
+ "stopConfirmFail2banTitle": "Fail2ban을 중지하시겠습니까?",
11678
+ "stopConfirmFail2banDesc": "fall2ban을 중지하면 자동 IP 차단이 꺼집니다. 웹사이트와 SSH는 계속 실행됩니다.",
11679
+ "stopConfirmFail2banConsequence": "새로운 공격자는 Fail2ban이 다시 시작될 때까지 금지되지 않습니다.",
11680
+ "installOrOpen": "설치/열기",
11681
+ "statusFilter": {
11682
+ "all": "모든 주",
11683
+ "running": "달리기",
11684
+ "failed": "실패한",
11685
+ "missing": "미설치"
11686
+ },
11687
+ "stopNeedConfirm": "확인이 필요합니다",
11688
+ "stopNeedConfirmPhrase": "확인 문구를 입력해야 합니다",
11689
+ "enabledOk": "{{label}} 부팅 시 사용으로 설정됨",
11690
+ "bootDisabledWarn": "{{label}}이(가) 실행 중이지만 부팅 시 시작되지 않습니다. 재부팅 후에도 유지하려면 사용으로 설정하세요.",
11691
+ "bootDisabledShort": "부팅 시 아님",
11692
+ "mariadbNotInstalled": "MariaDB가 설치되지 않음",
11693
+ "mariadbNotInstalledMysqlOk": "Not installed: MariaDB (MySQL is installed)",
11694
+ "restartConfirmPanelTitle": "Restart YSK Server?",
11695
+ "restartConfirmPanelDesc": "The panel and API will drop briefly while the unit restarts.",
11696
+ "unitNotFound": "Unit not installed",
11697
+ "unitNa": "Not applicable",
11698
+ "unitStatic": "static",
11699
+ "unitIndirect": "indirect",
11700
+ "needRunning": "{{label}} is not running",
11701
+ "bootNa": "Not applicable",
11702
+ "permLabel": "Permission",
11703
+ "permCanChange": "Can change the system (superuser)",
11704
+ "permBlocked": "Cannot change the system",
11705
+ "permHint": "System change {{exec}} · Superuser {{root}}",
11706
+ "clusterLegend": "Planned = saved in the panel, not applied on the host.",
11707
+ "active": {
11708
+ "active": "Running",
11709
+ "inactive": "Stopped",
11710
+ "not-found": "Not installed",
11711
+ "failed": "Failed",
11712
+ "tool": "Tool",
11713
+ "activating": "Starting"
11714
+ },
11715
+ "sshdBootOffWarn": "sshd is not enabled on boot. After reboot this host will have no SSH rescue path."
10281
11716
  },
10282
11717
  "software": {
10283
11718
  "title": "소프트웨어",
@@ -10368,7 +11803,8 @@
10368
11803
  "pick": "버전 선택",
10369
11804
  "noTarget": "업데이트 대상 없음",
10370
11805
  "needRuntimePage": "런타임 페이지에 이 버전을 설치하세요.",
10371
- "noAptCandidate": "적절한 후보 버전 없음"
11806
+ "noAptCandidate": "적절한 후보 버전 없음",
11807
+ "sourceLabel": "원천"
10372
11808
  },
10373
11809
  "install": {
10374
11810
  "progress": "설치 중: {{list}}…",
@@ -10467,14 +11903,24 @@
10467
11903
  "generic": "관련 서비스가 중단될 수 있습니다",
10468
11904
  "purgeData": "데이터 경로가 삭제됩니다.",
10469
11905
  "protectedSkipped": "보호된 구성 요소를 건너뜁니다.",
10470
- "runtimeStack": "이 런타임의 모든 패널 관리 버전이 삭제됩니다."
11906
+ "runtimeStack": "이 런타임의 모든 패널 관리 버전이 삭제됩니다.",
11907
+ "containers": "실행 중인 컨테이너가 중지됩니다",
11908
+ "validators": "Docker Compose를 쓰는 검증자 스택이 중지됩니다"
10471
11909
  },
10472
11910
  "requestCancel": "취소 요청",
10473
11911
  "cancelling": "취소 중…",
10474
11912
  "dockCancelling": "취소 중 · {{title}}",
10475
11913
  "dockCancelled": "취소됨 · {{title}}",
10476
11914
  "cancelHint": "취소를 요청했습니다. 클라이언트가 청취를 중단했습니다. 호스트는 현재 apt/step을 완료할 수 있습니다. 잠시 후 상태를 다시 조사해 보세요.",
10477
- "cancelledToast": "작업이 취소됨(클라이언트가 스트리밍을 중지함)"
11915
+ "cancelledToast": "작업이 취소됨(클라이언트가 스트리밍을 중지함)",
11916
+ "kindApply": "적용",
11917
+ "kindScan": "주사",
11918
+ "kindDeploy": "배포",
11919
+ "kindRuntime": "실행 시간",
11920
+ "jobDone": "완료 · {{title}}",
11921
+ "jobFailed": "실패 · {{title}}",
11922
+ "uninstallUfwWarn": "UFW를 제거하면 패널이 관리하는 포트 방화벽이 사라집니다.",
11923
+ "uninstallFail2banWarn": "fail2ban을 제거하면 jail이 멈추고 현재 차단이 해제됩니다. 유지하려면 먼저 로그인 IP를 ignoreip에 넣으세요."
10478
11924
  },
10479
11925
  "sqlEngineHealth": {
10480
11926
  "finding": {
@@ -10690,7 +12136,18 @@
10690
12136
  "requestDone": "인증서 요청이 완료되었습니다.",
10691
12137
  "requestFailed": "인증서 요청이 실패했습니다.",
10692
12138
  "applyFailed": "요청 실패",
10693
- "deletedCert": "삭제됨 {{domain}}"
12139
+ "deletedCert": "삭제됨 {{domain}}",
12140
+ "uninstallCertbotWarn": "certbot을 제거하면 기존 Let's Encrypt 인증서의 자동 갱신이 중지됩니다.",
12141
+ "renew": "고쳐 쓰다",
12142
+ "renewFor": "{{domain}}에 대한 Let’s Encrypt 갱신",
12143
+ "domainRequired": "도메인을 입력하세요.",
12144
+ "domainInvalid": "도메인 형식이 올바르지 않습니다.",
12145
+ "domainKnownHint": "알려진 프로젝트·DNS·메일 도메인에서 고르거나 직접 입력하세요.",
12146
+ "deleteNeedDomain": "이 인증서 삭제 - 도메인 이름을 입력하여 확인하세요.",
12147
+ "panelCertHint": "Panel HTTPS uses {{path}} (expires {{exp}}). It is not listed as a site certificate.",
12148
+ "openPanelTls": "Open panel HTTPS",
12149
+ "deleteDomain": "Delete {{domain}}",
12150
+ "uninstallCertbot": "Uninstall certbot (loses auto-renew)"
10694
12151
  },
10695
12152
  "stackWizard": {
10696
12153
  "purgeConfirm": "퍼지를 확인하시겠습니까? 등록된 데이터 경로(데이터베이스/메일)가 영구적으로 삭제됩니다.",
@@ -10705,39 +12162,62 @@
10705
12162
  "componentsTitle": "설치할 구성 요소",
10706
12163
  "dryRun": "테스트 실행 미리보기",
10707
12164
  "installNow": "지금 설치",
10708
- "uninstallHint": "제거할 번들 선택",
12165
+ "uninstallHint": "제거할 번들을 선택하세요. 선택하지 않으면 제거할 수 없습니다. 데이터는 기본적으로 유지됩니다.",
10709
12166
  "dataPolicy": "데이터 정책",
10710
12167
  "keepData": "데이터 보관",
10711
12168
  "purgeData": "데이터 삭제",
10712
- "uninstallNow": "지금 제거"
12169
+ "uninstallNow": "지금 제거",
12170
+ "uninstallNeedSelect": "번들을 하나 이상 선택하세요. 빈 선택은 더 이상 모두 제거를 의미하지 않습니다.",
12171
+ "uninstallConfirmTitle": "선택한 번들을 삭제하시겠습니까?",
12172
+ "uninstallConfirmDesc": "{{count}} 번들이 제거됩니다. 확인하려면 REMOVE를 입력하세요.",
12173
+ "countHint": "These counts are OS packages in the software plan — not the service-matrix units on the other tab.",
12174
+ "executeRoot": "System changes {{execute}} · administrator {{root}}",
12175
+ "manifestPlan": "Plan {{plan}} ({{bundles}})",
12176
+ "manifestHint": "Last chosen software plan and bundles"
10713
12177
  },
10714
12178
  "support": {
10715
- "title": "Support",
10716
- "sub": "창작자, 기부자 YSK Limited — 무료 제품, 실질적인 도움",
10717
- "creatorTitle": "Creator",
10718
- "creatorBody": "YSK 서버는 스택을 소유하려는 운영자를 위한 무료의 정직한 단일 호스트 제어 평면으로 구축되었습니다. 프로젝트는 공개적으로 유지됩니다. 피드백과 버그 보고서는 이를 명확하게 유지합니다.",
10719
- "donateTitle": "지원/기부",
10720
- "donateBody": "YSK 서버로 시간을 절약한다면 개발 후원을 고려해 보세요. 모든 기여는 모든 사람에게 제품을 무료로 제공하는 데 도움이 됩니다.",
12179
+ "title": "지원",
12180
+ "sub": "Creator, 후원, YSK Limited — 무료 제품, 실질적인 도움",
12181
+ "creatorTitle": "창조자",
12182
+ "creatorBody": "YSK Server는 자신의 스택을 소유하려는 운영자를 위한 무료·정직한 단일 호스트 제어 평면입니다. 프로젝트는 공개적으로 유지되며, 피드백과 버그 신고가 품질을 지킵니다.",
12183
+ "donateTitle": "지원 / 후원",
12184
+ "donateBody": "YSK Server가 시간을 아껴 주었다면 개발 후원을 고려해 주세요. 모든 기여가 제품을 모두에게 무료로 유지하는 데 도움이 됩니다.",
10721
12185
  "donateGithub": "GitHub 후원자",
10722
- "donateOther": "다른 기부 방법",
12186
+ "donateOther": "다른 후원 방법",
10723
12187
  "yskTitle": "YSK Limited",
10724
- "yskIntro": "무료 패널 이상의 실제적인 도움이 필요하십니까? YSK Limited는 다음을 지원할있습니다.",
10725
- "yskSvc1": "서버 설정, 강화 지속적인 운영",
12188
+ "yskIntro": "무료 패널 이상의 실무 지원이 필요하신가요? YSK Limited는 다음을 도울있습니다:",
12189
+ "yskSvc1": "서버 구축, 강화, 지속 운영",
10726
12190
  "yskSvc2": "호스팅 스택 설계(웹, 메일, DNS, 데이터베이스)",
10727
- "yskSvc3": "마이그레이션, 자동화 맞춤형 통합",
10728
- "yskSvc4": "사고 대응 생산 준비 상태 검토",
10729
- "yskNoPrice": "여기에 가격이 나와 있지 않습니다. 귀하의 환경에 맞는 대화를 원하시면 당사에 문의하십시오.",
12191
+ "yskSvc3": "마이그레이션, 자동화, 맞춤 연동",
12192
+ "yskSvc4": "사고 대응과 프로덕션 준비 검토",
12193
+ "yskNoPrice": "여기에는 가격이 없습니다. 환경에 맞게 상담해 드립니다.",
10730
12194
  "yskWebsite": "ysk.hk",
10731
12195
  "helpTitle": "문제가 있나요?",
10732
- "helpBody": "OS, 설치 로그 경로, 예상한 내용과 발생한 내용을 이메일로 보내주세요. 우리는 모든 메시지를 읽습니다.",
10733
- "docsHint": "전체 문서는 다음 저장소에 있습니다.",
12196
+ "helpBody": "OS, 설치 로그 경로, 기대한 동작과 실제 결과를 이메일로 보내 주세요. 모든 메시지를 읽습니다.",
12197
+ "docsHint": "전체 문서는 저장소에 있습니다:",
10734
12198
  "donateLinktree": "Linktree",
10735
- "cryptoTitle": "암호화/web3 핸들",
10736
- "cryptoHint": "일치하는 네트워크에서만 전송하세요. 보내기 전에 주소를 다시 확인하세요.",
10737
- "cryptoNetwork": "Network",
10738
- "cryptoAddress": "Address",
10739
- "copy": "Copy",
10740
- "copied": "Copied"
12199
+ "cryptoTitle": "암호화폐 / Web3 핸들",
12200
+ "cryptoHint": "해당 네트워크에서만 보내세요. 보내기 전에 주소를 다시 확인하세요.",
12201
+ "cryptoNetwork": "네트워크",
12202
+ "cryptoAddress": "주소",
12203
+ "copy": "복사",
12204
+ "copied": "복사됨",
12205
+ "docsLink": "선적 서류 비치",
12206
+ "diagTitle": "진단 요약",
12207
+ "diagBody": "버전을 복사하고, 실행하고, 팩트를 호스트하여 이메일에 붙여넣습니다. 이것은 전체 로그 번들이 아닙니다.",
12208
+ "diagCopy": "진단 요약 복사",
12209
+ "diagCopied": "진단 요약이 복사되었습니다.",
12210
+ "copyTitle": "{{address}} 복사",
12211
+ "diagCopyTitle": "버전, EXECUTE, 호스트 정보 복사",
12212
+ "diagPreview": "복사될 내용 미리보기",
12213
+ "diagLoading": "진단 로드 중…",
12214
+ "diagLoadFailed": "진단을 로드할 수 없습니다.",
12215
+ "copiedAddr": "Copied {{addr}}",
12216
+ "diagStatus": "Status",
12217
+ "diagMode": "Mode",
12218
+ "diagProtection": "Protection",
12219
+ "diagHostname": "Hostname",
12220
+ "diagOs": "OS"
10741
12221
  },
10742
12222
  "system": {
10743
12223
  "exportLoadFailed": "내보내기 데이터를 로드하지 못했습니다.",
@@ -10818,7 +12298,17 @@
10818
12298
  "leOk": "{{domain}}에 대해 획득한 인증서를 암호화하자",
10819
12299
  "leFailed": "인증서 요청 실패: {{detail}}",
10820
12300
  "leHint": "여기에서 DNS A가 가리키고 포트 80이 연결 가능한지 확인하세요(또는 nginx가 도메인을 제공함)",
10821
- "openFirewall": "공개인 경우: 패널 포트 {{port}}/tcp 허용(방화벽 → 포트 열기 → 9287 패널)"
12301
+ "openFirewall": "공개인 경우: 패널 포트 {{port}}/tcp 허용(방화벽 → 포트 열기 → 9287 패널)",
12302
+ "disableConfirmTitle": "패널 HTTPS를 비활성화하시겠습니까?",
12303
+ "disableConfirmDesc": "패널은 HTTP를 제공합니다. WebAuthn/Passkey는 HTTPS가 다시 활성화될 때까지 작동이 중지됩니다.",
12304
+ "disablePasskeyWarn": "등록된 패스키에는 HTTPS가 필요합니다. HTTP에서는 실패합니다.",
12305
+ "disableNeedConfirm": "확인 필요 — DISABLE-HTTPS 입력",
12306
+ "listenPublic": "패널은 공개 주소(0.0.0.0/::)를 수신하고 있습니다. 방화벽으로 제한하거나 127.0.0.1로 바인딩하세요.",
12307
+ "bootstrapCert": "이는 자체 서명된 부트스트랩 인증서입니다. 브라우저에서 경고합니다. 패널 도메인에 대해 신뢰할 수 있는 인증서를 발급합니다.",
12308
+ "cliNoSocket": "CLI에는 라이브 HTTP 소켓이 없습니다. ServingHttps는 구성 및 청취 소켓(ss)에서 추론됩니다.",
12309
+ "listenHost": "청취 주소",
12310
+ "currentHost": "이번 세션",
12311
+ "replaceCert": "신뢰할 수 있는 인증서로 교체"
10822
12312
  },
10823
12313
  "timeNtp": "시간 및 NTP",
10824
12314
  "clockStatus": "시스템 시계 상태",
@@ -10923,7 +12413,21 @@
10923
12413
  "exportPath": "내보내기 경로",
10924
12414
  "mode": "방법",
10925
12415
  "managedConf": "관리형 구성",
10926
- "dryRunFlag": "드라이런"
12416
+ "dryRunFlag": "드라이런",
12417
+ "timezoneSearch": "시간대 필터링…",
12418
+ "resyncNtp": "NTP 재동기화",
12419
+ "storageSub": "디스크 사용량",
12420
+ "syncReloadNeedConfirm": "확인 필요 — /etc/nginx/conf.d에 쓰고 Nginx를 다시 불러옵니다",
12421
+ "nginxLeftover": "잔여",
12422
+ "nginxUnused": "미사용",
12423
+ "nginxLeftoverHint": "옛 public-files 등 잔여 conf. 조치하기 전까지 동기화에 포함됩니다.",
12424
+ "nginxUnusedHint": "기본 / catch-all conf(000-default). 조치하기 전까지 동기화에 포함됩니다.",
12425
+ "powerUnlock": "위험 구역 잠금 해제",
12426
+ "powerLock": "위험 구역 잠금",
12427
+ "noScheduledPower": "재부팅이나 전원 끄기가 예약되지 않았습니다.",
12428
+ "timezoneNow": "Host time now: {{time}} ({{tz}})",
12429
+ "timezoneBrowserDiff": "This host uses {{host}}; your browser uses {{browser}}. Changing timezone here changes the host clock, not the browser.",
12430
+ "notExported": "Not exported yet"
10927
12431
  },
10928
12432
  "systemd": {
10929
12433
  "enabled": "사용",
@@ -11017,7 +12521,9 @@
11017
12521
  "aboutPolicySub": "템플릿 작성과 시스템 설치는 별도의 단계입니다. 설치 후 다시 실행하는 것은 누락된 단계가 아니라 일반적인 작업입니다.",
11018
12522
  "policyInstallFull": "설치 및 활성화: /etc/systemd/system에 복사하고 daemon-reload하고 --now를 활성화합니다. 루트 + EXECUTE가 필요합니다.",
11019
12523
  "policyBlockedTitle": "권한 없이 차단됨",
11020
- "policyNotEqualTitle": "상태는 동일하지 않습니다."
12524
+ "policyNotEqualTitle": "상태는 동일하지 않습니다.",
12525
+ "rawStateHint": "Raw unit state in tooltip",
12526
+ "bootHint": "Whether the unit starts at boot"
11021
12527
  },
11022
12528
  "tabs": {
11023
12529
  "scrollLeft": "탭을 왼쪽으로 스크롤",
@@ -11057,7 +12563,15 @@
11057
12563
  "stepUpHint": "계정에 TOTP가 활성화되어 있는 경우 루트 로그인을 위해서는 2FA 승격이 필요합니다.",
11058
12564
  "stepUpTitle": "루트 쉘 확인",
11059
12565
  "stepUpDesc": "인증 코드 또는 복구 코드를 입력하세요.",
11060
- "totpLabel": "TOTP / 복구 코드"
12566
+ "totpLabel": "TOTP / 복구 코드",
12567
+ "sessionStillOpen": "이 페이지를 읽는 동안 라이브 셸은 계속 연결되어 있습니다.",
12568
+ "rootConfirmTitle": "루트 쉘을 여시겠습니까?",
12569
+ "rootConfirmDesc": "이 세션은 호스트의 무제한 루트 PTY입니다. 명령이 감사됩니다.",
12570
+ "rootConfirmBody": "권한 있는 호스트 명령을 실행하려는 경우에만 계속하십시오.",
12571
+ "copyAll": "모두 복사",
12572
+ "copyAllNeedConn": "먼저 연결 - 연결이 끊어진 동안 버퍼는 비어 있습니다.",
12573
+ "groupSystem": "System",
12574
+ "groupProject": "Project"
11061
12575
  },
11062
12576
  "uiInline": {
11063
12577
  "s27d9daa5": "런타임 {{v0}} {{v1}},",
@@ -11357,9 +12871,9 @@
11357
12871
  "applyPanelUpdate": "패널 업데이트 적용",
11358
12872
  "recheck": "재확인",
11359
12873
  "aboutScope": "범위",
11360
- "aboutScopeV": "ysk-server 제어 평면 버전 · 전체 시스템 적절한 업그레이드가 아님",
12874
+ "aboutScopeV": "ysk-server 패널 + 카탈로그 서비스 + 런타임 + 나머지 적절한 패키지",
11361
12875
  "aboutChannel": "채널",
11362
- "aboutChannelV": "npm → GitHub 릴리스 → package.json; npm install -g 또는 git(YSK_SOURCE_ROOT)을 통해 적용",
12876
+ "aboutChannelV": "npm 패키지 ysk-server → GitHub 릴리스 → apps/server/package.json; 적용: npm i -g ysk-server@version 또는 git (YSK_SOURCE_ROOT)",
11363
12877
  "aboutFail": "실패",
11364
12878
  "aboutFailV": "사용할 수 없는 채널은 최신으로 보고되지 않습니다. 적용하려면 실행이 필요합니다. git Apply에 서비스를 다시 시작해야 합니다.",
11365
12879
  "jobsTitle": "예약된 작업",
@@ -11436,7 +12950,79 @@
11436
12950
  "scanNow": "지금 스캔",
11437
12951
  "viewUpgradable": "업그레이드 가능 보기",
11438
12952
  "installElsewhere": "패키지(Nginx, PHP, 데이터베이스…)를 설치하려면 이 허브가 아닌 해당 기능 페이지를 엽니다.",
11439
- "status": "상태"
12953
+ "status": "상태",
12954
+ "groupService": "서비스",
12955
+ "groupRuntime": "런타임",
12956
+ "groupOs": "시스템 패키지",
12957
+ "notInstalled": "미설치",
12958
+ "goToPage": "페이지 열기",
12959
+ "hubHint": "이 호스트의 카탈로그 소프트웨어 및 런타임. 새로고침하려면 스캔하세요.",
12960
+ "intervalDay": "매일",
12961
+ "intervalDays": "{{n}}일마다",
12962
+ "intervalHour": "매시간",
12963
+ "intervalHours": "{{n}}시간마다",
12964
+ "intervalMinutes": "{{n}}분마다",
12965
+ "intervalSeconds": "{{n}}초마다",
12966
+ "availableHint": "패키지 관리자의 최신 후보가 포함된 패키지입니다.",
12967
+ "servicesHint": "이 호스트의 카탈로그 서비스입니다. 설치하려면 서비스 페이지를 엽니다.",
12968
+ "runtimeHint": "이 호스트의 런타임. 버전 업그레이드는 각 런타임 페이지에서 수행됩니다.",
12969
+ "needsReboot": "재부팅 필요",
12970
+ "kernelRebootWarn": "새 커널을 설치하려면 일반적으로 사용하기 전에 재부팅해야 합니다.",
12971
+ "neverRun": "아직 실행되지 않음",
12972
+ "scanOsvN": "스캔 + OSV(첫 번째 {{n}})",
12973
+ "rebootNeeded": "재부팅",
12974
+ "kernelRebootHint": "커널 패키지를 적용한 후 재부팅해야 함",
12975
+ "needApprovalHint": "사용 가능을 열고 승인이 필요한 패키지로 필터링합니다.",
12976
+ "applyNeedConfirm": "적용하기 전에 확인 대화상자를 엽니다.",
12977
+ "probeFailed": "프로브 실패",
12978
+ "notViaApt": "apt에서 관리하지 않음 — 후보자 없음",
12979
+ "noCandidate": "후보 버전 없음",
12980
+ "jobOpenGeo": "GeoIP 페이지",
12981
+ "job": {
12982
+ "protection_probe": {
12983
+ "name": "보호 프로브",
12984
+ "hint": "주기적 방어 신호"
12985
+ },
12986
+ "updates_scan": {
12987
+ "name": "업데이트 검사",
12988
+ "hint": "패키지 인벤토리 새로 고침"
12989
+ },
12990
+ "daily_backup": {
12991
+ "name": "일일 백업",
12992
+ "hint": "전체 백업 예약"
12993
+ },
12994
+ "db_temp_expire": {
12995
+ "name": "임시 DB 사용자 만료",
12996
+ "hint": "만료된 임시 데이터베이스 사용자 삭제"
12997
+ },
12998
+ "defense_auto_ban": {
12999
+ "name": "방어 자동 금지",
13000
+ "hint": "자동 차단 체크 적용"
13001
+ },
13002
+ "defense_geoip_update": {
13003
+ "name": "GeoIP 업데이트",
13004
+ "hint": "GeoIP 데이터베이스 다운로드"
13005
+ },
13006
+ "log_auto_vacuum": {
13007
+ "name": "로그 진공",
13008
+ "hint": "저널링 보존"
13009
+ },
13010
+ "email_dnsbl": {
13011
+ "name": "이메일 DNSBL",
13012
+ "hint": "메일 DNSBL 확인"
13013
+ },
13014
+ "validators_upgrade_scan": {
13015
+ "name": "Validators upgrade scan",
13016
+ "hint": "Check validator image / binary updates"
13017
+ }
13018
+ },
13019
+ "applyPanelAlreadyLatest": "이미 최신 패널 버전",
13020
+ "panelRestarting": "새 버전을 불러오려고 패널을 다시 시작하는 중…",
13021
+ "panelRestarted": "패널이 복구됨 · {{version}}",
13022
+ "panelRestartWait": "적용이 끝났습니다. 이 페이지가 갱신되지 않으면 몇 초 후 다시 불러오세요.",
13023
+ "cveNotChecked": "Not checked",
13024
+ "cveLabel": "CVE",
13025
+ "riskUnevaluated": "Not evaluated — run Scan + OSV"
11440
13026
  },
11441
13027
  "users": {
11442
13028
  "userCount": "{{count}} 사용자",
@@ -11558,7 +13144,291 @@
11558
13144
  "securityClearTotpHint": "승격이 필요합니다",
11559
13145
  "securityClearConfirm": "2FA 삭제를 확인하려면 사용자 이름을 입력하세요.",
11560
13146
  "securityClearOk": "{{name}}에 대한 2FA를 통과했습니다.",
11561
- "securitySelfNote": "자신만의 2FA를 설정하려면 보안 → 내 보안을 엽니다."
13147
+ "securitySelfNote": "자신만의 2FA를 설정하려면 보안 → 내 보안을 엽니다.",
13148
+ "cannotDeleteSelf": "로그인한 계정은 삭제할 수 없습니다",
13149
+ "cannotModifySelf": "로그인한 계정은 정지하거나 강등할 수 없습니다",
13150
+ "cannotDeleteLastAdmin": "마지막 관리자는 삭제할 수 없습니다",
13151
+ "cannotDemoteLastAdmin": "마지막 관리자는 정지하거나 강등할 수 없습니다",
13152
+ "lockSelfHint": "로그인한 계정입니다. 잠김을 막기 위해 삭제, 정지, 역할 변경이 차단됩니다.",
13153
+ "lockLastAdminHint": "마지막 관리자입니다. 삭제, 정지, 강등이 차단됩니다.",
13154
+ "demoteAdminTitle": "이 관리자를 강등할까요?",
13155
+ "demoteAdminDesc": "이 사용자는 전체 관리자 권한을 잃습니다. 다른 관리자가 남아 있는지 확인하세요.",
13156
+ "searchPkgPh": "패키지 이름",
13157
+ "quotaNonNeg": "개수와 할당량은 음수일 수 없습니다.",
13158
+ "diskQuotaHint": "사전 설정은 GiB입니다. 사용자 정의 상자는 MiB입니다.",
13159
+ "bandwidthHint": "0은 무제한을 의미합니다.",
13160
+ "impersonateHint": "이 사용자로 세션을 엽니다. 명의 도용을 종료하려면 계정 메뉴를 사용하세요.",
13161
+ "operatorHighRiskHint": "공장 기본 운영자 역할에는 고위험 쓰기가 포함됩니다. 좁히면 새 계정만, 기본을 바꾸면 기존 운영자에게도 영향을 줍니다.",
13162
+ "cannotImpersonateSelf": "이미 이 계정으로 로그인되어 있습니다.",
13163
+ "singleAdminNo2fa": "이 호스트에는 관리자가 한 명 있고 2FA가 꺼져 있습니다. 2FA를 활성화하고 백업 관리자를 추가하세요.",
13164
+ "enableAdmin2fa": "Enable admin 2FA",
13165
+ "addBackupAdmin": "Add a backup admin"
13166
+ },
13167
+ "validators": {
13168
+ "title": "검증자 노드 (Beta)",
13169
+ "subtitle": "이 호스트에서 L1 노드를 설치하고 관리합니다. 비수탁 — 키는 직접 보관하세요.",
13170
+ "beta": "Beta",
13171
+ "tab": {
13172
+ "nodes": "노드",
13173
+ "disk": "디스크",
13174
+ "about": "설명"
13175
+ },
13176
+ "empty": {
13177
+ "title": "아직 검증자 노드가 없습니다",
13178
+ "desc": "마법사로 테스트넷 노드를 만드세요."
13179
+ },
13180
+ "refresh": "새로 고침",
13181
+ "disk": {
13182
+ "title": "검증자 디스크",
13183
+ "root": "데이터 디렉터리",
13184
+ "free": "여유",
13185
+ "used": "사용",
13186
+ "none": "아직 인스턴스 데이터가 없습니다",
13187
+ "warn": "디스크 사용량이 높습니다(70% 이상)",
13188
+ "danger": "디스크 사용량이 위험합니다(85% 이상)",
13189
+ "autoClear": "디스크가 위험할 때 가장 큰 중지 인스턴스를 자동 삭제(기본 꺼짐)",
13190
+ "autoClearRisk": "Destructive: the largest stopped instance is deleted without a further prompt. Default is off. Check audit / logs after it fires.",
13191
+ "autoClearConfirmTitle": "Enable auto-clear?",
13192
+ "autoClearC1": "When disk is critical, the largest stopped instance is deleted without asking again."
13193
+ },
13194
+ "chain": {
13195
+ "eth": "Ethereum",
13196
+ "avax": "Avalanche",
13197
+ "near": "NEAR",
13198
+ "ada": "Cardano",
13199
+ "btc": "Bitcoin",
13200
+ "cosmos": "Cosmos Hub",
13201
+ "sui": "Sui",
13202
+ "aptos": "Aptos",
13203
+ "dot": "Polkadot",
13204
+ "sol": "Solana"
13205
+ },
13206
+ "network": {
13207
+ "hoodi": "Hoodi",
13208
+ "sepolia": "Sepolia",
13209
+ "mainnet": "메인넷",
13210
+ "fuji": "Fuji",
13211
+ "testnet": "테스트넷",
13212
+ "preview": "시사",
13213
+ "preprod": "프레프로트",
13214
+ "westend": "Westend"
13215
+ },
13216
+ "networkKind": {
13217
+ "testnet": "테스트넷",
13218
+ "mainnet": "메인넷",
13219
+ "mixed": "Mainnet + testnet"
13220
+ },
13221
+ "profile": {
13222
+ "minimal": "최소",
13223
+ "pruned": "Pruned",
13224
+ "validator-ready": "검증자 준비",
13225
+ "rpc": "RPC"
13226
+ },
13227
+ "col": {
13228
+ "id": "ID",
13229
+ "chain": "체인",
13230
+ "network": "네트워크",
13231
+ "profile": "프로필",
13232
+ "status": "상태",
13233
+ "disk": "디스크"
13234
+ },
13235
+ "cli": {
13236
+ "usage": "사용법: ysk-server validators list|chains|disk|get|status|logs|create|start|stop|restart|clear|upgrade|policy|mithril|prune|switch-network|snapshot|compose|settings [--chain C] [--network N] [--profile P] [--el EL] [--cl CL] [--data-path P] [--rpc-port N] [--id ID] [--upgrade POLICY] [--confirm TOKEN] [--execute] [--json]"
13237
+ },
13238
+ "clients": {
13239
+ "el": "실행 클라이언트",
13240
+ "cl": "합의 클라이언트"
13241
+ },
13242
+ "mithril": {
13243
+ "label": "먼저 Mithril 스냅샷으로 복원(테스트넷 권장)",
13244
+ "action": "Mithril로 복원"
13245
+ },
13246
+ "errors": {
13247
+ "notFound": "검증자 인스턴스를 찾을 수 없습니다",
13248
+ "invalidId": "인스턴스 ID가 올바르지 않습니다",
13249
+ "diskLow": "이 체인, 네트워크, 프로필에 필요한 여유 디스크가 부족합니다",
13250
+ "diskUnknownMainnet": "여유 디스크를 측정할 수 없어 메인넷 생성을 거부했습니다",
13251
+ "needDocker": "Docker Compose가 필요하지만 찾을 수 없습니다",
13252
+ "composeFailed": "docker compose가 실패했습니다",
13253
+ "needConfirm": "삭제에는 confirm=인스턴스 ID 또는 CLEAR가 필요합니다",
13254
+ "mithrilAdaOnly": "Mithril 복원은 Cardano만 지원합니다",
13255
+ "needMithrilConfirm": "Mithril에는 confirm=인스턴스 ID 또는 MITHRIL이 필요합니다",
13256
+ "mithrilBlocked": "Mithril docker run이 허용 목록에서 거부되었습니다",
13257
+ "mithrilKey": "Mithril genesis 검증 키를 불러올 수 없습니다",
13258
+ "mithrilFailed": "Mithril 스냅샷 다운로드가 실패했습니다",
13259
+ "pruneFailed": "정리가 실패했습니다",
13260
+ "switchNeedStop": "네트워크를 바꾸기 전에 노드를 중지하십시오",
13261
+ "switchNeedClear": "네트워크 전환은 체인 데이터를 지웁니다. 인스턴스 ID 또는 CLEAR로 확인하십시오",
13262
+ "composeMissing": "Compose 파일을 찾을 수 없습니다",
13263
+ "composeNotManaged": "YSK가 관리하지 않는 Compose 파일은 쓰지 않습니다",
13264
+ "badDataPath": "데이터 경로는 시스템 경로가 아닌 절대 디렉터리여야 합니다",
13265
+ "portInUse": "해당 RPC 포트는 다른 검증자 인스턴스가 사용 중입니다",
13266
+ "snapshotUnsupported": "이 체인에는 허용된 스냅샷 원본이 없습니다",
13267
+ "snapshotLookup": "공식 스냅샷 포인터를 해석할 수 없습니다",
13268
+ "needSnapshotConfirm": "스냅샷 복원에는 confirm=인스턴스 ID 또는 SNAPSHOT이 필요합니다",
13269
+ "snapshotBlocked": "스냅샷 docker run이 허용 목록에서 거부되었습니다",
13270
+ "snapshotFailed": "스냅샷 다운로드 또는 압축 해제가 실패했습니다"
13271
+ },
13272
+ "notes": {
13273
+ "beta": "이 기능은 Beta입니다. 호스트 변경에는 root와 YSK_EXECUTE=1이 필요합니다.",
13274
+ "noKeys": "YSK Server는 스테이킹 키를 생성하거나 저장하지 않습니다.",
13275
+ "dockerSoon": "Install and start from this page wizard. Host changes need root and YSK_EXECUTE=1.",
13276
+ "dryCreate": "인스턴스 사양과 compose를 썼습니다(dry-run). 컨테이너를 시작하려면 --execute와 YSK_EXECUTE=1을 사용하세요.",
13277
+ "dryStart": "시작은 dry-run입니다. --execute와 YSK_EXECUTE=1을 사용하세요.",
13278
+ "dryStop": "중지는 dry-run입니다. --execute와 YSK_EXECUTE=1을 사용하세요.",
13279
+ "dryClear": "삭제는 dry-run입니다. --execute와 YSK_EXECUTE=1을 사용하세요.",
13280
+ "created": "노드를 만들고 compose를 시작했습니다",
13281
+ "started": "노드를 시작했습니다",
13282
+ "stopped": "노드를 중지했습니다",
13283
+ "cleared": "체인 데이터를 지웠습니다",
13284
+ "dryMithril": "Mithril 복원은 dry-run입니다. --execute와 YSK_EXECUTE=1을 사용하세요.",
13285
+ "mithril": "Mithril 스냅샷을 복원하고 노드를 다시 시작했습니다",
13286
+ "dryPrune": "정리는 dry-run입니다. --execute와 YSK_EXECUTE=1을 사용하세요.",
13287
+ "pruned": "사용하지 않는 프로젝트 이미지를 정리했습니다",
13288
+ "pruneProfile": "클라이언트 원본 정리는 pruned/minimal 프로필입니다. 바꾸려면 다시 만드세요.",
13289
+ "sameNetwork": "이미 그 네트워크입니다",
13290
+ "drySwitch": "네트워크 전환은 dry-run입니다.",
13291
+ "switched": "네트워크를 바꾸고 체인 데이터를 지웠습니다",
13292
+ "dryCompose": "compose.yml을 씁니다",
13293
+ "composeWrote": "compose.yml을 썼습니다",
13294
+ "statsEmpty": "측정할 실행 중 컨테이너가 없습니다",
13295
+ "autoClearNone": "자동 삭제할 중지된 인스턴스가 없습니다",
13296
+ "drySnapshot": "스냅샷 복원은 dry-run입니다. --execute와 YSK_EXECUTE=1을 사용하세요.",
13297
+ "snapshotEthEl": "ethPandaOps EL 아카이브를 복원하고 checkpoint sync를 위해 CL을 재설정했습니다",
13298
+ "snapshotEthCl": "CL 데이터를 재설정하고 공식 checkpoint sync를 사용합니다",
13299
+ "snapshotNear": "NEAR 데이터를 지웠습니다. compose가 공식 genesis와 epoch sync로 다시 초기화합니다",
13300
+ "nativePrune": "클라이언트 원본 정리 명령을 실행했습니다",
13301
+ "dryDelete": "Delete is dry-run. Pass --execute and YSK_EXECUTE=1.",
13302
+ "deleted": "Node deleted"
13303
+ },
13304
+ "create": "노드 만들기",
13305
+ "wizard": {
13306
+ "title": "노드 만들기",
13307
+ "back": "뒤로",
13308
+ "next": "다음",
13309
+ "install": "설치",
13310
+ "mainnetWarn": "메인넷은 여유 디스크가 많이 필요합니다(ETH는 종종 800 GiB 이상). 테스트넷을 권장합니다.",
13311
+ "mainnetAck": "디스크와 슬래싱 위험을 이해했으며 메인넷을 계속합니다.",
13312
+ "heavyWarn": "이 체인은 부하가 큽니다(대용량 디스크와 높은 IOPS). Solana 메인넷은 보통 2 TiB 이상이 필요합니다.",
13313
+ "memory": "메모리 한도(예: 4g)",
13314
+ "cpus": "CPU 한도(예: 2.0)",
13315
+ "dataPath": "데이터 경로(선택)",
13316
+ "rpcPort": "RPC 포트(선택)",
13317
+ "stepOf": "Step {{n}} / {{total}}",
13318
+ "stepChain": "Chain",
13319
+ "stepNetwork": "Network",
13320
+ "stepProfile": "Profile",
13321
+ "stepSummary": "Summary",
13322
+ "needDocker": "Docker Engine is not installed. Install it first — this button stays disabled.",
13323
+ "diskNeed": "This profile needs about {{need}} · free {{free}}",
13324
+ "diskShort": "Not enough free disk for this chain / network / profile",
13325
+ "limitNone": "No limit",
13326
+ "rpcDefault": "Default",
13327
+ "customPath": "Use a custom data path",
13328
+ "installConfirmTitle": "Install this node?",
13329
+ "installConfirmDesc": "{{chain}} · {{network}} · {{profile}}. About {{disk}} of disk. The image pull can take a long time.",
13330
+ "installC1": "Several gigabytes of images may be downloaded.",
13331
+ "installC2": "You can cancel the panel task; already-pulled images are not deleted automatically."
13332
+ },
13333
+ "actions": {
13334
+ "detail": "자세히",
13335
+ "start": "시작",
13336
+ "stop": "중지",
13337
+ "restart": "다시 시작",
13338
+ "clear": "비우기",
13339
+ "upgrade": "업그레이드",
13340
+ "clearConfirm": "인스턴스 ID 또는 CLEAR 입력",
13341
+ "prune": "이미지 정리",
13342
+ "switchNetwork": "네트워크 전환",
13343
+ "removeUnit": "compose/인스턴스 기록도 삭제",
13344
+ "restoreAfter": "비운 뒤 스냅샷 복원",
13345
+ "delete": "Delete",
13346
+ "deleteTitle": "Delete {{id}}",
13347
+ "deleteDesc": "This removes the node from the panel.",
13348
+ "deleteC1": "Docker Compose is stopped and removed",
13349
+ "deleteC2": "Chain data on disk is deleted",
13350
+ "deleteC3": "The instance record is removed",
13351
+ "pruneTitle": "Prune unused images",
13352
+ "pruneDesc": "Type the instance id to prune unused Compose images for this node.",
13353
+ "pruneC1": "Unused images labelled for this Compose project are deleted.",
13354
+ "clearTitle": "Clear {{id}}",
13355
+ "clearC1": "Chain data on disk is deleted.",
13356
+ "clearC2": "The instance stays in the panel, stopped and empty.",
13357
+ "switchTitle": "Switch network",
13358
+ "switchC1": "The node is stopped and chain data is wiped before the new network is written."
13359
+ },
13360
+ "policy": {
13361
+ "label": "업그레이드 정책",
13362
+ "manual": "수동",
13363
+ "notify": "알림",
13364
+ "auto-safe": "자동(안전)",
13365
+ "auto-all": "자동(모두)"
13366
+ },
13367
+ "logs": {
13368
+ "empty": "아직 로그가 없습니다",
13369
+ "follow": "로그 따라가기"
13370
+ },
13371
+ "compose": {
13372
+ "label": "Compose 파일",
13373
+ "save": "compose 저장"
13374
+ },
13375
+ "snapshot": {
13376
+ "action": "스냅샷 복원",
13377
+ "mithril": "Cardano는 인증 스냅샷 복원에 Mithril을 사용합니다.",
13378
+ "eth": "Ethereum 메인넷은 합의 클라이언트의 공식 checkpoint sync로 시작합니다. EL은 snap sync를 계속합니다.",
13379
+ "ethEl": "Hoodi/Sepolia는 ethPandaOps EL 아카이브를 복원한 뒤 CL을 checkpoint-sync할 수 있습니다.",
13380
+ "avax": "Avalanche는 compose 프로필에서 state-sync를 사용합니다.",
13381
+ "near": "공식 무료 NEAR tar 스냅샷은 종료되었습니다. 복원은 데이터를 지우고 공식 genesis와 epoch sync를 사용합니다.",
13382
+ "none": "이 체인에는 스냅샷 원본이 설정되어 있지 않습니다."
13383
+ },
13384
+ "stake": {
13385
+ "title": "스테이킹 준비(키는 직접 보관)",
13386
+ "offlineKeys": "키는 오프라인에서 만드세요. 패널은 저장하지 않습니다.",
13387
+ "deposit": "공식 launchpad에서 예치/등록을 완료하세요.",
13388
+ "withdrawal": "출금 자격 증명은 직접 설정하세요.",
13389
+ "monitor": "이 페이지에서 디스크, 피어, 업그레이드 배지를 확인하세요."
13390
+ },
13391
+ "alerts": {
13392
+ "diskTitle": "검증자 디스크가 위험합니다",
13393
+ "diskBody": "검증자 데이터 볼륨의 여유 공간이 매우 적습니다.",
13394
+ "upgradeTitle": "검증자 업그레이드가 있습니다",
13395
+ "upgradeBody": "하나 이상의 노드 클라이언트에 더 새로운 고정 버전이 있습니다.",
13396
+ "syncTitle": "검증자 노드를 확인하세요",
13397
+ "syncBody": "6시간 넘게 동기화 중인 노드가 있거나 오류를 보고했습니다.",
13398
+ "rollbackTitle": "검증자 업그레이드를 롤백했습니다",
13399
+ "rollbackBody": "{{id}} 업그레이드가 상태 확인에 실패하여 롤백되었습니다."
13400
+ },
13401
+ "upgrade": {
13402
+ "changelog": "변경 기록"
13403
+ },
13404
+ "readiness": {
13405
+ "dockerTitle": "검증자 노드용 Docker",
13406
+ "dockerOk": "검증자 인스턴스 {{count}}개; Docker가 설치되어 있습니다",
13407
+ "dockerMissing": "검증자 인스턴스가 있지만 docker 명령을 찾을 수 없습니다"
13408
+ },
13409
+ "detail": {
13410
+ "status": "Status",
13411
+ "sync": "Sync",
13412
+ "peers": "Peers",
13413
+ "version": "Version",
13414
+ "access": "Access",
13415
+ "upgrade": "Updates",
13416
+ "upgradeHint": "How this node tracks client versions.",
13417
+ "network": "Network",
13418
+ "networkHint": "Switching network stops the node and clears chain data. Confirm under Clear data first.",
13419
+ "maintain": "Maintenance",
13420
+ "danger": "Clear data",
13421
+ "dangerHint": "Type the instance id or CLEAR. This deletes chain data on disk.",
13422
+ "compose": "Compose",
13423
+ "logs": "Logs"
13424
+ },
13425
+ "state": {
13426
+ "unknown": "Unknown",
13427
+ "stopped": "Stopped",
13428
+ "running": "Running",
13429
+ "syncing": "Syncing",
13430
+ "error": "Error"
13431
+ }
11562
13432
  },
11563
13433
  "vnc": {
11564
13434
  "pageDesc": "VNC 서버 및 클라이언트",
@@ -11804,15 +13674,24 @@
11804
13674
  "stackMissingShort": "미설치",
11805
13675
  "editClientTitle": "원격 클라이언트 편집",
11806
13676
  "editClientDesc": "경로, 호스트 및 선택적으로 저장된 비밀번호를 업데이트합니다.",
11807
- "clientUpdated": "클라이언트 프로필이 업데이트되었습니다."
13677
+ "clientUpdated": "클라이언트 프로필이 업데이트되었습니다.",
13678
+ "rememberNeedPassword": "먼저 비밀번호를 입력하세요.",
13679
+ "settingsNeedStack": "이러한 기본값은 TigerVNC(선택한 경우 XFCE)가 설치된 경우 적용됩니다. 먼저 설치 탭에서 설치하세요.",
13680
+ "clientNeedNovnc": "브라우저에서 열려면 noVNC가 필요합니다. 여기에서 열 것으로 예상되는 리모컨을 추가하기 전에 설치 탭에서 설치하세요.",
13681
+ "needXfceFirst": "Install XFCE first",
13682
+ "needSessionRunning": "Session is not running — start it first",
13683
+ "deleteKeepUserWarn": "The Linux user will stay on the host as an orphan. You must clean it up later.",
13684
+ "bindRfbLine": "RFB {{bind}} :{{port}}",
13685
+ "bindNovncLine": "noVNC 127.0.0.1:{{port}}",
13686
+ "bindNovncHint": "noVNC listens on localhost. The desktop is reached through this panel, not the public internet, unless RFB bind is all interfaces."
11808
13687
  },
11809
13688
  "vpn": {
11810
13689
  "pageDesc": "VPN 서버 및 클라이언트",
11811
13690
  "eyebrow": "VPN",
11812
13691
  "tab": {
11813
- "wireguard": "와이어가드",
11814
- "openvpn": "오픈VPN",
11815
- "outline": "섀도우삭스",
13692
+ "wireguard": "WireGuard",
13693
+ "openvpn": "OpenVPN",
13694
+ "outline": "Shadowsocks",
11816
13695
  "client": "로컬 클라이언트",
11817
13696
  "software": "소프트웨어",
11818
13697
  "monitor": "감시 장치",
@@ -11935,6 +13814,21 @@
11935
13814
  "lanCidrs": "LAN 네트워크",
11936
13815
  "customCidr": "CIDR",
11937
13816
  "addCidr": "추가하다"
11938
- }
13817
+ },
13818
+ "engineNotInstalled": "이 VPN 엔진이 호스트에 설치되어 있지 않습니다.",
13819
+ "serverNotListening": "서버 유닛이 활성 상태가 아닙니다. UDP/TCP {{port}}가 닫혀 있을 수 있습니다.",
13820
+ "installEngineFirst": "VPN 엔진을 먼저 설치하세요",
13821
+ "portHint": {
13822
+ "51820": "기본 WireGuard 수신 포트",
13823
+ "51821": "대체 WireGuard 수신 포트",
13824
+ "51822": "두 번째 대체 WireGuard 수신 포트"
13825
+ },
13826
+ "needServerRunning": "{{engine}} is not running — apply the server first",
13827
+ "engineSummarySoftware": "{{installed}} installed · {{running}} running",
13828
+ "privateKeyOnce": "The client private key is shown only here. Download or copy it now — it cannot be recovered later.",
13829
+ "showPrivateKey": "Show private key",
13830
+ "hidePrivateKey": "Hide private key",
13831
+ "deletePeerTitle": "Delete peer {{name}}?",
13832
+ "deletePeerDesc": "Remove {{name}} ({{address}}). The client disconnects immediately and the config cannot be restored."
11939
13833
  }
11940
13834
  }