Pārlūkot izejas kodu

🤖 Translate to Vietnamese & German & Persian with Claude2

BrettonYe 2 gadi atpakaļ
vecāks
revīzija
236e178390

+ 20 - 2
resources/lang/de.json

@@ -35,5 +35,23 @@
     "Unauthorized": "Nicht autorisiert",
     "Verify Email Address": "E-Mail-Adresse bestätigen",
     "Whoops!": "Ups!",
-    "You are receiving this email because we received a password reset request for your account.": "Sie erhalten diese E-Mail, weil wir einen Antrag auf eine Zurücksetzung Ihres Passworts bekommen haben."
-}
+    "You are receiving this email because we received a password reset request for your account.": "Sie erhalten diese E-Mail, weil wir einen Antrag auf eine Zurücksetzung Ihres Passworts bekommen haben.",
+    "----「:job」Completed, Used :time seconds ----": "----「:job」Abgeschlossen, :time Sekunden benötigt----",
+    "[Auto Task] Blocked service: Abnormal traffic within 1 hour": "[Auto Task] Service gesperrt: Anormaler Datenverkehr innerhalb von 1 Stunde",
+    "[Auto Task] Blocked service: Run out of traffic": "[Auto Task] Service gesperrt: Kein Datenvolumen mehr verfügbar",
+    "[Auto Task] Blocked Subscription: Subscription with abnormal requests within 24 hours": "[Auto Task] Abo gesperrt: Abo mit anormalen Anfragen innerhalb von 24 Stunden",
+    "[Daily Task] Account Expiration: Block Login & Clear Account": "[Tägliche Aufgabe] Account Ablauf: Login blockiert & Account gelöscht",
+    "[Daily Task] Account Expiration: Stop Service": "[Tägliche Aufgabe] Account Ablauf: Service gestoppt",
+    "[Daily Task] Reset Account Traffic, Next Reset Date: :date": "[Tägliche Aufgabe] Account Datenverbrauch zurückgesetzt, nächstes Zurücksetzen am: :date",
+    "[Service Timer] Service Expiration": "[Zeitgesteuerter Service] Service Ablauf",
+    "Daily Data Usage Report": "Täglicher Datenverbrauchsbericht",
+    "Invoice Detail": "Rechnungsdetails",
+    "Payment for #:sn has been received! Total amount: :amount.": "Zahlung für #:sn wurde erhalten! Gesamtbetrag: :amount.",
+    "Payment Received": "Zahlung erhalten",
+    "Subscription link receive abnormal access and banned by the system": "Zugriff auf Abonnement-Link war anomal und wurde vom System gesperrt",
+    "Thank you for signing up! Before you start, you need to verify your email by clicking on the link we have just sent to your email! If you haven't received an email, we would be happy to send another one.": "Vielen Dank für Ihre Registrierung! Bevor Sie starten, müssen Sie Ihre E-Mail Adresse bestätigen, indem Sie auf den Link klicken, den wir Ihnen geschickt haben. Sollten Sie keine E-Mail erhalten haben, schicken wir Ihnen gerne eine neue.",
+    "Verify Your Email Address": "Bestätigen Sie Ihre E-Mail Adresse",
+    "You have not responded this ticket in :num hours, System has closed your ticket.": "Sie haben dieses Ticket für :num Stunden nicht beantwortet, das System hat Ihr Ticket geschlossen.",
+    "You must have a valid subscription to view the content in this area!": "Sie benötigen ein gültiges Abonnement um den Inhalt anzusehen!",
+    "Your subscription has been disabled by the administrator, please contact the administrator to restore it": "Ihr Abonnement wurde von einem Administrator deaktiviert, bitte kontaktieren Sie den Administrator um es wiederherzustellen."
+}

+ 801 - 0
resources/lang/de/admin.php

@@ -0,0 +1,801 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'dashboard' => [
+        'users' => 'Benutzer gesamt',
+        'available_users' => 'Aktive Benutzer',
+        'paid_users' => 'Zahlende Benutzer',
+        'active_days_users' => 'Aktive Benutzer in den letzten :days Tagen',
+        'inactive_days_users' => 'Inaktive Benutzer für über :days Tage',
+        'online_users' => 'Derzeit online',
+        'expiring_users' => 'Demnächst ablaufend',
+        'overuse_users' => 'Datenverbrauch [≥90%] Benutzer',
+        'abnormal_users' => 'Anormaler Datenverkehr in der letzten Stunde',
+        'nodes' => 'Knoten',
+        'maintaining_nodes' => 'Knoten in Wartung',
+        'current_month_traffic_consumed' => 'Datenverbrauch diesen Monat',
+        'days_traffic_consumed' => 'Datenverbrauch in den letzten :days Tagen',
+        'orders' => 'Bestellungen gesamt',
+        'online_orders' => 'Online-Zahlungen',
+        'succeed_orders' => 'Bezahlte Bestellungen',
+        'credit' => 'Guthaben gesamt',
+        'withdrawing_commissions' => 'Ausstehende Provisionen',
+        'withdrawn_commissions' => 'Ausgezahlte Provisionen',
+    ],
+    'action' => [
+        'edit_item' => ':attribute bearbeiten',
+        'add_item' => ':attribute hinzufügen',
+    ],
+    'confirm' => [
+        'delete' => [0 => ':attribute löschen bestätigen [', 1 => ']?'],
+        'continues' => 'Fortfahren bestätigen?',
+        'export' => 'Kompletten Export bestätigen?',
+    ],
+    'user_dashboard' => 'Benutzerbereich',
+    'menu' => [
+        'dashboard' => 'Dashboard',
+        'user' => [
+            'attribute' => 'Benutzer',
+            'list' => 'Benutzerverwaltung',
+            'oauth' => 'OAuth',
+            'group' => 'Benutzergruppen',
+            'credit_log' => 'Guthabenverlauf',
+            'subscribe' => 'Abonnements',
+        ],
+        'rbac' => [
+            'attribute' => 'RBAC',
+            'permission' => 'Berechtigungen',
+            'role' => 'Rollen',
+        ],
+        'customer_service' => [
+            'attribute' => 'Support',
+            'ticket' => 'Support-Tickets',
+            'article' => 'Wissensdatenbank',
+            'push' => 'Push-Benachrichtigungen',
+            'mail' => 'E-Mails',
+        ],
+        'node' => [
+            'attribute' => 'Knoten',
+            'list' => 'Knotenverwaltung',
+            'auth' => 'API Autorisierung',
+            'cert' => 'Zertifikate',
+        ],
+        'rule' => [
+            'attribute' => 'Regeln',
+            'list' => 'Regeln',
+            'group' => 'Regelgruppen',
+            'trigger' => 'Auslöser',
+        ],
+        'shop' => [
+            'attribute' => 'Shop',
+            'goods' => 'Produkte',
+            'coupon' => 'Gutscheine',
+            'order' => 'Bestellungen',
+        ],
+        'promotion' => [
+            'attribute' => 'Partnerprogramm',
+            'invite' => 'Einladungen',
+            'withdraw' => 'Auszahlungen',
+            'rebate_flow' => 'Provisionsverlauf',
+        ],
+        'analysis' => [
+            'attribute' => 'Berichte',
+            'accounting' => 'Buchhaltung',
+            'user_flow' => 'Benutzeranalyse',
+        ],
+        'log' => [
+            'attribute' => 'Protokolle',
+            'traffic' => 'Datenverbrauch',
+            'traffic_flow' => 'Datenverlauf',
+            'service_ban' => 'Sperraufzeichnungen',
+            'online_logs' => 'Online-Protokolle',
+            'online_monitor' => 'Online-Monitor',
+            'notify' => 'Benachrichtigungen',
+            'payment_callback' => 'Zahlung Rückruf',
+            'system' => 'System',
+        ],
+        'tools' => [
+            'attribute' => 'Werkzeuge',
+            'decompile' => 'Dekompilieren',
+            'convert' => 'Konvertieren',
+            'import' => 'Importieren',
+            'analysis' => 'Log-Analyse',
+        ],
+        'setting' => [
+            'attribute' => 'Einstellungen',
+            'email_suffix' => 'E-Mail-Filter',
+            'universal' => 'Allgemein',
+            'system' => 'System',
+        ],
+    ],
+    'user' => [
+        'massive' => [
+            'text' => 'Anzahl Benutzer',
+            'failed' => 'Benutzererstellung fehlgeschlagen',
+            'succeed' => 'Benutzer erfolgreich erstellt',
+            'note' => 'Backend Massenbenutzererstellung',
+        ],
+        'proxy_info' => 'Konfiguration',
+        'traffic_monitor' => 'Datenstatistik',
+        'online_monitor' => 'Online-Monitor',
+        'reset_traffic' => 'Daten zurücksetzen',
+        'user_view' => 'Benutzersicht',
+        'connection_test' => 'Verbindungstest',
+        'counts' => 'Gesamt <code>:num</code> Konten',
+        'reset_confirm' => [0 => 'Zurücksetzen von [', 1 => '] bestätigen?'],
+        'info' => [
+            'account' => 'Kontoinformationen',
+            'proxy' => 'Proxy Informationen',
+            'switch' => 'Identität wechseln',
+            'reset_date_hint' => 'Nächstes Datenresetdatum',
+            'expired_date_hint' => 'Standard 1 Jahr wenn leer',
+            'uuid_hint' => 'UUID für V2Ray',
+            'recharge_placeholder' => 'Negativ für Abzug vom Guthaben',
+        ],
+        'update_help' => 'Update erfolgreich, zurückkehren?',
+        'proxies_config' => 'Konfiguration von [:username]',
+        'group' => [
+            'title' => 'Benutzergruppen <small>(Knoten können mehreren Gruppen angehören, Benutzer nur einer)</small>',
+            'name' => 'Gruppenname',
+            'counts' => 'Gesamt <code>:num</code> Gruppen',
+        ],
+    ],
+    'zero_unlimited_hint' => '0 oder leer für unlimitiert',
+    'node' => [
+        'traffic_monitor' => 'Datenstatistik',
+        'refresh_geo' => 'Geo-Daten aktualisieren',
+        'ping' => 'Latenz testen',
+        'connection_test' => 'Verbindung testen',
+        'counts' => 'Gesamt <code>:num</code> Knoten',
+        'reload_all' => 'Alle Backends neu laden',
+        'refresh_geo_all' => 'Alle Geo-Daten aktualisieren',
+        'reload_confirm' => 'Knoten neu laden bestätigen?',
+        'info' => [
+            'hint' => '<strong>Hinweis:</strong> Der automatisch generierte <code>ID</code> ist die <code>node_id</code> für ShadowsocksR und <code>nodeId</code> für V2Ray Backend',
+            'basic' => 'Grundeinstellungen',
+            'ddns_hint' => 'DDNS ist für dynamische IPs erforderlich <a href="https://github.com/NewFuture/DDNS" target="_blank">Setup</a>. Verbindungstests verwenden Domain',
+            'domain_placeholder' => 'Serverdomain, erstes wird verwendet wenn ausgefüllt',
+            'domain_hint' => 'Mit DDNS wird Domain automatisch mit IP verknüpft! Keine manuelle DNS-Eintragänderung mehr nötig.',
+            'extend' => 'Erweiterte Einstellungen',
+            'display' => [
+                'invisible' => 'Unsichtbar',
+                'node' => 'Nur im Knoten sichtbar',
+                'sub' => 'Nur im Abo sichtbar',
+                'all' => 'Voll sichtbar',
+                'hint' => 'Sichtbarkeit in Aboliste/Knoten',
+            ],
+            'ipv4_hint' => 'Mehrere IPs mit "," trennen; z.B. 1.1.1.1, 8.8.8.8',
+            'ipv6_hint' => 'Mehrere IPs mit "," trennen; z.B. 1.1.1.1, 8.8.8.8',
+            'ipv4_placeholder' => 'Server IPv4 Adresse',
+            'ipv6_placeholder' => 'Server IPv6 Adresse',
+            'push_port_hint' => 'Erforderlich, in Firewall öffnen um Fehler zu vermeiden',
+            'data_rate_hint' => 'z.B. 0.1 heißt 100M werden als 10M berechnet; 5 bedeutet 100M werden als 500M berechnet',
+            'level_hint' => 'Level: 0 = keine, alle sichtbar',
+            'detection' => [
+                'tcp' => 'Nur TCP',
+                'icmp' => 'Nur ICMP',
+                'all' => 'Alle',
+                'hint' => 'Zufällige Prüfung alle 30-60 Minuten',
+            ],
+            'obfs_param_hint' => 'Parameter für obfs ungleich [plain]; &#13;&#10;Port 80 wenn obfs = [http_simple]; &#13;&#10;Port 443 wenn obfs = [tls];',
+            'additional_ports_hint' => 'Wenn aktiviert, bitte <span class="red-700"><a href="javascript:showTnc();">additional_ports</a></span> konfigurieren',
+            'v2_method_hint' => 'Kein none bei WebSocket',
+            'v2_net_hint' => 'TLS bei WebSocket aktivieren',
+            'v2_cover' => [
+                'none' => 'Ohne',
+                'http' => 'HTTP',
+                'srtp' => 'SRTP',
+                'utp' => 'uTP',
+                'wechat' => 'WeChat Video',
+                'dtls' => 'DTLS 1.2',
+                'wireguard' => 'WireGuard',
+            ],
+            'v2_host_hint' => 'Für HTTP, mehrere mit "," trennen. Nur eine bei WebSocket.',
+            'v2_tls_provider_hint' => 'Verschiedene Backends haben unterschiedliche Konfigs:',
+            'single_hint' => 'Empfohlen Port 80/443. Backend benötigt <br> strict mode: nur Verbindung über spezifizierte Ports. (<a href="javascript:showPortsOnlyConfig();">Wie konfigurieren</a>)',
+        ],
+        'proxy_info' => '*Kompatibilität mit SS',
+        'proxy_info_hint' => 'Für Kompatibilität <span class="red-700">_compatible</span> zu Protocol und Obfuscation hinzufügen',
+        'reload' => 'Backend neu laden',
+        'auth' => [
+            'title' => 'API Autorisierungen <small>WEBAPI</small>',
+            'deploy' => [
+                'title' => ':type_label Backend deployen',
+                'attribute' => 'Backend deployment',
+                'command' => 'Anweisungen',
+                'update' => 'Update',
+                'uninstall' => 'Deinstallieren',
+                'start' => 'Start',
+                'stop' => 'Stop',
+                'status' => 'Status',
+                'recent_logs' => 'Letzte Logs',
+                'real_time_logs' => 'Echtzeit-Logs',
+                'restart' => 'Neustart',
+                'same' => 'Wie oben',
+                'trojan_hint' => 'Bitte <a href=":url" target="_blank">Domain</a> ausfüllen und DNS auf Node IP auflösen',
+            ],
+            'reset_auth' => 'Schlüssel zurücksetzen',
+            'counts' => 'Gesamt <code>:num</code> Autorisierungen',
+            'generating_all' => 'Autorisierung für alle Knoten generieren?',
+        ],
+        'cert' => [
+            'title' => 'Domain Zertifikate <small>(Für Knoten Spoofing)</small>',
+            'counts' => 'Gesamt <code>:num</code> Zertifikate',
+            'key_placeholder' => 'Domain Zertifikat KEY. Leer für auto Zertifikate bei VNET-V2Ray',
+            'pem_placeholder' => 'Domain Zertifikat PEM. Leer für auto Zertifikate bei VNET-V2Ray',
+        ],
+    ],
+    'hint' => 'Hinweis',
+    'oauth' => [
+        'title' => 'Benutzer OAuth',
+        'counts' => 'Gesamt <code>:num</code> Autorisierungen',
+    ],
+    'select_all' => 'Alle auswählen',
+    'clear' => 'Löschen',
+    'unselected_hint' => 'Zum Zuweisen hier suchen',
+    'selected_hint' => 'Zugewiesen, hier suchen',
+    'clone' => 'Klonen',
+    'monitor' => [
+        'daily_chart' => 'Täglicher Datenverkehr',
+        'monthly_chart' => 'Monatlicher Datenverkehr',
+        'node' => 'Knoten Datenverkehr',
+        'user' => 'Benutzer Datenverkehr ',
+        'hint' => '<strong>Hinweis:</strong> Geplante Tasks prüfen falls keine Daten',
+    ],
+    'tools' => [
+        'analysis' => [
+            'title' => 'SSR Log Analyse <small>Nur für einzelnen Knoten</small>',
+            'req_url' => 'Letzte Request URLs',
+            'not_enough' => 'Weniger als 15.000 Einträge, Analyse nicht möglich',
+        ],
+        'convert' => [
+            'title' => 'Formatkonvertierung <small>SS zu SSR</small>',
+            'content_placeholder' => 'Bitte Konfiguration zum Konvertieren einfügen',
+        ],
+        'decompile' => [
+            'title' => 'Dekompilieren <small>Konfig Info</small>',
+            'attribute' => 'Dekompilieren',
+            'content_placeholder' => 'Bitte SSR Links einfügen, einer pro Zeile',
+        ],
+    ],
+    'ticket' => [
+        'title' => 'Tickets',
+        'counts' => 'Gesamt <code>:num</code> Tickets',
+        'send_to' => 'Bitte Zielbenutzer angaben',
+        'user_info' => 'Benutzerinformation',
+        'inviter_info' => 'Einladerinformation',
+        'close_confirm' => 'Ticket schließen bestätigen?',
+        'error' => 'Unbekannter Fehler! Bitte Logs prüfen',
+    ],
+    'logs' => [
+        'subscribe' => 'Abonnements',
+        'counts' => 'Gesamt <code>:num</code> Einträge',
+        'rule' => [
+            'clear_all' => 'Alle Einträge löschen',
+            'title' => 'Auslöser',
+            'name' => 'Auslöseregel',
+            'reason' => 'Auslösegrund',
+            'created_at' => 'Auslösungszeitpunkt',
+            'tag' => '✅ Nicht-erlaubter Zugriff',
+            'clear_confirm' => 'Löschen aller Einträge bestätigen?',
+        ],
+        'order' => [
+            'title' => 'Bestellungen',
+            'is_expired' => 'Abgelaufen',
+            'is_coupon' => 'Gutschein verwendet',
+        ],
+        'user_traffic' => [
+            'title' => 'Datenverbrauch',
+            'choose_node' => 'Knoten auswählen',
+        ],
+        'user_data_modify_title' => 'Datenänderungen',
+        'callback' => 'Callback Logs <small>(Zahlung)</small>',
+        'notification' => 'E-Mail-Logs',
+        'ip_monitor' => 'Online-IPs <small>Echtzeit 2 Minuten</small>',
+        'user_ip' => [
+            'title' => 'Online-IPs <small>Letzte 10 Minuten</small>',
+            'connect' => 'Verbundene IP',
+        ],
+        'ban' => [
+            'title' => 'Benutzer Sperren',
+            'time' => 'Dauer',
+            'reason' => 'Grund',
+            'ban_time' => 'Gesperrt am',
+            'last_connect_at' => 'Letzte Anmeldung',
+        ],
+        'credit_title' => 'Guthabenänderungen',
+    ],
+    'start_time' => 'Start',
+    'end_time' => 'Ende',
+    'goods' => [
+        'title' => 'Produkte',
+        'type' => [
+            'top_up' => 'Aufladung',
+            'package' => 'Datenpaket',
+            'plan' => 'Abo',
+        ],
+        'info' => [
+            'type_hint' => 'Abo betrifft Kontolaufzeit, Datenpaket nur Datenverbrauch, keine Auswirkung auf Laufzeit',
+            'period_hint' => 'Datenvolumen wird alle N Tage zurückgesetzt für Abos',
+            'limit_num_hint' => 'Maximale Käufe pro Benutzer, 0 für unlimitiert',
+            'available_date_hint' => 'Daten werden automatisch abgezogen wenn fällig',
+            'desc_placeholder' => 'Kurze Beschreibung',
+            'list_placeholder' => 'Benutzerdefinierte Inhalte hinzufügen',
+            'list_hint' => 'Jede Zeile mit <code>&lt;li&gt;</code> starten und mit <code>&lt;/li&gt;</code> beenden',
+        ],
+        'status' => [
+            'yes' => 'Im Verkauf',
+            'no' => 'Nicht im Verkauf',
+        ],
+        'sell_and_used' => 'Verwendet / Verkauft',
+        'counts' => 'Gesamt <code>:num</code> Produkte',
+    ],
+    'sort_asc' => 'Höherer Wert hat höhere Priorität',
+    'yes' => 'Ja',
+    'no' => 'Nein',
+    'rule' => [
+        'type' => [
+            'reg' => 'Regex',
+            'domain' => 'Domain',
+            'ip' => 'IP',
+            'protocol' => 'Protokoll',
+        ],
+        'counts' => 'Gesamt <code>:num</code> Regeln',
+        'title' => 'Regeln',
+        'group' => [
+            'type' => [
+                'off' => 'Blockieren',
+                'on' => 'Erlauben',
+            ],
+            'title' => 'Regelgruppen',
+            'counts' => 'Gesamt <code>:num</code> Gruppen',
+        ],
+    ],
+    'role' => [
+        'name_hint' => 'Eindeutiger Bezeichner, z.B. Administrator',
+        'description_hint' => 'Anzeigename, z.B. Admin',
+        'title' => 'Rollen',
+        'permissions_all' => 'Alle Berechtigungen',
+        'counts' => 'Gesamt <code>:num</code> Rollen',
+    ],
+    'report' => [
+        'monthly_accounting' => 'Monatsbuchhaltung',
+        'annually_accounting' => 'Jahresbuchhaltung',
+        'historic_accounting' => 'Historische Buchhaltung',
+        'current_month' => 'Diesen Monat',
+        'last_month' => 'Letzten Monat',
+        'current_year' => 'Dieses Jahr',
+        'last_year' => 'Letztes Jahr',
+        'hourly_traffic' => 'Stündlicher Datenverkehr',
+        'daily_traffic' => 'Täglicher Datenverkehr',
+        'today' => 'Heute',
+    ],
+    'permission' => [
+        'title' => 'Berechtigungen',
+        'description_hint' => 'Beschreibung, z.B. [X System] A editieren',
+        'name_hint' => 'Routenname, z.B. admin.user.update',
+        'counts' => 'Gesamt <code>:num</code> Berechtigungen',
+    ],
+    'marketing' => [
+        'email' => [
+            'title' => 'E-Mail-Marketing',
+            'group_send' => 'E-Mail senden',
+            'counts' => 'Gesamt <code>:num</code> E-Mails',
+        ],
+        'send_status' => 'Sendestatus',
+        'send_time' => 'Gesendet am',
+        'error_message' => 'Fehlermeldungen',
+        'push' => [
+            'title' => 'Push-Benachrichtigungen',
+            'send' => 'Benachrichtigung senden',
+            'counts' => 'Gesamt <code>:num</code> Nachrichten',
+        ],
+    ],
+    'creating' => 'Hinzufügen...',
+    'article' => [
+        'type' => [
+            'knowledge' => 'Artikel',
+            'announcement' => 'Ankündigung',
+        ],
+        'category_hint' => 'Gleiche Kategorie werden zusammengefasst',
+        'logo_hint' => 'Empfohlene Größe: 100x75',
+        'title' => 'Artikel',
+        'counts' => 'Gesamt <code>:num</code> Artikel',
+    ],
+    'coupon' => [
+        'title' => 'Gutscheine',
+        'name_hint' => 'Für Anzeige',
+        'sn_hint' => 'Leer für 8-stellige Zufallscodes',
+        'type' => [
+            'voucher' => 'Gutschein',
+            'discount' => 'Rabatt',
+            'charge' => 'Aufladung',
+        ],
+        'type_hint' => 'Abzug: Betrag abziehen; Rabatt: Prozentsatz; Aufladung: Guthaben erhöhen',
+        'value' => '{1} ➖ :num|{2} :num% Rabatt|{3} ➕ :num',
+        'value_hint' => 'Bereich 1% ~ 99%',
+        'priority_hint' => 'Höchste eligible Priorität zuerst. Max 255',
+        'minimum_hint' => 'Nur nutzbar wenn Zahlung > <strong>:num</strong>',
+        'used_hint' => 'Jeder Nutzer kann <strong>:num</strong> mal nutzen',
+        'levels_hint' => 'Nur für ausgewählte Levels',
+        'groups_hint' => 'Nur für ausgewählte Gruppen',
+        'users_placeholder' => 'Benutzer ID eingeben',
+        'user_whitelist_hint' => 'Whitelist Benutzer können nutzen, leer wenn nicht genutzt',
+        'users_blacklist_hint' => 'Blacklist Benutzer können nicht nutzen, leer wenn nicht genutzt',
+        'services_placeholder' => 'Produkt ID eingeben',
+        'services_whitelist_hint' => 'Nur für Whitelist Produkte, leer wenn nicht genutzt',
+        'services_blacklist_hint' => 'Nicht für Blacklist Produkte, leer wenn nicht genutzt',
+        'newbie' => [
+            'first_discount' => 'Erstkundenrabatt',
+            'first_order' => 'Erste Bestellung',
+            'created_days' => 'Registrierungsalter',
+        ],
+        'created_days_hint' => '<code>:days</code> Tage nach Registrierung',
+        'limit_hint' => 'Regeln haben <strong>UND</strong> Beziehung',
+        'info_title' => 'Gutscheininfo',
+        'counts' => 'Gesamt <code>:num</code> Gutscheine',
+        'discount' => 'Rabatt',
+        'export_title' => 'Export',
+        'single_use' => 'Einmaliger Gebrauch',
+    ],
+    'times' => 'Mal',
+    'massive_export' => 'Massenexport',
+    'system_generate' => 'Systemgeneriert',
+    'aff' => [
+        'rebate_title' => 'Provisionsverlauf',
+        'counts' => 'Gesamt <code>:num</code> Anfragen',
+        'title' => 'Auszahlungsanfragen',
+        'apply_counts' => 'Gesamt <code>:num</code> Anfragen',
+        'referral' => 'Empfehlungsprovision',
+        'commission_title' => 'Anfragedetails',
+        'commission_counts' => 'Enthält <code>:num</code> Bestellungen',
+    ],
+    'setting' => [
+        'common' => [
+            'title' => 'Allgemeine Konfiguration',
+            'set_default' => 'Als Standard setzen',
+            'connect_nodes' => 'Anzahl Knoten',
+        ],
+        'email' => [
+            'title' => 'E-Mail-Filter <small>(für Registrierung)</small>',
+            'tail' => 'E-Mail-Suffix',
+            'rule' => 'Regel',
+            'black' => 'Blacklist',
+            'white' => 'Whitelist',
+            'tail_placeholder' => 'E-Mail-Suffix eingeben',
+        ],
+        'system' => [
+            'title' => 'Systemeinstellungen',
+            'web' => 'Allgemein',
+            'account' => 'Konto',
+            'node' => 'Knoten',
+            'extend' => 'Erweitert',
+            'check_in' => 'Check-in',
+            'promotion' => 'Partnerprogramm',
+            'notify' => 'Benachrichtigung',
+            'auto_job' => 'Automation',
+            'other' => 'Logo|Support|Analytics',
+            'payment' => 'Zahlung',
+            'menu' => 'Menü',
+        ],
+        'no_permission' => 'Keine Berechtigung um Einstellungen zu ändern!',
+    ],
+    'system' => [
+        'account_expire_notification' => 'Kontoablauf Benachrichtigung',
+        'active_times' => 'Max Kontoaktivierungen',
+        'admin_invite_days' => '[Admin] Einladung Ablauf',
+        'aff_salt' => '[Empfehlungslink] Benutzer ID verschlüsseln',
+        'alipay_qrcode' => 'Alipay QR Code',
+        'AppStore_id' => '[Apple] Konto',
+        'AppStore_password' => '[Apple] Passwort',
+        'auto_release_port' => 'Port Recycling',
+        'bark_key' => '[Bark] Geräteschlüssel',
+        'captcha_key' => 'Captcha Schlüssel',
+        'captcha_secret' => 'Captcha Secret/ID',
+        'codepay_id' => '[CodePay] ID',
+        'codepay_key' => '[CodePay] Schlüssel',
+        'codepay_url' => '[CodePay] URL',
+        'data_anomaly_notification' => 'Datenanomalie Benachrichtigung',
+        'data_exhaust_notification' => 'Datenverbrauch Benachrichtigung',
+        'ddns_key' => '[DNS] Schlüssel',
+        'ddns_mode' => 'DNS Synchronisation',
+        'ddns_secret' => '[DNS] Secret',
+        'default_days' => 'Standard Kontolaufzeit',
+        'default_traffic' => 'Standard Anfangsdatenvolumen',
+        'detection_check_times' => 'Knoten Blockierungs Benachrichtigungen',
+        'dingTalk_access_token' => '[DingTalk] Zugriffstoken',
+        'dingTalk_secret' => '[DingTalk] Secret',
+        'epay_key' => '[ePay] Schlüssel',
+        'epay_mch_id' => '[ePay] Händler ID',
+        'epay_url' => '[ePay] URL',
+        'expire_days' => 'Ablaufwarnung',
+        'f2fpay_app_id' => '[Alipay] APP ID',
+        'f2fpay_private_key' => '[Alipay] Privater Schlüssel',
+        'f2fpay_public_key' => '[Alipay] Öffentlicher Schlüssel',
+        'forbid_mode' => 'Zugriffsbeschränkung',
+        'invite_num' => 'Standard Einladungen',
+        'is_activate_account' => 'Kontoaktivierung',
+        'is_AliPay' => 'Alipay',
+        'is_ban_status' => 'Ablauf Sperre',
+        'is_captcha' => 'Captcha',
+        'is_checkin' => 'Check-in Belohnung',
+        'is_clear_log' => 'Logs bereinigen',
+        'is_custom_subscribe' => 'Erweitertes Abo',
+        'is_email_filtering' => 'E-Mail Filterung',
+        'is_forbid_robot' => 'Bots blockieren',
+        'is_free_code' => 'Kostenlose Einladungscodes',
+        'is_invite_register' => 'Einladung zur Registrierung',
+        'is_otherPay' => 'Benutzerdefinierte Zahlung',
+        'is_QQPay' => 'QQ Pay',
+        'is_rand_port' => 'Zufälliger Port',
+        'is_register' => 'Registrierung',
+        'is_subscribe_ban' => 'Abo Sperre',
+        'is_traffic_ban' => 'Datenmissbrauch Sperre',
+        'is_WeChatPay' => 'WeChat Pay',
+        'iYuu_token' => '[IYUU] Token',
+        'maintenance_content' => 'Wartungsankündigung',
+        'maintenance_mode' => 'Wartungsmodus',
+        'maintenance_time' => 'Wartungsende',
+        'min_port' => 'Portbereich',
+        'min_rand_traffic' => 'Datenvolumenbereich',
+        'node_blocked_notification' => 'Knoten Blockade Benachrichtigung',
+        'node_daily_notification' => 'Täglicher Knotenbericht',
+        'node_offline_notification' => 'Knoten Offline Benachrichtigung',
+        'oauth_path' => 'OAuth Plattformen',
+        'offline_check_times' => 'Offline Benachrichtigungen',
+        'password_reset_notification' => 'Passwort Reset Benachrichtigung',
+        'paybeaver_app_id' => '[PayBeaver] App ID',
+        'paybeaver_app_secret' => '[PayBeaver] App Secret',
+        'payjs_key' => '[PayJs] Schlüssel',
+        'payjs_mch_id' => '[PayJs] Händler ID',
+        'payment_confirm_notification' => 'Manuelle Zahlungsbestätigung',
+        'payment_received_notification' => 'Zahlungseingang Benachrichtigung',
+        'paypal_app_id' => 'App ID',
+        'paypal_client_id' => 'Client ID',
+        'paypal_client_secret' => 'Client Secret',
+        'pushDeer_key' => '[PushDeer] Schlüssel',
+        'pushplus_token' => '[PushPlus] Token',
+        'rand_subscribe' => 'Zufälliges Abo',
+        'redirect_url' => 'Redirect URL',
+        'referral_money' => 'Mindestauszahlung',
+        'referral_percent' => 'Provisionsprozentsatz',
+        'referral_status' => 'Partnerprogramm',
+        'referral_traffic' => 'Registrierungsbonus',
+        'referral_type' => 'Provisionstyp',
+        'register_ip_limit' => 'Registrierung IP Limit',
+        'reset_password_times' => 'Passwort Reset Limit',
+        'reset_traffic' => 'Automatisches Datenreset',
+        'server_chan_key' => '[ServerChan] SCKEY',
+        'standard_currency' => 'Primäre Währung',
+        'stripe_public_key' => 'Public Key',
+        'stripe_secret_key' => 'Secret Key',
+        'stripe_signing_secret' => 'Webhook Secret',
+        'subject_name' => 'Benutzerdefinierter Produktname',
+        'subscribe_ban_times' => 'Abo Limit',
+        'subscribe_domain' => 'Abo Domain',
+        'subscribe_max' => 'Max Abo Knoten',
+        'telegram_token' => 'Telegram Token',
+        'tg_chat_token' => 'TG Chat Token',
+        'theadpay_key' => '[THeadPay] Schlüssel',
+        'theadpay_mchid' => '[THeadPay] Händler ID',
+        'theadpay_url' => '[THeadPay] URL',
+        'ticket_closed_notification' => 'Ticket Geschlossen Benachrichtigung',
+        'ticket_created_notification' => 'Ticket Erstellt Benachrichtigung',
+        'ticket_replied_notification' => 'Ticket Antwort Benachrichtigung',
+        'traffic_ban_time' => 'Bann Dauer',
+        'traffic_ban_value' => 'Datenmissbrauch Schwellwert',
+        'traffic_limit_time' => 'Check-in Intervall',
+        'traffic_warning_percent' => 'Datenverbrauchswarnung',
+        'trojan_license' => 'Trojan Lizenz',
+        'username_type' => 'Kontonutzername Typ',
+        'user_invite_days' => '[Benutzer] Einladung Ablauf',
+        'v2ray_license' => 'V2Ray Lizenz',
+        'v2ray_tls_provider' => 'V2Ray TLS Konfig',
+        'webmaster_email' => 'Admin E-Mail',
+        'website_analytics' => 'Analyse Code',
+        'website_callback_url' => 'Zahlungs-Callback Domain',
+        'website_customer_service' => 'Support Code',
+        'website_home_logo' => 'Homepage Logo',
+        'website_logo' => 'Inneres Logo',
+        'website_name' => 'Seitenname',
+        'website_security_code' => 'Sicherheitscode',
+        'website_url' => 'Seitendomain',
+        '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' => 'Benachrichtigung bei Kontoablauf',
+            'active_times' => 'Max. Kontoaktivierungen per E-Mail innerhalb 24 Stunden',
+            'admin_invite_days' => 'Ablauf von Admin-Einladungen',
+            'aff_salt' => 'Verschlüsselungssalz für Empfehlungslinks',
+            'AppStore_id' => 'Wird in Artikeln verwendet',
+            'AppStore_password' => 'Wird in Artikeln verwendet',
+            'auto_release_port' => 'Automatische Port-Freigabe nach Bann/Ablauf für <code>'.config('tasks.release_port').'</code> Tage',
+            'bark_key' => 'Geräteschlüssel für iOS Push-Benachrichtigungen',
+            'captcha_key' => 'Siehe <a href="https://proxypanel.gitbook.io/wiki/captcha" target="_blank">Setup Anleitung</a>',
+            'data_anomaly_notification' => 'Benachrichtigt Admin wenn stündliches Datenvolumen Grenzwert überschreitet',
+            'data_exhaust_notification' => 'Benachrichtigt wenn Datenvolumen zur Neige geht',
+            'ddns_key' => 'Siehe <a href="https://proxypanel.gitbook.io/wiki/ddns" target="_blank">Setup Anleitung</a>',
+            'ddns_mode' => 'Synchronisiert Domain & IP Änderungen zum DNS Anbieter',
+            'default_days' => 'Standard Ablaufzeit für neue Konten, 0 bedeutet heute ablaufend',
+            'default_traffic' => 'Standard Datenvolumen für neue Konten',
+            'detection_check_times' => 'Setzt Knoten nach N Warnungen offline, 0 für unlimitiert, max. 12',
+            'dingTalk_access_token' => 'Benutzerdefinierter Bot <a href="https://open.dingtalk.com/document/group/custom-robot-access#title-jfe-yo9-jl2" target="_blank">Zugriffstoken</a>',
+            'dingTalk_secret' => 'Benutzerdefinierter Bot Secret nach Signierung',
+            'expire_days' => 'Startet Kontoablauf Benachrichtigung',
+            'f2fpay_app_id' => 'D.h. APPID',
+            'f2fpay_private_key' => 'Anwendungs-Privatsschlüssel aus Geheimschlüsseltool',
+            'f2fpay_public_key' => 'Nicht der öffentliche APP-Schlüssel!',
+            'forbid_mode' => 'Blockiert Zugriff aus angegebenen Regionen',
+            'invite_num' => 'Standard Einladungen pro Benutzer',
+            'is_activate_account' => 'Benötigt Aktivierung per E-Mail',
+            'is_ban_status' => '(Vorsicht) Gesperrtes Konto setzt alle Benutzerdaten zurück',
+            'is_captcha' => 'Benötigt Captcha für Login/Registrierung wenn aktiviert',
+            'is_checkin' => 'Zufällige Belohnung beim Check-in',
+            'is_clear_log' => '(Empfohlen) Löscht automatisch unnütze/veraltete Logs wenn aktiviert',
+            'is_custom_subscribe' => 'Zeigt Ablauf und verbleibendes Datenvolumen in Aboliste wenn aktiviert',
+            'is_email_filtering' => 'Blacklist: Alle anderen E-Mails; Whitelist: Nur erlaubte E-Mails',
+            'is_forbid_robot' => 'Liefert 404 Fehler wenn von Bots/Proxies zugegriffen',
+            'is_free_code' => 'Versteckt kostenlose Einladungscodes wenn deaktiviert',
+            'is_rand_port' => 'Zufälliger Port bei Benutzer hinzufügen/registrieren',
+            'is_register' => 'Deaktiviert Registrierung wenn abgewählt',
+            'is_subscribe_ban' => 'Sperrt automatisch wenn Abonnementanfragen Grenzwert überschreiten',
+            'is_traffic_ban' => 'Sperrt automatisch Service wenn Datenvolumen in 1 Stunde Grenzwert überschreitet',
+            'iYuu_token' => '<a href="https://iyuu.cn" target="_blank">IYUU Token</a> ausfüllen vor Aktivierung',
+            'maintenance_content' => 'Benutzerdefinierte Wartungsankündigung',
+            'maintenance_mode' => 'Leitet normale Benutzer zur Wartungsseite um wenn aktiviert| Admin kann über <a href="javascript:(0)">:url</a> login',
+            'maintenance_time' => 'Für Countdown auf Wartungsseite',
+            'min_port' => 'Portbereich 1000 - 65535',
+            'node_blocked_notification' => 'Benachrichtigt Admin über Knotenblockade stündlich',
+            'node_daily_notification' => 'Täglicher Knotennutzungsbericht',
+            'node_offline_notification' => 'Erkennt offline Knoten alle 10 Min. und benachrichtigt Admin',
+            'oauth_path' => 'Bitte zuerst in .ENV aktivieren',
+            'offline_check_times' => 'Stoppt Benachrichtigung nach N Warnungen in 24 Stunden',
+            'password_reset_notification' => 'Erlaubt Passwortreset per E-Mail wenn aktiviert',
+            'paybeaver_app_id' => '<a href="https://merchant.paybeaver.com/" target="_blank">Händlercenter</a> -> Entwickler -> App ID',
+            'paybeaver_app_secret' => '<a href="https://merchant.paybeaver.com/" target="_blank">Händlercenter</a> -> Entwickler -> App Secret',
+            'payjs_mch_id' => 'Von <a href="https://payjs.cn/dashboard/member" target="_blank">Mitgliederseite</a>',
+            'payment_confirm_notification' => 'Benachrichtigt Admin zur Bearbeitung von manuellen Zahlungen',
+            'payment_received_notification' => 'Benachrichtigt Benutzer nach Zahlungseingang',
+            'pushDeer_key' => '<a href="https://www.pushdeer.com/official.html" target="_blank">PushDeer Push Key</a> vor Aktivierung ausfüllen',
+            'pushplus_token' => '<a href="https://www.pushplus.plus/push1.html" target="_blank">PushPlus Token</a> vor Aktivierung ausfüllen',
+            'rand_subscribe' => 'Zufällige Reihenfolge wenn aktiviert, sonst nodenreihenfolge',
+            'redirect_url' => 'Leitet gesperrte Anfragen an diese URL um wenn Regel getriggert',
+            'referral_money' => 'Mindestbetrag für Auszahlung',
+            'referral_percent' => 'Prozentsatz der Bestellung die der Vermittler erhält',
+            'referral_status' => 'Schließt Programm ohne Datenbeeinflussung',
+            'referral_traffic' => 'Gewährt kostenloses Datenvolumen bei Registrierung über Vermittlung',
+            'referral_type' => 'Neue Provisionen werden nach Wechsel mit neuem Modus berechnet',
+            'register_ip_limit' => 'Anzahl Registrierungen pro IP in 24 Stunden, 0 für unlimitiert',
+            'reset_password_times' => 'Anzahl Passwortresets per E-Mail in 24 Stunden',
+            'reset_traffic' => 'Setzt Datenvolumen automatisch basierend auf Benutzerplan zurück',
+            'server_chan_key' => '<a href="https://sc.ftqq.com" target="_blank">ServerChan SCKEY</a> vor Aktivierung ausfüllen',
+            'standard_currency' => 'Primäre Währung im Panel',
+            'subject_name' => 'Benutzerdefinierter Produktname in Zahlungsanbietern',
+            'subscribe_ban_times' => 'Max. erlaubte Abonnementanfragen pro Benutzer in 24 Stunden',
+            'subscribe_domain' => 'Mit http:// oder https:// starten um DNS Vergiftungsfehler zu vermeiden',
+            'subscribe_max' => 'Maximale zurückgegebene Knoten beim Client-Abonnement, 0 für alle Knoten',
+            'telegram_token' => '<a href="https://t.me/BotFather" target="_blank">TOKEN</a> von @BotFather holen',
+            'tg_chat_token' => '<a href="https://t.me/realtgchat_bot" target="_blank">TG Chat Token</a> vor Aktivierung ausfüllen',
+            'ticket_closed_notification' => 'Benachrichtigt Benutzer wenn Ticket geschlossen',
+            'ticket_created_notification' => 'Benachrichtigt Admin/Benutzer abhängig vom Ersteller',
+            'ticket_replied_notification' => 'Benachrichtigt Gegenpartei bei Ticketantwort',
+            'traffic_ban_time' => 'Dauer der automatischen Sperre bei Ausnahmen',
+            'traffic_ban_value' => 'Löst automatische Kontosperre aus wenn in 1 Stunde überschritten',
+            'traffic_limit_time' => 'Zeit zwischen Check-ins',
+            'traffic_warning_percent' => 'Sendet Datenverbrauchswarnung wenn tägliche Nutzung diesen Prozentsatz erreicht',
+            'username_type' => 'Standard Benutzernamenstyp für Benutzer',
+            'user_invite_days' => 'Ablauf von Benutzererzeugten Einladungscodes',
+            'v2ray_tls_provider' => 'Knoteneinstellungen haben Vorrang vor dieser TLS Konfig',
+            'webmaster_email' => 'Kontakt E-Mail in Fehlermeldungen',
+            'website_analytics' => 'Analytics JavaScript Code',
+            'website_callback_url' => 'Verhindert Zahlungs-Callbackfehler durch DNS Vergiftung',
+            'website_customer_service' => 'Kundendienst JavaScript Code',
+            'website_name' => 'Website Name in E-Mails',
+            'website_security_code' => 'Benötigt Sicherheitscode für Seitenzugriff wenn gesetzt',
+            'website_url' => 'Hauptdomain für Links',
+            'web_api_url' => 'z.B. '.config('app.url'),
+            'wechat_aid' => '<a href="https://work.weixin.qq.com/wework_admin/frame#apps" target="_blank">Anwendungsverwaltung</a> -> AgentId',
+            'wechat_cid' => 'Von <a href="https://work.weixin.qq.com/wework_admin/frame#profile" target="_blank">Unternehmensinfo</a>',
+            'wechat_encodingAESKey' => 'Anwendungsverwaltung -> Anwendungseinstellungen -> EncodingAESKey',
+            'wechat_secret' => 'Anwendungs-Secret (Enterprise WeChat erforderlich)',
+            'wechat_token' => 'Anwendungseinstellungen -> TOKEN, Callback URL: :url',
+        ],
+        'placeholder' => [
+            'default_url' => 'Standard :url',
+            'server_chan_key' => 'ServerChan SCKEY eintragen dann Update klicken',
+            'pushDeer_key' => 'PushDeer Key eintragen dann Update klicken',
+            'iYuu_token' => 'IYUU Token eintragen dann Update klicken',
+            'bark_key' => 'Bark Key eintragen dann Update klicken',
+            'telegram_token' => 'Telegram Token eintragen dann Update klicken',
+            'pushplus_token' => 'Bitte bei ServerChan beantragen',
+            'dingTalk_access_token' => 'Benutzerdefinierter Bot Zugriffstoken',
+            'dingTalk_secret' => 'Benutzerdefinierter Bot Secret nach Signierung',
+            'wechat_aid' => 'Anwendungs-AgentId',
+            'wechat_cid' => 'WeChat CID eintragen dann Update klicken',
+            'wechat_secret' => 'Anwendungs-Secret',
+            'tg_chat_token' => 'Bitte bei Telegram beantragen',
+            'codepay_url' => 'https://codepay.fateqq.com/creat_order/?',
+        ],
+        'payment' => [
+            'attribute' => 'Zahlungseinstellungen',
+            'channel' => [
+                'alipay' => 'Alipay F2F',
+                'codepay' => 'CodePay',
+                'epay' => 'ePay',
+                'payjs' => 'PayJs',
+                'paypal' => 'PayPal',
+                'stripe' => 'Stripe',
+                'paybeaver' => 'PayBeaver',
+                'theadpay' => 'THeadPay',
+                'manual' => 'Manuelle Zahlung',
+            ],
+            'hint' => [
+                'alipay' => 'Benötigt <a href="https://open.alipay.com/platform/appManage.htm?#/create/" target="_blank">Ant Financial Services</a> Berechtigung und Anwendung',
+                'codepay' => 'Bitte <a href="https://codepay.fateqq.com/i/377289" target="_blank">CodePay</a> Konto erstellen und Software herunterladen',
+                'payjs' => 'Bitte <a href="https://payjs.cn/ref/zgxjnb" target="_blank">PayJs</a> Konto erstellen',
+                'paypal' => 'Mit Händlerkonto <a href="https://www.paypal.com/businessprofile/mytools/apiaccess/firstparty" target="_blank">API Credentials</a> abrufen',
+                'paybeaver' => 'Bitte <a href="https://merchant.paybeaver.com/?aff_code=iK4GNuX8" target="_blank">PayBeaver</a> Konto erstellen',
+                'theadpay' => 'Bitte <a href="https://theadpay.com/" target="_blank">THeadPay</a> Konto erstellen',
+                'manual' => 'Wird nach Einstellung und Auswahl angezeigt',
+            ],
+        ],
+        'notification' => [
+            'channel' => [
+                'telegram' => 'Telegram',
+                'wechat' => 'WeChat Enterprise',
+                'dingtalk' => 'DingTalk',
+                'email' => 'E-Mail',
+                'bark' => 'Bark',
+                'serverchan' => 'ServerChan',
+                'pushdeer' => 'PushDeer',
+                'pushplus' => 'PushPlus',
+                'iyuu' => 'IYUU',
+                'tg_chat' => 'TG Chat',
+                'site' => 'Website Popup',
+            ],
+            'send_test' => 'Testnachricht senden',
+        ],
+        'forbid' => [
+            'mainland' => 'China Festlandzugriff sperren',
+            'china' => 'China Zugriff sperren',
+            'oversea' => 'Auslandszugriff sperren',
+        ],
+        'username' => [
+            'email' => 'E-Mail',
+            'mobile' => 'Handynummer',
+            'any' => 'Beliebiger Nutzername',
+        ],
+        'active_account' => [
+            'before' => 'Vor Registrierung',
+            'after' => 'Nach Registrierung',
+        ],
+        'ddns' => [
+            'namesilo' => 'Namesilo',
+            'aliyun' => 'Alibaba Cloud',
+            'dnspod' => 'DNSPod',
+            'cloudflare' => 'CloudFlare',
+        ],
+        'captcha' => [
+            'standard' => 'Standard',
+            'geetest' => 'Geetest',
+            'recaptcha' => 'Google ReCaptcha',
+            'hcaptcha' => 'hCaptcha',
+        ],
+        'referral' => [
+            'once' => 'Einmal Provision',
+            'loop' => 'Immer Provision',
+        ],
+    ],
+    'set_to' => ':attribute setzen auf',
+    'minute' => 'Minuten',
+    'query' => 'Abfrage',
+    'optional' => 'Optional',
+    'require' => 'Erforderlich',
+];

