This commit is contained in:
2025-11-27 23:41:44 +01:00
parent ae51cec1b5
commit 8e895f5226
4 changed files with 380 additions and 354 deletions

View File

@@ -4,342 +4,5 @@
"label": "Deutsch",
"flag": "🇩🇪",
"enabled": true
},
"header": {
"header_slogan": "USB-Sticks testen",
"btn_login": "Login",
"nav_how": "Wie es funktioniert",
"nav_problem": "Warum es wichtig ist",
"nav_features": "Funktionen",
"nav_security": "Sicherheit",
"nav_faq": "FAQ"
},
"brand": {
"brand_wordmark": "{{primary_domain}}",
"brand_subtitle": "USB-Sticks auf Fakes testen"
},
"footer": {
"footer_imprint": "Impressum",
"footer_privacy": "Datenschutz",
"footer_copy": "© {year} {{primary_domain}}. Alle Rechte vorbehalten."
},
"fake_ui": {
"error_fsapi_not_supported": "Die File System Access API wird von diesem Browser nicht unterstützt.",
"error_no_directory_selected": "Kein Verzeichnis ausgewählt.",
"error_no_space_detected": "Es konnte kein freier Speicher im gewählten Verzeichnis reserviert werden.",
"log_capacity_probe_start": "Ermittle verfügbaren Speicherplatz im gewählten Verzeichnis...",
"log_capacity_probe_result": "Ermittelter für Tests nutzbarer Speicher: {size} (Schreibprobe).",
"log_quick_prepare": "Quick-Check: Vorbereitung... (Testgröße: {size})",
"log_quick_verify_start": "Quick-Check: Schreiben abgeschlossen. Verifiziere Daten...",
"log_quick_data_error": "Quick-Check: Datenfehler bei Byte {byte}.",
"error_quick_data_error": "Datenfehler im Quick-Check bei Byte {byte}.",
"log_quick_delete_warn": "Quick-Check: Konnte Testdatei nicht löschen (nicht kritisch).",
"log_quick_success": "Quick-Check: Erfolgreich abgeschlossen.",
"log_bench_start": "Benchmark: Start schreibe Testdatei ({size})...",
"log_bench_read_start": "Benchmark: Lesen & Timing...",
"log_bench_delete_warn": "Benchmark: Konnte Testdatei nicht löschen (nicht kritisch).",
"log_bench_success": "Benchmark: Erfolgreich abgeschlossen.",
"log_wv_start": "Write/Verify: Start {blocks} Blöcke à {size} (gesamt {total})...",
"log_wv_block_start": "Write/Verify: Block {num}/{blocks} {file}",
"log_wv_data_error": "Write/Verify: Datenfehler in Block {num} bei Byte {byte}.",
"error_wv_data_error": "Datenfehler in Block {num} bei Byte {byte}.",
"log_wv_delete_warn": "Write/Verify: Konnte Blockdatei {file} nicht löschen (nicht kritisch).",
"log_wv_success": "Write/Verify: Alle Blöcke erfolgreich verifiziert.",
"log_all_subtest_start": "All-Inclusive: Starte Teiltest \"{mode}\" ({num}/{total})...",
"error_unknown_mode": "Unbekannter Modus: {mode}",
"log_fsapi_partial": "Dein Browser unterstützt die File System Access API nicht voll. Einige Funktionen sind deaktiviert.",
"selected_path_label": "USB-Ordner ausgewählt (Name: \"{name}\").",
"selected_path_none": "Noch kein Verzeichnis gewählt.",
"status_ready": "Bereit. Wähle zuerst deinen USB-Stick aus.",
"status_mode_none": "Kein Modus selektiert",
"status_dir_selected": "USB-Verzeichnis ausgewählt. Wähle jetzt einen Testmodus.",
"status_mode_selected": "Modus \"{mode}\" ausgewählt. Du kannst den Test jetzt starten.",
"status_running": "Test läuft... bitte USB-Stick nicht entfernen.",
"status_done": "Test abgeschlossen.",
"status_aborted": "Test wurde abgebrochen.",
"status_error": "Fehler: {msg}",
"status_error_unknown": "Unbekannter Fehler im Test.",
"overall_initial": "Noch kein Test durchgeführt.",
"overall_running": "Test läuft...",
"overall_done": "Browser-Test erfolgreich abgeschlossen.",
"overall_aborted": "Test abgebrochen.",
"overall_error": "Fehler im Browser-Test.",
"log_dir_selected": "Verzeichnis ausgewählt: {name}",
"log_dir_reset": "Verzeichnisauswahl zurückgesetzt.",
"log_pick_abort": "Verzeichnisauswahl abgebrochen.",
"log_pick_error": "Fehler bei Verzeichnisauswahl: {msg}",
"log_pick_error_unknown": "Unbekannter Fehler bei Verzeichnisauswahl.",
"log_mode_selected": "Modus gewählt: {mode}",
"log_test_start": "Starte Tests im Modus: {mode}",
"log_test_aborted": "Test wurde vom Benutzer abgebrochen.",
"log_test_error": "Fehler im Test: {msg}",
"log_test_error_unknown": "Unbekannter Fehler im Test.",
"log_loaded": "USB-Browser-Test (fakecheck) geladen. Warte auf Verzeichnisauswahl und Modus.",
"mode_quick": "Quick-Check",
"mode_benchmark": "Benchmark",
"mode_writeverify": "Write & Verify",
"mode_all": "All-Inclusive (alle Browser-Tests)",
"log_backend_save_error_status": "Backend: Konnte Ergebnis nicht speichern ({status}).",
"log_backend_save_ok": "Backend: Testergebnis gespeichert{suffix}.",
"log_backend_save_error": "Fehler beim Speichern im Backend: {msg}"
},
"serial": {
"rating_label": "Bewertung",
"rating": {
"ok": {
"label": "Plausibel",
"desc": "Keine deutlichen Auffälligkeiten erkannt."
},
"needs_review": {
"label": "Überprüfung empfohlen",
"desc": "Leichte Auffälligkeiten. In Kombination mit einem technischen Test ergibt sich ein klareres Bild."
},
"suspicious": {
"label": "Auffällig / Verdächtig",
"desc": "Deutliche Auffälligkeiten erkannt. Ein Kapazitäts- oder Schreib-/Lesetest ist dringend empfohlen."
},
"invalid": {
"label": "Ungültig",
"desc": "Die Seriennummer konnte nicht sinnvoll bewertet werden."
},
"unknown": {
"label": "Unklar",
"desc": "Bewertung nicht eindeutig möglich."
}
},
"heading_input": "Eingabedaten",
"heading_analysis": "Seriennummer-Analyse",
"heading_consistency": "Hersteller-Konsistenz",
"input": {
"manufacturer": "Hersteller (Angabe):",
"vidpid": "VID/PID:",
"vendor_detected": "Vendor aus VID:"
},
"analysis": {
"serial": "Seriennummer:",
"length": "Länge:",
"category": "Kategorie:",
"score": "Score:",
"issues": "Auffälligkeiten:"
},
"chars": "Zeichen",
"none": "keine Angabe",
"issues_none": "Keine besonderen Auffälligkeiten.",
"vendor_detected": "{vendor} (VID {vid})",
"vendor_unknown": "Unbekannter Hersteller für VID {vid}",
"vendor_none": "Keine Vendor-ID angegeben",
"disclaimer": "Diese Einschätzung basiert auf Heuristiken und kann keine Echtheit garantieren.",
"error": {
"no_serial": "Bitte gib eine Seriennummer ein.",
"api": "Fehler bei der Prüfung: {msg}",
"unknown": "Unerwartete Antwort vom Server."
}
},
"pages": {
"landing": {
"meta": {
"title": "{{primary_domain}} USB-Sticks auf Fakes testen",
"description": "USBCheck kombiniert einen schnellen Browser-Schnelltest mit einem professionellen Pro-Modus. So erkennst du gefälschte USB-Sticks, zu kleine echte Kapazität und langsame Billig-Controller bevor deine Dateien verschwinden."
},
"sections": {
"hero": {
"kicker": "Erkenne Fake-USB-Sticks, bevor du Daten verlierst",
"title": "Ist mein USB-Stick ein Fake?",
"lead": "USBCheck kombiniert einen schnellen Browser-Schnelltest mit einem professionellen Pro-Modus. So erkennst du gefälschte USB-Sticks, zu kleine echte Kapazität und langsame Billig-Controller bevor deine Dateien verschwinden.",
"cta_quick": "Kostenlosen Schnelltest starten",
"cta_learn": "Mehr zu Free & Pro"
},
"trust": {
"t1_title": "Keine Installation für Schnelltest",
"t1_text": "Browser-basierter Test direkt auf deinem Stick.",
"t2_title": "Echte Schreib- & Lesetests",
"t2_text": "Schreib-/Lesetests mit realen Daten keine synthetischen Benchmarks.",
"t3_title": "Privacy first",
"t3_text": "Deine Testdaten bleiben lokal Reports nur auf Wunsch."
},
"quick": {
"label": "Schnelltest-Vorschau",
"title": "USB-Stick in unter 2 Minuten testen",
"badge_free": "Kostenlos",
"intro": "Der Schnelltest prüft eine definierte Datenmenge auf deinem Stick und misst:",
"li1": "Schreib- und Leserate",
"li2": "Datenintegrität (Hash-Vergleich)",
"li3": "Verdächtige Abbrüche oder Fehler",
"metric1_label": "Schreibleistung",
"metric1_value": "~ 75120 MB/s*",
"metric2_label": "Integritätsprüfung",
"metric2_value": "512 MB Testdaten",
"footnote": "*Beispielwerte deine Ergebnisse hängen von Stick, Port & System ab.",
"cta": "Zum kostenlosen Schnelltest",
"visual_title": "Schnelltest-Anzeige",
"visual_text": "So sieht die Quick-Check-Vorschau aus: Grün markiert stabile Daten, Orange warnt, wenn die Schreibrate einbricht.",
"visual_window": "Ergebnisfenster"
},
"how": {
"kicker": "So funktioniert USBCheck",
"title": "Schnelltest im Browser, Pro-Modus mit Tiefenanalyse.",
"intro": "USBCheck wurde entwickelt, um zwei Welten zu verbinden: einen einfachen Schnelltest für alle und einen tiefgehenden Pro-Modus für Power-User, Techniker und Admins. Der Schnelltest läuft direkt im Browser, ohne Installation. Für den Pro-Modus wird ein kleines Helfer-Tool verwendet, das auf Wunsch F3- / badblocks-ähnliche Tests ausführt und damit Kapazitäts-Fakes sicher enttarnt.",
"step1_title": "Browser-Test starten",
"step1_text": "Du öffnest den Schnelltest unter <strong>{{primary_url}}/fakecheck/</strong>, wählst deinen USB-Stick bzw. einen Ordner darauf aus und definierst, wie viel Daten getestet werden sollen.",
"step2_title": "Schreib-, Lese- und Integritätsprüfung",
"step2_text": "Der Browser erstellt Testdateien, misst Schreib- und Leserate und vergleicht Hash-Werte, um Datenfehler zu erkennen alles lokal und ohne Übertragung deiner Inhalte.",
"step3_title": "Optional: Pro-Modus für Vollscan",
"step3_text": "Wer mehr wissen will, installiert das optionale Helfer-Tool. Dieses kann die gesamte Kapazität des Sticks prüfen, Fakes identifizieren und detaillierte Reports erzeugen ideal für Refurbisher, IT-Abteilungen oder Labore.",
"side_title": "Free vs. Pro auf einen Blick",
"side_free": "<strong>Free Quick Check:</strong> Geschwindigkeit &amp; Integritätstest im Browser ideal für schnelle Einschätzungen.",
"side_pro": "<strong>Pro-Modus:</strong> Tiefenscan, Kapazitätsvalidierung, erweiterte Berichte und API-Integration für Unternehmen.",
"side_account": "<strong>Account &amp; Login:</strong> Nach dem Login kannst du Tests speichern, Berichte exportieren und mehrere Geräte verwalten."
},
"problem": {
"kicker": "Warum gefälschte USB-Sticks gefährlich sind",
"title": "Gefälschte USB-Sticks kosten Geld und im schlimmsten Fall deine Daten.",
"p1": "Viele Billig-USB-Sticks werben mit unrealistisch hohen Kapazitäten. In Wahrheit wurde der Controller manipuliert: Der Stick meldet z. B. 256&nbsp;GB, obwohl physisch nur 32&nbsp;GB verbaut sind. Die Folge: Daten werden scheinbar korrekt kopiert, später aber stillschweigend überschrieben oder beschädigt.",
"p2": "USBCheck hilft dir, solche Fakes zu erkennen, bevor du sie produktiv einsetzt egal ob du einzelne Sticks privat nutzt oder größere Chargen für dein Unternehmen prüfst.",
"card1_title": "Verlust wichtiger Dateien",
"card1_text": "Fotos, Projektdateien, Backups alles kann betroffen sein, wenn der Stick weniger speichert als behauptet. Defekte Sektoren bleiben oft unbemerkt, bis es zu spät ist.",
"card2_title": "Kosten durch defekte Chargen",
"card2_text": "Unternehmen, Reseller und Agenturen verteilen USB-Sticks oft in großer Stückzahl. Fakes bedeuten Reklamationen, Imageschaden und erneute Produktionskosten.",
"card3_title": "Unsichere Performance",
"card3_text": "Langsame Controller, instabile Firmware und schwankende Schreibraten sind typisch für Fake-Sticks. Das erhöht das Risiko von Fehlern besonders bei großen Dateien."
},
"features": {
"kicker": "Free &amp; Pro Features",
"title": "Starte mit dem kostenlosen Schnelltest wechsle in den Pro-Modus, wenn du mehr brauchst.",
"intro": "USBCheck wächst mit deinen Anforderungen: Private Nutzer brauchen oft nur eine schnelle Einschätzung. Profis möchten tiefer einsteigen, Kapazitäten verifizieren und Reports archivieren. Genau dafür ist der Pro-Modus gedacht.",
"free_title": "Free Quick Check",
"free_badge": "Empfohlen für die meisten Nutzer",
"free_text": "Ideal für alle, die schnell prüfen möchten, ob ein USB-Stick zumindest grundlegend performant und stabil arbeitet ganz ohne Installation.",
"free_li1": "• Browser-basierter Schnelltest direkt auf deinem Stick",
"free_li2": "• Schreib- und Lesegeschwindigkeit mit realen Testdaten",
"free_li3": "• Hash-basierte Integritätsprüfung einer Testmenge",
"free_li4": "• Auswahl verschiedener Teststufen (z. B. 200&nbsp;MB, 2&nbsp;GB)",
"free_li5": "• Keine Registrierung erforderlich",
"free_cta": "Kostenlosen Schnelltest starten",
"pro_title": "Pro Mode",
"pro_badge": "Für Power-User &amp; Teams",
"pro_text": "Für alle, die volle Kontrolle brauchen: IT-Abteilungen, Techniker, Refurbisher, Labore oder Unternehmen, die regelmäßig größere Stick-Mengen testen.",
"pro_li1": "• Tiefenscan der gesamten Kapazität (ähnlich F3 / badblocks)",
"pro_li2": "• Erkennung von Kapazitäts-Fakes und defekten Bereichen",
"pro_li3": "• Detaillierte, speicherbare Testberichte (JSON, PDF)",
"pro_li4": "• Optional: API-Zugriff für automatisierte Testprozesse",
"pro_li5": "• Multi-Device- und Multi-User-Support (über Login-Bereich)",
"pro_note": "Der Pro-Modus erfordert ein kleines Helfer-Tool auf deinem System. Dieses arbeitet lokal und kann bei Bedarf mit deinem Account auf USBCheck verbunden werden."
},
"security": {
"kicker": "Security &amp; Privacy",
"title": "Privacy-first-Design: Deine Testdaten gehören dir.",
"intro": "USBCheck wurde von Anfang an so konzipiert, dass deine Daten geschützt bleiben. Der Browser-Schnelltest arbeitet ausschließlich mit Testdateien. Deine eigenen Dokumente, Bilder oder Backups werden weder gelesen noch übertragen. Im Pro-Modus hast du volle Kontrolle, ob und welche Reports mit deinem Account synchronisiert werden.",
"card1_title": "Local-only Tests",
"card1_text": "Alle Schreib- und Lesetests erfolgen lokal auf deinem USB-Stick. Der Browser greift nur auf die Testdateien zu nicht auf deine privaten Inhalte.",
"card2_title": "Transparente Reports",
"card2_text": "Wenn du dich einloggst, kannst du Testberichte in deinem Account speichern, exportieren oder wieder löschen. Du entscheidest, welche Daten im System bleiben.",
"card3_title": "Schonend für deine Hardware",
"card3_text": "Der Schnelltest arbeitet mit moderaten Datenmengen, um unnötigen Verschleiß zu vermeiden. Der Pro-Modus warnt deutlich, wenn ein Vollscan mit hoher Schreiblast ausgeführt wird."
},
"faq": {
"kicker": "FAQ",
"title": "Häufige Fragen zu USBCheck",
"intro": "Hier findest du Antworten auf häufig gestellte Fragen. Der FAQ-Bereich kann jederzeit erweitert werden, wenn neue Anwendungsfälle hinzukommen oder du Feedback von Nutzern erhältst.",
"q1": "Ist der Schnelltest wirklich komplett im Browser?",
"a1": "Ja. Der Schnelltest läuft vollständig im Browser und nutzt moderne Browser-APIs, um Testdateien auf deinem Stick zu schreiben und wieder auszulesen. Es wird nichts ohne deine Zustimmung hochgeladen.",
"q2": "Brauche ich ein Konto, um den Schnelltest zu benutzen?",
"a2": "Nein. Der kostenlose Schnelltest ist ohne Registrierung nutzbar. Ein Login ist nur notwendig, wenn du Testberichte speichern, mehrere Sticks verwalten oder den Pro-Modus nutzen möchtest.",
"q3": "Kann USBCheck jeden Fake-Stick sicher erkennen?",
"a3": "Kein Tool kann eine 100&nbsp;%-Garantie geben. Der Pro-Modus mit Vollscan ist jedoch darauf ausgelegt, typische Fälschungsmuster (Manipulation der gemeldeten Kapazität, instabile Bereiche, Fehler ab einer bestimmten Füllmenge) sehr zuverlässig zu erkennen.",
"q4": "Wie fügt sich das Tool in mein bestehendes System ein?",
"a4": "USBCheck ist von Anfang an für Automatisierung gedacht. Über den Pro-Modus und die geplante API kannst du Tests in bestehende Workflows integrieren beispielsweise in Wareneingangsprüfungen oder Qualitätskontrollen."
}
}
},
"fakecheck": {
"meta": {
"title": "FakeCheck Browser-Test für USB-Sticks",
"description": "Der FakeCheck hilft dir, typische Fake-Sticks aufzuspüren: Browser-basierte Schreib-/Lesetests und Plausibilitätsprüfungen der nutzbaren Kapazität ohne Installation."
},
"sections": {
"hero": {
"kicker": "FakeCheck Browser-Modus",
"title": "Ist mein USB-Stick fake?",
"lead": "Der FakeCheck hilft dir, typische Fake-Sticks aufzuspüren: Browser-basierte Schreib-/Lesetests und Plausibilitätsprüfungen der nutzbaren Kapazität ohne Installation.",
"cta_start": "Browser-Test starten (Demo)",
"cta_back_home": "Zur Übersicht zurück",
"hint": "Der FakeCheck im Browser arbeitet mit Testdateien und Lese-/Schreibmustern, die du in einem ausgewählten Ordner anlegst. Deine echten Dateien bleiben unangetastet."
},
"capabilities": {
"title": "Was der Browser-Test leisten kann",
"point1_title": "Schreib-/Lesetest mit Testdateien",
"point1_text": "Der Browser legt Testdateien im gewählten Ordner an, misst Schreib- und Leseraten und prüft, ob gelesene Daten mit den geschriebenen Mustern übereinstimmen.",
"point2_title": "Plausibilitätscheck der Kapazität",
"point2_text": "Aus der Menge der erfolgreich geschriebenen und verifizierten Daten ergibt sich ein realistischer Eindruck, wie viel Nutzkapazität tatsächlich stabil ankommt.",
"point3_title": "JSON-Report für deine Dokumentation",
"point3_text": "Alle Ergebnisse werden in einem strukturierten JSON-Report gesammelt, den du speichern, hochladen oder für spätere Vergleiche nutzen kannst."
},
"app": {
"title": "Browser-Testoberfläche (Preview)",
"intro": "Hier entsteht die eigentliche FakeCheck-Web-App: Auswahl des Testordners, Konfiguration der Testmenge, Fortschrittsanzeige und Ergebnisübersicht. Aktuell zeigt der Button oben nur eine Demo-Ausgabe.",
"point1": "Quick-Test mit kleiner Datenmenge.",
"point2": "Light-Benchmark: Schreib-/Lesegeschwindigkeit über begrenzte Zeit.",
"point3": "Write/Verify: Testdateien schreiben und direkt wieder verifizieren."
},
"result": {
"title": "Demo-Ausgabe des Browser-Tests",
"hint": "Diese Ausgabe dient nur als Vorschau. Später wird hier der echte JSON-Report aus dem Browser-Test angezeigt."
}
}
},
"login": {
"meta": {
"title": "Login {{primary_domain}}",
"description": "Melde dich bei {{primary_domain}} an, um Tests zu speichern, den Pro-Modus zu nutzen und mehrere Geräte zu verwalten."
},
"sections": {
"auth": {
"kicker": "Account &amp; Login",
"title": "Melde dich bei USBCheck an",
"intro": "Mit einem Account kannst du Tests speichern, Reports exportieren und den Pro-Modus auf mehreren Geräten nutzen. Die Registrierung ist kostenlos du kannst später jederzeit auf Pro upgraden.",
"tab_login": "Login",
"tab_register": "Registrieren",
"login_title": "Login",
"login_text": "Melde dich mit deiner E-Mail-Adresse und deinem Passwort an.",
"login_email_label": "E-Mail-Adresse",
"login_password_label": "Passwort",
"login_submit": "Einloggen",
"login_forgot": "Passwort vergessen?",
"register_title": "Kostenlos registrieren",
"register_text": "Erstelle einen kostenlosen Account, um Tests zu speichern, Berichte zu exportieren und den Pro-Modus später freizuschalten.",
"register_name_label": "Name",
"register_email_label": "E-Mail-Adresse",
"register_password_label": "Passwort",
"register_submit": "Account erstellen",
"register_hint": "Durch die Registrierung akzeptierst du die Datenschutzerklärung und das Impressum von USBCheck."
}
}
},
"dashboard": {
"meta": {
"title": "Dashboard {{primary_domain}}",
"description": "Verwalte deine USB-Tests, Geräte und Pro-Modus-Einstellungen in deinem persönlichen Dashboard."
},
"sections": {
"main": {
"kicker": "Dashboard",
"title": "Willkommen",
"intro": "Hier kannst du deine USB-Tests verwalten, Geräte übersichtlich organisieren und später den Pro-Modus aktivieren. Dieser Bereich ist aktuell noch im Aufbau du bekommst aber schon einen ersten Überblick.",
"plan_label": "Aktueller Plan",
"card_tests_title": "Letzte Tests",
"card_tests_text": "Hier werden später deine letzten Schnelltests und Pro-Scans angezeigt inklusive Status, Geschwindigkeit und Integritätsprüfung.",
"card_tests_empty": "Noch keine Testdaten vorhanden. Starte einen ersten Test über den Browser oder den Pro-Modus.",
"card_devices_title": "Deine USB-Geräte",
"card_devices_text": "Später kannst du hier deine getesteten Sticks verwalten: Hersteller, Modell, Seriennummer und erkannte Kapazität.",
"card_devices_empty": "Noch keine Geräte gespeichert. Nach deinen ersten Tests kannst du USB-Sticks hier als Geräte anlegen.",
"card_next_title": "Nächste Schritte",
"card_next_text": "USBCheck ist noch im Aufbau. Du gehörst zu den ersten Nutzern später findest du hier Pro-Optionen, API-Zugänge und Detail-Reports.",
"card_next_item1": "• Browser-FakeCheck testen und Feedback geben",
"card_next_item2": "• Pro-Modus-Features definieren (z. B. Vollscan, Reports, API)",
"card_next_item3": "• Accounts &amp; SSO (my-log.in) finalisieren",
"card_next_cta": "Zum Browser-FakeCheck"
}
}
}
}
}

