{
  "common": {
    "home": "Startseite",
    "tools": "Werkzeuge",
    "blog": "Blog",
    "about": "Über uns",
    "contact": "Kontakt",
    "privacy": "Datenschutzerklärung",
    "terms": "Nutzungsbedingungen",
    "search": "Tools suchen…",
    "footer_text": "Kostenlose Tools für alle. Keine Installation nötig.",
    "all_rights_reserved": "Alle Rechte vorbehalten. Mit ❤️ für Macher gemacht.",
    "sponsor": "Sponsern",
    "support_project": "Projekt unterstützen",
    "support_description": "Die Entwicklung kostenloser Tools erfordert Zeit und Leidenschaft. Deine Unterstützung hilft, dieses Projekt am Leben zu erhalten!",
    "progress": "Fortschritt",
    "groups": "Gruppen",
    "sample": "Beispiel",
    "reset_sample": "Beispiel zurücksetzen",
    "showing_first_n": "Zeige die ersten {{count}} Treffer, um die Performance zu wahren.",
    "no_capture_groups": "Keine Fanggruppen in diesem Treffer.",
    "group": "Gruppe",
    "empty": "Leer",
    "swap_directions": "Ein- und Ausgaberichtung tauschen",
    "upload_error_type": "Nicht unterstützter Dateityp: {{name}}.",
    "upload_error_size": "{{name}} überschreitet die Dateigröße von {{size}} MB."
  },
  "tool_page": {
    "share_tool": "Tool teilen:",
    "copy_link": "Link kopieren",
    "link_copied": "Kopiert!",
    "share_qr": "QR teilen",
    "generating_qr": "Generiere QR…",
    "share_by_scanning": "Zum Teilen scannen",
    "scan_on_mobile": "Mit Handy scannen oder Bild speichern",
    "failed_qr": "QR-Code konnte nicht erstellt werden",
    "close": "Schließen",
    "loading": "Laden",
    "preparing": "Lade Tool… Große Dateien können einen Moment dauern.",
    "coming_soon": "Demnächst verfügbar",
    "roadmap_message": "Dieses Tool steht auf der Roadmap. Folgen Sie dem Projekt oder schauen Sie später vorbei.",
    "why_use": "Warum nutzen",
    "faq": "FAQ",
    "faq_subtitle": "Nützliche Antworten zum Wiederverwenden.",
    "tool_details": "Tool-Details",
    "category": "Kategorie",
    "tags": "Tags",
    "referral": "Empfehlung",
    "recommended": "Empfohlen",
    "get_deal": "Angebot erhalten",
    "more_tools": "Mehr Tools",
    "related_guides": "Verwandte Anleitungen",
    "browse_directory": "Verzeichnis durchsuchen"
  },
  "seo": {
    "free_prefix": "Kostenlos",
    "high_quality_suffix": " (Hohe Qualität)",
    "tool_not_found": "Tool nicht gefunden",
    "description_suffix": "Kostenlos, im Browser, ohne Anmeldung.",
    "unavailable_description": "Das angeforderte Tool ist in der JW Tool Box nicht verfügbar.",
    "keywords_free_online": "kostenlose online-tools",
    "keywords_no_signup": "keine anmeldung erforderlich",
    "keywords_web": "web tool",
    "no_signup_required": "Kein Konto oder Anmeldung erforderlich.",
    "free_online_tool": "{{name}} - kostenloses Online-Tool"
  },
  "faq_content": {
    "is_free_question": "Ist dieses Tool kostenlos?",
    "is_free_answer": "Ja. JW Tool Box ist kostenlos und ohne Konto oder Anmeldung nutzbar."
  },
  "image_watermark": {
    "title": "Batch Bild-Wasserzeichen (Lokal)",
    "description": "Fügen Sie Wasserzeichen hinzu und exportieren Sie JPG/PNG ZIPs im Browser – perfekt für Fotos, Screenshots oder Rechnungen.",
    "drag_drop": "Bilder hier ablegen (JPG/PNG/WebP)",
    "processed_locally": "Lokal verarbeitet; Export als ZIP.",
    "watermark_text": "Wasserzeichen Text",
    "sample_watermark": "Beispiel Wasserzeichen",
    "position": "Position",
    "center": "Mitte",
    "top_left": "Oben Links",
    "top_right": "Oben Rechts",
    "bottom_left": "Unten Links",
    "bottom_right": "Unten Rechts",
    "opacity": "Deckkraft",
    "text_size": "Textgröße (% der kurzen Kante)",
    "output_format": "Ausgabeformat",
    "format_hint": "PNG behält Qualität; JPG ist kleiner & anpassbar.",
    "jpg_quality": "JPG Qualität",
    "download_zip": "ZIP herunterladen",
    "processing": "Verarbeite…",
    "clear_all": "Alle löschen",
    "please_choose_images": "Bitte wählen Sie Bilder aus.",
    "msg_add_images": "Bitte fügen Sie zuerst Bilder hinzu.",
    "msg_enter_text": "Bitte Wasserzeichen-Text eingeben.",
    "msg_processing": "Verarbeite…",
    "msg_done": "Fertig! {{count}} Bilder verarbeitet.",
    "msg_failed": "Etwas ist bei der Verarbeitung schiefgelaufen."
  },
  "qr_code": {
    "generator_label": "Generator",
    "generator_title": "Wandeln Sie jeden Link in einen scanbaren QR-Code um.",
    "error_create": "QR-Code konnte nicht erstellt werden.",
    "error_url": "Bitte geben Sie eine gültige URL ein.",
    "error_generate_first": "Generieren Sie erst einen Code.",
    "error_prepare_download": "Download konnte nicht vorbereitet werden.",
    "enter_url": "URL hier eingeben…",
    "generate_button": "QR-Code erstellen",
    "download_button": "QR-Code herunterladen (PNG)"
  },
  "password_generator": {
    "error_select_charset": "Wählen Sie mindestens einen Zeichensatz.",
    "error_generate_first": "Generieren Sie zuerst ein Passwort.",
    "error_clipboard": "Zwischenablage nicht verfügbar.",
    "length": "Länge",
    "include_lowercase": "Kleinbuchstaben (a-z)",
    "include_uppercase": "Großbuchstaben (A-Z)",
    "include_numbers": "Zahlen (0-9)",
    "include_symbols": "Symbole (!@#$)",
    "avoid_ambiguous": "Mehrdeutige vermeiden (I, l, 1, O, 0)",
    "generate_button": "Neues Passwort generieren",
    "copy_button": "Kopieren",
    "copied": "Kopiert!"
  },
  "calculator": {
    "expression": "Ausdruck",
    "history": "Verlauf",
    "empty_history": "Noch kein Verlauf.",
    "shortcuts": "Tastatur: Enter zum Berechnen, Backspace zum Löschen, Esc zum Leeren.",
    "error_invalid": "Ungültiger Ausdruck",
    "mode_scientific": "Wissenschaftlich",
    "mode_standard": "Standard",
    "switch_to_scientific": "Zu Wissenschaftlich wechseln",
    "switch_to_basic": "Zu Standard wechseln"
  },
  "home": {
    "hero_title": "Kostenlose Entwicklertools",
    "hero_subtitle": "Kostenlose Browser-Tools, ohne Konto oder Anmeldung."
  },
  "blog_page": {
    "all_guides": "Alle Anleitungen",
    "meta_title": "Blog",
    "meta_description": "Praxisnahe Leitfaeden und Workflow-Notizen rund um die Tools von JW Tool Box, darunter PDF-, Bild-, Text- und Browser-Aufgaben.",
    "eyebrow": "Blog",
    "title": "Praxisleitfaeden fuer Browser-Tools und echte Workflows",
    "description": "Schritt-fuer-Schritt-Artikel, gepruefte Workflows und Referenzseiten, die die Tools von JW Tool Box sinnvoll ergaenzen.",
    "post_eyebrow": "Blogbeitrag",
    "read_more": "Weiterlesen",
    "prev": "← Zurück",
    "next": "Weiter →",
    "page_info": "Seite {{current}} von {{total}}",
    "page_description": "{{total}} praktische Anleitungen zu PDF, Bildern, Text und Entwicklung – Schritt-für-Schritt, ganz ohne Installation. Seite {{current}} von {{pages}}."
  },
  "blog_post": {
    "share_prompt": "Beitrag teilen:",
    "back_to_blog": "Zurück zum Blog",
    "last_updated": "Zuletzt aktualisiert am {{date}}",
    "related_guides": "Verwandte Anleitungen",
    "related_tools": "Empfohlene Werkzeuge"
  },
  "about_page": {
    "meta_title": "Über uns",
    "meta_description": "Warum es JW Tool Box gibt und wie das Projekt datenschutzfreundliche Browser-Tools bereitstellt.",
    "eyebrow": "Über das Projekt",
    "title": "Eine langfristig gepflegte Seite fuer Browser-Tools und Leitfaeden.",
    "description": "JW Tool Box veroeffentlicht schnelle, nuetzliche Browser-Tools und die passenden praxisnahen Anleitungen dazu. Die Seite wird wie ein langfristiges Produkt gepflegt: klare Workflows, erklaerte Grenzen und moeglichst wenig unnötige Uploads oder Konto-Huerden.",
    "values": [
      {
        "title": "Unsere Grundsaetze",
        "body": "Viele Tools verarbeiten unterstützte Dateien und Texte direkt im Browser."
      },
      {
        "title": "Kostenlos, ohne Anmeldung",
        "body": "Nutzen Sie die Tools kostenlos, ohne Konto oder Abonnement."
      },
      {
        "title": "Was kommt als Nächstes",
        "body": "Internationalisierung, mehr Text- und PDF-Tools sowie optionale Themes."
      }
    ],
    "explore_tools": "Tools erkunden",
    "privacy_commitments": "Datenschutzversprechen",
    "card_text": "Kostenlose Browser-Tools für alltägliche Aufgaben, ohne Anmeldung."
  },
  "contact_page": {
    "meta_title": "Kontakt",
    "meta_description": "Kontaktieren Sie JW Tool Box. Nachrichten werden über Ihren E-Mail-Client gesendet.",
    "eyebrow": "Kontakt",
    "title": "Schreiben Sie uns",
    "description": "Nachrichten werden über Ihren eigenen E-Mail-Client gesendet – keine Daten werden gespeichert.",
    "form": {
      "name": "Ihr Name (optional)",
      "email": "Ihre E-Mail (Reply-to)",
      "subject": "Betreff",
      "message": "Nachricht",
      "send": "Nachricht senden"
    },
    "placeholders": {
      "name": "Max Mustermann",
      "email": "sie@beispiel.de",
      "subject": "Feature-Wunsch / Fehlerbericht",
      "message": "Wie kann ich helfen?"
    },
    "status": {
      "error": "Bitte geben Sie E-Mail, Betreff und eine kurze Nachricht an.",
      "success": "Öffne E-Mail-Programm… Falls nichts passiert, senden Sie die Mail bitte manuell."
    }
  },
  "heic_to_image": {
    "title": "HEIC zu JPG/PNG Konverter",
    "description": "Konvertieren Sie Apple HEIC/HEIF Fotos lokal im Browser in JPG oder PNG.",
    "msg_add_photos": "Bitte fügen Sie erst HEIC-Fotos hinzu.",
    "msg_add_first": "Erst Dateien hinzufügen!",
    "msg_converting": "Konvertiere…",
    "msg_done": "Fertig! {{count}} Dateien verarbeitet.",
    "msg_failed": "Warnung: Etwas ist fehlgeschlagen.",
    "add_more": "Mehr Fotos hinzufügen",
    "drag_drop": "HEIC Dateien hier ablegen",
    "no_uploads": "Fotos werden lokal verarbeitet; die Website erfasst zusätzlich Nutzungsdaten wie in der Datenschutzerklärung beschrieben.",
    "output_format": "Ausgabeformat",
    "format_hint": "JPG (kleiner) oder PNG (verlustfrei).",
    "jpg_quality": "JPG Qualität",
    "convert_title": "Bereit?",
    "convert_desc": "Wir erstellen ein ZIP-Archiv mit Ihren Bildern.",
    "export_zip": "Als {{format}} ZIP exportieren",
    "steps": "1. Dateien hinzufügen -> 2. Format wählen -> 3. Exportieren",
    "photos_selected": "{{count}} Foto ausgewählt",
    "photos_selected_plural": "{{count}} Fotos ausgewählt",
    "clear": "Leeren",
    "png_hint": "PNG behält Transparenz.",
    "converting_btn": "Konvertiere…",
    "msg_partial": "{count} von {total} Dateien konvertiert. Der Rest konnte nicht dekodiert werden und wurde übersprungen."
  },
  "url_encoder": {
    "error_encode": "Konnte Text nicht kodieren.",
    "error_decode": "Konnte Text nicht dekodieren.",
    "error_swap": "Konnte Text nicht tauschen.",
    "error_clipboard": "Konnte nicht in Zwischenablage kopieren.",
    "swap": "Tauschen",
    "clear": "Leeren",
    "tip": "Tippen Sie in ein Feld, um sofort zu konvertieren.",
    "layout": "Layout",
    "split": "Geteilt",
    "full_width": "Volle Breite",
    "original_text": "Originaltext",
    "encoded_output": "Kodierte Ausgabe",
    "copy": "Kopieren",
    "copied": "Kopiert!",
    "placeholder_encode": "Text zum Kodieren eingeben…",
    "placeholder_decode": "Text zum Dekodieren eingeben…",
    "char_count": "{{count}} Zeichen"
  },
  "unit_converter": {
    "categories": {
      "length": "Länge",
      "weight": "Gewicht",
      "temperature": "Temperatur",
      "volume": "Volumen"
    },
    "descriptions": {
      "length": "Meter, Fuß, Meilen und mehr umrechnen.",
      "weight": "Kilogramm, Pfund, Stone usw. umrechnen.",
      "temperature": "Celsius, Fahrenheit und Kelvin umrechnen.",
      "volume": "Liter, Gallonen, Tassen usw. umrechnen."
    },
    "labels": {
      "value": "Wert",
      "unit": "Einheit"
    },
    "units": {
      "meters": "Meter",
      "kilometers": "Kilometer",
      "centimeters": "Zentimeter",
      "miles": "Meilen",
      "yards": "Yards",
      "feet": "Fuß",
      "inches": "Zoll",
      "kilograms": "Kilogramm",
      "grams": "Gramm",
      "pounds": "Pfund",
      "ounces": "Unzen",
      "stone": "Stone",
      "celsius": "Celsius",
      "fahrenheit": "Fahrenheit",
      "kelvin": "Kelvin",
      "liters": "Liter",
      "milliliters": "Milliliter",
      "cups_us": "Tassen (US)",
      "tablespoons": "Esslöffel",
      "teaspoons": "Teelöffel",
      "fluid_ounces": "Fluid Ounces",
      "gallons_us": "Gallonen (US)"
    }
  },
  "base64": {
    "default_text": "Base64 macht UTF-8 Text lesbar und teilbar.",
    "error_encode": "Kann diesen Text nicht kodieren.",
    "error_decode": "Ungültiger kodierter Wert.",
    "error_swap": "Tausch nicht möglich, da Wert ungültig.",
    "error_clipboard": "Zwischenablage nicht verfügbar.",
    "swap": "Werte tauschen",
    "clear": "Leeren",
    "mode": "Modus:",
    "standard": "Standard",
    "url_safe": "URL-sicher",
    "keep_padding": "Padding behalten",
    "hint_url": "URL-sicher tauscht +/ gegen -_ .",
    "hint_standard": "Standard Base64 behält + und /.",
    "original_text": "Originaltext",
    "base64_output": "Base64 Ausgabe",
    "copy": "Kopieren",
    "copied": "Kopiert!",
    "placeholder_encode": "UTF-8 Text hier einfügen…",
    "placeholder_decode": "Base64 hier einfügen…",
    "stats_original": "Zeichen: {{count}} • UTF-8 sicher",
    "stats_encoded": "Länge: {{count}}"
  },
  "bmi_calculator": {
    "categories": {
      "underweight": "Untergewicht",
      "normal_weight": "Normalgewicht",
      "overweight": "Übergewicht",
      "obesity_1": "Adipositas Grad I",
      "obesity_2": "Adipositas Grad II",
      "obesity_3": "Adipositas Grad III"
    },
    "labels": {
      "units": "Einheiten",
      "reset": "Zurücksetzen",
      "height_cm": "Größe (cm)",
      "weight_kg": "Gewicht (kg)",
      "height_ft": "Größe (feet)",
      "height_in": "Größe (inches)",
      "weight_lb": "Gewicht (lb)"
    },
    "options": {
      "metric": "Metrisch (cm / kg)",
      "imperial": "Imperial (ft / in / lb)"
    },
    "headings": {
      "bmi": "Body Mass Index",
      "categories": "BMI Kategorien"
    },
    "disclaimer": "Dieser Rechner nutzt WHO-Bereiche. Konsultieren Sie einen Arzt für medizinischen Rat."
  },
  "case_converter": {
    "uppercase": "GROSSBUCHSTABEN",
    "lowercase": "kleinbuchstaben",
    "title_case": "Titel Schreibweise",
    "sentence_case": "Satzanfang groß",
    "camel_case": "camelCase",
    "pascal_case": "PascalCase",
    "snake_case": "snake_case",
    "kebab_case": "kebab-case",
    "alternating_case": "aBwEcHsElNd",
    "inverse_case": "iNVERSE cASE",
    "text_content": "Textinhalt",
    "clear": "Leeren",
    "copy_result": "Ergebnis kopieren",
    "copied": "Kopiert!",
    "placeholder": "Text hier einfügen…"
  },
  "code_formatter": {
    "language": "Sprache",
    "format_code": "Code formatieren",
    "load_sample": "Beispiel laden",
    "clear": "Leeren",
    "layout": "Layout:",
    "split": "Geteilt",
    "full_width": "Voll",
    "source_code": "Quellcode",
    "formatted_output": "Formatierte Ausgabe",
    "copy": "Kopieren",
    "copied": "Kopiert!",
    "error_clipboard": "Zwischenablage blockiert.",
    "error_format": "Formatierung fehlgeschlagen. {{message}}",
    "hint": "Nutzt Prettier im Browser.",
    "chars": "Zeichen: {{count}}",
    "placeholder_input": "<!-- {{lang}} Code hier einfügen -->",
    "placeholder_output": "Formatierte Version erscheint hier."
  },
  "color_converter": {
    "hex_label": "HEX",
    "hex_desc": "Unterstützt #RGB, #RRGGBB, #RRGGBBAA.",
    "rgb_label": "RGB",
    "rgb_desc": "rgb() oder rgba() akzeptiert.",
    "hsl_label": "HSL",
    "hsl_desc": "hsl() oder hsla() akzeptiert.",
    "swatch_hint": "Format rechts bearbeiten und Konvertieren klicken.",
    "convert": "Konvertieren",
    "copy": "Kopieren",
    "copied": "Kopiert!",
    "css_var_label": "CSS Variablen:",
    "error_parse": "Konnte Wert nicht lesen.",
    "invalid_hex": "Ungültiges HEX.",
    "invalid_rgb": "Ungültiges RGB.",
    "error_clipboard": "Zwischenablage nicht verfügbar."
  },
  "countdown_timer": {
    "presets": {
      "5_min": "5 Min",
      "15_min": "15 Min",
      "25_min": "25 Min",
      "45_min": "45 Min"
    },
    "error_duration": "Dauer muss größer als Null sein.",
    "hours": "Stunden",
    "minutes": "Minuten",
    "seconds": "Sekunden",
    "remaining": "Verbleibend",
    "times_up_msg": "Zeit abgelaufen!",
    "pause": "Pause",
    "start": "Start",
    "reset": "Reset",
    "local_hint": "Timer läuft lokal weiter.",
    "demo": "Live-Demo — klicken Sie einen Button, um zu übernehmen",
    "finished": "Fertig",
    "times_up_title": "Zeit ist um!",
    "times_up_desc": "Mach eine Pause oder starte neu.",
    "reset_timer": "Timer zurücksetzen",
    "dismiss": "Schließen",
    "resume": "Fortsetzen",
    "sound_enabled": "Akustischer Alarm",
    "test_sound": "Ton testen",
    "fullscreen": "Vollbild",
    "exit_fullscreen": "Vollbild verlassen",
    "audio_unavailable": "Ton ist nicht verfügbar oder blockiert. Browser und Lautstärke prüfen; die visuelle Erinnerung funktioniert weiterhin.",
    "background_hint": "Diesen Tab geöffnet lassen. Beim Zurückkehren wird die Restzeit aktualisiert. Ein gesperrtes Handy oder pausierter Browser kann den Alarm verzögern."
  },
  "csv_json_converter": {
    "error_json_array": "JSON muss ein Array von Objekten sein.",
    "error_unsupported": "Konvertierung nicht unterstützt.",
    "error_convert": "Konvertierung fehlgeschlagen.",
    "error_clipboard": "Zwischenablage nicht verfügbar.",
    "input": "Eingabe",
    "output": "Ausgabe",
    "swap": "Tauschen",
    "clear": "Leeren",
    "convert": "Konvertieren",
    "header_hint": "Kopfzeile für CSV/TSV zu JSON erforderlich.",
    "copied": "Kopiert!",
    "copy": "Kopieren",
    "placeholder_output": "Ergebnis erscheint hier…"
  },
  "date_calculator": {
    "mode_difference": "Datumsdifferenz",
    "mode_add_subtract": "Tage Addieren / Subtrahieren",
    "start_date": "Startdatum",
    "end_date": "Enddatum",
    "difference": "Differenz",
    "days": "Tage",
    "years": "Jahre",
    "months": "Monate",
    "breakdown": "oder {{years}} Jahre, {{months}} Monate, {{days}} Tage",
    "add": "Addieren (+)",
    "subtract": "Subtrahieren (-)",
    "unit_days": "Tage",
    "unit_weeks": "Wochen",
    "unit_months": "Monate",
    "unit_years": "Jahre",
    "result_date": "Ergebnisdatum",
    "preset_years_days": "Berechnen: heute plus 2 Jahre und 320 Tage",
    "unit_years_days": "Jahre + Tage",
    "extra_days": "Zusätzliche Tage",
    "years_days_hint": "Zuerst werden die Jahre, dann die Kalendertage berechnet. Nicht vorhandene Monatsdaten werden auf den letzten Tag des Monats begrenzt.",
    "invalid_date": "Bitte ein gültiges Datum zwischen den Jahren 100 und 9999 eingeben.",
    "operation": "Operation",
    "quantity": "Anzahl",
    "unit": "Einheit",
    "include_end": "Beide Daten mitzählen (einen Tag addieren)",
    "calculate": "Tage berechnen",
    "inclusive_hint": "Beide Daten, Wochenenden und Feiertage werden mitgezählt.",
    "exclusive_hint": "Das Startdatum wird ausgeschlossen; Wochenenden und Feiertage zählen mit."
  },
  "favicon_generator": {
    "error_canvas": "Canvas nicht unterstützt",
    "error_render": "Konnte Icon nicht rendern",
    "error_select_size": "Wählen Sie mindestens eine Größe.",
    "success_msg": "Icons generiert! Download startet.",
    "error_generate": "Fehler beim Generieren.",
    "letters_emoji": "Buchstaben oder Emoji",
    "bg_color": "Hintergrundfarbe",
    "text_color": "Textfarbe",
    "font_size": "Schriftgröße",
    "padding": "Innenabstand",
    "preview": "Vorschau",
    "format_hint": "Ausgabe: PNG in ZIP.",
    "usage_hint": "Max. 2 Buchstaben oder 1 Emoji.",
    "include_sizes": "Größen einschließen",
    "download_zip": "Favicon ZIP laden"
  },
  "hash_generator": {
    "input_label": "Eingabetext",
    "uppercase": "Großbuchstaben Ausgabe",
    "generate": "Hash generieren",
    "copy": "Kopieren",
    "placeholder_result": "Generieren klicken um Hash zu sehen.",
    "error_unsupported": "Browser nicht unterstützt."
  },
  "image_compressor": {
    "target_mode": "Unter 200 KB pro Bild versuchen",
    "target_hint": "Optional: reduziert Breite und Qualität, bis auf 320 px und 40 %. 200 KB sind 200.000 Bytes; das Ziel ist nicht garantiert.",
    "prepare_target": "Bilder unter 200 KB vorbereiten",
    "results_title": "Exportergebnisse",
    "result_details": "{{bytes}} Bytes · {{width}} × {{height}} px · {{quality}} % Qualität",
    "target_met": "Unter 200.000 Bytes",
    "target_missed": "Ziel nicht erreicht. Versuchen Sie einen kleineren Ausschnitt oder ein anderes Format.",
    "review_hint": "Das heruntergeladene Bild öffnen oder bei mehreren Bildern die ZIP entpacken. Text und Details vor dem Einreichen prüfen.",
    "download_results": "Ergebnis-ZIP herunterladen",
    "title": "Bilder komprimieren",
    "description": "JPG/PNG/WebP lokal komprimieren. Ein Bild direkt herunterladen, mehrere Bilder als ZIP.",
    "max_width": "Max Breite (px)",
    "quality": "Qualität",
    "output_format": "Ausgabeformat",
    "drag_drop": "Dateien hier ablegen",
    "supports_hint": "JPG / PNG / WebP; < 10 MB pro Datei.",
    "selected_files": "{{count}} Bilder gewählt - {{size}} Gesamt",
    "clear": "Leeren",
    "remove": "Entfernen",
    "tip_multiple": "Ein Bild wird direkt heruntergeladen, mehrere als ZIP.",
    "compress_zip_btn": "Komprimieren & als ZIP laden",
    "processing": "Verarbeite…",
    "msg_done": "Fertig! {{count}} Bild(er) verarbeitet. Originalgröße insgesamt: {{size}}.",
    "error_failed": "Fehler beim Komprimieren.",
    "error_files_limit": "JPG/PNG/WebP-Bilder bis zu jeweils 20 MiB auswählen.",
    "error_skipped": "Dateien über 20 MiB wurden übersprungen.",
    "error_select_one": "Wählen Sie mindestens ein Bild.",
    "compress_image_btn": "Bild komprimieren und herunterladen",
    "download_image": "Bild herunterladen",
    "size_comparison": "Original: {{original}} → Ausgabe: {{output}}"
  },
  "image_resizer": {
    "title": "Bild verkleinern",
    "description": "Bilder skalieren und konvertieren.",
    "upload_btn": "Bild hochladen",
    "selected": "Gewählt: {{name}} ({{size}} KB)",
    "supported": "Support: PNG, JPG, WebP, HEIC",
    "settings_title": "Einstellungen",
    "max_width": "Max Breite (px)",
    "max_height": "Max Höhe (px)",
    "keep_aspect": "Seitenverhältnis beibehalten",
    "output_format": "Ausgabeformat",
    "format_webp": "WebP (kleinstes)",
    "format_jpeg": "JPEG",
    "format_png": "PNG (verlustfrei)",
    "quality": "Qualität ({{value}}%)",
    "original_dims": "Original: {{width}} × {{height}}px",
    "target_dims": "Ziel: {{width}} × {{height}}px",
    "resize_btn": "Größe ändern & konvertieren",
    "download_btn": "Ergebnis laden",
    "preview_title": "Vorschau",
    "output_title": "Ausgabe",
    "output_info": "{{width}} × {{height}}px · {{format}} · {{size}} KB",
    "error_upload_first": "Bitte erst Bild hochladen.",
    "error_read": "Lesefehler.",
    "error_canvas": "Canvas nicht unterstützt.",
    "error_encode": "Kodierungsfehler.",
    "error_load": "Ladefehler."
  },
  "images_to_pdf": {
    "title": "Bilder zu PDF",
    "description": "Kombinieren Sie JPG/PNG zu einer PDF.",
    "add_more": "Mehr Bilder (JPG/PNG)",
    "drag_drop": "Bilder hier ablegen",
    "limit_hint": "Bis zu 40 Bilder.",
    "selected": "{{count}} Bild",
    "selected_plural": "{{count}} Bilder",
    "clear": "Leeren",
    "max_page_width": "Max Seitenbreite",
    "width_hint": "Größere Bilder werden runterskaliert.",
    "create_pdf": "PDF erstellen",
    "create_hint": "Alles läuft im Browser.",
    "building": "Erstelle…",
    "export_pdf": "PDF exportieren",
    "steps": "1. Bilder wählen. 2. Breite setzen. 3. Exportieren.",
    "msg_choose_images": "Wählen Sie JPG oder PNG.",
    "msg_add_one": "Mindestens ein Bild nötig.",
    "msg_building": "Erstelle PDF lokal…",
    "msg_ready": "PDF bereit.",
    "msg_failed": "Fehler!"
  },
  "json_formatter": {
    "title": "JSON Formatter",
    "description": "Formatieren und Validieren von JSON.",
    "format_btn": "JSON Formatieren",
    "minify_btn": "Minify",
    "load_sample": "Beispiel laden",
    "clear": "Leeren",
    "paste_hint": "JSON links einfügen, Ergebnis rechts kopieren.",
    "layout": "Layout:",
    "split": "Geteilt",
    "full_width": "Voll",
    "input_label": "Eingabe",
    "output_label": "Ausgabe",
    "copy": "Kopieren",
    "copied": "Kopiert!",
    "chars": "Zeichen: {{count}}",
    "error_invalid": "JSON ungültig. {{reason}}",
    "error_clipboard": "Zwischenablage blockiert.",
    "placeholder_input": "{ \"name\": \"Beispiel\" }",
    "placeholder_output": "Hübsches JSON erscheint hier."
  },
  "jwt_decoder": {
    "title": "JWT Decoder",
    "description": "JSON Web Tokens dekodieren.",
    "token_label": "JWT Token",
    "placeholder": "JWT hier einfügen…",
    "decode_btn": "Dekodieren",
    "clear_btn": "Leeren",
    "header_label": "Header",
    "payload_label": "Payload",
    "copy": "Kopieren",
    "copied": "Kopiert!",
    "common_claims": "Häufige Claims",
    "signature_label": "Signatur (base64url):",
    "verification_hint": "Keine Validierung! Nur Anzeige.",
    "error_invalid": "Ungültiges JWT Format.",
    "error_decode": "Dekodierung fehlgeschlagen.",
    "error_clipboard": "Zwischenablage nicht verfügbar."
  },
  "keep_screen_on": {
    "title_active": "Wachhalte-Modus aktiv",
    "title_inactive": "Bildschirm wachhalten",
    "desc_unsupported": "Browser unterstützt Wake Lock nicht.",
    "desc_supported": "Wake Lock starten und Tab im Vordergrund halten.",
    "btn_running": "Läuft…",
    "btn_start": "Wachhalten starten",
    "btn_stop": "Stopp",
    "error_unsupported": "Wake Lock API nicht unterstützt.",
    "error_request": "Konnte Display nicht wachhalten.",
    "local_time": "Ortszeit",
    "session_timer": "Sitzungsdauer",
    "timer_hint_active": "Zeit seit Start",
    "timer_hint_inactive": "Start drücken zum Tracken",
    "tips": {
      "ios_title": "iOS / Safari",
      "ios_body": "Einstellungen → Anzeige → Automatische Sperre → 'Nie'.",
      "android_title": "Android",
      "android_body": "Einstellungen → Anzeige → Ruhezustand.",
      "desktop_title": "Desktop",
      "desktop_body": "Energieeinstellungen anpassen."
    }
  },
  "lorem_ipsum": {
    "count": "Anzahl",
    "unit": "Einheit",
    "unit_paragraphs": "Absätze",
    "unit_sentences": "Sätze",
    "unit_words": "Wörter",
    "classic_opening": "Klassischer Start",
    "copy_output": "Ausgabe kopieren",
    "copied": "Kopiert!",
    "output": "Generierter Text"
  },
  "markdown_converter": {
    "md_to_html": "Markdown → HTML",
    "html_to_md": "HTML → Markdown",
    "copy_output": "Ausgabe kopieren",
    "copied": "Kopiert!",
    "layout": "Layout:",
    "split": "Geteilt",
    "full_width": "Voll",
    "description": "Richtung wählen, Text einfügen, Ergebnis kopieren.",
    "md_input": "Markdown Eingabe",
    "html_input": "HTML Eingabe",
    "md_output": "Markdown Ausgabe",
    "html_output": "HTML Ausgabe"
  },
  "money_to_words": {
    "title": "Geld zu Worten Konverter",
    "description": "Geldbeträge in englischen Text umwandeln.",
    "enter_amount": "Betrag eingeben",
    "placeholder": "z.B. 1234.56",
    "quick_history": "Verlauf",
    "history_empty": "Leer.",
    "convert_btn": "Umwandeln",
    "error_invalid": "Ungültige Zahl.",
    "label_sentence": "Satz-Schreibweise",
    "label_uppercase": "Großbuchstaben",
    "label_check": "Scheck-Zeile",
    "label_memo": "Memo",
    "label_currency": "Währungsformat",
    "copied": "Kopiert!",
    "copy": "Kopieren",
    "check_guide_title": "So füllen Sie einen US-Scheck aus",
    "check_guide_step1": "Datum oben rechts.",
    "check_guide_step2": "Empfänger bei 'Pay to the Order of'.",
    "check_guide_step3": "Zahlenbetrag rechts ins Kästchen.",
    "check_guide_step4": "Betrag in Worten auf die Linie (mit 'CHECK LINE' Ausgabe).",
    "check_guide_step5": "Memo optional.",
    "check_guide_step6": "Unterschreiben.",
    "check_guide_tip": "Bonus tip: add “***” or “#” before and after the written amount to prevent tampering.",
    "error_copy": "Kopieren nicht möglich. Wählen Sie das Ergebnis aus und kopieren Sie es manuell."
  },
  "mortgage_calculator": {
    "cta_label": "Hypothek berechnen",
    "summary_title": "Zusammenfassung",
    "notes": "Schätzwerte. Tatsächliche Zahlungen können abweichen."
  },
  "auto_loan_calculator": {
    "cta_label": "Autokredit planen",
    "summary_title": "Gesamtkosten",
    "notes": "Steuern und Gebühren extra beachten.",
    "vehicle_price": "Fahrzeugpreis",
    "down_payment": "Anzahlung",
    "interest_rate": "Zinssatz (%)",
    "term_years": "Laufzeit",
    "term_input_mode": "Eingabemodus",
    "months": "Monate",
    "years": "Jahre",
    "monthly_payment": "Monatliche Rate",
    "total_interest": "Gesamtzinsen",
    "payment_breakdown": "Zahlungsübersicht",
    "total_paid": "Gesamt gezahlt",
    "principal_loan_amount": "Kreditsumme"
  },
  "pdf_compressor": {
    "title": "PDF Komprimieren",
    "description": "Dateigröße lokal reduzieren.",
    "drag_drop": "PDF hier ablegen",
    "presets": {
      "balanced_label": "Ausgewogen",
      "balanced_desc": "Gute Balance zwischen Qualität und Größe.",
      "small_label": "Kleiner",
      "small_desc": "Gut für E-Mail.",
      "tiny_label": "Winzig",
      "tiny_desc": "Maximale Kompression."
    },
    "compress_btn": "Komprimieren",
    "download_btn": "PDF laden",
    "processing": "Komprimiere…",
    "error_file_type": "Bitte PDF wählen.",
    "error_file_size": "Bitte unter 30 MB bleiben.",
    "error_no_file": "Erst PDF hinzufügen.",
    "msg_rendering": "Rendere lokal…",
    "progress": "Fortschritt",
    "msg_failed": "Konnte PDF nicht komprimieren. Bitte versuchen Sie eine andere Datei.",
    "scale": "Skalierung",
    "quality": "Qualität",
    "msg_done": "Fertig! Reduziert um {{percent}}%.",
    "original_size": "Original",
    "compressed_size": "Komprimiert",
    "change_file": "Datei ändern",
    "preset_title": "Voreinstellung",
    "preset_description": "Qualität wählen.",
    "download_title": "Download",
    "download_description": "Kleinere PDF speichern.",
    "steps": "1. Upload. 2. Preset. 3. Download.",
    "heads_up": "Hinweis",
    "heads_up_list": {
      "local": "100% lokal.",
      "flatten": "Seiten werden zu Bildern.",
      "quality": "Weniger Qualität = Kleinere Datei.",
      "loses_text": "Jede Seite wird als Bild neu gerendert – auswählbarer und durchsuchbarer Text wird dadurch zu Bild. Wenn du den Text behalten musst, nutze dieses Werkzeug nicht."
    },
    "msg_no_savings": "Die Datei wurde mit dieser Voreinstellung nicht kleiner. Das Original wurde behalten – probiere die Voreinstellung „Kleinste“ für die stärkste Reduktion."
  },
  "pdf_lock_unlock": {
    "title_unlock": "PDF Entsperren",
    "description_unlock": "Passwortschutz entfernen.",
    "drag_drop": "PDF hier ablegen",
    "password_label": "Passwort",
    "unlock_btn": "Entsperren",
    "unlocking": "Entsperre…",
    "error_file_type": "Kein PDF.",
    "error_file_size": "Bitte unter 60 MB.",
    "error_no_file": "Keine Datei.",
    "error_no_password": "Passwort fehlt.",
    "msg_unlocking": "Entschlüssele…",
    "msg_password_required": "Passwort benötigt.",
    "msg_incorrect_password": "Falsches Passwort.",
    "msg_success": "Erledigt.",
    "msg_failed": "Fehler.",
    "change_file": "Andere Datei",
    "drag_drop_hint": "Datei ablegen",
    "local_hint": "Alles lokal.",
    "password_title": "Passwort",
    "password_description": "Passwort eingeben.",
    "password_placeholder": "Aktuelles Passwort",
    "unlock_title": "Entsperren",
    "unlock_description": "Erstellt ungeschützte Kopie.",
    "steps": "1. Upload. 2. Passwort. 3. Download.",
    "progress_hint": "Warten…",
    "heads_up": "Hinweis",
    "heads_up_list": {
      "local": "Lokal.",
      "rebuild": "Seiten werden neu gebaut.",
      "security": "Passwörter sicher verwahren."
    }
  },
  "pdf_merge": {
    "title": "PDFs Zusammenfügen",
    "description": "Mehrere PDFs kombinieren.",
    "drag_drop": "PDFs ablegen",
    "add_more": "Mehr hinzufügen",
    "merge_btn": "Zusammenfügen",
    "merging": "Verbinde…",
    "clear_all": "Alle löschen",
    "error_file_type": "Nur PDFs.",
    "error_file_size": "Max 15 MB pro Datei.",
    "error_some_skipped": "Zu große Dateien übersprungen.",
    "msg_success": "Erfolgreich!",
    "msg_failed": "Fehler.",
    "total_size": "Gesamt: {{size}}",
    "drag_drop_hint": "Hier ablegen",
    "drag_drop_subhint": "Mehrere möglich.",
    "selected_files": "{{count}} Dateien",
    "clear_list": "Liste leeren",
    "move_up": "Hoch",
    "move_down": "Runter",
    "remove": "X",
    "tip": "Shift+Klick für Mehrfachauswahl.",
    "merge_download": "Verbinden & Laden",
    "processing": "Arbeite…"
  },
  "pdf_page_organizer": {
    "title": "Seiten Organisieren",
    "description": "Sortieren, drehen, löschen.",
    "drag_drop": "PDF ablegen",
    "save_btn": "Speichern & Laden",
    "saving": "Speichere…",
    "rotate_left": "Links drehen",
    "rotate_right": "Rechts drehen",
    "delete_page": "Löschen",
    "error_file_type": "Nur PDF.",
    "error_file_size": "Zu groß (>50MB).",
    "error_read_failed": "Lesefehler.",
    "msg_saved": "Gespeichert!",
    "msg_failed": "Fehler.",
    "change_file": "Datei ändern",
    "drag_drop_hint": "PDF hier hin",
    "local_hint": "Kein Upload.",
    "pages_count": "Seiten: {{count}}",
    "order_rotation_title": "Sortierung & Drehung",
    "order_rotation_desc": "Anpassen.",
    "page_label": "Seite {{index}}",
    "preview_unavailable": "Keine Vorschau",
    "move_up": "Hoch",
    "move_down": "Runter",
    "rotate_left_btn": "-90°",
    "rotate_right_btn": "+90°",
    "export_title": "Export",
    "export_desc": "Speichern.",
    "export_btn": "Export",
    "exporting": "Exportiere…",
    "steps": "1. Upload. 2. Anpassen. 3. Export.",
    "msg_upload_first": "Erst Upload.",
    "msg_rebuilding": "Erstelle neu…",
    "msg_done": "Fertig.",
    "msg_failed_export": "Fehler beim Export."
  },
  "salary_tax_calculator": {
    "title": "Gehaltsrechner (US Tax)",
    "description": "US-Bundessteuer-Schaetzung mit Steuerklassen 2025 und Standardabzug.",
    "income_label": "Jahreseinkommen",
    "status_label": "Status",
    "status_single": "Ledig",
    "status_married": "Verheiratet (zusammen)",
    "status_separate": "Verheiratet (getrennt)",
    "status_head": "Haushaltsvorstand",
    "calculate_btn": "Berechnen",
    "summary_title": "Zusammenfassung",
    "total_tax": "Gesamtsteuer",
    "effective_rate": "Effektiver Steuersatz",
    "take_home": "Netto (Jahr)",
    "bracket_breakdown": "Steuerklassen Details",
    "bracket_header": "Klasse",
    "rate_header": "Satz",
    "tax_header": "Betrag",
    "disclaimer": "Die Schaetzung nutzt US-Bundessteuerklassen 2025 und den Standardabzug. FICA, Bundesstaatensteuern, lokale Steuern, Steuergutschriften und Einzelabzuege sind nicht enthalten."
  },
  "text_diff": {
    "title": "Text Vergleicher",
    "description": "Unterschiede finden.",
    "original_label": "Original",
    "modified_label": "Geändert",
    "diff_result": "Ergebnis",
    "legend_removed": "Entfernt",
    "legend_added": "Neu",
    "no_changes": "Keine Änderungen.",
    "clear_btn": "Leeren",
    "original_placeholder": "Original hier…",
    "modified_placeholder": "Geänderter Text hier…",
    "copied": "Kopiert!",
    "copy_summary": "Zusammenfassung kopieren",
    "layout": "Ansicht:",
    "split": "Geteilt",
    "full_width": "Voll",
    "legend_green": "Neu = grün",
    "legend_red": "Weg = rot",
    "legend_whitespace": "Leerzeichen beachtet"
  },
  "uuid_generator": {
    "title": "UUID Generator",
    "description": "v4 UUIDs erstellen.",
    "generate_button": "Generieren",
    "result_title": "Ergebnisse",
    "copy_all": "Alle Kopieren",
    "count_label": "Anzahl?",
    "uppercase_label": "Großbuchstaben",
    "hyphens_label": "Ohne Bindestriche",
    "copied": "Kopiert!",
    "copy_tooltip": "Klicken zum Kopieren"
  },
  "word_counter": {
    "title": "Wortzähler",
    "description": "Wörter, Zeichen und Lesezeit.",
    "placeholder": "Text hier schreiben…",
    "stat_words": "Wörter",
    "stat_chars": "Zeichen",
    "stat_no_spaces": "Ohne Leerz.",
    "stat_paragraphs": "Absätze",
    "stat_sentences": "Sätze",
    "stat_read_time": "Lesezeit",
    "copy_text": "Text kopieren",
    "clear_text": "Löschen",
    "min": "Min"
  },
  "world_time": {
    "title": "Weltzeituhr",
    "description": "Zeitzonen vergleichen.",
    "search_placeholder": "Stadt suchen…",
    "base_time": "Basiszeit",
    "auto_update": "Automatisch aktualisieren",
    "remove_zone": "Entfernen",
    "add_btn": "Hinzufügen",
    "copy_timestamp": "Zeit kopieren"
  },
  "pdf_split": {
    "title": "PDF Teilen",
    "description": "Seiten extrahieren.",
    "drag_drop": "PDF ablegen",
    "range_mode": "Bereich",
    "extract_all": "Alle Seiten trennen",
    "start_page": "Start",
    "end_page": "Ende",
    "split_btn": "Teilen",
    "processing": "Arbeite…",
    "error_file_type": "Kein PDF.",
    "error_file_size": "Zu groß (>50MB).",
    "msg_success": "Erledigt!",
    "msg_failed": "Fehler."
  },
  "pdf_to_image": {
    "title": "PDF zu Bild",
    "description": "Seiten als JPG/PNG speichern.",
    "drag_drop": "PDF ablegen",
    "format_label": "Format",
    "quality_label": "Qualität",
    "convert_btn": "Konvertieren",
    "processing": "Rendere…",
    "error_file_type": "Kein PDF.",
    "error_file_size": "Bitte unter 40 MB.",
    "msg_success": "Fertig!",
    "current_file": "Datei: {{name}}",
    "size_mb": "Größe: {{size}} MB",
    "remove": "Entfernen",
    "format_hint_text": "Format wählen.",
    "quality_hint": "Qualität / Größe.",
    "png_hint": "Transparenz (PNG).",
    "download_title": "Download",
    "download_desc": "ZIP speichern.",
    "steps": "1. Upload. 2. Format. 3. Export.",
    "progress": "Fortschritt",
    "keep_open": "Tab offen lassen.",
    "heads_up": "Info",
    "note_privacy": "Lokal.",
    "note_large": "Große Dateien dauern länger.",
    "note_scale": "2x Skalierung für Schärfe."
  },
  "pinyin_converter": {
    "title": "Pinyin Konverter",
    "description": "Chinesisch zu Pinyin.",
    "input_placeholder": "Chinesisch hier…",
    "mode_tone_mark": "Tonzeichen (mā)",
    "mode_tone_number": "Zahlen (ma1)",
    "mode_initials": "Initiale (m)",
    "copy": "Kopieren",
    "copied": "Kopiert!"
  },
  "random_generator": {
    "title": "Zufallsgenerator",
    "description": "Zahlen oder Listen.",
    "mode_number": "Zahlen",
    "mode_picker": "Listen-Picker",
    "min": "Min",
    "max": "Max",
    "quantity": "Anzahl",
    "allow_duplicates": "Duplikate erlaubt",
    "generate_btn": "Generieren",
    "list_placeholder": "Einträge, einer pro Zeile…",
    "pick_count": "Wie viele ziehen?",
    "pick_btn": "Auswählen",
    "result_label": "Ergebnis",
    "error_range": "Anzahl zu groß (für Bereich)."
  },
  "regex_tester": {
    "title": "Regex Tester",
    "description": "Reguläre Ausdrücke prüfen.",
    "pattern_label": "Muster (Regex)",
    "flags_label": "Flags",
    "text_label": "Test-String",
    "matches_label": "Treffer",
    "match_count_result": "{{count}} gefunden",
    "no_matches": "Keine Treffer gefunden",
    "error_invalid": "Ungültiges Regex.",
    "suggestions": "Beispiele",
    "patterns": {
      "email": "Email",
      "us_phone": "US phone",
      "ipv4": "IPv4",
      "hex": "Hex color",
      "invoice": "Invoice ID"
    },
    "flags": {
      "global": "Global",
      "ignore_case": "Ignore case",
      "multiline": "Multiline",
      "dot_all": "DotAll",
      "unicode": "Unicode"
    },
    "group_label": "Group {{index}}",
    "empty_input": "Enter a regex pattern and test string to see matches."
  },
  "loan_calculator": {
    "purchase_price": "Kaufpreis",
    "down_payment": "Anzahlung",
    "apr": "Effektiver Jahreszins (%)",
    "term": "Laufzeit",
    "months": "Monate",
    "years": "Jahre",
    "property_tax": "Grundsteuer (Jahr)",
    "annual_insurance": "Versicherung (Jahr)",
    "hoa_monthly_fee": "Wohngeld (Monat)",
    "monthly_payment": "Monatliche Rate",
    "principal_interest": "Tilgung & Zinsen",
    "estimated_taxes": "Geschätzte Steuern",
    "insurance": "Versicherung",
    "hoa": "Wohngeld",
    "total_paid_over": "Gesamtzahlung über",
    "interest": "Zinsen:",
    "principal": "Tilgung:",
    "loan_amount": "Kredithöhe",
    "after_down_payment": "Nach Anzahlung",
    "payment_breakdown": "Verteilung",
    "total_paid": "Gesamt"
  },
  "privacy_page": {
    "meta_title": "Datenschutz",
    "meta_description": "Erfahren Sie, welche Eingaben lokal verarbeitet werden und welche Daten Analyse-, Hosting- und Werbedienste erhalten können.",
    "eyebrow": "Datenschutz",
    "title": "So verarbeitet JW Tool Box Daten",
    "subtitle": "Aktualisiert am 30. September 2026. Zusammenfassung zu Tools, Website, Hosting und Werbung.",
    "sections": [
      {
        "title": "Verarbeitung in Tools",
        "body": "Die meisten Tools verarbeiten eingegebene Texte oder Dateien im Browser. JW Tool Box lädt oder speichert die Inhalte Ihrer Eingaben und Dateien nicht absichtlich. Manche Seiten oder Vorschauen können andere Websites kontaktieren; der Markdown-Konverter zeigt rohes HTML an, und eingebettete externe Ressourcen können Browseranfragen auslösen. Beim Laden der Website sendet Ihr Browser außerdem übliche Anfragen an unsere Hosting- und Content-Delivery-Anbieter."
      },
      {
        "title": "Nutzung der Website und Tools",
        "body": "Beim Besuch werden Google Analytics und Microsoft Clarity über Google Tag Manager geladen, um Seiten- und Tool-Nutzung zu erfassen. Ereignisse können Seitenadressen und -titel, Sprache, Browser- oder Geräteangaben, Verweisquellen, Tool-Aktionen und ausgewählte Einstellungen enthalten. Der Gehaltsrechner übermittelt derzeit beispielsweise eine Einkommensgruppe und den Steuerstatus; Timer-Ereignisse übermitteln die gewählte Dauer; der Betrags-zu-Wort-Konverter meldet, ob Cent eingegeben wurden und wie viele Stellen der ganzzahlige Betrag hat. Das vollständige Gehalt, eingegebene Texte und Dateiinhalte werden nicht absichtlich in diese benutzerdefinierten Ereignisse aufgenommen. Microsoft Clarity bietet außerdem Sitzungs- und Interaktionsanalysen; laut Microsoft werden Inhalte in Eingabefeldern standardmäßig maskiert. Das Cloudflare-Hosting empfängt normale Seitenanfragen und kann technische Informationen verarbeiten, die zur Bereitstellung erforderlich sind. Cloudflare Web Analytics erfasst separat Ladezeitmetriken; laut Cloudflare sammelt oder verwendet dieser Dienst keine personenbezogenen Besucherdaten und protokolliert keine URL-Abfrageparameter. Der Markdown-Konverter zeigt eingefügtes HTML an; eingebettete externe Ressourcen können Browseranfragen an andere Websites auslösen. Zeigen Sie keine vertraulichen Inhalte mit Verweisen auf externe Websites an."
      },
      {
        "title": "Cookies, Analyse und Werbung",
        "body": "Google Analytics und Microsoft Clarity werden wie oben beschrieben geladen. Der Hinweis informiert darüber, schaltet die Analyse aber nicht ab. Google AdSense kann bei Anzeigenanfragen Cookies oder Kennungen für Auslieferung, Berichte und Häufigkeitsbegrenzung verwenden sowie – abhängig von geltenden Einstellungen und Auswahlmöglichkeiten – Anzeigen anhand früherer Besuche personalisieren. Auch ohne Analytics können Anzeigen erscheinen. In den Google Ads-Einstellungen finden Sie die Steuerungsmöglichkeiten für personalisierte Anzeigen."
      },
      {
        "title": "Drittanbieter",
        "body": "Google Analytics, Microsoft Clarity, Google AdSense und Cloudflare verarbeiten Informationen nach ihren eigenen Bedingungen und Datenschutzhinweisen. JW Tool Box kontrolliert deren Speicherfristen und sämtliche Datennutzungen nicht."
      }
    ],
    "controls": "Werbeoptionen und die Deaktivierung personalisierter Werbung finden Sie in den Google Ads-Einstellungen. Zusätzlich können Sie die Branchen-Opt-out-Seite für teilnehmende Werbeunternehmen nutzen.",
    "google_ads_settings": "Google Ads-Einstellungen",
    "industry_optout": "Branchenweite Opt-out-Optionen",
    "ad_controls_title": "Werbeoptionen"
  },
  "not_found_page": {
    "meta_title": "Nicht gefunden",
    "meta_description": "Seite existiert nicht.",
    "eyebrow": "404",
    "title": "Seite nicht gefunden",
    "message": "Diese Seite gibt es nicht oder sie wurde verschoben.",
    "go_home": "Zur Startseite",
    "view_tools": "Zu den Tools"
  },
  "tools": {
    "svgToPng": {
      "upload": "SVG hochladen",
      "uploadPrompt": "Klicken oder Ablegen",
      "svgCode": "SVG Code",
      "svgPlaceholder": "SVG Code hier einfügen…",
      "scale": "Skalierung",
      "convert": "Konvertieren",
      "preview": "Vorschau",
      "error": "Fehler beim Konvertieren."
    },
    "barcodeGenerator": {
      "settings": "Einstellungen",
      "barcodeText": "Barcode Text",
      "textPlaceholder": "Text oder Zahlen…",
      "format": "Format",
      "width": "Breite",
      "height": "Höhe",
      "showText": "Text anzeigen",
      "preview": "Vorschau",
      "download": "Download",
      "invalidInput": "Ungültige Eingabe.",
      "useExample": "Beispiel verwenden: {{example}}",
      "errors": {
        "empty": "Den zu codierenden Wert eingeben.",
        "ascii": "CODE128 unterstützt ASCII-Zeichen: lateinische Buchstaben, Zahlen und ASCII-Satzzeichen.",
        "code39": "CODE39 unterstützt A–Z, Zahlen, Leerzeichen und - . $ / + %.",
        "digits": "{{format}} akzeptiert nur Ziffern. Leerzeichen, Buchstaben und Satzzeichen entfernen.",
        "length": "{{format}} benötigt {{count}} Ziffern ohne Prüfziffer oder {{full}} mit Prüfziffer.",
        "checksum": "Die letzte Prüfziffer muss {{expected}} sein. Korrigieren oder für die automatische Berechnung weglassen.",
        "range": "Pharmacode muss eine ganze Zahl zwischen 3 und 131070 sein.",
        "unexpected": "Dieser Wert konnte nicht codiert werden. Formatregeln prüfen oder das Beispiel verwenden."
      },
      "hints": {
        "CODE128": "Allgemeine Etiketten: ASCII-Text und Zahlen.",
        "EAN13": "12 Ziffern oder 13 mit Prüfziffer. Eine fehlende Prüfziffer wird automatisch berechnet.",
        "UPC": "11 Ziffern oder 12 mit Prüfziffer. Eine fehlende Prüfziffer wird automatisch berechnet.",
        "CODE39": "A–Z, Zahlen, Leerzeichen und - . $ / + %. Kleinbuchstaben werden zu Großbuchstaben.",
        "ITF14": "13 Ziffern oder 14 mit Prüfziffer. Eine fehlende Prüfziffer wird automatisch berechnet.",
        "MSI": "Nur Ziffern; dieses Format hat keine feste Eingabelänge.",
        "pharmacode": "Eine ganze Zahl zwischen 3 und 131070."
      }
    },
    "xmlJsonConverter": {
      "input": "Eingabe",
      "output": "Ausgabe",
      "convert": "Konvertieren",
      "copy": "Kopieren",
      "clear": "Leeren",
      "xmlPlaceholder": "XML hier…",
      "jsonPlaceholder": "JSON hier…",
      "outputPlaceholder": "Ergebnis…",
      "emptyInput": "Bitte Text eingeben.",
      "conversionError": "Fehler."
    },
    "yamlJsonConverter": {
      "input": "Eingabe",
      "output": "Ausgabe",
      "convert": "Konvertieren",
      "copy": "Kopieren",
      "clear": "Leeren",
      "yamlPlaceholder": "YAML hier…",
      "jsonPlaceholder": "JSON hier…",
      "outputPlaceholder": "Ergebnis…",
      "emptyInput": "Bitte Text eingeben.",
      "conversionError": "Fehler."
    },
    "sqlFormatter": {
      "settings": "Einstellungen",
      "sqlDialect": "SQL Dialekt",
      "input": "Eingabe",
      "output": "Ausgabe",
      "format": "Formatieren",
      "copy": "Kopieren",
      "clear": "Leeren",
      "inputPlaceholder": "SQL hier…",
      "outputPlaceholder": "Ergebnis…",
      "emptyInput": "SQL eingeben.",
      "formatError": "Fehler."
    }
  },
  "referrals": {
    "us_mobile": {
      "title": "Sparen Sie bei der Telefonrechnung mit US Mobile",
      "description": "Starten Sie Ihre 30 Tage kostenlose Testphase! Unbegrenztes Datenvolumen ab $17.50/Monat, plus individuell anpassbare 5G-Pläne."
    },
    "vultr": {
      "title": "Vultr: High-Performance Cloud weltweit",
      "description": "Deployen Sie SSD VPS, Cloud GPUs und Bare Metal in Sekunden. Wählen Sie aus über 32 Standorten weltweit für maximale Geschwindigkeit."
    }
  },
  "exif_eraser": {
    "title": "EXIF & Metadaten Löscher",
    "description": "Entferne versteckte GPS- und Kameradaten aus Fotos direkt im Browser. Die Fotodateien werden nicht an JW Tool Box hochgeladen; die Website erfasst Nutzungsdaten wie in der Datenschutzerklärung beschrieben.",
    "drag_drop": "Bilder hierhin ziehen",
    "add_more": "Weitere Bilder hinzufügen",
    "no_uploads": "Fotos werden lokal verarbeitet; die Website erfasst Nutzungsdaten wie in der Datenschutzerklärung beschrieben.",
    "photos_selected": "{{count}} Fotos ausgewählt",
    "clear": "Alle löschen",
    "clean_title": "Bereinigen & Herunterladen",
    "clean_desc": "Wir kopieren nur die Pixel und vernichten alle versteckten Metadaten.",
    "export_zip": "Sicheres ZIP Exportieren",
    "processing_btn": "Daten werden bereinigt…",
    "steps": "Der Fotoinhalt bleibt auf deinem Gerät. Informationen zu Website-Nutzungsdaten stehen in der Datenschutzerklärung.",
    "msg_add_photos": "Bitte füge zuerst gültige Bilddateien hinzu.",
    "msg_add_first": "Die Warteschlange ist leer.",
    "msg_processing": "Metadaten werden bereinigt… Bitte warten.",
    "msg_done": "{{count}} Bilder erfolgreich bereinigt!",
    "msg_failed": "Ein Fehler ist aufgetreten."
  },
  "csv_diff": {
    "has_header": "Erste Zeile ist Kopfzeile",
    "compare_by": "Vergleichen nach",
    "entire_row": "Ganze Zeile (Exakte Übereinstimmung)",
    "swap_lists": "Listen tauschen",
    "list_a": "Liste A (Basis)",
    "list_b": "Liste B (Vergleich)",
    "upload_csv": "CSV Hochladen",
    "paste_placeholder": "Fügen Sie hier E-Mails, IDs oder CSV-Daten ein…",
    "paste_placeholder_b": "Fügen Sie hier die zweite Liste zum Vergleichen ein…",
    "op_intersection": "A ∩ B (In Beiden)",
    "op_intersection_desc": "Gleiche Einträge finden",
    "op_a_only": "A - B (Nur in A)",
    "op_a_only_desc": "Entfernt B von A",
    "op_b_only": "B - A (Nur in B)",
    "op_b_only_desc": "Entfernt A von B",
    "op_union": "A ∪ B (Vereinigung)",
    "op_union_desc": "Zusammenführen und deduplizieren",
    "result_title": "Ergebnis",
    "rows_found": "Zeilen gefunden",
    "copied": "Kopiert!",
    "copy": "Kopieren",
    "download": "CSV Herunterladen",
    "result_placeholder": "Das Ergebnis erscheint hier…",
    "clear_a": "Liste A leeren",
    "clear_b": "Liste B leeren"
  },
  "password_strength": {
    "score_0": "Sehr Schwach",
    "score_1": "Schwach",
    "score_2": "Mittel",
    "score_3": "Stark",
    "score_4": "Sehr Stark",
    "input_label": "Passwort zum Testen eingeben",
    "input_placeholder": "p@ssw0rd123…",
    "waiting": "Warte auf Eingabe…",
    "entropy_label": "Entropie",
    "online_attacks": "Online-Angriffe",
    "throttled": "Gedrosselt (100 / Std)",
    "unthrottled": "Ungedrosselt (10 / Sek)",
    "offline_attacks": "Offline-Angriffe",
    "slow_hash": "Langsamer Hash (10k / Sek)",
    "fast_hash": "Schneller Hash (10B / Sek)",
    "need_stronger": "Brauchst du ein stärkeres Passwort?",
    "generator_prompt": "Unser lokaler Passwortgenerator erstellt sofort kryptografisch sichere Passwörter.",
    "go_to_generator": "Passwort-Generator öffnen",
    "show_password": "Passwort anzeigen",
    "hide_password": "Passwort ausblenden"
  },
  "cookie_consent": {
    "message": "Diese Website verwendet Cookies und ähnliche Technologien. Informationen zur Datenverarbeitung und zu verfügbaren Einstellungen finden Sie in der Datenschutzerklärung.",
    "learn_more": "Datenschutzerklärung",
    "accept": "Verstanden"
  },
  "zxcvbn": {
    "use_a_few_words__avoid_common_phrases": "Verwenden Sie ein paar Wörter, vermeiden Sie häufige Phrasen",
    "no_need_for_symbols__digits__or_uppercase_letters": "Keine Notwendigkeit für Symbole, Zahlen oder Großbuchstaben",
    "add_another_word_or_two__uncommon_words_are_better_": "Fügen Sie ein oder zwei Wörter hinzu. Ungewöhnliche Wörter sind besser.",
    "straight_rows_of_keys_are_easy_to_guess": "Gerade Tastenreihen sind leicht zu erraten",
    "short_keyboard_patterns_are_easy_to_guess": "Kurze Tastaturmuster sind leicht zu erraten",
    "use_a_longer_keyboard_pattern_with_more_turns": "Verwenden Sie ein längeres Tastaturmuster mit mehr Richtungswechseln",
    "repeats_like__aaa__are_easy_to_guess": "Wiederholungen wie \"aaa\" sind leicht zu erraten",
    "repeats_like__abcabcabc__are_only_slightly_harder_to_guess_than__abc_": "Wiederholungen wie \"abcabcabc\" sind kaum schwerer zu erraten als \"abc\"",
    "avoid_repeated_words_and_characters": "Vermeiden Sie wiederholte Wörter und Zeichen",
    "sequences_like_abc_or_6543_are_easy_to_guess": "Sequenzen wie abc oder 6543 sind leicht zu erraten",
    "avoid_sequences": "Vermeiden Sie Sequenzen",
    "recent_years_are_easy_to_guess": "Aktuelle Jahreszahlen sind leicht zu erraten",
    "avoid_recent_years": "Vermeiden Sie aktuelle Jahreszahlen",
    "avoid_years_that_are_associated_with_you": "Vermeiden Sie Jahre, die mit Ihnen in Verbindung stehen",
    "dates_are_often_easy_to_guess": "Daten sind oft leicht zu erraten",
    "avoid_dates_and_years_that_are_associated_with_you": "Vermeiden Sie Daten und Jahre, die mit Ihnen in Verbindung stehen",
    "this_is_a_top_10_common_password": "Dies ist ein Top-10-Passwort",
    "this_is_a_top_100_common_password": "Dies ist ein Top-100-Passwort",
    "this_is_a_very_common_password": "Dies ist ein extrem häufiges Passwort",
    "this_is_similar_to_a_commonly_used_password": "Dies ähnelt einem häufig verwendeten Passwort",
    "a_word_by_itself_is_easy_to_guess": "Ein einzelnes Wort ist leicht zu erraten",
    "names_and_surnames_by_themselves_are_easy_to_guess": "Vor- und Nachnamen alleine sind leicht zu erraten",
    "common_names_and_surnames_are_easy_to_guess": "Häufige Vor- und Nachnamen sind leicht zu erraten",
    "capitalization_doesn_t_help_very_much": "Großschreibung hilft nicht viel",
    "all_uppercase_is_almost_as_easy_to_guess_as_all_lowercase": "Alles großgeschrieben ist fast so leicht zu erraten wie alles kleingeschrieben",
    "reversed_words_aren_t_much_harder_to_guess": "Rückwärts geschriebene Wörter sind nicht viel schwerer zu erraten",
    "predictable_substitutions_like_____instead_of__a__don_t_help_very_much": "Vorhersehbare Ersetzungen wie '@' statt 'a' helfen nicht viel"
  },
  "terms_page": {
    "meta_title": "Terms of Service",
    "meta_description": "Read the Terms of Service for using JW Tool Box.",
    "eyebrow": "Terms of Service",
    "title": "Terms of Service",
    "subtitle": "Zuletzt aktualisiert: 30. September 2026",
    "sections": [
      {
        "title": "Acceptance of Terms",
        "body": "By accessing and using JW Tool Box, you agree to be bound by these Terms of Service. If you do not agree to these terms, please do not use the website."
      },
      {
        "title": "Use of Service",
        "body": "JW Tool Box bietet derzeit browserbasierte Tools für private und geschäftliche Zwecke ohne Konto oder Abonnement an. Viele Tools verarbeiten Eingaben im Browser; Website-Analyse, Hosting und Werbung werden in der Datenschutzerklärung beschrieben. Die Website wird durch Werbung finanziert. Sie dürfen den Dienst nicht für rechtswidrige oder unbefugte Zwecke nutzen."
      },
      {
        "title": "Disclaimer",
        "body": "The tools are provided 'as is' without warranty of any kind. We are not responsible for any loss of data or damages resulting from the use of this website."
      },
      {
        "title": "Intellectual Property",
        "body": "The content, design, and code of JW Tool Box are protected by copyright. You may not copy, modify, or distribute the website without permission."
      },
      {
        "title": "Changes to Terms",
        "body": "We reserve the right to modify these terms at any time. Continued use of the website after changes constitutes acceptance of the new terms."
      }
    ]
  },
  "author_page": {
    "eyebrow": "Autorenprofil",
    "credentials": "Qualifikation",
    "coverage": "Themengebiete",
    "read_policy": "Redaktionsrichtlinie lesen",
    "contact_site": "Website kontaktieren",
    "published": "Veröffentlichte Leitfäden",
    "article_count": "Aktuell {{count}} Artikel indexiert",
    "browse_guides": "Alle Leitfäden ansehen"
  },
  "editorial_policy_page": {
    "eyebrow": "Vertrauen und Standards",
    "title": "Redaktionsrichtlinie",
    "intro": "Die JW Tool Box wird als Produkt gepflegt, nicht als Massen-Content-Farm. Diese Seite erklärt, wie wir Tool-Seiten prüfen, wie Leitfäden entstehen, wie Korrekturen behandelt werden und wie wir Finanz- und Gesundheitsinhalte in klaren, belegbaren Grenzen halten.",
    "report_heading": "Ein Problem melden",
    "report_body": "Wenn Sie einen Sachfehler, einen veralteten Ablauf oder eine irreführende Aussage bemerken, melden Sie sich bitte mit der Seiten-URL, dem Verdacht und der Änderung. Wir korrigieren oder nehmen eine schwache Seite lieber aus dem Index, als sie weiter online zu lassen.",
    "contact_site": "Website kontaktieren"
  }
}
