xray-manager 1.8.4 → 2.0.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 (324) hide show
  1. package/README.md +102 -42
  2. package/dist/cli.mjs +8587 -0
  3. package/dist/cli.mjs.map +7 -0
  4. package/package.json +13 -5
  5. package/dist/cli.d.ts +0 -11
  6. package/dist/cli.d.ts.map +0 -1
  7. package/dist/cli.js +0 -134
  8. package/dist/cli.js.map +0 -1
  9. package/dist/commands/clash.d.ts +0 -20
  10. package/dist/commands/clash.d.ts.map +0 -1
  11. package/dist/commands/clash.js +0 -156
  12. package/dist/commands/clash.js.map +0 -1
  13. package/dist/commands/config.d.ts +0 -56
  14. package/dist/commands/config.d.ts.map +0 -1
  15. package/dist/commands/config.js +0 -461
  16. package/dist/commands/config.js.map +0 -1
  17. package/dist/commands/interactive.d.ts +0 -55
  18. package/dist/commands/interactive.d.ts.map +0 -1
  19. package/dist/commands/interactive.js +0 -418
  20. package/dist/commands/interactive.js.map +0 -1
  21. package/dist/commands/logs.d.ts +0 -62
  22. package/dist/commands/logs.d.ts.map +0 -1
  23. package/dist/commands/logs.js +0 -389
  24. package/dist/commands/logs.js.map +0 -1
  25. package/dist/commands/quota.d.ts +0 -54
  26. package/dist/commands/quota.d.ts.map +0 -1
  27. package/dist/commands/quota.js +0 -661
  28. package/dist/commands/quota.js.map +0 -1
  29. package/dist/commands/review.d.ts +0 -8
  30. package/dist/commands/review.d.ts.map +0 -1
  31. package/dist/commands/review.js +0 -79
  32. package/dist/commands/review.js.map +0 -1
  33. package/dist/commands/service.d.ts +0 -43
  34. package/dist/commands/service.d.ts.map +0 -1
  35. package/dist/commands/service.js +0 -202
  36. package/dist/commands/service.js.map +0 -1
  37. package/dist/commands/user.d.ts +0 -49
  38. package/dist/commands/user.d.ts.map +0 -1
  39. package/dist/commands/user.js +0 -371
  40. package/dist/commands/user.js.map +0 -1
  41. package/dist/components/dashboard-widget.d.ts +0 -21
  42. package/dist/components/dashboard-widget.d.ts.map +0 -1
  43. package/dist/components/dashboard-widget.js +0 -234
  44. package/dist/components/dashboard-widget.js.map +0 -1
  45. package/dist/components/progress-bar.d.ts +0 -67
  46. package/dist/components/progress-bar.d.ts.map +0 -1
  47. package/dist/components/progress-bar.js +0 -138
  48. package/dist/components/progress-bar.js.map +0 -1
  49. package/dist/components/user-table.d.ts +0 -8
  50. package/dist/components/user-table.d.ts.map +0 -1
  51. package/dist/components/user-table.js +0 -91
  52. package/dist/components/user-table.js.map +0 -1
  53. package/dist/config/i18n.d.ts +0 -136
  54. package/dist/config/i18n.d.ts.map +0 -1
  55. package/dist/config/i18n.js +0 -323
  56. package/dist/config/i18n.js.map +0 -1
  57. package/dist/constants/error-codes.d.ts +0 -344
  58. package/dist/constants/error-codes.d.ts.map +0 -1
  59. package/dist/constants/error-codes.js +0 -462
  60. package/dist/constants/error-codes.js.map +0 -1
  61. package/dist/constants/exit-codes.d.ts +0 -49
  62. package/dist/constants/exit-codes.d.ts.map +0 -1
  63. package/dist/constants/exit-codes.js +0 -100
  64. package/dist/constants/exit-codes.js.map +0 -1
  65. package/dist/constants/paths.d.ts +0 -63
  66. package/dist/constants/paths.d.ts.map +0 -1
  67. package/dist/constants/paths.js +0 -78
  68. package/dist/constants/paths.js.map +0 -1
  69. package/dist/constants/quota.d.ts +0 -126
  70. package/dist/constants/quota.d.ts.map +0 -1
  71. package/dist/constants/quota.js +0 -135
  72. package/dist/constants/quota.js.map +0 -1
  73. package/dist/constants/review.d.ts +0 -14
  74. package/dist/constants/review.d.ts.map +0 -1
  75. package/dist/constants/review.js +0 -33
  76. package/dist/constants/review.js.map +0 -1
  77. package/dist/constants/supported-distros.d.ts +0 -17
  78. package/dist/constants/supported-distros.d.ts.map +0 -1
  79. package/dist/constants/supported-distros.js +0 -68
  80. package/dist/constants/supported-distros.js.map +0 -1
  81. package/dist/constants/theme.d.ts +0 -34
  82. package/dist/constants/theme.d.ts.map +0 -1
  83. package/dist/constants/theme.js +0 -52
  84. package/dist/constants/theme.js.map +0 -1
  85. package/dist/constants/timeouts.d.ts +0 -84
  86. package/dist/constants/timeouts.d.ts.map +0 -1
  87. package/dist/constants/timeouts.js +0 -111
  88. package/dist/constants/timeouts.js.map +0 -1
  89. package/dist/constants/ui-symbols.d.ts +0 -47
  90. package/dist/constants/ui-symbols.d.ts.map +0 -1
  91. package/dist/constants/ui-symbols.js +0 -48
  92. package/dist/constants/ui-symbols.js.map +0 -1
  93. package/dist/services/clash-config.d.ts +0 -16
  94. package/dist/services/clash-config.d.ts.map +0 -1
  95. package/dist/services/clash-config.js +0 -107
  96. package/dist/services/clash-config.js.map +0 -1
  97. package/dist/services/config-manager.d.ts +0 -90
  98. package/dist/services/config-manager.d.ts.map +0 -1
  99. package/dist/services/config-manager.js +0 -307
  100. package/dist/services/config-manager.js.map +0 -1
  101. package/dist/services/layout-manager.d.ts +0 -94
  102. package/dist/services/layout-manager.d.ts.map +0 -1
  103. package/dist/services/layout-manager.js +0 -192
  104. package/dist/services/layout-manager.js.map +0 -1
  105. package/dist/services/log-manager.d.ts +0 -157
  106. package/dist/services/log-manager.d.ts.map +0 -1
  107. package/dist/services/log-manager.js +0 -397
  108. package/dist/services/log-manager.js.map +0 -1
  109. package/dist/services/navigation-manager.d.ts +0 -23
  110. package/dist/services/navigation-manager.d.ts.map +0 -1
  111. package/dist/services/navigation-manager.js +0 -39
  112. package/dist/services/navigation-manager.js.map +0 -1
  113. package/dist/services/platform-detector.d.ts +0 -10
  114. package/dist/services/platform-detector.d.ts.map +0 -1
  115. package/dist/services/platform-detector.js +0 -106
  116. package/dist/services/platform-detector.js.map +0 -1
  117. package/dist/services/public-ip-manager.d.ts +0 -78
  118. package/dist/services/public-ip-manager.d.ts.map +0 -1
  119. package/dist/services/public-ip-manager.js +0 -296
  120. package/dist/services/public-ip-manager.js.map +0 -1
  121. package/dist/services/quota-enforcer.d.ts +0 -86
  122. package/dist/services/quota-enforcer.d.ts.map +0 -1
  123. package/dist/services/quota-enforcer.js +0 -151
  124. package/dist/services/quota-enforcer.js.map +0 -1
  125. package/dist/services/quota-manager.d.ts +0 -101
  126. package/dist/services/quota-manager.d.ts.map +0 -1
  127. package/dist/services/quota-manager.js +0 -257
  128. package/dist/services/quota-manager.js.map +0 -1
  129. package/dist/services/review/areas/community.d.ts +0 -9
  130. package/dist/services/review/areas/community.d.ts.map +0 -1
  131. package/dist/services/review/areas/community.js +0 -59
  132. package/dist/services/review/areas/community.js.map +0 -1
  133. package/dist/services/review/areas/contribution.d.ts +0 -9
  134. package/dist/services/review/areas/contribution.d.ts.map +0 -1
  135. package/dist/services/review/areas/contribution.js +0 -107
  136. package/dist/services/review/areas/contribution.js.map +0 -1
  137. package/dist/services/review/areas/documentation.d.ts +0 -9
  138. package/dist/services/review/areas/documentation.d.ts.map +0 -1
  139. package/dist/services/review/areas/documentation.js +0 -110
  140. package/dist/services/review/areas/documentation.js.map +0 -1
  141. package/dist/services/review/areas/license.d.ts +0 -9
  142. package/dist/services/review/areas/license.d.ts.map +0 -1
  143. package/dist/services/review/areas/license.js +0 -86
  144. package/dist/services/review/areas/license.js.map +0 -1
  145. package/dist/services/review/areas/quality.d.ts +0 -9
  146. package/dist/services/review/areas/quality.d.ts.map +0 -1
  147. package/dist/services/review/areas/quality.js +0 -84
  148. package/dist/services/review/areas/quality.js.map +0 -1
  149. package/dist/services/review/areas/security.d.ts +0 -9
  150. package/dist/services/review/areas/security.d.ts.map +0 -1
  151. package/dist/services/review/areas/security.js +0 -64
  152. package/dist/services/review/areas/security.js.map +0 -1
  153. package/dist/services/review/evidence.d.ts +0 -10
  154. package/dist/services/review/evidence.d.ts.map +0 -1
  155. package/dist/services/review/evidence.js +0 -40
  156. package/dist/services/review/evidence.js.map +0 -1
  157. package/dist/services/review/recommendations-filter.d.ts +0 -12
  158. package/dist/services/review/recommendations-filter.d.ts.map +0 -1
  159. package/dist/services/review/recommendations-filter.js +0 -20
  160. package/dist/services/review/recommendations-filter.js.map +0 -1
  161. package/dist/services/review/repo-scanner.d.ts +0 -8
  162. package/dist/services/review/repo-scanner.d.ts.map +0 -1
  163. package/dist/services/review/repo-scanner.js +0 -15
  164. package/dist/services/review/repo-scanner.js.map +0 -1
  165. package/dist/services/review/report-renderer.d.ts +0 -15
  166. package/dist/services/review/report-renderer.d.ts.map +0 -1
  167. package/dist/services/review/report-renderer.js +0 -120
  168. package/dist/services/review/report-renderer.js.map +0 -1
  169. package/dist/services/review/review-engine.d.ts +0 -15
  170. package/dist/services/review/review-engine.d.ts.map +0 -1
  171. package/dist/services/review/review-engine.js +0 -61
  172. package/dist/services/review/review-engine.js.map +0 -1
  173. package/dist/services/review/summary-builder.d.ts +0 -8
  174. package/dist/services/review/summary-builder.d.ts.map +0 -1
  175. package/dist/services/review/summary-builder.js +0 -26
  176. package/dist/services/review/summary-builder.js.map +0 -1
  177. package/dist/services/screen-manager.d.ts +0 -13
  178. package/dist/services/screen-manager.d.ts.map +0 -1
  179. package/dist/services/screen-manager.js +0 -42
  180. package/dist/services/screen-manager.js.map +0 -1
  181. package/dist/services/stats-config-manager.d.ts +0 -110
  182. package/dist/services/stats-config-manager.d.ts.map +0 -1
  183. package/dist/services/stats-config-manager.js +0 -443
  184. package/dist/services/stats-config-manager.js.map +0 -1
  185. package/dist/services/systemd-manager.d.ts +0 -197
  186. package/dist/services/systemd-manager.d.ts.map +0 -1
  187. package/dist/services/systemd-manager.js +0 -458
  188. package/dist/services/systemd-manager.js.map +0 -1
  189. package/dist/services/traffic-manager.d.ts +0 -106
  190. package/dist/services/traffic-manager.d.ts.map +0 -1
  191. package/dist/services/traffic-manager.js +0 -368
  192. package/dist/services/traffic-manager.js.map +0 -1
  193. package/dist/services/user-manager.d.ts +0 -90
  194. package/dist/services/user-manager.d.ts.map +0 -1
  195. package/dist/services/user-manager.js +0 -347
  196. package/dist/services/user-manager.js.map +0 -1
  197. package/dist/services/user-metadata-manager.d.ts +0 -85
  198. package/dist/services/user-metadata-manager.d.ts.map +0 -1
  199. package/dist/services/user-metadata-manager.js +0 -181
  200. package/dist/services/user-metadata-manager.js.map +0 -1
  201. package/dist/types/config.d.ts +0 -340
  202. package/dist/types/config.d.ts.map +0 -1
  203. package/dist/types/config.js +0 -7
  204. package/dist/types/config.js.map +0 -1
  205. package/dist/types/layout.d.ts +0 -119
  206. package/dist/types/layout.d.ts.map +0 -1
  207. package/dist/types/layout.js +0 -142
  208. package/dist/types/layout.js.map +0 -1
  209. package/dist/types/platform.d.ts +0 -72
  210. package/dist/types/platform.d.ts.map +0 -1
  211. package/dist/types/platform.js +0 -38
  212. package/dist/types/platform.js.map +0 -1
  213. package/dist/types/quota.d.ts +0 -158
  214. package/dist/types/quota.d.ts.map +0 -1
  215. package/dist/types/quota.js +0 -26
  216. package/dist/types/quota.js.map +0 -1
  217. package/dist/types/review.d.ts +0 -62
  218. package/dist/types/review.d.ts.map +0 -1
  219. package/dist/types/review.js +0 -8
  220. package/dist/types/review.js.map +0 -1
  221. package/dist/types/server-config.d.ts +0 -53
  222. package/dist/types/server-config.d.ts.map +0 -1
  223. package/dist/types/server-config.js +0 -19
  224. package/dist/types/server-config.js.map +0 -1
  225. package/dist/types/service.d.ts +0 -96
  226. package/dist/types/service.d.ts.map +0 -1
  227. package/dist/types/service.js +0 -7
  228. package/dist/types/service.js.map +0 -1
  229. package/dist/types/terminal.d.ts +0 -35
  230. package/dist/types/terminal.d.ts.map +0 -1
  231. package/dist/types/terminal.js +0 -20
  232. package/dist/types/terminal.js.map +0 -1
  233. package/dist/types/ui-components.d.ts +0 -53
  234. package/dist/types/ui-components.d.ts.map +0 -1
  235. package/dist/types/ui-components.js +0 -3
  236. package/dist/types/ui-components.js.map +0 -1
  237. package/dist/types/user-metadata.d.ts +0 -43
  238. package/dist/types/user-metadata.d.ts.map +0 -1
  239. package/dist/types/user-metadata.js +0 -17
  240. package/dist/types/user-metadata.js.map +0 -1
  241. package/dist/types/user.d.ts +0 -134
  242. package/dist/types/user.d.ts.map +0 -1
  243. package/dist/types/user.js +0 -7
  244. package/dist/types/user.js.map +0 -1
  245. package/dist/utils/clipboard.d.ts +0 -21
  246. package/dist/utils/clipboard.d.ts.map +0 -1
  247. package/dist/utils/clipboard.js +0 -45
  248. package/dist/utils/clipboard.js.map +0 -1
  249. package/dist/utils/error-formatter.d.ts +0 -60
  250. package/dist/utils/error-formatter.d.ts.map +0 -1
  251. package/dist/utils/error-formatter.js +0 -244
  252. package/dist/utils/error-formatter.js.map +0 -1
  253. package/dist/utils/errors.d.ts +0 -92
  254. package/dist/utils/errors.d.ts.map +0 -1
  255. package/dist/utils/errors.js +0 -143
  256. package/dist/utils/errors.js.map +0 -1
  257. package/dist/utils/firewall.d.ts +0 -14
  258. package/dist/utils/firewall.d.ts.map +0 -1
  259. package/dist/utils/firewall.js +0 -78
  260. package/dist/utils/firewall.js.map +0 -1
  261. package/dist/utils/format.d.ts +0 -93
  262. package/dist/utils/format.d.ts.map +0 -1
  263. package/dist/utils/format.js +0 -240
  264. package/dist/utils/format.js.map +0 -1
  265. package/dist/utils/icons.d.ts +0 -53
  266. package/dist/utils/icons.d.ts.map +0 -1
  267. package/dist/utils/icons.js +0 -143
  268. package/dist/utils/icons.js.map +0 -1
  269. package/dist/utils/layout.d.ts +0 -142
  270. package/dist/utils/layout.d.ts.map +0 -1
  271. package/dist/utils/layout.js +0 -381
  272. package/dist/utils/layout.js.map +0 -1
  273. package/dist/utils/logger.d.ts +0 -160
  274. package/dist/utils/logger.d.ts.map +0 -1
  275. package/dist/utils/logger.js +0 -351
  276. package/dist/utils/logger.js.map +0 -1
  277. package/dist/utils/network.d.ts +0 -39
  278. package/dist/utils/network.d.ts.map +0 -1
  279. package/dist/utils/network.js +0 -227
  280. package/dist/utils/network.js.map +0 -1
  281. package/dist/utils/os-detection.d.ts +0 -10
  282. package/dist/utils/os-detection.d.ts.map +0 -1
  283. package/dist/utils/os-detection.js +0 -86
  284. package/dist/utils/os-detection.js.map +0 -1
  285. package/dist/utils/preflight.d.ts +0 -57
  286. package/dist/utils/preflight.d.ts.map +0 -1
  287. package/dist/utils/preflight.js +0 -215
  288. package/dist/utils/preflight.js.map +0 -1
  289. package/dist/utils/repo-scan.d.ts +0 -54
  290. package/dist/utils/repo-scan.d.ts.map +0 -1
  291. package/dist/utils/repo-scan.js +0 -165
  292. package/dist/utils/repo-scan.js.map +0 -1
  293. package/dist/utils/report-output.d.ts +0 -13
  294. package/dist/utils/report-output.d.ts.map +0 -1
  295. package/dist/utils/report-output.js +0 -33
  296. package/dist/utils/report-output.js.map +0 -1
  297. package/dist/utils/review-id.d.ts +0 -8
  298. package/dist/utils/review-id.d.ts.map +0 -1
  299. package/dist/utils/review-id.js +0 -17
  300. package/dist/utils/review-id.js.map +0 -1
  301. package/dist/utils/splash.d.ts +0 -21
  302. package/dist/utils/splash.d.ts.map +0 -1
  303. package/dist/utils/splash.js +0 -179
  304. package/dist/utils/splash.js.map +0 -1
  305. package/dist/utils/terminal.d.ts +0 -32
  306. package/dist/utils/terminal.d.ts.map +0 -1
  307. package/dist/utils/terminal.js +0 -93
  308. package/dist/utils/terminal.js.map +0 -1
  309. package/dist/utils/traffic-formatter.d.ts +0 -45
  310. package/dist/utils/traffic-formatter.d.ts.map +0 -1
  311. package/dist/utils/traffic-formatter.js +0 -131
  312. package/dist/utils/traffic-formatter.js.map +0 -1
  313. package/dist/utils/validator.d.ts +0 -102
  314. package/dist/utils/validator.d.ts.map +0 -1
  315. package/dist/utils/validator.js +0 -238
  316. package/dist/utils/validator.js.map +0 -1
  317. package/dist/utils/vless-link.d.ts +0 -27
  318. package/dist/utils/vless-link.d.ts.map +0 -1
  319. package/dist/utils/vless-link.js +0 -69
  320. package/dist/utils/vless-link.js.map +0 -1
  321. package/dist/utils/which.d.ts +0 -13
  322. package/dist/utils/which.d.ts.map +0 -1
  323. package/dist/utils/which.js +0 -28
  324. package/dist/utils/which.js.map +0 -1