+ 100 - 0
resources/lang/de/auth.php

@@ -0,0 +1,100 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'accept_term' => 'Ich habe gelesen und akzeptiert',
+    'active' => [
+        'attribute' => 'Aktivieren',
+        'error' => [
+            'activated' => 'Konto bereits aktiviert, keine erneute Aktivierung erforderlich',
+            'disable' => 'Kontoaktivierung deaktiviert, Sie können sich direkt anmelden!',
+            'throttle' => 'Limit für Aktivierungsanfragen erreicht, bitte nicht zu häufig ausführen! Kontaktieren Sie bei Fragen: :email',
+        ],
+        'promotion' => 'Konto noch nicht aktiviert, bitte zuerst [:action]!',
+        'sent' => 'Aktivierungslink wurde an Ihre E-Mail gesendet, bitte auch Spam-Ordner prüfen.',
+    ],
+    'aup' => 'Akzeptable Nutzungsbedingungen',
+    'captcha' => [
+        'attribute' => 'Captcha',
+        'error' => [
+            'failed' => 'Captcha-Verifizierung fehlgeschlagen, bitte erneut versuchen',
+            'timeout' => 'Captcha abgelaufen, bitte aktualisieren und erneut versuchen.',
+        ],
+        'required' => 'Bitte Captcha ausfüllen!',
+        'sent' => 'Captcha an Ihre E-Mail gesendet, bitte auch Spam-Ordner prüfen.',
+    ],
+    'email' => [
+        'error' => [
+            'banned' => 'Ihr E-Mail-Anbieter ist gesperrt, bitte eine andere E-Mail verwenden.',
+            'invalid' => 'Ihre E-Mail wird nicht unterstützt.',
+        ],
+    ],
+    'error' => [
+        'account_baned' => 'Ihr Konto ist gesperrt!',
+        'login_error' => 'Login-Fehler, bitte später erneut versuchen!',
+        'login_failed' => 'Login fehlgeschlagen, bitte E-Mail und Passwort prüfen!',
+        'not_found_user' => 'Kein Konto gefunden, bitte andere Login-Methode versuchen.',
+        'repeat_request' => 'Bitte aktualisieren und erneut versuchen.',
+        'url_timeout' => 'Link abgelaufen, bitte erneut anfordern.',
+    ],
+    'failed' => 'Diese Kombination aus Zugangsdaten wurde nicht in unserer Datenbank gefunden.',
+    'invite' => [
+        'attribute' => 'Einladungscode',
+        'error' => [
+            'unavailable' => 'Ungültiger Einladungscode, bitte erneut versuchen.',
+        ],
+        'get' => 'Einladungscode anfordern',
+        'not_required' => 'Kein Einladungscode erforderlich, Sie können sich direkt registrieren!',
+    ],
+    'login' => 'Login',
+    'logout' => 'Logout',
+    'maintenance' => 'Wartung',
+    'maintenance_tip' => 'In Wartung',
+    'oauth' => [
+        'bind_failed' => 'Bindung fehlgeschlagen',
+        'bind_success' => 'Bindung erfolgreich',
+        'login_failed' => 'Social-Login fehlgeschlagen!',
+        'rebind_success' => 'Erneute Bindung erfolgreich',
+        'register' => 'Schnellregistrierung',
+        'register_failed' => 'Registrierung fehlgeschlagen',
+        'registered' => 'Bereits registriert, bitte direkt anmelden.',
+        'unbind_failed' => 'Aufhebung der Bindung fehlgeschlagen',
+        'unbind_success' => 'Bindung aufgehoben',
+    ],
+    'one-click_login' => 'Ein-Klick-Login',
+    'optional' => 'Optional',
+    'password' => [
+        'forget' => 'Passwort vergessen?',
+        'new' => 'Neues Passwort eingeben',
+        'original' => 'Aktuelles Passwort',
+        'reset' => [
+            'attribute' => 'Passwort zurücksetzen',
+            'error' => [
+                'demo' => 'Änderung des Admin-Passworts in Demo nicht möglich.',
+                'disabled' => 'Passwortzurücksetzung deaktiviert, bitte kontaktieren Sie für Hilfe: :email',
+                'failed' => 'Zurücksetzen des Passworts fehlgeschlagen.',
+                'same' => 'Neues Passwort darf nicht gleich wie altes sein, bitte erneut eingeben.',
+                'throttle' => 'Sie können Ihr Passwort nur :time Mal in 24 Stunden zurücksetzen, bitte nicht zu häufig ausführen.',
+                'wrong' => 'Falsches Passwort, bitte erneut versuchen.',
+            ],
+            'sent' => 'Link zum Zurücksetzen an Ihre E-Mail gesendet, bitte auch Spam-Ordner prüfen.',
+            'success' => 'Neues Passwort erfolgreich gesetzt, Sie können sich nun anmelden.',
+        ],
+    ],
+    'register' => [
+        'attribute' => 'Registrieren',
+        'code' => 'Registrierungscode',
+        'error' => [
+            'disable' => 'Die Registrierung ist derzeit geschlossen.',
+            'throttle' => 'Anti-Bot aktiv! Bitte senden Sie keine Registrierungsformulare zu häufig!',
+        ],
+        'failed' => 'Registrierung fehlgeschlagen, bitte später erneut versuchen.',
+        'promotion' => 'Noch kein Konto? Bitte gehen Sie zu',
+        'success' => 'Registrierung erfolgreich',
+    ],
+    'remember_me' => 'Eingeloggt bleiben',
+    'request' => 'Anfordern',
+    'throttle' => 'Zu viele Loginversuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.',
+    'tos' => 'Nutzungsbedingungen',
+];

+ 150 - 0
resources/lang/de/common.php

