{
  "version": "1.16.0",
  "messages": {
    "network.no_connection": {
      "text": "Keine Verbindung zum Server. Bitte die Internetverbindung prüfen und erneut versuchen."
    },
    "network.timeout": {
      "text": "Der Server antwortet nicht. Bitte die Internetverbindung prüfen und erneut versuchen."
    },
    "network.outcome_unknown": {
      "text": "Der Server hat nicht geantwortet, der Vorgang kann trotzdem gebucht sein. Bitte vor einem neuen Versuch prüfen, ob der letzte Vorgang schon gebucht ist."
    },
    "server.unexpected": {
      "text": "Der Server hat unerwartet geantwortet (HTTP {status}). Bitte den Support verständigen.",
      "placeholders": [
        "status"
      ]
    },
    "server.connection_disturbed": {
      "text": "Die Verbindung zum Kassenserver ist gestört. Bitte kurz warten und erneut versuchen."
    },
    "server.response_unreadable": {
      "text": "Die Antwort des Kassenservers war nicht lesbar. Bitte die Kasse neu öffnen und vor einem neuen Versuch prüfen, ob der letzte Vorgang schon gebucht ist."
    },
    "pairing.code_missing": {
      "text": "Bitte den Kopplungs-Code eingeben."
    },
    "pairing.failed": {
      "text": "Die Kopplung ist fehlgeschlagen. Bitte erneut versuchen."
    },
    "pairing.incomplete": {
      "text": "Die Kopplung ist unvollständig zurückgekommen. Bitte im Panel einen neuen Code erzeugen und noch einmal versuchen."
    },
    "device.browser_storage": {
      "text": "Dieses Gerät konnte nicht gespeichert werden – der Browser-Speicher steht nicht zur Verfügung. Bitte den privaten Modus verlassen.",
      "only": [
        "web"
      ]
    },
    "login.pin_missing": {
      "text": "Bitte die PIN eingeben."
    },
    "login.failed": {
      "text": "Die Anmeldung ist fehlgeschlagen. Bitte erneut versuchen."
    },
    "login.not_completed": {
      "text": "Die Anmeldung konnte nicht abgeschlossen werden. Bitte erneut versuchen."
    },
    "login.completing": {
      "text": "Anmeldung wird gerade abgeschlossen – bitte gleich noch einmal drücken."
    },
    "session.expired": {
      "text": "Die Sitzung ist abgelaufen. Bitte erneut anmelden."
    },
    "session.expired_offline": {
      "text": "Keine Verbindung zum Server – die Sitzung ist abgelaufen. Bitte erneut anmelden."
    },
    "session.none": {
      "text": "Keine Sitzung."
    },
    "session.logging_out": {
      "text": "Kasse meldet in {seconds} s ab – Bildschirm berühren, um weiterzuarbeiten.",
      "placeholders": [
        "seconds"
      ]
    },
    "logout.press_again": {
      "text": "Noch einmal drücken beendet die Schicht an dieser Kasse."
    },
    "logout.cart_cleared": {
      "text": "Noch einmal drücken meldet dich ab – der Warenkorb wird geleert."
    },
    "permissions.not_changeable": {
      "text": "Das darfst du nicht ändern – das Recht dafür vergibt der Inhaber im Panel."
    },
    "cashregister.load_failed": {
      "text": "Die Kasse konnte nicht geladen werden."
    },
    "articles.load_failed": {
      "text": "Die Artikel konnten nicht geladen werden."
    },
    "articles.none_enabled": {
      "text": "Keine Artikel an dieser Kasse. Im Panel unter „Kacheln & Gruppen“ freischalten."
    },
    "articles.none_found": {
      "text": "Keine Artikel gefunden."
    },
    "articles.vat_rate_unknown": {
      "text": "„{name}“ hat einen Steuersatz, den die Kasse nicht kennt.",
      "placeholders": [
        "name"
      ]
    },
    "item.amount_missing": {
      "text": "Bitte einen Betrag eingeben."
    },
    "item.description_missing": {
      "text": "Bitte eine Bezeichnung eingeben – sie steht am Beleg."
    },
    "discount.percent_invalid": {
      "text": "Bitte einen Prozentwert zwischen 0,1 und 100 eingeben."
    },
    "checkout.nothing_entered": {
      "text": "Noch nichts erfasst – bitte zuerst eine Position aufnehmen."
    },
    "checkout.tendered_missing": {
      "text": "Erst eintippen, was der Gast gibt – der Rückgeld-Rechner ist an."
    },
    "checkout.tendered_too_little": {
      "text": "Gegeben ist weniger als der Betrag."
    },
    "checkout.locked": {
      "text": "Kassieren gesperrt: {reason}",
      "placeholders": [
        "reason"
      ]
    },
    "tip.over_half": {
      "text": "Über 50 % Trinkgeld – wirklich? Steuerfrei ist nur ortsübliches Trinkgeld."
    },
    "tip.kept_setting_hint": {
      "text": "Der Mitarbeiter steckt das Bar-Trinkgeld beim Verkauf gleich ein: es zählt nicht ins Soll der Lade und gilt als schon genommen. An der Kasse lässt es sich je Verkauf umstellen."
    },
    "completion.failed": {
      "text": "Der Abschluss ist fehlgeschlagen."
    },
    "completion.unknown": {
      "text": "Unklar, ob der Beleg entstanden ist – die Antwort kam nicht an. Bitte nicht noch einmal abschließen: der Beleg kann bereits erstellt und signiert sein. Im Panel unter „Belege“ nachsehen; nur wenn er dort fehlt, den Verkauf erneut abschließen."
    },
    "completion.zero_receipt_failed": {
      "text": "Der Nullbeleg konnte nicht erstellt werden."
    },
    "completion.signature_down": {
      "text": "Die Signatureinheit hat nicht geantwortet. Der Beleg ist gültig und trägt den Vermerk „Sicherheitseinrichtung ausgefallen“."
    },
    "completion.resolve_question": {
      "text": "Nur erledigen, wenn der Beleg in der Belegliste steht – sonst bleiben {amount} ohne Beleg. Bitte zuerst unter „Belege“ nachsehen.",
      "placeholders": [
        "amount"
      ]
    },
    "card_payment.not_possible": {
      "text": "Kartenzahlung nicht möglich."
    },
    "card_payment.not_completed": {
      "text": "Die Kartenzahlung ist nicht zustande gekommen."
    },
    "card_payment.not_started": {
      "text": "Kartenzahlung nicht gestartet: {reason}",
      "placeholders": [
        "reason"
      ]
    },
    "card_payment.unknown": {
      "text": "Unklar, ob die Kartenzahlung durchgegangen ist – die Verbindung zum Terminal riss ab. Bitte am Terminal-Beleg nachsehen, BEVOR neu kassiert wird: die Karte kann belastet sein."
    },
    "card_payment.unknown_with_id": {
      "text": "Unklar, ob die Kartenzahlung durchgegangen ist – die Verbindung zum Terminal riss ab. Bitte am Terminal-Beleg nachsehen, BEVOR neu kassiert wird: die Karte kann belastet sein. Kennung der Zahlung: {reference}.",
      "placeholders": [
        "reference"
      ]
    },
    "card_payment.waiting_for_terminal": {
      "text": "Bitte am Terminal fortfahren …"
    },
    "card_payment.terminal_cancelling": {
      "text": "Das Terminal bricht gleich von selbst ab …"
    },
    "card_payment.card_charged_receipt_open": {
      "text": "Die Karte ist bereits mit {amount} belastet (Kennung {reference}) – der Beleg dazu fehlt noch. Bitte jetzt den Beleg erstellen und nicht erneut kassieren.",
      "placeholders": [
        "amount",
        "reference"
      ]
    },
    "card_payment.card_charged_cart_changed": {
      "text": "Es gibt eine gebuchte Kartenzahlung über {amount} (Kennung {reference}), aber der Korb hat sich seither geändert. Bitte zuerst entscheiden: den Beleg zur gebuchten Zahlung erstellen oder die Zahlung am Terminal stornieren und hier verwerfen.",
      "placeholders": [
        "amount",
        "reference"
      ]
    },
    "card_payment.connect_not_connected": {
      "text": "Kartenzahlung nicht möglich: Kasseneck Connect ist nicht verbunden – Einstellungen → Kasseneck Connect.",
      "only": [
        "web"
      ]
    },
    "card_payment.cart_locked_card_charged": {
      "text": "Die Karte ist bereits belastet – Warenkorb, Rabatt und Trinkgeld bleiben gesperrt, bis der Beleg entsteht oder die Karte zurückerstattet ist."
    },
    "card_payment.unpair_card_charged": {
      "text": "Auf diesem Gerät liegt noch eine gebuchte Kartenzahlung ohne Beleg – sie muss von Hand am Terminal zurückerstattet werden (Betrag siehe unten)."
    },
    "terminal.none_found": {
      "text": "Kein Hobex-Terminal gefunden – ist es eingeschaltet und im selben Netz wie dieser Rechner?",
      "only": [
        "web"
      ]
    },
    "terminal.not_ready": {
      "text": "Terminal antwortet, ist aber nicht betriebsbereit: {response} – TID prüfen.",
      "placeholders": [
        "response"
      ],
      "only": [
        "web"
      ]
    },
    "gptom.app_missing": {
      "text": "Die GP-Tom-App ist auf diesem Gerät nicht da.",
      "only": [
        "app"
      ]
    },
    "gptom.search_failed": {
      "text": "GP Tom: Suche nach der App fehlgeschlagen: {reason}",
      "placeholders": [
        "reason"
      ],
      "only": [
        "app"
      ]
    },
    "gptom.payment_failed": {
      "text": "GP Tom: Zahlung fehlgeschlagen: {reason}",
      "placeholders": [
        "reason"
      ],
      "only": [
        "app"
      ]
    },
    "gptom.terminal_not_responding": {
      "text": "Das Terminal hat nicht geantwortet: {reason}",
      "placeholders": [
        "reason"
      ],
      "only": [
        "app"
      ]
    },
    "gptom.payment_not_completed": {
      "text": "Die Zahlung wurde nicht abgeschlossen ({code}).",
      "placeholders": [
        "code"
      ],
      "only": [
        "app"
      ]
    },
    "gptom.declined": {
      "text": "Das Terminal hat die Zahlung abgelehnt.",
      "only": [
        "app"
      ]
    },
    "gptom.declined_with_code": {
      "text": "Das Terminal hat die Zahlung abgelehnt ({code}).",
      "placeholders": [
        "code"
      ],
      "only": [
        "app"
      ]
    },
    "gptom.not_opened": {
      "text": "GP Tom ließ sich nicht öffnen – bitte die GP-Tom-App prüfen und erneut versuchen.",
      "only": [
        "app"
      ]
    },
    "gptom.timeout": {
      "text": "Das Terminal hat in der Frist nicht geantwortet – die Karte kann belastet sein. Bitte am Terminal-Beleg nachsehen, BEVOR neu kassiert wird.",
      "only": [
        "app"
      ]
    },
    "gptom.timeout_with_id": {
      "text": "Das Terminal hat in der Frist nicht geantwortet – die Karte kann belastet sein. Bitte am Terminal-Beleg nachsehen, BEVOR neu kassiert wird. Kennung der Zahlung: {reference}.",
      "placeholders": [
        "reference"
      ],
      "only": [
        "app"
      ]
    },
    "log.empty": {
      "text": "Noch keine Einträge – das Protokoll füllt sich mit der ersten Kartenzahlung."
    },
    "log.copied": {
      "text": "Das Protokoll liegt in der Zwischenablage."
    },
    "receipts.load_failed": {
      "text": "Die Belege konnten nicht geladen werden."
    },
    "receipts.none_in_period": {
      "text": "Keine Belege in diesem Zeitraum."
    },
    "receipt.load_failed": {
      "text": "Der Beleg konnte nicht geladen werden."
    },
    "receipt.not_found": {
      "text": "Der Beleg wurde nicht gefunden."
    },
    "cancellation.failed": {
      "text": "Das Storno ist fehlgeschlagen."
    },
    "cancellation.reason_missing": {
      "text": "Bitte einen Grund wählen."
    },
    "cancellation.item_missing": {
      "text": "Bitte mindestens eine Position wählen."
    },
    "cancellation.payments_missing": {
      "text": "Dieser Beleg wurde in mehreren Zahlungen bezahlt – bitte angeben, wie zurückgegeben wird."
    },
    "cancellation.refund_too_high": {
      "text": "Eine Rückgabe ist höher als der Rest ihrer Zahlung – bitte die Beträge prüfen."
    },
    "cancellation.refund_without_reference": {
      "text": "Eine Rückgabe nennt keine Zahlung des Belegs – bitte das Storno neu beginnen."
    },
    "cancellation.refund_reference_unknown": {
      "text": "Eine Rückgabe nennt eine Zahlung, die es am Beleg nicht gibt – bitte das Storno neu beginnen."
    },
    "cancellation.outcome_unknown": {
      "text": "Unklar, ob das Storno entstanden ist – es kann bereits signiert sein. Bitte nicht erneut stornieren, sondern die Belegliste in ein paar Minuten neu laden."
    },
    "cancellation.sum_mismatch": {
      "text": "Die Rückgaben ergeben nicht den Betrag des Stornos – bitte die Beträge prüfen."
    },
    "cancellation.refund_cards": {
      "text": "Das Storno ist gebucht – bitte jede Karte unten am Terminal gutschreiben und abhaken."
    },
    "cancellation.outcome_unknown_cards": {
      "text": "Unklar, ob das Storno entstanden ist – es kann bereits signiert sein. Bitte nicht erneut stornieren und noch keine Karte gutschreiben, sondern die Belegliste in ein paar Minuten neu laden. Steht das Storno dort, die Karten laut Storno-Beleg am Terminal gutschreiben."
    },
    "cancellation.cards_not_checked": {
      "text": "Noch ist nicht jede Karte abgehakt – bitte jede am Terminal gutschreiben. Ist das schon geschehen, zum Schließen noch einmal drücken."
    },
    "cancellation.input_rejected": {
      "text": "Die Eingabe wurde abgelehnt – bitte das Storno neu beginnen."
    },
    "cancellation.tip_refund_missing": {
      "text": "Bitte wählen: Trinkgeld auch zurückgeben?"
    },
    "cancellation.tip_source_missing": {
      "text": "Bitte wählen: Woher kommt das Trinkgeld zurück?"
    },
    "cancellation.tip_refunded_with_voucher": {
      "text": "Beleg mit Gutschein: Das Trinkgeld wird mitstorniert."
    },
    "voucher_error.not_found": {
      "text": "Diesen Gutschein gibt es in diesem Betrieb nicht."
    },
    "voucher_error.invalid": {
      "text": "Dieser Gutschein ist nicht gültig."
    },
    "voucher_error.invalid_code": {
      "text": "Der Code ist nicht vollständig oder falsch abgetippt."
    },
    "voucher_error.expired": {
      "text": "Der Gutschein ist abgelaufen."
    },
    "voucher_error.used_up": {
      "text": "Der Gutschein ist bereits aufgebraucht."
    },
    "voucher_error.blocked": {
      "text": "Der Gutschein ist gesperrt."
    },
    "voucher_error.cancelled": {
      "text": "Der Gutschein wurde storniert."
    },
    "voucher_error.insufficient_balance": {
      "text": "Auf dem Gutschein ist nicht genug Guthaben."
    },
    "voucher_error.exceeds_total": {
      "text": "Der Gutschein deckt mehr, als offen ist. Bitte den Betrag anpassen."
    },
    "voucher_error.balance_changed": {
      "text": "Der Gutschein wurde gerade anderswo verwendet. Bitte neu prüfen."
    },
    "voucher_error.rate_mismatch": {
      "text": "Dieser Gutschein gilt nur für Leistungen mit {rate} %.",
      "placeholders": [
        "rate"
      ]
    },
    "voucher_error.item_mismatch": {
      "text": "Dieser Gutschein gilt nicht für die gewählten Positionen."
    },
    "voucher_error.already_used": {
      "text": "Dieser Gutschein wurde bereits verwendet."
    },
    "voucher_error.partial_cancel": {
      "text": "Belege mit Gutschein lassen sich nur ganz stornieren."
    },
    "voucher_error.settings_missing": {
      "text": "Die Gutschein-Einstellungen fehlen. Bitte die Kasse neu laden."
    },
    "voucher_error.too_many_checks": {
      "text": "Zu viele Versuche. Bitte in einer Stunde wieder."
    },
    "voucher_error.sale_off": {
      "text": "Gutscheine verkaufen geht hier noch nicht."
    },
    "voucher.reentry_needed": {
      "text": "Die Karte ist belastet, der Beleg fehlt noch: zu jedem Gutschein den Code erneut eingeben, dann den Beleg abschließen."
    },
    "voucher.reentry_mismatch": {
      "text": "Mit diesen Gutscheinen ergibt der Beleg nicht mehr den belasteten Betrag – die Karte zurückbuchen."
    },
    "voucher.not_this_voucher": {
      "text": "Das ist nicht der Gutschein ····-{suffix}.",
      "placeholders": [
        "suffix"
      ]
    },
    "voucher.reentry_no_permission": {
      "text": "Die Karte ist belastet, der Beleg fehlt noch: den Gutschein-Code kann nur jemand mit dem Recht zum Einlösen nachtragen – sonst die Karte zurückbuchen."
    },
    "voucher.already_covered": {
      "text": "Diese Positionen deckt schon ein anderer Gutschein."
    },
    "voucher.payout_reason_too_long": {
      "text": "Der Grund hat höchstens 200 Zeichen."
    },
    "voucher.payout_reason_missing": {
      "text": "Für die Auszahlung fehlt der Grund."
    },
    "voucher.payout_check_first": {
      "text": "Die letzte Auszahlung ging unklar aus und kann schon gebucht sein. Erst unter „Belege“ die Liste neu laden und nachsehen, dann ist eine neue möglich."
    },
    "voucher.sale_max_amount": {
      "text": "Höchstens {amount} je Gutschein.",
      "placeholders": [
        "amount"
      ]
    },
    "voucher.sale_not_at_terminal": {
      "text": "Gutscheine mit Karte am Terminal zu verkaufen geht an dieser Kasse noch nicht – bar kassieren."
    },
    "voucher.no_redeem_with_sale": {
      "text": "Auf einem Beleg, der Gutscheine verkauft, lässt sich kein Gutschein einlösen."
    },
    "voucher.code_not_on_receipt": {
      "text": "Der Code steht nicht auf dem Bon – jetzt auf den Gutschein schreiben."
    },
    "cancellation.voucher_sale_cancelled": {
      "text": "Der Gutschein ····-{suffix} wird mitstorniert und gilt danach nicht mehr.",
      "placeholders": [
        "suffix"
      ]
    },
    "cancellation.promo_valid_again": {
      "text": "Der Aktionsgutschein ····-{suffix} gilt danach wieder.",
      "placeholders": [
        "suffix"
      ]
    },
    "split.setting_hint": {
      "text": "Ein Tisch zahlt in Teilen: jede Zahlung bar oder mit Karte, mit eigenem Trinkgeld – am Ende ein Beleg für alles."
    },
    "split.amount_over_open": {
      "text": "Der Betrag ist höher als offen – höchstens {amount}.",
      "placeholders": [
        "amount"
      ]
    },
    "split.tip_over_amount": {
      "text": "Das Trinkgeld ist höher als der Betrag dieser Zahlung."
    },
    "split.tendered_too_little": {
      "text": "Gegeben ist weniger als der Betrag dieser Zahlung."
    },
    "split.still_open": {
      "text": "Es sind noch {amount} offen – abschließen geht erst, wenn alles kassiert ist.",
      "placeholders": [
        "amount"
      ]
    },
    "split.sum_mismatch": {
      "text": "Die Zahlungen ergeben nicht den Betrag des Belegs – bitte die Liste prüfen."
    },
    "split.cart_locked": {
      "text": "Der Warenkorb ist gesperrt, solange Zahlungen kassiert sind – erst abschließen oder die Zahlungen entfernen."
    },
    "split.switch_locked": {
      "text": "Zurück zu Bar oder Karte geht erst, wenn keine Zahlung mehr kassiert ist."
    },
    "split.return_cash": {
      "text": "Bitte {amount} Bargeld an den Gast zurückgeben.",
      "placeholders": [
        "amount"
      ]
    },
    "split.card_reverse_running": {
      "text": "Die Kartenzahlung über {amount} wird am Terminal zurückgebucht …",
      "placeholders": [
        "amount"
      ]
    },
    "split.card_reversed": {
      "text": "Die Kartenzahlung über {amount} ist am Terminal zurückgebucht.",
      "placeholders": [
        "amount"
      ]
    },
    "split.card_reverse_failed": {
      "text": "Die Kartenzahlung über {amount} (Kennung {reference}) ließ sich nicht zurückbuchen – sie bleibt in der Liste. Bitte am Terminal-Beleg nachsehen und erneut versuchen.",
      "placeholders": [
        "amount",
        "reference"
      ]
    },
    "split.card_reverse_unknown": {
      "text": "Unklar, ob die Rückbuchung über {amount} (Kennung {reference}) durchgegangen ist – die Zahlung bleibt in der Liste. Bitte am Terminal-Beleg nachsehen, BEVOR erneut zurückgebucht wird.",
      "placeholders": [
        "amount",
        "reference"
      ]
    },
    "split.card_already_reversed": {
      "text": "Das Terminal meldet, dass die Kartenzahlung über {amount} bereits gutgeschrieben wurde (Kennung {reference}) – bitte am Terminal-Beleg prüfen und nicht erneut zurückbuchen.",
      "placeholders": [
        "amount",
        "reference"
      ]
    },
    "split.external_reverse": {
      "text": "Diese Karte ist nicht an die Kasse angebunden. Bitte {amount} jetzt am Terminal zurückbuchen und danach bestätigen.",
      "placeholders": [
        "amount"
      ]
    },
    "split.session_open": {
      "text": "Eine getrennte Zahlung ist nicht abgeschlossen, {amount} sind schon kassiert. Bitte weiter kassieren oder alles zurückbuchen.",
      "placeholders": [
        "amount"
      ]
    },
    "split.session_unreadable": {
      "text": "Eine gespeicherte getrennte Zahlung auf diesem Gerät ließ sich nicht lesen – bitte prüfen, ob schon Karten belastet wurden (Kasseneck-Panel oder Terminal), und offene Beträge von Hand ausgleichen."
    },
    "split.storage_failed": {
      "text": "Die getrennte Zahlung ließ sich auf diesem Gerät nicht speichern – bitte die Kasse bis zum Abschluss dieses Belegs nicht neu laden, sonst stehen belastete Karten womöglich nicht mehr in der Liste."
    },
    "split.too_many_payments": {
      "text": "Ein Beleg lässt höchstens 20 Zahlungen zu."
    },
    "split.unpair_open_cards": {
      "text": "Auf diesem Gerät ist noch eine getrennte Zahlung mit belasteten Karten offen – sie müssen von Hand am Terminal zurückgebucht werden (Beträge siehe unten)."
    },
    "split.items_locked": {
      "text": "Nach Positionen geht nicht mehr – eine Zahlung ist schon als Betrag kassiert."
    },
    "split.select_items": {
      "text": "Bitte zuerst antippen, was dieser Gast zahlt."
    },
    "split.tendered_missing": {
      "text": "Erst eintippen, was der Gast für diese Zahlung gibt – der Rückgeld-Rechner ist an."
    },
    "receipt.link_copied": {
      "text": "Der Link zum Beleg liegt in der Zwischenablage."
    },
    "receipt.share_text": {
      "text": "Beleg {number} von {business} über {amount}: {link}",
      "placeholders": [
        "business",
        "number",
        "amount",
        "link"
      ]
    },
    "receipt.not_shareable": {
      "text": "Für diesen Beleg gibt es keinen Link – er stammt aus einer älteren Kasse."
    },
    "receipt.test_hint_share": {
      "text": "Test-Umgebung – der Beleg ist steuerlich nicht gültig."
    },
    "receipt.mail_sent": {
      "text": "Der Beleg wurde an {recipient} gesendet.",
      "placeholders": [
        "recipient"
      ]
    },
    "receipt.mail_address_invalid": {
      "text": "Diese E-Mail-Adresse ist nicht gültig."
    },
    "receipt.mail_too_often": {
      "text": "Dieser Beleg wurde schon oft gesendet – bitte später noch einmal."
    },
    "receipt.mail_failed": {
      "text": "Der Beleg konnte nicht gesendet werden. Bitte noch einmal versuchen."
    },
    "receipt.mail_not_found": {
      "text": "Dieser Beleg wurde nicht gefunden – er konnte nicht gesendet werden."
    },
    "print.failed": {
      "text": "Der Ausdruck ist fehlgeschlagen."
    },
    "print.not_possible": {
      "text": "Druck nicht möglich: {reason}",
      "placeholders": [
        "reason"
      ]
    },
    "print.test_print_failed": {
      "text": "Der Testdruck ist fehlgeschlagen."
    },
    "print.test_print_not_possible": {
      "text": "Der Testdruck ist fehlgeschlagen: {reason}",
      "placeholders": [
        "reason"
      ]
    },
    "print.no_printer": {
      "text": "Kein Bondrucker eingerichtet – in den Einstellungen unter Drucker & Lade."
    },
    "print.printer_unreachable": {
      "text": "Drucker nicht erreichbar."
    },
    "print.job_expired": {
      "text": "Drucker hat den Beleg nicht abgeholt (abgelaufen).",
      "only": [
        "web"
      ]
    },
    "print.no_printer_found": {
      "text": "Kein Drucker gefunden – ist er eingeschaltet und im selben Netz wie dieser Rechner?",
      "only": [
        "web"
      ]
    },
    "print.chrome_only": {
      "text": "{channel}-Druck geht nur in Chrome oder Edge (Windows, Mac, Android) – nicht in Safari und nicht am iPad.",
      "placeholders": [
        "channel"
      ],
      "only": [
        "web"
      ]
    },
    "print.no_printer_for_channel": {
      "text": "Kein {channel}-Drucker verbunden – „{channel}-Drucker verbinden“ und den Drucker im Dialog wählen.",
      "placeholders": [
        "channel"
      ],
      "only": [
        "web"
      ]
    },
    "print.wizard_connect": {
      "text": "Verbinde mit {name} …",
      "placeholders": [
        "name"
      ]
    },
    "print.wizard_test_print_question": {
      "text": "Ist der Testdruck gekommen?"
    },
    "print.wizard_qr_question": {
      "text": "Welcher QR-Code ist sauber gedruckt?"
    },
    "print.wizard_qr_none_hint": {
      "text": "Kein QR-Code kam sauber – der Beleg zeigt den QR-Code dann am Bildschirm."
    },
    "print.wizard_nothing_arrived": {
      "text": "Nichts gekommen? Drucker an, Papier drin, richtiges Gerät gewählt?"
    },
    "print.wizard_saved": {
      "text": "{name} ist eingerichtet.",
      "placeholders": [
        "name"
      ]
    },
    "print.wizard_cancelled": {
      "text": "Nichts gespeichert."
    },
    "codetable.question": {
      "text": "In welcher Zeile steht kein falsches Zeichen?"
    },
    "codetable.question_hint": {
      "text": "Lücken sind in Ordnung."
    },
    "codetable.instruction": {
      "text": "Die Zeile, in der KEIN falsches Zeichen steht. Eine Lücke ist in Ordnung. Passen mehrere, die mit den wenigsten Lücken."
    },
    "codetable.instruction_none": {
      "text": "Passt keine: {number}.",
      "placeholders": [
        "number"
      ]
    },
    "bluetooth.off": {
      "text": "Bluetooth ist ausgeschaltet. Bitte einschalten und erneut suchen.",
      "only": [
        "app"
      ]
    },
    "bluetooth.permission_missing": {
      "text": "Bitte die Freigabe in den Geräte-Einstellungen erteilen.",
      "only": [
        "app"
      ]
    },
    "bluetooth.search_failed": {
      "text": "Die Suche ist fehlgeschlagen: {reason}",
      "placeholders": [
        "reason"
      ],
      "only": [
        "app"
      ]
    },
    "connect.not_responding": {
      "text": "Kasseneck Connect antwortet nicht – läuft das Programm auf diesem Rechner?",
      "only": [
        "web"
      ]
    },
    "connect.code_expired": {
      "text": "Der Kopplungs-Code ist abgelaufen – im Agent einen neuen erzeugen („kasseneck-connect pair“).",
      "only": [
        "web"
      ]
    },
    "connect.too_many_attempts": {
      "text": "Zu viele Fehlversuche – eine Minute warten und noch einmal versuchen.",
      "only": [
        "web"
      ]
    },
    "connect.printer_not_responding": {
      "text": "Der Drucker antwortet nicht – Strom, Netzwerk und IP prüfen.",
      "only": [
        "web"
      ]
    },
    "connect.not_paired": {
      "text": "Diese Kasse ist mit Kasseneck Connect nicht gekoppelt – in den Einstellungen „Koppeln“ drücken.",
      "only": [
        "web"
      ]
    },
    "connect.printer_unknown": {
      "text": "Diesen Drucker kennt Kasseneck Connect nicht (mehr) – bitte neu suchen.",
      "only": [
        "web"
      ]
    },
    "connect.origin_not_allowed": {
      "text": "Kasseneck Connect nimmt von dieser Adresse nichts an (Ursprung nicht freigegeben).",
      "only": [
        "web"
      ]
    },
    "connect.not_installed": {
      "text": "Kasseneck Connect nicht gefunden – bitte installieren.",
      "only": [
        "web"
      ]
    },
    "connect.unpair_question": {
      "text": "Diesen Browser wirklich von Connect trennen? Der Bondruck geht dann nicht mehr.",
      "only": [
        "web"
      ]
    },
    "settings.load_failed": {
      "text": "Die Einstellungen konnten nicht geladen werden."
    },
    "settings.save_failed": {
      "text": "Die Einstellung konnte nicht gespeichert werden."
    },
    "settings.not_loaded_yet": {
      "text": "Noch nicht geladen – bitte kurz warten oder neu anmelden."
    },
    "settings.ip_invalid": {
      "text": "Keine gültige IP-Adresse (z. B. 192.168.1.50)."
    },
    "unpairing.failed": {
      "text": "Entkoppeln fehlgeschlagen."
    },
    "logo.upload_failed": {
      "text": "Hochladen fehlgeschlagen."
    },
    "logo.remove_failed": {
      "text": "Entfernen fehlgeschlagen."
    },
    "stocktake.none_open": {
      "text": "An diesem Standort läuft gerade keine Inventur. Eine Inventur legt der Inhaber im Panel an."
    },
    "stocktake.scan_or_search": {
      "text": "Artikel scannen oder suchen."
    },
    "stocktake.counted": {
      "text": "{name}: {quantity} gezählt.",
      "placeholders": [
        "name",
        "quantity"
      ]
    },
    "stocktake.blind_hint": {
      "text": "Blind zählen – die Kasse zeigt keinen Buchbestand. Bitte zählen, was wirklich da ist."
    },
    "stocktake.recount_hint": {
      "text": "Bitte die markierten Positionen nachzählen."
    },
    "stocktake.unknown_code": {
      "text": "Zu „{code}“ gibt es keinen Artikel. Bitte den Code prüfen oder den Artikel suchen.",
      "placeholders": [
        "code"
      ]
    },
    "stocktake.quantity_invalid": {
      "text": "Bitte eine gültige Menge eingeben – höchstens drei Nachkommastellen, bei Stückware nur ganze Zahlen."
    },
    "stocktake.serials_capture": {
      "text": "Bitte für jedes Stück die Seriennummer scannen."
    },
    "stocktake.serials_mismatch": {
      "text": "Je Stück genau eine Seriennummer: {count} erfasst, {quantity} gezählt.",
      "placeholders": [
        "count",
        "quantity"
      ]
    },
    "stocktake.reason_missing": {
      "text": "Bitte einen Grund für das Stornieren eingeben."
    },
    "stocktake.outcome_unknown": {
      "text": "Unklar, ob die Zählung angekommen ist. „Erneut senden“ schickt dieselbe Zählung – sie zählt auch dann nur einmal."
    },
    "shift.required": {
      "text": "Bitte zuerst die Schicht öffnen."
    },
    "shift.required_other": {
      "text": "Die Schicht muss ein berechtigter Mitarbeiter öffnen."
    },
    "shift.recount": {
      "text": "Der gezählte Betrag weicht ab – bitte noch einmal zählen."
    },
    "shift.comment_required": {
      "text": "Die Abweichung ist größer als erlaubt – bitte kurz begründen."
    },
    "shift.closed": {
      "text": "Schicht {number} geschlossen.",
      "placeholders": [
        "number"
      ]
    },
    "shift.long_open": {
      "text": "Die Schicht läuft seit {since}.",
      "placeholders": [
        "since"
      ]
    },
    "shift.already_open": {
      "text": "An dieser Lade läuft schon eine Schicht."
    },
    "shift.already_closed": {
      "text": "Diese Schicht ist schon geschlossen."
    },
    "shift.recount_exhausted": {
      "text": "Es wurde schon zweimal gezählt. Bitte den Betrag der zweiten Zählung senden oder den Chef rufen."
    },
    "shift.mode_off": {
      "text": "An dieser Lade ist der Schichtbetrieb aus. Bitte im Panel einschalten."
    },
    "shift.outcome_unknown": {
      "text": "Unklar, ob das angekommen ist. „Erneut senden“ schickt denselben Vorgang – er zählt nur einmal."
    },
    "cash_movement.exceeds_balance": {
      "text": "So viel Bargeld ist laut Kassenstand nicht in der Lade."
    },
    "cash_movement.note_required": {
      "text": "Bitte einen Grund eingeben."
    },
    "cash_movement.booked": {
      "text": "{type} über {amount} gebucht.",
      "placeholders": [
        "type",
        "amount"
      ]
    },
    "cash_movement.type_invalid": {
      "text": "Diese Art der Kassenbewegung ist hier nicht möglich."
    },
    "cash_movement.same_drawer": {
      "text": "Eine Umbuchung in dieselbe Lade geht nicht. Bitte eine andere Lade wählen."
    },
    "tip_payout.exceeds_claim": {
      "text": "Mehr als der offene Anspruch kann nicht ausgezahlt werden."
    },
    "denominations.invalid": {
      "text": "Scheine und Münzen ergeben nicht den Betrag."
    },
    "amount.invalid": {
      "text": "Bitte einen gültigen Betrag eingeben."
    },
    "drawer.not_found": {
      "text": "Diese Lade gibt es nicht mehr. Bitte im Panel die Lade dieses Geräts prüfen."
    },
    "drawer.inactive": {
      "text": "Diese Lade ist stillgelegt. Bitte im Panel eine andere Lade zuordnen."
    },
    "tip_payout.recipient_required": {
      "text": "Bitte einen Mitarbeiter wählen."
    },
    "tip_payout.none_open": {
      "text": "In dieser Schicht ist kein Trinkgeld offen."
    },
    "shift.pending_hint": {
      "text": "Noch nicht bestätigt. „Erneut senden“ schickt denselben Vorgang – er zählt nur einmal."
    },
    "shift.change_float_missing": {
      "text": "Es fehlen {amount} bis zum Wechselgeld von {total}.",
      "placeholders": [
        "amount",
        "total"
      ]
    },
    "app.not_in_browser": {
      "text": "Die Kassen-App läuft nicht im Browser – dafür gibt es kasse.kasseneck.at.",
      "only": [
        "app"
      ]
    },
    "app.open_in_browser": {
      "text": "Bitte im Browser öffnen: {target}",
      "placeholders": [
        "target"
      ],
      "only": [
        "app"
      ]
    }
  },
  "errorRules": [
    {
      "kind": "api",
      "behavior": "server_text"
    },
    {
      "kind": "plain_text",
      "behavior": "own_text"
    },
    {
      "kind": "timeout",
      "key": "network.timeout"
    },
    {
      "kind": "network",
      "key": "network.no_connection"
    },
    {
      "kind": "unexpected",
      "key": "server.unexpected"
    },
    {
      "kind": "other",
      "behavior": "fallback"
    }
  ],
  "errorCodeRules": [
    {
      "kind": "api",
      "codes": [
        "dialect_mismatch",
        "response_translation_failed",
        "response_unreadable"
      ],
      "key": "server.response_unreadable"
    },
    {
      "kind": "api",
      "codes": [
        "route_missing",
        "not_found",
        "internal_translation_error"
      ],
      "key": "server.connection_disturbed"
    },
    {
      "kind": "api",
      "codes": [
        "shift_not_open"
      ],
      "key": "shift.required"
    },
    {
      "kind": "api",
      "codes": [
        "shift_already_open"
      ],
      "key": "shift.already_open"
    },
    {
      "kind": "api",
      "codes": [
        "shift_closed"
      ],
      "key": "shift.already_closed"
    },
    {
      "kind": "api",
      "codes": [
        "comment_required"
      ],
      "key": "shift.comment_required"
    },
    {
      "kind": "api",
      "codes": [
        "recount_exhausted"
      ],
      "key": "shift.recount_exhausted"
    },
    {
      "kind": "api",
      "codes": [
        "shift_mode_off"
      ],
      "key": "shift.mode_off"
    },
    {
      "kind": "api",
      "codes": [
        "cash_movement_exceeds_balance"
      ],
      "key": "cash_movement.exceeds_balance"
    },
    {
      "kind": "api",
      "codes": [
        "note_required"
      ],
      "key": "cash_movement.note_required"
    },
    {
      "kind": "api",
      "codes": [
        "invalid_movement_type"
      ],
      "key": "cash_movement.type_invalid"
    },
    {
      "kind": "api",
      "codes": [
        "transfer_same_drawer"
      ],
      "key": "cash_movement.same_drawer"
    },
    {
      "kind": "api",
      "codes": [
        "tip_payout_exceeds_claim"
      ],
      "key": "tip_payout.exceeds_claim"
    },
    {
      "kind": "api",
      "codes": [
        "invalid_denominations"
      ],
      "key": "denominations.invalid"
    },
    {
      "kind": "api",
      "codes": [
        "invalid_amount"
      ],
      "key": "amount.invalid"
    },
    {
      "kind": "api",
      "codes": [
        "drawer_not_found"
      ],
      "key": "drawer.not_found"
    },
    {
      "kind": "api",
      "codes": [
        "drawer_inactive"
      ],
      "key": "drawer.inactive"
    }
  ],
  "errorOutcomeRules": [
    {
      "kind": "timeout",
      "outcome": "unknown",
      "key": "network.outcome_unknown"
    },
    {
      "kind": "network",
      "outcome": "unknown",
      "key": "network.outcome_unknown"
    }
  ],
  "callsWithEffect": [
    "createReceipt",
    "cancelReceipt",
    "financeWebService",
    "hobexPayApi",
    "hobexRefundApi",
    "stripeCaptureIntent",
    "createPrintJob",
    "sendReceiptEmail"
  ],
  "receiptEmailErrors": {
    "invalid_address": "receipt.mail_address_invalid",
    "too_many_requests": "receipt.mail_too_often",
    "send_failed": "receipt.mail_failed",
    "receipt_not_found": "receipt.mail_not_found"
  },
  "cancellationPaymentErrors": {
    "cancellation_payments_required": "cancellation.payments_missing",
    "cancellation_refund_exceeds_payment": "cancellation.refund_too_high",
    "cancellation_refund_reference_required": "cancellation.refund_without_reference",
    "cancellation_refund_reference_unknown": "cancellation.refund_reference_unknown",
    "payments_sum_mismatch": "cancellation.sum_mismatch",
    "cancellation_outcome_unknown": "cancellation.outcome_unknown"
  },
  "voucherErrors": {
    "voucher_not_found": "voucher_error.not_found",
    "voucher_invalid": "voucher_error.invalid",
    "voucher_invalid_code": "voucher_error.invalid_code",
    "voucher_expired": "voucher_error.expired",
    "voucher_used_up": "voucher_error.used_up",
    "voucher_blocked": "voucher_error.blocked",
    "voucher_cancelled": "voucher_error.cancelled",
    "voucher_insufficient_balance": "voucher_error.insufficient_balance",
    "voucher_exceeds_total": "voucher_error.exceeds_total",
    "voucher_balance_changed": "voucher_error.balance_changed",
    "voucher_rate_mismatch": "voucher_error.rate_mismatch",
    "voucher_item_mismatch": "voucher_error.item_mismatch",
    "voucher_already_used": "voucher_error.already_used",
    "voucher_partial_cancel": "voucher_error.partial_cancel",
    "voucher_settings_missing": "voucher_error.settings_missing",
    "too_many_voucher_checks": "voucher_error.too_many_checks"
  },
  "labels": {
    "common.cancel": {
      "text": "Abbrechen"
    },
    "message.dismiss": {
      "text": "Meldung ausblenden: {message}",
      "placeholders": [
        "message"
      ]
    },
    "message.dismiss_warning": {
      "text": "Verstanden – Warnung ausblenden: {message}",
      "placeholders": [
        "message"
      ]
    },
    "pairing.pair_again": {
      "text": "Neu koppeln"
    },
    "register.device_unnamed": {
      "text": "Kasse"
    },
    "login.locked_seconds": {
      "text": "Noch {seconds} s gesperrt",
      "placeholders": [
        "seconds"
      ]
    },
    "logout.question": {
      "text": "Wirklich abmelden?"
    },
    "logout.keep_working": {
      "text": "Weiter arbeiten"
    },
    "device.unpair": {
      "text": "Gerät entkoppeln"
    },
    "connect.unpair_confirm": {
      "text": "Entkoppeln bestätigen",
      "only": [
        "web"
      ]
    },
    "checkout.tip": {
      "text": "Trinkgeld"
    },
    "checkout.no_tip": {
      "text": "kein"
    },
    "checkout.custom_amount": {
      "text": "Eigener Betrag"
    },
    "checkout.exact": {
      "text": "passend"
    },
    "checkout.clear_tendered": {
      "text": "Gegeben löschen"
    },
    "checkout.still_missing": {
      "text": "Es fehlen noch"
    },
    "checkout.change": {
      "text": "Rückgeld"
    },
    "checkout.tip_kept": {
      "text": "gleich behalten"
    },
    "tip.kept_setting": {
      "text": "Bar-Trinkgeld behält der Mitarbeiter gleich"
    },
    "card_payment.amount_on_terminal": {
      "text": "Betrag steht am Terminal"
    },
    "card_payment.present_card": {
      "text": "Karte vorhalten oder stecken · noch {time}",
      "placeholders": [
        "time"
      ]
    },
    "completion.receipt_exists": {
      "text": "Beleg ist vorhanden – erledigen"
    },
    "completion.resolve": {
      "text": "Erledigen"
    },
    "split.button": {
      "text": "Getrennt"
    },
    "split.setting": {
      "text": "Getrennt zahlen"
    },
    "split.to_pay": {
      "text": "Zu zahlen"
    },
    "split.open": {
      "text": "Offen"
    },
    "split.payment": {
      "text": "Zahlung {n}",
      "placeholders": [
        "n"
      ]
    },
    "split.amount": {
      "text": "Betrag"
    },
    "split.remaining": {
      "text": "Rest"
    },
    "split.remaining_with_rounding": {
      "text": "Rest inkl. Rundung {amount} ({cents} ct)",
      "placeholders": [
        "amount",
        "cents"
      ]
    },
    "split.divide": {
      "text": "÷ {n}",
      "placeholders": [
        "n"
      ]
    },
    "split.tip_basis": {
      "text": "% von diesem Betrag"
    },
    "split.of_which_tip": {
      "text": "davon Trinkgeld {amount}",
      "placeholders": [
        "amount"
      ]
    },
    "split.remove": {
      "text": "Entfernen"
    },
    "split.cancel_all": {
      "text": "Alles abbrechen"
    },
    "split.continue_checkout": {
      "text": "Weiter kassieren"
    },
    "split.reverse_all": {
      "text": "Alles zurückbuchen"
    },
    "split.reversed_on_terminal": {
      "text": "Am Terminal zurückgebucht"
    },
    "split.reverse_card": {
      "text": "Karte zurückbuchen"
    },
    "split.pair_again_anyway": {
      "text": "Trotzdem neu koppeln"
    },
    "split.keep_payment": {
      "text": "Zahlung behalten"
    },
    "split.clarify": {
      "text": "Klären"
    },
    "split.reverse_again": {
      "text": "Erneut zurückbuchen"
    },
    "split.was_charged": {
      "text": "Wurde belastet – übernehmen"
    },
    "split.not_charged": {
      "text": "Nicht belastet – verwerfen"
    },
    "split.continue": {
      "text": "Weiter · {amount} getrennt",
      "placeholders": [
        "amount"
      ]
    },
    "split.allocation": {
      "text": "Aufteilung"
    },
    "split.back_to_payment_method": {
      "text": "Zurück zur Zahlart"
    },
    "split.tab_items": {
      "text": "Nach Positionen"
    },
    "split.tab_amount": {
      "text": "Betrag"
    },
    "split.one_less": {
      "text": "{name}: ein Stück weniger",
      "placeholders": [
        "name"
      ]
    },
    "split.one_more": {
      "text": "{name}: ein Stück mehr",
      "placeholders": [
        "name"
      ]
    },
    "split.tendered": {
      "text": "Gegeben (bar)"
    },
    "split.tendered_change": {
      "text": "Gegeben {tendered} · Rückgeld {change}",
      "placeholders": [
        "tendered",
        "change"
      ]
    },
    "split.payment_method": {
      "text": "Zahlart"
    },
    "split.method_cash": {
      "text": "Bar"
    },
    "split.method_card": {
      "text": "Karte"
    },
    "split.add_payment": {
      "text": "Zahlung hinzufügen · {amount}",
      "placeholders": [
        "amount"
      ]
    },
    "split.open_items": {
      "text": "Offene Positionen"
    },
    "split.pieces_open": {
      "text": "{n} offen",
      "placeholders": [
        "n"
      ]
    },
    "split.pieces_selected": {
      "text": "{n} von {open}",
      "placeholders": [
        "n",
        "open"
      ]
    },
    "split.nothing_selected": {
      "text": "Noch nichts angetippt"
    },
    "split.all_paid": {
      "text": "Alles bezahlt"
    },
    "payment_method.card": {
      "text": "Kartenzahlung"
    },
    "payment_method.cash": {
      "text": "Barzahlung"
    },
    "payment_method.multiple": {
      "text": "Mehrere"
    },
    "cancellation.title": {
      "text": "Storno zu {receipt}",
      "placeholders": [
        "receipt"
      ]
    },
    "cancellation.how_to_refund": {
      "text": "Wie zurückgeben?"
    },
    "cancellation.as_paid": {
      "text": "wie bezahlt"
    },
    "cancellation.cash": {
      "text": "bar"
    },
    "cancellation.all_cash": {
      "text": "Alles bar"
    },
    "cancellation.payment_remainder": {
      "text": "Rest {amount}",
      "placeholders": [
        "amount"
      ]
    },
    "cancellation.difference": {
      "text": "Differenz"
    },
    "cancellation.tip_refund_question": {
      "text": "Trinkgeld auch zurückgeben?"
    },
    "cancellation.tip_refund_yes": {
      "text": "Ja"
    },
    "cancellation.tip_refund_no": {
      "text": "Nein"
    },
    "cancellation.tip_source_question": {
      "text": "Woher kommt das Trinkgeld zurück?"
    },
    "cancellation.tip_source_drawer": {
      "text": "Aus der Lade"
    },
    "cancellation.tip_source_employee": {
      "text": "Gibt die Mitarbeiterin direkt"
    },
    "cancellation.tip_stays": {
      "text": "bleibt"
    },
    "codetable.title": {
      "text": "ZEICHENSATZ-TEST"
    },
    "codetable.reference": {
      "text": "So sehen die Zeichen richtig aus"
    },
    "codetable.replacement_note": {
      "text": "(Ersatz, passt immer)"
    },
    "codetable.missing": {
      "text": "ohne {chars}",
      "placeholders": [
        "chars"
      ]
    },
    "codetable.print_again": {
      "text": "Nochmal drucken"
    },
    "codetable.not_checked": {
      "text": "Umlaute noch nicht geprüft"
    },
    "codetable.check": {
      "text": "Umlaute prüfen"
    },
    "codetable.current": {
      "text": "Zeichensatz: Nr. {number}",
      "placeholders": [
        "number"
      ]
    },
    "codetable.instruction_title": {
      "text": "Welche Zeile nehmen?"
    },
    "codetable.preview_title": {
      "text": "So steht es dann am Bon:"
    },
    "codetable.apply": {
      "text": "Übernehmen"
    },
    "codetable.other_row": {
      "text": "Andere Zeile"
    },
    "stock.all_articles": {
      "text": "Alle Artikel"
    },
    "stock.location": {
      "text": "Lager-Standort"
    },
    "stock.default_location": {
      "text": "Standard-Standort"
    },
    "stock.resolved": {
      "text": "aufgelöst"
    },
    "stock.where_to": {
      "text": "Wohin mit der Ware?"
    },
    "stock.available": {
      "text": "verfügbar"
    },
    "stock.return_restock": {
      "text": "Zurück ins Lager"
    },
    "stock.return_defective": {
      "text": "Defekt"
    },
    "stock.return_disposed": {
      "text": "Entsorgt"
    },
    "stocktake.title": {
      "text": "Inventur zählen"
    },
    "stocktake.quantity": {
      "text": "Menge"
    },
    "stocktake.defective": {
      "text": "Defekt"
    },
    "stocktake.count_zero": {
      "text": "0 zählen"
    },
    "stocktake.next": {
      "text": "Weiter"
    },
    "stocktake.void": {
      "text": "Stornieren"
    },
    "stocktake.reason": {
      "text": "Grund"
    },
    "stocktake.progress": {
      "text": "{counted} von {total} gezählt",
      "placeholders": [
        "counted",
        "total"
      ]
    },
    "stocktake.serial_numbers": {
      "text": "Seriennummern erfassen"
    },
    "stocktake.recount": {
      "text": "Nachzählen"
    },
    "stocktake.resend": {
      "text": "Erneut senden"
    },
    "stocktake.my_counts": {
      "text": "Meine Zählungen"
    },
    "stocktake.sent": {
      "text": "gesendet"
    },
    "stocktake.unconfirmed": {
      "text": "unbestätigt"
    },
    "stocktake.voided": {
      "text": "storniert"
    },
    "shift.open_title": {
      "text": "Schicht öffnen"
    },
    "shift.take_over": {
      "text": "Bestand übernehmen"
    },
    "shift.count": {
      "text": "Zählen"
    },
    "shift.by_denomination": {
      "text": "Nach Scheinen und Münzen"
    },
    "shift.close_title": {
      "text": "Schicht schließen"
    },
    "shift.cash_title": {
      "text": "Kassenstand"
    },
    "shift.x_report": {
      "text": "Zwischenbericht"
    },
    "shift.pay_out_tips": {
      "text": "Trinkgeld auszahlen"
    },
    "drawer.reason_title": {
      "text": "Warum öffnen Sie die Lade?"
    },
    "drawer.reason_change": {
      "text": "Wechselgeld"
    },
    "drawer.reason_check": {
      "text": "Kontrolle"
    },
    "drawer.reason_misoperation": {
      "text": "Fehlbedienung"
    },
    "drawer.reason_other": {
      "text": "Sonstiges"
    },
    "cash_movement.type_change_in": {
      "text": "Wechselgeld"
    },
    "cash_movement.type_cash_drop": {
      "text": "Abschöpfung"
    },
    "cash_movement.type_owner_deposit": {
      "text": "Privateinlage"
    },
    "cash_movement.type_owner_withdrawal": {
      "text": "Privatentnahme"
    },
    "cash_movement.type_tip_payout": {
      "text": "Trinkgeld-Auszahlung"
    },
    "cash_movement.type_other_in": {
      "text": "Sonstige Einzahlung"
    },
    "cash_movement.type_other_out": {
      "text": "Sonstige Auszahlung"
    },
    "cash_movement.type_transfer_out": {
      "text": "Umbuchung"
    },
    "cash_movement.type_transfer_in": {
      "text": "Umbuchung (Eingang)"
    },
    "cash_movement.type_expense": {
      "text": "Barausgabe"
    },
    "cash_movement.type_count_difference": {
      "text": "Zähldifferenz"
    },
    "cash_movement.type_handover_difference": {
      "text": "Übergabedifferenz"
    },
    "shift_receipt.title_close": {
      "text": "Schichtabschluss"
    },
    "shift_receipt.title_interim": {
      "text": "Zwischenbericht"
    },
    "shift_receipt.title_movement": {
      "text": "Kassenbewegung"
    },
    "shift_receipt.cashregister": {
      "text": "Kasse"
    },
    "shift_receipt.drawer": {
      "text": "Lade"
    },
    "shift_receipt.shift": {
      "text": "Schicht"
    },
    "shift_receipt.number": {
      "text": "Nr. {number}",
      "placeholders": [
        "number"
      ]
    },
    "shift_receipt.opened": {
      "text": "Geöffnet"
    },
    "shift_receipt.closed": {
      "text": "Geschlossen"
    },
    "shift_receipt.by": {
      "text": "von"
    },
    "shift_receipt.opening_float": {
      "text": "Startgeld"
    },
    "shift_receipt.opening_float_taken_over": {
      "text": "Startgeld übernommen"
    },
    "shift_receipt.cash_sales": {
      "text": "Bar aus Verkäufen"
    },
    "shift_receipt.cash_cancellations": {
      "text": "Bar aus Storno"
    },
    "shift_receipt.movements": {
      "text": "Bewegungen"
    },
    "shift_receipt.expected": {
      "text": "Soll"
    },
    "shift_receipt.counted": {
      "text": "Ist"
    },
    "shift_receipt.difference": {
      "text": "Differenz"
    },
    "shift_receipt.taken_out": {
      "text": "Entnommen"
    },
    "shift_receipt.put_in": {
      "text": "Eingelegt"
    },
    "shift_receipt.left_in_drawer": {
      "text": "Bleibt in der Kassenlade"
    },
    "shift_receipt.comment": {
      "text": "Kommentar"
    },
    "shift_receipt.non_cash": {
      "text": "Unbar (nur Information)"
    },
    "shift_receipt.receipts": {
      "text": "Belege"
    },
    "shift_receipt.cancellations": {
      "text": "Stornos"
    },
    "shift_receipt.openings_without_sale": {
      "text": "Öffnungen ohne Verkauf"
    },
    "shift_receipt.tips": {
      "text": "Trinkgeld"
    },
    "shift_receipt.tip_earned": {
      "text": "verdient"
    },
    "shift_receipt.tip_retained": {
      "text": "über Lohn"
    },
    "shift_receipt.tip_paid_out": {
      "text": "schon genommen"
    },
    "shift_receipt.tip_refunded_by_employee": {
      "text": "selbst zurückgegeben"
    },
    "shift_receipt.tip_carried_over": {
      "text": "aus früheren Schichten"
    },
    "shift_receipt.tip_open": {
      "text": "offen"
    },
    "shift_receipt.movement_number": {
      "text": "Nr."
    },
    "shift_receipt.type": {
      "text": "Art"
    },
    "shift_receipt.amount": {
      "text": "Betrag"
    },
    "shift_receipt.location": {
      "text": "Ort"
    },
    "shift_receipt.location_bank": {
      "text": "Bank"
    },
    "shift_receipt.location_safe": {
      "text": "Tresor"
    },
    "shift_receipt.recipient": {
      "text": "Empfänger"
    },
    "shift_receipt.target_drawer": {
      "text": "Ziel-Lade"
    },
    "shift_receipt.note": {
      "text": "Grund"
    },
    "shift_receipt.operator": {
      "text": "Bediener"
    },
    "shift_receipt.time": {
      "text": "Zeit"
    },
    "cash_movement.pay_in": {
      "text": "Einzahlung"
    },
    "cash_movement.pay_out": {
      "text": "Auszahlung"
    },
    "cash_movement.print": {
      "text": "Beleg drucken"
    },
    "drawer.recent_openings": {
      "text": "Letzte Öffnungen"
    },
    "drawer.reason_sale": {
      "text": "Verkauf"
    },
    "drawer.reason_cash_movement": {
      "text": "Kassenbewegung"
    },
    "drawer.reason_shift_open": {
      "text": "Schichtbeginn"
    },
    "drawer.reason_shift_close": {
      "text": "Schichtabschluss"
    },
    "drawer.reason_voucher_payout": {
      "text": "Gutschein-Auszahlung"
    },
    "shift.resend": {
      "text": "Erneut senden"
    },
    "shift.next": {
      "text": "Weiter"
    },
    "shift.print_close": {
      "text": "Schichtabschluss drucken"
    },
    "shift.print_again": {
      "text": "Nochmals drucken"
    },
    "shift.back_to_register": {
      "text": "Zur Kasse"
    },
    "shift.later": {
      "text": "Später senden"
    },
    "time.yesterday": {
      "text": "gestern"
    },
    "shift.drawer_should_have": {
      "text": "In der Kassenlade sollten sein"
    },
    "shift.drawer_named": {
      "text": "Kassenlade: {name}",
      "placeholders": [
        "name"
      ]
    },
    "shift.running_since": {
      "text": "läuft seit {duration}",
      "placeholders": [
        "duration"
      ]
    },
    "shift.since": {
      "text": "seit {time}",
      "placeholders": [
        "time"
      ]
    },
    "shift.collected_outside_drawer": {
      "text": "Kassiert, aber nicht in der Kassenlade"
    },
    "shift.non_cash_short": {
      "text": "unbar"
    },
    "shift.voucher_redeemed": {
      "text": "Gutschein eingelöst"
    },
    "voucher.button": {
      "text": "Gutschein"
    },
    "voucher.redeem": {
      "text": "Gutschein einlösen"
    },
    "voucher.sell": {
      "text": "Gutschein verkaufen"
    },
    "voucher.payout": {
      "text": "Gutschein auszahlen"
    },
    "voucher.code": {
      "text": "Code"
    },
    "voucher.scan": {
      "text": "Code scannen"
    },
    "voucher.check": {
      "text": "Prüfen"
    },
    "voucher.amount": {
      "text": "Betrag"
    },
    "voucher.balance": {
      "text": "Rest am Gutschein: {amount}",
      "placeholders": [
        "amount"
      ]
    },
    "voucher.remaining_quantity": {
      "text": "{n} von {total} übrig",
      "placeholders": [
        "n",
        "total"
      ]
    },
    "voucher.reason": {
      "text": "Grund"
    },
    "voucher.multi_purpose": {
      "text": "Mehrzweckgutschein"
    },
    "voucher.single_purpose": {
      "text": "Einzweckgutschein {rate} %",
      "placeholders": [
        "rate"
      ]
    },
    "voucher.service": {
      "text": "Leistungsgutschein"
    },
    "voucher.promotion": {
      "text": "Aktionsgutschein"
    },
    "voucher.payment_line": {
      "text": "Gutschein ····-{suffix}",
      "placeholders": [
        "suffix"
      ]
    },
    "quantity.at_most": {
      "text": "höchstens {count}",
      "placeholders": [
        "count"
      ]
    },
    "quantity.at_least": {
      "text": "mindestens {count}",
      "placeholders": [
        "count"
      ]
    },
    "receipts.number_hint": {
      "text": "Nummer"
    },
    "receipts.clear_number": {
      "text": "Nummer löschen"
    },
    "receipts.open": {
      "text": "Öffnen"
    },
    "receipt.creating": {
      "text": "Beleg wird erstellt …"
    },
    "receipt_done.sale_title": {
      "text": "Verkauf abgeschlossen"
    },
    "receipt_done.paid_by_voucher": {
      "text": "mit Gutschein bezahlt"
    },
    "receipt_done.payout_title": {
      "text": "Auszahlung abgeschlossen"
    },
    "receipt_done.paid_out": {
      "text": "{method} ausgezahlt",
      "placeholders": [
        "method"
      ]
    },
    "voucher.code_mask": {
      "text": "····-{suffix}",
      "placeholders": [
        "suffix"
      ]
    },
    "cart.close": {
      "text": "Warenkorb schließen"
    },
    "nav.register": {
      "text": "Kasse"
    },
    "nav.receipts": {
      "text": "Belege"
    },
    "nav.vouchers": {
      "text": "Gutscheine"
    },
    "nav.open_drawer": {
      "text": "Kassenlade öffnen"
    },
    "nav.stocktake": {
      "text": "Inventur"
    },
    "nav.settings": {
      "text": "Einstellungen"
    },
    "nav.settings_locked": {
      "text": "nur mit Chef-Anmeldung"
    },
    "nav.logout": {
      "text": "Abmelden"
    },
    "nav.logging_out": {
      "text": "Wird abgemeldet …"
    },
    "nav.fullscreen": {
      "text": "Vollbild"
    },
    "nav.fullscreen_exit": {
      "text": "Vollbild verlassen"
    },
    "voucher.covers_items": {
      "text": "Deckt: {items}",
      "placeholders": [
        "items"
      ]
    },
    "voucher.code_shown_once": {
      "text": "Code nur jetzt sichtbar: {code}",
      "placeholders": [
        "code"
      ]
    },
    "voucher.not_in_split": {
      "text": "Gutscheine gehen beim getrennten Kassieren nicht."
    },
    "voucher.payout_not_possible": {
      "text": "Dieser Gutschein lässt sich nicht auszahlen."
    },
    "voucher.add_article": {
      "text": "{article} hinzufügen",
      "placeholders": [
        "article"
      ]
    },
    "voucher.payout_confirm": {
      "text": "{amount} bar auszahlen?",
      "placeholders": [
        "amount"
      ]
    },
    "cancellation.voucher_back": {
      "text": "{amount} geht zurück auf den Gutschein",
      "placeholders": [
        "amount"
      ]
    },
    "voucher.apply": {
      "text": "Übernehmen"
    },
    "voucher.redeemable_until": {
      "text": "einlösbar bis {date}",
      "placeholders": [
        "date"
      ]
    },
    "voucher.remove_line": {
      "text": "{line} entfernen",
      "placeholders": [
        "line"
      ]
    },
    "voucher.reenter_code": {
      "text": "Code erneut eingeben"
    },
    "voucher.refundable_until": {
      "text": "rückzahlbar bis {date}",
      "placeholders": [
        "date"
      ]
    },
    "voucher.code_done": {
      "text": "Fertig"
    },
    "voucher.article": {
      "text": "Artikel"
    },
    "voucher.add": {
      "text": "Hinzufügen"
    },
    "shift.all_payments": {
      "text": "Alle Zahlungen dieser Schicht (bar + unbar)"
    },
    "shift.receipt_count_one": {
      "text": "1 Beleg"
    },
    "shift.receipt_count_other": {
      "text": "{count} Belege",
      "placeholders": [
        "count"
      ]
    },
    "shift.openings_without_sale_count": {
      "text": "{count}× ohne Verkauf geöffnet",
      "placeholders": [
        "count"
      ]
    },
    "cash_movement.pay_in_short": {
      "text": "Einzahlen"
    },
    "cash_movement.pay_out_short": {
      "text": "Auszahlen"
    },
    "drawer.recent_openings_full": {
      "text": "Letzte Öffnungen der Kassenlade"
    },
    "printer.warn_unreachable": {
      "text": "Drucker nicht erreichbar"
    },
    "printer.warn_none": {
      "text": "Kein Drucker eingerichtet"
    },
    "printer.check": {
      "text": "Prüfen"
    },
    "printer.set_up": {
      "text": "Einrichten"
    },
    "duration.days_one": {
      "text": "{days} Tag",
      "placeholders": [
        "days"
      ]
    },
    "duration.days_other": {
      "text": "{days} Tage",
      "placeholders": [
        "days"
      ]
    },
    "duration.hours": {
      "text": "{hours} Std.",
      "placeholders": [
        "hours"
      ]
    },
    "duration.minutes": {
      "text": "{minutes} Min.",
      "placeholders": [
        "minutes"
      ]
    },
    "tip_payout.open_amount": {
      "text": "offen {amount}",
      "placeholders": [
        "amount"
      ]
    },
    "tip_payout.done": {
      "text": "erledigt"
    },
    "tip_payout.for_all": {
      "text": "Für alle"
    },
    "tip_payout.nothing": {
      "text": "Nichts"
    },
    "tip_payout.all_open": {
      "text": "Alles Offene"
    },
    "tip_payout.title": {
      "text": "Auszahlung"
    },
    "tip_payout.persons_one": {
      "text": "1 Person"
    },
    "tip_payout.persons_other": {
      "text": "{count} Personen",
      "placeholders": [
        "count"
      ]
    },
    "tip_payout.pay_amount": {
      "text": "{amount} auszahlen",
      "placeholders": [
        "amount"
      ]
    },
    "tip_payout.pay_out": {
      "text": "Auszahlen"
    },
    "drawer.change_float": {
      "text": "Wechselgeld in der Lade"
    },
    "drawer.change_float_hint": {
      "text": "Bleibt nach jedem Schicht-Abschluss drin. Mehr wird beim Schließen entnommen."
    },
    "drawer.change_float_empty_hint": {
      "text": "Leer = alles bleibt in der Lade (wie bisher)."
    },
    "shift.step_take_out": {
      "text": "Geld entnehmen"
    },
    "shift.left_in_drawer": {
      "text": "Bleibt in der Kassenlade"
    },
    "shift.change_float_next_shift": {
      "text": "Wechselgeld für die nächste Schicht"
    },
    "shift.take_out": {
      "text": "Entnehmen"
    },
    "shift.put_in": {
      "text": "Einlegen"
    },
    "shift.take_out_at_most": {
      "text": "höchstens {amount}",
      "placeholders": [
        "amount"
      ]
    },
    "shift.put_in_hint": {
      "text": "Geld in die Kassenlade legen"
    },
    "shift.after_count_tap_hint": {
      "text": "Tippe auf einen Betrag, um ihn zu ändern – der andere rechnet sich selbst."
    },
    "shift.take_out_amount": {
      "text": "{amount} entnehmen",
      "placeholders": [
        "amount"
      ]
    },
    "shift.put_in_amount": {
      "text": "{amount} einlegen",
      "placeholders": [
        "amount"
      ]
    },
    "shift.continue_without_take_out": {
      "text": "Weiter ohne Entnahme"
    },
    "shift.print_envelope_receipt": {
      "text": "Bon fürs Kuvert drucken"
    },
    "shift.toggle_take_out_put_in": {
      "text": "Entnehmen oder Einlegen umschalten"
    },
    "shift.put_in_change_float": {
      "text": "Wechselgeld einlegen"
    },
    "shift.taken_over_from_shift": {
      "text": "von Schicht {number} übernommen",
      "placeholders": [
        "number"
      ]
    },
    "shift.counted": {
      "text": "Gezählt"
    },
    "shift.back": {
      "text": "Zurück"
    },
    "shift.done": {
      "text": "Fertig"
    },
    "shift.edit_amount": {
      "text": "{title} ändern",
      "placeholders": [
        "title"
      ]
    },
    "shift.pay_ins": {
      "text": "Einzahlungen"
    },
    "shift.pay_outs": {
      "text": "Auszahlungen"
    },
    "cash_movement.pay_in_amount": {
      "text": "{amount} einzahlen",
      "placeholders": [
        "amount"
      ]
    },
    "cash_movement.pay_out_amount": {
      "text": "{amount} auszahlen",
      "placeholders": [
        "amount"
      ]
    },
    "receipt.outputs_title": {
      "text": "Ausgaben"
    },
    "receipt.outputs_count": {
      "text": "{count} Ausgaben",
      "placeholders": [
        "count"
      ]
    },
    "receipt.output_print": {
      "text": "Erstdruck"
    },
    "receipt.output_reprint": {
      "text": "Duplikat"
    },
    "receipt.output_email": {
      "text": "E-Mail"
    },
    "receipt.output_link_shared": {
      "text": "Link geteilt"
    },
    "receipt.output_pdf_shared": {
      "text": "PDF geteilt"
    },
    "receipt.output_opened": {
      "text": "Link geöffnet ({count}×)",
      "placeholders": [
        "count"
      ]
    },
    "receipt.output_failed": {
      "text": "fehlgeschlagen"
    }
  },
  "returnDispositionLabels": {
    "restock": "stock.return_restock",
    "defective": "stock.return_defective",
    "disposed": "stock.return_disposed"
  }
}