View File

@@ -0,0 +1,345 @@
{
"meta": {
"code": "de",
"label": "Deutsch",
"flag": "🇩🇪",
"enabled": true
},
"header": {
"header_slogan": "USB-Sticks testen",
"btn_login": "Login",
"nav_how": "Wie es funktioniert",
"nav_problem": "Warum es wichtig ist",
"nav_features": "Funktionen",
"nav_security": "Sicherheit",
"nav_faq": "FAQ"
},
"brand": {
"brand_wordmark": "{{primary_domain}}",
"brand_subtitle": "USB-Sticks auf Fakes testen"
},
"footer": {
"footer_imprint": "Impressum",
"footer_privacy": "Datenschutz",
"footer_copy": "© {year} {{primary_domain}}. Alle Rechte vorbehalten."
},
"fake_ui": {
"error_fsapi_not_supported": "Die File System Access API wird von diesem Browser nicht unterstützt.",
"error_no_directory_selected": "Kein Verzeichnis ausgewählt.",
"error_no_space_detected": "Es konnte kein freier Speicher im gewählten Verzeichnis reserviert werden.",
"log_capacity_probe_start": "Ermittle verfügbaren Speicherplatz im gewählten Verzeichnis...",
"log_capacity_probe_result": "Ermittelter für Tests nutzbarer Speicher: {size} (Schreibprobe).",
"log_quick_prepare": "Quick-Check: Vorbereitung... (Testgröße: {size})",
"log_quick_verify_start": "Quick-Check: Schreiben abgeschlossen. Verifiziere Daten...",
"log_quick_data_error": "Quick-Check: Datenfehler bei Byte {byte}.",
"error_quick_data_error": "Datenfehler im Quick-Check bei Byte {byte}.",
"log_quick_delete_warn": "Quick-Check: Konnte Testdatei nicht löschen (nicht kritisch).",
"log_quick_success": "Quick-Check: Erfolgreich abgeschlossen.",
"log_bench_start": "Benchmark: Start schreibe Testdatei ({size})...",
"log_bench_read_start": "Benchmark: Lesen & Timing...",
"log_bench_delete_warn": "Benchmark: Konnte Testdatei nicht löschen (nicht kritisch).",
"log_bench_success": "Benchmark: Erfolgreich abgeschlossen.",
"log_wv_start": "Write/Verify: Start {blocks} Blöcke à {size} (gesamt {total})...",
"log_wv_block_start": "Write/Verify: Block {num}/{blocks} {file}",
"log_wv_data_error": "Write/Verify: Datenfehler in Block {num} bei Byte {byte}.",
"error_wv_data_error": "Datenfehler in Block {num} bei Byte {byte}.",
"log_wv_delete_warn": "Write/Verify: Konnte Blockdatei {file} nicht löschen (nicht kritisch).",
"log_wv_success": "Write/Verify: Alle Blöcke erfolgreich verifiziert.",
"log_all_subtest_start": "All-Inclusive: Starte Teiltest \"{mode}\" ({num}/{total})...",
"error_unknown_mode": "Unbekannter Modus: {mode}",
"log_fsapi_partial": "Dein Browser unterstützt die File System Access API nicht voll. Einige Funktionen sind deaktiviert.",
"selected_path_label": "USB-Ordner ausgewählt (Name: \"{name}\").",
"selected_path_none": "Noch kein Verzeichnis gewählt.",
"status_ready": "Bereit. Wähle zuerst deinen USB-Stick aus.",
"status_mode_none": "Kein Modus selektiert",
"status_dir_selected": "USB-Verzeichnis ausgewählt. Wähle jetzt einen Testmodus.",
"status_mode_selected": "Modus \"{mode}\" ausgewählt. Du kannst den Test jetzt starten.",
"status_running": "Test läuft... bitte USB-Stick nicht entfernen.",
"status_done": "Test abgeschlossen.",
"status_aborted": "Test wurde abgebrochen.",
"status_error": "Fehler: {msg}",
"status_error_unknown": "Unbekannter Fehler im Test.",
"overall_initial": "Noch kein Test durchgeführt.",
"overall_running": "Test läuft...",
"overall_done": "Browser-Test erfolgreich abgeschlossen.",
"overall_aborted": "Test abgebrochen.",
"overall_error": "Fehler im Browser-Test.",
"log_dir_selected": "Verzeichnis ausgewählt: {name}",
"log_dir_reset": "Verzeichnisauswahl zurückgesetzt.",
"log_pick_abort": "Verzeichnisauswahl abgebrochen.",
"log_pick_error": "Fehler bei Verzeichnisauswahl: {msg}",
"log_pick_error_unknown": "Unbekannter Fehler bei Verzeichnisauswahl.",
"log_mode_selected": "Modus gewählt: {mode}",
"log_test_start": "Starte Tests im Modus: {mode}",
"log_test_aborted": "Test wurde vom Benutzer abgebrochen.",
"log_test_error": "Fehler im Test: {msg}",
"log_test_error_unknown": "Unbekannter Fehler im Test.",
"log_loaded": "USB-Browser-Test (fakecheck) geladen. Warte auf Verzeichnisauswahl und Modus.",
"mode_quick": "Quick-Check",
"mode_benchmark": "Benchmark",
"mode_writeverify": "Write & Verify",
"mode_all": "All-Inclusive (alle Browser-Tests)",
"log_backend_save_error_status": "Backend: Konnte Ergebnis nicht speichern ({status}).",
"log_backend_save_ok": "Backend: Testergebnis gespeichert{suffix}.",
"log_backend_save_error": "Fehler beim Speichern im Backend: {msg}"
},
"serial": {
"rating_label": "Bewertung",
"rating": {
"ok": {
"label": "Plausibel",
"desc": "Keine deutlichen Auffälligkeiten erkannt."
},
"needs_review": {
"label": "Überprüfung empfohlen",
"desc": "Leichte Auffälligkeiten. In Kombination mit einem technischen Test ergibt sich ein klareres Bild."
},
"suspicious": {
"label": "Auffällig / Verdächtig",
"desc": "Deutliche Auffälligkeiten erkannt. Ein Kapazitäts- oder Schreib-/Lesetest ist dringend empfohlen."
},
"invalid": {
"label": "Ungültig",
"desc": "Die Seriennummer konnte nicht sinnvoll bewertet werden."
},
"unknown": {
"label": "Unklar",
"desc": "Bewertung nicht eindeutig möglich."
}
},
"heading_input": "Eingabedaten",
"heading_analysis": "Seriennummer-Analyse",
"heading_consistency": "Hersteller-Konsistenz",
"input": {
"manufacturer": "Hersteller (Angabe):",
"vidpid": "VID/PID:",
"vendor_detected": "Vendor aus VID:"
},
"analysis": {
"serial": "Seriennummer:",
"length": "Länge:",
"category": "Kategorie:",
"score": "Score:",
"issues": "Auffälligkeiten:"
},
"chars": "Zeichen",
"none": "keine Angabe",
"issues_none": "Keine besonderen Auffälligkeiten.",
"vendor_detected": "{vendor} (VID {vid})",
"vendor_unknown": "Unbekannter Hersteller für VID {vid}",
"vendor_none": "Keine Vendor-ID angegeben",
"disclaimer": "Diese Einschätzung basiert auf Heuristiken und kann keine Echtheit garantieren.",
"error": {
"no_serial": "Bitte gib eine Seriennummer ein.",
"api": "Fehler bei der Prüfung: {msg}",
"unknown": "Unerwartete Antwort vom Server."
}
},
"pages": {
"landing": {
"meta": {
"title": "{{primary_domain}} USB-Sticks auf Fakes testen",
"description": "USBCheck kombiniert einen schnellen Browser-Schnelltest mit einem professionellen Pro-Modus. So erkennst du gefälschte USB-Sticks, zu kleine echte Kapazität und langsame Billig-Controller bevor deine Dateien verschwinden."
},
"sections": {
"hero": {
"kicker": "Erkenne Fake-USB-Sticks, bevor du Daten verlierst",
"title": "Ist mein USB-Stick ein Fake?",
"lead": "USBCheck kombiniert einen schnellen Browser-Schnelltest mit einem professionellen Pro-Modus. So erkennst du gefälschte USB-Sticks, zu kleine echte Kapazität und langsame Billig-Controller bevor deine Dateien verschwinden.",
"cta_quick": "Kostenlosen Schnelltest starten",
"cta_learn": "Mehr zu Free &amp; Pro"
},
"trust": {
"t1_title": "Keine Installation für Schnelltest",
"t1_text": "Browser-basierter Test direkt auf deinem Stick.",
"t2_title": "Echte Schreib- &amp; Lesetests",
"t2_text": "Schreib-/Lesetests mit realen Daten keine synthetischen Benchmarks.",
"t3_title": "Privacy first",
"t3_text": "Deine Testdaten bleiben lokal Reports nur auf Wunsch."
},
"quick": {
"label": "Schnelltest-Vorschau",
"title": "USB-Stick in unter 2 Minuten testen",
"badge_free": "Kostenlos",
"intro": "Der Schnelltest prüft eine definierte Datenmenge auf deinem Stick und misst:",
"li1": "Schreib- und Leserate",
"li2": "Datenintegrität (Hash-Vergleich)",
"li3": "Verdächtige Abbrüche oder Fehler",
"metric1_label": "Schreibleistung",
"metric1_value": "~ 75120 MB/s*",
"metric2_label": "Integritätsprüfung",
"metric2_value": "512 MB Testdaten",
"footnote": "*Beispielwerte deine Ergebnisse hängen von Stick, Port &amp; System ab.",
"cta": "Zum kostenlosen Schnelltest",
"visual_title": "Schnelltest-Anzeige",
"visual_text": "So sieht die Quick-Check-Vorschau aus: Grün markiert stabile Daten, Orange warnt, wenn die Schreibrate einbricht.",
"visual_window": "Ergebnisfenster"
},
"how": {
"kicker": "So funktioniert USBCheck",
"title": "Schnelltest im Browser, Pro-Modus mit Tiefenanalyse.",
"intro": "USBCheck wurde entwickelt, um zwei Welten zu verbinden: einen einfachen Schnelltest für alle und einen tiefgehenden Pro-Modus für Power-User, Techniker und Admins. Der Schnelltest läuft direkt im Browser, ohne Installation. Für den Pro-Modus wird ein kleines Helfer-Tool verwendet, das auf Wunsch F3- / badblocks-ähnliche Tests ausführt und damit Kapazitäts-Fakes sicher enttarnt.",
"step1_title": "Browser-Test starten",
"step1_text": "Du öffnest den Schnelltest unter <strong>{{primary_url}}/fakecheck/</strong>, wählst deinen USB-Stick bzw. einen Ordner darauf aus und definierst, wie viel Daten getestet werden sollen.",
"step2_title": "Schreib-, Lese- und Integritätsprüfung",
"step2_text": "Der Browser erstellt Testdateien, misst Schreib- und Leserate und vergleicht Hash-Werte, um Datenfehler zu erkennen alles lokal und ohne Übertragung deiner Inhalte.",
"step3_title": "Optional: Pro-Modus für Vollscan",
"step3_text": "Wer mehr wissen will, installiert das optionale Helfer-Tool. Dieses kann die gesamte Kapazität des Sticks prüfen, Fakes identifizieren und detaillierte Reports erzeugen ideal für Refurbisher, IT-Abteilungen oder Labore.",
"side_title": "Free vs. Pro auf einen Blick",
"side_free": "<strong>Free Quick Check:</strong> Geschwindigkeit &amp; Integritätstest im Browser ideal für schnelle Einschätzungen.",
"side_pro": "<strong>Pro-Modus:</strong> Tiefenscan, Kapazitätsvalidierung, erweiterte Berichte und API-Integration für Unternehmen.",
"side_account": "<strong>Account &amp; Login:</strong> Nach dem Login kannst du Tests speichern, Berichte exportieren und mehrere Geräte verwalten."
},
"problem": {
"kicker": "Warum gefälschte USB-Sticks gefährlich sind",
"title": "Gefälschte USB-Sticks kosten Geld und im schlimmsten Fall deine Daten.",
"p1": "Viele Billig-USB-Sticks werben mit unrealistisch hohen Kapazitäten. In Wahrheit wurde der Controller manipuliert: Der Stick meldet z. B. 256&nbsp;GB, obwohl physisch nur 32&nbsp;GB verbaut sind. Die Folge: Daten werden scheinbar korrekt kopiert, später aber stillschweigend überschrieben oder beschädigt.",
"p2": "USBCheck hilft dir, solche Fakes zu erkennen, bevor du sie produktiv einsetzt egal ob du einzelne Sticks privat nutzt oder größere Chargen für dein Unternehmen prüfst.",
"card1_title": "Verlust wichtiger Dateien",
"card1_text": "Fotos, Projektdateien, Backups alles kann betroffen sein, wenn der Stick weniger speichert als behauptet. Defekte Sektoren bleiben oft unbemerkt, bis es zu spät ist.",
"card2_title": "Kosten durch defekte Chargen",
"card2_text": "Unternehmen, Reseller und Agenturen verteilen USB-Sticks oft in großer Stückzahl. Fakes bedeuten Reklamationen, Imageschaden und erneute Produktionskosten.",
"card3_title": "Unsichere Performance",
"card3_text": "Langsame Controller, instabile Firmware und schwankende Schreibraten sind typisch für Fake-Sticks. Das erhöht das Risiko von Fehlern besonders bei großen Dateien."
},
"features": {
"kicker": "Free &amp; Pro Features",
"title": "Starte mit dem kostenlosen Schnelltest wechsle in den Pro-Modus, wenn du mehr brauchst.",
"intro": "USBCheck wächst mit deinen Anforderungen: Private Nutzer brauchen oft nur eine schnelle Einschätzung. Profis möchten tiefer einsteigen, Kapazitäten verifizieren und Reports archivieren. Genau dafür ist der Pro-Modus gedacht.",
"free_title": "Free Quick Check",
"free_badge": "Empfohlen für die meisten Nutzer",
"free_text": "Ideal für alle, die schnell prüfen möchten, ob ein USB-Stick zumindest grundlegend performant und stabil arbeitet ganz ohne Installation.",
"free_li1": "• Browser-basierter Schnelltest direkt auf deinem Stick",
"free_li2": "• Schreib- und Lesegeschwindigkeit mit realen Testdaten",
"free_li3": "• Hash-basierte Integritätsprüfung einer Testmenge",
"free_li4": "• Auswahl verschiedener Teststufen (z. B. 200&nbsp;MB, 2&nbsp;GB)",
"free_li5": "• Keine Registrierung erforderlich",
"free_cta": "Kostenlosen Schnelltest starten",
"pro_title": "Pro Mode",
"pro_badge": "Für Power-User &amp; Teams",
"pro_text": "Für alle, die volle Kontrolle brauchen: IT-Abteilungen, Techniker, Refurbisher, Labore oder Unternehmen, die regelmäßig größere Stick-Mengen testen.",
"pro_li1": "• Tiefenscan der gesamten Kapazität (ähnlich F3 / badblocks)",
"pro_li2": "• Erkennung von Kapazitäts-Fakes und defekten Bereichen",
"pro_li3": "• Detaillierte, speicherbare Testberichte (JSON, PDF)",
"pro_li4": "• Optional: API-Zugriff für automatisierte Testprozesse",
"pro_li5": "• Multi-Device- und Multi-User-Support (über Login-Bereich)",
"pro_note": "Der Pro-Modus erfordert ein kleines Helfer-Tool auf deinem System. Dieses arbeitet lokal und kann bei Bedarf mit deinem Account auf USBCheck verbunden werden."
},
"security": {
"kicker": "Security &amp; Privacy",
"title": "Privacy-first-Design: Deine Testdaten gehören dir.",
"intro": "USBCheck wurde von Anfang an so konzipiert, dass deine Daten geschützt bleiben. Der Browser-Schnelltest arbeitet ausschließlich mit Testdateien. Deine eigenen Dokumente, Bilder oder Backups werden weder gelesen noch übertragen. Im Pro-Modus hast du volle Kontrolle, ob und welche Reports mit deinem Account synchronisiert werden.",
"card1_title": "Local-only Tests",
"card1_text": "Alle Schreib- und Lesetests erfolgen lokal auf deinem USB-Stick. Der Browser greift nur auf die Testdateien zu nicht auf deine privaten Inhalte.",
"card2_title": "Transparente Reports",
"card2_text": "Wenn du dich einloggst, kannst du Testberichte in deinem Account speichern, exportieren oder wieder löschen. Du entscheidest, welche Daten im System bleiben.",
"card3_title": "Schonend für deine Hardware",
"card3_text": "Der Schnelltest arbeitet mit moderaten Datenmengen, um unnötigen Verschleiß zu vermeiden. Der Pro-Modus warnt deutlich, wenn ein Vollscan mit hoher Schreiblast ausgeführt wird."
},
"faq": {
"kicker": "FAQ",
"title": "Häufige Fragen zu USBCheck",
"intro": "Hier findest du Antworten auf häufig gestellte Fragen. Der FAQ-Bereich kann jederzeit erweitert werden, wenn neue Anwendungsfälle hinzukommen oder du Feedback von Nutzern erhältst.",
"q1": "Ist der Schnelltest wirklich komplett im Browser?",
"a1": "Ja. Der Schnelltest läuft vollständig im Browser und nutzt moderne Browser-APIs, um Testdateien auf deinem Stick zu schreiben und wieder auszulesen. Es wird nichts ohne deine Zustimmung hochgeladen.",
"q2": "Brauche ich ein Konto, um den Schnelltest zu benutzen?",
"a2": "Nein. Der kostenlose Schnelltest ist ohne Registrierung nutzbar. Ein Login ist nur notwendig, wenn du Testberichte speichern, mehrere Sticks verwalten oder den Pro-Modus nutzen möchtest.",
"q3": "Kann USBCheck jeden Fake-Stick sicher erkennen?",
"a3": "Kein Tool kann eine 100&nbsp;%-Garantie geben. Der Pro-Modus mit Vollscan ist jedoch darauf ausgelegt, typische Fälschungsmuster (Manipulation der gemeldeten Kapazität, instabile Bereiche, Fehler ab einer bestimmten Füllmenge) sehr zuverlässig zu erkennen.",
"q4": "Wie fügt sich das Tool in mein bestehendes System ein?",
"a4": "USBCheck ist von Anfang an für Automatisierung gedacht. Über den Pro-Modus und die geplante API kannst du Tests in bestehende Workflows integrieren beispielsweise in Wareneingangsprüfungen oder Qualitätskontrollen."
}
}
},
"fakecheck": {
"meta": {
"title": "FakeCheck Browser-Test für USB-Sticks",
"description": "Der FakeCheck hilft dir, typische Fake-Sticks aufzuspüren: Browser-basierte Schreib-/Lesetests und Plausibilitätsprüfungen der nutzbaren Kapazität ohne Installation."
},
"sections": {
"hero": {
"kicker": "FakeCheck Browser-Modus",
"title": "Ist mein USB-Stick fake?",
"lead": "Der FakeCheck hilft dir, typische Fake-Sticks aufzuspüren: Browser-basierte Schreib-/Lesetests und Plausibilitätsprüfungen der nutzbaren Kapazität ohne Installation.",
"cta_start": "Browser-Test starten (Demo)",
"cta_back_home": "Zur Übersicht zurück",
"hint": "Der FakeCheck im Browser arbeitet mit Testdateien und Lese-/Schreibmustern, die du in einem ausgewählten Ordner anlegst. Deine echten Dateien bleiben unangetastet."
},
"capabilities": {
"title": "Was der Browser-Test leisten kann",
"point1_title": "Schreib-/Lesetest mit Testdateien",
"point1_text": "Der Browser legt Testdateien im gewählten Ordner an, misst Schreib- und Leseraten und prüft, ob gelesene Daten mit den geschriebenen Mustern übereinstimmen.",
"point2_title": "Plausibilitätscheck der Kapazität",
"point2_text": "Aus der Menge der erfolgreich geschriebenen und verifizierten Daten ergibt sich ein realistischer Eindruck, wie viel Nutzkapazität tatsächlich stabil ankommt.",
"point3_title": "JSON-Report für deine Dokumentation",
"point3_text": "Alle Ergebnisse werden in einem strukturierten JSON-Report gesammelt, den du speichern, hochladen oder für spätere Vergleiche nutzen kannst."
},
"app": {
"title": "Browser-Testoberfläche (Preview)",
"intro": "Hier entsteht die eigentliche FakeCheck-Web-App: Auswahl des Testordners, Konfiguration der Testmenge, Fortschrittsanzeige und Ergebnisübersicht. Aktuell zeigt der Button oben nur eine Demo-Ausgabe.",
"point1": "Quick-Test mit kleiner Datenmenge.",
"point2": "Light-Benchmark: Schreib-/Lesegeschwindigkeit über begrenzte Zeit.",
"point3": "Write/Verify: Testdateien schreiben und direkt wieder verifizieren."
},
"result": {
"title": "Demo-Ausgabe des Browser-Tests",
"hint": "Diese Ausgabe dient nur als Vorschau. Später wird hier der echte JSON-Report aus dem Browser-Test angezeigt."
}
}
},
"login": {
"meta": {
"title": "Login {{primary_domain}}",
"description": "Melde dich bei {{primary_domain}} an, um Tests zu speichern, den Pro-Modus zu nutzen und mehrere Geräte zu verwalten."
},
"sections": {
"auth": {
"kicker": "Account &amp; Login",
"title": "Melde dich bei USBCheck an",
"intro": "Mit einem Account kannst du Tests speichern, Reports exportieren und den Pro-Modus auf mehreren Geräten nutzen. Die Registrierung ist kostenlos du kannst später jederzeit auf Pro upgraden.",
"tab_login": "Login",
"tab_register": "Registrieren",
"login_title": "Login",
"login_text": "Melde dich mit deiner E-Mail-Adresse und deinem Passwort an.",
"login_email_label": "E-Mail-Adresse",
"login_password_label": "Passwort",
"login_submit": "Einloggen",
"login_forgot": "Passwort vergessen?",
"register_title": "Kostenlos registrieren",
"register_text": "Erstelle einen kostenlosen Account, um Tests zu speichern, Berichte zu exportieren und den Pro-Modus später freizuschalten.",
"register_name_label": "Name",
"register_email_label": "E-Mail-Adresse",
"register_password_label": "Passwort",
"register_submit": "Account erstellen",
"register_hint": "Durch die Registrierung akzeptierst du die Datenschutzerklärung und das Impressum von USBCheck."
}
}
},
"dashboard": {
"meta": {
"title": "Dashboard {{primary_domain}}",
"description": "Verwalte deine USB-Tests, Geräte und Pro-Modus-Einstellungen in deinem persönlichen Dashboard."
},
"sections": {
"main": {
"kicker": "Dashboard",
"title": "Willkommen",
"intro": "Hier kannst du deine USB-Tests verwalten, Geräte übersichtlich organisieren und später den Pro-Modus aktivieren. Dieser Bereich ist aktuell noch im Aufbau du bekommst aber schon einen ersten Überblick.",
"plan_label": "Aktueller Plan",
"card_tests_title": "Letzte Tests",
"card_tests_text": "Hier werden später deine letzten Schnelltests und Pro-Scans angezeigt inklusive Status, Geschwindigkeit und Integritätsprüfung.",
"card_tests_empty": "Noch keine Testdaten vorhanden. Starte einen ersten Test über den Browser oder den Pro-Modus.",
"card_devices_title": "Deine USB-Geräte",
"card_devices_text": "Später kannst du hier deine getesteten Sticks verwalten: Hersteller, Modell, Seriennummer und erkannte Kapazität.",
"card_devices_empty": "Noch keine Geräte gespeichert. Nach deinen ersten Tests kannst du USB-Sticks hier als Geräte anlegen.",
"card_next_title": "Nächste Schritte",
"card_next_text": "USBCheck ist noch im Aufbau. Du gehörst zu den ersten Nutzern später findest du hier Pro-Optionen, API-Zugänge und Detail-Reports.",
"card_next_item1": "• Browser-FakeCheck testen und Feedback geben",
"card_next_item2": "• Pro-Modus-Features definieren (z. B. Vollscan, Reports, API)",
"card_next_item3": "• Accounts &amp; SSO (my-log.in) finalisieren",
"card_next_cta": "Zum Browser-FakeCheck"
}
}
}
}
}