@@ -0,0 +1,150 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'hour' => '{1} Stunde | {2} Uhr',
+    'account' => 'Konto',
+    'available_date' => 'Verfügbar bis',
+    'created_at' => 'Erstellt am',
+    'expired_at' => 'Läuft ab am',
+    'updated_at' => 'Zuletzt aktualisiert',
+    'latest_at' => 'Letzte Aktivität',
+    'back' => 'Zurück',
+    'back_to' => 'Zurück zu :page',
+    'cancel' => 'Abbrechen',
+    'close' => 'Schließen',
+    'close_item' => ':attribute schließen',
+    'confirm' => 'Bestätigen',
+    'continues' => 'Fortsetzen',
+    'open' => 'Öffnen',
+    'send' => 'Senden',
+    'view' => 'Ansehen',
+    'reset' => 'Zurücksetzen',
+    'copy' => [
+        'attribute' => 'Kopieren',
+        'success' => 'Erfolgreich kopiert',
+        'failed' => 'Kopieren fehlgeschlagen, bitte manuell kopieren',
+    ],
+    'add' => 'Hinzufügen',
+    'free' => 'Kostenlos',
+    'replace' => 'Ersetzen',
+    'submit' => 'Absenden',
+    'submit_item' => ':attribute absenden',
+    'generate' => 'Generieren',
+    'generate_item' => ':attribute generieren',
+    'to_safari' => [0 => 'Klicke oben rechts', 1 => ', dann wähle', 2 => 'In Safari öffnen', 3 => ', um die Seite korrekt anzuzeigen!'],
+    'update_browser' => [0 => 'Sie verwenden einen', 1 => 'veralteten', 2 => 'Browser. Bitte', 3 => 'aktualisieren Sie Ihren Browser', 4 => 'für die beste Erfahrung.'],
+    'apply' => 'Anwenden',
+    'avatar' => 'Avatar',
+    'customize' => 'Anpassen',
+    'all' => 'Alle',
+    'default' => 'Standard',
+    'download' => 'Herunterladen',
+    'goto' => 'Gehe zu',
+    'warning' => 'Warnung',
+    'success' => 'Erfolg',
+    'success_item' => ':attribute erfolgreich',
+    'failed' => 'Fehlgeschlagen',
+    'failed_item' => ':attribute fehlgeschlagen',
+    'update' => 'Aktualisieren',
+    'update_action' => ':action aktualisieren',
+    'none' => 'Keine',
+    'new' => 'Neu',
+    'sorry' => 'Entschuldigung',
+    'applied' => ':attribute angewendet',
+    'active_item' => ':attribute aktivieren',
+    'error' => 'Fehler',
+    'toggle' => 'Umschalten',
+    'toggle_action' => ':action umschalten',
+    'request_url' => 'Anfrage-URL',
+    'function' => [
+        'navigation' => 'Navigation',
+        'menubar' => 'Menüleiste',
+        'fullscreen' => 'Vollbild',
+    ],
+    'days' => [
+        'attribute' => '{1} Tage | {2} Tag',
+        'sun' => 'Sonntag',
+        'mon' => 'Montag',
+        'tue' => 'Dienstag',
+        'wed' => 'Mittwoch',
+        'thu' => 'Donnerstag',
+        'fri' => 'Freitag',
+        'sat' => 'Samstag',
+        'weekend' => 'Wochenende',
+        'work' => 'Werktag',
+        'next' => 'Folgender Tag',
+    ],
+    'qrcode' => ':attribute QR-Code',
+    'deleted' => 'Gelöscht',
+    'deleted_item' => ':attribute gelöscht',
+    'print' => 'Drucken',
+    'unlimited' => 'Unbegrenzt',
+    'payment' => [
+        'credit' => 'Guthaben',
+        'alipay' => 'Alipay',
+        'qq' => 'QQ Wallet',
+        'wechat' => 'WeChat Pay',
+        'crypto' => 'Kryptowährung',
+        'manual' => 'Manuelle Zahlung',
+        'status' => [
+            'wait' => 'Warte auf Zahlung',
+        ],
+    ],
+    'order' => [
+        'status' => [
+            'cancel' => 'Abgebrochen',
+            'complete' => 'Abgeschlossen',
+            'prepaid' => 'Vorausbezahlt',
+            'ongoing' => 'Laufend',
+            'review' => 'Warte auf Prüfung',
+        ],
+    ],
+    'recommend' => 'Empfehlen',
+    'advance' => 'Erweitert',
+    'action' => 'Aktion',
+    'search' => 'Suchen',
+    'edit' => 'Bearbeiten',
+    'delete' => 'Löschen',
+    'status' => [
+        'attribute' => 'Status',
+        'inactive' => 'Inaktiv',
+        'disabled' => 'Deaktiviert',
+        'banned' => 'Gesperrt',
+        'normal' => 'Normal',
+        'enabled' => 'Aktiviert',
+        'expire' => 'Abgelaufen',
+        'limited' => 'Eingeschränkt',
+        'run_out' => 'Daten aufgebraucht',
+        'unused' => 'Ungenutzt',
+        'used' => 'Genutzt',
+        'closed' => 'Geschlossen',
+        'applying' => 'Wird beantragt',
+        'withdrawn' => 'Ausgezahlt',
+        'unwithdrawn' => 'Nicht ausgezahlt',
+        'reply' => 'Beantwortet',
+        'pending' => 'Ausstehend',
+        'unknown' => 'Unbekannt',
+        'available' => 'Verfügbar',
+        'reject' => 'Ablehnen',
+        'rejected' => 'Abgelehnt',
+        'review' => 'Wartet auf Prüfung',
+        'reviewed' => 'Geprüft',
+        'paid' => 'Bezahlt',
+        'payment_pending' => 'Zahlung ausstehend',
+        'pass' => 'Bestanden',
+        'send_to_credit' => 'Zum Guthaben hinzufügen',
+        'waiting_tobe_send' => 'Wartet auf Versand',
+    ],
+    'stay_unchanged' => 'Leer lassen um unverändert zu bleiben',
+    'random_generate' => 'Leer lassen für zufällige Generierung',
+    'request_failed' => 'Anfrage fehlgeschlagen, bitte erneut versuchen',
+    'convert' => 'Konvertieren',
+    'import' => 'Importieren',
+    'or' => 'oder',
+    'more' => 'Mehr',
+    'to' => 'bis',
+    'to_be_send' => 'Zu senden',
+    'developing' => 'In Entwicklung! Bleibt dran.',
+];

+ 34 - 0
resources/lang/de/errors.php

@@ -0,0 +1,34 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'forbidden' => [
+        'access' => 'Unbekannte IP oder Proxy-Zugriff erkannt, Zugriff verweigert',
+        'bots' => 'Bot-Zugriff erkannt, Zugriff verweigert',
+        'china' => 'China IP oder Proxy-Zugriff erkannt, Zugriff verweigert',
+        'oversea' => 'Ausländische IP oder Proxy-Zugriff erkannt, Zugriff verweigert',
+    ],
+    'log' => 'Protokoll',
+    'refresh' => 'Aktualisieren',
+    'refresh_page' => 'Bitte aktualisieren Sie die Seite und versuchen Sie es erneut',
+    'report' => 'Der Fehler enthielt einen Bericht: ',
+    'safe_enter' => 'Sicherer Eingang',
+    'safe_code' => 'Bitte geben Sie den Sicherheitscode ein',
+    'title' => '⚠️ Fehler ausgelöst',
+    'unsafe_enter' => 'Unsicherer Eingang',
+    'visit' => 'Besuchen Sie bitte',
+    'whoops' => 'Hoppla!',
+    'get_ip' => 'IP-Informationen konnten nicht abgerufen werden',
+    'subscribe' => [
+        'unknown' => 'Unbekannter Abonnement-Link! Bitte einen neuen besorgen!',
+        'sub_baned' => 'Abonnement gesperrt! Website für Details besuchen!',
+        'user' => 'Falscher Link, Account existiert nicht!',
+        'user_disable' => 'Account deaktiviert! Support kontaktieren!',
+        'baned_until' => 'Account gesperrt bis :time, bitte auf Entsperrung warten!',
+        'out' => 'KEINE DATEN MEHR VERFÜGBAR! Bitte mehr kaufen oder Daten zurücksetzen!',
+        'expired' => 'Account abgelaufen! Bitte Kauf verlängern!',
+        'question' => 'Account-Fehler!? Website für Details besuchen!',
+        'none' => 'Keine verfügbaren Server',
+    ],
+];

+ 232 - 0
resources/lang/de/model.php

@@ -0,0 +1,232 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'user' => [
+        'id' => 'Benutzer ID',
+        'attribute' => 'Benutzer',
+        'nickname' => 'Spitzname',
+        'username' => 'Benutzername',
+        'password' => 'Passwort',
+        'credit' => 'Guthaben',
+        'invite_num' => 'Verfügbare Einladungen',
+        'reset_date' => 'Datenrücksetzungsdatum',
+        'port' => 'Port',
+        'traffic_used' => 'Verbrauchte Daten',
+        'service' => 'Proxy Service',
+        'group' => 'Benutzergruppe',
+        'account_status' => 'Kontostatus',
+        'proxy_status' => 'Proxystatus',
+        'expired_date' => 'Ablaufdatum',
+        'role' => 'Benutzerrolle',
+        'wechat' => 'WeChat',
+        'qq' => 'QQ',
+        'remark' => 'Anmerkung',
+        'uuid' => 'VMess UUID',
+        'proxy_passwd' => 'Proxy Passwort',
+        'proxy_method' => 'Verschlüsselung',
+        'usable_traffic' => 'Verfügbares Datenvolumen',
+        'proxy_protocol' => 'Protokoll',
+        'proxy_obfs' => 'Obfuscation',
+        'speed_limit' => 'Geschwindigkeitslimit',
+        'inviter' => 'Einlader',
+        'created_date' => 'Registrierungsdatum',
+    ],
+    'common' => [
+        'extend' => 'Erweiterte Informationen',
+        'sort' => 'Sortierung',
+        'description' => 'Beschreibung',
+        'type' => 'Typ',
+        'level' => 'Level',
+    ],
+    'country' => [
+        'code' => 'Ländercode',
+        'icon' => 'Flagge',
+        'name' => 'Ländername',
+    ],
+    'subscribe' => [
+        'code' => 'Abocode',
+        'req_times' => 'Anzahl Anfragen',
+        'updated_at' => 'Letzte Anfrage',
+        'ban_time' => 'Bannzeit',
+        'ban_desc' => 'Banngrund',
+        'req_ip' => 'Anfrage-IP',
+        'req_header' => 'Zugriffsheader',
+    ],
+    'oauth' => [
+        'type' => 'Kanal',
+        'identifier' => 'Bezeichner',
+    ],
+    'user_group' => [
+        'attribute' => 'Benutzergruppe',
+        'name' => 'Gruppenname',
+        'nodes' => 'Knoten',
+    ],
+    'node' => [
+        'attribute' => 'Knoten',
+        'id' => 'Knoten ID',
+        'name' => 'Name',
+        'domain' => 'Domain',
+        'static' => 'Status',
+        'online_user' => 'Online Nutzer',
+        'data_consume' => 'Datenverbrauch',
+        'data_rate' => 'Datenrate',
+        'ddns' => 'DDNS',
+        'ipv4' => 'IPv4',
+        'ipv6' => 'IPv6',
+        'push_port' => 'Push-Port',
+        'rule_group' => 'Regelgruppe',
+        'traffic_limit' => 'Geschwindigkeitslimit',
+        'client_limit' => 'Client Limit',
+        'label' => 'Label',
+        'country' => 'Land',
+        'udp' => 'UDP',
+        'display' => 'Anzeige & Abonnement',
+        'detection' => 'Blockerkennung',
+        'method' => 'Verschlüsselung',
+        'protocol' => 'Protokoll',
+        'protocol_param' => 'Protokollparameter',
+        'obfs' => 'Obfuscation',
+        'obfs_param' => 'Obfuscation Parameter',
+        'single' => 'Einzelner Port',
+        'transfer' => 'Relais',
+        'service_port' => 'Service Port',
+        'single_passwd' => '[Single] Passwort',
+        'v2_alter_id' => 'Alter ID',
+        'v2_net' => 'Netzwerk',
+        'v2_cover' => 'Cover',
+        'v2_host' => 'Host',
+        'v2_path' => 'Pfad | Schlüssel',
+        'v2_sni' => 'SNI',
+        'v2_tls' => 'TLS',
+        'v2_tls_provider' => 'TLS Konfig',
+        'relay_port' => 'Relay Port',
+    ],
+    'node_auth' => [
+        'attribute' => 'Knoten Auth',
+        'key' => 'Schlüssel <small>für Knoten</small>',
+        'secret' => 'Geheimer Schlüssel',
+    ],
+    'node_cert' => [
+        'attribute' => 'Domain Zertifikat',
+        'domain' => 'Domain',
+        'key' => 'Schlüssel',
+        'pem' => 'PEM',
+        'issuer' => 'Aussteller',
+        'signed_date' => 'Signiert am',
+        'expired_date' => 'Läuft ab am',
+    ],
+    'order' => [
+        'attribute' => 'Bestellung',
+        'id' => 'Bestellnummer',
+        'original_price' => 'Originalpreis',
+        'price' => 'Preis',
+        'pay_way' => 'Zahlungsart',
+        'status' => 'Status',
+    ],
+    'goods' => [
+        'attribute' => 'Produkt',
+        'name' => 'Name',
+        'price' => 'Preis',
+        'category' => 'Kategorie',
+        'renew' => 'Daten Reset Preis',
+        'user_limit' => 'Benutzer Geschwindigkeitslimit',
+        'period' => 'Reset Zyklus',
+        'traffic' => 'Datenvolumen',
+        'invite_num' => 'Bonus Einladungen',
+        'limit_num' => 'Kauflimit',
+        'available_date' => 'Gültigkeitsdauer',
+        'hot' => 'Bestseller',
+        'color' => 'Farbe',
+        'logo' => 'Logo',
+        'info' => 'Benutzerdefinierte Info',
+    ],
+    'rule' => [
+        'attribute' => 'Regel',
+        'name' => 'Beschreibung',
+        'pattern' => 'Wert',
+    ],
+    'rule_group' => [
+        'attribute' => 'Regelgruppe',
+        'name' => 'Name',
+        'type' => 'Typ',
+        'rules' => 'Regeln',
+    ],
+    'role' => [
+        'attribute' => 'Rolle',
+        'name' => 'Name',
+        'permissions' => 'Berechtigungen',
+    ],
+    'permission' => [
+        'attribute' => 'Berechtigung',
+        'description' => 'Beschreibung',
+        'name' => 'Routenname',
+    ],
+    'article' => [
+        'attribute' => 'Artikel',
+        'category' => 'Kategorie',
+        'language' => 'Sprache',
+        'logo' => 'Cover',
+        'created_at' => 'Veröffentlicht am',
+        'updated_at' => 'Aktualisiert am',
+    ],
+    'coupon' => [
+        'attribute' => 'Gutschein',
+        'name' => 'Name',
+        'sn' => 'Code',
+        'logo' => 'Logo',
+        'value' => 'Wert',
+        'priority' => 'Priorität',
+        'usable_times' => 'Nutzungslimit',
+        'minimum' => 'Mindestbestellwert',
+        'used' => 'Persönliches Limit',
+        'levels' => 'Level Limit',
+        'groups' => 'Gruppen Limit',
+        'users_whitelist' => 'Whitelist Benutzer',
+        'users_blacklist' => 'Blacklist Benutzer',
+        'services_whitelist' => 'Whitelist Produkte',
+        'services_blacklist' => 'Blacklist Produkte',
+        'newbie' => 'Nur Neukunden',
+        'num' => 'Anzahl',
+    ],
+    'aff' => [
+        'invitee' => 'Käufer',
+        'amount' => 'Bestellbetrag',
+        'commission' => 'Provision',
+        'updated_at' => 'Verarbeitet am',
+        'created_at' => 'Bestellt am',
+    ],
+    'referral' => [
+        'created_at' => 'Beantragt am',
+        'user' => 'Antragsteller',
+        'amount' => 'Betrag',
+        'id' => 'Antrags-ID',
+    ],
+    'notification' => [
+        'address' => 'Empfänger',
+        'created_at' => 'Gesendet am',
+        'status' => 'Status',
+    ],
+    'ip' => [
+        'network_type' => 'Netzwerktyp',
+        'info' => 'Standort',
+    ],
+    'user_traffic' => [
+        'upload' => 'Upload',
+        'download' => 'Download',
+        'total' => 'Gesamt',
+        'log_time' => 'Protokollzeitpunkt',
+    ],
+    'user_data_modify' => [
+        'before' => 'Daten vorher',
+        'after' => 'Daten nachher',
+        'created_at' => 'Geändert am',
+    ],
+    'user_credit' => [
+        'before' => 'Guthaben vorher',
+        'after' => 'Guthaben nachher',
+        'amount' => 'Betrag',
+        'created_at' => 'Geändert am',
+    ],
+];

+ 37 - 0
resources/lang/de/notification.php

@@ -0,0 +1,37 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'attribute' => 'Benachrichtigung',
+    'new' => 'Sie haben :num neue Nachricht|[1,*] Sie haben :num neue Nachrichten',
+    'empty' => 'Sie haben keine neuen Nachrichten',
+    'payment_received' => 'Zahlung erhalten, Betrag: :amount. Bestelldetails ansehen',
+    'account_expired' => 'Kontoablauf Erinnerung',
+    'account_expired_content' => 'Ihr Konto läuft in :days Tagen ab. Bitte verlängern Sie rechtzeitig um den Service weiter nutzen zu können.',
+    'account_expired_blade' => 'Ihr Konto läuft in :days Tagen ab, bitte rechtzeitig verlängern',
+    'active_email' => 'Bitte verifizieren Sie innerhalb von 30 Minuten',
+    'close_ticket' => 'Ticket :id: :title geschlossen',
+    'view_web' => 'Website ansehen',
+    'view_ticket' => 'Ticket ansehen',
+    'new_ticket' => 'Neues Ticket erhalten: :title',
+    'reply_ticket' => 'Ticket beantwortet: :title',
+    'ticket_content' => 'Ticketinhalt:',
+    'node_block' => 'Knoten Blockierung Warnung',
+    'node_offline' => 'Knoten Offline Warnung',
+    'node_offline_content' => 'Anormale Knoten, eventuell offline:',
+    'block_report' => 'Blockierungsbericht:',
+    'traffic_warning' => 'Datenverbrauch Warnung',
+    'traffic_remain' => ':percent% der Daten genutzt, bitte beachten',
+    'traffic_tips' => 'Bitte Datenneusetzungsdatum beachten und Daten rational nutzen, oder nach Verbrauch aufladen',
+    'verification_account' => 'Kontoverifizierung',
+    'verification' => 'Ihr Verifizierungscode:',
+    'verification_limit' => 'Bitte innerhalb von :minutes Minuten verifizieren',
+    'data_anomaly' => 'Datenanomalie Benutzerwarnung',
+    'data_anomaly_content' => 'Benutzer:id: [Upload: :upload | Download: :download | Gesamt: :total] in der letzten Stunde',
+    'node' => [
+        'upload' => 'Upload',
+        'download' => 'Download',
+        'total' => 'Gesamt',
+    ],
+];

+ 227 - 13
resources/lang/de/user.php

@@ -1,23 +1,237 @@
 <?php
 
+declare(strict_types=1);
+
 return [
     'account' => [
-        'credit' => 'Guthaben',
-        'status' => 'Status',
-        'level' => 'Level',
+        'credit' => 'Konto Guthaben',
+        'status' => 'Kontostatus',
+        'level' => 'Konto Level',
         'group' => 'Gruppe',
-        'speed_limit' => 'Geschwindigkeitsbegrenzung',
-        'remain' => 'Verbleibende Daten',
-        'time' => 'Paketgültigkeit',
+        'speed_limit' => 'Geschwindigkeitslimit',
+        'remain' => 'Verbleibendes Datenvolumen',
+        'time' => 'Laufzeit',
         'last_login' => 'Letzte Anmeldung',
-        'reset' => '{0}Daten werden in <code id=“restTime”>:days</code> zurückgesetzt|{1} Daten werden in :days Tag zurückgesetzt|restTime|[2,*] Daten werden in :days Tagen zurückgesetzt',
-        'connect_password' => 'Proxy-Verbindungspasswort',
+        'reset' => '{0} Daten werden in <code id="restTime">:days</code> zurückgesetzt |[1,*] Noch :days Tage bis zur Datenrücksetzung',
+        'connect_password' => 'Proxy Verbindungspasswort',
         'reason' => [
-            'normal' => 'Normal',
-            'expired' => 'Abgelaufen',
-            'overused' => 'Sie haben das <code>:data</code> GB stündliche Datennutzungslimit erreicht<br/> Warten Sie <code id=“banedTime”>:min</code>, um sich abzukühlen',
-            'traffic_exhausted' => 'KEINE DATEN MEHR',
-            'unknown' => 'UNBEKANNTER FEHLER, Bitte versuchen Sie zuerst, Ihren Browser zu aktualisieren, bevor Sie sich an den Administrator wenden',
+            'normal' => 'Konto normal',
+            'expired' => 'Ihr Paket ist abgelaufen',
+            'overused' => 'Das stündliche Datenlimit von <code>:data</code> GB wurde erreicht<br/> Warte <code id="banedTime">:min</code> zum Aufheben der Drosselung',
+            'traffic_exhausted' => 'DATEN AUFGEBRAUCHT',
+            'unknown' => 'UNBEKANNTER FEHLER. Bitte Seite neu laden. Falls Problem weiter besteht, kontaktieren Sie den Admin.',
+        ],
+    ],
+    'home' => [
+        'attendance' => [
+            'attribute' => 'Einchecken',
+            'disable' => 'Einchecken deaktiviert',
+            'done' => 'Bereits eingecheckt, kommen Sie morgen wieder!',
+            'success' => 'Sie haben :data Daten erhalten',
+            'failed' => 'System ❌ Fehler',
+        ],
+        'traffic_logs' => 'Datenaufzeichnungen',
+        'announcement' => 'Ankündigungen',
+        'wechat_push' => 'WeChat Benachrichtigungsdienst',
+        'chat_group' => 'Chatgruppe',
+        'empty_announcement' => 'Keine Ankündigungen',
+    ],
+    'purchase_to_unlock' => 'Kaufen um freizuschalten',
+    'purchase_required' => 'Deaktiviert für nicht zahlende Benutzer. Bitte',
+    'attribute' => [
+        'node' => 'Knoten',
+        'data' => 'Daten',
+        'ip' => 'IP',
+        'isp' => 'ISP',
+        'address' => 'Standort',
+    ],
+    'purchase_promotion' => 'Jetzt Service kaufen!',
+    'menu' => [
+        'helps' => 'Hilfe',
+        'home' => 'Start',
+        'invites' => 'Einladen',
+        'invoices' => 'Rechnung',
+        'nodes' => 'Knoten',
+        'referrals' => 'Empfehlung',
+        'shop' => 'Shop',
+        'profile' => 'Profil',
+        'tickets' => 'Ticket',
+        'admin_dashboard' => 'Dashboard',
+    ],
+    'contact' => 'Kontakt',
+    'oauth' => [
+        'bind_title' => 'Soziales Konto verbinden',
+        'not_bind' => 'Nicht verbunden',
+        'bind' => 'Verbinden',
+        'rebind' => 'Erneut verbinden',
+        'unbind' => 'Verbindung aufheben',
+    ],
+    'coupon' => [
+        'discount' => 'Rabatt',
+        'error' => [
+            'unknown' => 'Ungültiger Coupon',
+            'used' => 'Coupon verwendet',
+            'expired' => 'Coupon abgelaufen',
+            'run_out' => 'Coupon aufgebraucht',
+            'inactive' => 'Coupon inaktiv',
+            'wait' => 'Wird um :time aktiv, bitte warten!',
+            'unmet' => 'Bedingungen nicht erfüllt',
+            'minimum' => 'Mindestbetrag ist :amount',
+            'overused' => 'Kann nur :times mal verwendet werden',
+            'users' => 'Konto nicht berechtigt',
+            'services' => 'Produkte nicht berechtigt, Bedingungen prüfen',
+        ],
+    ],
+    'error_response' => 'Fehler aufgetreten, bitte später nochmal versuchen.',
+    'invite' => [
+        'attribute' => 'Einladungscode',
+        'counts' => 'Total <code>:num</code> Einladungscodes',
+        'tips' => '<strong>:num</strong> Einladungen verbleibend, Einladungscodes verfallen nach :days Tagen',
+        'logs' => 'Einladungsprotokolle',
+        'promotion' => 'Registrierung über Ihren Code gibt Ihnen beiden :traffic Daten; Sie erhalten :referral_percent% Provision bei Käufen des Eingeladenen',
+        'generate_failed' => 'Fehler: Kontingent erreicht',
+    ],
+    'reset_data' => [
+        'action' => 'Daten zurücksetzen',
+        'cost' => 'Kosten <code>:amount</code>',
+        'cost_tips' => 'Zurücksetzen zieht :amount vom Guthaben ab!',
+        'lack' => 'Nicht genug Guthaben, bitte aufladen',
+        'logs' => 'Benutzerdaten zurückgesetzt',
+        'success' => 'Zurücksetzen erfolgreich',
+    ],
+    'referral' => [
+        'link' => 'Empfehlungslink',
+        'total' => 'Gesamt :amount (:total mal), kann über :money auszahlen',
+        'logs' => 'Provisionsprotokolle',
+        'failed' => 'Fehlgeschlagen',
+        'success' => 'Erfolg',
+        'msg' => [
+            'account' => 'Konto abgelaufen, bitte zuerst kaufen',
+            'applied' => 'Antrag existiert bereits, warte auf Bearbeitung',
+            'unfulfilled' => ':amount zum Auszahlen, weiter so!',
+            'wait' => 'Warte auf Admin Genehmigung',
+            'error' => 'Fehler beim Erstellen der Bestellung, später nochmal versuchen oder Admin kontaktieren',
         ],
     ],
+    'inviter' => 'Einlader',
+    'invitee' => 'Eingeladener',
+    'registered_at' => 'Registrierungsdatum',
+    'bought_at' => 'Kaufdatum',
+    'payment_method' => 'Zahlung',
+    'pay' => 'Bezahlen',
+    'input_coupon' => 'Coupon eingeben',
+    'recharge' => 'Aufladen',
+    'recharge_credit' => 'Guthaben aufladen',
+    'recharging' => 'Aufladen...',
+    'withdraw_commission' => 'Provision auszahlen',
+    'withdraw_at' => 'Auszahlungsdatum',
+    'withdraw_logs' => 'Auszahlsprotokolle',
+    'withdraw' => 'Auszahlen',
+    'scan_qrcode' => 'QR Code im Client scannen',
+    'shop' => [
+        'hot' => 'HEISS',
+        'limited' => 'Limitiert',
+        'change_amount' => 'Aufladebetrag ändern',
+        'change_amount_help' => 'Aufladebetrag eingeben',
+        'buy' => 'Kaufen',
+        'description' => 'Beschreibung',
+        'service' => 'Service',
+        'pay_credit' => 'Guthaben',
+        'pay_online' => 'Online Bezahlung',
+        'price' => 'Preis',
+        'quantity' => 'Menge',
+        'subtotal' => 'Zwischensumme',
+        'total' => 'Gesamt',
+        'conflict' => 'Konflikt',
+        'conflict_tips' => '<p>Aktueller Kauf wird <code>vorausbezahlt</code></p><ol><li>Wird nach Ablauf des aktuellen Pakets automatisch aktiviert!</li><li>Kann nach Bezahlung manuell aktiviert werden</li></ol>',
+        'call4help' => 'Bitte Admin kontaktieren',
+    ],
+    'service' => [
+        'node_count' => ':num qualitativ hochwertige Knoten',
+        'country_count' => ':num Länder abgedeckt',
+        'unlimited' => 'Unbegrenzt',
+    ],
+    'payment' => [
+        'error' => 'Ungültiger Aufladebetrag',
+        'creating' => 'Erstelle Zahlung...',
+        'redirect_stripe' => 'Leite um zu Stripe',
+        'qrcode_tips' => 'Scannen Sie mit <strong class="red-600">:software</strong>',
+        'close_tips' => 'Innerhalb von <code>:minutes Min.</code> abschließen, sonst schließt die Bestellung',
+        'mobile_tips' => '<strong>Handy:</strong> QR Code lange drücken -> Bild speichern -> Zahlungs-App öffnen -> Bild scannen zum Bezahlen',
+    ],
+    'invoice' => [
+        'attribute' => 'Bestellung',
+        'detail' => 'Aufzeichnungen',
+        'amount' => 'Betrag',
+        'active_prepaid_question' => 'Vorausbezahltes Paket vorzeitig aktivieren?',
+        'active_prepaid_tips' => 'Nach Aktivierung:<br>- Aktuelles Paket läuft sofort ab!<br>- Neues Ablaufdatum beginnt heute!',
+    ],
+    'node' => [
+        'info' => 'Konfig',
+        'setting' => 'Einstellungen',
+        'unstable' => 'Instabil/Wartung',
+        'rate' => ':ratio X Datenverbrauch',
+    ],
+    'subscribe' => [
+        'link' => 'Abonnement Link',
+        'tips' => 'Warnung: Nur für persönliche Nutzung, nicht teilen um Missbrauch zu vermeiden',
+        'exchange_warning' => 'Ändern des Abos führt zu:\n1. Sofortige Deaktivierung des aktuellen Abos\n2. Änderung des Verbindungspassworts',
+        'custom' => 'Benutzerdefiniertes Abo',
+        'ss_only' => 'Nur SS',
+        'ssr_only' => 'Nur SSR (inkl. SS)',
+        'v2ray_only' => 'Nur V2Ray',
+        'trojan_only' => 'Nur Trojan',
+        'error' => 'Fehler beim Ändern des Abos',
+        'info' => [
+            'title' => 'Kontozusammenfassung [Nicht Echtzeit]',
+            'upload' => 'Upload',
+            'download' => 'Download',
+            'total' => 'Paket Datenvolumen',
+        ],
+    ],
+    'ticket' => [
+        'attribute' => 'Ticket',
+        'submit_tips' => 'Ticketabschicken bestätigen?',
+        'reply_confirm' => 'Ticketantwort bestätigen?',
+        'close_tips' => 'Ticket schließen bestätigen?',
+        'close' => 'Ticket schließen',
+        'failed_closed' => 'Fehler: Bereits geschlossen',
+        'reply_placeholder' => 'Was möchten Sie sagen...',
+        'reply' => 'Antworten',
+        'close_msg' => 'Ticket: ID :id von Benutzer geschlossen',
+        'title_placeholder' => 'Beschreiben Sie Ihr Problem kurz',
+        'content_placeholder' => 'Beschreiben Sie Ihr Problem ausführlich damit wir Ihnen schnell helfen können',
+        'new' => 'Neues Ticket',
+        'working_hour' => 'Arbeitszeiten',
+        'online_hour' => 'Online Zeiten',
+        'service_tips' => 'Bitte nur eine Kontaktmethode verwenden! Mehrfachanfragen verzögern die Bearbeitung.',
+        'error' => 'Unbekannter Fehler! Admin benachrichtigen.',
+    ],
+    'traffic_logs' => [
+        '24hours' => 'Heutige Nutzung',
+        '30days' => 'Diesen Monat Nutzung',
+        'tips' => 'Hinweis: Verzögerte Daten, täglich am nächsten Tag aktualisiert, stündlich nächste Stunde',
+    ],
+    'client' => 'Client',
+    'tutorials' => 'Anleitungen',
+    'current_role' => 'Aktuelle Rolle als',
+    'knowledge' => [
+        'title' => 'Wissensdatenbank',
+        'basic' => 'Grundlagen',
+    ],
+    'manual' => [
+        'red_packet' => 'Alipay Red Packet',
+        'hint' => 'Nach QR Code Scannen auf [Weiter] klicken bis [Abschicken] um Zahlung abzuschließen!',
+        'step_1' => 'Hinweis',
+        'step_1_title' => 'Wie man manuell bezahlt',
+        'step_2' => 'Zahlung',
+        'step_2_title' => 'QR Code abrufen und bezahlen',
+        'step_3' => 'Fertig',
+        'step_3_title' => 'Auf manuelle Überprüfung warten',
+        'remark' => 'Kontobemerkung',
+        'remark_content' => 'Login-Konto eintragen für Verifizierung',
+        'payment_hint' => 'Bitte exakten Betrag bezahlen, keine Rückzahlung bei Überzahlung, Aufladen bei Unterzahlung',
+        'pre' => 'Vorheriger Schritt',
+        'next' => 'Nächster Schritt',
+    ],
 ];