@@ -1,323 +0,0 @@
1
- "use strict";
2
- /**
3
- * Internationalization (i18n) Configuration
4
- *
5
- * Provides language support for Chinese and English
6
- *
7
- * @module config/i18n
8
- */
9
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- var desc = Object.getOwnPropertyDescriptor(m, k);
12
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
- desc = { enumerable: true, get: function() { return m[k]; } };
14
- }
15
- Object.defineProperty(o, k2, desc);
16
- }) : (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- o[k2] = m[k];
19
- }));
20
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
- Object.defineProperty(o, "default", { enumerable: true, value: v });
22
- }) : function(o, v) {
23
- o["default"] = v;
24
- });
25
- var __importStar = (this && this.__importStar) || (function () {
26
- var ownKeys = function(o) {
27
- ownKeys = Object.getOwnPropertyNames || function (o) {
28
- var ar = [];
29
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
- return ar;
31
- };
32
- return ownKeys(o);
33
- };
34
- return function (mod) {
35
- if (mod && mod.__esModule) return mod;
36
- var result = {};
37
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
- __setModuleDefault(result, mod);
39
- return result;
40
- };
41
- })();
42
- Object.defineProperty(exports, "__esModule", { value: true });
43
- exports.loadLanguagePreference = loadLanguagePreference;
44
- exports.saveLanguagePreference = saveLanguagePreference;
45
- exports.getCurrentLanguage = getCurrentLanguage;
46
- exports.setLanguage = setLanguage;
47
- exports.toggleLanguage = toggleLanguage;
48
- exports.t = t;
49
- exports.getTranslations = getTranslations;
50
- const fs = __importStar(require("fs"));
51
- const path = __importStar(require("path"));
52
- const os = __importStar(require("os"));
53
- /** Language preference storage path */
54
- const LANG_FILE = path.join(os.homedir(), '.xray-manager-lang');
55
- /** Chinese translations */
56
- const zhTranslations = {
57
- menu: {
58
- viewStatus: '查看服务状态',
59
- startService: '启动服务',
60
- stopService: '停止服务',
61
- restartService: '重启服务',
62
- userManagement: '用户管理',
63
- quotaManagement: '流量配额管理',
64
- configManagement: '配置管理',
65
- viewLogs: '查看日志',
66
- switchLanguage: '切换语言 (Switch to English)',
67
- exit: '退出',
68
- },
69
- status: {
70
- serviceStatus: '服务状态',
71
- userCount: '用户数',
72
- active: '运行中',
73
- inactive: '已停止',
74
- unknown: '未知',
75
- },
76
- quota: {
77
- title: '流量配额管理',
78
- list: '查看配额列表',
79
- set: '设置用户配额',
80
- show: '查看配额详情',
81
- reset: '重置已用流量',
82
- reenable: '重新启用用户',
83
- unlimited: '无限制',
84
- used: '已使用',
85
- remaining: '剩余',
86
- exceeded: '已超额',
87
- warning: '接近限额',
88
- normal: '正常',
89
- noQuota: '未设置配额',
90
- selectUser: '请选择用户',
91
- selectPreset: '请选择预设配额',
92
- enterCustom: '请输入自定义配额',
93
- confirmReset: '确定要重置该用户的已用流量吗?',
94
- confirmReenable: '确定要重新启用该用户吗?',
95
- executeCheck: '执行配额检查',
96
- checkComplete: '配额检查完成',
97
- normalUsers: '正常用户',
98
- warningUsers: '警告用户',
99
- exceededUsers: '超限用户',
100
- disabledUsers: '已禁用',
101
- },
102
- logs: {
103
- title: '日志查看',
104
- accessLog: '访问日志',
105
- errorLog: '错误日志',
106
- noLogs: '暂无日志',
107
- logFileNotFound: '日志文件不存在',
108
- logFileEmpty: '日志文件为空',
109
- showingLines: '显示最近 {lines} 行',
110
- },
111
- config: {
112
- title: '配置管理',
113
- viewConfig: '查看当前配置',
114
- backupConfig: '备份配置',
115
- restoreConfig: '恢复配置',
116
- backupSuccess: '配置已备份到: {path}',
117
- restoreSuccess: '配置已恢复',
118
- noBackups: '暂无备份文件',
119
- selectBackup: '请选择要恢复的备份',
120
- confirmRestore: '确定要恢复此备份吗?',
121
- restoreWarning: '恢复配置将覆盖当前配置并重启服务',
122
- },
123
- publicIp: {
124
- detecting: '正在检测公网 IP...',
125
- detected: '检测到公网 IP: {ip}',
126
- detectionFailed: '无法自动检测公网 IP',
127
- enterManually: '请手动输入公网 IP 地址',
128
- invalidIp: '无效的 IP 地址格式',
129
- saved: '公网 IP 已保存',
130
- natDetected: '检测到 NAT 环境 (私有 IP: {ip})',
131
- },
132
- actions: {
133
- selectAction: '请选择操作',
134
- confirm: '确认',
135
- cancel: '取消',
136
- back: '返回',
137
- },
138
- messages: {
139
- languageSwitched: '语言已切换为中文',
140
- operationSuccess: '操作成功',
141
- operationFailed: '操作失败',
142
- thankYou: '感谢使用 Xray Manager!',
143
- terminalTooNarrow: '终端宽度过窄',
144
- terminalTooShort: '终端高度过低',
145
- terminalResizeSuggestion: '请调整终端大小以获得最佳显示效果',
146
- quotaSet: '配额设置成功',
147
- quotaReset: '已用流量已重置',
148
- userReenabled: '用户已重新启用',
149
- noUsersWithQuota: '暂无设置配额的用户',
150
- noDisabledUsers: '暂无被禁用的用户',
151
- },
152
- };
153
- /** English translations */
154
- const enTranslations = {
155
- menu: {
156
- viewStatus: 'View Service Status',
157
- startService: 'Start Service',
158
- stopService: 'Stop Service',
159
- restartService: 'Restart Service',
160
- userManagement: 'User Management',
161
- quotaManagement: 'Traffic Quota Management',
162
- configManagement: 'Config Management',
163
- viewLogs: 'View Logs',
164
- switchLanguage: 'Switch Language (切换为中文)',
165
- exit: 'Exit',
166
- },
167
- status: {
168
- serviceStatus: 'Service Status',
169
- userCount: 'User Count',
170
- active: 'Active',
171
- inactive: 'Inactive',
172
- unknown: 'Unknown',
173
- },
174
- quota: {
175
- title: 'Traffic Quota Management',
176
- list: 'View Quota List',
177
- set: 'Set User Quota',
178
- show: 'View Quota Details',
179
- reset: 'Reset Used Traffic',
180
- reenable: 'Re-enable User',
181
- unlimited: 'Unlimited',
182
- used: 'Used',
183
- remaining: 'Remaining',
184
- exceeded: 'Exceeded',
185
- warning: 'Warning',
186
- normal: 'Normal',
187
- noQuota: 'No quota set',
188
- selectUser: 'Select a user',
189
- selectPreset: 'Select a preset quota',
190
- enterCustom: 'Enter custom quota',
191
- confirmReset: "Are you sure you want to reset this user's traffic?",
192
- confirmReenable: 'Are you sure you want to re-enable this user?',
193
- executeCheck: 'Execute Quota Check',
194
- checkComplete: 'Quota check complete',
195
- normalUsers: 'Normal users',
196
- warningUsers: 'Warning users',
197
- exceededUsers: 'Exceeded users',
198
- disabledUsers: 'Disabled',
199
- },
200
- logs: {
201
- title: 'Log Viewer',
202
- accessLog: 'Access Log',
203
- errorLog: 'Error Log',
204
- noLogs: 'No logs available',
205
- logFileNotFound: 'Log file not found',
206
- logFileEmpty: 'Log file is empty',
207
- showingLines: 'Showing last {lines} lines',
208
- },
209
- config: {
210
- title: 'Config Management',
211
- viewConfig: 'View Current Config',
212
- backupConfig: 'Backup Config',
213
- restoreConfig: 'Restore Config',
214
- backupSuccess: 'Config backed up to: {path}',
215
- restoreSuccess: 'Config restored successfully',
216
- noBackups: 'No backup files available',
217
- selectBackup: 'Select a backup to restore',
218
- confirmRestore: 'Are you sure you want to restore this backup?',
219
- restoreWarning: 'Restoring will overwrite current config and restart service',
220
- },
221
- publicIp: {
222
- detecting: 'Detecting public IP...',
223
- detected: 'Detected public IP: {ip}',
224
- detectionFailed: 'Failed to detect public IP automatically',
225
- enterManually: 'Please enter public IP address manually',
226
- invalidIp: 'Invalid IP address format',
227
- saved: 'Public IP saved',
228
- natDetected: 'NAT environment detected (private IP: {ip})',
229
- },
230
- actions: {
231
- selectAction: 'Please select an action',
232
- confirm: 'Confirm',
233
- cancel: 'Cancel',
234
- back: 'Back',
235
- },
236
- messages: {
237
- languageSwitched: 'Language switched to English',
238
- operationSuccess: 'Operation successful',
239
- operationFailed: 'Operation failed',
240
- thankYou: 'Thank you for using Xray Manager!',
241
- terminalTooNarrow: 'Terminal width is too narrow',
242
- terminalTooShort: 'Terminal height is too short',
243
- terminalResizeSuggestion: 'Please resize your terminal for optimal display',
244
- quotaSet: 'Quota set successfully',
245
- quotaReset: 'Used traffic has been reset',
246
- userReenabled: 'User has been re-enabled',
247
- noUsersWithQuota: 'No users with quota configured',
248
- noDisabledUsers: 'No disabled users',
249
- },
250
- };
251
- /** All translations */
252
- const translations = {
253
- zh: zhTranslations,
254
- en: enTranslations,
255
- };
256
- /** Current language (default: Chinese) */
257
- let currentLanguage = 'zh';
258
- /**
259
- * Load language preference from file
260
- */
261
- function loadLanguagePreference() {
262
- try {
263
- if (fs.existsSync(LANG_FILE)) {
264
- const lang = fs.readFileSync(LANG_FILE, 'utf-8').trim();
265
- if (lang === 'zh' || lang === 'en') {
266
- currentLanguage = lang;
267
- return lang;
268
- }
269
- }
270
- }
271
- catch {
272
- // Ignore errors, use default
273
- }
274
- return 'zh'; // Default to Chinese
275
- }
276
- /**
277
- * Save language preference to file
278
- */
279
- function saveLanguagePreference(lang) {
280
- try {
281
- fs.writeFileSync(LANG_FILE, lang, 'utf-8');
282
- currentLanguage = lang;
283
- }
284
- catch {
285
- // Ignore errors
286
- }
287
- }
288
- /**
289
- * Get current language
290
- */
291
- function getCurrentLanguage() {
292
- return currentLanguage;
293
- }
294
- /**
295
- * Set current language
296
- */
297
- function setLanguage(lang) {
298
- currentLanguage = lang;
299
- saveLanguagePreference(lang);
300
- }
301
- /**
302
- * Toggle language (switch between zh and en)
303
- */
304
- function toggleLanguage() {
305
- const newLang = currentLanguage === 'zh' ? 'en' : 'zh';
306
- setLanguage(newLang);
307
- return newLang;
308
- }
309
- /**
310
- * Get translations for current language
311
- */
312
- function t() {
313
- return translations[currentLanguage];
314
- }
315
- /**
316
- * Get translation for specific language
317
- */
318
- function getTranslations(lang) {
319
- return translations[lang];
320
- }
321
- // Load language preference on module initialization
322
- loadLanguagePreference();
323
- //# sourceMappingURL=i18n.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/config/i18n.ts"],"names":[],"mappings":"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"}