View File

@@ -1,15 +1,17 @@
<?php
<?php
declare(strict_types=1);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
// Header GANZ am Anfang, bevor IRGENDWAS ausgegeben wird
header('Content-Type: text/plain; charset=utf-8');
// Optional: Fehlerausgabe für dieses Tool
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
// public/landingpages/tools/i18n_collect.php
// Projektbasis ermitteln: /public/landingpages/tools -> / (Projektroot)
$baseDir = $_SERVER['DOCUMENT_ROOT'];
// Tool-Script einbinden und ausführen
require_once $baseDir . '/../tools/i18n_collect_keys.php';
// eof

View File

@@ -110,7 +110,11 @@ function simpleKeyExistsRecursive(array $data, string $key): bool
return false;
}
function addSimpleKey(array &$data, string $key, string $defaultValue = null): void
/**
* Fügt einen einfachen Key unter $data['auto'] hinzu,
* sofern er nicht irgendwo in der Struktur bereits existiert.
*/
function addSimpleKey(array &$data, string $key, ?string $defaultValue = null): void
{
if (simpleKeyExistsRecursive($data, $key)) {
return;
@@ -120,12 +124,13 @@ function addSimpleKey(array &$data, string $key, string $defaultValue = null): v
$data['auto'] = [];
}
if ($defaultValue === null || $defaultValue === '') {
$defaultValue = $key;
}
// Default: übergebener Wert oder der Key selbst
$value = ($defaultValue !== null && $defaultValue !== '')
? $defaultValue
: $key;
if (!array_key_exists($key, $data['auto'])) {
$data['auto'][$key] = $defaultValue;
$data['auto'][$key] = $value;
}
}
@@ -154,9 +159,8 @@ function addKeyToData(array &$data, string $key, ?string $defaultValue = null):
/**
* Extrahiert den „aktuellen Inhalt“ eines data-i18n-Elements
* ganz grob über Regex:
* grob über Regex:
* ... data-i18n="key"> Inhalt </...
* Ist nur ein Best-Effort; bei komplexeren Strukturen fällt es auf null zurück.
*/
function extractInlineTextForDataI18n(string $content, int $matchOffset, int $matchLength): ?string
{
@@ -201,14 +205,23 @@ function collectKeysFromFile(string $file): array
$keysWithDefaults = [];
// --- data-i18n="key" / 'key' ---
if (preg_match_all('/data-i18n\s*=\s*(["\'])(.+?)\1/i', $content, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) {
if (preg_match_all(
'/data-i18n\s*=\s*(["\'])(.+?)\1/i',
$content,
$matches,
PREG_SET_ORDER | PREG_OFFSET_CAPTURE
)) {
foreach ($matches as $m) {
$fullMatch = $m[0][0];
$fullOffset = $m[0][1];
$key = trim($m[2][0]);
// Versuche, den Inline-Text zu extrahieren: >Text<
$inlineText = extractInlineTextForDataI18n($content, $fullOffset, strlen($fullMatch));
$inlineText = extractInlineTextForDataI18n(
$content,
$fullOffset,
strlen($fullMatch)
);
if (!array_key_exists($key, $keysWithDefaults)) {
$keysWithDefaults[$key] = $inlineText;
@@ -366,6 +379,9 @@ if (!empty($newKeys)) {
if ($isCli) {
echo $output;
} else {
// Nur Header setzen, wenn noch keine gesendet wurden
if (!headers_sent()) {
header('Content-Type: text/plain; charset=utf-8');
}
echo $output;
}