+ 1 - 1
resources/lang/en.json

@@ -54,4 +54,4 @@
     "You have not responded this ticket in :num hours, System has closed your ticket.": "You have not responded this ticket in :num hours, System has closed your ticket.",
     "You must have a valid subscription to view the content in this area!": "You must have a valid subscription to view the content in this area!",
     "Your subscription has been disabled by the administrator, please contact the administrator to restore it": "Your subscription has been disabled by the administrator, please contact the administrator to restore it"
-}
+}

+ 20 - 2
resources/lang/fa.json

@@ -35,5 +35,23 @@
     "Unauthorized": "دسترسی غیر مجاز",
     "Verify Email Address": "تایید آدرس ایمیل",
     "Whoops!": "وای!",
-    "You are receiving this email because we received a password reset request for your account.": "شما این ایمیل را به دلیل درخواست رمزعبور جدید دریافت کرده‌اید."
-}
+    "You are receiving this email because we received a password reset request for your account.": "شما این ایمیل را به دلیل درخواست رمزعبور جدید دریافت کرده‌اید.",
+    "----「:job」Completed, Used :time seconds ----": "----「:job」 انجام شد، :time ثانیه طول کشید ----",
+    "[Auto Task] Blocked service: Abnormal traffic within 1 hour": "[وظیفه خودکار] سرویس مسدود شد: ترافیک غیرعادی در یک ساعت گذشته",
+    "[Auto Task] Blocked service: Run out of traffic": "[وظیفه خودکار] سرویس مسدود شد: ترافیک تمام شد",
+    "[Auto Task] Blocked Subscription: Subscription with abnormal requests within 24 hours": "[وظیفه خودکار] اشتراک مسدود شد: اشتراک با درخواست‌های غیرعادی در 24 ساعت گذشته",
+    "[Daily Task] Account Expiration: Block Login & Clear Account": "[وظیفه روزانه] حساب منقضی شد: مسدود کردن ورود و پاک کردن حساب",
+    "[Daily Task] Account Expiration: Stop Service": "[وظیفه روزانه] حساب منقضی شد: توقف سرویس",
+    "[Daily Task] Reset Account Traffic, Next Reset Date: :date": "[وظیفه روزانه] بازنشانی ترافیک حساب، تاریخ بعدی بازنشانی: :date",
+    "[Service Timer] Service Expiration": "[تایمر سرویس] انقضای سرویس",
+    "Daily Data Usage Report": "گزارش روزانه مصرف دیتا",
+    "Invoice Detail": "جزئیات فاکتور",
+    "Payment for #:sn has been received! Total amount: :amount.": "پرداخت برای #:sn دریافت شد! مبلغ کل: :amount.",
+    "Payment Received": "پرداخت دریافت شد",
+    "Subscription link receive abnormal access and banned by the system": "لینک اشتراک دسترسی غیرعادی دریافت کرد و توسط سیستم مسدود شد",
+    "Thank you for signing up! Before you start, you need to verify your email by clicking on the link we have just sent to your email! If you haven't received an email, we would be happy to send another one.": "متشکریم که ثبت نام کردید! قبل از شروع، باید ایمیل خود را با کلیک روی لینکی که تازه برای شما ارسال کردیم، تایید کنید! اگر ایمیلی دریافت نکردید، خوشحال می‌شویم یکی دیگر بفرستیم.",
+    "Verify Your Email Address": "تایید آدرس ایمیل خود",
+    "You have not responded this ticket in :num hours, System has closed your ticket.": ":num ساعت به این تیکت پاسخ نداده‌اید، سیستم تیکت شما را بسته است.",
+    "You must have a valid subscription to view the content in this area!": "برای مشاهده محتوای این بخش باید اشتراک معتبری داشته باشید!",
+    "Your subscription has been disabled by the administrator, please contact the administrator to restore it": "اشتراک شما توسط ادمین غیرفعال شده است، لطفا برای فعالسازی مجدد با ادمین تماس بگیرید."
+}

+ 100 - 0
resources/lang/fa/auth.php

@@ -0,0 +1,100 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'accept_term' => 'من شرایط و مقررات را خوانده و پذیرفته ام',
+    'active' => [
+        'attribute' => 'فعال سازی',
+        'error' => [
+            'activated' => 'حساب کاربری قبلا فعال شده است، نیازی به فعال سازی مجدد نیست',
+            'disable' => 'فعال سازی حساب کاربری غیرفعال است، می توانید بدون فعال سازی وارد شوید!',
+            'throttle' => 'محدودیت درخواست فعال سازی به اتمام رسیده است، لطفا عملیات را به صورت پیوسته انجام ندهید! در صورت بروز مشکل با :email تماس بگیرید.',
+        ],
+        'promotion' => 'حساب کاربری هنوز فعال نشده است، لطفا ابتدا ":action" را انجام دهید!',
+        'sent' => 'ایمیل فعال سازی ارسال شده است، لطفا ایمیل خود را از جمله پوشه هرزنامه بررسی کنید.',
+    ],
+    'aup' => 'شرایط و مقررات قابل قبول استفاده',
+    'captcha' => [
+        'attribute' => 'کپچا',
+        'error' => [
+            'failed' => 'تایید کپچا ناموفق بود، لطفا مجددا تلاش کنید',
+            'timeout' => 'کپچا منقضی شده است، لطفا صفحه را بارگذاری مجدد کرده و دوباره امتحان کنید.',
+        ],
+        'required' => 'لطفا کپچا را کامل کنید!',
+        'sent' => 'کپچا به ایمیل شما ارسال شده است، لطفا ایمیل خود را از جمله پوشه هرزنامه بررسی کنید.',
+    ],
+    'email' => [
+        'error' => [
+            'banned' => 'ارائه دهنده ایمیل شما مسدود شده است، لطفا از ایمیل دیگری استفاده کنید.',
+            'invalid' => 'ایمیل شما پشتیبانی نمی شود.',
+        ],
+    ],
+    'error' => [
+        'account_baned' => 'حساب کاربری شما مسدود شده است!',
+        'login_error' => 'خطای ورود، لطفا بعدا دوباره امتحان کنید!',
+        'login_failed' => 'ورود ناموفق بود، لطفا ایمیل و رمز عبور را بررسی کنید!',
+        'not_found_user' => 'حساب کاربری یافت نشد، لطفا روش های ورود دیگر را امتحان کنید.',
+        'repeat_request' => 'لطفا صفحه را بارگذاری مجدد کرده و دوباره امتحان کنید.',
+        'url_timeout' => 'لینک منقضی شده است، لطفا دوباره درخواست دهید.',
+    ],
+    'failed' => 'مشخصات وارد شده با اطلاعات ما سازگار نیست.',
+    'invite' => [
+        'attribute' => 'کد دعوت',
+        'error' => [
+            'unavailable' => 'کد دعوت نامعتبر است، لطفا دوباره امتحان کنید.',
+        ],
+        'get' => 'دریافت کد دعوت',
+        'not_required' => 'نیازی به کد دعوت نیست، می توانید به صورت مستقیم ثبت نام کنید!',
+    ],
+    'login' => 'ورود',
+    'logout' => 'خروج',
+    'maintenance' => 'تعمیر و نگهداری',
+    'maintenance_tip' => 'در حال تعمیر و نگهداری',
+    'oauth' => [
+        'bind_failed' => 'اتصال ناموفق بود',
+        'bind_success' => 'اتصال موفقیت آمیز بود',
+        'login_failed' => 'ورود از طریق شخص ثالث ناموفق بود!',
+        'rebind_success' => 'اتصال مجدد موفقیت آمیز بود',
+        'register' => 'ثبت نام سریع',
+        'register_failed' => 'ثبت نام ناموفق بود',
+        'registered' => 'قبلا ثبت نام کرده اید، لطفا مستقیما وارد شوید.',
+        'unbind_failed' => 'لغو اتصال ناموفق بود',
+        'unbind_success' => 'لغو اتصال موفقیت آمیز بود',
+    ],
+    'one-click_login' => 'ورود یک کلیکه',
+    'optional' => 'اختیاری',
+    'password' => [
+        'forget' => 'رمزعبور را فراموش کرده اید؟',
+        'new' => 'رمزعبور جدید را وارد کنید',
+        'original' => 'رمزعبور فعلی',
+        'reset' => [
+            'attribute' => 'بازنشانی رمزعبور',
+            'error' => [
+                'demo' => 'تغییر رمزعبور ادمین در نسخه نمایشی ممکن نیست.',
+                'disabled' => 'بازنشانی رمزعبور غیرفعال است، لطفا برای کمک با :email تماس بگیرید.',
+                'failed' => 'بازنشانی رمزعبور ناموفق بود.',
+                'same' => 'رمزعبور جدید نمی تواند مشابه رمزعبور قدیم باشد، لطفا دوباره وارد کنید.',
+                'throttle' => 'شما تنها می توانید رمزعبور را :time بار در 24 ساعت بازنشانی کنید، لطفا عملیات را به صورت پیوسته انجام ندهید.',
+                'wrong' => 'رمزعبور نادرست است، لطفا دوباره امتحان کنید.',
+            ],
+            'sent' => 'لینک بازنشانی به ایمیل شما ارسال شده است، لطفا ایمیل خود را از جمله پوشه هرزنامه بررسی کنید.',
+            'success' => 'رمزعبور جدید با موفقیت بازنشانی شد، اکنون می توانید وارد شوید.',
+        ],
+    ],
+    'register' => [
+        'attribute' => 'ثبت نام',
+        'code' => 'کد ثبت نام',
+        'error' => [
+            'disable' => 'متاسفانه ثبت نام کاربران جدید موقتا متوقف شده است.',
+            'throttle' => 'مکانیزم ضد هرزنامه فعال شده است، لطفا به صورت پیوسته ثبت نام نکنید!',
+        ],
+        'failed' => 'ثبت نام ناموفق بود، لطفا بعدا دوباره امتحان کنید.',
+        'promotion' => 'هنوز حساب کاربری ندارید؟ لطفا به ',
+        'success' => 'ثبت نام موفقیت آمیز بود',
+    ],
+    'remember_me' => 'مرا به خاطر بسپار',
+    'request' => 'درخواست',
+    'throttle' => 'دفعات تلاش شما برای ورود بیش از حد مجاز است. لطفا پس از :seconds ثانیه مجددا تلاش فرمایید.',
+    'tos' => 'شرایط استفاده کاربر',
+];

+ 150 - 0
resources/lang/fa/common.php

@@ -0,0 +1,150 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'hour' => '{1} ساعت|{2} ساعت',
+    'account' => 'حساب کاربری',
+    'available_date' => 'تاریخ اعتبار',
+    'created_at' => 'تاریخ ایجاد',
+    'expired_at' => 'تاریخ انقضا',
+    'updated_at' => 'آخرین به‌روزرسانی',
+    'latest_at' => 'آخرین فعالیت',
+    'back' => 'بازگشت',
+    'back_to' => 'بازگشت به :page',
+    'cancel' => 'لغو',
+    'close' => 'بستن',
+    'close_item' => 'بستن :attribute',
+    'confirm' => 'تایید',
+    'continues' => 'ادامه',
+    'open' => 'باز کردن',
+    'send' => 'ارسال',
+    'view' => 'مشاهده',
+    'reset' => 'بازنشانی',
+    'copy' => [
+        'attribute' => 'کپی',
+        'success' => 'با موفقیت کپی شد',
+        'failed' => 'کپی با شکست مواجه شد، لطفاً دستی کپی کنید',
+    ],
+    'add' => 'افزودن',
+    'free' => 'رایگان',
+    'replace' => 'جایگزین کردن',
+    'submit' => 'ثبت',
+    'submit_item' => 'ثبت :attribute',
+    'generate' => 'تولید',
+    'generate_item' => 'تولید :attribute',
+    'to_safari' => [0 => 'روی گوشه بالا سمت راست کلیک کنید', 1 => '، سپس', 2 => 'در Safari باز کنید', 3 => ' را انتخاب کنید تا تجربه بهتری داشته باشید!'],
+    'update_browser' => [0 => 'شما از یک مرورگر', 1 => 'قدیمی', 2 => 'استفاده می‌کنید. لطفاً مرورگر خود را', 3 => 'به‌روزرسانی کنید', 4 => 'تا بهترین تجربه را داشته باشید'],
+    'apply' => 'اعمال',
+    'avatar' => 'آواتار',
+    'customize' => 'سفارشی سازی',
+    'all' => 'همه',
+    'default' => 'پیش‌فرض',
+    'download' => 'دانلود',
+    'goto' => 'برو به',
+    'warning' => 'هشدار',
+    'success' => 'موفق',
+    'success_item' => ':attribute موفق بود',
+    'failed' => 'ناموفق',
+    'failed_item' => ':attribute ناموفق بود',
+    'update' => 'به‌روزرسانی',
+    'update_action' => 'به‌روزرسانی :action',
+    'none' => 'هیچ',
+    'new' => 'جدید',
+    'sorry' => 'متاسفم',
+    'applied' => ':attribute اعمال شد',
+    'active_item' => 'فعالسازی :attribute',
+    'error' => 'خطا',
+    'toggle' => 'تغییر',
+    'toggle_action' => 'تغییر :action',
+    'request_url' => 'نشانی درخواست',
+    'function' => [
+        'navigation' => 'ناوبری',
+        'menubar' => 'نوار منو',
+        'fullscreen' => 'تمام‌صفحه',
+    ],
+    'days' => [
+        'attribute' => '{1} روز|{2} روز',
+        'sun' => 'یک‌شنبه',
+        'mon' => 'دوشنبه',
+        'tue' => 'سه‌شنبه',
+        'wed' => 'چهارشنبه',
+        'thu' => 'پنج‌شنبه',
+        'fri' => 'جمعه',
+        'sat' => 'شنبه',
+        'weekend' => 'آخر هفته',
+        'work' => 'روزهای کاری',
+        'next' => 'روز بعد',
+    ],
+    'qrcode' => 'کد QR :attribute',
+    'deleted' => 'حذف شد',
+    'deleted_item' => ':attribute حذف شد',
+    'print' => 'چاپ',
+    'unlimited' => 'نامحدود',
+    'payment' => [
+        'credit' => 'اعتبار',
+        'alipay' => 'پرداخت آلی‌پی',
+        'qq' => 'کیف پول QQ',
+        'wechat' => 'پرداخت ویچت',
+        'crypto' => 'ارزهای دیجیتال',
+        'manual' => 'پرداخت دستی',
+        'status' => [
+            'wait' => 'در انتظار پرداخت',
+        ],
+    ],
+    'order' => [
+        'status' => [
+            'cancel' => 'لغو شد',
+            'complete' => 'کامل شد',
+            'prepaid' => 'پیش‌پرداخت',
+            'ongoing' => 'درحال استفاده',
+            'review' => 'در انتظار بررسی',
+        ],
+    ],
+    'recommend' => 'توصیه شده',
+    'advance' => 'پیشرفته',
+    'action' => 'عملیات',
+    'search' => 'جستجو',
+    'edit' => 'ویرایش',
+    'delete' => 'حذف',
+    'status' => [
+        'attribute' => 'وضعیت',
+        'inactive' => 'غیرفعال',
+        'disabled' => 'غیرفعال شده',
+        'banned' => 'مسدود',
+        'normal' => 'عادی',
+        'enabled' => 'فعال',
+        'expire' => 'منقضی شده',
+        'limited' => 'محدود',
+        'run_out' => 'اتمام حجم',
+        'unused' => 'استفاده نشده',
+        'used' => 'استفاده شده',
+        'closed' => 'بسته شد',
+        'applying' => 'درحال بررسی',
+        'withdrawn' => 'برداشت شده',
+        'unwithdrawn' => 'برداشت نشده',
+        'reply' => 'پاسخ داده شد',
+        'pending' => 'در انتظار',
+        'unknown' => 'نامشخص',
+        'available' => 'در دسترس',
+        'reject' => 'رد',
+        'rejected' => 'رد شد',
+        'review' => 'در انتظار بررسی',
+        'reviewed' => 'بررسی شد',
+        'paid' => 'پرداخت شد',
+        'payment_pending' => 'پرداخت در انتظار',
+        'pass' => 'تایید',
+        'send_to_credit' => 'اضافه به اعتبار',
+        'waiting_tobe_send' => 'در انتظار ارسال',
+    ],
+    'stay_unchanged' => 'خالی بماند تا تغییر نکند',
+    'random_generate' => 'خالی بماند تا تصادفی تولید شود',
+    'request_failed' => 'درخواست ناموفق بود، لطفاً دوباره امتحان کنید',
+    'convert' => 'تبدیل',
+    'import' => 'وارد کردن',
+    'or' => 'یا',
+    'more' => 'بیشتر',
+    'to' => 'به',
+    'to_be_send' => 'در انتظار ارسال',
+    'developing' => 'درحال توسعه! لطفاً منتظر بمانید',
+];

+ 34 - 0
resources/lang/fa/errors.php

@@ -0,0 +1,34 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'forbidden' => [
+        'access' => 'آی‌پی یا پروکسی ناشناس شناسایی شد، دسترسی ممنوع',
+        'bots' => 'دسترسی ربات شناسایی شد، دسترسی ممنوع',
+        'china' => 'آی‌پی یا پروکسی چین شناسایی شد، دسترسی ممنوع',
+        'oversea' => 'آی‌پی یا پروکسی خارجی شناسایی شد، دسترسی ممنوع',
+    ],
+    'log' => 'لاگ',
+    'refresh' => 'بازخوانی',
+    'refresh_page' => 'لطفاً صفحه را بازخوانی کرده و دوباره امتحان کنید',
+    'report' => 'خطا حامل گزارشی بود:',
+    'safe_enter' => 'ورود امن',
+    'safe_code' => 'لطفاً کد امنیتی را وارد کنید',
+    'title' => '⚠️ خطا رخ داد',
+    'unsafe_enter' => 'ورود ناامن',
+    'visit' => 'لطفاً به آدرس زیر مراجعه کنید',
+    'whoops' => 'اوه!',
+    'get_ip' => 'دریافت اطلاعات آی‌پی با شکست مواجه شد',
+    'subscribe' => [
+        'unknown' => 'لینک اشتراک نامعتبر! لطفاً لینک جدید دریافت کنید',
+        'sub_baned' => 'اشتراک مسدود شده است! برای جزئیات به وب‌سایت مراجعه کنید',
+        'user' => 'لینک اشتباه، حساب کاربری وجود ندارد!',
+        'user_disable' => 'حساب کاربری غیرفعال شده است! با پشتیبانی تماس بگیرید!',
+        'baned_until' => 'حساب کاربری تا :time مسدود شده است، لطفاً منتظر باز شدن بمانید!',
+        'out' => 'حجم تمام شده است! لطفاً حجم بیشتری خریداری کنید یا حجم را بازنشانی کنید!',
+        'expired' => 'حساب کاربری منقضی شده است! لطفاً خرید خود را تمدید کنید!',
+        'question' => 'مشکل در حساب کاربری! برای جزئیات به وب‌سایت مراجعه کنید',
+        'none' => 'هیچ گره در دسترسی نیست',
+    ],
+];

+ 232 - 0
resources/lang/fa/model.php

