@anonympins/fingerprint 0.7.1 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,262 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Fingerprint Anti-Bot 0.7.2\n"
4
+ "Report-Msgid-Bugs-To: https://github.com/anonympins/fingerprint/issues\n"
5
+ "POT-Creation-Date: 2026-09-24 12:00+0000\n"
6
+ "PO-Revision-Date: 2026-09-24 12:00+0000\n"
7
+ "Last-Translator: Anonympins\n"
8
+ "Language-Team: German\n"
9
+ "Language: de_DE\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14
+
15
+ msgid "Fingerprint Anti-Bot"
16
+ msgstr "Fingerprint Anti-Bot"
17
+
18
+ msgid "High-performance client-side anti-bot protection and Proof-of-Work challenge verification for WordPress."
19
+ msgstr "Hochleistungsfähiger clientseitiger Bot-Schutz und Proof-of-Work Challenge-Verifizierung für WordPress."
20
+
21
+ msgid "[Fingerprint Anti-Bot Security Warning]"
22
+ msgstr "[Fingerprint Anti-Bot Sicherheitswarnung]"
23
+
24
+ msgid "Your website is currently running on unencrypted HTTP. In this mode, modern web browsers disable the native Web Cryptography API (crypto.subtle) for security reasons, forcing a JavaScript fallback simulation that is slower and vulnerable to Man-in-the-Middle (MitM) attacks. We strongly recommend deploying a TLS/SSL certificate and enforcing HTTPS to ensure the cryptographic integrity of Proof-of-Work computations and identity protection."
25
+ msgstr "Ihre Website läuft derzeit über unverschlüsseltes HTTP. In diesem Modus deaktivieren moderne Webbrowser die native Web Cryptography API (crypto.subtle) aus Sicherheitsgründen, was zu einer langsameren JavaScript-Fallback-Simulation führt, die anfällig für Man-in-the-Middle-Angriffe (MitM) ist. Wir empfehlen dringend, ein TLS/SSL-Zertifikat einzurichten und HTTPS zu erzwingen."
26
+
27
+ msgid "You do not have sufficient permissions to access this page."
28
+ msgstr "Sie haben nicht die erforderlichen Berechtigungen, um auf diese Seite zuzugreifen."
29
+
30
+ msgid "Fingerprint settings updated successfully."
31
+ msgstr "Fingerprint-Einstellungen wurden erfolgreich aktualisiert."
32
+
33
+ msgid "SQL cache table ($wpdb) cleared successfully."
34
+ msgstr "SQL-Cache-Tabelle ($wpdb) wurde erfolgreich geleert."
35
+
36
+ msgid "Client-side behavioral and cryptographic anti-bot protection without third-party CAPTCHA for WordPress."
37
+ msgstr "Verhaltensbasierter und kryptografischer Bot-Schutz ohne Drittanbieter-CAPTCHA für WordPress."
38
+
39
+ msgid "Official documentation reference:"
40
+ msgstr "Offizielle Referenzdokumentation:"
41
+
42
+ msgid "View Full Configuration Options on GitHub"
43
+ msgstr "Vollständige Konfigurationsoptionen auf GitHub ansehen"
44
+
45
+ msgid "GitHub Repository"
46
+ msgstr "GitHub Repository"
47
+
48
+ msgid "HTTPS Status"
49
+ msgstr "HTTPS-Status"
50
+
51
+ msgid "Active (WebCrypto Subtle available)"
52
+ msgstr "Aktiv (WebCrypto Subtle verfügbar)"
53
+
54
+ msgid "Insecure (Unencrypted HTTP)"
55
+ msgstr "Unsicher (Unverschlüsseltes HTTP)"
56
+
57
+ msgid "SQL Cache ($wpdb)"
58
+ msgstr "SQL-Cache ($wpdb)"
59
+
60
+ msgid "keys in database"
61
+ msgstr "Schlüssel in Datenbank"
62
+
63
+ msgid "%d expired keys awaiting cron purge"
64
+ msgstr "%d abgelaufene Schlüssel warten auf Cron-Bereinigung"
65
+
66
+ msgid "Active Profiles"
67
+ msgstr "Aktive Profile"
68
+
69
+ msgid "Frontend:"
70
+ msgstr "Frontend:"
71
+
72
+ msgid "Admin:"
73
+ msgstr "Admin:"
74
+
75
+ msgid "REST API:"
76
+ msgstr "REST-API:"
77
+
78
+ msgid "Settings & Profiles"
79
+ msgstr "Einstellungen & Profile"
80
+
81
+ msgid "Metrics & Weights View"
82
+ msgstr "Metriken- & Gewichtungsansicht"
83
+
84
+ msgid "Prometheus Stream"
85
+ msgstr "Prometheus-Stream"
86
+
87
+ msgid "1. Target Security Profiles"
88
+ msgstr "1. Ziel-Sicherheitsprofile"
89
+
90
+ msgid "Visitors & Frontend"
91
+ msgstr "Besucher & Frontend"
92
+
93
+ msgid "Blog (Optimal for content, smooth UX)"
94
+ msgstr "Blog (Optimal für Inhalte, flüssige Benutzererfahrung)"
95
+
96
+ msgid "Balanced (General purpose)"
97
+ msgstr "Balanced (Ausgewogen)"
98
+
99
+ msgid "Strict (Maximum protection)"
100
+ msgstr "Strict (Maximaler Schutz)"
101
+
102
+ msgid "E-commerce (Anti-scraping / scalping)"
103
+ msgstr "E-Commerce (Anti-Scraping / Scalping)"
104
+
105
+ msgid "Profile applied to all public pages of the WordPress site."
106
+ msgstr "Profil, das auf alle öffentlichen Seiten der WordPress-Website angewendet wird."
107
+
108
+ msgid "Administration Area (wp-login / wp-admin)"
109
+ msgstr "Administrationsbereich (wp-login / wp-admin)"
110
+
111
+ msgid "Strict (Recommended to secure logins)"
112
+ msgstr "Strict (Empfohlen zur Absicherung von Anmeldungen)"
113
+
114
+ msgid "Balanced"
115
+ msgstr "Balanced"
116
+
117
+ msgid "REST API (/wp-json/)"
118
+ msgstr "REST-API (/wp-json/)"
119
+
120
+ msgid "API (JSON challenges & machine PoW)"
121
+ msgstr "API (JSON-Challenges & Maschinen-PoW)"
122
+
123
+ msgid "Strict"
124
+ msgstr "Strict"
125
+
126
+ msgid "2. Action Thresholds (Frontend)"
127
+ msgstr "2. Handlungsschwellenwerte (Frontend)"
128
+
129
+ msgid "Suspicion Score Thresholds (0 - 100)"
130
+ msgstr "Verdachtswert-Schwellenwerte (0 - 100)"
131
+
132
+ msgid "Low (Initial challenge):"
133
+ msgstr "Low (Erste Überprüfung):"
134
+
135
+ msgid "Medium (Hardened challenge):"
136
+ msgstr "Medium (Verstärkte Überprüfung):"
137
+
138
+ msgid "High (Heavy Proof-of-Work):"
139
+ msgstr "High (Schwerer Proof-of-Work):"
140
+
141
+ msgid "Block (Immediate 403 Forbidden):"
142
+ msgstr "Block (Sofortige 403-Sperre):"
143
+
144
+ msgid "Advanced Behaviors"
145
+ msgstr "Erweitertes Verhalten"
146
+
147
+ msgid "Automatically challenge unknown new devices (without device_id cookie)"
148
+ msgstr "Unbekannte neue Geräte automatisch prüfen (ohne device_id-Cookie)"
149
+
150
+ msgid "Enable recursive WAF inspection (SQL, NoSQL, Log4j, Traversal in GET/POST)"
151
+ msgstr "Rekursive WAF-Prüfung aktivieren (SQL, NoSQL, Log4j, Traversal in GET/POST)"
152
+
153
+ msgid "Verbose mode in PHP logs (Debugging)"
154
+ msgstr "Ausführlicher Modus in PHP-Logs (Debugging)"
155
+
156
+ msgid "Save Changes"
157
+ msgstr "Änderungen speichern"
158
+
159
+ msgid "Store Maintenance:"
160
+ msgstr "Speicher-Wartung:"
161
+
162
+ msgid "Purge all stored sessions and nonces?"
163
+ msgstr "Alle gespeicherten Sitzungen und Nonces löschen?"
164
+
165
+ msgid "Clear SQL cache table ($wpdb)"
166
+ msgstr "SQL-Cache-Tabelle leeren ($wpdb)"
167
+
168
+ msgid "Behavioral & Transport Indicator Weights (Active Frontend Profile)"
169
+ msgstr "Verhaltens- & Transportindikator-Gewichtungen (Aktives Frontend-Profil)"
170
+
171
+ msgid "The final score of each request is computed using the weighted sum: <code>Score = &Sigma; (Metric &times; Weight)</code>."
172
+ msgstr "Die Gesamtpunktzahl jeder Anfrage berechnet sich aus der gewichteten Summe: <code>Score = &Sigma; (Metrik &times; Gewichtung)</code>."
173
+
174
+ msgid "Indicator / Metric"
175
+ msgstr "Indikator / Metrik"
176
+
177
+ msgid "Current Weight"
178
+ msgstr "Aktuelle Gewichtung"
179
+
180
+ msgid "Description & Detection Role"
181
+ msgstr "Beschreibung & Erkennungsrolle"
182
+
183
+ msgid "Update Metric Weights"
184
+ msgstr "Metrikgewichtungen aktualisieren"
185
+
186
+ msgid "Real-Time Prometheus Metrics"
187
+ msgstr "Echtzeit-Prometheus-Metriken"
188
+
189
+ msgid "Raw text format exported for scraping by Prometheus, Grafana Agent, or Datadog."
190
+ msgstr "Rohdatenformat exportiert für das Scraping durch Prometheus, Grafana Agent oder Datadog."
191
+
192
+ msgid "Triggering of invisible trap links, multi-framework honeypots, and injection probes."
193
+ msgstr "Auslösen von unsichtbaren Fallen-Links, Multi-Framework-Honeypots und Injektionssonden."
194
+
195
+ msgid "Missing, malformed, or out-of-order HTTP headers inconsistent with legitimate browsers."
196
+ msgstr "Fehlende, fehlerhafte oder falsch angeordnete HTTP-Header, die nicht zu legitimen Browsern passen."
197
+
198
+ msgid "Discrepancy between User-Agent and TLS cryptographic fingerprints (JA3/JA4, extensions, GREASE)."
199
+ msgstr "Diskrepanz zwischen User-Agent und kryptografischen TLS-Fingerprints (JA3/JA4, Erweiterungen, GREASE)."
200
+
201
+ msgid "Dynamic biometrics: mouse movements, keystroke dynamics, and mobile touch anomalies."
202
+ msgstr "Dynamische Biometrie: Mausbewegungen, Tastaturanschlagsdynamik und mobile Touch-Anomalien."
203
+
204
+ msgid "Velocity, robotic bursts, request standard deviation, and Benford's law statistical analysis."
205
+ msgstr "Geschwindigkeit, automatisierte Bursts, Anfrage-Standardabweichung und Benfordsche Gesetzesanalyse."
206
+
207
+ msgid "Alteration or drift in the hardware fingerprint between visits with the same cookie."
208
+ msgstr "Veränderung oder Drift des Hardware-Fingerprints zwischen Besuchen mit demselben Cookie."
209
+
210
+ msgid "Aggregated IP reputation of the network subnet (/24 or /48) and nearby attacker density."
211
+ msgstr "Aggregierte IP-Reputation des Subnetzes (/24 oder /48) und Dichte nahegelegener Angreifer."
212
+
213
+ msgid "Local historical reputation score of the client IP address with temporal decay over time."
214
+ msgstr "Lokaler historischer Reputationswert der Client-IP-Adresse mit zeitlichem Abklingen über die Zeit."
215
+
216
+ msgid "Display rendering anomalies, V-Sync/FPS cadence, and OffscreenCanvas hooking."
217
+ msgstr "Grafik-Rendering-Anomalien, V-Sync/FPS-Kadenz und OffscreenCanvas-Hooking."
218
+
219
+ msgid "Divergence in HTTP/2 and QUIC / HTTP/3 flow control frame settings."
220
+ msgstr "Divergenz in HTTP/2- und QUIC / HTTP/3-Flusssteuerungsrahmeneinstellungen."
221
+
222
+ msgid "Anomalies in QUIC transport parameters (flow control windows, max streams, and control frame ordering)."
223
+ msgstr "Anomalien bei QUIC-Transportparametern (Flusssteuerungsfenster, maximale Streams und Kontrollrahmen-Reihenfolge)."
224
+
225
+ msgid "Passive TCP/IP stack fingerprinting (SYN packet TTL, window size, MSS, options) vs declared operating system."
226
+ msgstr "Passives TCP/IP-Stack-Fingerprinting (SYN-Paket-TTL, Fenstergröße, MSS, Optionen) vs. deklariertes Betriebssystem."
227
+
228
+ msgid "Suspicious rotation of multiple IP addresses associated with a single hardware identity."
229
+ msgstr "Verdächtige Rotation mehrerer IP-Adressen bei gleicher Hardware-Identität."
230
+
231
+ msgid "Rapid and abnormal modifications to the application stack."
232
+ msgstr "Schnelle und abnormale Änderungen des Anwendungs-Stacks."
233
+
234
+ msgid "Detection of native automation attributes (navigator.webdriver, Chrome CDP)."
235
+ msgstr "Erkennung nativer Automatisierungsattribute (navigator.webdriver, Chrome CDP)."
236
+
237
+ msgid "Detection of cookie deletion, dropping, or refusal between consecutive requests to bypass device identification."
238
+ msgstr "Erkennung von Cookie-Löschung, -Verwerfung oder -Verweigerung zwischen aufeinanderfolgenden Anfragen zur Umgehung der Geräteidentifikation."
239
+
240
+ msgid "Correlation with known proxy IPs, Tor exit nodes, and federated threat intelligence blacklist."
241
+ msgstr "Korrelation mit bekannten Proxy-IPs, Tor-Exit-Nodes und föderierter Threat-Intelligence-Sperrliste."
242
+
243
+ msgid "Discrepancies between standard User-Agent and Sec-CH-UA Client Hints headers (browser family, version drift)."
244
+ msgstr "Diskrepanzen zwischen Standard-User-Agent und Sec-CH-UA Client-Hints-Headern (Browser-Familie, Versionsabweichung)."
245
+
246
+ msgid "Statistical analysis of click coordinate variance; flags unnaturally low pixel variance typical of click bots."
247
+ msgstr "Statistische Analyse der Klick-Koordinatenvarianz; markiert unnatürlich niedrige Pixelvarianz typisch für Klick-Bots."
248
+
249
+ msgid "Clustering of volatile client requests sharing identical hardware signatures across distinct IP addresses."
250
+ msgstr "Clustering flüchtiger Client-Anfragen mit identischen Hardware-Signaturen über verschiedene IP-Adressen hinweg."
251
+
252
+ msgid "Time delta between client timestamp and server reception to detect replay and automated delay attacks."
253
+ msgstr "Zeitdifferenz zwischen Client-Zeitstempel und Serverempfang zur Erkennung von Replay- und automatisierten Verzögerungsangriffen."
254
+
255
+ msgid "Detection of headless browsers, virtual GPU renderers (SwiftShader, llvmpipe) and emulated display resolutions."
256
+ msgstr "Erkennung von Headless-Browsern, virtuellen GPU-Renderern (SwiftShader, llvmpipe) und emulierten Bildschirmauflösungen."
257
+
258
+ msgid "Strict contradiction between layers (e.g. declared OS in User-Agent vs network TCP/IP stack OS)."
259
+ msgstr "Strikter Widerspruch zwischen Schichten (z. B. im User-Agent deklariertes OS vs. TCP/IP-Netzwerk-OS)."
260
+
261
+ msgid "Behavioral suspicion indicator."
262
+ msgstr "Verhaltensbasierter Verdachtsindikator."
@@ -0,0 +1,268 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Fingerprint Anti-Bot 0.7.2\n"
4
+ "Report-Msgid-Bugs-To: https://github.com/anonympins/fingerprint/issues\n"
5
+ "POT-Creation-Date: 2026-09-24 12:00+0000\n"
6
+ "PO-Revision-Date: 2026-09-24 12:00+0000\n"
7
+ "Last-Translator: Anonympins\n"
8
+ "Language-Team: French\n"
9
+ "Language: fr_FR\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=2; plural=(n > 1);\n"
14
+
15
+ msgid "Fingerprint Anti-Bot"
16
+ msgstr "Fingerprint Anti-Bot"
17
+
18
+ msgid "High-performance client-side anti-bot protection and Proof-of-Work challenge verification for WordPress."
19
+ msgstr "Protection bot haute performance pour WordPress avec Proof-of-Work client et détection d'anomalies."
20
+
21
+ msgid "[Fingerprint Anti-Bot Security Warning]"
22
+ msgstr "[Avertissement Sécurité Fingerprint Anti-Bot]"
23
+
24
+ msgid "Your website is currently running on unencrypted HTTP. In this mode, modern web browsers disable the native Web Cryptography API (crypto.subtle) for security reasons, forcing a JavaScript fallback simulation that is slower and vulnerable to Man-in-the-Middle (MitM) attacks. We strongly recommend deploying a TLS/SSL certificate and enforcing HTTPS to ensure the cryptographic integrity of Proof-of-Work computations and identity protection."
25
+ msgstr "Votre site fonctionne actuellement sous le protocole non chiffré HTTP. Dans ce mode, l'API native Web Cryptography (crypto.subtle) des navigateurs est désactivée par mesure de sécurité par les navigateurs modernes, forçant l'exécution d'un simulacre JavaScript plus lent et vulnérable aux attaques de l'homme du milieu (MitM). Il est fortement recommandé de déployer un certificat TLS/SSL et de forcer HTTPS pour garantir l'intégrité des calculs PoW et la protection des cookies d'identité."
26
+
27
+ msgid "You do not have sufficient permissions to access this page."
28
+ msgstr "Vous n'avez pas les permissions suffisantes pour accéder à cette page."
29
+
30
+ msgid "Fingerprint settings updated successfully."
31
+ msgstr "Paramètres Fingerprint mis à jour avec succès."
32
+
33
+ msgid "SQL cache table ($wpdb) cleared successfully."
34
+ msgstr "Table de cache SQL ($wpdb) purgée avec succès."
35
+
36
+ msgid "Client-side behavioral and cryptographic anti-bot protection without third-party CAPTCHA for WordPress."
37
+ msgstr "Protection comportementale et cryptographique sans CAPTCHA tiers pour WordPress."
38
+
39
+ msgid "Official documentation reference:"
40
+ msgstr "Documentation officielle de référence :"
41
+
42
+ msgid "View Full Configuration Options on GitHub"
43
+ msgstr "Voir Full Configuration Options sur GitHub"
44
+
45
+ msgid "GitHub Repository"
46
+ msgstr "Dépôt GitHub"
47
+
48
+ msgid "HTTPS Status"
49
+ msgstr "État HTTPS"
50
+
51
+ msgid "Active (WebCrypto Subtle available)"
52
+ msgstr "Actif (WebCrypto Subtle disponible)"
53
+
54
+ msgid "Insecure (Unencrypted HTTP)"
55
+ msgstr "Insecure (HTTP non chiffré)"
56
+
57
+ msgid "SQL Cache ($wpdb)"
58
+ msgstr "Cache SQL ($wpdb)"
59
+
60
+ msgid "keys in database"
61
+ msgstr "clés en base"
62
+
63
+ msgid "%d expired keys awaiting cron purge"
64
+ msgstr "%d clés expirées en attente de purge cron"
65
+
66
+ msgid "Active Profiles"
67
+ msgstr "Profils Actifs"
68
+
69
+ msgid "Frontend:"
70
+ msgstr "Frontend :"
71
+
72
+ msgid "Admin:"
73
+ msgstr "Admin :"
74
+
75
+ msgid "REST API:"
76
+ msgstr "API REST :"
77
+
78
+ msgid "Settings & Profiles"
79
+ msgstr "Réglages & Profils"
80
+
81
+ msgid "Metrics & Weights View"
82
+ msgstr "Vue des Métriques & Poids"
83
+
84
+ msgid "Prometheus Stream"
85
+ msgstr "Flux Prometheus"
86
+
87
+ msgid "1. Target Security Profiles"
88
+ msgstr "1. Profils de sécurité par cible"
89
+
90
+ msgid "Visitors & Frontend"
91
+ msgstr "Visiteurs & Frontend"
92
+
93
+ msgid "Blog (Optimal for content, smooth UX)"
94
+ msgstr "Blog (Optimal pour contenus, UX fluide)"
95
+
96
+ msgid "Balanced (General purpose)"
97
+ msgstr "Balanced (Équilibré)"
98
+
99
+ msgid "Strict (Maximum protection)"
100
+ msgstr "Strict (Protection maximale)"
101
+
102
+ msgid "E-commerce (Anti-scraping / scalping)"
103
+ msgstr "E-commerce (Anti-scraping / scalping)"
104
+
105
+ msgid "Profile applied to all public pages of the WordPress site."
106
+ msgstr "Profil appliqué à toutes les pages publiques du site WordPress."
107
+
108
+ msgid "Administration Area (wp-login / wp-admin)"
109
+ msgstr "Zone d'administration (wp-login / wp-admin)"
110
+
111
+ msgid "Strict (Recommended to secure logins)"
112
+ msgstr "Strict (Recommandé pour sécuriser les logins)"
113
+
114
+ msgid "Balanced"
115
+ msgstr "Balanced"
116
+
117
+ msgid "REST API (/wp-json/)"
118
+ msgstr "API REST (/wp-json/)"
119
+
120
+ msgid "API (JSON challenges & machine PoW)"
121
+ msgstr "API (Challenges JSON & PoW machine)"
122
+
123
+ msgid "Strict"
124
+ msgstr "Strict"
125
+
126
+ msgid "2. Action Thresholds (Frontend)"
127
+ msgstr "2. Seuils d'action (Thresholds Frontend)"
128
+
129
+ msgid "Suspicion Score Thresholds (0 - 100)"
130
+ msgstr "Seuils de score (0 - 100)"
131
+
132
+ msgid "Low (Initial challenge):"
133
+ msgstr "Low (Challenge initial) :"
134
+
135
+ msgid "Medium (Hardened challenge):"
136
+ msgstr "Medium (Challenge renforcé) :"
137
+
138
+ msgid "High (Heavy Proof-of-Work):"
139
+ msgstr "High (Preuve de travail lourde) :"
140
+
141
+ msgid "Block (Immediate 403 Forbidden):"
142
+ msgstr "Block (Blocage immédiat 403) :"
143
+
144
+ msgid "Advanced Behaviors"
145
+ msgstr "Comportements avancés"
146
+
147
+ msgid "Automatically challenge unknown new devices (without device_id cookie)"
148
+ msgstr "Challenger automatiquement les nouveaux navigateurs inconnus (sans cookie device_id)"
149
+
150
+ msgid "Enable recursive WAF inspection (SQL, NoSQL, Log4j, Traversal in GET/POST)"
151
+ msgstr "Activer l'analyse récursive WAF (Injections SQL, NoSQL, Log4j, Traversal dans GET/POST)"
152
+
153
+ msgid "Verbose mode in PHP logs (Debugging)"
154
+ msgstr "Mode verbeux dans les logs PHP (Débogage)"
155
+
156
+ msgid "Save Changes"
157
+ msgstr "Enregistrer les modifications"
158
+
159
+ msgid "Store Maintenance:"
160
+ msgstr "Maintenance du Store :"
161
+
162
+ msgid "Purge all stored sessions and nonces?"
163
+ msgstr "Purger toutes les sessions et nonces enregistrés ?"
164
+
165
+ msgid "Clear SQL cache table ($wpdb)"
166
+ msgstr "Vider la table de cache SQL ($wpdb)"
167
+
168
+ msgid "Behavioral & Transport Indicator Weights (Active Frontend Profile)"
169
+ msgstr "Poids des indicateurs comportementaux & transport (Profil Frontend Actif)"
170
+
171
+ msgid "The final score of each request is computed using the weighted sum: <code>Score = &Sigma; (Metric &times; Weight)</code>."
172
+ msgstr "Le score final de chaque requête est calculé par la somme pondérée : <code>Score = &Sigma; (Métrique &times; Poids)</code>."
173
+
174
+ msgid "Indicator / Metric"
175
+ msgstr "Indicateur / Métrique"
176
+
177
+ msgid "Current Weight"
178
+ msgstr "Poids Actuel"
179
+
180
+ msgid "Description & Detection Role"
181
+ msgstr "Description & Rôle Détecté"
182
+
183
+ msgid "Update Metric Weights"
184
+ msgstr "Mettre à jour les poids des métriques"
185
+
186
+ msgid "Real-Time Prometheus Metrics"
187
+ msgstr "Métriques Prometheus Temps Réel"
188
+
189
+ msgid "Raw text format exported for scraping by Prometheus, Grafana Agent, or Datadog."
190
+ msgstr "Format brut exporté pour scraping par Prometheus, Grafana Agent ou Datadog."
191
+
192
+ msgid "Triggering of invisible trap links, multi-framework honeypots, and injection probes."
193
+ msgstr "Déclenchement de liens pièges invisibles, honeypots multi-frameworks et sondes d'injection."
194
+
195
+ msgid "Missing, malformed, or out-of-order HTTP headers inconsistent with legitimate browsers."
196
+ msgstr "En-têtes HTTP manquants, malformés ou dans un ordre incohérent avec les navigateurs légitimes."
197
+
198
+ msgid "Discrepancy between User-Agent and TLS cryptographic fingerprints (JA3/JA4, extensions, GREASE)."
199
+ msgstr "Discordance entre User-Agent et empreintes cryptographiques TLS (JA3/JA4, extensions, GREASE)."
200
+
201
+ msgid "Dynamic biometrics: mouse movements, keystroke dynamics, and mobile touch anomalies."
202
+ msgstr "Biométrie dynamique : mouvements souris, cadence frappe clavier, anomalies de touch mobile."
203
+
204
+ msgid "Velocity, robotic bursts, request standard deviation, and Benford's law statistical analysis."
205
+ msgstr "Vélocité, rafales robotiques, écart-type des requêtes et analyse statistique de Benford."
206
+
207
+ msgid "Alteration or drift in the hardware fingerprint between visits with the same cookie."
208
+ msgstr "Altération ou dérive du fingerprint matériel entre deux visites du même cookie."
209
+
210
+ msgid "Aggregated IP reputation of the network subnet (/24 or /48) and nearby attacker density."
211
+ msgstr "Réputation IP agrégée du sous-réseau (/24 ou /48) et densité d'attaquants proches."
212
+
213
+ msgid "Local historical reputation score of the client IP address with temporal decay over time."
214
+ msgstr "Score historique local de réputation de l'adresse IP cliente avec décroissance temporelle au fil du temps."
215
+
216
+ msgid "Display rendering anomalies, V-Sync/FPS cadence, and OffscreenCanvas hooking."
217
+ msgstr "Anomalies de rendu graphique, cadence V-Sync/FPS et hook d'OffscreenCanvas."
218
+
219
+ msgid "Divergence in HTTP/2 and QUIC / HTTP/3 flow control frame settings."
220
+ msgstr "Divergence des réglages de trames de contrôle de flux HTTP/2 et QUIC / HTTP/3."
221
+
222
+ msgid "Anomalies in QUIC transport parameters (flow control windows, max streams, and control frame ordering)."
223
+ msgstr "Anomalies dans les paramètres de transport QUIC (fenêtres de contrôle de flux, flux max et ordonnancement des trames)."
224
+
225
+ msgid "Passive TCP/IP stack fingerprinting (SYN packet TTL, window size, MSS, options) vs declared operating system."
226
+ msgstr "Empreinte passive de pile TCP/IP (TTL paquet SYN, taille fenêtre, MSS, options) vs système d'exploitation déclaré."
227
+
228
+ msgid "Suspicious rotation of multiple IP addresses associated with a single hardware identity."
229
+ msgstr "Rotation suspecte d'adresses IP distinctes sur une même identité matérielle."
230
+
231
+ msgid "Detection of native automation attributes (navigator.webdriver, Chrome CDP)."
232
+ msgstr "Détection d'attributs natifs d'automatisation (navigator.webdriver, CDP Chrome)."
233
+
234
+ msgid "Detection of cookie deletion, dropping, or refusal between consecutive requests to bypass device identification."
235
+ msgstr "Détection de la suppression, rejet ou refus de cookie entre requêtes consécutives pour contourner l'identification."
236
+
237
+ msgid "Correlation with known proxy IPs, Tor exit nodes, and federated threat intelligence blacklist."
238
+ msgstr "Corrélation avec les adresses IP de proxy connues, nœuds de sortie Tor et liste noire fédérée de renseignements sur les menaces."
239
+
240
+ msgid "Discrepancies between standard User-Agent and Sec-CH-UA Client Hints headers (browser family, version drift)."
241
+ msgstr "Discordances entre User-Agent standard et en-têtes Client Hints Sec-CH-UA (famille de navigateur, dérive de version)."
242
+
243
+ msgid "Statistical analysis of click coordinate variance; flags unnaturally low pixel variance typical of click bots."
244
+ msgstr "Analyse statistique de variance des coordonnées de clics ; signale une variance anormalement faible typique des bots."
245
+
246
+ msgid "Clustering of volatile client requests sharing identical hardware signatures across distinct IP addresses."
247
+ msgstr "Regroupement de requêtes clientes partageant une signature matérielle identique sur des adresses IP distinctes."
248
+
249
+ msgid "Time delta between client timestamp and server reception to detect replay and automated delay attacks."
250
+ msgstr "Écart temporel entre horodatage client et réception serveur pour détecter les attaques par rejeu et délais automatisés."
251
+
252
+ msgid "Detection of headless browsers, virtual GPU renderers (SwiftShader, llvmpipe) and emulated display resolutions."
253
+ msgstr "Détection des navigateurs headless, rendus GPU virtuels (SwiftShader, llvmpipe) et résolutions d'écran émulées."
254
+
255
+ msgid "Suspicious rotation of multiple IP addresses associated with a single hardware identity."
256
+ msgstr "Rotation suspecte d'adresses IP distinctes sur une même identité matérielle."
257
+
258
+ msgid "Rapid and abnormal modifications to the application stack."
259
+ msgstr "Changements rapides et anormaux de la pile applicative."
260
+
261
+ msgid "Detection of native automation attributes (navigator.webdriver, Chrome CDP)."
262
+ msgstr "Détection d'attributs natifs d'automatisation (navigator.webdriver, CDP Chrome)."
263
+
264
+ msgid "Strict contradiction between layers (e.g. declared OS in User-Agent vs network TCP/IP stack OS)."
265
+ msgstr "Contradiction stricte entre couches (ex: OS déclaré dans UA vs OS réseau TCP/IP)."
266
+
267
+ msgid "Behavioral suspicion indicator."
268
+ msgstr "Indicateur de suspicion comportemental."
@@ -43,6 +43,89 @@ if (file_exists($zipFile)) {
43
43
 
44
44
  @mkdir($buildDir . '/src', 0777, true);
45
45
  @mkdir($buildDir . '/assets', 0777, true);
46
+ @mkdir($buildDir . '/languages', 0777, true);
47
+
48
+ /**
49
+ * Compile un fichier .po gettext en binaire .mo compatible WordPress.
50
+ */
51
+ function compilePoToMo(string $poFile, string $moFile): bool {
52
+ if (!file_exists($poFile)) return false;
53
+ $content = file_get_contents($poFile);
54
+ if ($content === false) return false;
55
+
56
+ $entries = [];
57
+ $currentMsgId = null;
58
+ $currentMsgStr = null;
59
+ $lines = explode("\n", str_replace(["\r\n", "\r"], "\n", $content));
60
+ $state = '';
61
+
62
+ foreach ($lines as $line) {
63
+ $line = trim($line);
64
+ if ($line === '' || str_starts_with($line, '#')) continue;
65
+ if (preg_match('/^msgid\s+"(.*)"$/', $line, $m)) {
66
+ if ($currentMsgId !== null && $currentMsgStr !== null) {
67
+ $entries[$currentMsgId] = $currentMsgStr;
68
+ }
69
+ $currentMsgId = stripcslashes($m[1]);
70
+ $currentMsgStr = null;
71
+ $state = 'msgid';
72
+ } elseif (preg_match('/^msgstr\s+"(.*)"$/', $line, $m)) {
73
+ $currentMsgStr = stripcslashes($m[1]);
74
+ $state = 'msgstr';
75
+ } elseif (preg_match('/^"(.*)"$/', $line, $m)) {
76
+ if ($state === 'msgid') {
77
+ $currentMsgId .= stripcslashes($m[1]);
78
+ } elseif ($state === 'msgstr') {
79
+ $currentMsgStr .= stripcslashes($m[1]);
80
+ }
81
+ }
82
+ }
83
+ if ($currentMsgId !== null && $currentMsgStr !== null) {
84
+ $entries[$currentMsgId] = $currentMsgStr;
85
+ }
86
+
87
+ ksort($entries);
88
+ $count = count($entries);
89
+ $originals = '';
90
+ $translations = '';
91
+ $origTable = [];
92
+ $transTable = [];
93
+
94
+ $headerSize = 28;
95
+ $tablesSize = $count * 8 * 2;
96
+ $curOffset = $headerSize + $tablesSize;
97
+
98
+ foreach ($entries as $orig => $trans) {
99
+ $origLen = strlen($orig);
100
+ $origTable[] = ['len' => $origLen, 'off' => $curOffset + strlen($originals)];
101
+ $originals .= $orig . "\0";
102
+ }
103
+
104
+ $transOffset = $curOffset + strlen($originals);
105
+ foreach ($entries as $orig => $trans) {
106
+ $transLen = strlen($trans);
107
+ $transTable[] = ['len' => $transLen, 'off' => $transOffset + strlen($translations)];
108
+ $translations .= $trans . "\0";
109
+ }
110
+
111
+ $mo = pack('V*',
112
+ 0x950412de, // Magic Number
113
+ 0, // Revision
114
+ $count, // Number of strings
115
+ 28, // Offset of table with original string lengths and offsets
116
+ 28 + ($count * 8), // Offset of table with translation string lengths and offsets
117
+ 0, 0 // Hash table size and offset
118
+ );
119
+
120
+ foreach ($origTable as $t) {
121
+ $mo .= pack('VV', $t['len'], $t['off']);
122
+ }
123
+ foreach ($transTable as $t) {
124
+ $mo .= pack('VV', $t['len'], $t['off']);
125
+ }
126
+ $mo .= $originals . $translations;
127
+ return file_put_contents($moFile, $mo) !== false;
128
+ }
46
129
 
47
130
  // 2. Copie des fichiers principaux du plugin WordPress
48
131
  copy($wpDir . '/fingerprint-wordpress.php', $buildDir . '/fingerprint-wordpress.php');
@@ -54,7 +137,19 @@ if (file_exists($solverSource)) {
54
137
  copy($solverSource, $buildDir . '/assets/pow.solver.inline.js');
55
138
  }
56
139
 
57
- // 4. Copie récursive de la bibliothèque PHP (src/php -> build/src), en excluant les dossiers de dev
140
+ // 4. Copie et compilation des fichiers de traduction i18n (FR / DE / EN)
141
+ $langSourceDir = $wpDir . '/languages';
142
+ if (is_dir($langSourceDir)) {
143
+ foreach (glob($langSourceDir . '/*.po') as $poFile) {
144
+ $baseName = basename($poFile);
145
+ copy($poFile, $buildDir . '/languages/' . $baseName);
146
+ $moTarget = $buildDir . '/languages/' . preg_replace('/\.po$/', '.mo', $baseName);
147
+ compilePoToMo($poFile, $moTarget);
148
+ compilePoToMo($poFile, $langSourceDir . '/' . preg_replace('/\.po$/', '.mo', $baseName));
149
+ }
150
+ }
151
+
152
+ // 5. Copie récursive de la bibliothèque PHP (src/php -> build/src), en excluant les dossiers de dev
58
153
  $excludeDirs = ['WordPress', 'Tests', 'bin'];
59
154
  $phpIterator = new RecursiveIteratorIterator(
60
155
  new RecursiveDirectoryIterator($phpSrcDir, FilesystemIterator::SKIP_DOTS),