|
|
@@ -1,25 +1,27 @@
|
|
|
<?php
|
|
|
|
|
|
+declare(strict_types=1);
|
|
|
+
|
|
|
return [
|
|
|
'dashboard' => [
|
|
|
- 'users' => 'All Users',
|
|
|
+ 'users' => 'Total Users',
|
|
|
'available_users' => 'Active Users',
|
|
|
'paid_users' => 'Paying Users',
|
|
|
- 'active_days_users' => 'Active Users Within :days Days',
|
|
|
- 'inactive_days_users' => 'Inactive Users Over :days Days',
|
|
|
- 'online_users' => 'Current Online Users',
|
|
|
- 'expiring_users' => 'Near Due Date',
|
|
|
- 'overuse_users' => 'Overuse (used ≥ 90% traffic)',
|
|
|
- 'abnormal_users' => 'Abnormal Traffic (last 1 hour)',
|
|
|
+ 'active_days_users' => 'Active Users in Last :days Days',
|
|
|
+ 'inactive_days_users' => 'Inactive Users for Over :days Days',
|
|
|
+ 'online_users' => 'Online Now',
|
|
|
+ 'expiring_users' => 'Expiring Soon',
|
|
|
+ 'overuse_users' => 'Data Overuse [≥90%] Users',
|
|
|
+ 'abnormal_users' => 'Abnormal Traffic in Past Hour',
|
|
|
'nodes' => 'Nodes',
|
|
|
- 'maintaining_nodes' => 'Nodes Under Maintenance',
|
|
|
- 'current_month_traffic_consumed' => 'Current Month Traffic Consumed',
|
|
|
- 'days_traffic_consumed' => 'Traffic Consumed Within :days Days',
|
|
|
- 'orders' => 'Orders',
|
|
|
- 'online_orders' => 'Online Orders',
|
|
|
- 'succeed_orders' => 'Successful Orders',
|
|
|
- 'credit' => 'Total Balance',
|
|
|
- 'withdrawing_commissions' => 'Pending Commissions Withdrawal',
|
|
|
+ 'maintaining_nodes' => 'Maintenance Mode Nodes',
|
|
|
+ 'current_month_traffic_consumed' => 'Traffic Used This Month',
|
|
|
+ 'days_traffic_consumed' => 'Traffic Used in Past :days Days',
|
|
|
+ 'orders' => 'Total Orders',
|
|
|
+ 'online_orders' => 'Online Payment Orders',
|
|
|
+ 'succeed_orders' => 'Paid Orders',
|
|
|
+ 'credit' => 'Total Credit',
|
|
|
+ 'withdrawing_commissions' => 'Pending Commissions',
|
|
|
'withdrawn_commissions' => 'Withdrawn Commissions',
|
|
|
],
|
|
|
'action' => [
|
|
|
@@ -27,9 +29,9 @@ return [
|
|
|
'add_item' => 'Add :attribute',
|
|
|
],
|
|
|
'confirm' => [
|
|
|
- 'delete' => [0 => 'Do you want to delete :attribute [', 1 => '] ?'],
|
|
|
- 'continues' => 'Do you want to continue?',
|
|
|
- 'export' => 'Do you want to export all?',
|
|
|
+ 'delete' => [0 => 'Confirm Delete :attribute [', 1 => ']?'],
|
|
|
+ 'continues' => 'Confirm to continue?',
|
|
|
+ 'export' => 'Confirm to export all?',
|
|
|
],
|
|
|
'user_dashboard' => 'User Dashboard',
|
|
|
'menu' => [
|
|
|
@@ -39,8 +41,8 @@ return [
|
|
|
'list' => 'User Management',
|
|
|
'oauth' => 'OAuth',
|
|
|
'group' => 'User Groups',
|
|
|
- 'credit_log' => 'Balance History',
|
|
|
- 'subscribe' => 'Subscription Requests',
|
|
|
+ 'credit_log' => 'Credit History',
|
|
|
+ 'subscribe' => 'Subscriptions',
|
|
|
],
|
|
|
'rbac' => [
|
|
|
'attribute' => 'RBAC',
|
|
|
@@ -50,36 +52,36 @@ return [
|
|
|
'customer_service' => [
|
|
|
'attribute' => 'Helpdesk',
|
|
|
'ticket' => 'Support Tickets',
|
|
|
- 'article' => 'Article Management',
|
|
|
+ 'article' => 'Knowledge Base',
|
|
|
'push' => 'Push Notifications',
|
|
|
- 'mail' => 'Mass Mailing',
|
|
|
+ 'mail' => 'Email',
|
|
|
],
|
|
|
'node' => [
|
|
|
'attribute' => 'Nodes',
|
|
|
'list' => 'Node Management',
|
|
|
'auth' => 'API Authorization',
|
|
|
- 'cert' => 'Security Certificates',
|
|
|
+ 'cert' => 'Certificates',
|
|
|
],
|
|
|
'rule' => [
|
|
|
'attribute' => 'Audit Rules',
|
|
|
- 'list' => 'Rule Management',
|
|
|
- 'group' => 'Rule Group',
|
|
|
+ 'list' => 'Rules',
|
|
|
+ 'group' => 'Rule Groups',
|
|
|
'trigger' => 'Trigger Records',
|
|
|
],
|
|
|
'shop' => [
|
|
|
'attribute' => 'Shop',
|
|
|
- 'goods' => 'Product Management',
|
|
|
- 'coupon' => 'Coupon Management',
|
|
|
+ 'goods' => 'Products',
|
|
|
+ 'coupon' => 'Coupons',
|
|
|
'order' => 'Orders',
|
|
|
],
|
|
|
'promotion' => [
|
|
|
- 'attribute' => 'Promotions',
|
|
|
- 'invite' => 'Referral Management',
|
|
|
- 'withdraw' => 'Commission Withdrawals',
|
|
|
+ 'attribute' => 'Affiliates',
|
|
|
+ 'invite' => 'Referrals',
|
|
|
+ 'withdraw' => 'Withdraws',
|
|
|
'rebate_flow' => 'Rebate History',
|
|
|
],
|
|
|
'analysis' => [
|
|
|
- 'attribute' => 'Report',
|
|
|
+ 'attribute' => 'Analytics',
|
|
|
'accounting' => 'Accounting',
|
|
|
'user_flow' => 'User Flow',
|
|
|
],
|
|
|
@@ -90,12 +92,12 @@ return [
|
|
|
'service_ban' => 'Ban Records',
|
|
|
'online_logs' => 'Online Logs',
|
|
|
'online_monitor' => 'Online Monitoring',
|
|
|
- 'notify' => 'Notification Logs',
|
|
|
+ 'notify' => 'Notifications',
|
|
|
'payment_callback' => 'Payment Callback',
|
|
|
- 'system' => 'System Report',
|
|
|
+ 'system' => 'System Logs',
|
|
|
],
|
|
|
'tools' => [
|
|
|
- 'attribute' => 'Toolbox',
|
|
|
+ 'attribute' => 'Tools',
|
|
|
'decompile' => 'Decompile',
|
|
|
'convert' => 'Convert',
|
|
|
'import' => 'Import',
|
|
|
@@ -103,206 +105,205 @@ return [
|
|
|
],
|
|
|
'setting' => [
|
|
|
'attribute' => 'Settings',
|
|
|
- 'email_suffix' => 'Email Suffix Management',
|
|
|
- 'universal' => 'General Settings',
|
|
|
- 'system' => 'System Settings',
|
|
|
+ 'email_suffix' => 'Email Filters',
|
|
|
+ 'universal' => 'General',
|
|
|
+ 'system' => 'System',
|
|
|
],
|
|
|
],
|
|
|
'user' => [
|
|
|
'massive' => [
|
|
|
- 'text' => 'Number of Users to Generate',
|
|
|
- 'button' => 'Bulk Generation',
|
|
|
- 'failed' => 'Bulk generation failed',
|
|
|
- 'succeed' => 'Bulk accounts generated successfully',
|
|
|
- 'note' => 'Bulk users generated in background',
|
|
|
- ],
|
|
|
- 'proxy_info' => 'Configuration information',
|
|
|
- 'traffic_monitor' => 'Usage Statistics',
|
|
|
- 'online_monitor' => 'Online Monitoring',
|
|
|
+ 'text' => '# of Users to Generate',
|
|
|
+ 'failed' => 'User Generation Failed',
|
|
|
+ 'succeed' => 'User Generated Successfully',
|
|
|
+ 'note' => 'Backend bulk user generate',
|
|
|
+ ],
|
|
|
+ 'proxy_info' => 'Config Info',
|
|
|
+ 'traffic_monitor' => 'Traffic Stats',
|
|
|
+ 'online_monitor' => 'Online Monitor',
|
|
|
'reset_traffic' => 'Reset Data',
|
|
|
- 'user_view' => 'Switch to User Profile',
|
|
|
- 'connection_test' => 'Networking Test',
|
|
|
- 'counts' => 'Total of <code>:num</code> accounts',
|
|
|
- 'reset_confirm' => [0 => 'Do you want to reset [', 1 => ']\'s data?'],
|
|
|
+ 'user_view' => 'Switch to User View',
|
|
|
+ 'connection_test' => 'Connection Test',
|
|
|
+ 'counts' => '<code>:num</code> accounts total',
|
|
|
+ 'reset_confirm' => [0 => 'Confirm Reset [', 1 => ']\'s data?'],
|
|
|
'info' => [
|
|
|
- 'account' => 'Account Information',
|
|
|
- 'proxy' => 'Proxy Information',
|
|
|
+ 'account' => 'Account Info',
|
|
|
+ 'proxy' => 'Proxy Info',
|
|
|
'switch' => 'Switch Identity',
|
|
|
'reset_date_hint' => 'Next data reset date',
|
|
|
- 'expired_date_hint' => 'Leave empty for one year by default',
|
|
|
+ 'expired_date_hint' => 'Leave empty for 1 year by default',
|
|
|
'uuid_hint' => 'UUID for V2Ray',
|
|
|
- 'recharge_placeholder' => 'Filling in a negative value will deduct the balance',
|
|
|
+ 'recharge_placeholder' => 'Input negative to deduct balance',
|
|
|
],
|
|
|
- 'update_help' => 'Successfully updated, do you want to return?',
|
|
|
- 'proxies_config' => ':username connection configuration information',
|
|
|
+ 'update_help' => 'Update successful, go back?',
|
|
|
+ 'proxies_config' => '[:username] Config Info',
|
|
|
'group' => [
|
|
|
- 'title' => 'User Group Control<small>(same node can be assigned to more than one group, One user can only belong to one group; For visible/available nodes: filter by level first, then group)</small>',
|
|
|
+ 'title' => 'User Groups <small>(Nodes can be in multiple groups, user only in one)</small>',
|
|
|
'name' => 'Group Name',
|
|
|
- 'counts' => 'Total of <code>:num</code> groups',
|
|
|
+ 'counts' => '<code>:num</code> groups total',
|
|
|
],
|
|
|
],
|
|
|
- 'zero_unlimited_hint' => 'Empty or 0 for unlimited',
|
|
|
+ 'zero_unlimited_hint' => '0 or empty for unlimited',
|
|
|
'node' => [
|
|
|
- 'traffic_monitor' => 'Usage Statistics',
|
|
|
- 'refresh_geo' => 'Refresh Geography',
|
|
|
- 'ping' => 'Detect Delay',
|
|
|
- 'connection_test' => 'Connectivity Test',
|
|
|
- 'counts' => 'Total of <code>:num</code> nodes',
|
|
|
- 'reload_all' => 'Reload All Backend',
|
|
|
- 'refresh_geo_all' => 'Refresh All Nodes\' Geographies',
|
|
|
- 'reload_confirm' => 'Do you want to reload the node?',
|
|
|
+ 'traffic_monitor' => 'Traffic Stats',
|
|
|
+ 'refresh_geo' => 'Refresh Geo Data',
|
|
|
+ 'ping' => 'Latency Test',
|
|
|
+ 'connection_test' => 'Connection Test',
|
|
|
+ 'counts' => '<code>:num</code> nodes total',
|
|
|
+ 'reload_all' => 'Reload All Backends',
|
|
|
+ 'refresh_geo_all' => 'Refresh Geo Data',
|
|
|
+ 'reload_confirm' => 'Confirm Reload Node?',
|
|
|
'info' => [
|
|
|
- 'hint' => '<strong>Note: </strong> Nodes page\'s <code>ID</code> is used in ShadowsocksR Python backend as <code>node_id</code> in usermysql.json, in V2Ray backend as <code>nodeId</code>.',
|
|
|
- 'basic' => 'Basic Information',
|
|
|
- 'ddns_hint' => 'Dynamic IP nodes need to be configured with <a href="https://github.com/NewFuture/DDNS" target="_blank">DDNS</a>. For this type of node, the node connectivity test will use server domain to test',
|
|
|
- 'domain_placeholder' => 'Server domain address',
|
|
|
- 'domain_hint' => 'Enable DDNS in System Settings. Domain will be automatically create/bound to IP address! No longer need to go to the DNS registrant page to modify IP information.',
|
|
|
- 'extend' => 'Extended Information',
|
|
|
+ 'hint' => '<strong>Note:</strong> The auto-generated <code>ID</code> is the <code>node_id</code> for ShadowsocksR backend and <code>nodeId</code> for V2Ray backend',
|
|
|
+ 'basic' => 'Basic Info',
|
|
|
+ 'ddns_hint' => 'Dynamic IP nodes need <a href="https://github.com/NewFuture/DDNS" target="_blank">DDNS</a>. Connection test will use domain name',
|
|
|
+ 'domain_placeholder' => 'Server domain, will use first if filled',
|
|
|
+ 'domain_hint' => 'With DDNS enabled, domain will auto bind IP! No longer need to modify DNS record manually.',
|
|
|
+ 'extend' => 'Extended Info',
|
|
|
'display' => [
|
|
|
- 'invisible' => 'Completely invisible',
|
|
|
- 'node' => 'Show only on :trans page',
|
|
|
- 'sub' => 'Show by Subscription only',
|
|
|
- 'all' => 'Visible for all',
|
|
|
- 'hint' => 'Whether users can subscribe/see this node',
|
|
|
+ 'invisible' => 'Invisible',
|
|
|
+ 'node' => 'Visible only in Node Page',
|
|
|
+ 'sub' => 'Visible only in Subscriptions',
|
|
|
+ 'all' => 'Fully Visible',
|
|
|
+ 'hint' => 'Whether visible in subscription/node list',
|
|
|
],
|
|
|
- 'ipv4_hint' => 'Multi-IP uses \',\' partition; ex: 1.1.1.1, 8.8.8.8',
|
|
|
- 'ipv6_hint' => 'Multi-IP uses \',\' partition; ex: 1.1.1.1, 8.8.8.8',
|
|
|
+ 'ipv4_hint' => 'Multiple IPs separated by "," ; e.g. 1.1.1.1, 8.8.8.8',
|
|
|
+ 'ipv6_hint' => 'Multiple IPs separated by "," ; e.g. 1.1.1.1, 8.8.8.8',
|
|
|
'ipv4_placeholder' => 'Server IPv4 Address',
|
|
|
- 'ipv6_placeholder' => 'Server IPv6 address',
|
|
|
- 'push_port_hint' => 'Required and server firewall needs to be set up correctly, otherwise it will cause an exception',
|
|
|
- 'data_rate_hint' => 'Ex: set to 0.1, 10M will be count as 100M and 500M count as 100M',
|
|
|
- 'level_hint' => 'Level: 0 = No ratings, all visible',
|
|
|
+ 'ipv6_placeholder' => 'Server IPv6 Address',
|
|
|
+ 'push_port_hint' => 'Required, open in firewall to avoid push failure',
|
|
|
+ 'data_rate_hint' => 'E.g. 0.1 means 100M will be count as 10M; 5 means 100M will be count as 500M',
|
|
|
+ 'level_hint' => 'Level: 0 = No ratings, all nodes visible',
|
|
|
'detection' => [
|
|
|
'tcp' => 'TCP only',
|
|
|
'icmp' => 'ICMP only',
|
|
|
'all' => 'Detect All',
|
|
|
- 'hint' => 'Nodes will be tested every 30-60 minutes',
|
|
|
+ 'hint' => 'Random check every 30-60 mins',
|
|
|
],
|
|
|
- 'obfs_param_hint' => 'While obfs is not [plain], fill in parameters to traffic masquerading; While obfs is [http_simple], suggest set port to 80; While obfs is [tls], suggest set port to 443;',
|
|
|
- 'additional_ports_hint' => 'If enabled, please configure server<span class="red-700"><a href="javascript:showTnc();">additional_ports</a></span>information',
|
|
|
- 'v2_method_hint' => 'Do not use none when using WebSocket',
|
|
|
- 'v2_net_hint' => 'Enable TLS when using WebSocket Transfer Protocol',
|
|
|
+ 'obfs_param_hint' => 'Fill in parameters for traffic masquerading if obfs is not [plain]; Suggest port 80 if obfs is [http_simple]; Suggest port 443 if obfs is [tls];',
|
|
|
+ 'additional_ports_hint' => 'If enabled, please configure server <span class="red-700"><a href="javascript:showTnc();">additional_ports</a></span>',
|
|
|
+ 'v2_method_hint' => 'Do not use none with WebSocket',
|
|
|
+ 'v2_net_hint' => 'Enable TLS with WebSocket',
|
|
|
'v2_cover' => [
|
|
|
'none' => 'None',
|
|
|
- 'http' => 'HTTP Transport',
|
|
|
- 'srtp' => 'Video call data (SRTP)',
|
|
|
- 'utp' => 'BT download data (uTP)',
|
|
|
- 'wechat' => 'WeChat video call',
|
|
|
- 'dtls' => 'DTLS1.2 packets',
|
|
|
- 'wireguard' => 'WireGuard packets',
|
|
|
+ 'http' => 'HTTP',
|
|
|
+ 'srtp' => 'SRTP',
|
|
|
+ 'utp' => 'uTP',
|
|
|
+ 'wechat' => 'WeChat Video',
|
|
|
+ 'dtls' => 'DTLS 1.2',
|
|
|
+ 'wireguard' => 'WireGuard',
|
|
|
],
|
|
|
- 'v2_host_hint' => 'Multiple domains are separated by \',\' when the spoofing type is HTTP transfer protocol, and only one domain is allowed when using the WebSocket transfer protocol.',
|
|
|
- 'v2_tls_provider_hint' => 'Different backend configurations are different:',
|
|
|
- 'single_hint' => 'Recommended 80 or 443. Backend needs to configure <br> strict mode: user\'s port cannot be connected, only via the following specified port. (<a href="javascript:showPortsOnlyConfig();">How to configure?</a>)',
|
|
|
+ 'v2_host_hint' => 'For HTTP, separate multiple domains with ",". Only one allowed for WebSocket.',
|
|
|
+ 'v2_tls_provider_hint' => 'Different backends have different configs:',
|
|
|
+ 'single_hint' => 'Recommended port 80/443. Backend needs <br> strict mode config: only connect via specified ports. (<a href="javascript:showPortsOnlyConfig();">How to configure</a>)',
|
|
|
],
|
|
|
- 'proxy_info' => '*Compatibility SS',
|
|
|
- 'proxy_info_hint' => 'If compatible, please add<span class="red-700">_compatible</span> to server configuration protocol and obfuscation',
|
|
|
+ 'proxy_info' => '*Compatibility with SS',
|
|
|
+ 'proxy_info_hint' => 'For compatibility, please add <span class="red-700">_compatible</span> to protocol and obfuscation in server config',
|
|
|
'reload' => 'Reload Backend',
|
|
|
'auth' => [
|
|
|
- 'title' => 'Node Authorizations <small>WEBAPI</small>',
|
|
|
+ 'title' => 'API Authorizations <small>WEBAPI</small>',
|
|
|
'deploy' => [
|
|
|
- 'title' => 'Deploy :type_label backend',
|
|
|
+ 'title' => 'Deploy :type_label Backend',
|
|
|
'attribute' => 'Backend Deployment',
|
|
|
- 'command' => 'Operating instructions',
|
|
|
+ 'command' => 'Instructions',
|
|
|
'update' => 'Update: ',
|
|
|
'uninstall' => 'Uninstall: ',
|
|
|
- 'start' => 'Launch: ',
|
|
|
+ 'start' => 'Start: ',
|
|
|
'stop' => 'Stop: ',
|
|
|
'status' => 'Status: ',
|
|
|
- 'recent_logs' => 'Recent Log: ',
|
|
|
- 'real_time_logs' => 'Real-time Log: ',
|
|
|
+ 'recent_logs' => 'Recent Logs: ',
|
|
|
+ 'real_time_logs' => 'Real-time Logs: ',
|
|
|
'restart' => 'Restart: ',
|
|
|
- 'same' => 'Same as above',
|
|
|
- 'trojan_hint' => 'Please fill in the node\'s<a href=":url" target="_blank">domain name</a> and resolve IP to this the domain',
|
|
|
+ 'same' => 'Same Above',
|
|
|
+ 'trojan_hint' => 'Please fill in node <a href=":url" target="_blank">domain</a> and resolve domain DNS to node IP',
|
|
|
],
|
|
|
'reset_auth' => 'Reset Key',
|
|
|
- 'counts' => 'Total of <code>:num</code> authorizations',
|
|
|
- 'generating_all' => 'Do you want to generate authorization for all nodes?',
|
|
|
+ 'counts' => '<code>:num</code> authorizations total',
|
|
|
+ 'generating_all' => 'Generate authorization for all nodes?',
|
|
|
],
|
|
|
'cert' => [
|
|
|
- 'title' => 'Domain Certificates <small>Spoofing Domain for V2Ray Nodes</small>',
|
|
|
- 'counts' => 'Total of <code>:num</code> domain certificates',
|
|
|
- 'key_placeholder' => 'The KEY value of the domain certificate. Allowed to be empty, VNET-V2Ray backend support auto-signing certificate',
|
|
|
- 'pem_placeholder' => 'The PEM value of the domain certificate. Allowed to be empty, VNET-V2Ray backend support auto-signing certificate',
|
|
|
+ 'title' => 'Domain Certs <small>(For V2Ray node spoofing)</small>',
|
|
|
+ 'counts' => '<code>:num</code> certs total',
|
|
|
+ 'key_placeholder' => 'Domain cert KEY. Allow empty, VNET-V2Ray supports auto certs',
|
|
|
+ 'pem_placeholder' => 'Domain cert PEM. Allow empty, VNET-V2Ray supports auto certs',
|
|
|
],
|
|
|
],
|
|
|
'hint' => 'Hint',
|
|
|
'oauth' => [
|
|
|
'title' => 'User OAuth',
|
|
|
- 'counts' => 'Total of <code>:num</code> open authorizations',
|
|
|
+ 'counts' => '<code>:num</code> authorizations total',
|
|
|
],
|
|
|
'select_all' => 'Select All',
|
|
|
'clear' => 'Clear',
|
|
|
- 'unselected_hint' => 'To be assigned, searchable here',
|
|
|
- 'selected_hint' => 'Assigned, searchable here',
|
|
|
+ 'unselected_hint' => 'To Assign, Search Here',
|
|
|
+ 'selected_hint' => 'Assigned, Search Here',
|
|
|
'clone' => 'Clone',
|
|
|
'monitor' => [
|
|
|
- 'daily_chart' => 'Daily traffic chart',
|
|
|
- 'monthly_chart' => 'Monthly traffic chart',
|
|
|
- 'node' => 'Node traffic',
|
|
|
- 'user' => 'User traffic',
|
|
|
- 'hint' => '<strong>Hint: </strong> If no statistics are available, please check is the scheduled task running correctly.',
|
|
|
+ 'daily_chart' => 'Daily Traffic',
|
|
|
+ 'monthly_chart' => 'Monthly Traffic',
|
|
|
+ 'node' => 'Node Traffic',
|
|
|
+ 'user' => 'User Traffic',
|
|
|
+ 'hint' => '<strong>Hint:</strong> Check scheduled tasks if no data',
|
|
|
],
|
|
|
'tools' => [
|
|
|
'analysis' => [
|
|
|
- 'title' => 'SSR Log Analysis <small>For single node only</small>',
|
|
|
- 'req_url' => 'Recent Requests Address',
|
|
|
- 'not_enough' => 'Less than 15,000 records, unable to analyze data',
|
|
|
+ 'title' => 'SSR Log Analysis <small>For single node</small>',
|
|
|
+ 'req_url' => 'Recent Request URLs',
|
|
|
+ 'not_enough' => 'Less than 15,000 records, unable to analyze',
|
|
|
],
|
|
|
'convert' => [
|
|
|
- 'title' => 'Format Conversion <small>Shadowsocks to ShadowsocksR</small>',
|
|
|
- 'content_placeholder' => 'Please fill in the configuration information to be converted',
|
|
|
+ 'title' => 'Format Conversion <small>SS to SSR</small>',
|
|
|
+ 'content_placeholder' => 'Please fill in the config to convert',
|
|
|
],
|
|
|
'decompile' => [
|
|
|
- 'title' => 'Decompile <small>Configuration Information</small>',
|
|
|
+ 'title' => 'Decompile <small>Config Info</small>',
|
|
|
'attribute' => 'Decompile',
|
|
|
- 'content_placeholder' => 'Please fill in the ShadowsocksR link that you want to decompile, one link per line',
|
|
|
+ 'content_placeholder' => 'Please fill in the SSR links to decompile, one per line',
|
|
|
],
|
|
|
],
|
|
|
'ticket' => [
|
|
|
'title' => 'Tickets',
|
|
|
- 'counts' => 'Total of <code>:num</code> tickets',
|
|
|
- 'send_to' => 'Please fill in the target user information',
|
|
|
- 'user_info' => 'User Information',
|
|
|
- 'inviter_info' => 'Inviter Information',
|
|
|
- 'close_confirm' => 'Sure to close this ticket?',
|
|
|
- 'error' => 'Unknown error! Please check the logs',
|
|
|
+ 'counts' => '<code>:num</code> tickets total',
|
|
|
+ 'send_to' => 'Please fill in target user details',
|
|
|
+ 'user_info' => 'User Info',
|
|
|
+ 'inviter_info' => 'Inviter Info',
|
|
|
+ 'close_confirm' => 'Confirm Close Ticket?',
|
|
|
+ 'error' => 'Unknown error! Please check logs',
|
|
|
],
|
|
|
'logs' => [
|
|
|
'subscribe' => 'Subscriptions',
|
|
|
- 'counts' => 'Total of <code>:num</code> records',
|
|
|
+ 'counts' => '<code>:num</code> records total',
|
|
|
'rule' => [
|
|
|
- 'clear_all' => 'Clear all records',
|
|
|
- 'title' => 'Trigger record',
|
|
|
+ 'clear_all' => 'Clear All Records',
|
|
|
+ 'title' => 'Trigger Records',
|
|
|
'name' => 'Trigger Rule',
|
|
|
- 'reason' => 'Trigger reason',
|
|
|
+ 'reason' => 'Trigger Reason',
|
|
|
'created_at' => 'Trigger Time',
|
|
|
- 'tag' => '✅ Access to non-permitted content',
|
|
|
- 'clear_confirm' => 'Sure to clear all records?',
|
|
|
+ 'tag' => '✅ Non-permitted access',
|
|
|
+ 'clear_confirm' => 'Confirm Clear All Records?',
|
|
|
],
|
|
|
'order' => [
|
|
|
'title' => 'Orders',
|
|
|
- 'is_expired' => 'Whether orders has expired',
|
|
|
- 'is_coupon' => 'Whether a coupon was used',
|
|
|
+ 'is_expired' => 'Expired',
|
|
|
+ 'is_coupon' => 'Used Coupon',
|
|
|
],
|
|
|
'user_traffic' => [
|
|
|
'title' => 'Data Usage Records',
|
|
|
'choose_node' => 'Select Node',
|
|
|
],
|
|
|
- 'user_data_modify_title' => 'User Data Change Records',
|
|
|
- 'callback' => 'Callback Logs <small>For Online Payment</small>',
|
|
|
- 'notification' => 'Email Delivery Records',
|
|
|
- 'ip_monitor' => 'Online IP monitoring <small>Real-time data within 2 minutes</small>',
|
|
|
+ 'user_data_modify_title' => 'Data Change Records',
|
|
|
+ 'callback' => 'Callback Logs <small>(Payment)</small>',
|
|
|
+ 'notification' => 'Email Logs',
|
|
|
+ 'ip_monitor' => 'Online IPs <small>Real-time 2 mins</small>',
|
|
|
'user_ip' => [
|
|
|
- 'title' => 'User Online IP List <small>Last 10 minutes</small>',
|
|
|
- 'connect' => 'IP of connection',
|
|
|
+ 'title' => 'Online IPs <small>Last 10 mins</small>',
|
|
|
+ 'connect' => 'Connected IP',
|
|
|
],
|
|
|
'ban' => [
|
|
|
- 'title' => 'User Ban Records',
|
|
|
+ 'title' => 'User Bans',
|
|
|
'time' => 'Duration',
|
|
|
'reason' => 'Reason',
|
|
|
- 'ban_time' => 'Banned Time',
|
|
|
- 'last_connect_at' => 'Last connection time',
|
|
|
+ 'ban_time' => 'Banned On',
|
|
|
+ 'last_connect_at' => 'Last Login Time',
|
|
|
],
|
|
|
'credit_title' => 'Balance Change Records',
|
|
|
],
|
|
|
@@ -311,85 +312,85 @@ return [
|
|
|
'goods' => [
|
|
|
'title' => 'Products',
|
|
|
'type' => [
|
|
|
- 'top_up' => 'Top-Up',
|
|
|
- 'package' => 'Data Pack',
|
|
|
- 'plan' => 'Plan',
|
|
|
+ 'top_up' => 'Top Up',
|
|
|
+ 'package' => 'Data Package',
|
|
|
+ 'plan' => 'Subscription Plan',
|
|
|
],
|
|
|
'info' => [
|
|
|
- 'type_hint' => 'Plan is related to the account expiration date, Data Pack only affect the available data that user has, does not affect the expiration date',
|
|
|
- 'period_hint' => 'Plan\'s data reset in every N days',
|
|
|
- 'limit_num_hint' => 'Number of times each user can purchase this product; 0 means no restriction on purchase',
|
|
|
- 'available_date_hint' => 'Automatically deduct data from total data when due',
|
|
|
- 'desc_placeholder' => 'Brief description of the product',
|
|
|
- 'list_placeholder' => 'Add custom lists to product',
|
|
|
- 'list_hint' => 'Please start each line with A and end with B<code><li></code> and end with <code></li></code>',
|
|
|
+ 'type_hint' => 'Plan affects account expiration, Package only deducts data, does not affect expiration',
|
|
|
+ 'period_hint' => 'Data allowance resets every N days for plans',
|
|
|
+ 'limit_num_hint' => 'Max number of purchases per user, 0 for unlimited',
|
|
|
+ 'available_date_hint' => 'Auto deduct data from total when due',
|
|
|
+ 'desc_placeholder' => 'Brief description',
|
|
|
+ 'list_placeholder' => 'Add custom content',
|
|
|
+ 'list_hint' => 'Start each line with <code><li></code> and end with <code></li></code>',
|
|
|
],
|
|
|
'status' => [
|
|
|
- 'yes' => 'Active',
|
|
|
- 'no' => 'Inactive',
|
|
|
+ 'yes' => 'On Sale',
|
|
|
+ 'no' => 'Off Sale',
|
|
|
],
|
|
|
- 'sell_and_used' => 'In Use/Sales',
|
|
|
- 'counts' => 'Total of <code>:num</code> products',
|
|
|
+ 'sell_and_used' => 'Used / Sold',
|
|
|
+ 'counts' => '<code>:num</code> goods total',
|
|
|
],
|
|
|
- 'sort_asc' => 'The larger the sort value, the higher the priority',
|
|
|
+ 'sort_asc' => 'Larger sort value has higher priority',
|
|
|
'yes' => 'Yes',
|
|
|
'no' => 'No',
|
|
|
'rule' => [
|
|
|
'type' => [
|
|
|
- 'reg' => 'Regular expression',
|
|
|
- 'domain' => 'Domain Name',
|
|
|
+ 'reg' => 'Regex',
|
|
|
+ 'domain' => 'Domain',
|
|
|
'ip' => 'IP',
|
|
|
'protocol' => 'Protocol',
|
|
|
],
|
|
|
- 'counts' => 'Total of <code>:num</code> audit rules',
|
|
|
+ 'counts' => '<code>:num</code> rules total',
|
|
|
'title' => 'Rules',
|
|
|
'group' => [
|
|
|
'type' => [
|
|
|
'off' => 'Block',
|
|
|
'on' => 'Allow',
|
|
|
],
|
|
|
- 'title' => 'Audit Group',
|
|
|
- 'counts' => 'Total of <code>:num</code> audit groups',
|
|
|
+ 'title' => 'Rule Groups',
|
|
|
+ 'counts' => '<code>:num</code> groups total',
|
|
|
],
|
|
|
],
|
|
|
'role' => [
|
|
|
- 'name_hint' => 'Unique identification name, ex: Administrator',
|
|
|
- 'description_hint' => 'Displays name, ex: Administrator',
|
|
|
- 'title' => 'Permission Roles',
|
|
|
+ 'name_hint' => 'Unique identifier, e.g. admin',
|
|
|
+ 'description_hint' => 'Display name, e.g. Administrator',
|
|
|
+ 'title' => 'Roles',
|
|
|
'permissions_all' => 'All Permissions',
|
|
|
- 'counts' => 'Total of <code>:num</code> permission roles',
|
|
|
+ 'counts' => '<code>:num</code> roles total',
|
|
|
],
|
|
|
'report' => [
|
|
|
- 'monthly_accounting' => 'Monthly Income',
|
|
|
- 'annually_accounting' => 'Annual Income',
|
|
|
- 'historic_accounting' => 'Historical Income',
|
|
|
- 'current_month' => 'Current month',
|
|
|
+ 'monthly_accounting' => 'Monthly Accounting',
|
|
|
+ 'annually_accounting' => 'Annual Accounting',
|
|
|
+ 'historic_accounting' => 'Historic Accounting',
|
|
|
+ 'current_month' => 'This Month',
|
|
|
'last_month' => 'Last Month',
|
|
|
- 'current_year' => 'Current year',
|
|
|
- 'last_year' => 'Last year',
|
|
|
- 'hourly_traffic' => 'Hourly data traffic',
|
|
|
- 'daily_traffic' => 'Daily data traffic',
|
|
|
+ 'current_year' => 'This Year',
|
|
|
+ 'last_year' => 'Last Year',
|
|
|
+ 'hourly_traffic' => 'Hourly Traffic',
|
|
|
+ 'daily_traffic' => 'Daily Traffic',
|
|
|
'today' => 'Today',
|
|
|
],
|
|
|
'permission' => [
|
|
|
'title' => 'Permissions',
|
|
|
- 'description_hint' => 'Description of permission, ex: [X system] Edit A',
|
|
|
- 'name_hint' => 'Fill in the route, ex: admin.permission.create,update',
|
|
|
- 'counts' => 'Total of <code>:num</code> permissions',
|
|
|
+ 'description_hint' => 'Description, e.g. [X system] Edit A',
|
|
|
+ 'name_hint' => 'Route name, e.g. admin.user.update',
|
|
|
+ 'counts' => '<code>:num</code> permissions total',
|
|
|
],
|
|
|
'marketing' => [
|
|
|
'email' => [
|
|
|
- 'title' => 'Marketing Emails',
|
|
|
- 'group_send' => 'Send Group Email',
|
|
|
- 'counts' => 'Total of <code>:num</code> emails',
|
|
|
+ 'title' => 'Email Marketing',
|
|
|
+ 'group_send' => 'Send Email',
|
|
|
+ 'counts' => '<code>:num</code> emails total',
|
|
|
],
|
|
|
- 'send_status' => 'Delivery Status',
|
|
|
- 'send_time' => 'Sending time',
|
|
|
+ 'send_status' => 'Send Status',
|
|
|
+ 'send_time' => 'Sent On',
|
|
|
'error_message' => 'Error Messages',
|
|
|
'push' => [
|
|
|
- 'title' => 'Marketing Push Messages',
|
|
|
- 'send' => 'Push Marketing Message',
|
|
|
- 'counts' => 'Total of <code>:num</code> push messages',
|
|
|
+ 'title' => 'Push Notifications',
|
|
|
+ 'send' => 'Send Notification',
|
|
|
+ 'counts' => '<code>:num</code> messages total',
|
|
|
],
|
|
|
],
|
|
|
'creating' => 'Adding...',
|
|
|
@@ -398,327 +399,327 @@ return [
|
|
|
'knowledge' => 'Article',
|
|
|
'announcement' => 'Announcement',
|
|
|
],
|
|
|
- 'category_hint' => 'Same category will be grouped under the same folder',
|
|
|
+ 'category_hint' => 'Same category will be grouped together',
|
|
|
'logo_hint' => 'Recommended size: 100x75',
|
|
|
'title' => 'Articles',
|
|
|
- 'counts' => 'Total of <code>:num</code> articles',
|
|
|
+ 'counts' => '<code>:num</code> articles total',
|
|
|
],
|
|
|
'coupon' => [
|
|
|
'title' => 'Coupons',
|
|
|
- 'name_hint' => 'For user-end display',
|
|
|
- 'sn_hint' => 'The code to use the coupon, leave it blank will generate 8-digit random code by default',
|
|
|
+ 'name_hint' => 'For display',
|
|
|
+ 'sn_hint' => 'Leave blank for 8-digit random code',
|
|
|
'type' => [
|
|
|
'voucher' => 'Voucher',
|
|
|
- 'discount' => 'Discount Coupon',
|
|
|
- 'charge' => 'Recharge Coupon',
|
|
|
+ 'discount' => 'Discount',
|
|
|
+ 'charge' => 'Recharge',
|
|
|
],
|
|
|
- 'type_hint' => 'Reduction: deduct the amount of the product; Discount: discount the percentage of the product; Recharge: add the amount to the user balance',
|
|
|
- 'value' => '{1} ➖ :num|{2} :num% discount |{3} ➕ :num',
|
|
|
+ 'type_hint' => 'Reduction: deduct amount; Discount: percentage off; Recharge: add amount to balance',
|
|
|
+ 'value' => '{1} ➖ :num|{2} :num% off|{3} ➕ :num',
|
|
|
'value_hint' => 'Range 1% ~ 99%',
|
|
|
- 'priority_hint' => 'While Coupons have the same [Coupon Code], Eligible and highest priority coupon will be used first. The maximum is 255',
|
|
|
- 'minimum_hint' => 'Coupon can only be used when the payment amount exceeds <strong>:num</strong>',
|
|
|
- 'used_hint' => 'Eligible users may use this coupon no more than <strong>:num</strong> times',
|
|
|
- 'levels_hint' => 'Coupon can only be used if the user is within the selected levels',
|
|
|
- 'groups_hint' => 'Coupon can only be used by selected user groups',
|
|
|
- 'users_placeholder' => 'Enter the user ID, then press enter',
|
|
|
- 'user_whitelist_hint' => 'Involved users are allowed to use this coupon, leave blank for not using this condition',
|
|
|
- 'users_blacklist_hint' => 'Involved users are not allowed to use this coupon, leave blank for not using this condition',
|
|
|
- 'services_placeholder' => 'Enter the product ID, then press enter',
|
|
|
- 'services_whitelist_hint' => 'Coupon can only be used for products in this list, leave blank for not using this condition',
|
|
|
- 'services_blacklist_hint' => 'Coupon cannot be used for products in this list, leave blank for not using this condition',
|
|
|
+ 'priority_hint' => 'Highest eligible priority coupon used first. Max 255',
|
|
|
+ 'minimum_hint' => 'Only usable when payment exceeds <strong>:num</strong>',
|
|
|
+ 'used_hint' => 'Each user can use this <strong>:num</strong> times max',
|
|
|
+ 'levels_hint' => 'Only usable for selected user levels',
|
|
|
+ 'groups_hint' => 'Only usable for selected user groups',
|
|
|
+ 'users_placeholder' => 'Enter user ID, press Enter',
|
|
|
+ 'user_whitelist_hint' => 'Whitelisted users can use, leave blank if unused',
|
|
|
+ 'users_blacklist_hint' => 'Blacklisted users cannot use, leave blank if unused',
|
|
|
+ 'services_placeholder' => 'Enter product ID, press Enter',
|
|
|
+ 'services_whitelist_hint' => 'Only usable for whitelisted products, leave blank if unused',
|
|
|
+ 'services_blacklist_hint' => 'Not usable for blacklisted products, leave blank if unused',
|
|
|
'newbie' => [
|
|
|
- 'first_discount' => 'First time using any coupon',
|
|
|
+ 'first_discount' => 'First-time Discount',
|
|
|
'first_order' => 'First Order',
|
|
|
- 'created_days' => 'Create Account',
|
|
|
+ 'created_days' => 'Account Age',
|
|
|
],
|
|
|
- 'created_days_hint' => '<code>:day</code> days of account creation',
|
|
|
- 'limit_hint' => 'The rules of this restriction are <strong>and</strong> relation, please use them properly',
|
|
|
- 'info_title' => 'Coupon Information',
|
|
|
- 'counts' => 'Total of <code>:num</code> coupons',
|
|
|
+ 'created_days_hint' => '<code>:day</code> days after registration',
|
|
|
+ 'limit_hint' => 'Rules have <strong>AND</strong> relation, use properly',
|
|
|
+ 'info_title' => 'Info',
|
|
|
+ 'counts' => '<code>:num</code> coupons total',
|
|
|
'discount' => 'Discount',
|
|
|
- 'export_title' => 'Coupon Export',
|
|
|
- 'single_use' => 'One-time',
|
|
|
+ 'export_title' => 'Export',
|
|
|
+ 'single_use' => 'One-time Use',
|
|
|
],
|
|
|
'times' => 'Times',
|
|
|
'massive_export' => 'Batch Export',
|
|
|
'system_generate' => 'System Generated',
|
|
|
'aff' => [
|
|
|
- 'rebate_title' => 'Referral Rebate History',
|
|
|
- 'counts' => 'Total of <code>:num</code> applications',
|
|
|
- 'title' => 'Withdrawal Requests',
|
|
|
- 'apply_counts' => 'Total of <code>:num</code> requests',
|
|
|
- 'referral' => 'Promotional Rebates',
|
|
|
- 'commission_title' => 'Withdrawal Request Details',
|
|
|
- 'commission_counts' => 'This application involves <code>:num</code> orders',
|
|
|
+ 'rebate_title' => 'Rebate History',
|
|
|
+ 'counts' => '<code>:num</code> rebates total',
|
|
|
+ 'title' => 'Withdraw Requests',
|
|
|
+ 'apply_counts' => '<code>:num</code> requests total',
|
|
|
+ 'referral' => 'Referral Rebates',
|
|
|
+ 'commission_title' => 'Request Details',
|
|
|
+ 'commission_counts' => 'Involves <code>:num</code> orders',
|
|
|
],
|
|
|
'setting' => [
|
|
|
'common' => [
|
|
|
- 'title' => 'General Configuration',
|
|
|
- 'set_default' => 'Set as default',
|
|
|
- 'connect_nodes' => 'Number of associated nodes',
|
|
|
+ 'title' => 'General Config',
|
|
|
+ 'set_default' => 'Set as Default',
|
|
|
+ 'connect_nodes' => '# of Nodes',
|
|
|
],
|
|
|
'email' => [
|
|
|
- 'title' => 'Email Suffix Filters <small> used to limit the emails used for registration</small>',
|
|
|
+ 'title' => 'Email Filters <small>(for registration)</small>',
|
|
|
'tail' => 'Email Suffix',
|
|
|
'rule' => 'Restriction Type',
|
|
|
'black' => 'Blacklist',
|
|
|
'white' => 'Whitelist',
|
|
|
- 'tail_placeholder' => 'Please fill in the email suffix',
|
|
|
+ 'tail_placeholder' => 'Enter email suffix',
|
|
|
],
|
|
|
'system' => [
|
|
|
'title' => 'System Settings',
|
|
|
- 'web' => 'Website',
|
|
|
+ 'web' => 'General',
|
|
|
'account' => 'Account',
|
|
|
'node' => 'Node',
|
|
|
'extend' => 'Advanced',
|
|
|
'check_in' => 'Check-in',
|
|
|
- 'promotion' => 'Promotion',
|
|
|
+ 'promotion' => 'Affiliate',
|
|
|
'notify' => 'Notification',
|
|
|
'auto_job' => 'Automation',
|
|
|
- 'other' => 'LOGO|Customer Service|Statistics',
|
|
|
- 'payment' => 'Payment Gateway',
|
|
|
+ 'other' => 'Logo|CS|Analytics',
|
|
|
+ 'payment' => 'Payment',
|
|
|
'menu' => 'Menu',
|
|
|
],
|
|
|
- 'no_permission' => 'You have no permission to change the setting!',
|
|
|
+ 'no_permission' => 'No permission to change settings!',
|
|
|
],
|
|
|
'system' => [
|
|
|
- 'account_expire_notification' => 'Account Expiration Notification',
|
|
|
- 'active_times' => 'Number of activation of account',
|
|
|
- 'admin_invite_days' => '[Admin] Expiration days of invitation code',
|
|
|
- 'aff_salt' => '[Invitation URL] Encrypt User Information',
|
|
|
- 'alipay_qrcode' => 'Alipay QrCode',
|
|
|
+ 'account_expire_notification' => 'Account Expiration Notice',
|
|
|
+ 'active_times' => 'Max Account Activations',
|
|
|
+ 'admin_invite_days' => '[Admin] Invitation Expiration',
|
|
|
+ 'aff_salt' => '[Referral URL] Encrypt User ID',
|
|
|
+ 'alipay_qrcode' => 'Alipay QR Code',
|
|
|
'AppStore_id' => '[Apple] Account',
|
|
|
'AppStore_password' => '[Apple] Password',
|
|
|
'auto_release_port' => 'Port Recycle',
|
|
|
- 'bark_key' => '[Bark] Device Token',
|
|
|
+ 'bark_key' => '[Bark] Device Key',
|
|
|
'captcha_key' => 'Captcha Key',
|
|
|
'captcha_secret' => 'Captcha Secret/ID',
|
|
|
'codepay_id' => '[CodePay] ID',
|
|
|
'codepay_key' => '[CodePay] Key',
|
|
|
'codepay_url' => '[CodePay] URL',
|
|
|
- 'data_anomaly_notification' => 'Data Abnormal Notification',
|
|
|
- 'data_exhaust_notification' => 'Data Exhaustion Notification',
|
|
|
- 'ddns_key' => '[DNS Provider] Key',
|
|
|
- 'ddns_mode' => 'DNS Provider',
|
|
|
- 'ddns_secret' => '[DNS Provider] Secret',
|
|
|
- 'default_days' => 'Account Initial Time',
|
|
|
- 'default_traffic' => 'Initial Data Traffic',
|
|
|
- 'detection_check_times' => 'Node Network Detection Alert',
|
|
|
- 'dingTalk_access_token' => '[DingTalk Robot] Access Token',
|
|
|
- 'dingTalk_secret' => '[DingTalk Robot] Secret',
|
|
|
+ 'data_anomaly_notification' => 'Data Anomaly Notice',
|
|
|
+ 'data_exhaust_notification' => 'Data Exhaustion Notice',
|
|
|
+ 'ddns_key' => '[DNS] Key',
|
|
|
+ 'ddns_mode' => 'DNS Sync',
|
|
|
+ 'ddns_secret' => '[DNS] Secret',
|
|
|
+ 'default_days' => 'Default Account Time',
|
|
|
+ 'default_traffic' => 'Default Initial Data',
|
|
|
+ 'detection_check_times' => 'Node Block Alerts',
|
|
|
+ 'dingTalk_access_token' => '[DingTalk] Access Token',
|
|
|
+ 'dingTalk_secret' => '[DingTalk] Secret',
|
|
|
'epay_key' => '[ePay] Key',
|
|
|
'epay_mch_id' => '[ePay] Merchant ID',
|
|
|
'epay_url' => '[ePay] URL',
|
|
|
- 'expire_days' => 'Expiration Warning Threshold',
|
|
|
+ 'expire_days' => 'Expiration Warning',
|
|
|
'f2fpay_app_id' => '[Alipay] APP ID',
|
|
|
'f2fpay_private_key' => '[Alipay] Private Key',
|
|
|
'f2fpay_public_key' => '[Alipay] Public Key',
|
|
|
- 'forbid_mode' => 'Access Prohibited',
|
|
|
- 'invite_num' => 'Number of invitations can be generated',
|
|
|
+ 'forbid_mode' => 'Access Restriction',
|
|
|
+ 'invite_num' => 'Default Invitations',
|
|
|
'is_activate_account' => 'Account Activation',
|
|
|
- 'is_AliPay' => 'Alipay Gateway',
|
|
|
+ 'is_AliPay' => 'Alipay',
|
|
|
'is_ban_status' => 'Expiration Ban',
|
|
|
'is_captcha' => 'Captcha',
|
|
|
'is_checkin' => 'Check-in Reward',
|
|
|
'is_clear_log' => 'Clean Logs',
|
|
|
'is_custom_subscribe' => 'Advanced Subscription',
|
|
|
'is_email_filtering' => 'Email Filtering',
|
|
|
- 'is_forbid_robot' => 'Forbid Bots Access',
|
|
|
- 'is_free_code' => 'Free Invitation Code',
|
|
|
- 'is_invite_register' => 'Invitation to Register',
|
|
|
- 'is_otherPay' => 'Special Gateway',
|
|
|
- 'is_QQPay' => 'QQ Wallet Gateway',
|
|
|
- 'is_rand_port' => 'Random Ports',
|
|
|
+ 'is_forbid_robot' => 'Forbid Bots',
|
|
|
+ 'is_free_code' => 'Free Invitation Codes',
|
|
|
+ 'is_invite_register' => 'Invitation Registration',
|
|
|
+ 'is_otherPay' => 'Custom Payment',
|
|
|
+ 'is_QQPay' => 'QQ Pay',
|
|
|
+ 'is_rand_port' => 'Random Port',
|
|
|
'is_register' => 'Registration',
|
|
|
- 'is_subscribe_ban' => 'Subscription Abnormal Ban',
|
|
|
- 'is_traffic_ban' => 'Abnormal Data Use Ban',
|
|
|
- 'is_WeChatPay' => 'WeChat Pay Gateway',
|
|
|
+ 'is_subscribe_ban' => 'Subscription Ban',
|
|
|
+ 'is_traffic_ban' => 'Data Abuse Ban',
|
|
|
+ 'is_WeChatPay' => 'WeChat Pay',
|
|
|
'iYuu_token' => '[IYUU] Token',
|
|
|
- 'maintenance_content' => 'Maintenance Announcement',
|
|
|
+ 'maintenance_content' => 'Maintenance Notice',
|
|
|
'maintenance_mode' => 'Maintenance Mode',
|
|
|
- 'maintenance_time' => 'Maintenance End Time',
|
|
|
+ 'maintenance_time' => 'Maintenance End',
|
|
|
'min_port' => 'Port Range',
|
|
|
'min_rand_traffic' => 'Data Range',
|
|
|
- 'node_blocked_notification' => 'Node Blocked Alert',
|
|
|
- 'node_daily_notification' => 'Node Data Usage Daily Report',
|
|
|
- 'node_offline_notification' => 'Node Offline Notification',
|
|
|
+ 'node_blocked_notification' => 'Node Blocked Notice',
|
|
|
+ 'node_daily_notification' => 'Daily Node Report',
|
|
|
+ 'node_offline_notification' => 'Node Offline Notice',
|
|
|
'oauth_path' => 'OAuth Platforms',
|
|
|
- 'offline_check_times' => 'Number of Offline Notification',
|
|
|
- 'password_reset_notification' => 'Reset Password Notification',
|
|
|
+ 'offline_check_times' => 'Offline Notifications',
|
|
|
+ 'password_reset_notification' => 'Reset Password Notice',
|
|
|
'paybeaver_app_id' => '[PayBeaver] App ID',
|
|
|
'paybeaver_app_secret' => '[PayBeaver] App Secret',
|
|
|
'payjs_key' => '[PayJs] Key',
|
|
|
'payjs_mch_id' => '[PayJs] Merchant ID',
|
|
|
- 'payment_confirm_notification' => 'Manual Pay Payment Confirmation',
|
|
|
- 'payment_received_notification' => 'Successful Payment Notification',
|
|
|
+ 'payment_confirm_notification' => 'Manual Payment Confirmation',
|
|
|
+ 'payment_received_notification' => 'Payment Success Notice',
|
|
|
'paypal_app_id' => 'App ID',
|
|
|
'paypal_client_id' => 'Client ID',
|
|
|
- 'paypal_client_secret' => 'Client Secret Key',
|
|
|
+ 'paypal_client_secret' => 'Client Secret',
|
|
|
'pushDeer_key' => '[PushDeer] Key',
|
|
|
'pushplus_token' => '[PushPlus] Token',
|
|
|
'rand_subscribe' => 'Random Subscription',
|
|
|
'redirect_url' => 'Redirect URL',
|
|
|
- 'referral_money' => 'Minimum Withdrawal Limit',
|
|
|
- 'referral_percent' => 'Rebate Rate',
|
|
|
- 'referral_status' => 'Promotion',
|
|
|
- 'referral_traffic' => 'Registration Bonus Data Traffic',
|
|
|
- 'referral_type' => 'Rebate Mode',
|
|
|
- 'register_ip_limit' => 'Same IP Registration Restriction',
|
|
|
- 'reset_password_times' => 'Password Reset Limitation',
|
|
|
- 'reset_traffic' => 'Data Traffic Reset',
|
|
|
+ 'referral_money' => 'Min Withdrawal Limit',
|
|
|
+ 'referral_percent' => 'Rebate Percentage',
|
|
|
+ 'referral_status' => 'Affiliate',
|
|
|
+ 'referral_traffic' => 'Registration Bonus',
|
|
|
+ 'referral_type' => 'Rebate Type',
|
|
|
+ 'register_ip_limit' => 'Registration IP Limit',
|
|
|
+ 'reset_password_times' => 'Reset Limit',
|
|
|
+ 'reset_traffic' => 'Auto Reset Data',
|
|
|
'server_chan_key' => '[ServerChan] SCKEY',
|
|
|
'standard_currency' => 'Primary Currency',
|
|
|
'stripe_public_key' => 'Public Key',
|
|
|
'stripe_secret_key' => 'Secret Key',
|
|
|
- 'stripe_signing_secret' => 'WebHook Signing secret',
|
|
|
+ 'stripe_signing_secret' => 'Webhook Secret',
|
|
|
'subject_name' => 'Custom Product Name',
|
|
|
- 'subscribe_ban_times' => 'Subscription Request Threshold',
|
|
|
- 'subscribe_domain' => 'Service Subscription URL',
|
|
|
- 'subscribe_max' => 'Maximum number of subscription nodes',
|
|
|
+ 'subscribe_ban_times' => 'Subscription Limit',
|
|
|
+ 'subscribe_domain' => 'Subscription URL',
|
|
|
+ 'subscribe_max' => 'Max Subscription Nodes',
|
|
|
'telegram_token' => 'Telegram Token',
|
|
|
'tg_chat_token' => 'TG Chat Token',
|
|
|
- 'theadpay_key' => '[THeadpay] Key',
|
|
|
- 'theadpay_mchid' => '[THeadpay] Merchant ID',
|
|
|
- 'theadpay_url' => '[THeadpay] URL',
|
|
|
- 'ticket_closed_notification' => 'Ticket Closure Notification',
|
|
|
- 'ticket_created_notification' => 'Ticket Creation Notification',
|
|
|
- 'ticket_replied_notification' => 'Ticket Response Notification',
|
|
|
- 'traffic_ban_time' => 'Ban Time',
|
|
|
- 'traffic_ban_value' => 'Data Abnormal Threshold',
|
|
|
- 'traffic_limit_time' => 'Time Interval',
|
|
|
- 'traffic_warning_percent' => 'Low Data Traffic Threshold',
|
|
|
- 'trojan_license' => 'Trojan Backend License',
|
|
|
+ 'theadpay_key' => '[THeadPay] Key',
|
|
|
+ 'theadpay_mchid' => '[THeadPay] Merchant ID',
|
|
|
+ 'theadpay_url' => '[THeadPay] URL',
|
|
|
+ 'ticket_closed_notification' => 'Ticket Closed Notice',
|
|
|
+ 'ticket_created_notification' => 'Ticket Creation Notice',
|
|
|
+ 'ticket_replied_notification' => 'Ticket Reply Notice',
|
|
|
+ 'traffic_ban_time' => 'Ban Duration',
|
|
|
+ 'traffic_ban_value' => 'Data Abuse Threshold',
|
|
|
+ 'traffic_limit_time' => 'Check-in Interval',
|
|
|
+ 'traffic_warning_percent' => 'Data Usage Warning',
|
|
|
+ 'trojan_license' => 'Trojan License',
|
|
|
'username_type' => 'Account Username Type',
|
|
|
- 'user_invite_days' => '[User] Expiration days of invitation code',
|
|
|
- 'v2ray_license' => 'V2Ray Backend License',
|
|
|
- 'v2ray_tls_provider' => 'V2Ray TLS Configuration',
|
|
|
- 'webmaster_email' => 'Administrator Email',
|
|
|
- 'website_analytics' => 'Statistics Code',
|
|
|
+ 'user_invite_days' => '[User] Invitation Expiry',
|
|
|
+ 'v2ray_license' => 'V2Ray License',
|
|
|
+ 'v2ray_tls_provider' => 'V2Ray TLS Config',
|
|
|
+ 'webmaster_email' => 'Admin Email',
|
|
|
+ 'website_analytics' => 'Analytics Code',
|
|
|
'website_callback_url' => 'Payment Callback Domain',
|
|
|
- 'website_customer_service' => 'Customer Service Code',
|
|
|
+ 'website_customer_service' => 'CS Code',
|
|
|
'website_home_logo' => 'Homepage Logo',
|
|
|
- 'website_logo' => 'Site Logo',
|
|
|
+ 'website_logo' => 'Inner Page Logo',
|
|
|
'website_name' => 'Site Name',
|
|
|
- 'website_security_code' => 'Site Security Code',
|
|
|
- 'website_url' => 'Site Domain Address',
|
|
|
- 'web_api_url' => 'Authorization/Backend Access Domain',
|
|
|
- 'wechat_aid' => 'Enterprise WeChat AID',
|
|
|
- 'wechat_cid' => 'Enterprise WeChat CID',
|
|
|
- 'wechat_encodingAESKey' => 'Enterprise WeChat Encoding AESKey',
|
|
|
- 'wechat_qrcode' => 'WeChat QrCode',
|
|
|
- 'wechat_secret' => 'Enterprise WeChat Secret',
|
|
|
- 'wechat_token' => 'Enterprise WeChat Token',
|
|
|
+ 'website_security_code' => 'Security Code',
|
|
|
+ 'website_url' => 'Site Domain',
|
|
|
+ 'web_api_url' => 'API Domain',
|
|
|
+ 'wechat_aid' => 'WeChat AID',
|
|
|
+ 'wechat_cid' => 'WeChat CID',
|
|
|
+ 'wechat_encodingAESKey' => 'WeChat Encoding Key',
|
|
|
+ 'wechat_qrcode' => 'WeChat QR Code',
|
|
|
+ 'wechat_secret' => 'WeChat Secret',
|
|
|
+ 'wechat_token' => 'WeChat Token',
|
|
|
'hint' => [
|
|
|
- 'account_expire_notification' => 'Notify users that their accounts are about to expire',
|
|
|
- 'active_times' => 'The number of times a user can activate an account via email within 1 day',
|
|
|
- 'admin_invite_days' => 'Expiration date of the invitation code generated by the administrator',
|
|
|
- 'aff_salt' => 'If left blank, the invitation link will use user ID; Filling in any letters/numbers as key to encrypt user ID',
|
|
|
- 'AppStore_id' => 'Apple account that can be used in the articles',
|
|
|
- 'AppStore_password' => 'Apple password that can be used in the articles',
|
|
|
- 'auto_release_port' => 'Ports for accounts that have been banned/expired for <code>'.config('tasks.release_port').'</code> days will be released',
|
|
|
- 'bark_key' => 'Push messages to iOS devices. You need to install Bark on your iPhone first, then take the long string after [api.day.app]. Be sure to fill in this value before enable Bark',
|
|
|
- 'captcha_key' => 'Browse <a href="https://proxypanel.gitbook.io/wiki/captcha" target="_blank">Setup Guide</a> to set up',
|
|
|
- 'data_anomaly_notification' => 'User hourly traffic exceeding data abnormal threshold notifies admin',
|
|
|
- 'data_exhaust_notification' => 'Notify users that their data is about to run out',
|
|
|
- 'ddns_key' => "Browse <a href='https://proxypanel.gitbook.io/wiki/ddns' target='_blank'>Setup Guide</a> to set up",
|
|
|
- 'ddns_mode' => 'Sync nodes\' domain and IP setting to DNS Provider',
|
|
|
- 'default_days' => 'Default expiration date for new registered accounts. 0 means same day expiration',
|
|
|
- 'default_traffic' => 'Default available data traffic for new registered accounts',
|
|
|
- 'detection_check_times' => 'Automatically offline node after N reminders. 0/empty mean do not offline node, Max 12',
|
|
|
- 'dingTalk_access_token' => 'Browse <a href=https://open.dingtalk.com/document/group/custom-robot-access#title-jfe-yo9-jl2 target=_blank>DingTalk Handbook</a> to see the set-up steps',
|
|
|
- 'dingTalk_secret' => 'Optional, unless DingTalk bot\'s [加签] function is selected!',
|
|
|
- 'expire_days' => '[Account Expiry Notice] Starting Threshold, notify users daily',
|
|
|
- 'f2fpay_app_id' => 'Alipay\'s APPID',
|
|
|
- 'f2fpay_private_key' => 'App Private key generated by the official secret key software',
|
|
|
- 'f2fpay_public_key' => 'Note that it is not the APP public key!',
|
|
|
- 'forbid_mode' => 'Blocking the corresponding area based on IP, non-blocked areas can be accessed normally',
|
|
|
- 'invite_num' => 'Number of invitation codes a user can generate by default',
|
|
|
- 'is_activate_account' => 'Once enabled, users need to activate their accounts via email',
|
|
|
- 'is_ban_status' => '(Caution!) Blocking the entire account will reset all data on the account and prevent users from logging in. Deactivate this to disable the user agent only.',
|
|
|
- 'is_captcha' => 'If enabled, Captcha will be required for login/registration action',
|
|
|
- 'is_checkin' => 'Random traffic will be awarded according to the traffic range when user check-in',
|
|
|
- 'is_clear_log' => '(Recommended) Automatically clean useless/outdated logs when enabled',
|
|
|
- 'is_custom_subscribe' => 'When enabled, the top of the subscription list will show the account expiration date, the amount of traffic left (only some clients are supported)',
|
|
|
- 'is_email_filtering' => 'Blacklist: users can use any email outside the blacklist to register; Whitelist: users can only use supported email in the white list to register',
|
|
|
- 'is_forbid_robot' => 'Bots, Crawlers, or Proxies access, Panel will throw a 404 error',
|
|
|
- 'is_free_code' => 'Free invitation code will not be visible if disabled',
|
|
|
- 'is_rand_port' => 'Randomly get ports when users register/add users',
|
|
|
- 'is_register' => 'Cannot register if disabled',
|
|
|
- 'is_subscribe_ban' => 'When enabled, subscription link will be blocked when user requests via subscription link exceed the set threshold',
|
|
|
- 'is_traffic_ban' => 'If the user\'s data usage exceeds the data abnormal threshold within 1 hour, Use\'s service will be disabled for fixed amount of time',
|
|
|
- 'iYuu_token' => 'Before enabling IYUU, Please make sure to fill in token that (<a href=https://iyuu.cn target=_blank>apply from IYUU</a>)',
|
|
|
- 'maintenance_content' => 'Customized maintenance announcement content',
|
|
|
- 'maintenance_mode' => "When enabled, user access will redirect to maintenance page| For Admin access using <a href='javascript:(0)'>:url</a>",
|
|
|
- 'maintenance_time' => 'For maintenance interface countdown',
|
|
|
- 'min_port' => 'Port range: 1000 ~ 65535',
|
|
|
- 'node_blocked_notification' => 'Detects node network connectivity hourly and alerts administrators when there is a situation',
|
|
|
- 'node_daily_notification' => 'Report traffic consumption data per node',
|
|
|
- 'node_offline_notification' => 'Detects nodes offline every 10 minutes and alerts administrator when any of them is offline',
|
|
|
- 'oauth_path' => 'Please add settings in .ENV, before using any of platforms',
|
|
|
- 'offline_check_times' => 'Stop alerts after N alerts within 24 hours',
|
|
|
- 'password_reset_notification' => 'Users can reset their passwords, if enabled',
|
|
|
+ 'account_expire_notification' => 'Notify expiration',
|
|
|
+ 'active_times' => 'Via email in 24 hours',
|
|
|
+ 'admin_invite_days' => 'Admin invitation expiration',
|
|
|
+ 'aff_salt' => 'Encryption salt for referral URL',
|
|
|
+ 'AppStore_id' => 'Used in articles',
|
|
|
+ 'AppStore_password' => 'Used in articles',
|
|
|
+ 'auto_release_port' => 'Auto release port after being banned/expired for <code>'.config('tasks.release_port').'</code> days',
|
|
|
+ 'bark_key' => 'Device key for iOS push',
|
|
|
+ 'captcha_key' => 'Browse <a href="https://proxypanel.gitbook.io/wiki/captcha" target="_blank">setup guide</a>',
|
|
|
+ 'data_anomaly_notification' => 'Notify admin when hourly data exceeds threshold',
|
|
|
+ 'data_exhaust_notification' => 'Notify when data is running out',
|
|
|
+ 'ddns_key' => "Browse <a href='https://proxypanel.gitbook.io/wiki/ddns' target='_blank'>setup guide</a>",
|
|
|
+ 'ddns_mode' => 'Sync domain & IP changes to DNS provider',
|
|
|
+ 'default_days' => 'Default expiration for new accounts, 0 means expire today',
|
|
|
+ 'default_traffic' => 'Default data for new accounts',
|
|
|
+ 'detection_check_times' => 'Auto offline node after N alerts, 0 for unlimited, max 12',
|
|
|
+ 'dingTalk_access_token' => 'Custom bot <a href=https://open.dingtalk.com/document/group/custom-robot-access#title-jfe-yo9-jl2 target=_blank>access token</a>',
|
|
|
+ 'dingTalk_secret' => 'Custom bot secret when enabled sign',
|
|
|
+ 'expire_days' => 'Start account expiration notice',
|
|
|
+ 'f2fpay_app_id' => 'Alipay APPID',
|
|
|
+ 'f2fpay_private_key' => 'Alipay private key from secret key tool',
|
|
|
+ 'f2fpay_public_key' => 'Not the APP public key!',
|
|
|
+ 'forbid_mode' => 'Block access from specified regions',
|
|
|
+ 'invite_num' => 'Default invitations per user',
|
|
|
+ 'is_activate_account' => 'Require activation via email',
|
|
|
+ 'is_ban_status' => '(Caution) Ban account will reset all user data',
|
|
|
+ 'is_captcha' => 'Require captcha to login/register if enabled',
|
|
|
+ 'is_checkin' => 'Random reward when check-in',
|
|
|
+ 'is_clear_log' => '(Recommended) Auto clean useless/outdated logs when enabled',
|
|
|
+ 'is_custom_subscribe' => 'Show expiration & data left on subscription list when enabled',
|
|
|
+ 'is_email_filtering' => 'Blacklist: any other emails; Whitelist: only allowed emails',
|
|
|
+ 'is_forbid_robot' => 'Return 404 error if accessed by bots/proxies',
|
|
|
+ 'is_free_code' => 'Hide free invite codes if disabled',
|
|
|
+ 'is_rand_port' => 'Random port when add/register user',
|
|
|
+ 'is_register' => 'Disable registration if unchecked',
|
|
|
+ 'is_subscribe_ban' => 'Auto ban if subscription requests exceed threshold',
|
|
|
+ 'is_traffic_ban' => 'Auto disable service if data exceeds threshold in 1 hour',
|
|
|
+ 'iYuu_token' => 'Fill <a href=https://iyuu.cn target=_blank>IYUU token</a> before enabling',
|
|
|
+ 'maintenance_content' => 'Custom maintenance announcement',
|
|
|
+ 'maintenance_mode' => "Redirect normal users to maintenance page if enabled| Admin can login via <a href='javascript:(0)'>:url</a>",
|
|
|
+ 'maintenance_time' => 'For maintenance page countdown',
|
|
|
+ 'min_port' => 'Port range 1000 - 65535',
|
|
|
+ 'node_blocked_notification' => 'Detect node block hourly, notify admins',
|
|
|
+ 'node_daily_notification' => 'Daily node usage report',
|
|
|
+ 'node_offline_notification' => 'Detect offline every 10 mins, notify if any node is offline',
|
|
|
+ 'oauth_path' => 'Please enable platforms in .ENV first',
|
|
|
+ 'offline_check_times' => 'Stop notification after N alerts in 24 hours',
|
|
|
+ 'password_reset_notification' => 'Allow password reset via email if enabled',
|
|
|
'paybeaver_app_id' => '<a href="https://merchant.paybeaver.com/" target="_blank">Merchant Center</a> -> Developer -> App ID',
|
|
|
'paybeaver_app_secret' => '<a href="https://merchant.paybeaver.com/" target="_blank">Merchant Center</a> -> Developer -> App Secret',
|
|
|
- 'payjs_mch_id' => 'Get configs from <a href="https://payjs.cn/dashboard/member" target="_blank">Member page</a>',
|
|
|
- 'payment_confirm_notification' => 'Users notify administrators to process orders that using Manual Pay',
|
|
|
- 'payment_received_notification' => 'Prompt the user with the latest status of the order',
|
|
|
- 'pushDeer_key' => 'Before enabling PushDeer, make sure to fill <a href=https://www.pushdeer.com/official.html target=_blank>Push Key</a>',
|
|
|
- 'pushplus_token' => 'Before enabling PushPlus, make sure to fill <a href=https://www.pushplus.plus/push1.html target=_blank>Token</a>',
|
|
|
- 'rand_subscribe' => 'When enabled, the system returns the node list randomly, otherwise, it will be available based on Node list order',
|
|
|
- 'redirect_url' => 'When an audit rule is triggered, blocked access requests are redirected to this address',
|
|
|
- 'referral_money' => 'The minimum amount that can be requested for withdrawal',
|
|
|
- 'referral_percent' => 'According to the account registered by the promotion link, the percentage of share that the inviter can get from each order',
|
|
|
- 'referral_status' => 'Not visible to users after closing, but does not affect the normal invitation rebate function',
|
|
|
- 'referral_traffic' => 'Free data traffic after registration with promotion link/invitation code',
|
|
|
- 'referral_type' => 'After switching modes the old data remains unchanged and the new rebate is calculated according to the new mode',
|
|
|
- 'register_ip_limit' => 'The number of registration requests allowed to be requested from the same IP within 24 hours. No limit for 0/empty',
|
|
|
- 'reset_password_times' => 'The number of times users can reset their passwords via email within 24 hours',
|
|
|
- 'reset_traffic' => 'Users reset their available data traffic according to the reset cycle of their purchased plan',
|
|
|
- 'server_chan_key' => 'Before enabling ServerChan, please fill in <a href=https://sc.ftqq.com target=_blank>SCKEY</a>',
|
|
|
- 'standard_currency' => 'For displaying product title in payment gateways',
|
|
|
- 'subject_name' => 'Display product title for payment channel',
|
|
|
- 'subscribe_ban_times' => 'Limit of subscription requests a user can send within 24 hours',
|
|
|
- 'subscribe_domain' => '(recommended) Prevent Main Domain abnormality, resulting in failure to subscribe properly start with [http:// or https://]',
|
|
|
- 'subscribe_max' => 'The number of nodes when the client subscribes, and return all nodes when 0/left blank',
|
|
|
- 'telegram_token' => 'Find <a href=https://t.me/BotFather target=_blank>@BotFather</a> to apply for robot\'s TOKEN',
|
|
|
- 'tg_chat_token' => 'Before enabling TG Chat, please fill in <a href=https://t.me/realtgchat_bot target=_blank> applied Token</a>',
|
|
|
- 'ticket_closed_notification' => 'Notify user when ticket closed',
|
|
|
- 'ticket_created_notification' => 'New ticket notification to manager/user, depending on who created the new ticket.',
|
|
|
- 'ticket_replied_notification' => 'Ticket reply notification to the other party',
|
|
|
- 'traffic_ban_time' => 'Any exception that causes the user/subscription to be banned for a period of time, automatically unban after expiration.',
|
|
|
- 'traffic_ban_value' => 'If it exceeds this value within 1 hour, it will trigger automatic account ban',
|
|
|
- 'traffic_limit_time' => 'Check-in Interval',
|
|
|
- 'traffic_warning_percent' => '[Traffic Exhaustion Notification] Start threshold, notify users daily',
|
|
|
- 'username_type' => 'Standardize the type of site user account, default is email address',
|
|
|
- 'user_invite_days' => 'Expiration date of user-generated invitations',
|
|
|
- 'v2ray_tls_provider' => 'For back-end auto-issue/loading of TLS certificates (Node\'s setting have higher priority than here)',
|
|
|
- 'webmaster_email' => 'Some error messages will provide the administrator\'s email as the contact information',
|
|
|
- 'website_analytics' => 'Statistics JavaScript',
|
|
|
- 'website_callback_url' => 'Prevent payment callback from being backsliding due to a DNS poisoning of main domain, start with http:// or https://',
|
|
|
- 'website_customer_service' => 'Customer Service JavaScript',
|
|
|
- 'website_name' => 'Show on email and etc.',
|
|
|
- 'website_security_code' => 'When not empty, must be accessed via <a href=":url" target="_blank">Secure Portal</a> to access the website',
|
|
|
- 'website_url' => 'Main domain that this panel will be using for everything links related as default',
|
|
|
- 'web_api_url' => 'For example: '.config('app.url'),
|
|
|
- 'wechat_aid' => 'Create an app in <a href=https://work.weixin.qq.com/wework_admin/frame#apps arget=_blank>app management page</a>, get AgentId',
|
|
|
- 'wechat_cid' => 'Get the CID in<a href=https://work.weixin.qq.com/wework_admin/frame#profile target=_blank>My Enterprise page</a>',
|
|
|
- 'wechat_encodingAESKey' => 'App Management ⇒ Application ⇒ Set API ⇒ EncodingAESKey',
|
|
|
- 'wechat_secret' => 'App Secret (may need to download enterprise WeChat to be able view it)',
|
|
|
- 'wechat_token' => 'App Management -> Application -> Set API -> TOKEN, URL set to :url',
|
|
|
+ 'payjs_mch_id' => 'Get from <a href="https://payjs.cn/dashboard/member" target="_blank">member page</a>',
|
|
|
+ 'payment_confirm_notification' => 'Notify admin to process manual payment orders',
|
|
|
+ 'payment_received_notification' => 'Notify user when payment received',
|
|
|
+ 'pushDeer_key' => 'Fill <a href=https://www.pushdeer.com/official.html target=_blank>PushDeer Push Key</a> before enabling',
|
|
|
+ 'pushplus_token' => 'Fill <a href=https://www.pushplus.plus/push1.html target=_blank>PushPlus Token</a> before enabling',
|
|
|
+ 'rand_subscribe' => 'Random order if enabled, otherwise by node list order',
|
|
|
+ 'redirect_url' => 'Redirect blocked requests to this URL when rules triggered',
|
|
|
+ 'referral_money' => 'The minimum amount that can be withdrawn',
|
|
|
+ 'referral_percent' => 'The percentage of order amount the referrer gets',
|
|
|
+ 'referral_status' => 'Close referral system without affecting existing data',
|
|
|
+ 'referral_traffic' => 'Give free data traffic when registered via referral',
|
|
|
+ 'referral_type' => 'New rebates calculated by new mode after switching',
|
|
|
+ 'register_ip_limit' => 'Number of registrations allowed per IP in 24 hours, 0 for unlimited',
|
|
|
+ 'reset_password_times' => 'Number of password resets allowed via email in 24 hours',
|
|
|
+ 'reset_traffic' => 'Automatically reset data based on user plan cycle',
|
|
|
+ 'server_chan_key' => 'Fill in <a href=https://sc.ftqq.com target=_blank>ServerChan SCKEY</a> before enabling',
|
|
|
+ 'standard_currency' => 'Primary currency used in panel',
|
|
|
+ 'subject_name' => 'Custom product name in payment gateways',
|
|
|
+ 'subscribe_ban_times' => 'Maximum subscription requests allowed per user in 24 hours',
|
|
|
+ 'subscribe_domain' => 'Start with http:// or https:// to avoid DNS poisoning failure',
|
|
|
+ 'subscribe_max' => 'Max number of nodes returned in subscription list, 0 for all',
|
|
|
+ 'telegram_token' => 'Get robot <a href=https://t.me/BotFather target=_blank>TOKEN</a> from @BotFather',
|
|
|
+ 'tg_chat_token' => 'Fill <a href=https://t.me/realtgchat_bot target=_blank>TG Chat token</a> before enabling',
|
|
|
+ 'ticket_closed_notification' => 'Notify user when ticket is closed',
|
|
|
+ 'ticket_created_notification' => 'Notify manager/user depending on creator',
|
|
|
+ 'ticket_replied_notification' => 'Notify the other party when ticket replied',
|
|
|
+ 'traffic_ban_time' => 'Duration of auto ban for exceptions',
|
|
|
+ 'traffic_ban_value' => 'Trigger auto account ban if exceeds this value in 1 hour',
|
|
|
+ 'traffic_limit_time' => 'Time interval between check-ins',
|
|
|
+ 'traffic_warning_percent' => 'Send traffic exhaustion notice when daily usage reaches this percentage',
|
|
|
+ 'username_type' => 'Default username type for users',
|
|
|
+ 'user_invite_days' => 'Expiration of user-generated invitation codes',
|
|
|
+ 'v2ray_tls_provider' => 'Node settings override this TLS config',
|
|
|
+ 'webmaster_email' => 'Contact email shown in some error messages',
|
|
|
+ 'website_analytics' => 'Analytics JavaScript code',
|
|
|
+ 'website_callback_url' => 'Prevent payment callback failure due to DNS poisoning',
|
|
|
+ 'website_customer_service' => 'Customer service JavaScript code',
|
|
|
+ 'website_name' => 'Website name in emails',
|
|
|
+ 'website_security_code' => 'Require security code to access site if set',
|
|
|
+ 'website_url' => 'Main domain used for links',
|
|
|
+ 'web_api_url' => 'E.g. '.config('app.url'),
|
|
|
+ 'wechat_aid' => '<a href="https://work.weixin.qq.com/wework_admin/frame#apps" target="_blank">App Management</a> -> AgentId',
|
|
|
+ 'wechat_cid' => 'Get from <a href="https://work.weixin.qq.com/wework_admin/frame#profile" target="_blank">Enterprise Info</a>',
|
|
|
+ 'wechat_encodingAESKey' => 'App Management -> App Settings -> EncodingAESKey',
|
|
|
+ 'wechat_secret' => 'App secret (need enterprise WeChat to view)',
|
|
|
+ 'wechat_token' => 'App Settings -> TOKEN, callback URL: :url',
|
|
|
],
|
|
|
'placeholder' => [
|
|
|
'default_url' => 'Default as :url',
|
|
|
- 'server_chan_key' => 'Fill in ServerChan\'s SCKEY, then press Update',
|
|
|
- 'pushDeer_key' => 'Fill in Push Key, then press Update',
|
|
|
- 'iYuu_token' => 'Fill in IYUU Token, then press Update',
|
|
|
- 'bark_key' => 'Fill in Bark key, then press Update',
|
|
|
- 'telegram_token' => 'Fill in Telegram Token, then press Update',
|
|
|
+ 'server_chan_key' => 'Fill ServerChan SCKEY then click Update',
|
|
|
+ 'pushDeer_key' => 'Fill PushDeer Push Key then click Update',
|
|
|
+ 'iYuu_token' => 'Fill IYUU token then click Update',
|
|
|
+ 'bark_key' => 'Fill Bark device key then click Update',
|
|
|
+ 'telegram_token' => 'Fill Telegram token then click Update',
|
|
|
'pushplus_token' => 'Please apply at ServerChan',
|
|
|
- 'dingTalk_access_token' => 'Customize bot\'s access_token in WebHook',
|
|
|
- 'dingTalk_secret' => 'Customize key that will appear after robot is signed',
|
|
|
- 'wechat_aid' => 'WeChat AID',
|
|
|
- 'wechat_cid' => 'Fill in the WeChat CID, then press Update',
|
|
|
- 'wechat_secret' => 'WeChat Secret',
|
|
|
+ 'dingTalk_access_token' => 'Custom bot access token',
|
|
|
+ 'dingTalk_secret' => 'Custom bot secret after signing',
|
|
|
+ 'wechat_aid' => 'WeChat Enterprise App AID',
|
|
|
+ 'wechat_cid' => 'Fill WeChat CID then click Update',
|
|
|
+ 'wechat_secret' => 'WeChat Enterprise App secret',
|
|
|
'tg_chat_token' => 'Please apply at Telegram',
|
|
|
'codepay_url' => 'https://codepay.fatq.com/create_order/?',
|
|
|
],
|