@@ -0,0 +1,232 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'user' => [
+        'id' => 'شناسه کاربر',
+        'attribute' => 'کاربر',
+        'nickname' => 'نام مستعار',
+        'username' => 'نام کاربری',
+        'password' => 'گذرواژه',
+        'credit' => 'موجودی',
+        'invite_num' => 'دعوت‌نامه‌های موجود',
+        'reset_date' => 'تاریخ بازنشانی ترافیک',
+        'port' => 'پورت',
+        'traffic_used' => 'ترافیک مصرف شده',
+        'service' => 'پروکسی',
+        'group' => 'گروه',
+        'account_status' => 'وضعیت حساب',
+        'proxy_status' => 'وضعیت پروکسی',
+        'expired_date' => 'تاریخ انقضا',
+        'role' => 'نقش',
+        'wechat' => 'ویچت',
+        'qq' => 'کیوکیو',
+        'remark' => 'یادداشت',
+        'uuid' => 'شناسه UUID',
+        'proxy_passwd' => 'گذرواژه پروکسی',
+        'proxy_method' => 'روش رمزنگاری',
+        'usable_traffic' => 'ترافیک مجاز',
+        'proxy_protocol' => 'پروتکل پروکسی',
+        'proxy_obfs' => 'ابهام‌زدایی',
+        'speed_limit' => 'محدوده سرعت',
+        'inviter' => 'دعوت‌کننده',
+        'created_date' => 'تاریخ ثبت‌نام',
+    ],
+    'common' => [
+        'extend' => 'اطلاعات تکمیلی',
+        'sort' => 'ترتیب',
+        'description' => 'توضیحات',
+        'type' => 'نوع',
+        'level' => 'سطح',
+    ],
+    'country' => [
+        'code' => 'کد کشور',
+        'icon' => 'پرچم',
+        'name' => 'نام کشور',
+    ],
+    'subscribe' => [
+        'code' => 'کد اشتراک',
+        'req_times' => 'تعداد درخواست‌ها',
+        'updated_at' => 'آخرین درخواست',
+        'ban_time' => 'زمان مسدودسازی',
+        'ban_desc' => 'دلیل مسدودسازی',
+        'req_ip' => 'آی‌پی درخواست',
+        'req_header' => 'هدر درخواست',
+    ],
+    'oauth' => [
+        'type' => 'کانال',
+        'identifier' => 'شناسه',
+    ],
+    'user_group' => [
+        'attribute' => 'گروه کاربری',
+        'name' => 'نام',
+        'nodes' => 'گره‌ها',
+    ],
+    'node' => [
+        'attribute' => 'گره',
+        'id' => 'شناسه گره',
+        'name' => 'نام',
+        'domain' => 'دامنه',
+        'static' => 'وضعیت آنلاین',
+        'online_user' => 'کاربران آنلاین',
+        'data_consume' => 'مصرف دیتا',
+        'data_rate' => 'ضریب دیتا',
+        'ddns' => 'DDNS',
+        'ipv4' => 'آی‌پی ورژن 4',
+        'ipv6' => 'آی‌پی ورژن 6',
+        'push_port' => 'پورت پوش',
+        'rule_group' => 'گروه قوانین',
+        'traffic_limit' => 'محدودیت سرعت',
+        'client_limit' => 'محدودیت دستگاه',
+        'label' => 'برچسب',
+        'country' => 'کشور',
+        'udp' => 'UDP',
+        'display' => 'نمایش و اشتراک',
+        'detection' => 'شناسایی مسدودسازی',
+        'method' => 'روش رمزنگاری',
+        'protocol' => 'پروتکل',
+        'protocol_param' => 'پارامتر پروتکل',
+        'obfs' => 'ابهام‌زدایی',
+        'obfs_param' => 'پارامتر ابهام‌زدایی',
+        'single' => 'پورت تکی',
+        'transfer' => 'ترانزیت',
+        'service_port' => 'پورت سرویس',
+        'single_passwd' => 'گذرواژه [تک پورت]',
+        'v2_alter_id' => 'شناسه جایگزین',
+        'v2_net' => 'شبکه',
+        'v2_cover' => 'کاور',
+        'v2_host' => 'میزبان',
+        'v2_path' => 'مسیر | کلید',
+        'v2_sni' => 'SNI',
+        'v2_tls' => 'TLS',
+        'v2_tls_provider' => 'پیکربندی TLS',
+        'relay_port' => 'پورت ترانزیت',
+    ],
+    'node_auth' => [
+        'attribute' => 'احراز هویت گره',
+        'key' => 'کلید <small>برای گره</small>',
+        'secret' => 'کلید معکوس',
+    ],
+    'node_cert' => [
+        'attribute' => 'گواهینامه',
+        'domain' => 'دامنه',
+        'key' => 'کلید',
+        'pem' => 'PEM',
+        'issuer' => 'صادر کننده',
+        'signed_date' => 'تاریخ امضا',
+        'expired_date' => 'تاریخ انقضا',
+    ],
+    'order' => [
+        'attribute' => 'سفارش',
+        'id' => 'شناسه سفارش',
+        'original_price' => 'قیمت اصلی',
+        'price' => 'قیمت پرداختی',
+        'pay_way' => 'روش پرداخت',
+        'status' => 'وضعیت',
+    ],
+    'goods' => [
+        'attribute' => 'کالا',
+        'name' => 'نام',
+        'price' => 'قیمت',
+        'category' => 'دسته‌بندی',
+        'renew' => 'قیمت تمدید ترافیک',
+        'user_limit' => 'محدودیت سرعت کاربر',
+        'period' => 'دوره بازنشانی',
+        'traffic' => 'ترافیک',
+        'invite_num' => 'تعداد کدهای دعوت',
+        'limit_num' => 'محدودیت خرید',
+        'available_date' => 'مدت اعتبار',
+        'hot' => 'پرفروش',
+        'color' => 'رنگ',
+        'logo' => 'لوگو',
+        'info' => 'اطلاعات سفارشی',
+    ],
+    'rule' => [
+        'attribute' => 'قانون',
+        'name' => 'توضیحات',
+        'pattern' => 'مقدار',
+    ],
+    'rule_group' => [
+        'attribute' => 'گروه قوانین',
+        'name' => 'نام',
+        'type' => 'نوع',
+        'rules' => 'قوانین',
+    ],
+    'role' => [
+        'attribute' => 'نقش',
+        'name' => 'نام',
+        'permissions' => 'مجوزها',
+    ],
+    'permission' => [
+        'attribute' => 'مجوز',
+        'description' => 'توضیحات',
+        'name' => 'نام مسیر',
+    ],
+    'article' => [
+        'attribute' => 'مقاله',
+        'category' => 'دسته‌بندی',
+        'language' => 'زبان',
+        'logo' => 'کاور',
+        'created_at' => 'تاریخ انتشار',
+        'updated_at' => 'تاریخ به‌روزرسانی',
+    ],
+    'coupon' => [
+        'attribute' => 'کوپن',
+        'name' => 'نام',
+        'sn' => 'کد',
+        'logo' => 'تصویر',
+        'value' => 'ارزش',
+        'priority' => 'اولویت',
+        'usable_times' => 'محدودیت استفاده',
+        'minimum' => 'حداقل خرید',
+        'used' => 'محدودیت فردی',
+        'levels' => 'محدود به سطوح',
+        'groups' => 'محدود به گروه‌ها',
+        'users_whitelist' => 'لیست سفید کاربران',
+        'users_blacklist' => 'لیست سیاه کاربران',
+        'services_whitelist' => 'لیست سفید کالاها',
+        'services_blacklist' => 'لیست سیاه کالاها',
+        'newbie' => 'منحصر به کاربران جدید',
+        'num' => 'تعداد',
+    ],
+    'aff' => [
+        'invitee' => 'خریدار',
+        'amount' => 'مبلغ خرید',
+        'commission' => 'کمیسیون',
+        'updated_at' => 'زمان پردازش',
+        'created_at' => 'زمان سفارش',
+    ],
+    'referral' => [
+        'created_at' => 'زمان درخواست',
+        'user' => 'حساب درخواست‌کننده',
+        'amount' => 'مقدار درخواستی',
+        'id' => 'شناسه درخواست',
+    ],
+    'notification' => [
+        'address' => 'دریافت‌کننده',
+        'created_at' => 'زمان ارسال',
+        'status' => 'وضعیت',
+    ],
+    'ip' => [
+        'network_type' => 'نوع شبکه',
+        'info' => 'مکان',
+    ],
+    'user_traffic' => [
+        'upload' => 'آپلود',
+        'download' => 'دانلود',
+        'total' => 'کل',
+        'log_time' => 'زمان ثبت',
+    ],
+    'user_data_modify' => [
+        'before' => 'قبلی',
+        'after' => 'بعدی',
+        'created_at' => 'زمان تغییر',
+    ],
+    'user_credit' => [
+        'before' => 'قبلی',
+        'after' => 'بعدی',
+        'amount' => 'مقدار',
+        'created_at' => 'زمان تغییر',
+    ],
+];

+ 37 - 0
resources/lang/fa/notification.php

@@ -0,0 +1,37 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'attribute' => 'اعلان',
+    'new' => 'شما :num پیام جدید دارید',
+    'empty' => 'شما هیچ پیام جدیدی ندارید',
+    'payment_received' => 'پرداخت دریافت شد، مبلغ: :amount. جزئیات سفارش را مشاهده کنید',
+    'account_expired' => 'یادآوری انقضای حساب',
+    'account_expired_content' => 'حساب شما :days روز دیگر منقضی می‌شود. لطفاً برای ادامه استفاده از خدمات ما، سریعاً تمدید کنید.',
+    'account_expired_blade' => 'حساب شما :days روز دیگر منقضی می‌شود، لطفاً سریعاً تمدید کنید',
+    'active_email' => 'لطفاً ظرف 30 دقیقه تایید کنید',
+    'close_ticket' => 'تیکت :id با عنوان :title بسته شد',
+    'view_web' => 'مشاهده وب‌سایت',
+    'view_ticket' => 'مشاهده این تیکت',
+    'new_ticket' => 'تیکت جدیدی با عنوان :title دریافت شد',
+    'reply_ticket' => 'پاسخ تیکت :title',
+    'ticket_content' => 'محتوای تیکت:',
+    'node_block' => 'اخطار مسدود شدن گره',
+    'node_offline' => 'اخطار آفلاین شدن گره',
+    'node_offline_content' => 'گره‌های غیرعادی زیر ممکن است آفلاین شده باشند:',
+    'block_report' => 'گزارش جزئیات مسدودسازی:',
+    'traffic_warning' => 'هشدار مصرف ترافیک',
+    'traffic_remain' => ':percent% از ترافیک شما مصرف شده است، لطفاً توجه کنید',
+    'traffic_tips' => 'لطفاً به تاریخ بازنشانی ترافیک توجه کنید، از ترافیک به طور منطقی استفاده کنید یا پس از تمام شدن آن شارژ کنید',
+    'verification_account' => 'تایید حساب کاربری',
+    'verification' => 'کد تایید شما:',
+    'verification_limit' => 'لطفاً ظرف :minutes دقیقه تایید کنید',
+    'data_anomaly' => 'اخطار کاربر با ترافیک غیرمعمول',
+    'data_anomaly_content' => 'کاربر :id طی 1 ساعت گذشته (آپلود: :upload | دانلود: :download | مجموع: :total)',
+    'node' => [
+        'upload' => 'آپلود ترافیک',
+        'download' => 'دانلود ترافیک',
+        'total' => 'ترافیک کل',
+    ],
+];

+ 237 - 0
resources/lang/fa/user.php

@@ -0,0 +1,237 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'account' => [
+        'credit' => 'موجودی حساب',
+        'status' => 'وضعیت حساب',
+        'level' => 'سطح حساب',
+        'group' => 'گروه',
+        'speed_limit' => 'محدودیت سرعت',
+        'remain' => 'ترافیک باقیمانده',
+        'time' => 'مدت زمان',
+        'last_login' => 'آخرین ورود',
+        'reset' => '{0} <code id="restTime">:days</code> روز دیگر ترافیک بازنشانی می‌شود|{1} :days روز دیگر ترافیک بازنشانی می‌شود |[2,*] :days روز دیگر ترافیک بازنشانی می‌شود',
+        'connect_password' => 'گذرواژه اتصال پروکسی',
+        'reason' => [
+            'normal' => 'حساب عادی است',
+            'expired' => 'مدت اعتبار شما به پایان رسیده است',
+            'overused' => 'شما محدودیت ساعتی <code>:data</code> گیگابایت را رسیده‌اید<br/> :min دقیقه دیگر محدودیت برداشته می‌شود',
+            'traffic_exhausted' => 'ترافیک تمام شد',
+            'unknown' => 'خطای ناشناس. لطفاً ابتدا مرورگر خود را رفرش کنید، سپس برای رفع مشکل با مدیر تماس بگیرید',
+        ],
+    ],
+    'home' => [
+        'attendance' => [
+            'attribute' => 'حضور و غیاب',
+            'disable' => 'غیرفعال',
+            'done' => 'قبلاً ثبت شده است، فردا دوباره بیایید!',
+            'success' => ':data ترافیک دریافت کردید',
+            'failed' => 'خطای سیستم ❌',
+        ],
+        'traffic_logs' => 'ثبت ترافیک',
+        'announcement' => 'اعلان‌ها',
+        'wechat_push' => 'ارسال اعلان به ویچت',
+        'chat_group' => 'گروه چت',
+        'empty_announcement' => 'بدون اعلان',
+    ],
+    'purchase_to_unlock' => 'خرید برای باز کردن',
+    'purchase_required' => 'برای کاربران رایگان غیرفعال است، لطفاً',
+    'attribute' => [
+        'node' => 'گره',
+        'data' => 'ترافیک',
+        'ip' => 'آی‌پی',
+        'isp' => 'اینترنت',
+        'address' => 'موقعیت',
+    ],
+    'purchase_promotion' => 'اکنون خدمات را خریداری کنید!',
+    'menu' => [
+        'helps' => 'راهنما',
+        'home' => 'خانه',
+        'invites' => 'دعوت',
+        'invoices' => 'صورتحساب',
+        'nodes' => 'گره‌ها',
+        'referrals' => 'ارجاع',
+        'shop' => 'فروشگاه',
+        'profile' => 'پروفایل',
+        'tickets' => 'تیکت',
+        'admin_dashboard' => 'پنل مدیریت',
+    ],
+    'contact' => 'تماس با ما',
+    'oauth' => [
+        'bind_title' => 'اتصال حساب اجتماعی',
+        'not_bind' => 'اتصال نشده',
+        'bind' => 'اتصال',
+        'rebind' => 'اتصال مجدد',
+        'unbind' => 'جدا کردن',
+    ],
+    'coupon' => [
+        'discount' => 'تخفیف',
+        'error' => [
+            'unknown' => 'کد تخفیف نامعتبر',
+            'used' => 'کد تخفیف استفاده شده است',
+            'expired' => 'کد تخفیف منقضی شده است',
+            'run_out' => 'کد تخفیف تمام شده است',
+            'inactive' => 'کد تخفیف غیرفعال است',
+            'wait' => ':time فعال می‌شود، لطفاً منتظر بمانید!',
+            'unmet' => 'شرایط برآورده نشده است',
+            'minimum' => 'حداقل مبلغ :amount است',
+            'overused' => 'فقط :times بار قابل استفاده است',
+            'users' => 'حساب واجد شرایط نیست',
+            'services' => 'کالا واجد شرایط نیست، شرایط را بررسی کنید',
+        ],
+    ],
+    'error_response' => 'خطا رخ داده است، لطفاً بعداً دوباره امتحان کنید.',
+    'invite' => [
+        'attribute' => 'کد دعوت',
+        'counts' => 'مجموع <code>:num</code> کد دعوت',
+        'tips' => '<strong>:num</strong> دعوت باقی مانده است، کدهای دعوت :days روز پس از ایجاد منقضی می‌شوند',
+        'logs' => 'ثبت دعوت',
+        'promotion' => 'هر دو هنگام ثبت‌نام از طریق کد شما :traffic ترافیک دریافت می‌کنند؛ شما :referral_percent% کمیسیون دریافت می‌کنید هنگامی که دعوت‌شده خرید می‌کند',
+        'generate_failed' => 'ناموفق: سقف تعداد رسیده شده است',
+    ],
+    'reset_data' => [
+        'action' => 'بازنشانی ترافیک',
+        'cost' => 'هزینه <code>:amount</code>',
+        'cost_tips' => 'بازنشانی :amount کسر می‌کند!',
+        'lack' => 'موجودی کم است، لطفاً شارژ کنید',
+        'logs' => 'ترافیک کاربر بازنشانی شد',
+        'success' => 'بازنشانی موفقیت‌آمیز بود',
+    ],
+    'referral' => [
+        'link' => 'لینک ارجاع',
+        'total' => 'جمع :amount (:total بار)، بیش از :money قابل برداشت است',
+        'logs' => 'ثبت کمیسیون',
+        'failed' => 'ناموفق',
+        'success' => 'موفق',
+        'msg' => [
+            'account' => 'حساب منقضی شده است، لطفاً ابتدا خرید کنید',
+            'applied' => 'درخواست موجود است، منتظر پردازش بمانید',
+            'unfulfilled' => ':amount برای برداشت، ادامه دهید!',
+            'wait' => 'در انتظار تأیید مدیر',
+            'error' => 'خطا در ایجاد سفارش، دوباره امتحان کنید یا با مدیر تماس بگیرید',
+        ],
+    ],
+    'inviter' => 'دعوت‌کننده',
+    'invitee' => 'دعوت‌شده',
+    'registered_at' => 'تاریخ ثبت‌نام',
+    'bought_at' => 'تاریخ خرید',
+    'payment_method' => 'پرداخت',
+    'pay' => 'پرداخت',
+    'input_coupon' => 'وارد کردن کد تخفیف',
+    'recharge' => 'شارژ',
+    'recharge_credit' => 'شارژ اعتبار',
+    'recharging' => 'درحال شارژ...',
+    'withdraw_commission' => 'برداشت کمیسیون',
+    'withdraw_at' => 'تاریخ برداشت',
+    'withdraw_logs' => 'ثبت برداشت‌ها',
+    'withdraw' => 'برداشت',
+    'scan_qrcode' => 'اسکن کد QR در کلاینت',
+    'shop' => [
+        'hot' => 'داغ',
+        'limited' => 'محدود',
+        'change_amount' => 'مبلغ شارژ',
+        'change_amount_help' => 'مبلغ شارژ را وارد کنید',
+        'buy' => 'خرید',
+        'description' => 'توضیحات',
+        'service' => 'سرویس',
+        'pay_credit' => 'اعتبار',
+        'pay_online' => 'پرداخت آنلاین',
+        'price' => 'قیمت',
+        'quantity' => 'تعداد',
+        'subtotal' => 'جمع کل',
+        'total' => 'جمع',
+        'conflict' => 'تداخل',
+        'conflict_tips' => '<p>خرید کنونی به صورت <code>پیش‌پرداخت</code> خواهد بود</p><ol><li>پس از انقضای بسته فعلی به طور خودکار فعال می‌شود!</li><li>پس از پرداخت می‌توانید به طور دستی فعال کنید</li></ol>',
+        'call4help' => 'لطفاً با پشتیبان تماس بگیرید',
+    ],
+    'service' => [
+        'node_count' => ':num گره باکیفیت',
+        'country_count' => 'پوشش :num کشور',
+        'unlimited' => 'نامحدود',
+    ],
+    'payment' => [
+        'error' => 'مبلغ شارژ نامعتبر است',
+        'creating' => 'درحال ایجاد پرداخت...',
+        'redirect_stripe' => 'انتقال به استرایپ',
+        'qrcode_tips' => 'اسکن با <strong class="red-600">:software</strong>',
+        'close_tips' => 'لطفاً ظرف <code>:minutes دقیقه</code> تکمیل کنید وگرنه سفارش بسته می‌شود',
+        'mobile_tips' => '<strong>موبایل:</strong> نگه داشتن طولانی روی کد QR -> ذخیره تصویر -> باز کردن برنامه پرداخت -> اسکن تصویر برای پرداخت',
+    ],
+    'invoice' => [
+        'attribute' => 'سفارش',
+        'detail' => 'جزئیات',
+        'amount' => 'مبلغ',
+        'active_prepaid_question' => 'فعال‌سازی پیش‌پرداخت از پیش؟',
+        'active_prepaid_tips' => 'پس از فعال‌سازی:<br>- بسته فعلی بلافاصله منقضی می‌شود!<br>- تاریخ انقضا از امروز محاسبه می‌شود!',
+    ],
+    'node' => [
+        'info' => 'اطلاعات پیکربندی',
+        'setting' => 'تنظیمات پروکسی',
+        'unstable' => 'خط ناپایدار/در حال نگهداری',
+        'rate' => ':ratio برابر مصرف ترافیک',
+    ],
+    'subscribe' => [
+        'link' => 'لینک اشتراک',
+        'tips' => 'هشدار: این لینک اشتراک تنها برای استفاده شخصی است، لطفاً آن را به اشتراک نگذارید تا از شناسایی ترافیک غیرمعمول و مسدودسازی جلوگیری شود.',
+        'exchange_warning' => 'تغییر آدرس اشتراک منجر می‌شود به:\n1. غیرفعال شدن فوری آدرس قبلی\n2. تغییر گذرواژه اتصال',
+        'custom' => 'اشتراک سفارشی',
+        'ss_only' => 'فقط SS',
+        'ssr_only' => 'فقط SSR (شامل SS)',
+        'v2ray_only' => 'فقط V2Ray',
+        'trojan_only' => 'فقط Trojan',
+        'error' => 'خطا در تغییر آدرس اشتراک',
+        'info' => [
+            'title' => 'خلاصه حساب [غیر بلادرنگ]',
+            'upload' => 'آپلود ترافیک',
+            'download' => 'دانلود ترافیک',
+            'total' => 'ترافیک بسته',
+        ],
+    ],
+    'ticket' => [
+        'attribute' => 'تیکت',
+        'submit_tips' => 'تایید ارسال تیکت؟',
+        'reply_confirm' => 'تایید پاسخ تیکت؟',
+        'close_tips' => 'تایید بستن این تیکت؟',
+        'close' => 'بستن تیکت',
+        'failed_closed' => 'خطا: این تیکت قبلاً بسته شده است',
+        'reply_placeholder' => 'چیزی بگویید...',
+        'reply' => 'پاسخ',
+        'close_msg' => 'تیکت: شناسه :id توسط کاربر بسته شد',
+        'title_placeholder' => 'مشکل خود را مختصراً توضیح دهید',
+        'content_placeholder' => 'مشکل خود را به طور مفصل توضیح دهید تا بتوانیم به سرعت به شما کمک کنیم',
+        'new' => 'ایجاد تیکت جدید',
+        'working_hour' => 'ساعات کاری',
+        'online_hour' => 'ساعات آنلاین',
+        'service_tips' => 'لطفاً تنها از یک روش تماس استفاده کنید! درخواست‌های مکرر باعث تاخیر در پاسخ می‌شود',
+        'error' => 'خطای ناشناخته! لطفاً به مدیر اطلاع دهید',
+    ],
+    'traffic_logs' => [
+        '24hours' => 'مصرف امروز',
+        '30days' => 'مصرف این ماه',
+        'tips' => 'توجه: آمار ترافیک با تاخیر به‌روزرسانی می‌شود. روزانه در روز بعد، ساعتی در ساعت بعد.',
+    ],
+    'client' => 'کلاینت',
+    'tutorials' => 'آموزش‌ها',
+    'current_role' => 'نقش فعلی به عنوان',
+    'knowledge' => [
+        'title' => 'پایگاه دانش',
+        'basic' => 'پایه',
+    ],
+    'manual' => [
+        'red_packet' => 'دریافت پاکت قرمز آلی‌پی',
+        'hint' => 'پس از اسکن کد، تا [ارسال] ادامه دهید تا پرداخت کامل شود!!!',
+        'step_1' => 'توجه',
+        'step_1_title' => 'چگونه پرداخت دستی انجام دهیم',
+        'step_2' => 'پرداخت',
+        'step_2_title' => 'دریافت کد QR و پرداخت',
+        'step_3' => 'تکمیل',
+        'step_3_title' => 'در انتظار تایید دستی پرداخت',
+        'remark' => 'توضیح حساب',
+        'remark_content' => 'حساب ورود خود را وارد کنید تا در بررسی دستی تطبیق داده شود!',
+        'payment_hint' => 'لطفاً مبلغ دقیق را پرداخت کنید (اضافه‌پرداختی عودت داده نمی‌شود، کم‌پرداختی باید جبران شود)',
+        'pre' => 'قبلی',
+        'next' => 'بعدی',
+    ],
+];

+ 19 - 2
resources/lang/vi.json

@@ -36,5 +36,22 @@
     "Verify Email Address": "Xác Minh Địa Chỉ Email",
     "Whoops!": "Rất tiếc!",
     "You are receiving this email because we received a password reset request for your account.": "Bạn nhận được email này vì chúng tôi đã nhận được yêu cầu đặt lại mật khẩu cho tài khoản của bạn.",
-    "Verify Your Email Address": "Xác Minh Địa Chỉ Email Của Bạn"
-}
+    "----「:job」Completed, Used :time seconds ----": "----「:job」Đã hoàn thành, Mất :time giây ----",
+    "[Auto Task] Blocked service: Abnormal traffic within 1 hour": "[Nhiệm vụ Tự động] Chặn dịch vụ: Lưu lượng bất thường trong 1 giờ",
+    "[Auto Task] Blocked service: Run out of traffic": "[Nhiệm vụ Tự động] Chặn dịch vụ: Hết dữ liệu",
+    "[Auto Task] Blocked Subscription: Subscription with abnormal requests within 24 hours": "[Nhiệm vụ Tự động] Chặn đăng ký: Đăng ký có yêu cầu bất thường trong vòng 24 giờ",
+    "[Daily Task] Account Expiration: Block Login & Clear Account": "[Nhiệm vụ Hàng ngày] Hết hạn Tài khoản: Chặn Đăng nhập & Xóa Tài khoản",
+    "[Daily Task] Account Expiration: Stop Service": "[Nhiệm vụ Hàng ngày] Hết hạn Tài khoản: Ngừng Dịch vụ",
+    "[Daily Task] Reset Account Traffic, Next Reset Date: :date": "[Nhiệm vụ Hàng ngày] Đặt lại Dữ liệu Tài khoản, Ngày đặt lại tiếp theo: :date",
+    "[Service Timer] Service Expiration": "[Hẹn giờ Dịch vụ] Dịch vụ đã Hết hạn",
+    "Daily Data Usage Report": "Báo cáo Sử dụng Dữ liệu Hàng ngày ",
+    "Invoice Detail": "Chi tiết Hóa đơn",
+    "Payment for #:sn has been received! Total amount: :amount.": "Đã nhận Thanh toán cho #:sn! Tổng số tiền: :amount.",
+    "Payment Received": "Đã Nhận Thanh toán",
+    "Subscription link receive abnormal access and banned by the system": "订阅链接访问异常,系统自动封禁",
+    "Thank you for signing up! Before you start, you need to verify your email by clicking on the link we have just sent to your email! If you haven't received an email, we would be happy to send another one.": "感谢您的注册! 在开始之前,您需要通过点击我们刚刚发送至您邮箱中的链接来验证您的电子邮件! 如果您没有收到电子邮件,我们很乐意再发送一封给您。",
+    "Verify Your Email Address": "Xác Minh Địa Chỉ Email Của Bạn",
+    "You have not responded this ticket in :num hours, System has closed your ticket.": "超过:num小时未回复工单,系统已自动关闭了您的工单",
+    "You must have a valid subscription to view the content in this area!": "您必须拥有有效套餐才可以查看该区域的内容!",
+    "Your subscription has been disabled by the administrator, please contact the administrator to restore it": "订阅功能被禁用,请联系管理员恢复"
+}

+ 801 - 0
resources/lang/vi/admin.php

