admin.php 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717
  1. <?php
  2. declare(strict_types=1);
  3. return [
  4. 'action' => [
  5. 'add_item' => 'Add :attribute',
  6. 'edit_item' => 'Edit :attribute',
  7. ],
  8. 'aff' => [
  9. 'apply_counts' => 'Total <code>:num</code> withdrawal requests',
  10. 'commission_counts' => 'This request involves <code>:num</code> orders',
  11. 'commission_title' => 'Withdrawal Request Details',
  12. 'counts' => 'Total <code>:num</code> commission records',
  13. 'referral' => 'Referral Commissions',
  14. ],
  15. 'article' => [
  16. 'category_hint' => 'Articles in the same category are automatically archived',
  17. 'counts' => 'Total <code>:num</code> articles',
  18. 'logo_placeholder' => 'Or enter the URL of the logo image',
  19. 'type' => [
  20. 'announcement' => 'Announcement',
  21. 'knowledge' => 'Knowledge Base',
  22. ],
  23. ],
  24. 'clear' => 'Clear',
  25. 'clone' => 'Clone',
  26. 'confirm' => [
  27. 'continues' => 'Are you sure you want to continue?',
  28. 'delete' => 'Confirm deletion of :attribute [:name]? This action is irreversible!',
  29. 'export' => 'Confirm export of all data?',
  30. ],
  31. 'coupon' => [
  32. 'counts' => 'Total <code>:num</code> coupons',
  33. 'created_days_hint' => 'Account registration ≥ :days days',
  34. 'discount' => 'Discount',
  35. 'export_title' => 'Bulk Coupon Export',
  36. 'groups_hint' => 'Only effective for selected user groups',
  37. 'info_title' => 'Coupon Details',
  38. 'levels_hint' => 'Only effective for selected user levels',
  39. 'limit_hint' => 'Conditions are <strong>AND</strong> relationships',
  40. 'minimum_hint' => 'Minimum spend required: <code>:num</code>',
  41. 'name_hint' => 'Name displayed to users',
  42. 'newbie' => [
  43. 'created_days' => 'Account age',
  44. 'first_discount' => 'First coupon use',
  45. 'first_order' => 'First order discount',
  46. ],
  47. 'priority_hint' => 'Priority (0-255), higher values take precedence',
  48. 'services_blacklist_hint' => 'Excluded products',
  49. 'services_placeholder' => 'Enter product ID and press Enter to add',
  50. 'services_whitelist_hint' => 'Eligible products',
  51. 'single_use' => 'Single use',
  52. 'sn_hint' => 'Coupon code (leave blank to auto-generate 8-character code)',
  53. 'type' => [
  54. 'charge' => 'Top-up Coupon',
  55. 'discount' => 'Discount Coupon',
  56. 'voucher' => 'Cash Voucher',
  57. ],
  58. 'type_hint' => '• Voucher: Deduct a fixed amount | • Discount: Apply percentage discount | • Top-up: Top up account balance',
  59. 'used_hint' => 'Each user can use it <strong>:num</strong> time(s)',
  60. 'user_whitelist_hint' => 'Specified eligible users',
  61. 'users_blacklist_hint' => 'Excluded users',
  62. 'users_placeholder' => 'Enter user ID and press Enter to add',
  63. 'value' => '{1} Deduct :num|{2} :num% Off|{3} Add :num to Balance',
  64. 'value_hint' => 'Discount coupon range: 1%-99%',
  65. ],
  66. 'creating' => 'Creating...',
  67. 'dashboard' => [
  68. 'abnormal_users' => 'Abnormal Traffic Users (1H)',
  69. 'active_days_users' => ':days-day Active Users',
  70. 'available_users' => 'Active Users',
  71. 'credit' => 'Account Balance',
  72. 'current_month_traffic_consumed' => 'Traffic Used This Month',
  73. 'days_traffic_consumed' => ':days-day Traffic Consumption',
  74. 'expiring_users' => 'Users Expiring Soon',
  75. 'inactive_days_users' => ':days-day Inactive Users',
  76. 'maintaining_nodes' => 'Nodes Under Maintenance',
  77. 'nodes' => 'Nodes',
  78. 'online_orders' => 'Online Payment Orders',
  79. 'online_users' => 'Online Now',
  80. 'orders' => 'Orders',
  81. 'overuse_users' => 'Users With >90% Traffic Used',
  82. 'paid_users' => 'Paying Users',
  83. 'succeed_orders' => 'Paid Orders',
  84. 'users' => 'Users',
  85. 'withdrawing_commissions' => 'Pending Commissions',
  86. 'withdrawn_commissions' => 'Withdrawn Commissions',
  87. ],
  88. 'filter' => [
  89. 'start_time' => 'Start time',
  90. 'end_time' => 'End time',
  91. ],
  92. 'goods' => [
  93. 'counts' => 'Total <code>:num</code> products',
  94. 'info' => [
  95. 'available_date_hint' => 'Automatically deducts traffic upon expiration',
  96. 'desc_placeholder' => 'Product description (visible to users)',
  97. 'limit_num_hint' => 'Each user can purchase this item up to N times. 0 means no limit.',
  98. 'list_hint' => 'Format each line as <li>Content</li>',
  99. 'list_placeholder' => 'Custom information (HTML supported)',
  100. 'period_hint' => 'Automatically reset traffic every N days',
  101. 'type_hint' => 'Plans include validity period; traffic packages only deduct traffic',
  102. ],
  103. 'sell_and_used' => 'Usage/Sales',
  104. 'status' => [
  105. 'no' => 'Off Shelf',
  106. 'yes' => 'On Shelf',
  107. ],
  108. 'type' => [
  109. 'package' => 'Traffic package',
  110. 'plan' => 'Subscription plan',
  111. 'top_up' => 'Balance top-up',
  112. ],
  113. ],
  114. 'hint' => 'Operation Tip',
  115. 'logs' => [
  116. 'ban' => [
  117. 'ban_time' => 'Ban time',
  118. 'last_connect_at' => 'Last connection',
  119. 'reason' => 'Ban reason',
  120. 'time' => 'Ban duration',
  121. ],
  122. 'counts' => 'Total <code>:num</code> records',
  123. 'order' => [
  124. 'is_coupon' => 'Coupon used',
  125. 'is_expired' => 'Expired',
  126. 'update_conflict' => 'Update failed, order conflict',
  127. ],
  128. 'rule' => [
  129. 'clear_all' => 'Clear All Records',
  130. 'clear_confirm' => '⚠️ Confirm clearing all trigger records?',
  131. 'created_at' => 'Trigger time',
  132. 'name' => 'Rule name',
  133. 'reason' => 'Trigger reason',
  134. 'tag' => '✅ Accessed illegal content',
  135. ],
  136. 'monitor' => [
  137. 'sub_title' => 'Real-time (within 2 minutes)',
  138. ],
  139. 'user_ip' => [
  140. 'connect' => 'Connection IP',
  141. 'sub_title' => 'Last 10 Minutes',
  142. ],
  143. 'user_traffic' => [
  144. 'choose_node' => 'Select node',
  145. ],
  146. ],
  147. 'marketing' => [
  148. 'counts' => 'Total <code>:num</code> messages',
  149. 'email' => [
  150. 'ever_paid' => 'Historically paid',
  151. 'expire_start' => 'Expired after',
  152. 'expire_end' => 'Expired before',
  153. 'filters' => 'Filters',
  154. 'loading_statistics' => 'Loading statistics...',
  155. 'never_paid' => 'Never paid',
  156. 'paid_servicing' => 'Active service',
  157. 'previously_paid' => 'Historically paid with no current active service',
  158. 'recent_traffic_abnormal' => 'Recent traffic-abnormal',
  159. 'recently_active' => 'Recently active',
  160. 'targeted_users_count' => 'Targeted user count',
  161. 'traffic_usage_over' => 'Traffic usage >N%',
  162. ],
  163. 'email_send' => 'Send Bulk Email',
  164. 'error_message' => 'Error messages',
  165. 'processed' => 'Request accepted',
  166. 'push_send' => 'Push notifications',
  167. 'send_status' => 'Delivery status',
  168. 'send_time' => 'Sent at',
  169. 'targeted_users_not_found' => 'Target users not found',
  170. 'unknown_sending_type' => 'Unknown delivery type',
  171. ],
  172. 'massive_export' => 'Bulk Export',
  173. 'menu' => [
  174. 'analysis' => [
  175. 'accounting' => 'Financial Records',
  176. 'attribute' => 'Analytics',
  177. 'node_flow' => 'Node Traffic',
  178. 'site_flow' => 'System Traffic',
  179. 'user_flow' => 'User Traffic',
  180. ],
  181. 'customer_service' => [
  182. 'article' => 'Article Management',
  183. 'attribute' => 'Support',
  184. 'marketing' => 'Broadcast Messages',
  185. 'ticket' => 'Ticket Center',
  186. ],
  187. 'dashboard' => 'Dashboard',
  188. 'log' => [
  189. 'attribute' => 'Logs',
  190. 'notify' => 'Notification History',
  191. 'online_logs' => 'Online Logs',
  192. 'online_monitor' => 'Online Monitor',
  193. 'payment_callback' => 'Payment Callbacks',
  194. 'service_ban' => 'Ban Records',
  195. 'system' => 'System Logs',
  196. 'traffic' => 'Traffic Logs',
  197. 'traffic_flow' => 'Traffic Details',
  198. ],
  199. 'node' => [
  200. 'attribute' => 'Nodes',
  201. 'auth' => 'Authorization',
  202. 'cert' => 'Certificate Management',
  203. 'list' => 'Node List',
  204. ],
  205. 'promotion' => [
  206. 'attribute' => 'Marketing',
  207. 'invite' => 'Invite Management',
  208. 'rebate_flow' => 'Rebate History',
  209. 'withdraw' => 'Withdrawals',
  210. ],
  211. 'rbac' => [
  212. 'attribute' => 'Access',
  213. 'permission' => 'Permission Settings',
  214. 'role' => 'Role Management',
  215. ],
  216. 'rule' => [
  217. 'attribute' => 'Audits',
  218. 'group' => 'Rule Groups',
  219. 'list' => 'Rule Management',
  220. 'trigger' => 'Trigger Logs',
  221. ],
  222. 'setting' => [
  223. 'attribute' => 'Settings',
  224. 'email_suffix' => 'Email Suffixes',
  225. 'system' => 'System Settings',
  226. 'universal' => 'General Config',
  227. ],
  228. 'shop' => [
  229. 'attribute' => 'Store',
  230. 'coupon' => 'Coupon Center',
  231. 'goods' => 'Product Catalog',
  232. 'order' => 'Order Center',
  233. ],
  234. 'tools' => [
  235. 'analysis' => 'Log Analyzer',
  236. 'attribute' => 'Tools',
  237. 'convert' => 'Format Converter',
  238. 'decompile' => 'Config Decoder',
  239. 'import' => 'Data Import',
  240. ],
  241. 'user' => [
  242. 'attribute' => 'Users',
  243. 'credit_log' => 'Balance Logs',
  244. 'group' => 'User Groups',
  245. 'list' => 'User List',
  246. 'oauth' => 'OAuth Logins',
  247. 'subscribe' => 'Subscription Center',
  248. ],
  249. ],
  250. 'monitor' => [
  251. 'daily_chart' => 'Daily Traffic Chart',
  252. 'hint' => '<strong>Tip:</strong> If no data, check scheduled task status',
  253. 'monthly_chart' => 'Monthly Traffic Chart',
  254. 'node' => 'Node Traffic',
  255. 'user' => 'User Traffic',
  256. ],
  257. 'no' => 'No',
  258. 'node' => [
  259. 'auth' => [
  260. 'counts' => 'Total <code>:num</code> authorizations',
  261. 'deploy' => [
  262. 'attribute' => 'Backend Deployment',
  263. 'command' => 'Execute Command',
  264. 'real_time_logs' => 'Real-time logs',
  265. 'recent_logs' => 'Recent logs',
  266. 'restart' => 'Restart service',
  267. 'same' => 'Same as Above',
  268. 'start' => 'Start service',
  269. 'status' => 'Running status',
  270. 'stop' => 'Stop service',
  271. 'title' => ':type_label Deployment',
  272. 'trojan_hint' => 'First <a href=":url" target="_blank">configure node domain</a>',
  273. 'uninstall' => 'Uninstall service',
  274. 'update' => 'Update service',
  275. ],
  276. 'empty' => 'No pending nodes',
  277. 'generating_all' => 'Generate keys for all nodes?',
  278. 'reset_auth' => 'Reset authorization key',
  279. ],
  280. 'cert' => [
  281. 'counts' => 'Total <code>:num</code> SSL certificates',
  282. 'key_placeholder' => 'Private key (auto-issued for VNET-V2Ray)',
  283. 'pem_placeholder' => 'Certificate (auto-issued for VNET-V2Ray)',
  284. ],
  285. 'counts' => 'Total <code>:num</code> nodes',
  286. 'info' => [
  287. 'additional_ports_hint' => 'If enabled, please configure server-side <span class="red-700"><a href="javascript:showTnc();">additional_ports</a></span> settings.',
  288. 'basic' => 'Basic Configuration',
  289. 'data_rate_hint' => 'Example: 0.1 means 100MB counts as 10MB',
  290. 'ddns_hint' => 'For dynamic IPs: <a href="https://github.com/NewFuture/DDNS" target="_blank">configure DDNS</a>',
  291. 'detection' => [
  292. 'all' => 'Full protocol detection',
  293. 'hint' => 'Random checks every 30-60 minutes',
  294. 'icmp' => 'ICMP only',
  295. 'tcp' => 'TCP only',
  296. ],
  297. 'display' => [
  298. 'all' => 'Fully visible',
  299. 'hint' => 'User visibility scope',
  300. 'invisible' => 'Fully hidden',
  301. 'node' => 'Node list only',
  302. 'sub' => 'Subscription only',
  303. ],
  304. 'domain_hint' => 'Auto-binds IP in DDNS mode',
  305. 'domain_placeholder' => 'Domain (prioritized over IP)',
  306. 'extend' => 'Advanced Configuration',
  307. 'hint' => '<strong>Note:</strong> Node ID is used for server configuration',
  308. 'ipv4_hint' => 'Multiple IPs separated by commas',
  309. 'ipv4_placeholder' => 'IPv4 address',
  310. 'ipv6_hint' => 'Multiple IPs separated by commas',
  311. 'ipv6_placeholder' => 'IPv6 address',
  312. 'level_hint' => '0 = No level restrictions',
  313. 'obfs_param_hint' => 'Non-plain obfuscation requirements:<br>• http_simple: port 80 recommended<br>• tls: port 443 recommended',
  314. 'push_port_hint' => 'Ensure this port is open in the server firewall for proper message pushing.',
  315. 'single_hint' => 'Port 80/443 recommended<br><a href="javascript:showPortsOnlyConfig();">View strict mode config</a>',
  316. 'v2_cover' => [
  317. 'dtls' => 'DTLS 1.2',
  318. 'http' => 'HTTP',
  319. 'none' => 'None',
  320. 'srtp' => 'SRTP',
  321. 'utp' => 'uTP',
  322. 'wechat' => 'WeChat Video',
  323. 'wireguard' => 'WireGuard',
  324. ],
  325. 'v2_host_hint' => 'For HTTP obfuscation, separate multiple domains with commas. WebSocket allows only one domain.',
  326. 'v2_method_hint' => '⚠️ Do not use "none" encryption for WebSocket',
  327. 'v2_net_hint' => '⚠️ WebSocket requires TLS',
  328. 'v2_tls_provider_hint' => 'Different backends have different configurations:',
  329. ],
  330. 'proxy_info' => '*SS protocol compatibility',
  331. 'proxy_info_hint' => 'Compatibility mode requires adding <span class="red-700">_compatible</span> to backend config',
  332. 'refresh_geo' => 'Refresh geolocation',
  333. 'refresh_geo_all' => 'Refresh all geolocations',
  334. 'reload' => 'Reload service',
  335. 'reload_all' => 'Reload all services',
  336. 'connection_test' => 'Connectivity test',
  337. 'connection_test_all' => 'Test All Connectivity',
  338. 'reload_confirm' => 'Confirm node service reload?',
  339. 'traffic_monitor' => 'Traffic statistics',
  340. ],
  341. 'oauth' => [
  342. 'counts' => 'Total <code>:num</code> authorizations',
  343. ],
  344. 'optional' => 'Optional',
  345. 'permission' => [
  346. 'counts' => 'Total <code>:num</code> permissions',
  347. 'description_hint' => 'Example: Delete order permission',
  348. 'name_hint' => 'Route name, e.g., admin.user.edit',
  349. ],
  350. 'query' => 'Query',
  351. 'report' => [
  352. 'annually_accounting' => 'Annual transactions',
  353. 'annually_site_flow' => 'Annual traffic',
  354. 'avg_traffic_30d' => '30-day average',
  355. 'current_month' => 'Current month',
  356. 'current_year' => 'Current year',
  357. 'daily_accounting' => 'Daily transactions',
  358. 'daily_distribution' => 'Time distribution',
  359. 'daily_site_flow' => 'Daily system traffic',
  360. 'daily_traffic' => 'Daily traffic',
  361. 'hourly_traffic' => 'Hourly traffic',
  362. 'last_month' => 'Last month',
  363. 'last_year' => 'Last year',
  364. 'monthly_accounting' => 'Monthly transactions',
  365. 'monthly_site_flow' => 'Monthly system traffic',
  366. 'select_hourly_date' => 'Select date',
  367. 'sum_traffic_30d' => '30-day total',
  368. 'today' => 'Today',
  369. ],
  370. 'require' => 'Required',
  371. 'role' => [
  372. 'counts' => 'Total <code>:num</code> roles',
  373. 'description_hint' => 'Display name, e.g., Support Specialist',
  374. 'modify_admin_error' => '⚠️ Cannot modify super admin',
  375. 'name_hint' => 'Unique ID, e.g., SupportAdmin',
  376. 'permissions_all' => 'All permissions',
  377. ],
  378. 'rule' => [
  379. 'counts' => 'Total <code>:num</code> rules',
  380. 'group' => [
  381. 'counts' => 'Total <code>:num</code> groups',
  382. 'type' => [
  383. 'off' => 'Block',
  384. 'on' => 'Allow',
  385. ],
  386. ],
  387. 'type' => [
  388. 'domain' => 'Domain rule',
  389. 'ip' => 'IP rule',
  390. 'protocol' => 'Protocol rule',
  391. 'reg' => 'Regex rule',
  392. ],
  393. ],
  394. 'select_all' => 'Select all',
  395. 'selected_hint' => 'Assigned rules (searchable)',
  396. 'set_to' => 'Set as :attribute',
  397. 'setting' => [
  398. 'common' => [
  399. 'connect_nodes' => 'Node connections',
  400. 'set_default' => 'Set as default',
  401. ],
  402. 'email' => [
  403. 'black' => 'Blacklist',
  404. 'rule' => 'Filter rules',
  405. 'tail' => 'Email suffix',
  406. 'tail_placeholder' => 'Enter suffix (without @)',
  407. 'sub_title' => 'Works with system settings to block specific emails',
  408. 'white' => 'Whitelist',
  409. ],
  410. 'no_permission' => '⚠️ No modification permission',
  411. 'system' => [
  412. 'web' => 'Website',
  413. 'account' => 'Account',
  414. 'node' => 'Node',
  415. 'security' => 'Security',
  416. 'payment' => 'Payment',
  417. 'notify' => 'Notifications',
  418. 'auto_job' => 'Cron Jobs',
  419. 'menu' => 'Menu',
  420. ],
  421. ],
  422. 'sort_asc' => 'Higher values sort first',
  423. 'system' => [
  424. 'active_account' => [
  425. 'after' => 'Activate after registration',
  426. 'before' => 'Activate before registration',
  427. ],
  428. 'captcha' => [
  429. 'geetest' => 'Geetest',
  430. 'hcaptcha' => 'hCaptcha',
  431. 'recaptcha' => 'Google reCAPTCHA',
  432. 'standard' => 'Standard CAPTCHA',
  433. 'turnstile' => 'Turnstile',
  434. ],
  435. 'tasks' => [
  436. 'clean' => [
  437. 'notification_logs' => 'Notification logs',
  438. 'node_daily_logs' => 'Node daily traffic',
  439. 'node_hourly_logs' => 'Node hourly traffic',
  440. 'node_heartbeats' => 'Node heartbeats',
  441. 'node_online_logs' => 'Node online users',
  442. 'payments' => 'Payment data',
  443. 'rule_logs' => 'Rule triggers',
  444. 'node_online_ips' => 'User connection IPs',
  445. 'user_baned_logs' => 'User bans',
  446. 'user_daily_logs_nodes' => 'User node daily traffic',
  447. 'user_daily_logs_total' => 'User total daily traffic',
  448. 'user_hourly_logs' => 'User node hourly traffic',
  449. 'login_logs' => 'Login logs',
  450. 'subscribe_logs' => 'Subscription logs',
  451. 'traffic_logs' => 'Traffic details',
  452. 'unpaid_orders' => 'Unpaid orders',
  453. ],
  454. 'close' => [
  455. 'tickets' => 'Tickets',
  456. 'confirmation_orders' => 'Manual orders',
  457. 'orders' => 'Payment orders',
  458. 'verify' => 'Verification code',
  459. ],
  460. ],
  461. 'forbid' => [
  462. 'china' => 'Forbid China Access',
  463. 'mainland' => 'Forbid Chinese Mainland Access',
  464. 'oversea' => 'Forbid Overseas Access',
  465. ],
  466. 'hint' => [
  467. 'AppStore_id' => 'Apple ID for iOS setup guide',
  468. 'AppStore_password' => 'Apple password for iOS setup guide',
  469. 'account_expire_notification' => 'Notify users before account expiration',
  470. 'active_times' => 'Max email activations allowed per 24h',
  471. 'admin_invite_days' => 'Validity of admin invite codes',
  472. 'affiliate_link_salt' => 'Empty = show user ID; Set to encrypt referral link',
  473. 'auto_release_port' => 'Release ports N days after ban/expiration',
  474. 'bark_key' => 'Device key for Bark (iOS app required)',
  475. 'captcha_key' => '<a href="https://proxypanel.gitbook.io/wiki/captcha" target="_blank">CAPTCHA config guide</a>',
  476. 'data_anomaly_notification' => 'Alert admin if user traffic exceeds threshold in 1h',
  477. 'data_exhaust_notification' => 'Notify users when traffic runs out',
  478. 'ddns_key' => '<a href="https://proxypanel.gitbook.io/wiki/ddns" target="_blank">DDNS config guide</a>',
  479. 'ddns_mode' => 'Auto-sync node domain/IP to DNS provider',
  480. 'default_days' => 'Default validity of new accounts (0 = same day)',
  481. 'default_traffic' => 'Initial traffic for new users',
  482. 'detection_check_times' => 'Max block alerts (0/empty = unlimited, ≤12)',
  483. 'dingTalk_access_token' => '<a href="https://open.dingtalk.com/document/group/custom-robot-access#title-jfe-yo9-jl2" target="_blank">DingTalk token guide</a>',
  484. 'dingTalk_secret' => 'Required if robot signature is enabled',
  485. 'expire_days' => 'Days before expiration to send warning',
  486. 'f2fpay_app_id' => 'Alipay App ID',
  487. 'f2fpay_private_key' => 'Alipay private key (keep safe)',
  488. 'f2fpay_public_key' => 'Alipay public key (not app public key)',
  489. 'forbid_mode' => 'Block access by IP region',
  490. 'iYuu_token' => '<a href="https://iyuu.cn" target="_blank">Get IYUU token</a>',
  491. 'invite_num' => 'Default invite quota for new users',
  492. 'is_activate_account' => 'Require email activation for new accounts',
  493. 'is_ban_status' => '⚠️ Banning resets all account data',
  494. 'is_captcha' => 'Enable CAPTCHA on login/register',
  495. 'is_clear_log' => 'Auto-clear logs (recommended)',
  496. 'is_custom_subscribe' => 'Show usage information in subscription page',
  497. 'is_email_filtering' => 'Blacklist or whitelist email suffixes',
  498. 'is_forbid_robot' => 'Block bots, crawlers, and proxies',
  499. 'is_free_code' => 'Hide free codes if disabled',
  500. 'is_rand_port' => 'Random port for new users',
  501. 'is_register' => 'Disable registration',
  502. 'maintenance_content' => 'HTML content for maintenance page',
  503. 'maintenance_mode' => 'Redirect to maintenance page; Admin login via <a href="javascript:(0)">:url</a>',
  504. 'maintenance_time' => 'Maintenance countdown timer',
  505. 'min_port' => 'Valid port range: 1000–65535',
  506. 'checkin_reward' => 'Traffic range rewarded per check-in',
  507. 'node_blocked_notification' => 'Check and notify node blocks hourly',
  508. 'node_daily_notification' => 'Daily traffic report for nodes',
  509. 'node_offline_notification' => 'Check node status every 10 minutes',
  510. 'node_renewal_notification' => 'Renewal reminders 7/3/1 days before expiry',
  511. 'oauth_path' => 'Set in .ENV before enabling here',
  512. 'offline_check_times' => 'Max offline alerts per 24h',
  513. 'password_reset_notification' => 'Allow users to reset password',
  514. 'paybeaver_app_id' => '<a href="https://merchant.paybeaver.com/" target="_blank">App ID from Merchant Center</a>',
  515. 'paybeaver_app_secret' => '<a href="https://merchant.paybeaver.com/" target="_blank">App Secret from Merchant Center</a>',
  516. 'payjs_mch_id' => '<a href="https://payjs.cn/dashboard/member" target="_blank">Get merchant information</a>',
  517. 'payment_confirm_notification' => 'Notify admin after manual payment',
  518. 'payment_received_notification' => 'Notify user after payment success',
  519. 'pushDeer_key' => '<a href="https://www.pushdeer.com/official.html" target="_blank">Get PushDeer Key</a>',
  520. 'pushplus_token' => '<a href="https://www.pushplus.plus/push1.html" target="_blank">Get PushPlus Token</a>',
  521. 'rand_subscribe' => 'Return nodes randomly or by ID in subscription',
  522. 'redirect_url' => 'Redirect when audit rule triggered',
  523. 'referral_money' => 'Minimum amount for withdrawal',
  524. 'referral_percent' => 'Commission rate (0–100%)',
  525. 'referral_status' => 'Hide referral features (no effect on existing rewards)',
  526. 'referral_traffic' => 'Get bonus traffic when registering with a referral link or invite code',
  527. 'referral_reward_type' => 'Switching type won’t affect past records',
  528. 'register_ip_limit' => 'Max registrations per IP per 24h (0 = unlimited)',
  529. 'reset_password_times' => 'Max password resets per 24h',
  530. 'reset_traffic' => 'Reset traffic on plan renewal date',
  531. 'server_chan_key' => '<a href="https://sct.ftqq.com/r/2626" target="_blank">Get ServerChan SCKEY</a>',
  532. 'standard_currency' => 'Default system currency',
  533. 'subject_name' => 'Product name in payment gateways',
  534. 'subscribe_rate_limit' => 'Max subscription requests per 24h (0 = disable)',
  535. 'subscribe_domain' => 'Subscription domain with http(s):// (anti-DNS pollution)',
  536. 'subscribe_max' => 'Max nodes per subscription (0 = all)',
  537. 'telegram_token' => '<a href="https://t.me/BotFather" target="_blank">Get Telegram Bot Token</a>',
  538. 'tg_chat_token' => '<a href="https://t.me/realtgchat_bot" target="_blank">Get TGChat Token</a>',
  539. 'ticket_closed_notification' => 'Notify user when ticket is closed',
  540. 'ticket_created_notification' => 'Notify handler on ticket creation',
  541. 'ticket_replied_notification' => 'Notify on ticket replies',
  542. 'ban_duration' => 'Auto-unban duration after suspension',
  543. 'traffic_abuse_limit' => '⚠️ Ban if traffic exceeds limit in 1h',
  544. 'checkin_interval' => 'Min hours between check-ins (0 = disabled)',
  545. 'traffic_warning_percent' => 'Notify when traffic below threshold (%)',
  546. 'user_invite_days' => 'User invite code validity',
  547. 'username_type' => 'User ID type (default: email)',
  548. 'v2ray_tls_provider' => 'TLS provider for V2Ray backend',
  549. 'web_api_url' => 'Domain for node backends to use. e.g., '.config('app.url'),
  550. 'webmaster_email' => 'Admin contact email for errors',
  551. 'website_statistics_code' => 'Analytics JS code',
  552. 'payment_callback_url' => 'Callback URL with http(s):// (anti-DNS pollution)',
  553. 'website_customer_service_code' => 'Live chat JS code',
  554. 'website_name' => 'Name in notifications/emails',
  555. 'website_security_code' => 'Set <a href=":url" target="_blank">secure entry</a> if not empty',
  556. 'website_url' => 'Base URL (needed for reset/pay)',
  557. 'wechat_aid' => '<a href="https://work.weixin.qq.com/wework_admin/frame#apps" target="_blank">WeCom App AgentId</a>',
  558. 'wechat_cid' => '<a href="https://work.weixin.qq.com/wework_admin/frame#profile" target="_blank">WeCom Corp ID</a>',
  559. 'wechat_encodingAESKey' => 'From API → EncodingAESKey',
  560. 'wechat_secret' => 'App Secret',
  561. 'wechat_token' => 'From API → Token, URL: :url',
  562. ],
  563. 'notification' => [
  564. 'channel' => [
  565. 'bark' => 'Bark',
  566. 'dingtalk' => 'DingTalk',
  567. 'email' => 'Email',
  568. 'iyuu' => 'IYUU',
  569. 'pushdeer' => 'PushDeer',
  570. 'pushplus' => 'PushPlus',
  571. 'serverchan' => 'ServerChan',
  572. 'site' => 'In-site',
  573. 'telegram' => 'Telegram',
  574. 'tg_chat' => 'TG-Chat',
  575. 'wechat' => 'WeCom',
  576. ],
  577. 'send_test' => 'Send test',
  578. 'test' => [
  579. 'content' => 'Test notification content',
  580. 'success' => 'Test notification sent',
  581. 'title' => 'Test notification title',
  582. 'unknown_channel' => 'Unknown channel',
  583. ],
  584. ],
  585. 'payment' => [
  586. 'attribute' => 'Payment settings',
  587. 'channel' => [
  588. 'f2fpay' => 'Alipay F2F',
  589. 'codepay' => 'CodePay',
  590. 'credit' => 'Credit',
  591. 'epay' => 'ePay',
  592. 'manual' => 'Manual',
  593. 'paybeaver' => 'PayBeaver',
  594. 'payjs' => 'PayJs',
  595. 'paypal' => 'PayPal',
  596. 'stripe' => 'Stripe',
  597. 'theadpay' => 'THeadPay',
  598. 'cryptomus' => 'Cryptomus',
  599. 'youzan' => 'YouZan',
  600. 'bitpayx' => 'BitPayX',
  601. ],
  602. 'hint' => [
  603. 'f2fpay' => 'Apply at <a href="https://open.alipay.com/platform/appManage.htm?#/create/" target="_blank">Alipay Open Platform</a>',
  604. 'codepay' => 'Register at <a href="https://codepay.fateqq.com/i/377289" target="_blank">CodePay</a> and download software',
  605. 'manual' => 'Shows automatically when configured',
  606. 'paybeaver' => 'Register at <a href="https://merchant.paybeaver.com/?aff_code=iK4GNuX8" target="_blank">PayBeaver</a>',
  607. 'payjs' => 'Register at <a href="https://payjs.cn/ref/zgxjnb" target="_blank">PayJs</a>',
  608. 'paypal' => 'Get credentials at <a href="https://www.paypal.com/businessprofile/mytools/apiaccess/firstparty" target="_blank">PayPal API</a>',
  609. 'theadpay' => 'Register at <a href="https://theadpay.com/" target="_blank">THeadPay</a>',
  610. 'cryptomus' => 'Register at <a href="https://app.cryptomus.com/signup" target="_blank">Cryptomus</a> and get API key',
  611. ],
  612. ],
  613. 'placeholder' => [
  614. 'bark_key' => 'Enter Bark key → Update',
  615. 'codepay_url' => 'https://codepay.fateqq.com/creat_order/?',
  616. 'default_url' => 'Default: :url',
  617. 'dingTalk_access_token' => 'Robot WebHook access_token',
  618. 'dingTalk_secret' => 'Robot signature secret',
  619. 'iYuu_token' => 'Enter IYUU token → Update',
  620. 'pushDeer_key' => 'Enter PushDeer key → Update',
  621. 'pushplus_token' => 'Apply at PushPlus',
  622. 'server_chan_key' => 'Enter ServerChan SCKEY → Update',
  623. 'telegram_token' => 'Enter Telegram token → Update',
  624. 'tg_chat_token' => 'Apply at Telegram',
  625. 'wechat_aid' => 'Enter WeChat App AgentId',
  626. 'wechat_cid' => 'Enter WeChat Corp ID → Update',
  627. 'wechat_secret' => 'Enter WeChat App Secret',
  628. ],
  629. 'referral' => [
  630. 'loop' => 'Recurring commission',
  631. 'once' => 'First-purchase commission',
  632. ],
  633. 'username' => [
  634. 'any' => 'Any',
  635. 'email' => 'Email',
  636. 'mobile' => 'Mobile',
  637. ],
  638. 'demo_restriction' => '⚠️ Modification disabled in demo',
  639. 'params_required' => 'Complete :attribute parameters',
  640. ],
  641. 'system_generate' => 'System generated',
  642. 'ticket' => [
  643. 'close_confirm' => '⚠️ Confirm close ticket? This is irreversible',
  644. 'counts' => 'Total <code>:num</code> tickets',
  645. 'error' => 'Unknown error! Please check the logs.',
  646. 'inviter_info' => 'Inviter Information',
  647. 'self_send' => 'You cannot create a ticket for yourself!',
  648. 'send_to' => 'Please provide target user details',
  649. 'user_info' => 'User Information',
  650. ],
  651. 'times' => 'times',
  652. 'tools' => [
  653. 'analysis' => [
  654. 'file_missing' => ':file_name does not exist. Please create the file first.',
  655. 'not_enough' => 'Insufficient records (≥15,000 required)',
  656. 'req_url' => 'Recent request URLs',
  657. 'sub_title' => 'For single-node deployments only',
  658. ],
  659. 'convert' => [
  660. 'content_placeholder' => 'Enter Shadowsocks JSON',
  661. 'file_missing' => 'File does not exist. Please check directory permissions.',
  662. 'missing_error' => 'Conversion failed: Missing the [port_password] field in configuration or the field is empty.',
  663. 'params_unknown' => 'Parameter error',
  664. 'sub_title' => 'Convert Shadowsocks to ShadowsocksR',
  665. ],
  666. 'decompile' => [
  667. 'attribute' => 'Config parsing',
  668. 'content_placeholder' => 'Enter ShadowsocksR links (one per line)',
  669. ],
  670. 'import' => [
  671. 'file_error' => 'An unknown error occurred. Please re-upload.',
  672. 'file_required' => 'Please select a file to upload.',
  673. 'file_type_error' => 'Only :type format supported',
  674. 'format_error' => 'Content format parsing error. Please upload a :type file with compliant configuration.',
  675. ],
  676. ],
  677. 'unselected_hint' => 'Unassigned rules (searchable)',
  678. 'user' => [
  679. 'admin_deletion' => '⚠️ Admin accounts cannot be deleted',
  680. 'bulk_account_quantity' => 'Generate quantity',
  681. 'connection_test' => 'Check Connectivity',
  682. 'counts' => 'Total <code>:num</code> accounts',
  683. 'group' => [
  684. 'counts' => 'Total <code>:num</code> groups',
  685. 'name' => 'Group name',
  686. 'sub_title' => 'Nodes can be in multiple groups; users in one group only. Group takes precedence over level for node visibility.',
  687. ],
  688. 'info' => [
  689. 'account' => 'Account Information',
  690. 'expired_date_hint' => 'Blank defaults to 365 days',
  691. 'proxy' => 'Proxy Information',
  692. 'recharge_placeholder' => 'Negative = deduction',
  693. 'reset_date_hint' => 'Next traffic reset date',
  694. 'switch' => 'Switch role',
  695. 'uuid_hint' => 'UUID for V2Ray',
  696. ],
  697. 'online_monitor' => 'Online monitor',
  698. 'proxies_config' => '[:username] proxy config',
  699. 'proxy_info' => 'Proxy Information',
  700. 'reset_confirm' => '⚠️ Confirm resetting traffic for :username?',
  701. 'reset_traffic' => 'Reset traffic',
  702. 'traffic_monitor' => 'Traffic monitor',
  703. 'update_help' => 'Updated! Return to list?',
  704. 'user_view' => 'User view',
  705. ],
  706. 'user_dashboard' => 'User Center',
  707. 'yes' => 'Yes',
  708. 'zero_unlimited_hint' => 'No setting/0 means no restriction',
  709. 'network_status' => [
  710. 1 => '✔️ Normal',
  711. 2 => '🛑 Blocked Overseas',
  712. 3 => '🛑 Blocked Domestically',
  713. 4 => '❌ Disconnected',
  714. ],
  715. ];