Vermietungs-Tool

A local web app for a small room-rental business in Austria: guest register,
room ledger, occupancy plan, invoices, the monthly tourist-tax report and the
quarterly VAT list. Application code only; it ships no data.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
BlackMarkandClaude Opus 5.5 committed 2026-11-02 16:52:27 +01:00
commit 45424e6fd6
47 files changed
+6701

No files matched your search

+311
View File
@@ -0,0 +1,311 @@
{
"app_title": "Zimmervermietung",
"nav_home": "Start",
"nav_register": "Gästeblätter",
"nav_ledger": "Zimmerbelegung",
"nav_invoices": "Rechnungen",
"nav_plan": "Belegungsplan",
"plan_title": "Belegungsplan",
"plan_today": "Heute",
"plan_prev_week": "Eine Woche zurück",
"plan_next_week": "Eine Woche weiter",
"plan_weeks_4": "4 Wochen",
"plan_weeks_8": "8 Wochen",
"plan_guests": "Heute: {guests} Gäste im Haus",
"plan_guests_one": "Heute: 1 Gast im Haus",
"plan_free": "{free} Betten frei",
"plan_free_one": "1 Bett frei",
"plan_pill_tip": "Belegte Betten heute / Betten gesamt",
"plan_longterm": "Dauervermietung",
"plan_longterm_short": "Dauer",
"plan_open": "offen",
"plan_legend_current": "wohnt gerade hier",
"plan_legend_past": "abgereist",
"plan_legend_future": "kommt noch",
"plan_legend_today": "heute",
"plan_no_room": "Ohne Zimmer eingetragen:",
"home_welcome": "Willkommen",
"home_intro": "Verwaltung der Gästeblätter, Zimmerbelegung und Rechnungen an einem Ort.",
"home_guests": "Gäste",
"home_stays": "Aufenthalte",
"home_invoices": "Rechnungen",
"home_open": "Offene Posten",
"register_title": "Gästeblätter",
"ledger_title": "Zimmerbelegung",
"invoices_title": "Rechnungen",
"clients_title": "Firmen & Kunden",
"nav_clients": "Firmen",
"nav_quality": "Datenprüfung",
"nav_tvb": "TVB-Meldung",
"nav_vat": "Umsatzsteuer",
"tvb_title": "Meldung Tourismusverband (Aufenthaltsabgabe)",
"tvb_intro": "Für den gewählten Monat, getrennt nach Betrieb: die Zimmerliste zur Kontrolle und darunter die fertigen Zahlen zum Eintippen in Feratel (Sammelmeldung, jeweils Personen/Nächte). Personen = neue Gästeblätter in diesem Monat.",
"tvb_month": "Monat",
"tvb_number": "Betriebsnummer",
"tvb_detail": "Zimmerliste (zur Kontrolle)",
"tvb_feratel": "Für Feratel",
"tvb_pflichtig": "Pflichtige",
"tvb_frei": "Freie",
"tvb_col_land": "Land",
"tvb_col_gb_new": "GB neu",
"tvb_col_stay": "Aufenthalt (Nächte gesamt)",
"tvb_col_nights_month": "Nächte im Monat",
"tvb_col_pn": "Personen/Nächte",
"tvb_col_note": "Hinweis",
"tvb_status_frei": "frei",
"tvb_status_pflichtig": "pflichtig",
"tvb_total": "Monat Gesamt",
"tvb_betrag": "Zu erwartende Abgabe",
"tvb_new_sheets": "Kontrolle: neue Gästeblätter in diesem Monat",
"tvb_warnings": "Bitte prüfen",
"tvb_empty": "Keine Nächtigungen in diesem Monat.",
"quality_title": "Datenprüfung",
"quality_intro": "Hinweise auf Lücken, Unstimmigkeiten und Doppeleinträge in den Daten.",
"quality_gaps": "Auffälligkeiten in den Daten",
"gap_depart_before_arrival": "Abreise liegt vor der Anreise",
"gap_charges_without_money": "Belegungen ohne Betrag",
"gap_client_without_address": "Firma ohne Adresse — eine Rechnung an sie würde unvollständig gedruckt",
"gap_address_has_name": "Adresse enthält Firmennamen-Teil (Adresszeile prüfen)",
"gap_implausible_qty": "Unmögliche Anzahl/Betrag (Tippfehler?)",
"gap_rnr_unlinked": "Rechnungs-Nr. ohne zugeordnete Rechnung",
"gap_duplicate_numbers": "Doppelte Rechnungsnummern",
"gap_number_year": "Rechnungsnummer passt nicht zum Datum",
"gap_open_items": "Offene Posten (alt)",
"gap_no_departure": "Gäste ohne Abreisedatum",
"gap_tvb_stale_open": "Gästeblatt seit über 1 Jahr ohne Abreise (zählt in der TVB-Meldung nicht mit)",
"gap_register_ledger": "Gästeblatt-Dauer passt nicht zur Zimmerbelegung (gleicher Name, andere Zeiten)",
"gap_gb_ref_unknown": "Gästeblatt-Nr. in der Zimmerbelegung, die es in der Gästeblätter-Liste nicht gibt",
"btn_dismiss": "Passt so",
"gap_never_billed": "Abgereister Gast ohne Verrechnung in der Zimmerbelegung (vergessen oder anders geschrieben?)",
"gap_betrag_formula": "Betrag passt weder zu Anzahl × Satz noch zu Anzahl × Satz × Personen (Tippfehler oder Rabatt?)",
"err_departure_before_arrival": "Abreise liegt vor der Anreise — bitte Datum prüfen.",
"quality_suggestions": "Mögliche Doppeleinträge (zusammenführen?)",
"quality_suggestions_hint": "Diese Einträge sehen sehr ähnlich aus. Zusammenführen nur, wenn es wirklich dasselbe ist – nichts geht dabei verloren.",
"quality_no_company_suggestions": "Keine ähnlichen Firmennamen gefunden.",
"quality_guest": "Gast",
"form_edit_client": "Firma bearbeiten",
"col_kind": "Typ",
"kind_company": "Firma",
"kind_private": "Privat",
"col_address_current": "Aktuelle Adresse",
"col_versions": "Adressen",
"lbl_known_spellings": "Bekannte Schreibweisen",
"lbl_addresses": "Adressen im Zeitverlauf (alte Rechnungen behalten ihre alte Adresse)",
"lbl_address_current": "Aktuell",
"lbl_new_address": "Neue Adresse (Umzug / weiterer Standort)",
"lbl_use_from_now": "Ab jetzt für neue Rechnungen verwenden",
"btn_add_address": "Adresse hinzufügen",
"lbl_merge": "Mit anderer Firma zusammenführen",
"lbl_merge_into": "Diese Firma ist dasselbe wie",
"merge_hint": "Alle Einträge und Schreibweisen wandern zur ausgewählten Firma. Nichts geht verloren.",
"btn_merge": "Zusammenführen",
"confirm_merge": "Wirklich zusammenführen?",
"lbl_edit_address": "Adresse bearbeiten",
"btn_make_current": "Als aktuelle Adresse",
"confirm_delete_address": "Diese Adresse wirklich löschen?",
"lbl_current_address_short": "aktuelle Adresse",
"err_address_has_refs": "Adresse kann nicht gelöscht werden: Es hängen noch Aufenthalte oder Rechnungen daran.",
"err_address_last": "Die letzte Adresse einer Firma kann nicht gelöscht werden — dann lieber die ganze Firma löschen.",
"lbl_delete_company": "Firma löschen",
"delete_company_hint": "Nur möglich, wenn keine Aufenthalte oder Rechnungen an dieser Firma hängen. Gibt es welche, führe sie stattdessen mit der richtigen Firma zusammen.",
"btn_delete_company": "Firma löschen",
"confirm_delete_company": "Diese Firma wirklich löschen?",
"err_company_has_refs": "Firma kann nicht gelöscht werden: Es hängen noch Aufenthalte oder Rechnungen daran. Bitte stattdessen zusammenführen.",
"hws_full": "Hauptwohnsitz",
"hws_none": "Nebenwohnsitz",
"search": "Suchen",
"search_placeholder": "Name, Firma, Zimmer …",
"no_results": "Keine Einträge gefunden.",
"showing_count": "{count} Einträge",
"col_name": "Name",
"col_lastname": "Nachname",
"col_firstname": "Vorname",
"col_birth": "Geburtsdatum",
"col_nationality": "Staatsbürgerschaft",
"col_room": "Zimmer",
"col_unit": "Einheit",
"col_arrival": "Anreise",
"col_departure": "Abreise",
"filter_stay": "Aufenthalt",
"filter_persons": "Personen",
"filter_year": "Jahr",
"filter_still_here": "noch da",
"filter_departed": "abgereist",
"col_days": "Tage",
"col_residence": "Wohnsitz",
"col_tourism_liable": "Abgabe",
"col_employer_address": "Firmenadresse",
"col_employer": "Arbeitgeber",
"col_document": "Dokument",
"col_docnr": "Dokument-Nr.",
"col_profession": "Beruf",
"col_sheetno": "Gästeblatt-Nr.",
"col_address": "Adresse",
"col_postcode": "PLZ",
"col_city": "Ort",
"col_country": "Land",
"col_phone": "Telefon",
"col_notes_long": "Bemerkung",
"hd_room": "Zi",
"hd_gb": "GB",
"hd_qty": "Anz",
"hd_persons": "Pers",
"hd_payer": "Zlg. durch",
"hd_invoice": "RNr.",
"hd_invoice_date": "Re vom",
"hd_paid_date": "bez. am",
"col_period": "Zeitraum",
"col_from": "Von",
"col_to": "Bis",
"col_gb": "Gästeblatt",
"col_occupant": "Name",
"col_persons": "Personen",
"col_qty": "Anzahl",
"col_rate": "Satz",
"col_amount": "Betrag",
"col_invoice_total": "Rechnungssumme",
"col_tourism_tax": "Ortstaxe",
"col_payer": "Zahlung durch",
"col_art": "Art",
"col_invoice": "Rechnungs-Nr.",
"col_invoice_date": "Rechnungsdatum",
"col_paid_date": "Bezahlt am",
"col_notes": "Bemerkung",
"col_payment": "Bezahlt",
"col_client": "Kunde",
"col_date": "Datum",
"col_unit_type": "Einheit (Woche/Tag)",
"col_gross_per_unit": "Brutto pro Einheit",
"col_tourism": "Ortstaxe",
"payment_paid": "Bezahlt",
"payment_open": "OFFEN",
"payment_cash": "Bar/direkt",
"payment_part": "({paid} bezahlt, {open} offen)",
"lbl_payments": "Zahlungen in Teilen (Datum und Betrag)",
"hint_payments": "Nur wenn in Teilen bezahlt wurde. Decken die Zahlungen zusammen Betrag + Ortstaxe, ist die Zeile bezahlt (am Tag der letzten Zahlung) — sonst bleibt sie OFFEN.",
"btn_add_payment": "+ weitere Zahlung",
"payment_unknown": "—",
"payment_unknown_label": "keine Angabe",
"btn_remove_line": "Zeile entfernen",
"btn_add_stay": "Neuer Gast",
"btn_add_ledger": "Neue Belegung",
"btn_new_invoice": "Neue Rechnung",
"btn_edit": "Bearbeiten",
"btn_save": "Speichern",
"btn_cancel": "Abbrechen",
"btn_delete": "Löschen",
"btn_back": "Zurück",
"btn_print": "Drucken",
"btn_open": "Öffnen",
"btn_regenerate": "Neu generieren",
"btn_continue": "Speichern und weiterführen",
"hint_continue": "Rechnet bis zum Datum bei 'Bis' ab und legt eine neue Zeile ab diesem Tag an — für Gäste, die bleiben.",
"msg_continued": "Neue Zeile ab {date} angelegt — der Gast bleibt.",
"msg_rows_follow_invoice": "Die Zimmerbelegung wurde an die Rechnung angepasst: {fixed} Zeile(n) ausgebessert, {new} neue Zeile(n).",
"err_continue_needs_date": "Bitte zuerst bei 'Bis' das Datum eintragen, bis zu dem abgerechnet wird.",
"btn_room_change": "Speichern und Zimmerwechsel",
"hint_room_change": "Die Abreise ist der Tag des Wechsels. Danach öffnet sich ein neues Gästeblatt mit derselben Nummer, schon ausgefüllt — nur das neue Zimmer wählen.",
"err_room_change_needs_date": "Bitte zuerst bei 'Abreise' den Tag des Zimmerwechsels eintragen.",
"form_room_change": "Zimmerwechsel – neues Gästeblatt mit derselben Nummer",
"note_room_change": "Zimmerwechsel von Zimmer {room}",
"msg_room_changed": "Zimmerwechsel eingetragen — die Zimmerbelegung läuft ab {date} in Zimmer {room} weiter, zum bisherigen Preis.",
"btn_payment": "Zahlung",
"btn_take_over": "Übernehmen",
"pin_tip": "Spalte fixieren (bleibt beim Blättern links stehen)",
"unpin_tip": "Fixierung aufheben",
"form_new_stay": "Neuer Gast / Aufenthalt",
"form_edit_stay": "Aufenthalt bearbeiten",
"form_new_ledger": "Neue Belegung",
"form_edit_ledger": "Belegung bearbeiten",
"form_new_invoice": "Neue Rechnung",
"form_edit_invoice": "Rechnung bearbeiten",
"form_payment": "Zahlung eintragen – Rechnung {number}",
"lbl_unit": "Einheit",
"lbl_room": "Zimmer",
"lbl_client": "Kunde / Firma",
"lbl_invoice_no": "Rechnungsnummer",
"lbl_invoice_date": "Rechnungsdatum",
"lbl_paid_date": "Bezahlt am",
"lbl_payment_method": "Zahlung durch (Bank / bar / Firma)",
"lbl_payment_from_ledger": "Laut Zimmerbelegung",
"lbl_invoice_note": "Rechnungstext (Zahlungshinweis / Vermerk)",
"invoice_note_default": "Bitte überweisen Sie den Rechnungsbetrag innerhalb von 8 Tagen auf das u.a. Konto.",
"lbl_select_charges": "Zu verrechnende Belegungen auswählen",
"err_required": "Bitte ausfüllen: {field}",
"err_number": "Bitte eine Zahl eingeben: {field}",
"err_number_taken": "Rechnungsnummer {number} ist bereits vergeben.",
"warn_order_smaller": "Achtung, nicht gespeichert: Die Rechnung {other} hat eine kleinere Nummer, ist aber vom {other_date} – also später als {date}. Die Rechnungen müssen der Reihe nach datiert sein. Bitte Datum oder Nummer prüfen.",
"warn_order_larger": "Achtung, nicht gespeichert: Die Rechnung {other} hat eine höhere Nummer, ist aber schon vom {other_date} – also früher als {date}. Die Rechnungen müssen der Reihe nach datiert sein. Bitte Datum oder Nummer prüfen.",
"lbl_confirm_order": "Das Datum stimmt trotzdem – so speichern",
"warn_client_no_address": "Achtung, nicht gespeichert: Für den Kunden „{name}“ gibt es keine Adresse – die Rechnung hätte keine Anschrift. Bitte den richtigen Kunden wählen.",
"lbl_client_choices": "Für „{name}“ gibt es keine Adresse. Welche Firma ist gemeint? Anklicken, dann speichern:",
"lbl_client_unknown": "Für „{name}“ gibt es keine Adresse. Bitte die Firma zuerst unter Firmen mit Adresse anlegen – oder:",
"lbl_confirm_client": "Der Kunde stimmt trotzdem – ohne Adresse speichern",
"sum_label": "Summe",
"vat_title": "Umsatzsteuer-Voranmeldung",
"vat_intro": "Alle Eingänge des Quartals nach dem Tag, an dem bezahlt wurde – nach Zimmer geordnet, ohne Ortstaxe.",
"vat_quarter_n": "{n}. Quartal",
"vat_room_sum": "Summe Zimmer {room}",
"vat_empty": "Keine Eingänge in diesem Quartal.",
"vat_storno": "Storno – nicht steuerbar",
"vat_part": "Teilzahlung",
"period_until": "bis {date}",
"period_since": "ab {date}",
"vat_total_title": "Zusammenfassung",
"vat_total": "Eingänge gesamt",
"vat_storno_sum": "davon Stornogebühren (nicht steuerbar, ohne Umsatzsteuer)",
"vat_gross": "Brutto (10 %)",
"vat_tax": "Umsatzsteuer 10 %",
"vat_net": "Netto (10 %)",
"err_delete_blocked": "Kann nicht gelöscht werden – es hängen noch Buchungen daran.",
"err_not_found": "Eintrag nicht gefunden.",
"err_generic": "Etwas ist schiefgelaufen. Bitte nochmal versuchen.",
"confirm_delete": "Diesen Eintrag wirklich löschen?",
"confirm_regenerate": "Rechnung aus der Zimmerbelegung neu erstellen? Die bisherigen Rechnungszeilen werden ersetzt.",
"none": "—",
"col_uid": "UID",
"col_email": "E-Mail",
"col_address_private": "Adresse (privat)",
"col_gb_number": "Gästeblatt-Nr.",
"col_rate_per_unit": "Satz (€ pro Einheit)",
"col_amount_eur": "Betrag (€)",
"form_room": "Zimmer {room}",
"filter_all": "{col}: alle",
"yes": "Ja",
"no": "Nein",
"unit_types": {"week": "Woche", "day": "Tag", "night": "Nacht", "month": "Monat", "total": "gesamt"},
"line_kinds": {"stay": "Übernachtung", "storno": "Storno"},
"btn_add_line": "+ Zeile",
"btn_pdf": "Als PDF",
"btn_invoice_from_selection": "Rechnung aus Auswahl",
"hint_invoice_tourism": "Ortstaxe nur bei Aufenthalten ≤ 10 Nächten (sonst befreit).",
"plan_room": "Zi {number}",
"plan_sheet": "GB {number}",
"quality_more": "… {n} weitere",
"tvb_warn_nationality_used": "Kein Wohnsitz-Land eingetragen – Staatsbürgerschaft verwendet",
"tvb_warn_no_country": "Weder Wohnsitz-Land noch Staatsbürgerschaft eingetragen",
"tvb_warn_at_postcode": "Österreich ohne erkennbare PLZ – Bundesland unklar",
"tvb_warn_de_border": "PLZ {postcode} → {state} (Grenzgebiete bitte prüfen)",
"tvb_warn_de_postcode": "Deutsche PLZ fehlt oder unbekannt – Region unklar",
"tvb_warn_no_unit": "{name} (angereist {arrival}): kein Betrieb zuordenbar – NICHT mitgezählt. Bitte Zimmer im Gästeblatt eintragen.",
"tvb_note_still_here": "noch im Haus, erst {nights} Nächte – als frei angenommen (bleibt er ≤ 10 Nächte: Abreise eintragen → pflichtig)",
"months": ["Jänner", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
"months_short": ["Jän.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Dez."],
"weekdays_short": ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"],
"print_search": "Suche: {q}",
"print_rows": "{n} Zeilen",
"print_rows_one": "1 Zeile",
"print_date": "gedruckt am {date}"
}