@@ -0,0 +1,801 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'dashboard' => [
+        'users' => 'Tổng số người dùng',
+        'available_users' => 'Người dùng hoạt động',
+        'paid_users' => 'Người dùng trả phí',
+        'active_days_users' => 'Người dùng hoạt động trong :days ngày qua',
+        'inactive_days_users' => 'Người dùng không hoạt động trên :days ngày',
+        'online_users' => 'Đang online',
+        'expiring_users' => 'Sắp hết hạn',
+        'overuse_users' => 'Người dùng sử dụng dữ liệu nhiều [≥90%]',
+        'abnormal_users' => 'Người dùng lưu lượng bất thường trong 1 giờ qua',
+        'nodes' => 'Số lượng node',
+        'maintaining_nodes' => 'Node đang bảo trì',
+        'current_month_traffic_consumed' => 'Tổng lưu lượng đã sử dụng trong tháng',
+        'days_traffic_consumed' => 'Tổng lưu lượng đã sử dụng trong :days ngày qua',
+        'orders' => 'Tổng số đơn hàng',
+        'online_orders' => 'Đơn hàng thanh toán trực tuyến',
+        'succeed_orders' => 'Đơn hàng đã thanh toán',
+        'credit' => 'Tổng số dư tài khoản',
+        'withdrawing_commissions' => 'Hoa hồng đang chờ rút',
+        'withdrawn_commissions' => 'Hoa hồng đã rút',
+    ],
+    'action' => [
+        'edit_item' => 'Chỉnh sửa :attribute',
+        'add_item' => 'Thêm :attribute',
+    ],
+    'confirm' => [
+        'delete' => [0 => 'Xác nhận xóa :attribute [', 1 => ']?'],
+        'continues' => 'Xác nhận tiếp tục?',
+        'export' => 'Xác nhận xuất toàn bộ?',
+    ],
+    'user_dashboard' => 'Bảng điều khiển người dùng',
+    'menu' => [
+        'dashboard' => 'Bảng điều khiển',
+        'user' => [
+            'attribute' => 'Người dùng',
+            'list' => 'Quản lý người dùng',
+            'oauth' => 'Ủy quyền',
+            'group' => 'Nhóm người dùng',
+            'credit_log' => 'Lịch sử giao dịch',
+            'subscribe' => 'Quản lý đăng ký',
+        ],
+        'rbac' => [
+            'attribute' => 'Phân quyền',
+            'permission' => 'Danh sách quyền',
+            'role' => 'Danh sách vai trò',
+        ],
+        'customer_service' => [
+            'attribute' => 'Hỗ trợ',
+            'ticket' => 'Vé hỗ trợ',
+            'article' => 'Quản lý bài viết',
+            'push' => 'Đẩy thông báo',
+            'mail' => 'Email',
+        ],
+        'node' => [
+            'attribute' => 'Node',
+            'list' => 'Quản lý node',
+            'auth' => 'Ủy quyền API',
+            'cert' => 'Chứng chỉ',
+        ],
+        'rule' => [
+            'attribute' => 'Quy tắc kiểm tra',
+            'list' => 'Danh sách quy tắc',
+            'group' => 'Nhóm quy tắc',
+            'trigger' => 'Bản ghi kích hoạt',
+        ],
+        'shop' => [
+            'attribute' => 'Cửa hàng',
+            'goods' => 'Quản lý sản phẩm',
+            'coupon' => 'Quản lý mã giảm giá',
+            'order' => 'Đơn hàng',
+        ],
+        'promotion' => [
+            'attribute' => 'Liên kết',
+            'invite' => 'Quản lý giới thiệu',
+            'withdraw' => 'Quản lý rút tiền',
+            'rebate_flow' => 'Lịch sử hoa hồng',
+        ],
+        'analysis' => [
+            'attribute' => 'Phân tích',
+            'accounting' => 'Báo cáo kế toán',
+            'user_flow' => 'Luồng người dùng',
+        ],
+        'log' => [
+            'attribute' => 'Nhật ký',
+            'traffic' => 'Sử dụng dữ liệu',
+            'traffic_flow' => 'Luồng dữ liệu',
+            'service_ban' => 'Lịch sử cấm',
+            'online_logs' => 'Nhật ký online',
+            'online_monitor' => 'Giám sát online',
+            'notify' => 'Nhật ký thông báo',
+            'payment_callback' => 'Nhật ký thanh toán',
+            'system' => 'Nhật ký hệ thống',
+        ],
+        'tools' => [
+            'attribute' => 'Công cụ',
+            'decompile' => 'Giải mã',
+            'convert' => 'Chuyển đổi định dạng',
+            'import' => 'Nhập dữ liệu',
+            'analysis' => 'Phân tích nhật ký',
+        ],
+        'setting' => [
+            'attribute' => 'Cài đặt',
+            'email_suffix' => 'Lọc email',
+            'universal' => 'Chung',
+            'system' => 'Hệ thống',
+        ],
+    ],
+    'user' => [
+        'massive' => [
+            'text' => 'Số lượng tài khoản tạo',
+            'failed' => 'Tạo tài khoản thất bại',
+            'succeed' => 'Tạo tài khoản thành công',
+            'note' => 'Tạo hàng loạt tài khoản qua hệ thống',
+        ],
+        'proxy_info' => 'Thông tin cấu hình',
+        'traffic_monitor' => 'Thống kê lưu lượng',
+        'online_monitor' => 'Giám sát online',
+        'reset_traffic' => 'Đặt lại dữ liệu',
+        'user_view' => 'Chuyển sang giao diện người dùng',
+        'connection_test' => 'Kiểm tra kết nối',
+        'counts' => 'Tổng <code>:num</code> tài khoản',
+        'reset_confirm' => [0 => 'Xác nhận đặt lại dữ liệu của [', 1 => ']?'],
+        'info' => [
+            'account' => 'Thông tin tài khoản',
+            'proxy' => 'Thông tin proxy',
+            'switch' => 'Chuyển đổi',
+            'reset_date_hint' => 'Ngày đặt lại dữ liệu tiếp theo',
+            'expired_date_hint' => 'Để trống mặc định 1 năm',
+            'uuid_hint' => 'UUID cho V2Ray',
+            'recharge_placeholder' => 'Nhập số âm để trừ số dư',
+        ],
+        'update_help' => 'Cập nhật thành công, quay lại?',
+        'proxies_config' => 'Cấu hình [:username]',
+        'group' => [
+            'title' => 'Nhóm người dùng <small>(Một node có thể thuộc nhiều nhóm, một người dùng chỉ thuộc một nhóm)</small>',
+            'name' => 'Tên nhóm',
+            'counts' => 'Tổng <code>:num</code> nhóm',
+        ],
+    ],
+    'zero_unlimited_hint' => '0 hoặc để trống nghĩa là không giới hạn',
+    'node' => [
+        'traffic_monitor' => 'Thống kê lưu lượng',
+        'refresh_geo' => 'Làm mới dữ liệu địa lý',
+        'ping' => 'Kiểm tra độ trễ',
+        'connection_test' => 'Kiểm tra kết nối',
+        'counts' => 'Tổng <code>:num</code> node',
+        'reload_all' => 'Tải lại【tất cả】backends',
+        'refresh_geo_all' => 'Làm mới dữ liệu địa lý cho【tất cả】 các node',
+        'reload_confirm' => 'Xác nhận tải lại node?',
+        'info' => [
+            'hint' => '<strong>Lưu ý:</strong> <code>ID</code> tự tạo là <code>node_id</code> cho backend ShadowsocksR và <code>nodeId</code> cho backend V2Ray',
+            'basic' => 'Thông tin cơ bản',
+            'ddns_hint' => 'Các node IP động cần cấu hình <a href="https://github.com/NewFuture/DDNS" target="_blank">DDNS</a>. Kiểm tra kết nối sẽ sử dụng tên miền',
+            'domain_placeholder' => 'Tên miền máy chủ, ưu tiên sử dụng nếu điền',
+            'domain_hint' => 'Kích hoạt DDNS, tên miền sẽ tự động liên kết với IP! Không cần thay đổi bản ghi DNS thủ công nữa.',
+            'extend' => 'Thông tin mở rộng',
+            'display' => [
+                'invisible' => 'Ẩn hoàn toàn',
+                'node' => 'Chỉ hiển thị ở trang Node',
+                'sub' => 'Chỉ hiển thị ở Đăng ký',
+                'all' => 'Hiển thị hoàn toàn',
+                'hint' => 'Cho phép đăng ký/xem danh sách node',
+            ],
+            'ipv4_hint' => 'Nhiều IP cách nhau bởi ",", ví dụ: 1.1.1.1, 8.8.8.8',
+            'ipv6_hint' => 'Nhiều IP cách nhau bởi ",", ví dụ: 1.1.1.1, 8.8.8.8',
+            'ipv4_placeholder' => 'Địa chỉ IPv4 máy chủ',
+            'ipv6_placeholder' => 'Địa chỉ IPv6 máy chủ',
+            'push_port_hint' => 'Bắt buộc, mở cổng trên firewall để tránh lỗi đẩy thông báo',
+            'data_rate_hint' => 'Ví dụ: 0.1 có nghĩa 100M sẽ được tính là 10M; 5 có nghĩa 100M sẽ được tính là 500M',
+            'level_hint' => 'Cấp độ: 0 = Không xếp hạng, tất cả node đều hiển thị',
+            'detection' => [
+                'tcp' => 'Chỉ TCP',
+                'icmp' => 'Chỉ ICMP',
+                'all' => 'Kiểm tra tất cả',
+                'hint' => 'Kiểm tra ngẫu nhiên mỗi 30-60 phút',
+            ],
+            'obfs_param_hint' => 'Nhập tham số để ngụy trang lưu lượng nếu obfs khác [plain]; &#13;&#10;Gợi ý cổng 80 nếu obfs là [http_simple]; &#13;&#10;Gợi ý cổng 443 nếu obfs là [tls];',
+            'additional_ports_hint' => 'Nếu bật, vui lòng cấu hình <span class="red-700"><a href="javascript:showTnc();">additional_ports</a></span> trên máy chủ',
+            'v2_method_hint' => 'Không dùng none với WebSocket',
+            'v2_net_hint' => 'Bật TLS với WebSocket',
+            'v2_cover' => [
+                'none' => 'Không',
+                'http' => 'HTTP',
+                'srtp' => 'SRTP',
+                'utp' => 'uTP',
+                'wechat' => 'WeChat Video',
+                'dtls' => 'DTLS 1.2',
+                'wireguard' => 'WireGuard',
+            ],
+            'v2_host_hint' => 'Đối với HTTP, cách nhau bởi ",". Chỉ cho phép một với WebSocket.',
+            'v2_tls_provider_hint' => 'Các backends khác nhau có các cấu hình khác nhau:',
+            'single_hint' => 'Gợi ý cổng 80/443. Backend cần cấu hình <br> chế độ strict: chỉ kết nối qua các cổng được chỉ định. (<a href="javascript:showPortsOnlyConfig();">Cách cấu hình</a>)',
+        ],
+        'proxy_info' => '*Tương thích SS',
+        'proxy_info_hint' => 'Để tương thích, vui lòng thêm <span class="red-700">_compatible</span> vào giao thức và obfuscation trong cấu hình máy chủ',
+        'reload' => 'Tải lại backend',
+        'auth' => [
+            'title' => 'Danh sách ủy quyền API <small>WEBAPI</small>',
+            'deploy' => [
+                'title' => 'Triển khai backend :type_label',
+                'attribute' => 'Triển khai backend',
+                'command' => 'Lệnh',
+                'update' => 'Cập nhật',
+                'uninstall' => 'Gỡ cài đặt',
+                'start' => 'Khởi động',
+                'stop' => 'Dừng',
+                'status' => 'Trạng thái',
+                'recent_logs' => 'Nhật ký gần đây',
+                'real_time_logs' => 'Nhật ký thời gian thực',
+                'restart' => 'Khởi động lại',
+                'same' => 'Giống trên',
+                'trojan_hint' => 'Vui lòng điền <a href=":url" target="_blank">tên miền</a> node và trỏ tên miền đến IP node',
+            ],
+            'reset_auth' => 'Đặt lại khóa',
+            'counts' => 'Tổng <code>:num</code> ủy quyền',
+            'generating_all' => 'Tạo ủy quyền cho tất cả các node?',
+        ],
+        'cert' => [
+            'title' => 'Chứng chỉ miền <small>(Để giả mạo node V2Ray)</small>',
+            'counts' => 'Tổng <code>:num</code> chứng chỉ',
+            'key_placeholder' => 'Khóa chứng chỉ miền. Cho phép để trống, VNET-V2Ray hỗ trợ tự động ký',
+            'pem_placeholder' => 'PEM chứng chỉ miền. Cho phép để trống, VNET-V2Ray hỗ trợ tự động ký',
+        ],
+    ],
+    'hint' => 'Gợi ý',
+    'oauth' => [
+        'title' => 'Ủy quyền người dùng',
+        'counts' => 'Tổng <code>:num</code> ủy quyền',
+    ],
+    'select_all' => 'Chọn tất cả',
+    'clear' => 'Xóa',
+    'unselected_hint' => 'Chờ phân bổ, tìm kiếm ở đây',
+    'selected_hint' => 'Đã phân bổ, tìm kiếm ở đây',
+    'clone' => 'Nhân bản',
+    'monitor' => [
+        'daily_chart' => 'Lưu lượng hàng ngày',
+        'monthly_chart' => 'Lưu lượng hàng tháng',
+        'node' => 'Lưu lượng node',
+        'user' => 'Lưu lượng người dùng',
+        'hint' => '<strong>Gợi ý:</strong> Kiểm tra lịch trình nếu không có dữ liệu',
+    ],
+    'tools' => [
+        'analysis' => [
+            'title' => 'Phân tích nhật ký SSR <small>Dành cho node đơn lẻ</small>',
+            'req_url' => 'URL yêu cầu gần đây',
+            'not_enough' => 'Ít hơn 15.000 bản ghi, không thể phân tích',
+        ],
+        'convert' => [
+            'title' => 'Chuyển đổi định dạng <small>SS sang SSR</small>',
+            'content_placeholder' => 'Vui lòng nhập cấu hình để chuyển đổi',
+        ],
+        'decompile' => [
+            'title' => 'Giải mã <small>Thông tin cấu hình</small>',
+            'attribute' => 'Giải mã',
+            'content_placeholder' => 'Vui lòng nhập các liên kết SSR, mỗi dòng một liên kết',
+        ],
+    ],
+    'ticket' => [
+        'title' => 'Danh sách vé',
+        'counts' => 'Tổng <code>:num</code> vé',
+        'send_to' => 'Vui lòng nhập thông tin người dùng đích',
+        'user_info' => 'Thông tin người dùng',
+        'inviter_info' => 'Thông tin người giới thiệu',
+        'close_confirm' => 'Xác nhận đóng vé?',
+        'error' => 'Lỗi không xác định! Vui lòng kiểm tra nhật ký',
+    ],
+    'logs' => [
+        'subscribe' => 'Danh sách đăng ký',
+        'counts' => 'Tổng <code>:num</code> bản ghi',
+        'rule' => [
+            'clear_all' => 'Xóa tất cả bản ghi',
+            'title' => 'Bản ghi kích hoạt',
+            'name' => 'Quy tắc kích hoạt',
+            'reason' => 'Lý do kích hoạt',
+            'created_at' => 'Thời gian kích hoạt',
+            'tag' => '✅ Truy cập nội dung không được phép',
+            'clear_confirm' => 'Xác nhận xóa tất cả bản ghi?',
+        ],
+        'order' => [
+            'title' => 'Danh sách đơn hàng',
+            'is_expired' => 'Đã hết hạn',
+            'is_coupon' => 'Đã dùng mã giảm giá',
+        ],
+        'user_traffic' => [
+            'title' => 'Nhật ký sử dụng dữ liệu',
+            'choose_node' => 'Chọn node',
+        ],
+        'user_data_modify_title' => 'Nhật ký thay đổi dữ liệu',
+        'callback' => 'Nhật ký hoàn thành thanh toán <small>(Thanh toán)</small>',
+        'notification' => 'Nhật ký gửi email',
+        'ip_monitor' => 'Giám sát IP online <small>thời gian thực 2 phút</small>',
+        'user_ip' => [
+            'title' => 'Danh sách IP online người dùng <small>10 phút gần nhất</small>',
+            'connect' => 'Kết nối tới IP',
+        ],
+        'ban' => [
+            'title' => 'Lịch sử cấm người dùng',
+            'time' => 'Thời lượng',
+            'reason' => 'Lý do',
+            'ban_time' => 'Thời gian cấm',
+            'last_connect_at' => 'Thời gian đăng nhập cuối',
+        ],
+        'credit_title' => 'Nhật ký thay đổi số dư',
+    ],
+    'start_time' => 'Bắt đầu',
+    'end_time' => 'Kết thúc',
+    'goods' => [
+        'title' => 'Danh sách sản phẩm',
+        'type' => [
+            'top_up' => 'Nạp tiền',
+            'package' => 'Gói dữ liệu',
+            'plan' => 'Gói cước',
+        ],
+        'info' => [
+            'type_hint' => 'Gói cước ảnh hưởng đến thời hạn tài khoản, Gói dữ liệu chỉ trừ dữ liệu, không ảnh hưởng thời hạn',
+            'period_hint' => 'Dữ liệu đặt lại sau mỗi N ngày đối với gói cước',
+            'limit_num_hint' => 'Số lượng mua tối đa mỗi người dùng, 0 nghĩa là không giới hạn',
+            'available_date_hint' => 'Tự động trừ dữ liệu từ tổng số khi đến hạn',
+            'desc_placeholder' => 'Mô tả ngắn gọn sản phẩm',
+            'list_placeholder' => 'Thêm nội dung tùy chỉnh',
+            'list_hint' => 'Mỗi dòng bắt đầu bằng <code>&lt;li&gt;</code> và kết thúc bằng <code>&lt;/li&gt;</code>',
+        ],
+        'status' => [
+            'yes' => 'Đang bán',
+            'no' => 'Ngừng bán',
+        ],
+        'sell_and_used' => 'Đã bán / Đã sử dụng',
+        'counts' => 'Tổng <code>:num</code> sản phẩm',
+    ],
+    'sort_asc' => 'Sắp xếp theo giá trị lớn hơn ưu tiên hàng đầu',
+    'yes' => 'Có',
+    'no' => 'Không',
+    'rule' => [
+        'type' => [
+            'reg' => 'Regex',
+            'domain' => 'Tên miền',
+            'ip' => 'IP',
+            'protocol' => 'Giao thức',
+        ],
+        'counts' => 'Tổng <code>:num</code> quy tắc',
+        'title' => 'Danh sách quy tắc',
+        'group' => [
+            'type' => [
+                'off' => 'Chặn',
+                'on' => 'Cho phép',
+            ],
+            'title' => 'Nhóm quy tắc',
+            'counts' => 'Tổng <code>:num</code> nhóm',
+        ],
+    ],
+    'role' => [
+        'name_hint' => 'Định danh duy nhất, ví dụ: admin',
+        'description_hint' => 'Tên hiển thị, ví dụ: Quản trị viên',
+        'title' => 'Danh sách vai trò',
+        'permissions_all' => 'Tất cả quyền',
+        'counts' => 'Tổng <code>:num</code> vai trò',
+    ],
+    'report' => [
+        'monthly_accounting' => 'Báo cáo tháng',
+        'annually_accounting' => 'Báo cáo năm',
+        'historic_accounting' => 'Báo cáo lịch sử',
+        'current_month' => 'Tháng này',
+        'last_month' => 'Tháng trước',
+        'current_year' => 'Năm nay',
+        'last_year' => 'Năm ngoái',
+        'hourly_traffic' => 'Theo giờ',
+        'daily_traffic' => 'Theo ngày',
+        'today' => 'Hôm nay',
+    ],
+    'permission' => [
+        'title' => 'Danh sách quyền',
+        'description_hint' => 'Mô tả, ví dụ: [Hệ thống X] Chỉnh sửa A',
+        'name_hint' => 'Tên đường dẫn, ví dụ: admin.user.update',
+        'counts' => 'Tổng <code>:num</code> quyền',
+    ],
+    'marketing' => [
+        'email' => [
+            'title' => 'Danh sách email',
+            'group_send' => 'Gửi email',
+            'counts' => 'Tổng <code>:num</code> email',
+        ],
+        'send_status' => 'Trạng thái gửi',
+        'send_time' => 'Thời gian gửi',
+        'error_message' => 'Thông báo lỗi',
+        'push' => [
+            'title' => 'Danh sách thông báo đẩy',
+            'send' => 'Gửi thông báo',
+            'counts' => 'Tổng <code>:num</code> tin nhắn',
+        ],
+    ],
+    'creating' => 'Đang thêm...',
+    'article' => [
+        'type' => [
+            'knowledge' => 'Bài viết',
+            'announcement' => 'Thông báo',
+        ],
+        'category_hint' => 'Cùng chuyên mục sẽ được nhóm lại',
+        'logo_hint' => 'Kích thước đề xuất: 100x75',
+        'title' => 'Danh sách bài viết',
+        'counts' => 'Tổng <code>:num</code> bài viết',
+    ],
+    'coupon' => [
+        'title' => 'Danh sách mã',
+        'name_hint' => 'Để hiển thị',
+        'sn_hint' => 'Để trống để tự tạo mã ngẫu nhiên 8 ký tự',
+        'type' => [
+            'voucher' => 'Phiếu giảm giá',
+            'discount' => 'Mã giảm giá',
+            'charge' => 'Nạp tiền',
+        ],
+        'type_hint' => 'Giảm giá: giảm số tiền cố định; Chiết khấu: giảm theo phần trăm; Nạp tiền: cộng vào số dư',
+        'value' => '{1} ➖ :num|{2} :num%|{3} ➕ :num',
+        'value_hint' => 'Từ 1% đến 99%',
+        'priority_hint' => 'Mã có độ ưu tiên cao hơn sẽ được áp dụng trước, tối đa 255',
+        'minimum_hint' => 'Chỉ áp dụng khi thanh toán vượt quá <strong>:num</strong>',
+        'used_hint' => 'Mỗi người dùng có thể dùng tối đa <strong>:num</strong> lần',
+        'levels_hint' => 'Chỉ dành cho cấp độ người dùng đã chọn',
+        'groups_hint' => 'Chỉ dành cho nhóm người dùng đã chọn',
+        'users_placeholder' => 'Nhập ID người dùng, nhấn Enter',
+        'user_whitelist_hint' => 'Danh sách trắng: những người dùng này có thể dùng, để trống nếu không dùng',
+        'users_blacklist_hint' => 'Danh sách đen: những người dùng này không thể dùng, để trống nếu không dùng',
+        'services_placeholder' => 'Nhập ID sản phẩm, nhấn Enter',
+        'services_whitelist_hint' => 'Chỉ áp dụng cho danh sách trắng sản phẩm, để trống nếu không dùng',
+        'services_blacklist_hint' => 'Không áp dụng cho danh sách đen sản phẩm, để trống nếu không dùng',
+        'newbie' => [
+            'first_discount' => 'Giảm giá lần đầu',
+            'first_order' => 'Đơn hàng đầu',
+            'created_days' => 'Ngày tạo tài khoản',
+        ],
+        'created_days_hint' => 'Sau khi đăng ký <code>:days</code> ngày',
+        'limit_hint' => 'Các điều kiện có quan hệ <strong>VÀ</strong>, vui lòng sử dụng hợp lý',
+        'info_title' => 'Thông tin',
+        'counts' => 'Tổng <code>:num</code> mã giảm giá',
+        'discount' => 'Giảm giá',
+        'export_title' => 'Xuất mã',
+        'single_use' => 'Một lần',
+    ],
+    'times' => 'Lần',
+    'massive_export' => 'Xuất hàng loạt',
+    'system_generate' => 'Tạo từ hệ thống',
+    'aff' => [
+        'rebate_title' => 'Lịch sử hoa hồng',
+        'counts' => 'Tổng <code>:num</code> yêu cầu',
+        'title' => 'Danh sách rút tiền',
+        'apply_counts' => 'Tổng <code>:num</code> yêu cầu',
+        'referral' => 'Hoa hồng giới thiệu',
+        'commission_title' => 'Chi tiết yêu cầu',
+        'commission_counts' => 'Liên quan <code>:num</code> đơn hàng',
+    ],
+    'setting' => [
+        'common' => [
+            'title' => 'Cấu hình chung',
+            'set_default' => 'Đặt làm mặc định',
+            'connect_nodes' => 'Số lượng node',
+        ],
+        'email' => [
+            'title' => 'Lọc email <small>(dành cho đăng ký)</small>',
+            'tail' => 'Hậu tố email',
+            'rule' => 'Loại hạn chế',
+            'black' => 'Danh sách đen',
+            'white' => 'Danh sách trắng',
+            'tail_placeholder' => 'Nhập hậu tố email',
+        ],
+        'system' => [
+            'title' => 'Cài đặt hệ thống',
+            'web' => 'Chung',
+            'account' => 'Tài khoản',
+            'node' => 'Node',
+            'extend' => 'Nâng cao',
+            'check_in' => 'Điểm danh',
+            'promotion' => 'Liên kết',
+            'notify' => 'Thông báo',
+            'auto_job' => 'Tự động',
+            'other' => 'Logo | CS | Thống kê',
+            'payment' => 'Thanh toán',
+            'menu' => 'Menu',
+        ],
+        'no_permission' => 'Không có quyền thay đổi thiết lập!',
+    ],
+    'system' => [
+        'account_expire_notification' => 'Thông báo hết hạn',
+        'active_times' => 'Số lần kích hoạt tài khoản tối đa',
+        'admin_invite_days' => '[Admin] Hạn mời',
+        'aff_salt' => '[URL giới thiệu] Mã hóa ID người dùng',
+        'alipay_qrcode' => 'Mã QR Alipay',
+        'AppStore_id' => '[Apple] Tài khoản',
+        'AppStore_password' => '[Apple] Mật khẩu',
+        'auto_release_port' => 'Tự động giải phóng cổng',
+        'bark_key' => '[Bark] Mã thiết bị',
+        'captcha_key' => 'Captcha Key',
+        'captcha_secret' => 'Captcha Secret/ID',
+        'codepay_id' => '[CodePay] ID',
+        'codepay_key' => '[CodePay] Key',
+        'codepay_url' => '[CodePay] URL',
+        'data_anomaly_notification' => 'Thông báo dữ liệu bất thường',
+        'data_exhaust_notification' => 'Thông báo hết dữ liệu',
+        'ddns_key' => '[DNS] Key',
+        'ddns_mode' => 'Đồng bộ DNS',
+        'ddns_secret' => '[DNS] Secret',
+        'default_days' => 'Thời hạn mặc định',
+        'default_traffic' => 'Dữ liệu ban đầu',
+        'detection_check_times' => 'Cảnh báo chặn node',
+        'dingTalk_access_token' => '[DingTalk] Mã truy cập',
+        'dingTalk_secret' => '[DingTalk] Secret',
+        'epay_key' => '[ePay] Key',
+        'epay_mch_id' => '[ePay] Merchant ID',
+        'epay_url' => '[ePay] URL',
+        'expire_days' => 'Ngưỡng cảnh báo hết hạn',
+        'f2fpay_app_id' => '[Alipay] APP ID',
+        'f2fpay_private_key' => '[Alipay] Private Key',
+        'f2fpay_public_key' => '[Alipay] Public Key',
+        'forbid_mode' => 'Chế độ cấm truy cập',
+        'invite_num' => 'Số lượng mời mặc định',
+        'is_activate_account' => 'Kích hoạt tài khoản',
+        'is_AliPay' => 'Alipay',
+        'is_ban_status' => 'Tự động cấm khi hết hạn',
+        'is_captcha' => 'Captcha',
+        'is_checkin' => 'Thưởng check-in',
+        'is_clear_log' => 'Dọn dẹp nhật ký',
+        'is_custom_subscribe' => 'Đăng ký nâng cao',
+        'is_email_filtering' => 'Lọc email',
+        'is_forbid_robot' => 'Cấm bot',
+        'is_free_code' => 'Mã mời miễn phí',
+        'is_invite_register' => 'Mời đăng ký',
+        'is_otherPay' => 'Thanh toán tùy chỉnh',
+        'is_QQPay' => 'QQ Pay',
+        'is_rand_port' => 'Cổng ngẫu nhiên',
+        'is_register' => 'Đăng ký',
+        'is_subscribe_ban' => 'Cấm đăng ký bất thường',
+        'is_traffic_ban' => 'Cấm do lạm dụng dữ liệu',
+        'is_WeChatPay' => 'WeChat Pay',
+        'iYuu_token' => '[IYUU] Token',
+        'maintenance_content' => 'Nội dung thông báo bảo trì',
+        'maintenance_mode' => 'Chế độ bảo trì',
+        'maintenance_time' => 'Thời gian kết thúc bảo trì',
+        'min_port' => 'Khoảng cổng',
+        'min_rand_traffic' => 'Khoảng dữ liệu',
+        'node_blocked_notification' => 'Thông báo chặn node',
+        'node_daily_notification' => 'Báo cáo node hàng ngày',
+        'node_offline_notification' => 'Thông báo node offline',
+        'oauth_path' => 'Nền tảng OAuth',
+        'offline_check_times' => 'Số lần cảnh báo offline',
+        'password_reset_notification' => 'Thông báo đặt lại mật khẩu',
+        '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' => 'Xác nhận thanh toán thủ công',
+        'payment_received_notification' => 'Thông báo thanh toán thành công',
+        'paypal_app_id' => 'App ID',
+        'paypal_client_id' => 'Client ID',
+        'paypal_client_secret' => 'Client Secret',
+        'pushDeer_key' => '[PushDeer] Key',
+        'pushplus_token' => '[PushPlus] Token',
+        'rand_subscribe' => 'Đăng ký ngẫu nhiên',
+        'redirect_url' => 'URL chuyển hướng',
+        'referral_money' => 'Giới hạn rút tiền tối thiểu',
+        'referral_percent' => 'Tỷ lệ hoa hồng',
+        'referral_status' => 'Liên kết giới thiệu',
+        'referral_traffic' => 'Dữ liệu tặng khi đăng ký',
+        'referral_type' => 'Loại hoa hồng',
+        'register_ip_limit' => 'Giới hạn đăng ký theo IP',
+        'reset_password_times' => 'Giới hạn đặt lại mật khẩu',
+        'reset_traffic' => 'Tự động đặt lại dữ liệu',
+        'server_chan_key' => '[ServerChan] SCKEY',
+        'standard_currency' => 'Tiền tệ mặc định',
+        'stripe_public_key' => 'Public Key',
+        'stripe_secret_key' => 'Secret Key',
+        'stripe_signing_secret' => 'Webhook Secret',
+        'subject_name' => 'Tên sản phẩm tùy chỉnh',
+        'subscribe_ban_times' => 'Giới hạn yêu cầu đăng ký',
+        'subscribe_domain' => 'Đường dẫn đăng ký',
+        'subscribe_max' => 'Số node tối đa trong danh sách đăng ký',
+        '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' => 'Thông báo đóng vé',
+        'ticket_created_notification' => 'Thông báo mở vé',
+        'ticket_replied_notification' => 'Thông báo trả lời vé',
+        'traffic_ban_time' => 'Thời gian cấm',
+        'traffic_ban_value' => 'Ngưỡng cấm do lạm dụng dữ liệu',
+        'traffic_limit_time' => 'Khoảng thời gian điểm danh',
+        'traffic_warning_percent' => 'Ngưỡng cảnh báo hết dữ liệu',
+        'trojan_license' => 'Trojan License',
+        'username_type' => 'Kiểu tên đăng nhập',
+        'user_invite_days' => '[User] Hạn mời',
+        'v2ray_license' => 'V2Ray License',
+        'v2ray_tls_provider' => 'Cấu hình TLS V2Ray',
+        'webmaster_email' => 'Email quản trị viên',
+        'website_analytics' => 'Mã nhúng thống kê',
+        'website_callback_url' => 'Miền thanh toán',
+        'website_customer_service' => 'Mã nhúng hỗ trợ',
+        'website_home_logo' => 'Logo trang chủ',
+        'website_logo' => 'Logo trang con',
+        'website_name' => 'Tên website',
+        'website_security_code' => 'Mã bảo mật',
+        'website_url' => 'Đường dẫn website',
+        'web_api_url' => 'Miền API',
+        'wechat_aid' => 'WeChat AID',
+        'wechat_cid' => 'WeChat CID',
+        'wechat_encodingAESKey' => 'WeChat Mã mã hóa',
+        'wechat_qrcode' => 'Mã QR WeChat',
+        'wechat_secret' => 'WeChat Secret',
+        'wechat_token' => 'WeChat Token',
+        'hint' => [
+            'account_expire_notification' => 'Thông báo hết hạn',
+            'active_times' => 'Qua email trong 24h',
+            'admin_invite_days' => 'Hạn mời của admin',
+            'aff_salt' => 'Mã hóa URL giới thiệu',
+            'AppStore_id' => 'Sử dụng trong bài viết',
+            'AppStore_password' => 'Sử dụng trong bài viết',
+            'auto_release_port' => 'Tự giải phóng cổng sau <code>'.config('tasks.release_port').'</code> ngày bị cấm/hết hạn',
+            'bark_key' => 'Mã thiết bị để đẩy iOS',
+            'captcha_key' => 'Xem <a href="https://proxypanel.gitbook.io/wiki/captcha" target="_blank">hướng dẫn</a>',
+            'data_anomaly_notification' => 'Thông báo cho admin khi vượt ngưỡng',
+            'data_exhaust_notification' => 'Thông báo khi dữ liệu sắp hết',
+            'ddns_key' => 'Xem <a href="https://proxypanel.gitbook.io/wiki/ddns" target="_blank">hướng dẫn</a>',
+            'ddns_mode' => 'Đồng bộ thay đổi tên miền & IP lên nhà cung cấp DNS',
+            'default_days' => 'Mặc định hết hạn cho tài khoản mới, 0 là hôm đó',
+            'default_traffic' => 'Mặc định dữ liệu ban đầu cho tài khoản mới',
+            'detection_check_times' => 'Tự đưa node offline sau N lần cảnh báo, 0 hoặc để trống là không giới hạn, tối đa 12',
+            'dingTalk_access_token' => 'Mã truy cập của <a href=https://open.dingtalk.com/document/group/custom-robot-access#title-jfe-yo9-jl2 target=_blank>bot tùy chỉnh</a>',
+            'dingTalk_secret' => 'Bí mật khi bật chữ ký',
+            'expire_days' => 'Bắt đầu thông báo hết hạn',
+            'f2fpay_app_id' => 'Alipay APPID',
+            'f2fpay_private_key' => 'Private key từ công cụ generate key',
+            'f2fpay_public_key' => 'Không phải public key của APP!',
+            'forbid_mode' => 'Chặn truy cập từ các khu vực chỉ định',
+            'invite_num' => 'Mặc định mỗi người dùng có thể mời',
+            'is_activate_account' => 'Yêu cầu kích hoạt qua email',
+            'is_ban_status' => '(Thận trọng) Cấm toàn bộ tài khoản sẽ xóa tất cả dữ liệu và ngăn không cho đăng nhập',
+            'is_captcha' => 'Yêu cầu captcha để đăng nhập/đăng ký nếu bật',
+            'is_checkin' => 'Thưởng ngẫu nhiên khi check-in nếu bật',
+            'is_clear_log' => '(Khuyên dùng) Tự động xóa nhật ký không cần thiết nếu bật',
+            'is_custom_subscribe' => 'Hiển thị thời hạn & dữ liệu còn lại trên danh sách đăng ký khi bật',
+            'is_email_filtering' => 'Danh sách đen: bất kỳ email nào ngoài danh sách; Danh sách trắng: chỉ các email trong danh sách',
+            'is_forbid_robot' => 'Trả lỗi 404 nếu truy cập từ bot/proxy',
+            'is_free_code' => 'Ẩn mã mời miễn phí nếu tắt',
+            'is_rand_port' => 'Cổng ngẫu nhiên khi đăng ký/thêm người dùng',
+            'is_register' => 'Vô hiệu hóa đăng ký nếu bỏ chọn',
+            'is_subscribe_ban' => 'Tự cấm nếu số lượng yêu cầu đăng ký vượt ngưỡng',
+            'is_traffic_ban' => 'Tự vô hiệu hóa dịch vụ nếu vượt ngưỡng dữ liệu trong 1 giờ',
+            'iYuu_token' => 'Điền <a href=https://iyuu.cn target=_blank>IYUU token</a> trước khi bật',
+            'maintenance_content' => 'Nội dung tùy chỉnh thông báo bảo trì',
+            'maintenance_mode' => 'Chuyển hướng người dùng bình thường tới trang bảo trì nếu bật | Admin có thể đăng nhập qua <a href="javascript:(0)">:url</a>',
+            'maintenance_time' => 'Đếm ngược cho trang bảo trì',
+            'min_port' => 'Cổng từ 1000 đến 65535',
+            'node_blocked_notification' => 'Kiểm tra hàng giờ, thông báo nếu phát hiện chặn node',
+            'node_daily_notification' => 'Báo cáo hàng ngày về lưu lượng các node',
+            'node_offline_notification' => 'Kiểm tra 10 phút/lần, thông báo nếu phát hiện node offline',
+            'oauth_path' => 'Vui lòng bật trước trong .ENV',
+            'offline_check_times' => 'Ngừng thông báo sau N lần cảnh báo trong 24 giờ',
+            'password_reset_notification' => 'Cho phép đặt lại mật khẩu qua email nếu bật',
+            'paybeaver_app_id' => '<a href="https://merchant.paybeaver.com/" target="_blank">Trung tâm Merchant</a> -> Developer -> App ID',
+            'paybeaver_app_secret' => '<a href="https://merchant.paybeaver.com/" target="_blank">Trung tâm Merchant</a> -> Developer -> App Secret',
+            'payjs_mch_id' => 'Lấy từ <a href="https://payjs.cn/dashboard/member" target="_blank">trang thành viên</a>',
+            'payment_confirm_notification' => 'Thông báo admin xử lý đơn hàng thanh toán thủ công',
+            'payment_received_notification' => 'Thông báo người dùng khi nhận được thanh toán',
+            'pushDeer_key' => 'Điền <a href=https://www.pushdeer.com/official.html target=_blank>PushDeer Push Key</a> trước khi bật',
+            'pushplus_token' => 'Điền <a href=https://www.pushplus.plus/push1.html target=_blank>PushPlus Token</a> trước khi bật',
+            'rand_subscribe' => 'Thứ tự ngẫu nhiên nếu bật, nếu không theo thứ tự node',
+            'redirect_url' => 'Chuyển hướng khi quy tắc kích hoạt',
+            'referral_money' => 'Số tiền rút tối thiểu',
+            'referral_percent' => 'Phần trăm giá trị đơn hàng mà người giới thiệu nhận được',
+            'referral_status' => 'Đóng hệ thống giới thiệu mà không ảnh hưởng dữ liệu',
+            'referral_traffic' => 'Tặng dữ liệu khi đăng ký qua giới thiệu',
+            'referral_type' => 'Dữ liệu mới tính theo kiểu mới sau khi chuyển đổi',
+            'register_ip_limit' => 'Số lượng đăng ký cho phép mỗi IP trong 24 giờ, 0 hoặc để trống là không giới hạn',
+            'reset_password_times' => 'Số lần đặt lại mật khẩu qua email trong 24 giờ',
+            'reset_traffic' => 'Tự động đặt lại dữ liệu dựa trên chu kỳ gói của người dùng',
+            'server_chan_key' => 'Điền <a href=https://sc.ftqq.com target=_blank>ServerChan SCKEY</a> trước khi bật',
+            'standard_currency' => 'Tiền tệ chính trên giao diện',
+            'subject_name' => 'Tên sản phẩm trên cổng thanh toán',
+            'subscribe_ban_times' => 'Số lượt yêu cầu đăng ký tối đa cho phép mỗi người dùng trong 24 giờ',
+            'subscribe_domain' => 'Bắt đầu bằng http:// hoặc https:// để tránh lỗi DNS poison',
+            'subscribe_max' => 'Số node tối đa trong danh sách đăng ký, 0 là tất cả',
+            'telegram_token' => 'Lấy <a href=https://t.me/BotFather target=_blank>TOKEN</a> từ @BotFather',
+            'tg_chat_token' => 'Điền <a href=https://t.me/realtgchat_bot target=_blank>TG Chat token</a> trước khi bật',
+            'ticket_closed_notification' => 'Thông báo cho người dùng khi đóng vé',
+            'ticket_created_notification' => 'Thông báo cho quản trị viên/người dùng tùy vào ai tạo',
+            'ticket_replied_notification' => 'Thông báo cho bên kia khi có phản hồi vé',
+            'traffic_ban_time' => 'Thời gian cấm tự động do ngoại lệ',
+            'traffic_ban_value' => 'Kích hoạt cấm tài khoản nếu vượt ngưỡng trong 1 giờ',
+            'traffic_limit_time' => 'Khoảng thời gian giữa 2 lần check-in',
+            'traffic_warning_percent' => 'Gửi thông báo sắp hết dữ liệu khi đạt ngưỡng này',
+            'username_type' => 'Kiểu tên đăng nhập mặc định',
+            'user_invite_days' => 'Hạn mời của người dùng',
+            'v2ray_tls_provider' => 'Cấu hình node ưu tiên hơn',
+            'webmaster_email' => 'Email liên hệ trong một số thông báo lỗi',
+            'website_analytics' => 'Mã nhúng thống kê',
+            'website_callback_url' => 'Tránh lỗi thanh toán do DNS poison',
+            'website_customer_service' => 'Mã nhúng hỗ trợ',
+            'website_name' => 'Tên hiển thị trong email',
+            'website_security_code' => 'Yêu cầu nhập mã bảo mật nếu được cài',
+            'website_url' => 'Tên miền chính để tạo đường dẫn',
+            'web_api_url' => 'Ví dụ: '.config('app.url'),
+            'wechat_aid' => '<a href="https://work.weixin.qq.com/wework_admin/frame#apps" target="_blank">Quản lý ứng dụng</a> -> AgentId',
+            'wechat_cid' => 'Lấy từ <a href="https://work.weixin.qq.com/wework_admin/frame#profile" target="_blank">Thông tin doanh nghiệp</a>',
+            'wechat_encodingAESKey' => 'Quản lý ứng dụng -> Cài đặt -> EncodingAESKey',
+            'wechat_secret' => 'Bí mật ứng dụng (cần WeChat doanh nghiệp để xem)',
+            'wechat_token' => 'Cài đặt -> TOKEN, URL: :url',
+        ],
+        'placeholder' => [
+            'default_url' => 'Mặc định :url',
+            'server_chan_key' => 'Điền SCKEY ServerChan rồi nhấn Cập nhật',
+            'pushDeer_key' => 'Điền Push Key PushDeer rồi nhấn Cập nhật',
+            'iYuu_token' => 'Điền IYUU token rồi nhấn Cập nhật',
+            'bark_key' => 'Điền mã thiết bị Bark rồi nhấn Cập nhật',
+            'telegram_token' => 'Điền Telegram token rồi nhấn Cập nhật',
+            'pushplus_token' => 'Vui lòng đăng ký tại ServerChan',
+            'dingTalk_access_token' => 'Mã truy cập của bot tùy chỉnh',
+            'dingTalk_secret' => 'Bí mật sau khi bật ký',
+            'wechat_aid' => 'WeChat Enterprise App AID',
+            'wechat_cid' => 'Điền WeChat CID rồi nhấn Cập nhật',
+            'wechat_secret' => 'Bí mật ứng dụng WeChat',
+            'tg_chat_token' => 'Vui lòng đăng ký tại Telegram',
+            'codepay_url' => 'https://codepay.fateqq.com/create_order/?',
+        ],
+        'payment' => [
+            'attribute' => 'Cổng thanh toán',
+            'channel' => [
+                'alipay' => 'Alipay F2F',
+                'codepay' => 'CodePay',
+                'epay' => 'ePay',
+                'payjs' => 'PayJs',
+                'paypal' => 'PayPal',
+                'stripe' => 'Stripe',
+                'paybeaver' => 'PayBeaver',
+                'theadpay' => 'THeadPay',
+                'manual' => 'Thanh toán thủ công',
+            ],
+            'hint' => [
+                'alipay' => 'Tính năng này cần đăng ký quyền và ứng dụng tại <a href="https://open.alipay.com/platform/appManage.htm?#/create/" target="_blank">Ant Financial Services Open Platform</a>',
+                'codepay' => 'Vui lòng đăng ký tài khoản tại <a href="https://codepay.fateqq.com/i/377289" target="_blank">CodePay</a>, tải và cài đặt phần mềm',
+                'payjs' => 'Vui lòng đăng ký tài khoản tại <a href="https://payjs.cn/ref/zgxjnb" target="_blank">PayJs</a>',
+                'paypal' => 'Đăng nhập vào <a href="https://www.paypal.com/businessprofile/mytools/apiaccess/firstparty" target="_blank">trang đăng ký API</a> bằng tài khoản merchant, đồng ý và lấy thông tin cài đặt',
+                'paybeaver' => 'Vui lòng đăng ký tài khoản tại <a href="https://merchant.paybeaver.com/?aff_code=iK4GNuX8" target="_blank"> PayBeaver</a>',
+                'theadpay' => 'Vui lòng đăng ký tài khoản tại <a href="https://theadpay.com/" target="_blank">THeadPay</a>',
+                'manual' => 'Sau khi cài đặt và chọn, sẽ hiển thị ở giao diện người dùng',
+            ],
+        ],
+        'notification' => [
+            'channel' => [
+                'telegram' => 'Telegram',
+                'wechat' => 'WeChat Doanh nghiệp',
+                'dingtalk' => 'DingTalk',
+                'email' => 'Email',
+                'bark' => 'Bark',
+                'serverchan' => 'ServerChan',
+                'pushdeer' => 'PushDeer',
+                'pushplus' => 'PushPlus',
+                'iyuu' => 'IYUU',
+                'tg_chat' => 'TG Chat',
+                'site' => 'Thông báo trang web',
+            ],
+            'send_test' => 'Gửi tin nhắn thử',
+        ],
+        'forbid' => [
+            'mainland' => 'Chặn Trung Quốc đại lục',
+            'china' => 'Chặn Trung Quốc',
+            'oversea' => 'Chặn nước ngoài',
+        ],
+        'username' => [
+            'email' => 'Email',
+            'mobile' => 'Số điện thoại',
+            'any' => 'Bất kỳ',
+        ],
+        'active_account' => [
+            'before' => 'Kích hoạt trước khi đăng ký',
+            'after' => 'Kích hoạt sau khi đăng ký',
+        ],
+        'ddns' => [
+            'namesilo' => 'Namesilo',
+            'aliyun' => 'AliCloud/Aliyun',
+            'dnspod' => 'DNSPod',
+            'cloudflare' => 'CloudFlare',
+        ],
+        'captcha' => [
+            'standard' => 'Thường',
+            'geetest' => '极验',
+            'recaptcha' => 'Google reCaptcha',
+            'hcaptcha' => 'hCaptcha',
+        ],
+        'referral' => [
+            'once' => 'Hoa hồng đầu tiên',
+            'loop' => 'Hoa hồng vòng lặp',
+        ],
+    ],
+    'set_to' => 'Đặt :attribute thành',
+    'minute' => 'phút',
+    'query' => 'Tìm kiếm',
+    'optional' => 'Tùy chọn',
+    'require' => 'Bắt buộc',
+];

