{
  "time": {
    "current_time_label": "Aktuelle Zeit:",
    "input_label": "Eingabe (Unix ms/s oder Datum)",
    "input_placeholder": "1690000000 / 1690000000000 / 2026-04-22T00:00:00Z​",
    "convert": "Konvertieren",
    "copy_output": "Ausgabe kopieren",
    "output": "Ausgabe",
    "err_parse_timestamp": "Zeitstempel konnte nicht geparst werden.",
    "err_parse_date": "Datumszeichenfolge konnte nicht geparst werden.",
    "copied": "Kopiert."
  },
  "json_diff": {
    "intro": "Objektebener Diff, unterstützt von jsondiffpatch (kein einfacher Zeilendiff). Arrays unterstützen Verschiebungserkennung; Delta ist eine Patch-Struktur für Hinzufügen/Entfernen/Aktualisieren von Feldern.",
    "left_json": "Linkes JSON",
    "right_json": "Rechtes JSON",
    "compute": "Diff berechnen",
    "delta_title": "Delta (jsondiffpatch-Format)",
    "no_diff_comment": "// Kein Unterschied (gleiche JSON-Struktur)",
    "parse_failed": "Parsen fehlgeschlagen"
  },
  "ascii": {
    "th_dec": "Dez",
    "th_hex": "Hex​",
    "th_char": "Zeichen",
    "th_note": "Hinweis",
    "note_control": "Steuerzeichen",
    "note_printable": "Druckbar"
  },
  "uuid": {
    "count_label": "Anzahl (1–200)",
    "generate_uuid_v4": "UUID v4 generieren",
    "copy_all": "Alle kopieren",
    "please_generate_first": "Bitte zuerst generieren.",
    "copied_all": "Alle kopiert.",
    "output": "Ausgabe",
    "output_placeholder": "Auf Generieren klicken."
  },
  "ulid": {
    "count_label": "Anzahl (1–100)",
    "generate": "ULID generieren",
    "copy": "Kopieren",
    "placeholder": "26-stellige, zeitsortierbare IDs"
  },
  "nanoid": {
    "length_label": "Länge (4–64)",
    "alphabet_hint": "Benutzerdefiniertes Alphabet (leer = nanoid-URL-sicherer Standard)",
    "generate": "Generieren",
    "copy": "Kopieren"
  },
  "units": {
    "css_title": "CSS: px ↔ rem​",
    "root_px": "Wurzelschriftgröße (px)",
    "check_line": "Prüfung: {px}px ÷ {root} = {rem} rem",
    "storage_title": "Datengröße",
    "iec_toggle": "IEC-Schritte (1024): KiB / MiB / GiB",
    "bytes_label": "Byte-Anzahl (ganzzahlig)"
  },
  "color": {
    "picker": "Farbwähler",
    "css": "CSS​",
    "hex": "HEX​",
    "rgb_title": "RGB (0–255)​",
    "hsl_title": "HSL​",
    "h_label": "H (°)​",
    "s_label": "S (%)​",
    "l_label": "L (%)​",
    "copy_all_formats": "Alle Formate kopieren",
    "copied_line": "HEX-/RGB-/HSL-Zeile kopiert."
  },
  "contrast": {
    "fg": "Vordergrund (Text)",
    "bg": "Hintergrund",
    "large_text_toggle": "Großtext-Schwelle verwenden (≥18pt fett oder ≥24pt normal)",
    "sample_text": "Beispiel Aa 中文 123",
    "invalid_hex": "Verwenden Sie #RRGGBB oder #RGB.",
    "ratio_label": "Kontrast",
    "wcag_prefix": "WCAG 2.1:​"
  },
  "url_parse": {
    "parse": "Parsen",
    "err_invalid": "Ungültige URL",
    "url_object_fields": "Felder des URL-Objekts",
    "search_params": "Abfrage (searchParams)",
    "key": "Schlüssel",
    "value": "Wert",
    "port_default": "(Standard)",
    "page_intro": "Verwendet natives <api>URL</api> und <usp>URLSearchParams</usp>; keine Netzwerkanfragen."
  },
  "punycode": {
    "unicode_label": "Unicode-Domäne / Labels (Zeilen oder punktgetrennt)",
    "to_punycode": "→ Punycode / ASCII​",
    "puny_label": "Punycode (xn--…)​",
    "to_unicode": "→ Unicode​",
    "fail": "Fehlgeschlagen"
  },
  "data_url": {
    "drop_label": "Datei → Data-URL",
    "drop_title": "Datei auswählen oder ablegen",
    "drop_desc": "Verwendet FileReader.readAsDataURL; nicht hochgeladen.",
    "data_url": "Data-URL",
    "copy": "Kopieren",
    "decode_download": "Dekodieren & herunterladen",
    "err_format": "Erwartet data:[mime][;base64],payload",
    "decode_failed": "Dekodieren fehlgeschlagen"
  },
  "mime_sniff": {
    "drop_label": "Datei-Header lesen",
    "drop_title": "Datei auswählen oder ablegen",
    "drop_desc": "Liest die ersten 64 Byte zur Magic-Erkennung; nicht hochgeladen.",
    "guess_type": "Vermuteter Typ",
    "first_64_hex": "Erste 64 Byte (hex)"
  },
  "mime_types": {
    "search_ph": "Endung oder MIME suchen…",
    "col_ext": "Endung",
    "col_mime": "MIME​",
    "col_note": "Hinweis"
  },
  "html_format": {
    "format": "Format​",
    "minify_simple": "Einfache Minimierung (Leerraum in Kommentaren entfernen)",
    "output": "Ausgabe",
    "copy": "Kopieren",
    "fail": "Fehlgeschlagen"
  },
  "svg_format": {
    "source": "SVG-Quelle",
    "validate_indent": "Validieren & einrücken",
    "xml_parse_err": "XML-Parsingfehler; Tags überprüfen.",
    "fail": "Fehlgeschlagen"
  },
  "markdown": {
    "render_failed": "Rendern fehlgeschlagen",
    "label": "Markdown-Quelle",
    "export_html": "HTML exportieren",
    "copy_md": "Markdown kopieren",
    "preview": "Live-Vorschau"
  },
  "http_codes": {
    "search_ph": "Code, Namen oder Beschreibung suchen…",
    "col_code": "Code​",
    "col_name": "Name​",
    "col_desc": "Beschreibung"
  },
  "ua_parse": {
    "fill_ua": "Diese Geräte-UA ausfüllen",
    "hint": "Einfaches Regex-Parsing, keine vollständige Gerätedatenbank; Crawler/WebViews werden ggf. als „Sonstige“ angezeigt.",
    "browser": "Browser​",
    "engine": "Engine (grob)",
    "os": "Betriebssystem",
    "mobile": "Mobil",
    "yes": "Ja",
    "no": "Nein"
  },
  "keycode": {
    "instructions": "Bereich unten anklicken und dann Tasten drücken (einige Tastenkürzel werden vom Browser blockiert).",
    "capture_aria": "Tastenerfassungsbereich",
    "focus_hint": "Hier fokussieren und dann Tasten drücken…",
    "which_keycode": "which / keyCode (veraltet)",
    "modifiers": "Umschalt-/Modifikationstasten"
  },
  "yaml_json": {
    "warning": "js-yaml führt Tag-Parsing aus; keine großen, nicht vertrauenswürdigen YAML einfügen. Nur lokal.",
    "yaml_to_json": "YAML → JSON​",
    "json_to_yaml": "JSON → YAML​",
    "parse_failed": "Parsen fehlgeschlagen"
  },
  "toml_json": {
    "warning": "TOML-Datumstypen werden auf JSON-freundliche Formen abgebildet; keine großen, nicht vertrauenswürdigen Konfigurationen einfügen.",
    "toml_to_json": "TOML → JSON​",
    "json_to_toml": "JSON → TOML​",
    "parse_failed": "Parsen fehlgeschlagen"
  },
  "json_csv": {
    "json_label": "JSON (Array aus Objekten)",
    "csv_label": "CSV (Kopfzeile)",
    "json_to_csv": "JSON → CSV​",
    "csv_to_json": "CSV → JSON​",
    "need_object_array": "JSON muss ein Array aus Objekten sein.",
    "parse_failed": "Parsen fehlgeschlagen"
  },
  "jsonpath": {
    "expr_label": "JSONPath-Ausdruck",
    "hint": "Unterstützt von jsonpath-plus (teilweise jq-ähnlich).",
    "query": "Abfrage",
    "result_array": "Ergebnis (Array)",
    "fail": "Fehlgeschlagen"
  },
  "json_to_ts": {
    "root_name": "Name des Root-Interface",
    "generate": "Typen generieren",
    "typescript": "TypeScript​",
    "fail": "Fehlgeschlagen"
  },
  "jmespath": {
    "expr_label": "JMESPath-Ausdruck",
    "hint": "Gleiches JMESPath wie AWS CLI / einige SDKs; JSON-Literale in Backticks einschließen, z. B.",
    "query": "Abfrage",
    "result": "Ergebnis",
    "fail": "Fehlgeschlagen"
  },
  "sql_format": {
    "dialect": "Dialekt",
    "dialect_sql": "Standard-SQL",
    "beautify": "Schöner formatieren",
    "compress": "Komprimieren",
    "output": "Ausgabe",
    "format_failed": "Formatieren fehlgeschlagen"
  },
  "gitignore": {
    "templates": "Vorlagen",
    "merge": "Zusammenführen",
    "placeholder": "Zusammengeführte .gitignore",
    "copy": "Kopieren"
  },
  "compress": {
    "warn": "Verwendet CompressionStream; Brotli hängt vom Browser ab. Ausgabe sind Base64-Byte.",
    "algo": "Algorithmus",
    "mode_compress": "Komprimieren",
    "mode_decompress": "Dekomprimieren",
    "utf8_text": "UTF-8-Text",
    "run_text_compress": "Text komprimieren",
    "run_text_decompress": "Dekomprimieren (erwartet UTF-8-Text)",
    "file_label": "Oder Datei (Rohbyte)",
    "file_title": "Datei auswählen",
    "file_desc": "Binär komprimieren / dekomprimieren.",
    "b64_label": "Base64-Ergebnis / -Eingabe",
    "copy_b64": "Base64 kopieren",
    "from_b64_compress": "Von Base64 → komprimieren",
    "from_b64_decompress": "Von Base64 → dekomprimieren",
    "unsupported_algo": "Dieser Algorithmus wird nicht unterstützt; versuchen Sie Chrome/Edge oder gzip/deflate.",
    "done_bytes": "Fertig ({n} Byte)",
    "fail": "Fehlgeschlagen",
    "b64_invalid": "Ungültiges Base64"
  },
  "cron": {
    "label": "Cron (min Stunde Tag Monat Wochentag)",
    "hint": "Lesbarer Text über cronstrue; komplexe Ausdrücke folgen der Bibliothek.",
    "natural_language": "Natürliche Sprache",
    "cannot_parse": "Dieser Ausdruck konnte nicht geparst werden."
  },
  "chmod": {
    "oct_label": "Oktal (z. B. 644, 755)",
    "to_rwx": "→ rwx​",
    "rwx_label": "rwxrwxrwx​",
    "to_octal": "→ oktal",
    "err_oct_range": "Oktal muss 0–777 sein.",
    "err_rwx": "rwx muss aus 9 Zeichen r w x - bestehen (setuid vereinfacht)."
  },
  "cidr": {
    "label": "IPv4 / CIDR​",
    "calc": "Berechnen",
    "err": "Fehler",
    "network": "Netzwerk",
    "broadcast": "Rundruf",
    "mask": "Subnetzmaske",
    "first_host": "Erster Host",
    "last_host": "Letzter Host",
    "total_addrs": "Gesamte Adressen",
    "usable_hosts": "Nutzbare Hosts (/31,/32 vereinfacht)"
  },
  "ipv6": {
    "label": "IPv6-Adresse oder CIDR",
    "parse": "Parsen",
    "err": "Fehler",
    "correct_form": "Normalisiert (correctForm)",
    "canonical_form": "Vollständige Expansion (canonicalForm)",
    "prefix_len": "Präfixlänge",
    "subnet_start": "Subnetz-Beginn",
    "subnet_end": "Subnetz-Ende",
    "addr_count": "Adressanzahl"
  },
  "ieee754": {
    "label": "Zahl (dezimal)",
    "need_finite": "Geben Sie eine endliche Zahl ein.",
    "float64": "Float64​",
    "float32": "Float32​",
    "hex_be": "Hex (Big-Endian)",
    "detail_64": "Vorzeichen {sign} · Exponent {exp} (Bias 1023) · Mantisse {frac}",
    "detail_32": "Vorzeichen {sign} · Exponent {exp} (Bias 127) · Mantisse {frac}"
  },
  "num_base": {
    "from_radix": "Quellbasis (2–36)",
    "digits": "Ziffern",
    "convert": "Konvertieren",
    "common_bases": "Häufige Basen",
    "parse_err": "Ganzzahl für diese Basis konnte nicht geparst werden."
  },
  "iban": {
    "label": "IBAN (Leerzeichen erlaubt)",
    "check": "Mod-97-Prüfung",
    "ok": "Prüfsumme OK (mod 97 = 1). Normalisiert: {n}",
    "bad": "Prüfsumme fehlgeschlagen (Rest {r}). Normalisiert: {n}"
  },
  "luhn": {
    "label": "Ziffern (Leerzeichen erlaubt)",
    "check": "Luhn-Prüfung",
    "pass": "Bestehet Luhn (mod 10)",
    "fail": "Fehlgeschlagen"
  },
  "phone": {
    "default_country": "Standardland (ISO 3166-1 alpha-2; ohne + verwendet)",
    "number": "Telefonnummer",
    "parse": "Parsen",
    "unparsed": "Konnte nicht geparst werden (versuchen Sie, das Standardland zu ändern).",
    "err": "Fehler",
    "line_e164": "E.164: {v}​",
    "line_intl": "International: {v}​",
    "line_nat": "National: {v}​",
    "line_country": "Land: {c} (Standard {d})",
    "line_type": "Typ: {v}",
    "line_valid": "Gültig: {v}",
    "yes": "Ja",
    "no": "Nein",
    "dash": "—​"
  },
  "letter_codes": {
    "input": "Eingabe (A–Z, 0–9; / für Leerzeichen in Morse verwenden)",
    "nato": "NATO-Alphabet",
    "morse": "Morsecode",
    "braille": "Braille (A–Z, Ziffern)"
  },
  "barcode": {
    "format": "Format​",
    "content": "Inhalt (gültige Länge/Zeichensatz je Symbologie)",
    "download_png": "PNG herunterladen",
    "cannot_generate": "Konnte nicht generiert werden"
  },
  "video_common": {
    "intro": "Der ffmpeg-Core (~30 MB) wird geladen, nachdem Sie eine Mediendatei ausgewählt haben. Die Verarbeitung erfolgt in Ihrem Browser; es wird nichts hochgeladen. Empfohlene Maximalgröße {mb} MB pro Datei.",
    "core_loading": "Videoprozessor wird geladen…",
    "core_reload": "Komponente neu laden",
    "load_btn_loading": "Wird geladen…",
    "load_btn_ready": "Core bereit",
    "load_btn_idle": "ffmpeg-Core laden",
    "media_file": "Video- oder Audiodatei",
    "no_file": "Keine Datei ausgewählt.",
    "converting": "Wird verarbeitet…",
    "download": "Herunterladen: {name}",
    "log": "Protokoll",
    "load_failed": "ffmpeg-Core konnte nicht geladen werden. Prüfen Sie Ihr Netzwerk und versuchen Sie es erneut.",
    "load_failed_wasm": "ffmpeg-core.wasm (~32 MB) wurde nicht geladen. Deaktivieren Sie ggf. Proxy/VPN oder wechseln Sie das Netzwerk.",
    "ffmpeg_exit": "ffmpeg wurde mit Code {c} beendet. Versuchen Sie ein anderes Ausgabeformat oder zuerst Video komprimieren.",
    "convert_failed": "Verarbeitung fehlgeschlagen",
    "progress": "Etwa {n} %",
    "err_file_too_large": "Datei überschreitet das Limit von {mb} MB. Zuerst zuschneiden oder komprimieren."
  },
  "video_convert": {
    "page_intro": "Konvertierung zwischen MP4, WebM, MKV, GIF, M4A, WAV und mehr. Einige Codecs sind in wasm eingeschränkt; versuchen Sie eine andere Ausgabe oder zuerst Video komprimieren.",
    "out_ext": "Ausgabeformat",
    "convert_go": "Konvertierung starten"
  },
  "video_to_mp4": {
    "page_intro": "Nach MP4 exportieren (H.264/AAC von ffmpeg gewählt). Am besten zum Teilen und für mobile Wiedergabe. Falls fehlgeschlagen, zuerst Video komprimieren zum Neu-kodieren versuchen."
  },
  "video_mov_to_mp4": {
    "page_intro": "Konvertierung von QuickTime / iPhone-MOV zu MP4. Auch andere Videoeingaben werden akzeptiert; Ausgabe ist immer MP4."
  },
  "video_mkv_to_mp4": {
    "page_intro": "Konvertierung von Matroska (.mkv) zu MP4 für Player, die MKV nicht unterstützen. Ausgabe ist immer MP4."
  },
  "video_webm_to_mp4": {
    "page_intro": "Konvertierung von WebM-Bildschirmaufnahmen oder -Downloads zu MP4. Ausgabe ist immer MP4."
  },
  "video_avi_to_mp4": {
    "page_intro": "Konvertierung von veraltetem AVI zu MP4. Ausgabe ist immer MP4; sehr alte Codecs benötigen ggf. zuerst Komprimierung/Neu-Kodierung."
  },
  "video_to_webm": {
    "page_intro": "Nach WebM exportieren (VP8/VP9 + Opus/Vorbis). Gut für Web-Einbettungen; Wiedergabeunterstützung variiert je nach Gerät."
  },
  "video_to_mkv": {
    "page_intro": "MKV-Container exportieren. Nützlich für Archivierung; MP4 ist meist besser zum Teilen."
  },
  "video_trim": {
    "page_intro": "Zuschneiden nach Start-/Endzeit in Sekunden. Schnell = Stream-Kopie (rasch, an Keyframes ausgerichtet); Präzise = Neu-Kodierung (langsamer, genauere Schnitte).",
    "duration_label": "Dauer ≈ {sec} s",
    "start_sec": "Start (s)​",
    "end_sec": "Ende (s)",
    "mode_label": "Modus",
    "mode_copy": "Schnell (Stream-Kopie)",
    "mode_encode": "Präzise (Neu-Kodierung)",
    "trim_go": "Zuschneiden & herunterladen"
  },
  "video_compress": {
    "page_intro": "Dateigröße verringern durch niedrigere Auflösung und höhere CRF (höher = kleiner, geringere Qualität; typisch 23–32).",
    "height_label": "Maximale Höhe",
    "height_option": "{h}p​",
    "crf_label": "CRF (jetzt {crf})",
    "crf_hint": "Höhere CRF = stärkere Komprimierung.",
    "compress_go": "Komprimieren & herunterladen"
  },
  "video_to_gif": {
    "page_intro": "Video zu GIF konvertieren. Höhere FPS/Breite = größere Dateien und langsamere Durchläufe.",
    "fps_label": "FPS​",
    "width_label": "Breite (px)",
    "convert_go": "GIF erstellen"
  },
  "video_extract_audio": {
    "page_intro": "Tonspur aus Video entfernen. M4A ist kleiner; WAV ist unkomprimiert.",
    "format_label": "Ausgabeformat",
    "format_m4a": "M4A (AAC)​",
    "format_wav": "WAV (PCM)​",
    "format_hint": "MP3-Kodierung ist in wasm ggf. nicht verfügbar; bevorzugen Sie M4A.",
    "extract_go": "Audio extrahieren"
  },
  "x509_view": {
    "intro": "PEM (mit BEGIN/END) oder DER-Base64 einfügen; SHA-256-Fingerabdruck über Web Crypto, nur lokal.",
    "cert": "Zertifikat",
    "parse": "Parsen",
    "parsing": "Wird geparst…",
    "fingerprint": "SHA-256-Fingerabdruck (hex)",
    "structured": "Strukturierte Informationen",
    "parse_failed": "Parsen fehlgeschlagen"
  },
  "jwt": {
    "warning": "Dekodiert nur Base64URL und formatiert JSON. <strong>Signatur wird nicht verifiziert</strong> — nicht für Authentifizierungsentscheidungen. Fügen Sie keine sensiblen Token in nicht vertrauenswürdige Umgebungen ein.",
    "input_label": "JWT-Zeichenfolge",
    "decode": "Dekodieren",
    "err_empty": "Geben Sie ein JWT ein.",
    "err_parts": "Es wird mindestens header.payload benötigt.",
    "err_header_json": "Header ist kein gültiges JSON.",
    "err_payload_json": "Payload ist kein gültiges JSON."
  },
  "base64": {
    "text_label": "Text​",
    "text_to_base64": "Text → Base64​",
    "base64_to_text": "Base64 → Text​",
    "base64_field": "Base64​",
    "base64_from_file": "Base64 aus Datei",
    "select_or_drop_file": "Datei auswählen oder ablegen",
    "base64_from_file_desc": "Rohbyte kodiert; nicht hochgeladen.",
    "url_safe": "URL-sicher (Base64URL)",
    "data_url": "Als Data-URL ausgeben",
    "encoded_file": "Kodiert: {name}",
    "copy": "Kopieren",
    "copied": "Kopiert.",
    "base64_to_download": "Zum Herunterladen dekodieren",
    "decode_failed": "Dekodieren fehlgeschlagen"
  },
  "base32": {
    "original_utf8": "Original (UTF-8)​",
    "text_to_base32": "Text → Base32​",
    "base32_to_text": "Base32 → Text​",
    "base32_rfc4648": "Base32 (RFC 4648, ohne Padding)",
    "copy": "Kopieren",
    "copied_base32": "Base32 kopiert.",
    "decode_failed": "Dekodieren fehlgeschlagen"
  },
  "base58": {
    "text_utf8": "Text (UTF-8)​",
    "text_to_base58": "Text → Base58​",
    "base58_to_text": "Base58 → Text​",
    "base58_field": "Base58​",
    "decode_failed": "Dekodieren fehlgeschlagen"
  },
  "url_encode": {
    "input": "Eingabe",
    "output": "Ausgabe",
    "encode": "Kodieren",
    "decode": "Dekodieren",
    "copy_output": "Ausgabe kopieren",
    "copied": "Kopiert.",
    "decode_failed": "Dekodieren fehlgeschlagen"
  },
  "hex": {
    "text_utf8": "Text (UTF-8)​",
    "text_to_hex": "Text → Hex​",
    "hex_to_text": "Hex → Text​",
    "hex_field": "Hex (Leerzeichen, Zeilenumbrüche und 0x werden beim Dekodieren entfernt)",
    "copy": "Kopieren",
    "copied_hex": "Hex kopiert.",
    "err_hex_odd_length": "Hex-Länge muss gerade sein (Leerraum und 0x werden ignoriert).",
    "err_utf8_decode": "Konnte nicht als UTF-8 dekodiert werden"
  },
  "escape": {
    "mode": "Modus",
    "html_entity_mode": "HTML-Entities",
    "json_string_mode": "JSON-Zeichenfolge escaped",
    "input": "Eingabe",
    "encode_or_escape": "Kodieren / escapen",
    "decode_or_restore": "Dekodieren / wiederherstellen",
    "json_decode_not_string": "JSON-Wert ist keine Zeichenfolge.",
    "decode_failed": "Dekodieren fehlgeschlagen",
    "output": "Ausgabe",
    "copied_output": "Ausgabe kopiert.",
    "copy_output": "Ausgabe kopieren",
    "failed": "Fehlgeschlagen",
    "page_intro": "Wie gängige Escape-/Entity-Tools: HTML verwendet zentrale Zeichenentitäten; JSON-Modus escaped Zeichenfolgen, die von <jp>JSON.parse</jp> geparst werden können."
  },
  "hash": {
    "select_file": "Datei auswählen",
    "select_or_drop_file": "Datei auswählen oder ablegen",
    "hash_local_desc": "Digest lokal berechnet; nicht hochgeladen.",
    "please_select_file": "Bitte zuerst eine Datei auswählen.",
    "computing": "Wird berechnet…",
    "compute_digest": "Digest berechnen",
    "copy": "Kopieren",
    "computed_file": "Berechnet: {name} ({size} Byte)",
    "compute_failed": "Berechnung fehlgeschlagen",
    "md5_label": "MD5​",
    "sha256_label": "SHA-256​",
    "dash": "—​"
  },
  "hmac": {
    "hash_algorithm": "Hash-Algorithmus",
    "secret_key": "Geheimer Schlüssel",
    "message": "Nachricht",
    "compute_hmac_hex": "HMAC berechnen (hex)",
    "output": "Ausgabe",
    "copy": "Kopieren",
    "failed": "Fehlgeschlagen",
    "dash": "—​"
  },
  "aes": {
    "aes_pbkdf2_note": "AES-256-GCM: zufälliges Salt + PBKDF2 ({iter} Iterationen, SHA-256) leitet den Schlüssel nur in Ihrem Browser ab.",
    "passphrase": "Kennwortsatz",
    "plaintext": "Klartext",
    "encrypt": "Verschlüsseln",
    "decrypt": "Entschlüsseln",
    "processing": "Wird verarbeitet…",
    "please_input_passphrase": "Bitte Passphrase eingeben.",
    "encrypt_success": "Verschlüsselt.",
    "encrypt_failed": "Verschlüsselung fehlgeschlagen",
    "cipher_base64": "Geheimtext (Base64: Salt ∥ IV ∥ Daten)",
    "cipher_too_short": "Geheimtext ist zu kurz oder beschädigt.",
    "decrypt_success": "Entschlüsselt.",
    "decrypt_failed_bad_key": "Entschlüsselung fehlgeschlagen (falsche Passphrase oder fehlerhafte Daten).",
    "copied_cipher": "Geheimtext kopiert.",
    "copy_cipher": "Geheimtext kopieren"
  },
  "password": {
    "select_charset": "Wählen Sie mindestens einen Zeichensatz.",
    "length_4_to_256": "Länge (4–256)",
    "upper_az": "Großbuchstaben A–Z",
    "lower_az": "Kleinbuchstaben a–z",
    "digits": "Ziffern",
    "symbols": "Symbole",
    "generate": "Generieren",
    "copy": "Kopieren",
    "copied": "Kopiert.",
    "result": "Ergebnis",
    "placeholder_click_generate": "Auf Generieren klicken",
    "footnote": "Verwendet crypto.getRandomValues; der Symbolsatz ist eine kleine, tastaturfreundliche Teilmenge — Kontrollkästchen bei Bedarf anpassen."
  },
  "crc32": {
    "text_utf8": "Text (UTF-8)​",
    "compute_crc32": "CRC32 berechnen",
    "label_from_file": "Oder aus Datei",
    "title_drop": "Datei auswählen oder ablegen",
    "desc_local": "IEEE CRC-32 über Rohbyte; nicht hochgeladen.",
    "crc32_title": "CRC32​",
    "label_current_text": "aktueller Text",
    "copy_hex": "Hex kopieren",
    "copied_hex_value": "Hex-Wert kopiert.",
    "msg_computed": "Berechnet: {label} ({bytes} Byte)",
    "read_failed": "Lesen fehlgeschlagen",
    "decode_failed": "Fehlgeschlagen",
    "dash": "—​"
  },
  "xor": {
    "warning": "XOR ist symmetrisch und bietet keine Authentifizierung — nicht für echte Geheimhaltung verwenden; geeignet für CTFs, Demos oder leichte Verschleierung.",
    "encrypt_section": "Verschlüsseln",
    "decrypt_section": "Entschlüsseln",
    "plaintext_utf8": "Klartext (UTF-8)",
    "key_utf8_cyclic": "Schlüssel (UTF-8, wiederholt)",
    "output_format": "Ausgabeformat",
    "opt_hex": "Hex​",
    "opt_b64": "Base64​",
    "xor_to_cipher": "XOR → Geheimtext",
    "cipher_label": "Geheimtext",
    "cipher_input_label": "Geheimtext ({mode})",
    "xor_to_plain": "XOR → Klartext",
    "plaintext_result": "Klartext",
    "err_key_empty": "Schlüssel darf nicht leer sein",
    "err_hex_odd": "Hex-Länge muss gerade sein",
    "failed": "Fehlgeschlagen"
  },
  "vigenere": {
    "intro": "Vigenère: Nur A–Z / a–z werden transformiert; andere Zeichen bleiben erhalten. Nicht-Buchstaben im Schlüssel werden ignoriert.",
    "text": "Text​",
    "key_english": "Schlüssel (Buchstaben)",
    "encrypt": "Verschlüsseln",
    "decrypt": "Entschlüsseln",
    "result": "Ergebnis",
    "err_key_letters": "Schlüssel muss mindestens einen A–Z-Buchstaben enthalten",
    "error_generic": "Fehler"
  },
  "rsa": {
    "intro": "Verwendet das <link>Web Crypto</link> des Browsers für RSA-OAEP; nur für kurze Nachrichten oder zum Umschließen symmetrischer Schlüssel. Benötigt einen sicheren Kontext (HTTPS oder localhost).",
    "generate_keypair": "Schlüsselpaar generieren",
    "pub_pem": "Öffentlicher Schlüssel (SPKI-PEM)",
    "priv_pem": "Privater Schlüssel (PKCS#8-PEM)",
    "encrypt_section": "Verschlüsseln",
    "plaintext_utf8": "Klartext (UTF-8)",
    "encrypt_public": "Mit öffentlichem Schlüssel verschlüsseln",
    "cipher_section": "Geheimtext & entschlüsseln",
    "cipher_b64": "Geheimtext (Base64)",
    "decrypt_private": "Mit privatem Schlüssel entschlüsseln",
    "decrypted": "Entschlüsselt",
    "msg_generated": "2048-Bit RSA-OAEP (SHA-256) generiert; privater Schlüssel verbleibt nur im Speicher — nicht teilen.",
    "msg_generate_fail": "Generierung fehlgeschlagen (einige Umgebungen benötigen einen sicheren Kontext: HTTPS oder localhost).",
    "err_need_public_pem": "Zuerst Schlüsselpaar generieren oder öffentlichen PEM-Schlüssel einfügen.",
    "err_plain_too_long": "Klartext zu lang: RSA-OAEP (2048 / SHA-256) liegt meist unter etwa {max} Byte; aktuell {current}. Verwenden Sie symmetrische Kryptographie (z. B. AES-256-GCM) zum Umschließen von Schlüsseln.",
    "encrypt_failed": "Verschlüsselung fehlgeschlagen",
    "err_need_private_pem": "Zuerst Schlüsselpaar generieren oder privaten PEM-Schlüssel einfügen.",
    "decrypt_failed": "Entschlüsselung fehlgeschlagen",
    "err_pem_parse": "PEM konnte nicht geparst werden; BEGIN/END-Blöcke prüfen."
  },
  "qr_generate": {
    "content_label": "Inhalt (Text / URL / Wi‑Fi)",
    "size_px": "Größe (px)",
    "margin": "Rand",
    "foreground": "Vordergrund",
    "background": "Hintergrund",
    "generate_preview": "Vorschau generieren",
    "busy": "Wird generiert…",
    "download_png": "PNG herunterladen",
    "preview": "Vorschau",
    "qr_alt": "QR-Code",
    "err_empty": "Inhalt darf nicht leer sein",
    "err_generate": "Generierung fehlgeschlagen",
    "error_correction": "Fehlerkorrektur",
    "low_contrast": "Kontrast zwischen Vorder- und Hintergrund ist gering; einige Scanner erkennen den Code ggf. nicht.",
    "live_preview": "Live-Vorschau",
    "templates": "Vorlagen",
    "template_url": "URL​",
    "template_wifi": "WLAN",
    "template_email": "E-Mail",
    "template_tel": "Telefon",
    "scan_hint": "Aktuelle Nutzlast: {length} Zeichen. Kürzere Inhalte werden zuverlässiger gescannt."
  },
  "qr_decode": {
    "drop_label": "Bild mit QR-Code",
    "drop_title": "PNG / JPG auswählen oder ablegen …",
    "drop_desc": "Lokal mit jsQR dekodiert; nicht hochgeladen.",
    "empty_hint": "Noch kein Bild ausgewählt.",
    "parse_result": "Ergebnis",
    "copy": "Kopieren",
    "err_canvas": "Canvas nicht verfügbar",
    "err_not_found": "Kein QR gefunden (versuchen Sie ein klareres, kontrastreicheres Bild).",
    "err_decode": "Dekodieren fehlgeschlagen",
    "err_load_image": "Bild konnte nicht geladen werden",
    "dash": "—​"
  },
  "text_case": {
    "mode_label": "Umwandeln",
    "mode_upper": "GROSSBUCHSTABEN",
    "mode_lower": "kleinschreibung",
    "mode_title": "Wortanfang groß (Wörter)",
    "mode_sentence": "Satzanfang groß (heuristisch)",
    "mode_camel": "camelCase​",
    "mode_constant": "CONSTANT_CASE​",
    "mode_kebab": "kebab-case​",
    "mode_snake": "snake_case​",
    "source": "Quelle",
    "result": "Ergebnis",
    "copy_result": "Ergebnis kopieren",
    "placeholder_source": "Einfügen oder tippen …"
  },
  "text_lines": {
    "sort_asc": "Zeilen sortieren (↑)",
    "sort_desc": "Zeilen sortieren (↓)",
    "dedupe": "Duplikate entfernen",
    "remove_empty": "Leere Zeilen entfernen",
    "trim_lines": "Jede Zeile beschneiden",
    "reverse": "Zeilenreihenfolge umkehren",
    "input": "Eingabe",
    "result": "Ergebnis",
    "copy_result": "Ergebnis kopieren",
    "placeholder_input": "Ein Eintrag pro Zeile oder eine Liste einfügen …",
    "placeholder_result": "Verwenden Sie die Schaltflächen oben …"
  },
  "text_stats": {
    "label": "Text​",
    "placeholder": "Inhalt einfügen; Statistiken werden live aktualisiert …",
    "lines": "Zeilen",
    "chars_code_units": "Zeichen (Code-Einheiten)",
    "chars_no_ws": "Zeichen (ohne Leerraum)",
    "words_ws": "Wörter (nach Leerraum getrennt)",
    "graphemes": "Graphem-Cluster (Intl, ca. „Zeichen“)",
    "bytes_utf8": "UTF-8-Byte",
    "footnote": "„Wörter“ werden an Leerzeichen getrennt; bei CJK usw. Grapheme bevorzugen. Alle Statistiken laufen lokal."
  },
  "text_replace": {
    "find": "Suchen",
    "replace_with": "Ersetzen durch",
    "use_regex": "Regulären Ausdruck verwenden",
    "flags": "Flags​",
    "source": "Quelle",
    "result": "Ergebnis",
    "copy": "Kopieren",
    "footnote": "Wörtlicher Modus ersetzt alle Treffer global; Regex-Modus folgt String.replace — auf Escaping und Flags achten (üblich: g, i, m)."
  },
  "text_split_join": {
    "delimiter": "Trennzeichen",
    "placeholder_delimiter": "z. B. , oder | oder benutzerdefiniert",
    "split_lines": "Teilen → ein Eintrag pro Zeile",
    "join_lines": "Verbinden ← Zeilen mit Trennzeichen",
    "copy_result": "Ergebnis kopieren",
    "help": "Teilen: Text am Trennzeichen in Zeilen schneiden. Verbinden: Eingabe zeilenweise lesen und Trennzeichen zwischen Zeilen einfügen.",
    "placeholder_input": "Teilen: eine komma-getrennte Zeile einfügen; Verbinden: ein Eintrag pro Zeile …",
    "placeholder_output": "Auf Teilen oder Verbinden klicken …",
    "input": "Eingabe",
    "output": "Ausgabe"
  },
  "text_regex": {
    "warn_truncated": "Nur die ersten {max} Zeichen werden abgeglichen und hervorgehoben.",
    "pattern": "Muster",
    "flags": "Flags​",
    "flags_ph": "gimsuy​",
    "invalid": "Ungültiger regulärer Ausdruck",
    "text": "Text​",
    "match_count": "{count} Treffer",
    "list_omitted": "… weitere Treffer ausgelassen"
  },
  "text_diff": {
    "text_a": "Text A​",
    "text_b": "Text B​",
    "line_diff": "Zeilendiff"
  },
  "text_lorem": {
    "paragraphs": "Absätze (1–50)",
    "generate": "Generieren",
    "copy": "Kopieren",
    "placeholder": "Auf Generieren klicken"
  },
  "text_rot13": {
    "label": "Text (A–Z rotiert 13; erneut ausführen zum Rückgängig machen)",
    "action": "ROT13​"
  },
  "text_strip_html": {
    "warning": "Verwendet DOMParser für Textknoten; Skripte werden nicht ausgeführt — trotzdem das Einfügen riesiger, nicht vertrauenswürdiger HTML vermeiden.",
    "html": "HTML​",
    "plain": "Einfacher Text",
    "extract": "Einfachen Text extrahieren",
    "placeholder_out": "Verwenden Sie die Schaltfläche links"
  },
  "text_slug": {
    "input": "Eingabe",
    "generate": "Slug generieren",
    "hint": "Diakritika entfernen, a–z und 0–9 behalten, Leerzeichen/Symbole in Bindestriche wandeln (URL-Slug-Hilfe, keine vollständige SEO).",
    "result": "Ergebnis",
    "copy": "Kopieren",
    "dash": "—​"
  },
  "text_indent": {
    "text": "Text​",
    "use_tab": "Mit Tab einrücken",
    "spaces_per_level": "Leerzeichen pro Ebene",
    "dedent_times": "Ausrückungsdurchläufe",
    "indent_once": "Gesamten Block einrücken",
    "dedent_tab": "Bis zu {n} führende(s) Tab(s) pro Zeile entfernen",
    "dedent_space": "Bis zu {n} führende(s) Leerzeichen pro Zeile entfernen",
    "skip_blank": "Leere Zeilen überspringen",
    "copy": "Ergebnis kopieren",
    "example": "Beispiel",
    "clear": "Leeren",
    "copied": "In die Zwischenablage kopiert."
  },
  "text_sort_lines": {
    "label": "Zeilen sortieren",
    "desc": "Absteigend",
    "natural": "Natürliche Sortierung (numerisch)",
    "trim_end": "Zeilenende vor dem Sortieren beschneiden",
    "sort": "Sortieren",
    "page_intro": "Ergänzt das Sortieren bei der Zeilenbereinigung: aufsteigend/absteigend umschalten und <lc>localeCompare</lc>-freundlichen Numerik-Modus aktivieren — ideal für Versionsnummern und Dateilisten."
  },
  "text_line_numbers": {
    "text": "Text​",
    "start": "Startnummer",
    "pad_width": "Minimale Breite",
    "separator": "Trennzeichen",
    "add": "Zeilennummern hinzufügen",
    "strip": "Einfaches „Nummer | “-Präfix entfernen",
    "footnote": "Entfernen verwendet einen einfachen Regex für führende Ziffern und „|“; bei komplexen Fällen manuell bearbeiten."
  },
  "text_wrap": {
    "note": "Breite zählt UTF-16-Code-Einheiten — keine Terminal-Spalten oder volle CJK-Breite; Hard-Break für lange, ununterbrochene Zeilen aktivieren.",
    "text": "Text​",
    "max_width": "Maximale Zeichen pro Zeile",
    "break_long": "Lange Zeilen ohne Leerzeichen hart umbrechen",
    "rewrap": "Vor Ort neu umbrechen"
  },
  "csv_markdown": {
    "csv_to_md": "CSV → Markdown​",
    "to_markdown": "Zur Markdown-Tabelle",
    "md_to_csv": "Markdown-Tabelle → CSV",
    "to_csv": "Zu CSV",
    "failed": "Fehlgeschlagen"
  },
  "fullwidth": {
    "source": "Text​",
    "to_full": "Zu voller Breite",
    "to_half": "Zu halber Breite",
    "footnote": "Deckt druckbares ASCII und Leerzeichen ab; CJK usw. unverändert."
  },
  "rmb_daxie": {
    "convert": "Konvertieren",
    "placeholder": "1234.56​",
    "error": "Fehler"
  },
  "ics": {
    "raw_label": "iCalendar-Text",
    "parse": "Parsen",
    "no_events": "Kein VEVENT geparst",
    "parse_failed": "Parsen fehlgeschlagen",
    "no_title": "(Kein Titel)",
    "start": "Start​",
    "end": "Ende",
    "location": "Ort",
    "dash": "—​"
  },
  "vcard": {
    "raw_label": "vCard-Text",
    "th_field": "Feld",
    "th_value": "Wert",
    "empty": "Keine gültigen Zeilen"
  },
  "email_headers": {
    "raw_label": "Roh-Header (bis zur ersten leeren Zeile)",
    "th_name": "Name​",
    "th_value": "Wert",
    "empty": "Nichts geparst"
  },
  "docmind": {
    "privacy_title": "Hinweis zur Cloud-Konvertierung",
    "privacy_body": "Dateien werden über den Konverter dieser Seite an Alibaba Cloud Document Mind (Festlandchina) gesendet. Laden Sie keine sensiblen personenbezogenen Daten hoch. Download-Links von Alibaba sind typischerweise etwa 24 Stunden gültig.",
    "err_no_file": "Zuerst eine PDF-Datei auswählen.",
    "err_file_too_large": "Datei darf {max} MB nicht überschreiten.",
    "err_too_many_files": "Pro Konvertierung nur eine PDF-Datei.",
    "err_failed": "Konvertierung fehlgeschlagen",
    "err_no_download_url": "Konvertierung abgeschlossen, aber es wurde keine Download-URL zurückgegeben. Erneut versuchen.",
    "err_proxy_unreachable": "Konverterdienst nicht erreichbar ({base}). Starten Sie den docmind-Proxy und setzen Sie NEXT_PUBLIC_DOCMIND_API_URL.",
    "msg_submitting": "Konvertierungsauftrag wird übermittelt …",
    "msg_processing": "Verarbeitung in der Cloud; dies kann von wenigen Sekunden bis zu einigen Minuten dauern …",
    "msg_done": "Konvertierung abgeschlossen. Download aus der Liste unten.",
    "result_title": "Konvertierungsergebnisse",
    "download_hint": "Links werden von Alibaba Cloud bereitgestellt und sind typischerweise etwa 24 Stunden gültig. Falls das Speichern fehlschlägt, öffnen Sie den Link in einem neuen Tab.",
    "selected_file": "Ausgewählt: {name} (~{size} MB)",
    "poll_hint": "Abgefragt {count} Mal, etwa alle 10 Sekunden",
    "limits_note": "Grenzen: eine PDF pro Auftrag, max 5 MB, max 10 Seiten"
  },
  "pdf_to_word": {
    "drop_label": "PDF auswählen",
    "drop_desc": "Eine PDF pro Auftrag, max 5 MB; Konvertierung zu Word (.docx) über Alibaba Document Mind.",
    "empty_hint": "Noch keine Datei ausgewählt.",
    "btn_convert": "Konvertieren",
    "before_title": "Passen der Konvertierung vor dem Hochladen prüfen",
    "before_body": "PDF zu Word lädt die Datei zu einem Dokumentintelligenz-Dienst für Layouterkennung hoch. Am besten für editierbare Verträge, Berichte, Bürodocumente und klare Scans. Bestätigen Sie Ihre Compliance-Regeln, bevor Sie sensibele Dateien hochladen.",
    "good_for": "Geeignet für",
    "good_contract": "Verträge, Bekanntmachungen, Handbücher und Documente, die bearbeitet werden müssen",
    "good_report": "Berichte mit Überschriften, Absätzen, Bildern und einfachen Tabellen",
    "good_scan": "Klare gescannte PDFs oder Foto-PDFs, die OCR benötigen",
    "not_for": "Nicht ideal für",
    "not_sensitive": "Ausweise, Bankkarten, vertrauliche Verträge oder Dateien, die nicht hochgeladen werden sollten",
    "not_large": "PDFs über 5 MB oder zu viele Seiten",
    "not_table": "Tabellendominierte PDFs; verwenden Sie stattdessen PDF zu Excel",
    "fail_title": "Fehlgeschlagen oder geringe Qualität?",
    "try_compress": "Zuerst komprimieren",
    "try_split": "Zuerst teilen",
    "try_excel": "Zu Excel"
  },
  "pdf_to_excel": {
    "drop_label": "PDF auswählen",
    "drop_desc": "Eine PDF pro Auftrag, max 5 MB; Konvertierung zu Excel (.xlsx) über Alibaba Document Mind.",
    "empty_hint": "Noch keine Datei ausgewählt.",
    "btn_convert": "Konvertieren"
  },
  "pdf_merge": {
    "drop_label": "PDFs auswählen (in Liste-Reihenfolge zusammengeführt; mehrmals hinzufügen)",
    "drop_desc": "Mehrfachauswahl unterstützt; Reihenfolge folgt der Liste unten; erneut ziehen zum Anhängen.",
    "err_need_two": "Wählen Sie mindestens 2 PDF-Dateien aus.",
    "msg_done": "Download abgeschlossen.",
    "err_failed": "Zusammenführung fehlgeschlagen",
    "empty_hint": "Noch keine Dateien ausgewählt.",
    "btn_merge_download": "Zusammenführen und herunterladen",
    "download_name": "merged.pdf​",
    "move_up": "Nach oben",
    "move_down": "Nach unten"
  },
  "pdf_batch": {
    "phase2_title": "Phase 2: Stapel-Warteschlange + Worker-Rendering (sofern unterstützt)",
    "phase2_body": "Falls OffscreenCanvas unterstützt wird, läuft die Rasterung in einem Worker, um UI-Stocken zu reduzieren; andernfalls fällt es auf den Hauptthread mit Chunking zurück.",
    "drop_label": "PDFs zur Warteschlange hinzufügen (Mehrfachauswahl, mehrmals ziehen)",
    "drop_desc": "Nicht-PDF-Dateien werden herausgefiltert. Aufgaben erscheinen in der Liste unten.",
    "err_no_pdf": "Keine PDF-Dateien erkannt.",
    "err_no_pending": "Keine ausstehenden Aufgaben (abgeschlossene Elemente werden nicht erneut exportiert).",
    "log_started": "Stapel-Export wird gestartet …",
    "err_cancelled": "Abgebrochen",
    "err_failed_msg": "Stapel fehlgeschlagen",
    "log_done_zip": "Paket-ZIP-Download abgeschlossen.",
    "scale_label": "Export-Maßstab (Stapel empfiehlt 1,4 – 2,2)",
    "fmt_label": "Export-Format",
    "quality_label": "Qualität (0,1 – 1,0)",
    "status_prefix": "Status:​",
    "status_pending": "ausstehend",
    "status_running": "laufend",
    "status_done": "fertig",
    "status_error": "fehler",
    "btn_remove": "Entfernen",
    "queue_empty": "Warteschlange ist leer.",
    "btn_export_all": "Alle exportieren ({n} ausstehend)",
    "btn_processing": "Wird gearbeitet …",
    "btn_cancel": "Abbrechen",
    "btn_clear_queue": "Warteschlange leeren",
    "log_page_progress": "{file}: {current}/{total}​"
  },
  "pdf_compress": {
    "notice_title": "Komprimierungsstrategie (transparent)",
    "notice_body": "Raster-Komprimierung: jede Seite wird zu JPG gerendert und zu einem PDF neu aufgebaut. Funktioniert am besten bei Scans; Text-PDFs können wachsen oder weicher wirken.",
    "drop_label": "PDF auswählen",
    "drop_desc": "Lokal im Browser neu packen, um die Größe zu verringern; es wird nichts hochgeladen.",
    "compress_desc": "Lokales Streaming-Neupacken zur Größenreduktion; nicht hochgeladen.",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "download_name": "compressed.pdf​",
    "scale_label": "Render-Maßstab (höher = schärfer, aber größer)",
    "quality_label": "JPG-Qualität (0,1 – 1,0)",
    "btn_compress": "Komprimierung starten",
    "msg_select_first": "Zuerst eine PDF auswählen.",
    "msg_done_hint": "Download abgeschlossen (Hinweis: Scans schrumpfen stärker als Text-PDFs).",
    "err_failed": "Komprimierung fehlgeschlagen",
    "preset": "Komprimierungs-Preset",
    "preset_strong": "Stark (kleiner, geringere Klarheit)",
    "preset_balanced": "Ausgewogen (empfohlen)",
    "preset_quality": "Hohe Qualität (größere Datei)",
    "before": "Vorher",
    "after": "Nachher",
    "change": "Größenänderung",
    "smaller": "Komprimierung abgeschlossen. Klarheit vor dem Herunterladen prüfen.",
    "larger": "Das Ergebnis ist größer als das Original. Behalten Sie das Original oder versuchen Sie ein stärkeres Preset.",
    "preset_card_strong": "Kleinste Datei",
    "preset_card_strong_desc": "Am besten für Scans, Foto-PDFs und nur-Lesen-Teilen.",
    "preset_card_balanced": "Ausgewogen",
    "preset_card_balanced_desc": "Gute Voreinstellung für die meisten Anhänge.",
    "preset_card_quality": "Hohe Qualität",
    "preset_card_quality_desc": "Besser für kleine Texte, Diagramme oder Druck.",
    "raster_warning": "Hinweis: Dieses Werkzeug rastert Seiten und baut das PDF neu auf. Text ist nach der Komprimierung möglicherweise nicht mehr auswählbar. Verwenden Sie PDF zu Word oder Text extrahieren, falls Sie editierbaren Inhalt benötigen.",
    "saved": "Gespeichert",
    "output_size": "Ausgabegröße",
    "check_quality": "Öffnen Sie das Ergebnis und prüfen Sie Text-/Bildklarheit",
    "next_actions": "Nach der Komprimierung fortfahren",
    "next_split": "Seiten teilen",
    "next_merge": "PDF zusammenführen",
    "next_images": "In Bilder konvertieren"
  },
  "pdf_crop": {
    "intro": "Rand von CropBox/MediaBox anpassen (pt). Dies ändert den sichtbaren Bereich und die Seitengrenzen, ohne Vektoreninhalt zu löschen.",
    "drop_label": "PDF auswählen",
    "drop_desc": "Zuschneiden läuft lokal. Seiten werden unten konfiguriert.",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "left": "Linker Rand (pt)",
    "right": "Rechter Rand (pt)",
    "top": "Oberer Rand (pt)",
    "bottom": "Unterer Rand (pt)",
    "mode_label": "Zuschneidemodus",
    "mode_crop_media": "CropBox + MediaBox (allgemeiner)",
    "mode_crop_only": "Nur CropBox (konservativ)",
    "btn_crop": "Zuschneiden und herunterladen",
    "msg_select_pdf": "Zuerst eine PDF auswählen.",
    "msg_pick_pages": "Seiten zum Zuschneiden auswählen.",
    "msg_done": "Download abgeschlossen.",
    "err_failed": "Zuschneiden fehlgeschlagen",
    "download_name": "cropped.pdf​"
  },
  "pdf_decrypt": {
    "notice_title": "Compliance-Hinweis",
    "notice_body": "Nur für PDFs, deren Passwort Sie kennen. Seiten werden gerastert und neu aufgebaut, daher gehen auswählbarer Text und Links verloren.",
    "drop_encrypt_label": "Verschlüsselte PDF auswählen",
    "drop_desc": "Lokal mit Ihrem Passwort entschlüsseln; Dateien werden nicht hochgeladen.",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "password_label": "Öffnungspasswort",
    "scale_label": "Render-Maßstab",
    "quality_label": "JPG-Qualität (0,1 – 1,0)",
    "btn_decrypt": "Entschlüsseln und herunterladen",
    "msg_select_first": "Zuerst eine PDF auswählen.",
    "msg_done": "Download abgeschlossen.",
    "err_failed": "Entschlüsselung fehlgeschlagen",
    "download_name": "decrypted.pdf​"
  },
  "pdf_delete_pages": {
    "drop_label": "PDF auswählen",
    "drop_desc": "Miniaturansichten zum Löschen anklicken; nicht ausgewählte Seiten bleiben erhalten und werden in eine neue Datei exportiert.",
    "hint_short": "Seiten zum Löschen anklicken; nicht ausgewählte Seiten verbleiben im exportierten PDF.",
    "btn_delete": "Ausgewählte Seiten löschen und herunterladen",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "msg_select_pdf": "Zuerst eine PDF auswählen.",
    "msg_pick_delete": "Seiten zum Löschen auswählen.",
    "msg_done": "Download abgeschlossen.",
    "err_failed": "Löschen fehlgeschlagen",
    "thumb_title": "Zu löschende Seiten",
    "download_name": "deleted-pages.pdf​"
  },
  "pdf_extract_text": {
    "drop_label": "PDF auswählen",
    "drop_desc": "Text pro Seite lokal extrahieren; Scans haben möglicherweise keine Textebene.",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "btn_extract": "Text extrahieren (txt)",
    "msg_select_pdf": "Zuerst eine PDF auswählen.",
    "progress_page": "Seite {current} / {total} wird extrahiert …",
    "msg_done_hint": "TXT exportiert. Hinweis: gescannte/bildbasierte PDFs liefern möglicherweise keinen Text.",
    "err_failed": "Extrahieren fehlgeschlagen"
  },
  "pdf_header_footer": {
    "intro": "Phase 2: Kopf- und Fußzeilen-Vorlagen links/mitte/rechts; Platzhalter '{'n'}' und '{'total'}' werden beim Export ersetzt. Chinesischer Text verwendet Source Han Sans-Teilmenge von OSS; Abruffehler werden ordnungsgemäß abgefangen.",
    "presets_heading": "Schnell-Vorlagen",
    "drop_label": "PDF auswählen",
    "drop_desc": "Kopf-/Fußzeilentext pro Seite lokal anwenden; unterstützt '{'n'}' / '{'total'}', usw.",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "header_left": "Kopfzeile links",
    "header_center": "Kopfzeile mitte",
    "header_right": "Kopfzeile rechts",
    "footer_left": "Fußzeile links",
    "footer_center": "Fußzeile mitte",
    "footer_right": "Fußzeile rechts",
    "ph_company": "z. B. Firmenname",
    "ph_title": "z. B. Documenttitel",
    "ph_version": "z. B. Version",
    "footer_center_ph": "Vorgeschlagen: '{'n'}' / '{'total'}'",
    "font_size": "Schriftgröße",
    "margin_pt": "Rand (pt)",
    "btn_apply": "Anwenden und herunterladen",
    "msg_select_pdf": "Zuerst eine PDF auswählen.",
    "msg_need_field": "Füllen Sie mindestens einen Kopf- oder Fußzeilen-Slot.",
    "msg_pick_pages": "Seiten für die Vorlage auswählen.",
    "msg_done": "Download abgeschlossen.",
    "err_failed": "Fehlgeschlagen",
    "preset_minimal_name": "Minimale Fußzeile (n / total)",
    "preset_internal_name": "Interne Nutzung + Fußzeile",
    "preset_dual_name": "Doppelkopfzeile + zentrierte Fußzeile",
    "preset_internal_header": "Intern · Nicht weitergeben",
    "preset_internal_footer": "Seite '{'n'}' / '{'total'}' Seiten",
    "preset_dual_footer": "Vertraulich",
    "download_name": "header-footer.pdf​"
  },
  "images_to_pdf": {
    "intro": "PNG / JPEG unterstützt. Ein Bild pro PDF-Seite; Seitengröße entspricht den Pixelmaßen.",
    "drop_label": "Bilder auswählen (Seitenreihenfolge folgt der Liste; mehrmals hinzufügen)",
    "drop_desc": "Nur PNG und JPEG; Liste-Reihenfolge ist Seitenreihenfolge.",
    "empty_hint": "Noch keine Dateien ausgewählt.",
    "btn_generate": "PDF erstellen",
    "msg_need_image": "Wählen Sie mindestens ein Bild aus.",
    "msg_done": "Download abgeschlossen.",
    "err_failed": "Generierung fehlgeschlagen",
    "download_name": "images-merged.pdf​"
  },
  "pdf_metadata": {
    "drop_label": "PDF auswählen",
    "drop_desc": "Gängige Documenteigenschaften lesen; bearbeiten und als neue Datei exportieren.",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "label_title": "Titel",
    "label_author": "Autor",
    "label_subject": "Betreff",
    "label_keywords": "Schlüsselwörter",
    "keywords_ph": "Mit Kommas trennen",
    "label_creator": "Ersteller",
    "label_producer": "Produzent (optional)",
    "producer_ph": "Leer lassen, um vorhandenen Produzenten beizubehalten",
    "label_language": "Sprache (optional)",
    "language_ph": "z. B. zh-CN, en-US; leer lassen, um Lang in der Gliederung zu überspringen",
    "checkbox_viewer_prefs": "Documenttitel im Fenstertitel des Betrachters bevorzugen (pdf-lib ViewerPreferences)",
    "btn_apply": "Anwenden und herunterladen",
    "msg_loaded": "Metadaten geladen; bearbeiten und exportieren.",
    "msg_read_failed": "Lesen fehlgeschlagen",
    "msg_select_pdf": "Zuerst eine PDF auswählen.",
    "msg_done_verify": "Metadaten geschrieben und heruntergeladen (einige Betrachter cachen alte Metadaten — umbenennen zum Prüfen).",
    "err_export_failed": "Export fehlgeschlagen",
    "download_suffix": "-metadata​",
    "page_intro": "Deckt gängige Felder ab, die unter „Documenteigenschaften“ des Betrachters angezeigt werden. Änderungen schreiben lokal eine neue Datei — es wird nichts auf unsere Server hochgeladen. Unterstützt von <pdflib>Hopding/pdf-lib</pdflib>."
  },
  "pdf_page_numbers": {
    "intro": "Platzhalter: '{'n'}' aktuelle Seite, '{'total'}' Gesamtseiten. Chinesische Zeichenketten sind OK (z. B. „Seite '{'n'}'“); Schrift wird aus OSS-Teilmenge mit Fallback geladen.",
    "drop_label": "PDF auswählen",
    "drop_desc": "Fußzeilen-/Seitenrand-Nummerierung lokal hinzufügen.",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "start_number": "Startnummer",
    "align_label": "Ausrichtung",
    "align_left": "Links",
    "align_center": "Mitte",
    "align_right": "Rechts",
    "format_string": "Formatzeichenfolge",
    "font_size": "Schriftgröße",
    "margin_x": "Horizontaler Rand (pt)",
    "margin_y_footer": "Fußzeilen-Anhebung (pt, größer = höher auf der Seite)",
    "btn_add": "Seitennummern hinzufügen und herunterladen",
    "msg_select_pdf": "Zuerst eine PDF auswählen.",
    "msg_pick_pages": "Seiten für Nummerierung auswählen.",
    "msg_done": "Download abgeschlossen.",
    "err_failed": "Fehlgeschlagen",
    "download_name": "page-numbers.pdf​"
  },
  "pdf_reverse": {
    "drop_label": "PDF auswählen",
    "drop_desc": "Die gesamte Seitenreihenfolge umkehren; Inhalt unverändert.",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "btn_reverse": "Reihenfolge umkehren und herunterladen",
    "msg_select_pdf": "Zuerst eine PDF auswählen.",
    "msg_done": "Download bereit.",
    "err_failed": "Verarbeitung fehlgeschlagen",
    "download_suffix": "-reversed​",
    "page_intro": "Nützlich, wenn Bindung oder Lese-Reihenfolge das gesamte PDF von Ende zu Ende umgedreht benötigt; implementiert über <pdflib>pdf-lib</pdflib>-Seitenkopie ohne erneutes Rendern von Vektorinhalten."
  },
  "pdf_rotate": {
    "drop_label": "PDF auswählen",
    "drop_desc": "Miniaturansichten wählen, dann relativ Rotation pro ausgewählter Seite hinzufügen; lokal verarbeitet.",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "angle_label": "Anzuwendende Rotation (relativ)",
    "btn_rotate": "Rotation anwenden",
    "msg_select_pdf": "Zuerst eine PDF auswählen.",
    "msg_pick_page": "Wählen Sie mindestens eine Seite aus.",
    "msg_rotate_done": "Rotation abgeschlossen. Sie können jetzt herunterladen.",
    "msg_download_done": "Download gestartet.",
    "err_failed": "Rotation fehlgeschlagen",
    "thumb_title": "Zu rotierende Seiten",
    "thumb_preview_hint": "Vorschauen sind nur Miniaturansichten; Exportqualität bleibt unbeeinflusst.",
    "download_name": "rotated.pdf​"
  },
  "pdf_split": {
    "drop_label": "PDF auswählen",
    "drop_desc": "In mehrere PDFs pro Seite oder feste Chunk-Größe teilen (ZIP-Download).",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "legend_mode": "Teilmodus",
    "mode_each": "Eine Datei pro Seite",
    "mode_chunk": "Feste Seitengruppen",
    "chunk_size_label": "Seiten pro Gruppe",
    "hint_each": "Jede Seite wird als eigene PDF exportiert.",
    "hint_chunk": "Gruppenexport alle {chunk} Seiten.",
    "btn_split": "Teilen und ZIP herunterladen",
    "msg_select_pdf": "Zuerst eine PDF auswählen.",
    "msg_done_zip": "ZIP-Erzeugung gestartet.",
    "err_failed": "Teilen fehlgeschlagen",
    "thumb_preview_title": "Seitenvorschau (Miniaturansichten anklicken, um zu extrahierende Seiten zu wählen)",
    "mode_selected": "Ausgewählte Seiten in eine PDF extrahieren",
    "hint_selected": "Miniaturansichten unten anklicken, um Seiten auszuwählen. Die ausgewählten {count} Seiten werden in Originalreihenfolge als eine PDF exportiert.",
    "msg_pick_pages": "Wählen Sie mindestens eine Seite aus den unten stehenden Miniaturansichten aus.",
    "msg_done_pdf": "Ausgewählte-Seiten-PDF erzeugt und Download gestartet.",
    "selected_download_name": "selected-pages.pdf​",
    "selected_count": "{count} Seiten ausgewählt",
    "first_page": "Seite 1 auswählen",
    "first_three": "Erste 3 auswählen",
    "clear_selected": "Auswahl aufheben"
  },
  "pdf_stamp": {
    "drop_pdf_label": "PDF auswählen",
    "drop_pdf_desc": "Basisdocument; Seiten zum Stempeln wählen.",
    "drop_stamp_label": "Stempelbild (PNG empfohlen)",
    "drop_stamp_desc": "PNG oder JPEG; transparentes PNG sieht meist am besten aus.",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "empty_stamp": "Noch kein Stempelbild.",
    "position_label": "Position​",
    "scale_label": "Maßstab (relativ zur Bildbreite)",
    "margin_label": "Rand (pt)",
    "pos_center": "Mitte",
    "pos_br": "Unten rechts",
    "pos_bl": "Unten links",
    "pos_tr": "Oben rechts",
    "pos_tl": "Oben links",
    "btn_apply": "Stempeln und herunterladen",
    "msg_need_both": "Wählen Sie sowohl eine PDF als auch ein Stempelbild (PNG/JPG) aus.",
    "msg_pick_pages": "Seiten zum Stempeln auswählen.",
    "msg_done": "Download abgeschlossen.",
    "err_failed": "Fehlgeschlagen",
    "download_name": "stamped.pdf​"
  },
  "pdf_to_images": {
    "hint_base": "Als Bilder exportieren. Schärfe folgt dem Maßstab: höher ist klarer, aber langsamer und speicherintensiver.",
    "hint_fallback": " Offscreen-Rendering nicht unterstützt; einige Formate fallen auf PNG zurück.",
    "drop_label": "PDF auswählen",
    "drop_desc": "Mehrfachauswahl oder stapelweise ablegen; jede Seite wird zu einem Bild in einer ZIP; nur lokal.",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "err_no_pdf": "Keine PDF-Dateien erkannt.",
    "scale_label": "Render-Maßstab (empfohlen 1,5 – 3)",
    "fmt_label": "Export-Format",
    "opt_png": "PNG (verlustfrei)",
    "opt_jpeg": "JPG (kleiner)",
    "opt_webp": "WebP (kleiner)",
    "quality_label": "Qualität (0,1 – 1,0)",
    "btn_export": "Exportieren (ZIP)",
    "msg_select_pdf": "Zuerst eine PDF auswählen.",
    "progress_export": "Seite {current} / {total} wird exportiert …",
    "progress_export_multi": "Datei {fileIndex}/{fileTotal}: {fileName} — Seite {current}/{total} …",
    "msg_zip_done": "ZIP gepackt; Download gestartet.",
    "err_failed": "Export fehlgeschlagen",
    "err_cancelled": "Abgebrochen",
    "page_range": "Seitenbereich (alle / ungerade / gerade / 1,3-5)",
    "page_range_invalid": "Ungültiger Seitenbereich. Verwenden Sie alle, ungerade, gerade oder einen Bereich wie 1,3-5."
  },
  "pdf_watermark": {
    "intro": "Chinesische Textwasserzeichen über OSS Source Han Sans-Teilmenge. Falls der Schriftabruf fehlschlägt, werden eingebettete Schriften verwendet und Chinesisch erscheint möglicherweise als Kästchen.",
    "drop_label": "PDF auswählen",
    "drop_desc": "Textwasserzeichen auf gewählten Seiten lokal hinzufügen.",
    "empty_pdf": "Noch keine PDF ausgewählt.",
    "page_range_hint": "Tipp: alle / ungerade / gerade / 1,3-5",
    "label_text": "Wasserzeichentext",
    "label_color": "Farbe (#RRGGBB)",
    "label_font_size": "Schriftgröße",
    "label_opacity": "Deckkraft (0–1)",
    "label_angle": "Rotation (Grad)",
    "btn_generate": "Generieren und herunterladen",
    "msg_select_pdf": "Zuerst eine PDF auswählen.",
    "msg_pick_pages": "Seiten zum Wasserzeichen auswählen.",
    "msg_done": "Download abgeschlossen.",
    "err_failed": "Fehlgeschlagen",
    "download_name": "watermarked.pdf​"
  },
  "json_format": {
    "indent_label": "Einrücken",
    "indent_2": "2 Leerzeichen",
    "indent_4": "4 Leerzeichen",
    "indent_tab": "Tab​",
    "font_size_label": "Schriftgröße",
    "valid_ok": "✓ Gültig",
    "valid_bad": "✗ Ungültig",
    "btn_escape": "Escapen / Unescapen",
    "btn_json_xml": "JSON ↔ XML​",
    "btn_fold": "Einklappen / Ausklappen",
    "hdr_src": "Quelle",
    "hdr_result": "Ergebnis (editierbar)",
    "ph_src": "JSON hier einfügen oder eingeben …",
    "ph_result": "Formatiertes JSON erscheint hier …",
    "flash_unescape_fmt_ok": "Erfolgreich unescaped und formatiert",
    "flash_unescape_ok_maybe": "Unescaped (ist möglicherweise kein gültiges JSON)",
    "flash_unescape_fail": "Unescape fehlgeschlagen",
    "flash_escape_ok": "Erfolgreich escaped",
    "flash_escape_ok_maybe": "Erfolgreich escaped (Quelle ist möglicherweise kein gültiges JSON)",
    "flash_escape_fail": "Escapen fehlgeschlagen",
    "flash_please_data": "Bitte zuerst Daten eingeben",
    "flash_xml_bad": "Konvertierung fehlgeschlagen: ungültiges XML",
    "flash_json_bad": "Konvertierung fehlgeschlagen: ungültiges JSON",
    "hint_xml_done": "In XML konvertiert",
    "hint_json_done": "In JSON konvertiert",
    "flash_need_json_src": "Bitte zuerst JSON im Quell-Panel eingeben",
    "flash_need_valid_json": "Bitte zuerst formatieren oder gültiges JSON eingeben",
    "hint_all_fold": "Alle eingeklappt",
    "hint_all_unfold": "Alle ausgeklappt",
    "flash_result_empty": "Ergebnis ist leer",
    "flash_clipboard_ok": "In die Zwischenablage kopiert",
    "flash_no_download": "Nichts zum Herunterladen",
    "confirm_plain_download": "Inhalt ist kein gültiges JSON. Trotzdem herunterladen?",
    "suffix_json_invalid": "Ungültiges JSON",
    "btn_copy_result": "Ergebnis kopieren"
  },
  "og_preview": {
    "mock_card_title": "Simulierte Karte (keine echte Crawler-Vorschau)",
    "tag_snippet_title": "Meta-Schnipsel",
    "demo_title": "Tools Ku | Beispiel",
    "demo_desc": "Beispielbeschreibung für eine lokal simulierte Tielkarte."
  },
  "robots": {
    "chk_allow_site": "Allow: / (komplette Seiten-Crawls erlauben)",
    "lbl_disallow_paths": "Pfade verbieten (einer pro Zeile)",
    "lbl_sitemap_urls": "Sitemap-URLs (eine pro Zeile)",
    "hdr_preview": "robots.txt​"
  },
  "sitemap": {
    "lbl_site_root": "Seiten-Root-URL",
    "lbl_paths": "Pfade oder vollständige URLs (eine pro Zeile)",
    "hdr_preview": "sitemap.xml​"
  },
  "csp": {
    "opt_default": "default-src 'self'​",
    "opt_script": "script-src 'self'​",
    "opt_unsafe_inline": "Inline-Skripte erlauben (schwächer)",
    "opt_style": "style-src 'self' 'unsafe-inline'​",
    "opt_img": "img-src * data:​",
    "opt_font": "font-src 'self'​",
    "opt_connect": "connect-src 'self'​",
    "opt_frame": "frame-ancestors 'none'​",
    "opt_base": "base-uri 'self'​",
    "opt_form": "form-action 'self'​",
    "opt_upgrade": "upgrade-insecure-requests​",
    "lbl_extra_directives": "Zusätzliche Direktiven (eine pro Zeile; mit Semikola verbunden)",
    "hdr_preview": "Content-Security-Policy​",
    "placeholder_extra": "report-uri https://...​"
  },
  "permissions_policy": {
    "lbl_extra": "Zusätzliche Einträge (komma-getrennt)",
    "hdr_preview": "Permissions-Policy​",
    "placeholder_extra": "interest-cohort=()​"
  },
  "env_parse": {
    "chk_mask": "Werte maskieren (nur Anzeige; Quelltext unverändert)",
    "lbl_raw": ".env-Inhalt",
    "th_key": "Schlüssel",
    "th_value": "Wert",
    "empty_rows": "Keine key=value-Zeilen"
  },
  "http_headers": {
    "intro": "Häufige Beispiele für Sicherheits-Antwort-Header; eine Stack konfigurieren (Nginx / CDN / Framework).",
    "hsts_title": "HSTS​",
    "hsts_desc": "HTTPS erzwingen (max-age ein Jahr)",
    "xcto_title": "X-Content-Type-Options​",
    "xcto_desc": "MIME-Sniffing deaktivieren",
    "xfo_title": "X-Frame-Options​",
    "xfo_desc": "Einbettung verweigern (wie DENY)",
    "ref_title": "Referrer-Policy​",
    "ref_desc": "Referrer verschärfen",
    "pp_title": "Permissions-Policy (Beispiel)",
    "pp_desc": "Einige sensible APIs deaktivieren"
  },
  "graphql_format": {
    "lbl_input": "GraphQL​",
    "syntax_error": "Syntaxfehler"
  },
  "openapi_view": {
    "lbl_input": "OpenAPI (JSON)​",
    "err_invalid_json": "JSON konnte nicht geparst werden",
    "root_label": "root​"
  },
  "properties_json": {
    "lbl_properties": ".properties​",
    "lbl_json": "JSON (Zeichenfolge-Werte → properties)",
    "btn_to_json": "→ JSON​",
    "btn_to_properties": "→ Properties​",
    "footnote_flat": "Verschachtelte Objekte werden nicht abgeflacht; nur flache Zeichenfolge-Maps.",
    "err_failed": "Fehlgeschlagen"
  },
  "xml_format": {
    "lbl_xml": "XML​",
    "btn_validate_indent": "Validieren & einrücken",
    "err_parse_failed": "XML-Parsing fehlgeschlagen",
    "err_failed": "Fehlgeschlagen"
  },
  "semver": {
    "lbl_a": "Version A​",
    "lbl_b": "Version B​",
    "btn_compare": "Vergleichen",
    "invalid": "ungültig",
    "err_parse_line": "Parsen fehlgeschlagen: A={a}  B={b}",
    "cmp_before": "A liegt vor B",
    "cmp_after": "A liegt nach B",
    "cmp_equal": "Gleich",
    "line_norm": "Normalisiert: A={a}  B={b}",
    "line_cmp": "Vergleich: {rel}",
    "line_diff": "semver.diff: {diff}​",
    "diff_same": "diff: (gleiche Version)"
  },
  "mermaid": {
    "lbl_source": "Mermaid-Quelle",
    "btn_render": "Rendern",
    "btn_rendering": "Wird gerendert …",
    "err_render": "Rendern fehlgeschlagen"
  },
  "editorconfig": {
    "preset_web": "Web-Standard (2 Leerzeichen)",
    "preset_py": "Python (4 Leerzeichen)",
    "preset_go": "Go (Tab)​"
  },
  "image_compress": {
    "intro_note": "Bilder werden lokal in Ihrem Browser verarbeitet und nie hochgeladen. Die Komprimierung läuft parallel gemäß Gerätefähigkeit unter Kontrolle des Speicherverbrauchs. PNG unterstützt visuell verlustfreie smarte Quantisierung oder strikte pixelgenaue Komprimierung. Das Original bleibt erhalten, sobald das Ergebnis nicht kleiner ist.",
    "drop_desc": "Stapelverarbeitung wird unterstützt. Komprimierungs-Komponenten werden nach der Auswahl warm, und die Bildabmessungen bleiben unverändert.",
    "fmt_auto": "Wie die Quelle",
    "fmt_jpeg": "Als JPG vereinheitlichen",
    "fmt_webp": "Als WebP vereinheitlichen",
    "fmt_png": "Als PNG vereinheitlichen",
    "quality_label": "Komprimierungsqualität",
    "quality_high": "Hohe Qualität",
    "quality_balanced": "Empfohlen (ausgewogen)",
    "quality_strong": "Starke Komprimierung",
    "png_mode_label": "PNG-Komprimierungsmodus",
    "png_mode_smart": "Smarte Komprimierung (empfohlen)",
    "png_mode_lossless": "Strikt verlustfrei",
    "png_smart_hint": "Der smarte Modus verschmilzt ähnliche Farben und kann die PNG-Größe stark reduzieren bei fast keinem sichtbaren Unterschied, ist aber nicht pixelgenau verlustfrei.",
    "png_lossless_hint": "Der strikt verlustfreie Modus bewahrt jeden Pixel und optimiert nur die PNG-Kodierung, daher sind die Ersparnisse meist geringer als im smarten Modus.",
    "progress": "Abgeschlossen {completed} / {total}",
    "worker_hint": "Parallele Verarbeitung mit {count} Hintergrund-Workern",
    "preparing_hint": "Bildkomprimierungs-Komponenten werden vorbereitet …",
    "fallback_hint": "Hintergrund-Bildverarbeitung ist in diesem Browser nicht verfügbar; Kompatibilitätsmodus ist aktiv",
    "cancel": "Komprimierung abbrechen",
    "cancelling": "Wird abgebrochen …",
    "cancelled": "Komprimierung wurde abgebrochen. Abgeschlossene Ergebnisse bleiben verfügbar.",
    "completed": "{count} Bilder abgeschlossen.",
    "size_change": "Gesamtgröße: {before} → {after}",
    "saved": "Gespeichert: {size} ({percent}%)",
    "original_kept": "Originale behalten: {count}"
  },
  "image_exif": {
    "intro_note": "Betrachten/Entfernen erfolgt lokal. Entfernen exportiert das Bild erneut (universeller) und kann Größe/Format ändern.",
    "drop_desc": "EXIF lokal parsen; Dateien werden nicht hochgeladen.",
    "empty_hint": "Kein Bild ausgewählt.",
    "lbl_export_after_strip": "Format nach dem Entfernen",
    "opt_jpeg_rec": "JPG (empfohlen)",
    "opt_png": "PNG​",
    "opt_webp": "WebP​",
    "btn_strip": "EXIF entfernen & herunterladen",
    "details_raw": "Roh-EXIF-JSON",
    "msg_no_exif": "Keine EXIF erkannt (oder Format hat keine).",
    "msg_read_fail": "Lesen fehlgeschlagen",
    "msg_exported_clean": "Metadatenfreie Version exportiert.",
    "msg_strip_fail": "Verarbeitung fehlgeschlagen"
  },
  "image_crop": {
    "intro_note": "Auf der Vorschau ziehen, um den Zuschneide-Rahmen auszuwählen, oder Pixel unten eingeben. Verarbeitung ist lokal.",
    "drop_desc": "Einzelbild-Zuschneiden; Export als PNG / JPG / WebP.",
    "empty_hint": "Kein Bild ausgewählt.",
    "hint_canvas": "Quelle {w}×{h} px — auf dem Bild ziehen zum Auswählen",
    "lbl_left_x": "Linkes X",
    "lbl_top_y": "Oberes Y",
    "lbl_width": "Breite",
    "lbl_height": "Höhe",
    "btn_reset_full": "Auf volles Bild zurücksetzen",
    "lbl_quality_short": "Qualität",
    "btn_export": "Zuschnitt exportieren",
    "msg_pick_area": "Bitte ein Bild und einen Zuschneide-Bereich auswählen.",
    "msg_exported": "Zuschnitt exportiert.",
    "msg_export_fail": "Export fehlgeschlagen"
  },
  "image_resize": {
    "intro_note": "Größenänderung läuft lokal. contain = einpassen mit Rand; cover = füllen und zuschneiden.",
    "drop_desc": "Größe und Format unten festlegen, dann auf Start processing klicken zum Stapel-Export."
  },
  "image_scale": {
    "intro_note": "Proportionales Skalieren nach langer Kante, fester Breite oder fester Höhe; Seitenverhältnis bleibt erhalten. Modus lange Kante hält Originale kleiner als das Ziel; Breite-/Höhen-Modus kann hochskalieren. Lokale Verarbeitung.",
    "drop_desc": "Skalierungsmodus und Ziel-Pixel festlegen, dann Stapel-Export.",
    "lbl_scale_by": "Skalieren nach",
    "mode_long_edge": "Lange Kante (nur verkleinern bis Limit)",
    "mode_width": "Breite (feste Breite, proportionale Höhe)",
    "mode_height": "Höhe (feste Höhe, proportionale Breite)",
    "dim_long_edge": "Grenze lange Kante (px)",
    "dim_width": "Zielbreite (px)",
    "dim_height": "Zielhöhe (px)",
    "lbl_quality_01": "Qualität (0,1–1)"
  },
  "image_transform": {
    "intro_note": "Canvas + CSS-Filter (Graustufen/invertiert) lokal; JPEG-Export legt Transparenz auf Weiß.",
    "drop_desc": "Gängige Raster-Formate; Transformationen festlegen, dann Stapel-Export.",
    "lbl_rotate": "Rotieren",
    "rot_0": "Keine",
    "rot_90": "90° im Uhrzeigersinn",
    "rot_180": "180°​",
    "rot_270": "270° im Uhrzeigersinn",
    "lbl_export_fmt": "Export-Format",
    "lbl_quality_short": "Qualität",
    "flip_h": "Horizontal spiegeln",
    "flip_v": "Vertikal spiegeln",
    "filter_gray": "Graustufen",
    "filter_invert": "Invertieren",
    "msg_need_transform": "Wählen Sie mindestens eine Transformation (rotieren, spiegeln oder filtern).",
    "msg_summary": "Fertig: {ok}/{total} erfolgreich.",
    "btn_zip": "ZIP-Paket herunterladen"
  },
  "image_watermark": {
    "intro_note": "Wasserzeichen werden lokal gerendert; es wird nichts hochgeladen.",
    "drop_desc": "Textwasserzeichen festlegen, dann Stapel-Export.",
    "lbl_text": "Wasserzeichentext",
    "lbl_position": "Position​",
    "pos_tl": "Oben links",
    "pos_tr": "Oben rechts",
    "pos_bl": "Unten links",
    "pos_br": "Unten rechts",
    "pos_center": "Mitte",
    "lbl_color": "Farbe",
    "lbl_font_size": "Schriftgröße",
    "lbl_opacity": "Deckkraft (0–1)",
    "lbl_padding": "Innenabstand (px)",
    "msg_empty_text": "Wasserzeichentext darf nicht leer sein."
  },
  "image_collage": {
    "intro_note": "Zusammenfügen läuft lokal; vermeiden Sie zu viele Bilder (sehr hohes/breites Ergebnis).",
    "drop_label": "Bilder auswählen (Reihenfolge = Zusammenfüge-Reihenfolge)",
    "drop_desc": "Mehrfachauswahl unterstützt; Liste-Reihenfolge ist Zusammenfüge-Reihenfolge — Elemente entfernen zum Anpassen.",
    "empty_hint": "Noch keine Bilder. Die hierige Reihenfolge definiert die Zusammenfüge-Reihenfolge.",
    "lbl_direction": "Richtung",
    "dir_vertical": "Vertikal (langer Streifen)",
    "dir_horizontal": "Waagerecht",
    "lbl_gap": "Lücke (px)",
    "msg_started": "Download gestartet."
  },
  "image_convert": {
    "page_intro": "Gängige Raster-Formate (einschließlich <fmt>PNG, JPEG, WebP, GIF, BMP, ICO, AVIF</fmt>, je nach Browser-Dekodierung) und <svg>SVG</svg> werden lokal konvertiert. Animertes GIF exportiert nur den ersten Frame; transparente Bereiche werden bei JPEG-Export weiß gefüllt; HEIC und ähnliche Formate können im Browser oft nicht dekodiert werden.",
    "common_uses_title": "Häufige Verwendungen",
    "common_use_li1": "Web-Assets zu WebP oder PNG vereinheitlichen; Druck-/Archiv-Workflows zu JPEG.",
    "common_use_li2": "SVG zu Bitmap rasterisieren für nur-Raster-Nachfolge-Werkzeuge."
  },
  "image_convert_to_png": {
    "page_intro": "Gängige Bildformate lokal auf Ihrem Gerät nach PNG exportieren — nichts verlässt Ihre Maschine. Nützlich, wenn Sie einen PNG-nur-Workflow benötigen oder die Nachfolge nur PNG akzeptiert. Animierte Bilder exportieren den ersten Frame.",
    "common_notes_title": "Hinweise",
    "common_notes_li1": "HEIC und einige Hersteller-Formate können im Browser möglicherweise nicht dekodiert werden — zuerst zu JPG in Ihrem BS konvertieren.",
    "common_notes_li2": "Sehr große Bilder verbrauchen mehr Speicher; falls die Konvertierung fehlschlägt, skalieren oder teilen.",
    "drop_subline": "Mehrformat-Eingabe; Ausgabe ist immer PNG."
  },
  "image_gif_to_png": {
    "drop_subline": "Auf GIF fokussiert; exportiert einzelnen-Frame-PNG."
  },
  "image_jpg_to_png": {
    "page_intro": "<jpeg>JPEG</jpeg> ist verlustbehaftet; eine Konvertierung zu PNG kann verworfene Details nicht zurücksichern, aber sie stoppt weitere verlustbehaftete Komprimierung — praktisch, wenn Ihre Bearbeitungs-Pipeline oder Stapelaufträge auf PNG standardisieren. Mehrfachauswahl und Drag-and-Drop unterstützt.",
    "notes_title": "Hinweise",
    "notes_body": "Typische JPEG-Fotos sind undurchsichtig; nach PNG-Konvertierung bleiben sie meist voll undurchsichtig, sofern die Quelle noch keine Transparenz hatte (unüblich).",
    "drop_subline": "Auf JPG/JPEG fokussiert; andere Raster erlaubt. Ausgabe ist PNG."
  },
  "image_jpg_to_webp": {
    "drop_subline": "Auf JPG/JPEG fokussiert; andere Raster zu WebP ebenfalls unterstützt."
  },
  "image_png_to_jpg": {
    "drop_subline": "Auf PNG fokussiert; andere Raster zu JPG ebenfalls unterstützt."
  },
  "image_png_to_webp": {
    "drop_subline": "Auf PNG fokussiert; andere Raster zu WebP ebenfalls unterstützt."
  },
  "image_svg_to_png": {
    "drop_subline": ".svg-Dateien auswählen; Ausgabe ist PNG."
  },
  "image_webp_to_jpg": {
    "drop_subline": "Auf WebP fokussiert; andere Raster zu JPG ebenfalls unterstützt."
  },
  "image_webp_to_png": {
    "page_intro": "Viele Seiten liefern kleinere <webp>WebP</webp>-Assets; wenn Ihre Ziel-Toolchain nur PNG akzeptiert, hier lokal stapelkonvertieren, bevor Sie anderswo importieren. Mehrfach-Dateiauswahl unterstützt.",
    "tips_title": "Tipp",
    "tips_body": "Verlustbehaftetes, verlustfreies und transparentes WebP werden alle im Browser gerastert, bevor sie als PNG gespeichert werden — ähnlich wie der Export aus Desktop-Grafik-Apps in den meisten Fällen.",
    "drop_subline": "Auf WebP fokussiert; andere Raster OK; Ausgabe ist immer PNG."
  },
  "image_ico": {
    "intro_note": "favicon.ico aus einem Bild lokal erstellen: quadratische Größe wählen und herunterladen (PNG in ICO für moderne Browser & Windows).",
    "drop_desc": "Größe wählen, dann favicon.ico herunterladen.",
    "pick_label": "Bild auswählen (512×512 oder größer empfohlen)",
    "empty_hint": "Kein Bild ausgewählt.",
    "lbl_side": "Ausgabeseite (quadratisch)",
    "hint_one_size": "ICO enthält nur die ausgewählte Größe.",
    "err_pick_first": "Bitte zuerst ein Bild auswählen.",
    "err_canvas": "Canvas-Kontext konnte nicht erstellt werden",
    "msg_download_started": "Herunterladen von favicon.ico gestartet.",
    "msg_generate_fail": "Generierung fehlgeschlagen",
    "page_intro": "Ein großes Bild auswählen (512×512 oder größer empfohlen), Ausgabe-Kantelänge wählen, dann <favicon>favicon.ico</favicon> herunterladen."
  },
  "image_ocr": {
    "intro_note": "Tesseract-Worker, Core und Sprachpakete laden vom CDN (erster Lauf langsamer). Bilder bleiben in Ihrem Browser.",
    "lbl_langs": "Sprachen (Tesseract-Codes, z. B. eng, chi_sim, eng+chi_sim)",
    "lbl_image": "Bild",
    "hdr_result": "Erkannter Text",
    "prog_initializing": "Wird initialisiert …",
    "prog_recognizing": "Erkennen {pct}%",
    "empty_result": "(Kein Text erkannt)",
    "err_failed": "Erkennung fehlgeschlagen",
    "lang_zh_en": "Vereinfachtes Chinesisch + Englisch",
    "lang_zh": "Vereinfachtes Chinesisch",
    "lang_ja_en": "Japanisch + Englisch",
    "lang_zh_tw_en": "Traditionelles Chinesisch + Englisch",
    "copy": "Text kopieren",
    "download_txt": "TXT herunterladen"
  },
  "bcrypt": {
    "text_label": "Text​",
    "rounds_label": "Runden (4–31)",
    "generate": "Hash generieren",
    "copy": "Kopieren",
    "verify_hash_label": "Hash zur Verifikation",
    "verify": "Verifizieren",
    "match": "Übereinstimmung",
    "not_match": "Keine Übereinstimmung"
  },
  "sm3": {
    "text_label": "Eingabetext",
    "compute": "Berechnen",
    "copy": "Kopieren"
  },
  "sm4": {
    "key_label": "Schlüssel (32 Hex-Zeichen)",
    "text_label": "Eingabetext",
    "encrypt": "Verschlüsseln",
    "decrypt": "Entschlüsseln",
    "process": "Verarbeiten",
    "copy": "Kopieren",
    "error": "Fehler"
  },
  "sm2": {
    "generate_keypair": "Schlüsselpaar generieren",
    "public_key": "Öffentlicher Schlüssel",
    "private_key": "Privater Schlüssel",
    "text_label": "Eingabetext",
    "encrypt": "Verschlüsseln",
    "decrypt": "Entschlüsseln",
    "copy": "Kopieren",
    "error": "Fehler"
  },
  "password_strength": {
    "password_label": "Passwort",
    "level_0": "Schwach",
    "level_1": "Ausreichend",
    "level_2": "Stark",
    "level_3": "Sehr stark",
    "length": "Länge",
    "crack_time": "Knack-Zeit",
    "lower": "Kleinbuchstaben",
    "upper": "Großbuchstaben",
    "digit": "Ziffer",
    "special": "Sonderzeichen"
  },
  "wifi_qr": {
    "ssid": "SSID​",
    "password": "Passwort",
    "encryption": "Verschlüsselung",
    "none": "Keine",
    "generate": "QR generieren"
  },
  "json_to_go": {
    "struct_name": "Struktur-Name",
    "json_label": "JSON eingeben",
    "convert": "Konvertieren",
    "copy": "Kopieren",
    "parse_error": "JSON-Parsingfehler"
  },
  "json_to_java": {
    "class_name": "Klassenname",
    "json_label": "JSON eingeben",
    "convert": "Konvertieren",
    "copy": "Kopieren",
    "parse_error": "JSON-Parsingfehler"
  },
  "json_to_sql": {
    "table_name": "Tabellenname",
    "json_label": "JSON-Array eingeben",
    "convert": "Konvertieren",
    "copy": "Kopieren",
    "parse_error": "JSON-Parsingfehler",
    "not_array": "Eingabe ist kein JSON-Array"
  },
  "json_merge": {
    "json_a": "JSON A​",
    "json_b": "JSON B​",
    "merge": "Zusammenführen",
    "copy": "Kopieren",
    "parse_error": "JSON-Parsingfehler"
  },
  "nginx_format": {
    "input_label": "Nginx-Konfiguration eingeben",
    "format": "Format​",
    "copy": "Kopieren"
  },
  "docker_to_compose": {
    "cmd_label": "docker run-Befehl eingeben",
    "convert": "Konvertieren",
    "copy": "Kopieren"
  },
  "regex_cheatsheet": {
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "faker": {
    "generate": "Fake-Daten generieren"
  },
  "deobfuscate": {
    "input_label": "JS-Code eingeben",
    "format": "Format​",
    "copy": "Kopieren"
  },
  "text_pinyin": {
    "input_label": "Chinesisch eingeben",
    "copy": "Kopieren"
  },
  "text_zh_convert": {
    "s2t": "Einf→Trad",
    "t2s": "Trad→Einf",
    "input_label": "Eingabetext",
    "copy": "Kopieren"
  },
  "text_mask": {
    "input_label": "Eingabetext",
    "keep_first": "Erste N behalten",
    "keep_last": "Letzte N behalten",
    "mask_char": "Maskierungszeichen",
    "copy": "Kopieren"
  },
  "text_emoji": {
    "search_placeholder": "Emoji suchen …",
    "copied": "Kopiert"
  },
  "text_synonym": {
    "input_label": "Wort eingeben",
    "synonyms": "Synonyme",
    "antonyms": "Antonyme",
    "not_found": "Nicht im Wörterbuch gefunden"
  },
  "totp": {
    "secret_label": "Geheimnis (Base32)",
    "remaining": "{sec} s verbleibend"
  },
  "basic_auth": {
    "username": "Benutzername",
    "password": "Passwort",
    "copy": "Kopieren"
  },
  "cookie_parse": {
    "input_label": "Cookie-Zeichenfolge eingeben",
    "key": "Schlüssel",
    "value": "Wert"
  },
  "jwt_generate": {
    "header": "Header (JSON)​",
    "payload": "Nutzdaten (JSON)",
    "secret": "Geheimnis",
    "generate": "JWT generieren",
    "copy": "Kopieren",
    "error": "Generierung fehlgeschlagen"
  },
  "svg_placeholder": {
    "width": "Breite",
    "height": "Höhe",
    "text": "Text​",
    "fg": "Vordergrund",
    "bg": "Hintergrund",
    "copy_svg": "SVG kopieren",
    "copy_data_url": "Data-URL kopieren"
  },
  "stopwatch": {
    "start": "Start​",
    "pause": "Pause​",
    "resume": "Fortsetzen",
    "lap": "Runde",
    "reset": "Zurücksetzen",
    "lap_n": "Runde {n}"
  },
  "date_calc": {
    "add_days": "Tage addieren/subtrahieren",
    "date_diff": "Datumsdifferenz",
    "date1": "Datum",
    "date2": "Datum 2",
    "days": "Tage",
    "calc": "Berechnen"
  },
  "percentage": {
    "mode_of": "X % von Y",
    "mode_is": "X ist welches % von Y",
    "mode_change": "Änderungsrate",
    "percent": "Prozent",
    "of_value": "Wert",
    "value": "Wert",
    "total": "Gesamt",
    "from": "Von",
    "to": "Bis"
  },
  "temperature": {
    "value": "Temperatur"
  },
  "roman_numeral": {
    "to_roman": "→ Römisch",
    "from_roman": "→ Arabisch",
    "arabic": "Arabisch",
    "roman": "Römisch"
  },
  "image_greyscale": {
    "process": "Zu Graustufen",
    "download": "Herunterladen"
  },
  "image_nine_grid": {
    "process": "Neun-Feld-Zuschnitt"
  },
  "mac_lookup": {
    "input_label": "MAC-Adresse eingeben",
    "not_found": "Hersteller nicht gefunden"
  },
  "ipv4_range": {
    "start": "Start-IP",
    "end": "End-IP"
  },
  "port_reference": {
    "port": "Port​",
    "proto": "Protokoll",
    "name": "Name​"
  },
  "math_eval": {
    "placeholder": "Ausdruck eingeben, z. B. 2^10 + sqrt(16)",
    "calc": "Berechnen",
    "preview": "Vorschau",
    "supported": "Unterstützte Operationen",
    "history": "Verlauf",
    "clear": "Leeren",
    "copy_result": "Ergebnis kopieren",
    "copied": "Ergebnis kopiert.",
    "radian_note": "Trigonometrische Funktionen verwenden Bogenmaß, zum Beispiel sin(pi/2) = 1."
  },
  "eta_calc": {
    "total": "Gesamt",
    "done": "Fertig",
    "elapsed": "Vergangen",
    "elapsed_unit": "Sekunden",
    "speed": "Geschwindigkeit",
    "speed_unit": "/s​",
    "remaining": "Restzeit",
    "total_time": "Gesamt-Schätzung"
  },
  "mac_gen": {
    "count": "Anzahl",
    "separator": "Trennzeichen",
    "prefix": "Präfix (optional)",
    "uppercase": "Großbuchstaben",
    "generate": "Generieren",
    "results": "Ergebnisse",
    "copy_all": "Alle kopieren"
  },
  "device_info": {
    "note": "Aktuelle Browser-Umgebungsinformationen erkennen.",
    "property": "Eigenschaft",
    "value": "Wert"
  },
  "bip39": {
    "strength": "Entropie-Bits",
    "generate": "Generieren",
    "loading": "Wird geladen…",
    "mnemonic": "Mnemonic​",
    "copy": "Kopieren",
    "error": "Generierung fehlgeschlagen"
  },
  "rsa_keygen": {
    "key_size": "Schlüsselgröße",
    "generate": "Schlüsselpaar generieren",
    "generating": "Wird generiert…",
    "public_key": "Öffentlicher Schlüssel (PEM)",
    "private_key": "Privater Schlüssel (PEM)",
    "copy": "Kopieren"
  },
  "xml_json": {
    "input": "Eingabe",
    "output": "Ausgabe",
    "convert": "Konvertieren",
    "copy": "Kopieren"
  },
  "json_minify": {
    "input": "JSON eingeben",
    "minify": "Minimieren",
    "output": "Ausgabe",
    "copy": "Kopieren",
    "original": "Original​",
    "minified_size": "Minimiert",
    "saved": "Gespeichert"
  },
  "numeronym": {
    "encode": "Kodieren",
    "decode": "Dekodieren",
    "examples": "Häufige Beispiele"
  },
  "ascii_art": {
    "text": "Text​",
    "char_set": "Füllzeichen",
    "result": "Ergebnis",
    "copy": "Kopieren",
    "hint": "Unterstützt englische Buchstaben, Ziffern und einige Interpunktion, bis zu 30 Zeichen."
  },
  "idcard": {
    "input_label": "Ausweisnummer eingeben",
    "valid": "Gültig",
    "invalid": "Ungültig",
    "province": "Provinz",
    "birthday": "Geburtsdatum",
    "gender": "Geschlecht",
    "male": "Männlich",
    "female": "Weiblich",
    "unknown": "Unbekannt"
  },
  "chinese_colors": {
    "copied": "Kopiert"
  },
  "relationship": {
    "input_label": "Beziehungskette eingeben (z. B. father,mother)",
    "placeholder": "Vater,Mutter",
    "unknown": "Unbekannt"
  },
  "curl_to_code": {
    "input_label": "cURL-Befehl",
    "lang_label": "Zielsprache",
    "convert": "Konvertieren",
    "output": "Ausgabecode",
    "copy": "Kopieren",
    "copied": "Kopiert",
    "err_parse": "cURL-Befehl konnte nicht geparst werden"
  },
  "box_shadow": {
    "layer": "Ebene",
    "remove": "Entfernen",
    "offsetX": "Versatz X",
    "offsetY": "Versatz Y",
    "blur": "Weichzeichnen",
    "spread": "Verteilen",
    "color": "Farbe",
    "add_layer": "Ebene hinzufügen",
    "preview": "Vorschau",
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "border_radius": {
    "top_left": "Oben links",
    "top_right": "Oben rechts",
    "bottom_right": "Unten rechts",
    "bottom_left": "Unten links",
    "preview": "Vorschau",
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "flexbox": {
    "direction": "flex-direction​",
    "justify_content": "justify-content​",
    "align_items": "align-items​",
    "flex_wrap": "flex-wrap​",
    "gap": "gap​",
    "add_child": "Kind hinzufügen",
    "remove_child": "Kind entfernen",
    "preview": "Vorschau",
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "gradient": {
    "type": "Typ",
    "angle": "Winkel",
    "color_stops": "Farbbverläufe",
    "remove": "Entfernen",
    "add_stop": "Verlaufstopp hinzufügen",
    "preview": "Vorschau",
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "css_animation": {
    "preset": "Voreinstellung",
    "duration": "Dauer (s)",
    "timing": "Zeitsteuerung",
    "iteration": "Iteration​",
    "keyframes": "Keyframes​",
    "preview": "Vorschau",
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "color_blindness": {
    "input_color": "Farbe eingeben",
    "original": "Original​",
    "palette": "Paletten-Vorschau"
  },
  "token_count": {
    "input_label": "Eingabetext",
    "placeholder": "Text eingeben, um die Token-Anzahl zu schätzen …",
    "chars": "Zeichen",
    "words": "Wörter",
    "lines": "Zeilen",
    "estimate": "Token-Schätzung",
    "tokens": "Tokens",
    "of_context": "des Kontexts",
    "disclaimer": "Annähernde Schätzung. Die tatsächliche Anzahl hängt vom spezifischen Tokenizer ab.",
    "model": "Referenzmodell",
    "output_tokens": "Erwartete Ausgabe-Tokens",
    "input_estimate": "Geschätzte Eingabe-Tokens",
    "context_usage": "Kontext-Nutzung",
    "estimated_cost": "Geschätzte Kosten (USD)",
    "disclaimer_extended": "Dies ist eine zeichenbasierte Näherung, kein exaktes Ergebnis eines offiziellen Tokenizers. Preise und Kontextgrenzen können sich ändern; prüfen Sie die aktuellsten Preise des Anbieters, bevor Sie eine Anfrage senden."
  },
  "screenshot_beautify": {
    "upload": "Screenshot hochladen",
    "bg_color": "Hintergrund",
    "padding": "Innenabstand",
    "border_radius": "Rahmenradius",
    "shadow_blur": "Schattenweichzeichnung",
    "shadow_color": "Schattenfarbe",
    "preview": "Vorschau",
    "no_image": "Bitte zuerst einen Screenshot hochladen",
    "export_png": "PNG exportieren"
  },
  "pangu_spacing": {
    "input_label": "Eingabetext",
    "placeholder": "Hello世界，这是123test文本​",
    "output": "Ergebnis",
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "aspect_ratio": {
    "width": "Breite",
    "height": "Höhe",
    "calc_ratio": "Verhältnis berechnen",
    "common_ratios": "Häufige Verhältnisse",
    "reverse_calc": "Umgekehrt berechnen",
    "ratio_w": "Verhältnis B",
    "ratio_h": "Verhältnis H",
    "known_side": "Bekannte Seite",
    "known_value": "Bekannter Wert",
    "result": "Ergebnis"
  },
  "loan_calc": {
    "principal": "Kapitalbetrag",
    "annual_rate": "Jährlicher Zins (%)",
    "term": "Kreditlaufzeit (Jahre)",
    "term_half_year": "6 Monate ({months} Perioden)",
    "term_years": "{years, plural, one {1 Jahr} other {# Jahre}} ({months} Perioden)",
    "method": "Methode",
    "equal_installment": "Gleiche Rate",
    "equal_principal": "Gleiches Kapital",
    "monthly_payment": "Monatliche Zahlung",
    "total_interest": "Gesamtzinsen",
    "total_payment": "Gesamtzahlung",
    "schedule": "Zahlungsplan",
    "month": "Monat",
    "payment": "Zahlung",
    "principal_part": "Kapital",
    "interest_part": "Zins",
    "remaining": "Rest"
  },
  "bmi": {
    "height": "Höhe",
    "weight": "Gewicht",
    "underweight": "Untergewicht",
    "normal": "Normalgewicht",
    "overweight": "Übergewicht",
    "obese": "Adipös",
    "range_chart": "BMI-Bereichsdiagramm"
  },
  "work_hours": {
    "summary_title": "Stundenzusammenfassung",
    "auto_calculate": "Wird automatisch neu berechnet, wenn sich eine Schicht ändert",
    "shifts_unit": "Schichten",
    "total_work": "Gesamtarbeit",
    "regular_hours": "Reguläre Stunden",
    "overtime": "Überstunden",
    "estimated_pay": "Geschätzter Lohn",
    "enter_hourly_rate": "Stundenlohn eingeben, um zu berechnen",
    "total_span": "Vor-Ort-Spanne",
    "total_break": "Gesamtpausen",
    "rules_title": "Berechnungs- und Lohregeln",
    "rules_hint": "Überstunden werden pro Schicht über dem täglichen Standard berechnet. Lohbeträge sind nur Schätzungen.",
    "standard_hours_day": "Standardstunden / Tag",
    "rounding": "Zeitrundung",
    "no_rounding": "Keine Rundung (exakte Minuten)",
    "nearest_minutes": "Nächste {minutes} Minuten",
    "hourly_rate": "Stundenlohn",
    "overtime_multiplier": "Überstunden-Multiplikator",
    "currency": "Währung",
    "timesheet_title": "Schichtdetails",
    "overnight_hint": "Eine Endzeit vor der Startzeit wird als übers Nacht-Schicht behandelt.",
    "fill_week": "Diese Arbeitswoche ausfüllen",
    "add_shift": "Schicht hinzufügen",
    "quick_shift": "Schnell hinzufügen",
    "shift": "Schicht",
    "date": "Datum",
    "start_time": "Startzeit",
    "end_time": "Endzeit",
    "break_minutes": "Pause (Minuten)",
    "note": "Hinweis",
    "note_placeholder": "Projekt, Ort usw. (optional)",
    "duplicate": "Duplizieren",
    "remove": "Entfernen",
    "overnight": "Über Nacht",
    "break_too_long": "Die Pause ist länger als die Schichtdauer. Arbeitszeit für diese Schicht wird als null gezählt.",
    "work_time": "Arbeitszeit",
    "break_short": "Pause",
    "hour_short": "h​",
    "minute_short": "m​",
    "work_minutes": "Arbeitsminuten",
    "regular_minutes": "Reguläre Minuten",
    "overtime_minutes": "Überstundenminuten",
    "total_pay": "Gesamtlohn",
    "report_title": "Zeittabellenbericht",
    "report_hint": "Lesbaren Bericht kopieren oder CSV für weitere Bearbeitung exportieren.",
    "copy_report": "Bericht kopieren",
    "export_csv": "CSV exportieren",
    "reset": "Schichten zurücksetzen",
    "copied": "Zeittabellenbericht kopiert.",
    "exported": "CSV exportiert.",
    "week_filled": "Schichten von Montag bis Freitag wurden für diese Woche hinzugefügt."
  },
  "template_filler": {
    "template_label": "Vorlagentext",
    "template_placeholder": "Vorlage eingeben, z. B.: Hello, '{' '{' 'name' '}' '}'!",
    "variables": "Variablen",
    "fill_data": "Daten ausfüllen",
    "add_row": "Zeile hinzufügen",
    "row": "Zeile",
    "remove_row": "Entfernen",
    "result": "Ergebnis",
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "url_defang": {
    "defang": "Defang​",
    "refang": "Refang​",
    "input_label": "URL eingeben",
    "output": "Ausgabe",
    "copy": "Kopieren",
    "copied": "Kopiert",
    "rules": "Regeln",
    "rule1": ":// → [://]​",
    "rule2": ". → [.]​",
    "rule3": "Refang ist die umgekehrte Operation"
  },
  "protobuf_decode": {
    "decode": "Dekodieren",
    "invalid_hex": "Ungültige Hex-Eingabe",
    "result": "Ergebnis",
    "field": "Feld",
    "wire_type": "Wire-Typ",
    "value": "Wert",
    "unknown_wire": "Unbekannter Wire-Typ"
  },
  "pdf_signature": {
    "upload": "PDF hochladen",
    "checking": "Wird geprüft …",
    "signed": "Signiert",
    "not_signed": "Nicht signiert",
    "file": "Datei",
    "pages": "Seiten",
    "parse_error": "PDF-Parsingfehler"
  },
  "dev_string_obfuscator": {
    "input_label": "Code eingeben",
    "input_placeholder": "JavaScript-Code mit Zeichenfolge-Literalen einfügen …",
    "method_label": "Verschleierungsmethode",
    "method_base64": "Base64​",
    "method_hex": "Hex​",
    "method_unicode": "Unicode​",
    "method_charcode": "CharCode​",
    "method_reverse": "Umgekehrt",
    "obfuscate": "Verschleiern",
    "output": "Verschleiertes Ergebnis",
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "dev_git_cheatsheet": {
    "category_basic": "Grundlegende Operationen",
    "category_branch": "Zweigverwaltung",
    "category_remote": "Remote-Repository",
    "category_undo": "Rückgängig & Rollback",
    "category_stash": "Stash​",
    "category_log": "Log & Verlauf",
    "copy": "Kopieren",
    "copied": "Kopiert",
    "click_copy": "Zum Kopieren klicken"
  },
  "html_wysiwyg": {
    "bold": "Fett",
    "italic": "Kursiv",
    "underline": "Unterstrichen",
    "strikethrough": "Durchgestrichen",
    "ordered_list": "Geordnete Liste",
    "unordered_list": "Ungeordnete Liste",
    "mode_edit": "Visuell",
    "source_view": "Quellansicht",
    "preview": "Vorschau",
    "copy_html": "HTML kopieren",
    "copied": "Kopiert",
    "prompt_url": "Link-URL",
    "prompt_img_url": "Bild-URL"
  },
  "dev_css_unit_converter": {
    "context_title": "Px-Referenz",
    "input_title": "Eingabe",
    "value_label": "Wert",
    "from_unit": "Von Einheit",
    "results_title": "Konvertierungen",
    "col_unit": "Einheit",
    "col_value": "Wert",
    "base_size_label": "Basis-Schriftgröße (px)",
    "viewport_width": "Viewport-Breite (px)",
    "viewport_height": "Viewport-Höhe (px)",
    "result": "Konvertierungsergebnis",
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "web_meta_tag_generator": {
    "general": "Grunddaten-Metadaten",
    "title_label": "Titel",
    "description_label": "Beschreibung",
    "viewport_label": "Viewport​",
    "charset_label": "Zeichensatz",
    "author_label": "Autor",
    "keywords_label": "Schlüsselwörter",
    "robots_label": "Robots​",
    "og_title": "OG-Titel",
    "og_description": "OG-Beschreibung",
    "og_image": "OG-Bild-URL",
    "og_url": "OG-URL",
    "twitter_card": "Twitter-Card-Typ",
    "generate": "Generieren",
    "output": "Meta-Tag-Code",
    "preview": "Vorschau",
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "encode_unicode": {
    "input_label": "Eingabetext",
    "output_label": "Ausgabe",
    "encode": "Kodieren",
    "decode": "Dekodieren",
    "format_label": "Format​",
    "format_backslash_u": "\\uXXXX​",
    "format_html_entity": "&#xXXXX;​",
    "copy": "Kopieren",
    "copied": "Kopiert",
    "decode_failed": "Dekodieren fehlgeschlagen"
  },
  "encode_quoted_printable": {
    "input_label": "Eingabe",
    "output_label": "Ausgabe",
    "line_len": "Maximale Zeilenlänge",
    "encode": "Kodieren",
    "decode": "Dekodieren",
    "copy": "Kopieren",
    "copied": "Kopiert",
    "encode_failed": "Kodieren fehlgeschlagen",
    "decode_failed": "Dekodieren fehlgeschlagen",
    "err_decode": "Quoted-Printable-Dekodierung fehlgeschlagen"
  },
  "encode_uuencode": {
    "input_label": "Eingabe",
    "output_label": "Ausgabe",
    "encode": "UUEncode​",
    "decode": "UUDecode​",
    "filename_label": "Dateiname",
    "mode": "Dateimodus (z. B. 644)",
    "copy": "Kopieren",
    "copied": "Kopiert",
    "encode_failed": "Kodieren fehlgeschlagen",
    "decode_failed": "Dekodieren fehlgeschlagen",
    "err_decode": "UUDecode fehlgeschlagen"
  },
  "encode_base85": {
    "input_label": "Eingabe",
    "input_mode": "Eingabemodus",
    "mode_text": "Text (UTF-8)​",
    "mode_hex": "Hex-Byte",
    "delimiters": "mit <~ ~> umbrechen",
    "output_label": "Ausgabe",
    "encode": "Kodieren",
    "decode": "Dekodieren",
    "copy": "Kopieren",
    "copied": "Kopiert",
    "invalid_hex": "Ungültige Hex-Eingabe",
    "encode_failed": "Kodieren fehlgeschlagen",
    "decode_failed": "Dekodieren fehlgeschlagen",
    "err_decode": "Base85-Dekodierung fehlgeschlagen"
  },
  "camera_recorder": {
    "select_device": "Kameragerät",
    "default": "Standard",
    "start_camera": "Kamera starten",
    "stop_camera": "Kamera stoppen",
    "take_photo": "Foto aufnehmen",
    "start_record": "Aufnahme starten",
    "stop_record": "Aufnahme stoppen",
    "pause": "Pause​",
    "resume": "Fortsetzen",
    "recording": "Aufnahme …",
    "paused": "Pausiert",
    "photo_result": "Foto",
    "video_result": "Video​",
    "export_photo": "PNG exportieren",
    "export_video": "WebM exportieren",
    "no_camera": "Kamera nicht zugreifbar"
  },
  "text_regex_memo": {
    "category_chars": "Zeichenklassen",
    "category_quantifiers": "Quantifizierer",
    "category_anchors": "Anker",
    "category_groups": "Gruppen & Referenzen",
    "category_lookaround": "Lookaround (Lookahead / Lookbehind)",
    "category_flags": "Flags​",
    "copy": "Kopieren",
    "click_copy": "Zum Kopieren klicken",
    "copied": "Kopiert"
  },
  "dev_git_diff_viewer": {
    "input_label": "Diff-Ausgabe einfügen",
    "input_placeholder": "git-diff-Ausgabetext einfügen …",
    "parse": "Parsen",
    "files_changed": "Geänderte Dateien",
    "additions": "Hinzufügungen",
    "deletions": "Löschungen",
    "changes": "Änderungen",
    "err_parse": "Diff-Ausgabe konnte nicht geparst werden"
  },
  "web_url_query_editor": {
    "url_label": "URL eingeben",
    "url_placeholder": "https://example.com?key=value&foo=bar​",
    "parse": "Parsen",
    "url_encode": "Beim Erstellen URL-kodieren",
    "params": "Abfrageparameter",
    "result": "Erstellte URL",
    "key": "Schlüssel",
    "value": "Wert",
    "add_param": "Parameter hinzufügen",
    "remove_param": "Entfernen",
    "preview": "URL-Vorschau",
    "copy": "Kopieren",
    "copied": "Kopiert",
    "err_invalid_url": "Ungültige URL"
  },
  "tax_calc": {
    "income_label": "Monatliches Gehalt (CNY)",
    "social_label": "Sozialversicherung (monatlich, CNY)",
    "special_label": "Besondere Abzüge (monatlich, CNY)",
    "calc": "Berechnen",
    "taxable": "Monatliches steuerpflichtiges Einkommen: ",
    "annual_taxable": "Jährliches steuerpflichtiges Einkommen: ",
    "rate": "Steuersatz: ",
    "monthly_tax": "Monatliche Steuer: ",
    "annual_tax": "Jährliche Steuer: ",
    "after_tax": "Einkommen nach Steuern",
    "assumption": "Schätzt die kumulative Quellensteuer für Festlandchina-Residenten und nimmt das gleiche monatliche Einkommen und Abzüge übers Jahr hinweg an.",
    "schedule": "Monatliche kumulative Quellensteuer",
    "month": "Monat",
    "monthly_taxable": "Monatlich steuerpflichtig",
    "cumulative_taxable": "Kumulativ steuerpflichtig",
    "cumulative_tax": "Kumulative Steuer",
    "disclaimer": "Nur Schätzung; schließt Sonderfälle wie Jahresboni, Diensteinkünfte und frühere Quellensteuer-Abweichungen aus."
  },
  "coord_convert": {
    "lng_label": "Längengrad (lng)",
    "lat_label": "Breitengrad (lat)",
    "from_label": "Von",
    "to_label": "Bis",
    "convert": "Konvertieren",
    "result_label": "Ergebnis",
    "copy": "Kopieren"
  },
  "sensitive_words": {
    "placeholder": "Offizielle Documente, Pressemitteilungen, Bekanntmachungen usw. einfügen",
    "check": "Strenge Prüfung",
    "found_prefix": "Sensible Begriffe gefunden ({count} Typen): ",
    "col_word": "Begriff",
    "col_count": "Anzahl",
    "no_found": "Keine Wörterbuchtreffer, aber eine manuelle Prüfung ist vor dem Veröffentlichen weiterhin erforderlich.",
    "bank_count": "Strenges Regierungswörterbuch: {count} Begriffe",
    "mode_hint": "Evasion-Erkennung aktiv: Leerraum und Nullbreiten-Zeichen entfernt; Volbreite normalisiert.",
    "disclaimer": "Dieses Werkzeug ersetzt keine Vertraulichkeitsprüfung oder endgültige menschliche Freigabe. Keine Treffer bedeuten nicht, dass veröffentlichbar.",
    "custom_dict_title": "Benutzerdefinierte Wortliste",
    "custom_dict_hint": "UTF-8-Text, ein Begriff pro Zeile; mit # beginnende Zeilen sind Kommentare. Lokal in Ihrem Browser gespeichert.",
    "upload_dict": "Wörterbuch hochladen (.txt)",
    "upload_txt": "Zu prüfenden Text hochladen (.txt)",
    "clear_custom": "Benutzerdefinierte Liste leeren",
    "custom_bank_count": "Benutzerdefiniert {count}",
    "active_bank_count": "Aktiv {count}",
    "source_file": "Quelldatei",
    "highlight_title": "Hervorgehobene Vorschau",
    "col_position": "Positionen",
    "dict_imported": "{count} benutzerdefinierte Begriffe importiert",
    "dict_cleared": "Benutzerdefinierte Liste geleert",
    "err_dict_empty": "Wörterbuchdatei ist leer oder ungültig",
    "err_dict_parse": "Wörterbuchdatei konnte nicht gelesen werden",
    "err_txt_read": "Textdatei konnte nicht gelesen werden"
  },
  "signature": {
    "color_label": "Strichfarbe",
    "width_label": "Strichbreite",
    "export": "PNG exportieren",
    "clear": "Leeren"
  },
  "subtitle_convert": {
    "from_fmt": "Von Format",
    "to_fmt": "Zu Format",
    "input_placeholder": "Untertitelinhalt einfügen …",
    "convert": "Konvertieren",
    "output": "Ausgabe",
    "copy": "Kopieren"
  },
  "htpasswd": {
    "username_label": "Benutzername",
    "password_label": "Passwort",
    "algorithm_label": "Algorithmus",
    "add": "Hinzufügen",
    "copy": "Alle kopieren"
  },
  "gcd_lcm": {
    "input_label": "Zahlen (komma-getrennt)",
    "input_placeholder": "z. B. 12, 18, 24",
    "calc": "Berechnen"
  },
  "periodic_table": {
    "atomic_number": "Ordnungszahl: ",
    "atomic_mass": "Atommasse: ",
    "category": "Kategorie: "
  },
  "danmaku": {
    "text_label": "Danmaku-Text",
    "color_label": "Farbe",
    "speed_label": "Geschwindigkeit",
    "send": "Senden"
  },
  "teleprompter": {
    "placeholder": "Skriptinhalt eingeben …",
    "speed_label": "Geschwindigkeit",
    "font_size_label": "Schriftgröße",
    "mirror_label": "Spiegeln",
    "play": "Abspielen",
    "stop": "Stoppen",
    "pause": "Pause​"
  },
  "batch_rename": {
    "add_files": "Dateien hinzufügen",
    "prefix_label": "Präfix",
    "start_num_label": "Startnummer",
    "pad_len_label": "Nullauffüllung",
    "ext_label": "Endung",
    "col_original": "Original​",
    "col_renamed": "Umbenannt",
    "copy": "Liste kopieren"
  },
  "bankcard_bin": {
    "lookup_title": "Karten-BIN-/IIN-Analyse",
    "lookup_hint": "Erkennen Sie das Kartennetzwerk, bevorzugen Sie die lokale Datenbank mit {count} großen chinesischen Ausgebern, und validieren Sie vollständige Kartennummern.",
    "mode_single": "Einzelabfrage",
    "mode_batch": "Stapelabfrage",
    "card_label": "BIN, IIN oder vollständige Kartennummer",
    "placeholder": "6–19 Ziffern eingeben; Leerzeichen werden akzeptiert",
    "clear": "Leeren",
    "examples": "Beispiele",
    "privacy_note": "Alle Erkennung und Validierung läuft in diesem Browser. Kartennummern werden nicht hochgeladen, und Ergebnisse zeigen nur maskierte Nummern.",
    "empty_title": "Die ersten 6 Ziffern eingeben, um zu beginnen",
    "empty_hint": "Eine vollständige Kartennummer eingeben, um zusätzlich eine Luhn-Prüfsumme zu berechnen.",
    "masked_number": "Maskierte Nummer",
    "bank": "Ausgeber",
    "network": "Kartennetzwerk",
    "card_type": "Kartenart",
    "bin6": "6-stellige BIN",
    "iin8": "8-stellige IIN",
    "checksum": "Luhn-Prüfung",
    "need_8_digits": "Nach 8 Ziffern angezeigt",
    "issuer_matched": "Ausgeber gefunden",
    "issuer_not_matched": "Ausgeber nicht gefunden",
    "issuer_unknown": "Ausgeber nicht verfügbar",
    "digit_unit": "Ziffern",
    "digits": "Länge",
    "copy_result": "Ergebnis kopieren",
    "copied": "Ergebnisse kopiert.",
    "exported": "CSV exportiert.",
    "checksum_not_run": "Für eine vollständige Nummernprüfung mindestens 13 Ziffern eingeben",
    "checksum_valid": "Bestanden",
    "checksum_invalid": "Fehlgeschlagen",
    "checksum_warning": "Diese Nummer ist bei der Luhn-Prüfung fehlgeschlagen und kann einen Tippfehler enthalten. Luhn prüft nur die Nummerstruktur; sie beweist nicht, dass eine Karte existiert oder aktiv ist.",
    "data_disclaimer": "Ausgeber-, Länder- und Kartenart-Ergebnisse verwenden offlinie öffentliche BIN-Daten und lokale Regeln. Sie können sich ändern, wenn Ausgeber Bereiche hinzufügen oder Produkte umorganisieren. Für Zahlungen, Risikoentscheidungen oder andere kritische Verwendungen verifizieren Sie gegen Live-Daten des Ausgebers oder Zahlungsnetzwerks. Die globale Add-on-Datenbank basiert auf iannuttall/binlist-data (CC BY 4.0), einem archivierten Upstream-Datensatz, der keine offizielle IIN-Registry ist.",
    "type_credit": "Kredit",
    "type_debit": "Debet",
    "type_prepaid": "Prepaid​",
    "type_unknown": "Unbekannt",
    "network_unionpay": "UnionPay​",
    "network_visa": "Visa​",
    "network_mastercard": "Mastercard​",
    "network_amex": "American Express​",
    "network_jcb": "JCB​",
    "network_discover": "Discover​",
    "network_diners": "Diners Club​",
    "network_maestro": "Maestro​",
    "network_unknown": "Unbekannt / andere",
    "batch_label": "Kartennummern oder BINs",
    "batch_placeholder": "Eine pro Zeile, oder mit Kommas / Semikola trennen\n622202\n621700\n4111 1111 1111 1111",
    "batch_hint": "Bis zu 100 Einträge auf einmal. Duplikate werden entfernt, und Exporte enthalten nie demaskierte vollständige Kartennummern.",
    "run_batch": "Stapelabfrage ausführen",
    "batch_empty": "Bitte zuerst mindestens einen Wert eingeben.",
    "batch_complete": "Verarbeitet {count} Einträge.",
    "batch_results": "Stapelergebnisse",
    "batch_summary": "{total} gesamt · {matched} Ausgeber gefunden · {valid} Luhn-Prüfung bestanden",
    "copy_table": "Tabelle kopieren",
    "export_csv": "CSV exportieren",
    "feature_local": "Browser-lokale Verarbeitung",
    "feature_local_desc": "Lädt nur den benötigten 6-/8-stelligen BIN-Shard und ruft keine Live-BIN-APIs von Drittanbietern auf, daher werden vollständige Kartennummern nicht extern gesendet.",
    "feature_validation": "Erkennung und Validierung",
    "feature_validation_desc": "Das Netzwerk wird aus Nummernbereichen erkannt; vollständige Nummern werden separat mit Luhn geprüft.",
    "feature_iin": "6- und 8-stellige Unterstützung",
    "feature_iin_desc": "Zeigt sowohl das traditionelle 6-stellige BIN als auch das moderne 8-stellige IIN zum Vergleich.",
    "global_hint": "Die globale Add-on-Datenbank deckt die aktuellen Locale-Regionen, Lateinamerika, Brasilien, Deutschland, Russland und Frankreich ab. Es werden nur die ersten 6 / 8 BIN-Ziffern verwendet.",
    "global_loading": "Globale BIN-Add-on-Datenbank wird geladen …",
    "country": "Land / Region",
    "country_unknown": "Nicht verfügbar",
    "card_category": "Kartenebene / Produkt",
    "category_unknown": "Nicht verfügbar",
    "data_source": "Datenquelle",
    "source_china_local": "Lokale China-Datenbank",
    "source_binlist_data": "binlist-data öffentlicher Datensatz",
    "source_rules": "Nummernbereichsregeln",
    "source_unknown": "Keine Übereinstimmung",
    "batch_loading": "BIN-Daten werden geladen und {count} Einträge verarbeitet …",
    "type_charge": "Chargecard",
    "network_elo": "Elo​",
    "network_laser": "Laser​",
    "network_solo": "Solo​",
    "network_atm": "ATM​",
    "network_other": "Andere",
    "input_kind": "Eingabetyp",
    "input_kind_bin6": "6-stellige BIN",
    "input_kind_iin8": "8-stellige IIN / Präfix",
    "input_kind_card": "Vollständige Kartennummer",
    "input_kind_partial": "Weniger als 6 Ziffern",
    "confidence": "Konfidenz",
    "confidence_high": "Hoch: durch 8+-stelliges Präfix gefunden",
    "confidence_medium": "Mittel: durch 6-stellige BIN gefunden",
    "confidence_low": "Niedrig: nur Regel oder nicht gefunden",
    "result_note": "Hinweis",
    "note_exact_or_iin": "Durch 8+-stelliges Präfix für präzisere Identifizierung gefunden.",
    "note_bin6_match": "Durch 6-stellige BIN gefunden; neuere 8-stellige IIN kann spezifischer sein.",
    "note_network_only": "Nur Kartennetzwerk erkannt; Ausgeber nicht gefunden.",
    "note_not_found": "Ausgeber und Netzwerk nicht gefunden. Eingabe prüfen oder offizielle Daten für Entscheidungen verwenden.",
    "filter_all": "Alle",
    "filter_matched": "Ausgeber gefunden",
    "filter_unmatched": "Nicht gefunden",
    "filter_luhn_failed": "Luhn fehlgeschlagen"
  },
  "gif_frames": {
    "hint": "Eine GIF-Datei hochladen, um Frames zu extrahieren",
    "frame_count": "Einzelbilder: "
  },
  "code_screenshot": {
    "lang_label": "Sprache",
    "bg_label": "Hintergrund",
    "export": "PNG exportieren"
  },
  "grid_paper": {
    "type_label": "Rastertyp",
    "type_tian": "Tian​",
    "type_mi": "Mi​",
    "type_fang": "Quadratisch",
    "type_dot": "Punkt",
    "cell_size_label": "Zellengröße (px)",
    "rows_label": "Zeilen",
    "cols_label": "Spalten",
    "generate": "Generieren",
    "export": "PNG exportieren"
  },
  "exchange_rate": {
    "amount_label": "Betrag",
    "from_label": "Von",
    "to_label": "Bis",
    "convert": "Konvertieren",
    "disclaimer": "Wechselkurse schwanken und dienen nur der Referenz. Verwenden Sie für die Abrechnung das Angebot Ihrer Bank oder Ihres Zahlungsanbieters.",
    "swap": "Währungen tauschen",
    "refresh": "Kurse aktualisieren",
    "refreshing": "Wird aktualisiert …",
    "live_source": "ExchangeRate-API tägliche Referenzkurse",
    "offline_source": "Offline-Ausweichkurse",
    "live_failed": "Live-Kurse konnten nicht geladen werden. Ein datierter Offline-Ausweichkurs wird verwendet."
  },
  "hanzi_decompose": {
    "placeholder": "Chinesische Zeichen eingeben …",
    "decompose": "Zerlegen",
    "unknown": "N/V",
    "done": "{count} Hanzi-Zeichen zerlegt.",
    "no_hanzi": "Keine Hanzi-Zeichen gefunden.",
    "copied": "Ergebnisse kopiert.",
    "exported": "CSV exportiert.",
    "example": "Beispiel verwenden",
    "results_title": "Zerlegungsergebnisse",
    "copy": "Ergebnisse kopieren",
    "export_csv": "CSV exportieren",
    "col_char": "Zeichen",
    "col_parts": "Bestandteile",
    "col_structure": "Struktur",
    "structure_unknown": "Unbekannt",
    "structure_single": "Einzige Komponente",
    "structure_pair": "Zweiteilige Struktur",
    "structure_multi": "Mehrteilige Struktur"
  },
  "audio_editor": {
    "start_label": "Start (s)",
    "end_label": "Ende (s)",
    "duration": "Dauer: ",
    "clip": "Zuschneiden & WAV exportieren"
  },
  "csr_generate": {
    "key_size": "Schlüsselgröße",
    "generate": "Generieren",
    "private_key": "Privater Schlüssel"
  },
  "torrent_analyze": {
    "parse_error": "Parsen fehlgeschlagen. Bitte bestätigen Sie, dass es eine gültige .torrent-Datei ist.",
    "name_label": "Name: ​",
    "total_size": "Gesamtgröße: ",
    "piece_length": "Stücklänge: ",
    "info_hash": "Info-Hash: ",
    "files_label": "Dateien: ",
    "trackers": "Tracker: ",
    "magnet_link": "Magnet-Link: ",
    "copy": "Kopieren"
  },
  "pdf_encrypt": {
    "drop_label": "PDF auswählen",
    "drop_desc": "Ein offenes Passwort zu einer unverschlüsselten PDF hinzufügen",
    "empty_pdf": "Keine PDF ausgewählt",
    "password_label": "Öffnungspasswort",
    "confirm_label": "Passwort bestätigen",
    "btn_encrypt": "Verschlüsseln & herunterladen",
    "msg_select_first": "Bitte zuerst eine PDF-Datei auswählen.",
    "msg_password_required": "Bitte ein Passwort eingeben.",
    "msg_password_mismatch": "Verschlüsseltes PDF erstellt; Download gestartet.",
    "msg_done": "Diese PDF kann nicht gelesen werden (verschlüsselt, beschädigt oder nicht unterstützt). Falls sie ein Passwort hat, verwenden Sie zuerst PDF Entschlüsseln.",
    "err_encrypted_or_invalid": "Diese PDF kann nicht gelesen werden (verschlüsselt, beschädigt oder nicht unterstützt). Falls sie ein Passwort hat, verwenden Sie zuerst PDF Entschlüsseln.",
    "err_failed": "Verschlüsselung fehlgeschlagen. Verwenden Sie Chrome oder Edge."
  },
  "heic_to_jpg": {
    "hint": "HEIC/HEIF wird in Ihrem Browser zu JPG decodiert; Dateien werden nicht hochgeladen.",
    "drop_label": "HEIC-/HEIF-Bilder",
    "drop_desc": ".heic, .heif — mehrere Dateien OK",
    "empty": "Keine HEIC-Dateien ausgewählt",
    "quality_label": "JPG-Qualität (0,5–1)",
    "btn_convert": "In JPG konvertieren",
    "msg_select": "Bitte zuerst HEIC/HEIF-Bilder auswählen.",
    "msg_done": "Fertig. Download gestartet.",
    "err_convert": "Diese HEIC-Datei konnte nicht decodiert werden.",
    "err_failed": "Konvertierung fehlgeschlagen. Verwenden Sie Chrome oder Edge."
  },
  "word_count": {
    "hint": "Text eingeben oder einfügen, um lokal zu zählen — es wird nichts an einen Server gesendet."
  },
  "age_calc": {
    "birth_label": "Geburtsdatum",
    "ref_label": "Stichtag (optional)",
    "ref_hint": "Leer lassen, um das heutige Datum zu verwenden",
    "years": "Jahre",
    "months": "Monate",
    "days": "Tage",
    "total_days": "Gesamttage",
    "err_invalid_birth": "Ungültiges Geburtsdatum",
    "err_ref_before_birth": "Das Bezugsdatum darf nicht vor dem Geburtsdatum liegen"
  },
  "random_number": {
    "min": "Minimum​",
    "max": "Maximum​",
    "count": "Anzahl (1–500)",
    "integer": "Nur ganze Zahlen",
    "generate": "Generieren",
    "copy": "Alle kopieren",
    "output": "Ergebnisse",
    "err_range": "Bei ganzen Zahlen darf das Minimum nicht größer als das Maximum sein",
    "copied": "In die Zwischenablage kopiert."
  },
  "caesar": {
    "input_text": "Eingabetext",
    "shift": "Verschiebung (1–25)",
    "mode": "Modus",
    "encrypt": "Verschlüsseln",
    "decrypt": "Entschlüsseln",
    "run": "Ausführen",
    "result": "Ergebnis"
  },
  "des": {
    "input_text": "Eingabetext / Hex",
    "key": "Schlüssel (≥8 Bytes)",
    "mode": "Modus",
    "action": "Aktion",
    "encrypt": "Verschlüsseln",
    "decrypt": "Entschlüsseln",
    "run": "Ausführen",
    "result": "Ergebnis",
    "key_too_short": "Der Schlüssel muss mindestens 8 Bytes lang sein",
    "invalid_hex": "Hex-Länge ist kein Vielfaches von 16"
  },
  "ripemd": {
    "input_text": "Eingabetext",
    "compute": "Berechnen",
    "result": "RIPEMD-160-Hash"
  },
  "bcc_lrc": {
    "input_hex": "Hex-Daten (durch Leerzeichen getrennt)",
    "mode": "Prüfmodus",
    "compute": "Berechnen",
    "result": "Ergebnis",
    "invalid_hex": "Ungültiges Hex-Byte",
    "no_data": "Bitte Daten eingeben"
  },
  "iso_garble": {
    "input": "Unleserlicher Text",
    "fix": "Korrigieren",
    "result": "Korrigierter Text",
    "not_iso": "Enthält Nicht-ISO-8859-1-Zeichen",
    "decode_failed": "UTF-8-Decodierung fehlgeschlagen"
  },
  "emoji_encode": {
    "input": "Eingabetext",
    "mode": "Kodierungsmodus",
    "core_values": "Kernwerte",
    "action": "Aktion",
    "encode": "Kodieren",
    "decode": "Dekodieren",
    "run": "Ausführen",
    "result": "Ergebnis",
    "decode_failed": "Dekodieren fehlgeschlagen"
  },
  "code_playground": {
    "preview": "Vorschau"
  },
  "dir_tree": {
    "input": "Verzeichnispfade (einer pro Zeile)",
    "generate": "Generieren",
    "result": "Verzeichnisbaum"
  },
  "kv_to_code": {
    "input": "Schlüssel-Wert-Paare (Schlüssel=Wert, einer pro Zeile)",
    "language": "Zielsprache",
    "convert": "Konvertieren",
    "result": "Code​"
  },
  "file_hash": {
    "algorithm": "Hash-Algorithmus",
    "drop_here": "Datei hier ablegen",
    "browse": "Datei durchsuchen"
  },
  "endianness": {
    "input_hex": "Hex-Bytes eingeben",
    "from": "Von Byte-Reihenfolge",
    "to": "Zu Byte-Reihenfolge",
    "convert": "Konvertieren",
    "result": "Ergebnis"
  },
  "ones_complement": {
    "decimal": "Dezimale ganze Zahl",
    "bits": "Bitbreite",
    "compute": "Berechnen",
    "original": "Original​",
    "ones": "Einerkomplement",
    "twos": "Zweierkomplement"
  },
  "ssl_generate": {
    "key_type": "Schlüsseltyp",
    "generate": "Generieren",
    "public_key": "Öffentlicher Schlüssel",
    "private_key": "Privater Schlüssel",
    "fingerprint": "SHA-256-Fingerabdruck"
  },
  "url_batch": {
    "template": "URL-Vorlage ({id}- oder {param}-Platzhalter)",
    "params": "Parameter (einer pro Zeile)",
    "generate": "Generieren",
    "result": "Ergebnis"
  },
  "line_filter": {
    "input": "Eingabetext",
    "min_len": "Mindestlänge",
    "max_len": "Maximallänge",
    "action": "Aktion",
    "filter": "Filter​",
    "truncate": "Abschneiden",
    "pad": "Auffüllen",
    "run": "Ausführen",
    "result": "Ergebnis"
  },
  "tts": {
    "input": "Eingabetext",
    "voice": "Stimme",
    "rate": "Tempo",
    "volume": "Lautstärke",
    "play": "Abspielen",
    "pause": "Pause​",
    "stop": "Stoppen",
    "speaking": "Spricht …"
  },
  "whois": {
    "domain": "Domäne",
    "query": "Abfrage",
    "querying": "Abfrage …",
    "result": "Ergebnis"
  },
  "dns_query": {
    "domain": "Domäne",
    "record_type": "Eintragstyp",
    "query": "Abfrage",
    "querying": "Abfrage …",
    "result": "Ergebnis"
  },
  "icp_query": {
    "domain": "Domäne",
    "query": "Abfrage",
    "querying": "Abfrage …",
    "result": "Ergebnis",
    "api_error": "API-Anfrage fehlgeschlagen"
  },
  "my_ip": {
    "query": "Meine IP abfragen",
    "querying": "Abfrage …"
  },
  "browser_fingerprint": {
    "ua": "User-Agent​",
    "language": "Sprache",
    "languages": "Sprachen",
    "platform": "Plattform",
    "cookies": "Cookies​",
    "do_not_track": "Nicht verfolgen",
    "screen_res": "Bildschirmauflösung",
    "avail_res": "Verfügbare Auflösung",
    "color_depth": "Farbtiefe",
    "pixel_depth": "Pixel-Tiefe",
    "device_pixel_ratio": "Geräte-Pixel-Verhältnis",
    "timezone": "Zeitzone",
    "timezone_offset": "Zeitzonenversatz",
    "max_touch": "Max. Berührungspunkte",
    "hardware_concurrency": "CPU-Kerne",
    "memory": "Arbeitsspeicher",
    "canvas": "Canvas-Fingerabdruck"
  },
  "doh": {
    "domain": "Domäne",
    "server": "DoH-Server",
    "query": "Abfrage",
    "querying": "Abfrage …",
    "result": "Ergebnis"
  },
  "placeholder_img": {
    "width": "Breite",
    "height": "Höhe",
    "bg": "Hintergrund",
    "fg": "Vordergrund",
    "text": "Text​",
    "generate": "Generieren",
    "download": "Herunterladen"
  },
  "privacy_policy": {
    "app_name": "App-Name",
    "developer": "Entwickler",
    "collect_types": "Erfasste Datentypen",
    "generate": "Generieren",
    "result": "Datenschutzerklärung",
    "title": "Datenschutzerklärung",
    "default_types": "Geräteinformationen, Standort, Nutzungsprotokolle",
    "section1_title": "1. Datenerfassung",
    "section1_body": "{appName} wird von {developer} entwickelt. Wir erfassen die folgenden Informationen, um unsere Dienste bereitzustellen und zu verbessern.",
    "section2_title": "2. Datenverwendung",
    "section2_body": "{appName} erfasst {types} ausschließlich für den Betrieb und die Verbesserung der App und verkauft sie nicht an Dritte.",
    "section3_title": "3. Datensicherheit",
    "section3_body": "Wir treffen angemessene Maßnahmen, um Ihre personenbezogenen Daten zu schützen.",
    "section4_title": "4. Ihre Rechte",
    "section4_body": "Sie haben das Recht, auf Ihre personenbezogenen Daten zuzugreifen, sie zu berichtigen und zu löschen.",
    "section5_title": "5. Kontakt",
    "section5_body": "Bei Fragen kontaktieren Sie bitte {developer}."
  },
  "pomodoro": {
    "work": "Arbeitet",
    "break": "Pause",
    "start": "Start​",
    "pause": "Pause​",
    "reset": "Zurücksetzen",
    "work_min": "Arbeit(min)",
    "break_min": "Pause(min)",
    "completed": "Abgeschlossen"
  },
  "art_qr": {
    "text": "Text/URL​",
    "fg": "Vordergrund",
    "bg": "Hintergrund",
    "style": "Punktstil",
    "square": "Quadratisch",
    "circle": "Kreis",
    "generate": "Generieren",
    "download": "Herunterladen"
  },
  "ppi_calc": {
    "diagonal": "Diagonale (Zoll)",
    "horizontal": "Waagerecht px",
    "vertical": "Vertikal px",
    "compute": "Berechnen",
    "result": "PPI​"
  },
  "mortgage_calc": {
    "principal": "Kapital",
    "rate": "Jährlicher Zins(%)",
    "years": "Jahre",
    "method": "Methode",
    "equal_payment": "Gleiche Zahlung",
    "equal_principal": "Gleiches Kapital",
    "compute": "Berechnen",
    "monthly": "Monatlich",
    "total": "Gesamt",
    "interest": "Gesamtzinsen",
    "first_month": "Erster Monat",
    "schedule": "Vollständiger Tilgungsplan",
    "period": "Zeitraum",
    "payment": "Zahlung",
    "principal_part": "Kapital",
    "interest_part": "Zins",
    "remaining": "Restbetrag",
    "export_csv": "CSV exportieren",
    "invalid": "Geben Sie einen gültigen Betrag, Zinssatz und Laufzeit ein.",
    "disclaimer": "Berechnet mit einem festen Jahreszins nur zur Planung. Ihr Vertrag und die Angaben Ihres Kreditgebers sind maßgeblich."
  },
  "gb_code": {
    "search": "Zeichen oder Code suchen"
  },
  "solar_lunar": {
    "year": "Jahr",
    "month": "Monat",
    "day": "Tag",
    "convert": "Konvertieren"
  },
  "world_clock": {},
  "chem_balance": {
    "input": "Chemische Gleichung (z. B. H2+O2=H2O)",
    "balance": "Restbetrag"
  },
  "mic_test": {
    "enumerate": "Geräte auflisten",
    "default": "Standardgerät",
    "device": "Gerät",
    "status_label": "Status​",
    "status_idle": "Leerlauf",
    "status_granted": "Erteilt",
    "status_denied": "Verweigert",
    "status_recording": "Aufnahme",
    "status_playing": "Wiedergabe",
    "record": "Aufnahme starten",
    "stop": "Aufnahme stoppen",
    "play": "Aufnahme abspielen",
    "download": "Aufnahme herunterladen",
    "duration": "Dauer",
    "volume": "Lautstärke"
  },
  "keyboard_test": {
    "hint": "Drücken Sie eine beliebige Taste auf Ihrer Tastatur zum Testen",
    "current": "Aktuelle Taste",
    "history": "Tastenverlauf"
  },
  "screen_test": {
    "color_red": "Rot",
    "color_green": "Grün",
    "color_blue": "Blau",
    "color_white": "Weiß",
    "color_black": "Schwarz",
    "click_exit": "Klicken oder ESC drücken, um Vollbild zu verlassen",
    "screen_info": "Bildschirminfo",
    "resolution": "Auflösung",
    "available": "Verfügbar",
    "pixel_ratio": "Pixel-Verhältnis",
    "esc_hint": "ESC drücken, um den Vollbildmodus zu verlassen"
  },
  "pfx_to_pem": {
    "select_file": "PFX/P12-Datei auswählen",
    "password": "Passwort",
    "parse": "Parsen",
    "parsing": "Wird analysiert …",
    "cert_pem": "Zertifikat-PEM",
    "key_pem": "Privater Schlüssel PEM",
    "download": "Herunterladen",
    "parse_error": "Parsen fehlgeschlagen",
    "no_content": "Kein Zertifikat oder privater Schlüssel gefunden",
    "forge_required": "Die Bibliothek node-forge ist erforderlich"
  },
  "http_request": {
    "headers": "Header",
    "add_header": "Header hinzufügen",
    "body": "Body​",
    "send": "Senden",
    "sending": "Wird gesendet …",
    "cors_warning": "Hinweis: Die CORS-Richtlinie des Browsers kann einige Anfragen einschränken; nur CORS-fähige Endpunkte werden unterstützt",
    "status": "Status​",
    "status_text": "Status-Text",
    "time": "Zeit",
    "response_headers": "Antwort-Header",
    "response_body": "Antwort-Body"
  },
  "doodle": {
    "color": "Farbe",
    "size": "Pinselgröße",
    "eraser": "Radiergummi",
    "undo": "Rückgängig",
    "clear": "Leeren",
    "download": "PNG herunterladen",
    "reset": "Canvas zurücksetzen"
  },
  "modpow": {
    "base": "Basis",
    "exponent": "Exponent​",
    "modulus": "Modulus​",
    "calc": "Berechnen",
    "result": "Ergebnis:",
    "err_modulus_zero": "Der Modulus darf nicht 0 sein",
    "err_negative_exp": "Der Exponent darf nicht negativ sein",
    "err_invalid": "Ungültige Eingabe, bitte ganze Zahlen eingeben",
    "note": "Modulare Exponentiation wird häufig in der RSA-Verschlüsselung, im Diffie-Hellman-Schlüsselaustausch, der elliptischen Kurvenkryptografie usw. verwendet. Dieses Werkzeug verwendet BigInt mit dem Square-and-Multiply-Algorithmus und unterstützt beliebig große ganze Zahlen."
  },
  "bit_reverse": {
    "input_label": "Positive ganze Zahl eingeben",
    "width_label": "Bitbreite",
    "calc": "Berechnen",
    "step_original": "Ursprüngliche Binärdarstellung:",
    "step_reversed": "Umgekehrte Binärdarstellung:",
    "result_dec": "Ergebnis (Dezimal):",
    "result_hex": "Ergebnis (Hex):",
    "err_negative": "Bitte eine nicht negative ganze Zahl eingeben",
    "err_invalid": "Ungültige Eingabe"
  },
  "punctuation": {
    "cn2en": "CN → EN​",
    "en2cn": "EN → CN​",
    "input_label": "Eingabetext",
    "convert": "Konvertieren",
    "output_label": "Ausgabe",
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "leap_year": {
    "mode_single": "Einzelnes Jahr",
    "mode_range": "Bereich",
    "year_label": "Jahr",
    "start_label": "Startjahr",
    "end_label": "Endjahr",
    "check": "Prüfen",
    "is_leap": "Das Jahr {year} ist ein Schaltjahr",
    "not_leap": "Das Jahr {year} ist kein Schaltjahr",
    "range_result": "{count} Schaltjahre zwischen {start} und {end}:",
    "err_invalid": "Bitte ein gültiges Jahr eingeben",
    "err_range": "Bitte gültige Start- und Endjahre eingeben",
    "rule": "Schaltjahrregel: Ein durch 4 teilbares Jahr ist ein Schaltjahr, es sei denn, es ist durch 100 teilbar, aber nicht durch 400. Beispiel: 2000 ist ein Schaltjahr, 1900 nicht, 2024 schon."
  },
  "reverse": {
    "mode_char": "Zeichen umkehren",
    "mode_line": "Zeile umkehren",
    "input_label": "Eingabetext",
    "action": "Umgekehrt",
    "output_label": "Ausgabe",
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "reaction_test": {
    "click_start": "Zum Starten klicken",
    "wait_green": "Warten auf Grün …",
    "click_now": "Jetzt klicken!",
    "your_time": "Ihre Reaktionszeit: {ms} ms",
    "too_early": "Zu früh! Warten Sie auf das grüne Signal.",
    "try_again": "Erneut versuchen",
    "stats_title": "Statistik",
    "avg": "Durchschnitt",
    "best": "Beste",
    "worst": "Schlechteste",
    "history_title": "Verlauf (letzte 10)"
  },
  "ipv4_ipv6": {
    "input_label": "Adresse eingeben",
    "mode_auto": "Automatisch",
    "mode_ipv4": "IPv4​",
    "mode_ipv6": "IPv6​",
    "invalid_ipv4": "Ungültige IPv4-Adresse",
    "invalid_ipv6": "Ungültige IPv6-Adresse",
    "invalid_input": "Ungültige Adresseingabe",
    "mapped": "IPv6 zugeordnet",
    "mapped_hex": "IPv6 zugeordnet (Hex)",
    "compatible": "IPv4 kompatibel",
    "compatible_hex": "IPv4 kompatibel (Hex)",
    "six_to_four": "6to4-Adresse",
    "expanded": "Vollständig erweitert",
    "compressed": "Komprimiert",
    "extracted_ipv4": "Extrahiertes IPv4",
    "no_ipv4_mapping": "Diese IPv6-Adresse enthält keine IPv4-Zuordnung",
    "batch_placeholder": "Ein IPv4 oder IPv6 pro Zeile\n192.168.1.1\n::ffff:192.168.1.1\n2002:c0a8:0101::",
    "first_line_hint": "Die erste Zeile zeigt die detaillierte Konvertierung; mehrere Zeilen erzeugen die Batch-Tabelle unten.",
    "batch_results": "Batch-Parsergebnisse",
    "copy_batch": "Batch-Ergebnisse kopieren",
    "col_input": "Eingabe",
    "col_type": "Typ",
    "col_output": "Konvertiertes/extrahiertes Ergebnis",
    "col_note": "Hinweis",
    "invalid": "Ungültig",
    "batch_note_ipv4": "Erzeugtes IPv4-zugeordnetes IPv6 für Dual-Stack-Protokolle und -Konfiguration.",
    "batch_note_extractable": "Dieses IPv6 enthält extrahierbare IPv4-Informationen.",
    "batch_note_no_mapping": "Reguläres IPv6 enthält kein IPv4 und kann nicht direkt zurückkonvertiert werden."
  },
  "code_formatter": {
    "language": "Sprache",
    "indent_size": "Einzugsgröße",
    "wrap_length": "Umbruchlänge",
    "input_label": "Code eingeben",
    "input_placeholder": "Code einfügen …",
    "format": "Format​",
    "output_label": "Formatierte Ausgabe",
    "copy": "Kopieren",
    "copied": "Kopiert"
  },
  "port_check": {
    "host_label": "Hostname / IP​",
    "port_label": "Port​",
    "check": "Prüfen",
    "check_common": "Häufige Ports prüfen",
    "th_port": "Port​",
    "th_service": "Dienst",
    "th_status": "Status​",
    "status_checking": "Wird geprüft …",
    "status_open": "Offen",
    "status_closed": "Geschlossen",
    "status_timeout": "Zeitüberschreitung",
    "status_error": "Fehler",
    "limitation_note": "Hinweis: Aufgrund der CORS-Sicherheitsbeschränkungen des Browsers dienen Port-Check-Ergebnisse nur als Referenz. Es wird fetch im no-cors-Modus verwendet; eine undurchsichtige Antwort deutet darauf hin, dass der Dienst möglicherweise antwortet, kann aber nicht bestätigt werden. Eine genauere Erkennung erfordert serverseitige Werkzeuge."
  },
  "auto_refresh": {
    "url_label": "Ziel-URL",
    "interval_label": "Aktualisierungsintervall",
    "seconds": "Sekunden (min. 5 s)",
    "start": "Start​",
    "stop": "Stoppen",
    "countdown": "Countdown​",
    "total_refreshes": "Aktualisierungen",
    "last_refresh": "Letzte Aktualisierung",
    "preview": "Seitenvorschau",
    "bookmarklet_title": "Bookmarklet​",
    "bookmarklet_desc": "Ziehen Sie die Schaltfläche unten in Ihre Lesezeichenleiste, um Auto-Refresh auf jeder Seite zu nutzen.",
    "bookmarklet_btn": "Auto-Refresh-Bookmarklet"
  },
  "text_to_html_table": {
    "inputLabel": "Text eingeben (CSV/TSV)",
    "placeholder": "Name,Alter,Stadt\nAlice,25,Beijing\nBob,30,Shanghai",
    "delimiter": "Trennzeichen",
    "hasHeader": "Kopfzeile",
    "border": "Rahmen",
    "padding": "Zellenabstand",
    "className": "CSS-Klassenname",
    "htmlCode": "HTML-Code",
    "copy": "Code kopieren",
    "copied": "Kopiert",
    "preview": "Vorschau"
  },
  "font_preview": {
    "textLabel": "Vorschau-Text",
    "fontSize": "Schriftgröße",
    "customFont": "Benutzerdefinierte Schriftart"
  },
  "symbols": {
    "search": "Suchen",
    "searchPlaceholder": "Symbol oder Name suchen …"
  },
  "rc4": {
    "key": "Schlüssel",
    "mode": "Modus",
    "encrypt": "Verschlüsseln",
    "decrypt": "Entschlüsseln",
    "plaintext": "Klartext",
    "ciphertext": "Geheimtext",
    "inputEnc": "Eingabekodierung",
    "outputEnc": "Ausgabekodierung",
    "result": "Ergebnis",
    "keyRequired": "Schlüssel ist erforderlich",
    "inputRequired": "Eingabe ist erforderlich"
  },
  "clipboard_viewer": {
    "read": "Zwischenablage lesen",
    "hint": "Erfordert Browserberechtigung. Bei Verweigerung den Einfügebereich unten verwenden.",
    "pasteArea": "Einfügebereich (Strg+V)",
    "pasteItems": "Eingefügter Inhalt"
  },
  "svg_editor": {
    "tool": "Werkzeug",
    "add": "Form hinzufügen",
    "properties": "Eigenschaften",
    "delete": "Ausgewähltes löschen",
    "svgCode": "SVG-Code",
    "copy": "Kopieren",
    "copied": "Kopiert"
  }
}