+ 100 - 0
resources/lang/vi/auth.php

@@ -0,0 +1,100 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'accept_term' => 'Tôi đã đọc và chấp nhận',
+    'active' => [
+        'attribute' => 'Kích hoạt',
+        'error' => [
+            'activated' => 'Tài khoản đã kích hoạt, không cần kích hoạt lại',
+            'disable' => 'Kích hoạt tài khoản bị tắt, bạn có thể đăng nhập trực tiếp!',
+            'throttle' => 'Đã vượt quá giới hạn yêu cầu kích hoạt, vui lòng không thao tác quá thường xuyên! Liên hệ :email nếu có vấn đề.',
+        ],
+        'promotion' => 'Tài khoản chưa kích hoạt, vui lòng [:action] trước!',
+        'sent' => 'Email kích hoạt đã được gửi đến hộp thư của bạn, vui lòng kiểm tra kể cả thư rác.',
+    ],
+    'aup' => 'Chính sách Sử dụng Chấp nhận được',
+    'captcha' => [
+        'attribute' => 'Mã xác nhận',
+        'error' => [
+            'failed' => 'Xác minh mã không thành công, vui lòng thử lại',
+            'timeout' => 'Mã xác nhận đã hết hạn, vui lòng làm mới và thử lại.',
+        ],
+        'required' => 'Vui lòng hoàn thành mã xác nhận!',
+        'sent' => 'Mã xác nhận đã được gửi đến email của bạn, vui lòng kiểm tra kể cả thư rác.',
+    ],
+    'email' => [
+        'error' => [
+            'banned' => 'Nhà cung cấp email của bạn bị chặn, vui lòng sử dụng email khác.',
+            'invalid' => 'Email của bạn không được hỗ trợ.',
+        ],
+    ],
+    'error' => [
+        'account_baned' => 'Tài khoản của bạn bị cấm!',
+        'login_error' => 'Lỗi đăng nhập, vui lòng thử lại sau!',
+        'login_failed' => 'Đăng nhập không thành công, vui lòng kiểm tra email và mật khẩu!',
+        'not_found_user' => 'Không tìm thấy tài khoản, vui lòng thử cách đăng nhập khác.',
+        'repeat_request' => 'Vui lòng làm mới và thử lại.',
+        'url_timeout' => 'Liên kết đã hết hạn, vui lòng yêu cầu lại.',
+    ],
+    'failed' => 'Thông tin tài khoản không tìm thấy trong hệ thống.',
+    'invite' => [
+        'attribute' => 'Mã lời mời',
+        'error' => [
+            'unavailable' => 'Mã lời mời không hợp lệ, vui lòng thử lại.',
+        ],
+        'get' => 'Nhận mã lời mời',
+        'not_required' => 'Không cần mã lời mời, bạn có thể đăng ký trực tiếp!',
+    ],
+    'login' => 'Đăng nhập',
+    'logout' => 'Đăng xuất',
+    'maintenance' => 'Bảo trì',
+    'maintenance_tip' => 'Đang bảo trì',
+    'oauth' => [
+        'bind_failed' => 'Gắn kết không thành công',
+        'bind_success' => 'Gắn kết thành công',
+        'login_failed' => 'Đăng nhập bên thứ ba không thành công!',
+        'rebind_success' => 'Gắn kết lại thành công',
+        'register' => 'Đăng ký nhanh',
+        'register_failed' => 'Đăng ký không thành công',
+        'registered' => 'Đã đăng ký, vui lòng đăng nhập trực tiếp.',
+        'unbind_failed' => 'Hủy gắn kết không thành công',
+        'unbind_success' => 'Hủy gắn kết thành công',
+    ],
+    'one-click_login' => 'Đăng nhập một chạm',
+    'optional' => 'Tùy chọn',
+    'password' => [
+        'forget' => 'Quên mật khẩu?',
+        'new' => 'Nhập mật khẩu mới',
+        'original' => 'Mật khẩu hiện tại',
+        'reset' => [
+            'attribute' => 'Đặt lại mật khẩu',
+            'error' => [
+                'demo' => 'Không thể thay đổi mật khẩu admin trong demo.',
+                'disabled' => 'Đặt lại mật khẩu bị tắt, vui lòng liên hệ :email để được hỗ trợ.',
+                'failed' => 'Đặt lại mật khẩu không thành công.',
+                'same' => 'Mật khẩu mới không được giống mật khẩu cũ, vui lòng nhập lại.',
+                'throttle' => 'Bạn chỉ có thể đặt lại mật khẩu :time lần trong 24 giờ, không nên thao tác quá thường xuyên.',
+                'wrong' => 'Mật khẩu sai, vui lòng thử lại.',
+            ],
+            'sent' => 'Liên kết đặt lại mật khẩu đã được gửi đến email của bạn, vui lòng kiểm tra kể cả thư rác.',
+            'success' => 'Mật khẩu mới đã được đặt lại thành công, bạn có thể đăng nhập.',
+        ],
+    ],
+    'register' => [
+        'attribute' => 'Đăng ký',
+        'code' => 'Mã đăng ký',
+        'error' => [
+            'disable' => 'Xin lỗi, chúng tôi tạm thời ngừng nhận người dùng mới.',
+            'throttle' => 'Chống bot đã kích hoạt! Vui lòng không gửi quá thường xuyên mẫu đăng ký!',
+        ],
+        'failed' => 'Đăng ký không thành công, vui lòng thử lại sau.',
+        'promotion' => 'Chưa có tài khoản? Vui lòng đi đến ',
+        'success' => 'Đăng ký thành công',
+    ],
+    'remember_me' => 'Nhớ tôi',
+    'request' => 'Yêu cầu',
+    'throttle' => 'Vượt quá số lần đăng nhập cho phép. Vui lòng thử lại sau :seconds giây.',
+    'tos' => 'Điều khoản Dịch vụ',
+];

+ 150 - 0
resources/lang/vi/common.php

@@ -0,0 +1,150 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'hour' => '{1} Giờ|{2} Giờ',
+    'account' => 'Tài khoản',
+    'available_date' => 'Có hiệu lực đến',
+    'created_at' => 'Tạo vào',
+    'expired_at' => 'Hết hạn vào',
+    'updated_at' => 'Cập nhật lần cuối',
+    'latest_at' => 'Hoạt động gần đây',
+    'back' => 'Quay lại',
+    'back_to' => 'Quay lại :page',
+    'cancel' => 'Hủy',
+    'close' => 'Đóng',
+    'close_item' => 'Đóng :attribute',
+    'confirm' => 'Xác nhận',
+    'continues' => 'Tiếp tục',
+    'open' => 'Mở',
+    'send' => 'Gửi',
+    'view' => 'Xem',
+    'reset' => 'Đặt lại',
+    'copy' => [
+        'attribute' => 'Sao chép',
+        'success' => 'Sao chép thành công',
+        'failed' => 'Sao chép thất bại, vui lòng sao chép thủ công',
+    ],
+    'add' => 'Thêm',
+    'free' => 'Miễn phí',
+    'replace' => 'Thay thế',
+    'submit' => 'Gửi',
+    'submit_item' => 'Gửi :attribute',
+    'generate' => 'Tạo',
+    'generate_item' => 'Tạo :attribute',
+    'to_safari' => [0 => 'Nhấn vào góc trên bên phải', 1 => ', chọn', 2 => 'Mở bằng Safari', 3 => ' để trải nghiệm tốt hơn!'],
+    'update_browser' => [0 => 'Bạn đang dùng trình duyệt ', 1 => 'lỗi thời', 2 => '. Vui lòng ', 3 => 'nâng cấp trình duyệt', 4 => 'để có trải nghiệm tốt nhất'],
+    'apply' => 'Áp dụng',
+    'avatar' => 'Ảnh đại diện',
+    'customize' => 'Tùy chỉnh',
+    'all' => 'Tất cả',
+    'default' => 'Mặc định',
+    'download' => 'Tải xuống',
+    'goto' => 'Đi đến',
+    'warning' => 'Cảnh báo',
+    'success' => 'Thành công',
+    'success_item' => ':attribute thành công',
+    'failed' => 'Thất bại',
+    'failed_item' => ':attribute thất bại',
+    'update' => 'Cập nhật',
+    'update_action' => 'Cập nhật :action',
+    'none' => 'Không',
+    'new' => 'Mới',
+    'sorry' => 'Xin lỗi',
+    'applied' => ':attribute đã áp dụng',
+    'active_item' => 'Kích hoạt :attribute',
+    'error' => 'Lỗi',
+    'toggle' => 'Chuyển đổi',
+    'toggle_action' => 'Chuyển đổi :action',
+    'request_url' => 'URL yêu cầu',
+    'function' => [
+        'navigation' => 'Điều hướng',
+        'menubar' => 'Thanh menu',
+        'fullscreen' => 'Toàn màn hình',
+    ],
+    'days' => [
+        'attribute' => '{1} Ngày|{2} Ngày',
+        'sun' => 'Chủ nhật',
+        'mon' => 'Thứ hai',
+        'tue' => 'Thứ ba',
+        'wed' => 'Thứ tư',
+        'thu' => 'Thứ năm',
+        'fri' => 'Thứ sáu',
+        'sat' => 'Thứ bảy',
+        'weekend' => 'Cuối tuần',
+        'work' => 'Ngày làm việc',
+        'next' => 'Ngày kế tiếp',
+    ],
+    'qrcode' => 'Mã QR :attribute',
+    'deleted' => 'Đã xóa',
+    'deleted_item' => ':attribute đã xóa',
+    'print' => 'In',
+    'unlimited' => 'Không giới hạn',
+    'payment' => [
+        'credit' => 'Tín dụng',
+        'alipay' => 'Alipay',
+        'qq' => 'Ví QQ',
+        'wechat' => 'WeChat Pay',
+        'crypto' => 'Tiền điện tử',
+        'manual' => 'Thanh toán thủ công',
+        'status' => [
+            'wait' => 'Chờ thanh toán',
+        ],
+    ],
+    'order' => [
+        'status' => [
+            'cancel' => 'Hủy',
+            'complete' => 'Hoàn thành',
+            'prepaid' => 'Thanh toán trước',
+            'ongoing' => 'Đang diễn ra',
+            'review' => 'Chờ xác nhận',
+        ],
+    ],
+    'recommend' => 'Đề xuất',
+    'advance' => 'Nâng cao',
+    'action' => 'Hành động',
+    'search' => 'Tìm kiếm',
+    'edit' => 'Chỉnh sửa',
+    'delete' => 'Xóa',
+    'status' => [
+        'attribute' => 'Trạng thái',
+        'inactive' => 'Không hoạt động',
+        'disabled' => 'Đã tắt',
+        'banned' => 'Bị cấm',
+        'normal' => 'Bình thường',
+        'enabled' => 'Đã bật',
+        'expire' => 'Hết hạn',
+        'limited' => 'Giới hạn',
+        'run_out' => 'Đã dùng hết',
+        'unused' => 'Chưa sử dụng',
+        'used' => 'Đã sử dụng',
+        'closed' => 'Đóng',
+        'applying' => 'Đang áp dụng',
+        'withdrawn' => 'Đã rút',
+        'unwithdrawn' => 'Chưa rút',
+        'reply' => 'Đã trả lời',
+        'pending' => 'Đang chờ',
+        'unknown' => 'Không xác định',
+        'available' => 'Có sẵn',
+        'reject' => 'Từ chối',
+        'rejected' => 'Bị từ chối',
+        'review' => 'Chờ xét duyệt',
+        'reviewed' => 'Đã duyệt',
+        'paid' => 'Đã thanh toán',
+        'payment_pending' => 'Chờ thanh toán',
+        'pass' => 'Đạt',
+        'send_to_credit' => 'Gửi vào tài khoản',
+        'waiting_tobe_send' => 'Chờ gửi',
+    ],
+    'stay_unchanged' => 'Để trống để giữ nguyên',
+    'random_generate' => 'Để trống để tự động tạo ngẫu nhiên',
+    'request_failed' => 'Yêu cầu thất bại, vui lòng thử lại',
+    'convert' => 'Chuyển đổi',
+    'import' => 'Nhập',
+    'or' => 'hoặc',
+    'more' => 'Thêm',
+    'to' => 'đến',
+    'to_be_send' => 'Chờ gửi',
+    'developing' => 'Đang phát triển! Hãy chờ đón nhé',
+];

+ 34 - 0
resources/lang/vi/errors.php

@@ -0,0 +1,34 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'forbidden' => [
+        'access' => 'Phát hiện truy cập từ IP hoặc proxy không xác định, từ chối truy cập',
+        'bots' => 'Phát hiện truy cập từ bot, từ chối truy cập',
+        'china' => 'Phát hiện truy cập từ IP hoặc proxy Trung Quốc, từ chối truy cập',
+        'oversea' => 'Phát hiện truy cập từ IP hoặc proxy nước ngoài, từ chối truy cập',
+    ],
+    'log' => 'Nhật ký',
+    'refresh' => 'Làm mới',
+    'refresh_page' => 'Vui lòng làm mới trang và thử lại',
+    'report' => 'Lỗi bao gồm báo cáo: ',
+    'safe_enter' => 'Lối vào an toàn',
+    'safe_code' => 'Vui lòng nhập mã an toàn',
+    'title' => '⚠️ Lỗi xảy ra',
+    'unsafe_enter' => 'Lối vào không an toàn',
+    'visit' => 'Vui lòng truy cập',
+    'whoops' => 'Ôi!',
+    'get_ip' => 'Lấy thông tin IP thất bại',
+    'subscribe' => [
+        'unknown' => 'Liên kết đăng ký không xác định! Vui lòng lấy liên kết mới!',
+        'sub_baned' => 'Đăng ký bị cấm! Vào trang web để biết thêm chi tiết',
+        'user' => 'URL sai, tài khoản không tồn tại!',
+        'user_disable' => 'Tài khoản bị vô hiệu hóa! Liên hệ hỗ trợ!',
+        'baned_until' => 'Tài khoản bị cấm đến :time, vui lòng đợi mở khóa!',
+        'out' => 'HẾT DỮ LIỆU! Vui lòng mua thêm hoặc đặt lại dữ liệu!',
+        'expired' => 'Tài khoản hết hạn! Vui lòng gia hạn mua hàng!',
+        'question' => 'Lỗi tài khoản!? Vào trang web để biết thêm chi tiết',
+        'none' => 'Không có node khả dụng',
+    ],
+];

+ 232 - 0
resources/lang/vi/model.php

@@ -0,0 +1,232 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'user' => [
+        'id' => 'ID Người dùng',
+        'attribute' => 'Người dùng',
+        'nickname' => 'Biệt danh',
+        'username' => 'Tên đăng nhập',
+        'password' => 'Mật Khẩu',
+        'credit' => 'Số dư',
+        'invite_num' => 'Lượt mời khả dụng',
+        'reset_date' => 'Ngày đặt lại dữ liệu',
+        'port' => 'Cổng',
+        'traffic_used' => 'Dữ liệu đã dùng',
+        'service' => 'Dịch vụ Proxy',
+        'group' => 'Nhóm',
+        'account_status' => 'Trạng Thái Tài Khoản',
+        'proxy_status' => 'Trạng thái Proxy',
+        'expired_date' => 'Ngày hết hạn',
+        'role' => 'Vai trò',
+        'wechat' => 'WeChat',
+        'qq' => 'QQ',
+        'remark' => 'Ghi chú',
+        'uuid' => 'VMess UUID',
+        'proxy_passwd' => 'Mật khẩu Proxy',
+        'proxy_method' => 'Mã hóa',
+        'usable_traffic' => 'Lưu lượng có sẵn',
+        'proxy_protocol' => 'Giao thức',
+        'proxy_obfs' => 'Che đậy',
+        'speed_limit' => 'Giới hạn tốc độ',
+        'inviter' => 'Người mời',
+        'created_date' => 'Ngày đăng ký',
+    ],
+    'common' => [
+        'extend' => 'Thông tin mở rộng',
+        'sort' => 'Sắp xếp',
+        'description' => 'Mô tả',
+        'type' => 'Loại',
+        'level' => 'Cấp độ',
+    ],
+    'country' => [
+        'code' => 'Mã quốc gia',
+        'icon' => 'Cờ',
+        'name' => 'Tên quốc gia',
+    ],
+    'subscribe' => [
+        'code' => 'Mã đăng ký',
+        'req_times' => 'Số lần yêu cầu',
+        'updated_at' => 'Yêu cầu gần nhất',
+        'ban_time' => 'Thời gian cấm',
+        'ban_desc' => 'Lý do cấm',
+        'req_ip' => 'IP yêu cầu',
+        'req_header' => 'Tiêu đề truy cập',
+    ],
+    'oauth' => [
+        'type' => 'Kênh',
+        'identifier' => 'Định danh',
+    ],
+    'user_group' => [
+        'attribute' => 'Nhóm người dùng',
+        'name' => 'Tên nhóm',
+        'nodes' => 'Node',
+    ],
+    'node' => [
+        'attribute' => 'Node',
+        'id' => 'ID Node',
+        'name' => 'Tên',
+        'domain' => 'Tên miền',
+        'static' => 'Trạng thái hoạt động',
+        'online_user' => 'Người dùng online',
+        'data_consume' => 'Dữ liệu tiêu thụ',
+        'data_rate' => 'Hệ số dữ liệu',
+        'ddns' => 'DDNS',
+        'ipv4' => 'IPv4',
+        'ipv6' => 'IPv6',
+        'push_port' => 'Cổng đẩy',
+        'rule_group' => 'Nhóm quy tắc',
+        'traffic_limit' => 'Giới hạn tốc độ',
+        'client_limit' => 'Giới hạn thiết bị',
+        'label' => 'Nhãn',
+        'country' => 'Quốc gia',
+        'udp' => 'UDP',
+        'display' => 'Hiển thị & Đăng ký',
+        'detection' => 'Phát hiện chặn',
+        'method' => 'Mã hóa',
+        'protocol' => 'Giao thức',
+        'protocol_param' => 'Tham số giao thức',
+        'obfs' => 'Obfs',
+        'obfs_param' => 'Tham số obfs',
+        'single' => 'Cổng đơn',
+        'transfer' => 'Chuyển tiếp',
+        'service_port' => 'Cổng dịch vụ',
+        'single_passwd' => '[Đơn] Mật khẩu',
+        'v2_alter_id' => 'Alter ID',
+        'v2_net' => 'Mạng',
+        'v2_cover' => 'Ẩn danh',
+        'v2_host' => 'Host ẩn danh',
+        'v2_path' => 'Đường dẫn | Khóa',
+        'v2_sni' => 'SNI',
+        'v2_tls' => 'TLS',
+        'v2_tls_provider' => 'Cấu hình TLS',
+        'relay_port' => 'Cổng chuyển tiếp',
+    ],
+    'node_auth' => [
+        'attribute' => 'Xác thực Node',
+        'key' => 'Mã bí mật<small>cho node</small>',
+        'secret' => 'Mã bí mật ngược',
+    ],
+    'node_cert' => [
+        'attribute' => 'Chứng chỉ miền',
+        'domain' => 'Tên miền',
+        'key' => 'Khóa',
+        'pem' => 'PEM',
+        'issuer' => 'Người cấp',
+        'signed_date' => 'Ngày ký',
+        'expired_date' => 'Ngày hết hạn',
+    ],
+    'order' => [
+        'attribute' => 'Đơn hàng',
+        'id' => 'Mã đơn hàng',
+        'original_price' => 'Giá gốc',
+        'price' => 'Giá thực',
+        'pay_way' => 'Thanh toán',
+        'status' => 'Trạng thái',
+    ],
+    'goods' => [
+        'attribute' => 'Hàng hóa',
+        'name' => 'Tên',
+        'price' => 'Giá bán',
+        'category' => 'Danh mục',
+        'renew' => 'Giá đổi dữ liệu',
+        'user_limit' => 'Giới hạn tốc độ',
+        'period' => 'Chu kỳ',
+        'traffic' => 'Dữ liệu cho phép',
+        'invite_num' => 'Mời miễn phí',
+        'limit_num' => 'Giới hạn mua',
+        'available_date' => 'Thời hạn',
+        'hot' => 'Bán chạy',
+        'color' => 'Màu sắc',
+        'logo' => 'Hình ảnh',
+        'info' => 'Thông tin tùy chỉnh',
+    ],
+    'rule' => [
+        'attribute' => 'Quy tắc',
+        'name' => 'Mô tả',
+        'pattern' => 'Giá trị',
+    ],
+    'rule_group' => [
+        'attribute' => 'Nhóm quy tắc',
+        'name' => 'Tên',
+        'type' => 'Kiểu',
+        'rules' => 'Quy tắc',
+    ],
+    'role' => [
+        'attribute' => 'Vai trò',
+        'name' => 'Tên',
+        'permissions' => 'Quyền',
+    ],
+    'permission' => [
+        'attribute' => 'Quyền',
+        'description' => 'Mô tả',
+        'name' => 'Tên tuyến',
+    ],
+    'article' => [
+        'attribute' => 'Bài viết',
+        'category' => 'Danh mục',
+        'language' => 'Ngôn ngữ',
+        'logo' => 'Bìa',
+        'created_at' => 'Ngày đăng',
+        'updated_at' => 'Ngày cập nhật',
+    ],
+    'coupon' => [
+        'attribute' => 'Phiếu',
+        'name' => 'Tên',
+        'sn' => 'Mã',
+        'logo' => 'Hình ảnh',
+        'value' => 'Giá trị',
+        'priority' => 'Ưu tiên',
+        'usable_times' => 'Giới hạn',
+        'minimum' => 'Tối thiểu',
+        'used' => 'Hạn mức cá nhân',
+        'levels' => 'Hạn theo cấp',
+        'groups' => 'Hạn theo nhóm',
+        'users_whitelist' => 'Tài khoản ưu tiên',
+        'users_blacklist' => 'Tài khoản hạn chế',
+        'services_whitelist' => 'Cho phép hàng hóa',
+        'services_blacklist' => 'Vô hiệu hàng hóa',
+        'newbie' => 'Mới tạo tài khoản',
+        'num' => 'Số lượng',
+    ],
+    'aff' => [
+        'invitee' => 'Người mua',
+        'amount' => 'Tổng đơn hàng',
+        'commission' => 'Hoa hồng',
+        'updated_at' => 'Xử lý',
+        'created_at' => 'Ngày đặt',
+    ],
+    'referral' => [
+        'created_at' => 'Thời gian nộp',
+        'user' => 'Người nộp',
+        'amount' => 'Số tiền',
+        'id' => 'Mã yêu cầu',
+    ],
+    'notification' => [
+        'address' => 'Người nhận',
+        'created_at' => 'Ngày gửi',
+        'status' => 'Trạng thái',
+    ],
+    'ip' => [
+        'network_type' => 'Loại mạng',
+        'info' => 'Vị trí',
+    ],
+    'user_traffic' => [
+        'upload' => 'Tải lên',
+        'download' => 'Tải xuống',
+        'total' => 'Tổng',
+        'log_time' => 'Thời gian',
+    ],
+    'user_data_modify' => [
+        'before' => 'Trước',
+        'after' => 'Sau',
+        'created_at' => 'Thời gian thay đổi',
+    ],
+    'user_credit' => [
+        'before' => 'Trước',
+        'after' => 'Sau',
+        'amount' => 'Số tiền',
+        'created_at' => 'Thời gian thay đổi',
+    ],
+];

+ 37 - 0
resources/lang/vi/notification.php

@@ -0,0 +1,37 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'attribute' => 'Thông báo',
+    'new' => '{1} Bạn có :num tin nhắn mới',
+    'empty' => 'Bạn không có tin nhắn mới nào',
+    'payment_received' => 'Thanh toán thành công, số tiền: :amount. Xem chi tiết đơn hàng',
+    'account_expired' => 'Nhắc nhở hết hạn tài khoản',
+    'account_expired_content' => 'Tài khoản của bạn sẽ hết hạn trong :days ngày nữa. Vui lòng gia hạn để tiếp tục sử dụng dịch vụ.',
+    'account_expired_blade' => 'Tài khoản sẽ hết hạn trong :days ngày nữa, vui lòng gia hạn kịp thời',
+    'active_email' => 'Vui lòng xác minh trong vòng 30 phút',
+    'close_ticket' => 'Đóng vé :id: :title',
+    'view_web' => 'Xem trang web',
+    'view_ticket' => 'Xem vé',
+    'new_ticket' => 'Vé mới nhận được: :title',
+    'reply_ticket' => 'Đã trả lời vé: :title',
+    'ticket_content' => 'Nội dung vé:',
+    'node_block' => 'Cảnh báo chặn node',
+    'node_offline' => 'Cảnh báo node ngắt kết nối',
+    'node_offline_content' => 'Các node bất thường, có thể đã ngắt kết nối:',
+    'block_report' => 'Báo cáo chặn:',
+    'traffic_warning' => 'Cảnh báo sử dụng dữ liệu',
+    'traffic_remain' => 'Đã sử dụng :percent% dữ liệu, vui lòng chú ý',
+    'traffic_tips' => 'Lưu ý ngày đặt lại dữ liệu và sử dụng dữ liệu hợp lý, hoặc nạp tiền sau khi hết',
+    'verification_account' => 'Xác minh tài khoản',
+    'verification' => 'Mã xác minh của bạn:',
+    'verification_limit' => 'Vui lòng xác minh trong vòng :minutes phút',
+    'data_anomaly' => 'Cảnh báo người dùng dữ liệu bất thường',
+    'data_anomaly_content' => 'Người dùng :id: [Tải lên: :upload | Tải xuống: :download | Tổng: :total] trong 1 giờ qua',
+    'node' => [
+        'upload' => 'Tải lên',
+        'download' => 'Tải xuống',
+        'total' => 'Tổng',
+    ],
+];

+ 237 - 0
resources/lang/vi/user.php

@@ -0,0 +1,237 @@
+<?php
+
+declare(strict_types=1);
+
+return [
+    'account' => [
+        'credit' => 'Số dư tài khoản',
+        'status' => 'Trạng thái tài khoản',
+        'level' => 'Cấp độ tài khoản',
+        'group' => 'Nhóm',
+        'speed_limit' => 'Giới hạn tốc độ',
+        'remain' => 'Dữ liệu còn lại',
+        'time' => 'Thời hạn',
+        'last_login' => 'Đăng nhập gần nhất',
+        'reset' => '{0} Dữ liệu sẽ đặt lại sau <code id="restTime">:days</code> ngày |[1,*] Còn :days ngày nữa để đặt lại dữ liệu',
+        'connect_password' => 'Mật khẩu kết nối proxy',
+        'reason' => [
+            'normal' => 'Tài khoản bình thường',
+            'expired' => 'Gói cước của bạn đã hết hạn',
+            'overused' => 'Đã vượt quá giới hạn <code>:data</code> GB dữ liệu trong 1 giờ nên bị giới hạn tốc độ<br/>Sau <code id="banedTime">:min</code> phút sẽ mở khóa',
+            'traffic_exhausted' => 'HẾT DỮ LIỆU',
+            'unknown' => 'LỖI KHÔNG XÁC ĐỊNH. Vui lòng thử làm mới trình duyệt trước khi liên hệ admin để được trợ giúp',
+        ],
+    ],
+    'home' => [
+        'attendance' => [
+            'attribute' => 'Điểm danh',
+            'disable' => 'Chức năng điểm danh bị tắt',
+            'done' => 'Đã điểm danh rồi, ngày mai quay lại nhé!',
+            'success' => 'Bạn nhận được :data dữ liệu',
+            'failed' => 'Lỗi hệ thống ❌',
+        ],
+        'traffic_logs' => 'Nhật ký dữ liệu',
+        'announcement' => 'Thông báo',
+        'wechat_push' => 'Dịch vụ thông báo WeChat',
+        'chat_group' => 'Nhóm chat',
+        'empty_announcement' => 'Chưa có thông báo',
+    ],
+    'purchase_to_unlock' => 'Mua dịch vụ để mở khóa',
+    'purchase_required' => 'Chức năng này bị tắt đối với người dùng không trả phí! Vui lòng',
+    'attribute' => [
+        'node' => 'Node',
+        'data' => 'Dữ liệu',
+        'ip' => 'IP',
+        'isp' => 'Nhà mạng',
+        'address' => 'Vị trí',
+    ],
+    'purchase_promotion' => 'Nhanh chóng mua dịch vụ!',
+    'menu' => [
+        'helps' => 'Trợ giúp',
+        'home' => 'Trang chủ',
+        'invites' => 'Mời',
+        'invoices' => 'Hoá đơn',
+        'nodes' => 'Node',
+        'referrals' => 'Giới thiệu',
+        'shop' => 'Cửa hàng',
+        'profile' => 'Hồ sơ',
+        'tickets' => 'Vé',
+        'admin_dashboard' => 'Bảng điều khiển',
+    ],
+    'contact' => 'Liên hệ',
+    'oauth' => [
+        'bind_title' => 'Liên kết tài khoản mạng xã hội',
+        'not_bind' => 'Chưa liên kết',
+        'bind' => 'Liên kết',
+        'rebind' => 'Liên kết lại',
+        'unbind' => 'Hủy liên kết',
+    ],
+    'coupon' => [
+        'discount' => 'Giảm giá',
+        'error' => [
+            'unknown' => 'Mã không hợp lệ',
+            'used' => 'Mã đã được sử dụng',
+            'expired' => 'Mã đã hết hạn',
+            'run_out' => 'Mã đã dùng hết',
+            'inactive' => 'Mã chưa có hiệu lực',
+            'wait' => 'Sẽ có hiệu lực lúc :time, vui lòng đợi!',
+            'unmet' => 'Chưa đáp ứng điều kiện',
+            'minimum' => 'Giá trị tối thiểu là :amount',
+            'overused' => 'Chỉ có thể dùng :times lần',
+            'users' => 'Tài khoản không đủ điều kiện',
+            'services' => 'Sản phẩm không đủ điều kiện, vui lòng xem điều khoản',
+        ],
+    ],
+    'error_response' => 'Đã có lỗi xảy ra, vui lòng thử lại sau.',
+    'invite' => [
+        'attribute' => 'Mã mời',
+        'counts' => 'Tổng <code>:num</code> mã mời',
+        'tips' => 'Còn <strong>:num</strong> mã mời, mã mời có hiệu lực trong :days ngày kể từ lúc tạo',
+        'logs' => 'Nhật ký mời',
+        'promotion' => 'Đăng ký qua mã của bạn, cả hai đều nhận được :traffic dữ liệu; Bạn nhận được :referral_percent% hoa hồng khi người được giới thiệu mua hàng',
+        'generate_failed' => 'Thất bại: Đã hết số lượng mã mời',
+    ],
+    'reset_data' => [
+        'action' => 'Đặt lại dữ liệu',
+        'cost' => 'Phí <code>:amount</code>',
+        'cost_tips' => 'Đặt lại sẽ trừ :amount!',
+        'lack' => 'Số dư không đủ, vui lòng nạp thêm',
+        'logs' => 'Người dùng tự đặt lại dữ liệu',
+        'success' => 'Đặt lại thành công',
+    ],
+    'referral' => [
+        'link' => 'Liên kết giới thiệu',
+        'total' => 'Tổng :amount (:total lần), rút tiền khi đủ :money',
+        'logs' => 'Nhật ký hoa hồng',
+        'failed' => 'Yêu cầu thất bại',
+        'success' => 'Yêu cầu thành công',
+        'msg' => [
+            'account' => 'Tài khoản đã hết hạn, vui lòng mua dịch vụ trước',
+            'applied' => 'Đã có yêu cầu, đợi xử lý',
+            'unfulfilled' => 'Cần :amount để rút, cố lên!',
+            'wait' => 'Đợi duyệt',
+            'error' => 'Lỗi tạo đơn, thử lại sau hoặc liên hệ admin',
+        ],
+    ],
+    'inviter' => 'Người mời',
+    'invitee' => 'Người được mời',
+    'registered_at' => 'Ngày đăng ký',
+    'bought_at' => 'Ngày mua',
+    'payment_method' => 'Thanh toán',
+    'pay' => 'Thanh toán',
+    'input_coupon' => 'Nhập mã giảm giá',
+    'recharge' => 'Nạp tiền',
+    'recharge_credit' => 'Nạp tiền vào tài khoản',
+    'recharging' => 'Đang nạp tiền...',
+    'withdraw_commission' => 'Rút hoa hồng',
+    'withdraw_at' => 'Ngày rút',
+    'withdraw_logs' => 'Lịch sử rút tiền',
+    'withdraw' => 'Rút tiền',
+    'scan_qrcode' => 'Vui lòng quét mã QR trong ứng dụng',
+    'shop' => [
+        'hot' => 'BÁN CHẠY',
+        'limited' => 'GIỚI HẠN',
+        'change_amount' => 'Số tiền nạp',
+        'change_amount_help' => 'Nhập số tiền nạp',
+        'buy' => 'Mua',
+        'description' => 'Mô tả',
+        'service' => 'Dịch vụ',
+        'pay_credit' => 'Tài khoản',
+        'pay_online' => 'Thanh toán trực tuyến',
+        'price' => 'Giá',
+        'quantity' => 'Số lượng',
+        'subtotal' => 'Tổng phụ',
+        'total' => 'Tổng',
+        'conflict' => 'Xung đột',
+        'conflict_tips' => '<p>Gói hiện tại sẽ được đặt là <code>trả trước</code><p><ol class="text-left"><li> Gói trả trước sẽ tự động kích hoạt khi gói hiện tại hết hạn!</li><li> Bạn có thể kích hoạt thủ công sau khi thanh toán!</li></ol>',
+        'call4help' => 'Vui lòng mở vé liên hệ hỗ trợ',
+    ],
+    'service' => [
+        'node_count' => '<code>:num</code> node chất lượng cao',
+        'country_count' => 'Có mặt tại <code>:num</code> quốc gia',
+        'unlimited' => 'Không giới hạn tốc độ',
+    ],
+    'payment' => [
+        'error' => 'Số tiền nạp không hợp lệ',
+        'creating' => 'Đang tạo đơn hàng...',
+        'redirect_stripe' => 'Chuyển hướng đến thanh toán Stripe',
+        'qrcode_tips' => 'Vui lòng quét mã QR bằng <strong class="red-600">:software</strong>',
+        'close_tips' => 'Vui lòng hoàn thành trong <code>:minutes phút</code> nếu không đơn hàng sẽ đóng',
+        'mobile_tips' => '<strong>Điện thoại:</strong> Nhấn giữ mã QR -> Lưu hình ảnh -> Mở ứng dụng thanh toán -> Quét từ thư viện ảnh để thanh toán',
+    ],
+    'invoice' => [
+        'attribute' => 'Đơn hàng',
+        'detail' => 'Chi tiết',
+        'amount' => 'Số tiền',
+        'active_prepaid_question' => 'Kích hoạt gói trả trước ngay bây giờ?',
+        'active_prepaid_tips' => 'Sau khi kích hoạt:<br>- Gói hiện tại sẽ mất hiệu lực ngay!<br>- Thời hạn mới bắt đầu tính từ hôm nay!',
+    ],
+    'node' => [
+        'info' => 'Thông tin cấu hình',
+        'setting' => 'Cài đặt proxy',
+        'unstable' => 'Mạng không ổn định/Bảo trì',
+        'rate' => ':ratio lần tiêu thụ dữ liệu',
+    ],
+    'subscribe' => [
+        'link' => 'Đường dẫn đăng ký',
+        'tips' => 'Cảnh báo: Chỉ sử dụng cá nhân, không chia sẻ để tránh phát hiện lưu lượng bất thường và bị cấm',
+        'exchange_warning' => 'Thay đổi đăng ký sẽ:\n1. Vô hiệu hóa đăng ký hiện tại ngay lập tức\n2. Thay đổi mật khẩu kết nối',
+        'custom' => 'Đăng ký tùy chỉnh',
+        'ss_only' => 'Chỉ SS',
+        'ssr_only' => 'Chỉ SSR (bao gồm SS)',
+        'v2ray_only' => 'Chỉ V2Ray',
+        'trojan_only' => 'Chỉ Trojan',
+        'error' => 'Lỗi thay đổi đăng ký',
+        'info' => [
+            'title' => 'Tóm tắt tài khoản [Không thời gian thực]',
+            'upload' => 'Tải lên',
+            'download' => 'Tải về',
+            'total' => 'Dữ liệu gói',
+        ],
+    ],
+    'ticket' => [
+        'attribute' => 'Vé',
+        'submit_tips' => 'Xác nhận gửi vé?',
+        'reply_confirm' => 'Xác nhận trả lời vé?',
+        'close_tips' => 'Bạn có chắc chắn muốn đóng vé này không?',
+        'close' => 'Đóng vé',
+        'failed_closed' => 'Lỗi: Vé đã đóng',
+        'reply_placeholder' => 'Nói gì đó...',
+        'reply' => 'Trả lời',
+        'close_msg' => 'Vé: ID :id đã được đóng bởi người dùng',
+        'title_placeholder' => 'Mô tả ngắn vấn đề của bạn',
+        'content_placeholder' => 'Mô tả chi tiết vấn đề để chúng tôi có thể hỗ trợ nhanh chóng',
+        'new' => 'Tạo vé mới',
+        'working_hour' => 'Giờ làm việc',
+        'online_hour' => 'Giờ trực tuyến',
+        'service_tips' => 'Vui lòng chỉ sử dụng một cách liên hệ! Yêu cầu lặp lại sẽ làm chậm phản hồi',
+        'error' => 'Lỗi không xác định! Thông báo cho admin',
+    ],
+    'traffic_logs' => [
+        '24hours' => 'Sử dụng hôm nay',
+        '30days' => 'Sử dụng trong tháng',
+        'tips' => 'Lưu ý: Thống kê dữ liệu có thể bị chậm. Theo ngày cập nhật vào ngày kế tiếp, theo giờ cập nhật vào giờ kế tiếp.',
+    ],
+    'client' => 'Ứng dụng',
+    'tutorials' => 'Hướng dẫn',
+    'current_role' => 'Vai trò hiện tại',
+    'knowledge' => [
+        'title' => 'Kiến thức',
+        'basic' => 'Cơ bản',
+    ],
+    'manual' => [
+        'red_packet' => 'Nhận hồng bao Alipay',
+        'hint' => 'Sau khi quét mã thanh toán, vui lòng nhấn vào 👇【Tiếp theo】 cho đến 👇【Gửi】 để hoàn thành thanh toán!!!',
+        'step_1' => 'Lưu ý',
+        'step_1_title' => 'Cách thanh toán chính xác',
+        'step_2' => 'Thanh toán',
+        'step_2_title' => 'Lấy mã QR và thanh toán',
+        'step_3' => 'Hoàn tất',
+        'step_3_title' => 'Đợi xác minh thủ công',
+        'remark' => 'Ghi chú tài khoản',
+        'remark_content' => 'Điền tài khoản đăng nhập để kiểm tra',
+        'payment_hint' => 'Khi thanh toán vui lòng nạp đúng số tiền (nhiều không hoàn lại, ít phải nạp thêm)',
+        'pre' => 'Trước',
+        'next' => 'Sau',
+    ],
+];