Files
paliad/frontend/src/client/i18n.ts
mAi 264cc39a6b
Some checks failed
Paliad CI gate / build (push) Has been cancelled
Paliad CI gate / test-go (push) Has been cancelled
Paliad CI gate / deploy (push) Has been cancelled
chore(builder): B6 — mobile basic-read + dead U0-U4 cleanup + i18n finalise (t-paliad-350)
Litigation Builder slice B6 (m/paliad#153 PRD §7.1 + §7.4 + §10) — last
slice of the train; the Builder is now complete.

Mobile basic-read (<640px, PRD §10):
- builder.ts wireMobileGuard — a capture-phase document click listener that,
  only when matchMedia("(max-width:640px)") matches, intercepts taps on
  mutating affordances (rename/share/promote/new-scenario/add-proceeding +
  every in-triplet button/input/select), preventDefault+stopPropagation,
  and surfaces a "Auf größerem Bildschirm öffnen" toast. Desktop code paths
  are untouched (guard early-returns off-mobile). Column-triplets already
  collapse to a single column via the reused .fr-columns-view @640px rule;
  reading (open/switch scenarios, search, mode tabs) stays fully functional.
- global.css — .builder-mobile-toast + full-bleed modal on phones.

Dead U0-U4 catalog cleanup (PRD §7.4) — deleted, no remaining references
(grep "from.*fristenrechner-|from.*verfahrensablauf" shows only the kept
verfahrensablauf-core + verfahrensablauf-detail-mode the builder reuses):
- client/fristenrechner-mode-a.ts, fristenrechner-result.ts(+test),
  fristenrechner-wizard.ts(+test)
- client/verfahrensablauf.ts, client/views/event-card-choices.ts,
  client/views/verfahrensablauf-state.ts(+test)
- components/VerfahrensablaufBody.tsx
(/tools/fristenrechner + /tools/verfahrensablauf stay as 301 redirects to
/tools/procedures — handlers already redirectToProcedures.)

i18n finalised (DE+EN): removed 4 duplicate deadlines.party.* keys per
block (behaviour-preserving — the later, winning copy is kept) and added
the missing DE "cal.today". Codegen clean, no dupes, full DE/EN parity.

go build/vet clean; bun build + 227 frontend tests pass. Playwright-
verified: at 375px the triplet collapses to one column + the scenario
list reads, while "+ Verfahren hinzufügen" and "Teilen" are blocked
(toast shown, no action); at 1280px the same actions work normally.
2026-05-29 20:44:40 +02:00

6892 lines
391 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// i18n — Client-side internationalization for paliad
// Supports DE (German) and EN (English)
import { FIRM } from "../branding";
import type { I18nKey } from "../i18n-keys";
export type { I18nKey };
export type Lang = "de" | "en";
const STORAGE_KEY = "paliad-lang";
const LEGACY_STORAGE_KEY = "patholo-lang";
let currentLang: Lang = "de";
const changeCallbacks: Array<() => void> = [];
const translations: Record<Lang, Record<string, string>> = {
de: {
// Navigation
"nav.home": "Home",
"nav.kostenrechner": "Kostenrechner",
"nav.downloads": "Downloads",
"nav.links": "Links",
"nav.glossar": "Glossar",
"nav.gebuehrentabellen": "Geb\u00fchrentabellen",
"nav.checklisten": "Checklisten",
"nav.submissions": "Schriftsätze",
"nav.gerichte": "Gerichte",
"nav.logout": "Abmelden",
"nav.akten": "Akten",
"nav.projekte": "Projekte",
"nav.fristen": "Fristen",
"nav.termine": "Termine",
"nav.dashboard": "Dashboard",
"nav.agenda": "Agenda",
"nav.inbox": "Genehmigungen",
"nav.paliadin": "Paliadin",
"nav.team": "Team",
"nav.group.uebersicht": "\u00dcbersicht",
"nav.group.ansichten": "Ansichten",
"nav.group.werkzeuge": "Werkzeuge",
"nav.neuigkeiten": "Neuigkeiten",
"nav.soon.tooltip": "Bald verf\u00fcgbar",
// Theme toggle (m/paliad#2). The button cycles auto \u2192 light \u2192 dark
// \u2192 auto. The "toggle.<pref>" keys show the *current* pref next to
// the icon; the "cycle.<pref>" keys describe WHAT the next click will
// do (read by aria-label / tooltip).
"theme.toggle.auto": "Auto",
"theme.toggle.light": "Hell",
"theme.toggle.dark": "Dunkel",
"theme.toggle.cycle.auto": "Auf Hell-Modus wechseln",
"theme.toggle.cycle.light": "Auf Dunkel-Modus wechseln",
"theme.toggle.cycle.dark": "Auf Auto wechseln (System)",
// BottomNav (mobile)
"bottomnav.add": "Anlegen",
"bottomnav.menu": "Menü",
"bottomnav.add.title": "Schnell anlegen",
"bottomnav.add.deadline": "Frist anlegen",
"bottomnav.add.deadline.sub": "Neue Frist mit Datum & Projekt",
"bottomnav.add.appointment": "Termin anlegen",
"bottomnav.add.appointment.sub": "Neuer Termin mit Uhrzeit & Ort",
"bottomnav.add.project": "Projekt anlegen",
"bottomnav.add.project.sub": "Neues Mandat / Verfahren / Patent",
"bottomnav.add.cancel": "Abbrechen",
"bottomnav.badge.deadlines": "{overdue} überfällig + {today} heute fällig",
// Changelog (What's New) — t-paliad-027
"changelog.title": "Neuigkeiten — Paliad",
"changelog.heading": "Neuigkeiten",
"changelog.subtitle": "Was sich in Paliad in letzter Zeit getan hat.",
"changelog.empty": "Noch keine Eintr\u00e4ge.",
"changelog.tag.feature": "Neu",
"changelog.tag.content": "Inhalt",
"changelog.tag.fix": "Fix",
// Footer
"footer.text": "\u00a9 2026 Paliad \u2014 by",
// Landing page
"index.title": `Paliad \u2014 Patent Litigation f\u00fcr ${FIRM}`,
"index.hero.accent": `f\u00fcr ${FIRM}`,
"index.hero.sub": `Administration, Knowledge und Tools f\u00fcr das ${FIRM} Patent-Team.`,
"index.guides.title": "Leitf\u00e4den",
"index.guides.desc": "Praxisleitf\u00e4den zu Verfahren vor dem EPA, BPatG und UPC. Schritt-f\u00fcr-Schritt-Anleitungen f\u00fcr typische Workflows.",
"index.templates.title": "Vorlagen",
"index.templates.desc": `Standardisierte Vorlagen f\u00fcr Schrifts\u00e4tze, Korrespondenz und interne Dokumente. ${FIRM} Patents Style Guide.`,
"index.documents.title": "Dokumente",
"index.documents.desc": "Referenzmaterialien, Checklisten und Arbeitshilfen f\u00fcr den Praxisalltag im Patentrecht.",
"index.tools": "Werkzeuge",
"index.cost.title": "Kostenrechner",
"index.cost.desc": "Sch\u00e4tzung der Verfahrenskosten f\u00fcr DE-Gerichte, UPC und EPA-Verfahren. Gerichts- und Anwaltskosten auf einen Blick.",
"index.deadline.title": "Fristenrechner",
"index.deadline.desc": "Berechnung von Verfahrensfristen f\u00fcr UPC-, deutsche und EPA-Verfahren mit Feiertags-Anpassung.",
"index.glossar.title": "Patentglossar",
"index.glossar.desc": "Zweisprachiges DE/EN-Glossar der wichtigsten Begriffe im Patentrecht. Durchsuchbar nach Kategorien.",
"index.downloads": "Downloads",
"index.style.title": `${FIRM} Patents Style`,
"index.style.desc": `Word-Vorlage im ${FIRM} Patents Style. Formatierung, Schriftarten und Makros f\u00fcr standardisierte Schrifts\u00e4tze.`,
"index.offices": "Standorte",
"index.office.munich": "M\u00fcnchen",
"index.office.duesseldorf": "D\u00fcsseldorf",
"index.office.hamburg": "Hamburg",
"index.office.amsterdam": "Amsterdam",
"index.office.london": "London",
"index.office.paris": "Paris",
"index.office.milan": "Mailand",
// Login
"login.title": "Anmelden \u2014 Paliad",
"login.tab.login": "Anmelden",
"login.tab.register": "Registrieren",
"login.email": "E-Mail",
"login.password": "Passwort",
"login.password.placeholder": "Passwort",
"login.submit": "Anmelden",
"login.confirm": "Passwort best\u00e4tigen",
"login.confirm.placeholder": "Passwort wiederholen",
"login.minchars": "Mind. 8 Zeichen",
"login.register.submit": "Registrieren",
"login.hint": `Nur f\u00fcr autorisierte ${FIRM}-E-Mail-Adressen.`,
"login.error.connection": "Verbindungsfehler. Bitte versuchen Sie es erneut.",
"login.error.mismatch": "Passw\u00f6rter stimmen nicht \u00fcberein.",
"login.error.minlength": "Passwort muss mindestens 8 Zeichen lang sein.",
"login.success.created": "Account erstellt. Bitte melden Sie sich an.",
// Kostenrechner
"kosten.title": "Prozesskostenrechner \u2014 Paliad",
"kosten.heading": "Prozesskostenrechner",
"kosten.subtitle": "Sch\u00e4tzung der Verfahrenskosten f\u00fcr Patentverletzungs-, Nichtigkeits- und EPA-Verfahren.",
"kosten.streitwert": "Streitwert",
"kosten.vat": "MwSt",
"kosten.vat.foreign": "0% (Ausland)",
"kosten.de.infringement": "DE Verletzungsverfahren",
"kosten.de.nullity": "DE Nichtigkeitsverfahren",
"kosten.upc": "UPC",
"kosten.epa": "EPA",
"kosten.inst.lg": "LG (Verletzung 1. Instanz)",
"kosten.inst.olg": "OLG (Berufung)",
"kosten.inst.bgh_nzb": "BGH (Nichtzulassungsbeschwerde)",
"kosten.inst.bgh_rev": "BGH (Revision)",
"kosten.inst.bpatg": "BPatG (Nichtigkeitsverfahren)",
"kosten.inst.bgh_nullity": "BGH (Nichtigkeitsberufung)",
"kosten.inst.upc_first": "UPC (1. Instanz)",
"kosten.inst.upc_appeal": "UPC (Berufung)",
"kosten.inst.epa_opposition": "Einspruch",
"kosten.inst.epa_appeal": "Einspruchsbeschwerde",
"kosten.fee.version": "Geb\u00fchrenversion:",
"kosten.fee.schedule": "Geb\u00fchrenordnung:",
"kosten.fee.from2026": "Ab 2026",
"kosten.fee.pre2026": "Vor 2026",
"kosten.fee.current": "Aktuell (2025)",
"kosten.attorneys": "Rechtsanw\u00e4lte:",
"kosten.patent.attorneys": "Patentanw\u00e4lte:",
"kosten.clients": "Mandanten:",
"kosten.oral.hearing": "M\u00fcndl. Verhandlung",
"kosten.revocation": "Widerklage auf Nichtigkeit",
"kosten.total": "Gesamtkosten",
"kosten.empty": "W\u00e4hlen Sie mindestens eine Instanz.",
"kosten.print": "Drucken",
"kosten.court.fees": "Gerichtskosten",
"kosten.attorney.fees": "Anwaltskosten (RA)",
"kosten.patent.attorney.fees": "Patentanwaltskosten (PA)",
"kosten.epa.fees": "EPA-Geb\u00fchren",
"kosten.attorney.label": "Rechtsanwalt",
"kosten.patent.attorney.label": "Patentanwalt",
"kosten.detail.procedure": "Verfahrensgeb.",
"kosten.detail.increase": "Erh\u00f6hung",
"kosten.detail.hearing": "Terminsgeb.",
"kosten.detail.lump": "Pauschale",
"kosten.detail.vat": "MwSt",
"kosten.detail.total": "Gesamt",
"kosten.upc.fixed": "Festgeb\u00fchr",
"kosten.upc.value": "Streitwertabh. Geb\u00fchr",
"kosten.upc.court.total": "Gerichtskosten gesamt",
"kosten.upc.sme": "KMU-Reduzierung",
"kosten.upc.recoverable": "Erstattungsf\u00e4hige Kosten (Obergrenze)",
"kosten.epa.official": "Amtsgeb\u00fchr",
"kosten.epa.note": "Anwaltskosten nach Zeitaufwand (nicht RVG-basiert).",
"kosten.share": "Link kopieren",
"kosten.share.copied": "Link kopiert!",
"kosten.compare": "Vergleichen",
"kosten.compare.exit": "Vergleich beenden",
"kosten.scenario.a": "Szenario A",
"kosten.scenario.b": "Szenario B",
"kosten.scenario.diff": "Differenz",
"kosten.print.title": "Kostenberechnung",
"kosten.print.date": "Datum",
"kosten.print.streitwert": "Streitwert",
"kosten.print.vat": "MwSt-Satz",
"kosten.print.instances": "Instanzen",
"kosten.print.disclaimer": "Dieses Dokument dient ausschlie\u00dflich der internen Verwendung und stellt keine Rechtsberatung dar. Alle Angaben ohne Gew\u00e4hr.",
// Fristenrechner
"deadlines.title": "Fristenrechner \u2014 Paliad",
"deadlines.heading": "Fristenrechner",
"deadlines.subtitle": "Berechnung von Verfahrensfristen f\u00fcr UPC-, deutsche und EPA-Verfahren.",
// Unified procedural-events tool (m/paliad#151)
"procedures.title": "Verfahren & Fristen \u2014 Paliad",
"procedures.heading": "Verfahren & Fristen",
"procedures.subtitle": "Verfahrensablauf, Fristenrechner und gef\u00fchrte Suche in einem Tool.",
"procedures.filter.search.placeholder": "Klageerhebung, Hinweisbeschluss, oral hearing\u2026",
"procedures.filter.axis.forum": "Forum:",
"procedures.filter.axis.proc": "Verfahren:",
"procedures.filter.axis.kind": "Ereignisart:",
"procedures.filter.axis.party": "Partei:",
"procedures.tab.proceeding": "Verfahren w\u00e4hlen",
"procedures.tab.search": "Direkt suchen",
"procedures.tab.wizard": "Gef\u00fchrt",
"procedures.tab.akte": "Aus Akte",
"procedures.panel.akte.placeholder": "Akten-Einstieg folgt in einem sp\u00e4teren Slice.",
"nav.procedures": "Verfahren & Fristen",
// Litigation Builder (m/paliad#153 B1+B2)
"builder.subtitle": "Litigation Builder \u2014 Szenarien bauen, Verfahren stapeln, Fristen behalten.",
"builder.header.scenario": "Szenario:",
"builder.header.akte": "Akte:",
"builder.header.stichtag": "Stichtag:",
"builder.header.search": "Suche:",
"builder.akte.none": "\u2014 ohne \u2014",
"builder.akte.banner.prefix": "Aus Akte:",
"builder.search.placeholder": "Ereignis, Szenario, Akte \u2026",
"builder.action.rename": "Benennen",
"builder.action.rename.prompt": "Name f\u00fcr dieses Szenario:",
"builder.action.share": "Teilen",
"builder.action.promote": "Als Projekt anlegen",
"builder.mode.cold": "\u00dcbersicht",
"builder.mode.event": "Ereignis",
"builder.mode.akte": "Aus Akte",
"builder.panel.title": "Meine Szenarien",
"builder.panel.new": "+ Neues Szenario",
"builder.panel.empty": "Noch keine Szenarien.",
"builder.bucket.active": "Aktiv",
"builder.empty.headline": "Noch kein Szenario ge\u00f6ffnet.",
"builder.empty.hint": "Starte ein neues Szenario, w\u00e4hle aus deiner Liste oder \u00fcbernimm eine Akte (B4).",
"builder.empty.cta": "Neues Szenario starten",
"builder.empty.recent": "Zuletzt bearbeitet",
"builder.picker.placeholder": "\u2014 Szenario w\u00e4hlen \u2014",
"builder.picker.title": "Verfahren hinzuf\u00fcgen",
"builder.picker.close": "Schlie\u00dfen",
"builder.picker.aria": "Verfahren ausw\u00e4hlen",
"builder.picker.axis.forum": "Forum:",
"builder.picker.axis.proc": "Verfahren:",
"builder.picker.empty": "Keine Verfahren verf\u00fcgbar.",
"builder.picker.future_jurisdiction": "Andere Foren folgen sp\u00e4ter.",
"builder.canvas.add_proceeding": "+ Verfahren hinzuf\u00fcgen",
"builder.triplet.loading": "Berechne Fristen \u2026",
"builder.triplet.unknown_proceeding": "Unbekannter Verfahrenstyp.",
"builder.triplet.side.claimant": "Kl\u00e4ger-Sicht",
"builder.triplet.side.defendant": "Beklagten-Sicht",
"builder.triplet.flags.label": "Optionen:",
"builder.triplet.perspective.label": "Perspektive:",
"builder.triplet.perspective.none": "keine",
"builder.triplet.perspective.claimant": "Kl\u00e4ger",
"builder.triplet.perspective.defendant": "Beklagter",
"builder.triplet.detailgrad.label": "Detailgrad:",
"builder.triplet.detailgrad.selected": "Gew\u00e4hlt",
"builder.triplet.detailgrad.all_options": "Alle Optionen",
"builder.triplet.remove": "Entfernen",
"builder.triplet.collapse": "Einklappen",
"builder.triplet.expand": "Ausklappen",
"builder.triplet.no_flags": "(keine Flags f\u00fcr diesen Verfahrenstyp)",
"builder.event.state.planned": "geplant",
"builder.event.state.filed": "eingereicht",
"builder.event.state.skipped": "ausgelassen",
"builder.event.action.file": "Einreichen",
"builder.event.action.skip": "Auslassen",
"builder.event.action.reset": "Zur\u00fcck zu geplant",
"builder.event.actual_date.prompt": "Datum der Einreichung:",
"builder.event.skip_reason.prompt": "Grund (optional):",
"builder.event.horizon.label": "+{n} Optionen \u25be",
"builder.event.horizon.hide": "Optionen ausblenden",
"builder.save.idle": "\u00a0",
"builder.save.saving": "Speichert \u2026",
"builder.save.saved": "Gespeichert \u2713",
"builder.save.error": "Speichern fehlgeschlagen",
"builder.search.hint.start": "Tippe \u2026 z.\u202fB. \u201eKlageerwiderung\u201c, \u201eHinweis\u201c, \u201eHL-2024\u201c",
"builder.search.hint.short": "Mindestens 2 Zeichen.",
"builder.search.hint.loading": "Suche \u2026",
"builder.search.hint.empty": "Keine Treffer.",
"builder.search.hint.error": "Suche fehlgeschlagen. Erneut versuchen.",
"builder.search.hint.akte_b4": "Akten-Modus folgt in B4.",
"builder.search.group.events": "Ereignisse",
"builder.search.group.scenarios": "Szenarien",
"builder.search.group.projects": "Akten",
"builder.search.summary.events.one": "{n} Ereignis",
"builder.search.summary.events.other": "{n} Ereignisse",
"builder.search.summary.scenarios.one": "{n} Szenario",
"builder.search.summary.scenarios.other": "{n} Szenarien",
"builder.search.summary.projects.one": "{n} Akte",
"builder.search.summary.projects.other": "{n} Akten",
"builder.search.anchor.divider": "\u2501\u2501\u2501\u2501 DU BIST HIER \u2501\u2501\u2501\u2501",
// B5 \u2014 side-panel buckets, sharing, promote-to-project wizard.
"builder.bucket.shared": "Geteilt mit mir",
"builder.bucket.promoted": "Als Projekt angelegt",
"builder.bucket.archived": "Archiviert",
"builder.bucket.empty": "\u2014",
"builder.readonly.watermark": "Geteilt von {owner} \u00b7 schreibgesch\u00fctzt",
"builder.readonly.blocked": "Schreibgesch\u00fctzt \u2014 Bearbeiten ist nur f\u00fcr die Eigent\u00fcmer:in m\u00f6glich.",
"builder.share.title": "Szenario teilen",
"builder.share.subtitle": "Schreibgesch\u00fctzt mit HLC-Kolleg:innen teilen. Du bleibst alleinige Bearbeiter:in.",
"builder.share.search.placeholder": "Name oder E-Mail suchen \u2026",
"builder.share.button": "Schreibgesch\u00fctzt teilen",
"builder.share.current.title": "Bereits geteilt mit:",
"builder.share.current.empty": "Noch mit niemandem geteilt.",
"builder.share.revoke": "Entfernen",
"builder.share.close": "Schlie\u00dfen",
"builder.share.no_results": "Keine Nutzer:innen gefunden.",
"builder.share.error": "Teilen fehlgeschlagen. Erneut versuchen.",
"builder.promote.title": "Als Projekt anlegen",
"builder.promote.step1": "Best\u00e4tigen",
"builder.promote.step2": "Parteien erg\u00e4nzen",
"builder.promote.step3": "Akte-Metadaten",
"builder.promote.next": "Weiter",
"builder.promote.back": "Zur\u00fcck",
"builder.promote.commit": "Anlegen",
"builder.promote.cancel": "Abbrechen",
"builder.promote.summary.heading": "Das wird angelegt:",
"builder.promote.summary.proceeding": "Hauptverfahren",
"builder.promote.summary.events_filed": "eingereichte Ereignisse",
"builder.promote.summary.events_planned": "geplante Ereignisse",
"builder.promote.summary.flags": "aktive Optionen",
"builder.promote.summary.note_extra": "{n} weitere(s) eigenst\u00e4ndige(s) Verfahren bleibt im Szenario und wird nicht automatisch \u00fcbernommen.",
"builder.promote.parties.hint": "Trage die echten Parteinamen ein \u2014 oder erg\u00e4nze sie sp\u00e4ter in der Akte.",
"builder.promote.parties.add": "+ Partei hinzuf\u00fcgen",
"builder.promote.parties.name": "Name",
"builder.promote.parties.role": "Rolle (z. B. Kl\u00e4ger)",
"builder.promote.parties.representative": "Vertreter:in",
"builder.promote.parties.remove": "Entfernen",
"builder.promote.parties.empty": "Noch keine Parteien.",
"builder.promote.meta.title": "Aktentitel / Mandat",
"builder.promote.meta.title.placeholder": "z. B. Becker ./. X \u2014 UPC Verletzung",
"builder.promote.meta.reference": "Referenz (optional)",
"builder.promote.meta.case_number": "Aktenzeichen (optional)",
"builder.promote.meta.client_number": "Mandantennummer (optional)",
"builder.promote.meta.our_side": "Unsere Seite",
"builder.promote.meta.our_side.claimant": "Kl\u00e4ger",
"builder.promote.meta.our_side.defendant": "Beklagter",
"builder.promote.meta.our_side.none": "\u2014 offen \u2014",
"builder.promote.meta.parent": "\u00dcbergeordnetes Verfahren (optional)",
"builder.promote.meta.parent.none": "\u2014 keines \u2014",
"builder.promote.meta.team": "Team (optional)",
"builder.promote.meta.team.hint": "Du wirst automatisch als Lead hinzugef\u00fcgt.",
"builder.promote.error.title_required": "Bitte einen Aktentitel eingeben.",
"builder.promote.error.generic": "Anlegen fehlgeschlagen. Erneut versuchen.",
"builder.promote.success": "Akte angelegt \u2014 Weiterleitung \u2026",
"builder.mobile.blocked": "Auf gr\u00f6\u00dferem Bildschirm \u00f6ffnen, um zu bearbeiten.",
"deadlines.step1": "Verfahrensart w\u00e4hlen",
"deadlines.step2": "Ausgangsdatum eingeben",
"deadlines.step2.perspective": "Perspektive und Datum",
"deadlines.step3": "Ergebnis",
"deadlines.upc": "UPC",
"deadlines.de": "Deutsche Gerichte",
"deadlines.epa": "EPA",
"deadlines.dpma": "DPMA",
"deadlines.dpma.opp.dpma": "Einspruch DPMA",
"deadlines.dpma.appeal.bpatg": "Beschwerde BPatG (DPMA)",
"deadlines.dpma.appeal.bgh": "Rechtsbeschwerde BGH",
"deadlines.trigger.event": "Ausl\u00f6sendes Ereignis:",
"deadlines.trigger.date": "Datum:",
"deadlines.trigger.label": "Ausgangsdatum",
"deadlines.priority.date": "Priorit\u00e4tstag (optional):",
"deadlines.court.label": "Gericht:",
"deadlines.flag.ccr": "Mit Widerklage auf Nichtigkeit",
"deadlines.flag.inf_amend": "Mit Antrag auf Patentänderung (R.30)",
"deadlines.flag.rev_amend": "Mit Antrag auf Patentänderung (R.49.2.a)",
"deadlines.flag.rev_cci": "Mit Verletzungswiderklage (R.49.2.b)",
"deadlines.calculate": "Fristen berechnen",
"deadlines.print": "Drucken",
"deadlines.reset": "\u2190 Neu berechnen",
"deadlines.upc.inf.cfi": "Verletzungsverfahren",
"deadlines.upc.rev.cfi": "Nichtigkeitsklage",
"deadlines.upc.ccr.cfi": "Widerklage auf Nichtigkeit",
"deadlines.upc.pi.cfi": "Einstw. Ma\u00dfnahmen",
"deadlines.upc.apl.merits": "Berufung",
"deadlines.upc.dmgs.cfi": "Schadensbemessung",
"deadlines.upc.disc.cfi": "Bucheinsicht",
"deadlines.upc.apl.cost": "Berufung Kosten",
"deadlines.upc.apl.order": "Berufung Anordnungen",
"deadlines.upc.apl.unified": "Berufung",
"deadlines.appeal_target.label": "Worauf richtet sich die Berufung?",
"deadlines.appeal_target.endentscheidung": "Endentscheidung",
"deadlines.appeal_target.kostenentscheidung": "Kostenentscheidung",
"deadlines.appeal_target.anordnung": "Anordnung",
"deadlines.appeal_target.schadensbemessung": "Schadensbemessung",
"deadlines.appeal_target.bucheinsicht": "Bucheinsicht",
"deadlines.de.group.inf": "Verletzungsverfahren",
"deadlines.de.group.null": "Nichtigkeitsverfahren",
"deadlines.de.inf.lg": "LG (1. Instanz)",
"deadlines.de.inf.olg": "OLG (Berufung)",
"deadlines.de.inf.bgh": "BGH (Revision / NZB)",
"deadlines.de.null.bpatg": "BPatG (1. Instanz)",
"deadlines.de.null.bgh": "BGH (Berufung)",
"deadlines.epa.opp.opd": "Einspruchsverfahren",
"deadlines.epa.opp.boa": "Beschwerdeverfahren",
"deadlines.epa.grant.exa": "EP-Erteilungsverfahren",
"deadlines.party.both.label": "beide Seiten",
"deadlines.court.set": "vom Gericht bestimmt",
"deadlines.court.indirect": "unbestimmt",
"deadlines.conditional.depends_on": "abhängig von {parent}",
"deadlines.conditional.unset": "abhängig von vorgelagertem Ereignis",
"deadlines.optional.badge": "auf Antrag",
"deadlines.priority.mandatory": "Pflicht",
"deadlines.priority.recommended": "empfohlen",
"deadlines.priority.optional": "Kann (auf Antrag)",
"deadlines.priority.informational": "Zur Kenntnis",
"deadlines.priority.informational.notice_label": "Hinweis",
"project.instance_level.first": "Erste Instanz",
"project.instance_level.appeal": "Berufung",
"project.instance_level.cassation": "Revision",
"project.instance_level.unset": "(nicht gesetzt)",
"verlauf.spawn.chip": "Spawnt:",
"verlauf.spawn.cycle_warning": "Einige proceeding-übergreifende Spawn-Regeln wurden wegen eines Zyklus übersprungen.",
"deadlines.proceeding.selected": "Verfahren:",
"deadlines.proceeding.reselect": "Anderes Verfahren wählen",
"deadlines.step1.heading": "Schritt 1 — Welche Akte?",
"deadlines.step1.search.placeholder": "Akte suchen…",
"deadlines.step1.search.empty": "Keine passende Akte gefunden.",
"deadlines.step1.divider.new": "oder eine neue Akte",
"deadlines.step1.divider.adhoc": "oder ad-hoc, ohne Akte",
"deadlines.step1.new.cta": "+ Neue Akte anlegen",
"deadlines.step1.adhoc.upc": "UPC-Verfahren",
"deadlines.step1.adhoc.de": "DE-Verfahren",
"deadlines.step1.adhoc.epa": "EPA-Verfahren",
"deadlines.step1.adhoc.dpma": "DPMA-Verfahren",
"deadlines.step1.selected": "Akte:",
"deadlines.step1.reselect": "Andere Akte",
"deadlines.step1.summary.adhoc.suffix": "ohne Akte (Erkundung)",
"deadlines.step2.heading": "Schritt 2 — Was möchten Sie tun?",
"deadlines.step2.file.title": "Etwas einreichen",
"deadlines.step2.file.desc": "Outgoing — eine Frist tritt aus eigener Handlung ein.",
"deadlines.step2.happened.title": "Etwas ist passiert",
"deadlines.step2.happened.desc": "Incoming — ein Ereignis hat eine Frist ausgelöst.",
"deadlines.step2.browse.title": "Verfahrensablauf einsehen",
"deadlines.step2.browse.desc": "Browse / Learn — sehen, was wann passiert. Keine Frist eintragen.",
"deadlines.save.cta.adhoc.hint": "Ad-hoc — kein Projekt, kein Speichern",
"deadlines.step3a.heading": "Was möchten Sie einreichen?",
"deadlines.step3a.back": "zurück zur Auswahl",
"deadlines.step3a.file.title": "Schriftsatz einreichen",
"deadlines.step3a.file.desc": "Verfahrensablauf laden — Frist berechnen und zur Akte hinzufügen.",
"deadlines.step3a.draft.title": "Schriftsatz entwerfen",
"deadlines.step3a.draft.desc": "Vorbereitung — später mit Drafting-Surface verknüpft.",
"deadlines.step3a.enter.title": "Frist manuell erfassen",
"deadlines.step3a.enter.desc": "Direkt eintragen — bereits bekanntes Datum / bekannter Typ.",
"deadlines.step3a.soon": "kommt bald",
"deadlines.date.edit.hint": "Datum bearbeiten — Folgefristen werden neu berechnet",
"deadlines.view.label": "Ansicht:",
"deadlines.view.timeline": "Zeitstrahl",
"deadlines.view.columns": "Spalten",
"deadlines.notes.show": "Hinweise anzeigen",
"deadlines.durations.show": "Dauern anzeigen",
"deadlines.col.ours": "Unsere Seite",
"deadlines.col.court": "Gericht",
"deadlines.col.opponent": "Gegnerseite",
"deadlines.col.both": "Beide Parteien",
"deadlines.col.proactive": "Proaktiv",
"deadlines.col.reactive": "Reaktiv",
// t-paliad-265 — per-event-card choice popover (Verfahrensablauf timeline)
"choices.caret.title": "Optionen für dieses Ereignis",
"choices.appellant.title": "Berufung durch …",
"choices.appellant.claimant": "Klägerseite",
"choices.appellant.defendant": "Beklagtenseite",
"choices.appellant.both": "beide Parteien",
"choices.appellant.none": "keine Berufung",
"choices.include_ccr.title": "Nichtigkeitswiderklage einbeziehen",
"choices.include_ccr.true": "Ja",
"choices.include_ccr.false": "Nein",
"choices.skip.title": "Für diese Akte überspringen",
"choices.skip.true": "Überspringen",
"choices.skip.false": "Einbeziehen",
"choices.skipped.chip": "übersprungen",
"choices.appellant.chip": "Berufung:",
"choices.include_ccr.chip": "mit Nichtigkeitswiderklage",
"choices.reset": "Auswahl zurücksetzen",
"choices.commit.error": "Konnte Auswahl nicht speichern",
// t-paliad-290 (m/paliad#122) — re-surface hidden optional cards.
"choices.show_hidden.label": "Ausgeblendete anzeigen",
"choices.show_hidden.count": "Ausgeblendete ({n})",
"choices.unhide.chip": "Wieder einblenden",
// t-paliad-293 \u2014 iconified state markers on the Verfahrensablauf
// event cards. Tooltip-only text; the glyph is the primary signal.
"state.optional.tooltip": "Optionales Ereignis",
"state.hidden.tooltip": "Ausgeblendet \u2014 \u00fcber Optionen-Men\u00fc wieder einblenden",
// Trigger-event mode (PR-2 \u2014 youpc-parity)
"deadlines.mode.procedure": "Verfahrensablauf",
"deadlines.mode.event": "Was kommt nach\u2026",
"deadlines.event.step1": "Trigger-Ereignis w\u00e4hlen",
"deadlines.event.step1.hint": "Welches Ereignis ist eingetreten? (z.B. Klageerhebung, Entscheidung des EPA, Zustellung einer Verf\u00fcgung)",
"deadlines.event.step2": "Datum des Ereignisses",
"deadlines.event.step3": "Folgefristen",
"deadlines.event.search.label": "Trigger-Ereignis suchen",
"deadlines.event.search.placeholder": "Tippe, um zu suchen\u2026",
"deadlines.event.empty": "Keine passenden Ereignisse",
"deadlines.event.loading": "L\u00e4dt\u2026",
"deadlines.event.error": "Konnte Ereignisse nicht laden",
"deadlines.event.selected": "Gew\u00e4hltes Ereignis:",
"deadlines.event.date": "Eintrittsdatum:",
"deadlines.event.calculate": "Folgefristen berechnen",
"deadlines.event.noresults": "Keine Folgefristen f\u00fcr dieses Ereignis hinterlegt.",
"deadlines.event.results.trigger": "Trigger:",
"deadlines.event.results.date": "Datum:",
"deadlines.event.adjusted": "Verschoben von",
"deadlines.search.label": "Frist suchen",
"deadlines.search.placeholder": "Klageerwiderung, RoP 23, § 82, Wiedereinsetzung…",
"deadlines.search.chips.label": "Schnellzugriff:",
"deadlines.search.empty": "Tippe einen Begriff oder wähle einen Schnellzugriff.",
"deadlines.search.loading": "Sucht…",
"deadlines.search.no_hits": "Keine passenden Fristen gefunden.",
"deadlines.search.aliases": "Auch bekannt als:",
"deadlines.search.pills.heading": "In folgenden Verfahren:",
"deadlines.search.pills.cross_cutting": "Verfahrensübergreifend:",
"deadlines.search.pill.duration": "Dauer:",
"deadlines.search.party.claimant": "Kläger",
"deadlines.search.party.defendant": "Beklagte",
"deadlines.search.party.both": "beide Seiten",
"deadlines.search.party.court": "Gericht",
"deadlines.search.results.count": "{n} Treffer",
"deadlines.search.results.count_one": "1 Treffer",
"deadlines.search.clear": "Suche leeren",
// Fristenrechner — card-click → calc panel → add-to-project (t-paliad-136 Phase B)
"deadlines.card.calc.expand_hint": "Frist berechnen oder zu Akte hinzufügen",
"deadlines.card.calc.close": "schließen",
"deadlines.card.calc.pill_picker.label": "Welcher Kontext?",
"deadlines.card.calc.pill_picker.locked_label": "Kontext:",
"deadlines.card.calc.pill_picker.change": "ändern",
"deadlines.card.calc.trigger.label": "Datum des auslösenden Ereignisses",
"deadlines.card.calc.flags.label": "Bedingungen:",
"deadlines.card.calc.flag.with_ccr": "Mit Nichtigkeitswiderklage",
"deadlines.card.calc.flag.with_amend": "Mit Antrag auf Patentänderung",
"deadlines.card.calc.flag.with_cci": "Mit Verletzungswiderklage",
"deadlines.card.calc.result.due": "Frist:",
"deadlines.card.calc.result.original_from": "ab",
"deadlines.card.calc.result.from_trigger": "ab",
"deadlines.card.calc.result.shifted_from": "Verschoben vom",
"deadlines.card.calc.result.shifted_because": "wegen",
"deadlines.card.calc.result.court_set": "Gericht-bestimmt — kein berechenbares Datum.",
"deadlines.card.calc.result.calculating": "Berechne…",
"deadlines.card.calc.result.error": "Berechnung fehlgeschlagen.",
"deadlines.card.calc.add_to_project": "Zu Akte hinzufügen",
"deadlines.card.calc.add_to_project.disabled": "Gerichtsbestimmt — manuell anlegen",
"deadlines.pathway.fork.heading": "Was möchten Sie tun?",
"deadlines.pathway.a.title": "Verfahrensablauf",
"deadlines.pathway.a.desc": "Verfahrenstyp wählen und alle dazugehörigen Fristen auf einer Zeitleiste sehen.",
"deadlines.pathway.b.title": "Frist eintragen aufgrund Ereignis",
"deadlines.pathway.b.desc": "Ein Ereignis ist eingetreten — ich brauche die richtige Frist für meine Akte.",
"deadlines.pathway.shortcut.label": "oder direkt zu einer Frist springen:",
"deadlines.pathway.back": "zurück zur Auswahl",
"deadlines.pathway.b.mode.tree": "Schritt-für-Schritt (Entscheidungsbaum)",
"deadlines.pathway.b.mode.filter": "Filter / Suche",
"deadlines.pathway.b.tree.coming_soon": "Der Entscheidungsbaum ist in Vorbereitung. Wechseln Sie zu „Filter / Suche\" oder kehren Sie zur Auswahl zurück.",
"deadlines.pathway.b.tree.step.back": "Schritt zurück",
"deadlines.pathway.b.tree.empty": "Keine Treffer für diesen Pfad.",
"deadlines.pathway.b.tree.reset": "Neu starten",
"deadlines.pathway.b.tree.start_question": "Was ist passiert?",
"deadlines.row.mode.question": "Wie suchen?",
"deadlines.row.edit": "ändern",
"deadlines.row.prefilled.from_akte": "aus Akte",
"deadlines.row.reset": "Pfad zurücksetzen",
"deadlines.row.reset.title": "Pfad zurücksetzen — alle Cascade-Antworten verwerfen",
"deadlines.row.search.link": "Direkt suchen",
"deadlines.row.search.link.title": "Direkt nach einer Frist suchen — überspringt den Entscheidungsbaum",
"deadlines.row.autowalk.tooltip": "Diese Schritte ergeben sich aus Ihrer Akte. Klicken Sie „ändern\", um eine Antwort manuell anzupassen.",
"deadlines.row.autowalk.dismiss": "Hinweis schließen",
"deadlines.row.search.panel.back": "Zurück zum Entscheidungsbaum",
"deadlines.row.search.panel.back.title": "Inline-Suche schließen und zum Entscheidungsbaum zurückkehren",
"deadlines.row.search.panel.placeholder": "Frist suchen — z. B. „Klageschrift\", „Posteingang Hinweisbeschluss\"…",
"deadlines.row.search.panel.clear": "Eingabe leeren",
"deadlines.inbox.label": "Wo kam es an?",
"deadlines.inbox.cms.title": "UPC — über CMS",
"deadlines.inbox.bea.title": "Nationale Verfahren — über beA",
"deadlines.inbox.posteingang.title": "Nationale Verfahren — Postzustellung",
"deadlines.inbox.posteingang": "Posteingang",
"deadlines.inbox.all": "Alle",
"deadlines.filter.forum.label": "Gericht / System:",
"deadlines.filter.forum.upc_cfi": "UPC CFI",
"deadlines.filter.forum.upc_coa": "UPC CoA",
"deadlines.filter.forum.de_lg": "DE LG",
"deadlines.filter.forum.de_olg": "DE OLG",
"deadlines.filter.forum.de_bgh": "DE BGH",
"deadlines.filter.forum.de_bpatg": "DE BPatG",
"deadlines.filter.forum.epa_grant": "EPA Erteilung",
"deadlines.filter.forum.epa_opp": "EPA Einspruchsabt.",
"deadlines.filter.forum.epa_appeal": "EPA Beschwerdek.",
"deadlines.filter.forum.dpma": "DPMA",
"deadlines.perspective.label": "Ich vertrete:",
"deadlines.perspective.claimant": "Klägerseite (Proactive)",
"deadlines.perspective.defendant": "Beklagtenseite (Reactive)",
"deadlines.perspective.claimant.short": "Kläger",
"deadlines.perspective.defendant.short": "Beklagter",
"deadlines.perspective.both.short": "Beide",
"deadlines.perspective.claimant.title": "Klägerseite — versteckt typische Beklagten-Schriftsätze",
"deadlines.perspective.defendant.title": "Beklagtenseite — versteckt typische Kläger-Schriftsätze",
"deadlines.perspective.appeal_filed_by.label": "Berufung eingelegt durch:",
"deadlines.perspective.predefined_hint": "vorgegeben durch Akte",
"deadlines.side.label": "Seite:",
"deadlines.side.claimant": "Klägerseite",
"deadlines.side.defendant": "Beklagtenseite",
"deadlines.side.undefined": "Nicht festgelegt",
"deadlines.side.from_project": "Aus Akte:",
"deadlines.side.override": "Andere Seite wählen",
"deadlines.side.hint": "Wählen Sie eine Seite, um die Spalten zu fokussieren.",
"deadlines.event.composite.label": "Zusammengesetzt:",
"deadlines.event.unit.days.one": "Tag",
"deadlines.event.unit.days.many": "Tage",
"deadlines.event.unit.weeks.one": "Woche",
"deadlines.event.unit.weeks.many": "Wochen",
"deadlines.event.unit.months.one": "Monat",
"deadlines.event.unit.months.many": "Monate",
"deadlines.event.unit.working_days.one": "Arbeitstag",
"deadlines.event.unit.working_days.many": "Arbeitstage",
"deadlines.event.timing.before": "vor",
"deadlines.event.timing.after": "nach",
"deadlines.adjusted": "Verschoben",
"deadlines.adjusted.reason": "Wochenende/Feiertag",
"deadlines.adjusted.weekend": "Wochenende",
"deadlines.adjusted.weekend.saturday": "Samstag",
"deadlines.adjusted.weekend.sunday": "Sonntag",
"deadlines.adjusted.holiday": "Feiertag ({name})",
"deadlines.adjusted.vacation": "{name} ({span})",
// Downloads
"downloads.title": "Downloads \u2014 Paliad",
"downloads.heading": "Downloads",
"downloads.subtitle": `Dateien und Vorlagen f\u00fcr das ${FIRM} Patent-Team.`,
"downloads.style.title": `${FIRM} Patents Style`,
"downloads.style.desc": `Word-Vorlage im ${FIRM} Patents Style. Formatierung, Schriftarten und Makros f\u00fcr standardisierte Schrifts\u00e4tze.`,
"downloads.btn": "Herunterladen",
// Links
"links.title": "Links \u2014 Paliad",
"links.heading": "Links",
"links.subtitle": "N\u00fctzliche externe Links f\u00fcr die t\u00e4gliche Patentpraxis.",
"links.filter.all": "Alle",
"links.search.placeholder": "Suchen nach Titel, Beschreibung...",
"links.empty": "Keine Links in dieser Kategorie.",
"links.suggest.btn": "Link vorschlagen",
"links.suggest.title": "Link vorschlagen",
"links.suggest.name": "Titel",
"links.suggest.category": "Kategorie",
"links.suggest.desc": "Beschreibung",
"links.suggest.submit": "Absenden",
"links.suggest.cancel": "Abbrechen",
"links.suggest.success": "Danke! Ihr Vorschlag wird gepr\u00fcft.",
"links.suggest.error": "Fehler beim Speichern. Bitte versuchen Sie es erneut.",
"links.pending": "Vorschl\u00e4ge zur Pr\u00fcfung",
"links.feedback.title": "Feedback",
"links.feedback.type": "Art",
"links.feedback.broken": "Link defekt",
"links.feedback.outdated": "Veraltet",
"links.feedback.update": "Aktualisierung n\u00f6tig",
"links.feedback.other": "Sonstiges",
"links.feedback.message": "Nachricht",
"links.feedback.placeholder": "Was stimmt nicht? (z.B. Link defekt, veraltet...)",
"links.feedback.submit": "Absenden",
"links.feedback.success": "Danke f\u00fcr Ihr Feedback!",
// Glossar
"glossar.title": "Patentglossar \u2014 Paliad",
"glossar.heading": "Patentglossar",
"glossar.subtitle": "Zweisprachiges Glossar der wichtigsten Begriffe im Patentrecht.",
"glossar.search.placeholder": "Suchen...",
"glossar.filter.all": "Alle",
"glossar.filter.litigation": "Streitsachen",
"glossar.filter.prosecution": "Erteilungsverfahren",
"glossar.filter.general": "Allgemein",
"glossar.col.de": "Deutsch",
"glossar.col.en": "English",
"glossar.col.definition": "Definition",
"glossar.empty": "Keine Treffer.",
"glossar.suggest": "Begriff vorschlagen",
"glossar.suggest.title": "Neuen Begriff vorschlagen",
"glossar.suggest.de": "Deutscher Begriff",
"glossar.suggest.en": "Englischer Begriff",
"glossar.suggest.definition": "Definition (optional)",
"glossar.suggest.category": "Kategorie",
"glossar.suggest.cancel": "Abbrechen",
"glossar.suggest.submit": "Absenden",
"glossar.suggest.success": "Vorschlag eingereicht. Vielen Dank!",
"glossar.suggest.error.required": "Bitte DE und EN Begriff eingeben.",
"glossar.suggest.error.generic": "Fehler beim Senden. Bitte versuchen Sie es erneut.",
"glossar.feedback.title": "Korrektur vorschlagen",
"glossar.feedback.tooltip": "Korrektur vorschlagen",
// Geb\u00fchrentabellen
"gebuehren.title": "Geb\u00fchrentabellen \u2014 Paliad",
"gebuehren.heading": "Geb\u00fchrentabellen",
"gebuehren.subtitle": "Interaktive Geb\u00fchrentabellen f\u00fcr GKG, RVG, UPC, EPA und PatKostG.",
"gebuehren.streitwert": "Streitwert (EUR)",
"gebuehren.streitwert.placeholder": "z.B. 1.000.000",
"gebuehren.lookup": "Nachschlagen",
"gebuehren.current": "Aktuell",
"gebuehren.col.streitwert": "Streitwert (EUR)",
"gebuehren.col.fee": "1,0 Geb\u00fchr (EUR)",
"gebuehren.col.maxvalue": "bis Streitwert (EUR)",
"gebuehren.col.courtfee": "Gerichtsgeb\u00fchr (EUR)",
"gebuehren.upc.valuebased": "Streitwertabh\u00e4ngige Geb\u00fchren",
"gebuehren.upc.recoverable": "Erstattungsf\u00e4hige Kosten (Obergrenze)",
"gebuehren.upc.ceiling": "Obergrenze (EUR)",
"gebuehren.epa.proceeding": "Verfahren",
"gebuehren.epa.fee": "Geb\u00fchr (EUR)",
"gebuehren.epa.smefee": "KMU-Geb\u00fchr (EUR)",
"gebuehren.multipliers.title": "Geb\u00fchren-Multiplikatoren",
"gebuehren.multipliers.desc": "Faktoren f\u00fcr die Berechnung von Gerichts- und Anwaltskosten je Instanz.",
"gebuehren.multipliers.instance": "Instanz",
"gebuehren.multipliers.courtfee": "Gericht",
"gebuehren.multipliers.factor": "Faktor",
"gebuehren.multipliers.basis": "Grundlage",
"gebuehren.patkostg.court": "Gerichtskosten (BPatG / BGH)",
"gebuehren.patkostg.dpma": "DPMA-Geb\u00fchren",
"gebuehren.patkostg.annual": "Jahresgeb\u00fchren (Patent)",
"gebuehren.patkostg.year": "Patentjahr",
"gebuehren.patkostg.note": "Hinweis",
"gebuehren.patkostg.item": "Geb\u00fchrentatbestand",
"gebuehren.feedback.btn": "Feedback",
"gebuehren.feedback.title": "Feedback zur Geb\u00fchrentabelle",
"gebuehren.feedback.type": "Art",
"gebuehren.feedback.error": "Fehler gefunden",
"gebuehren.feedback.missing": "Fehlende Daten",
"gebuehren.feedback.suggestion": "Verbesserungsvorschlag",
"gebuehren.feedback.other": "Sonstiges",
"gebuehren.feedback.schedule": "Betrifft",
"gebuehren.feedback.general": "Allgemein",
"gebuehren.feedback.message": "Nachricht",
"gebuehren.feedback.submit": "Absenden",
"gebuehren.feedback.cancel": "Abbrechen",
"gebuehren.feedback.success": "Danke f\u00fcr Ihr Feedback!",
"gebuehren.feedback.error.required": "Bitte geben Sie eine Nachricht ein.",
"gebuehren.feedback.error.generic": "Fehler beim Senden. Bitte versuchen Sie es erneut.",
// Index — Geb\u00fchrentabellen card
"index.gebuehren.title": "Geb\u00fchrentabellen",
"index.gebuehren.desc": "Interaktive Geb\u00fchrentabellen f\u00fcr GKG, RVG, UPC, EPA und PatKostG. Streitwert eingeben, Geb\u00fchr ablesen.",
// Checklisten
"index.checklisten.title": "Checklisten",
"index.checklisten.desc": "Interaktive Checklisten f\u00fcr UPC-, DE- und EPA-Verfahren. Pro Mandat beliebig viele Instanzen.",
"checklisten.title": "Checklisten \u2014 Paliad",
"checklisten.heading": "Checklisten",
"checklisten.subtitle": "Interaktive Checklisten f\u00fcr typische Verfahrensschritte vor UPC, BPatG und EPA. Abhaken, ausdrucken, kein Punkt vergessen.",
"checklisten.tab.templates": "Vorlagen",
"checklisten.tab.mine": "Meine Vorlagen",
"checklisten.tab.instances": "Vorhandene Instanzen",
"checklisten.mine.empty": "Sie haben noch keine eigene Vorlage angelegt.",
"checklisten.tab.gallery": "Geteilte Vorlagen",
"checklisten.gallery.empty": "Noch keine geteilten Vorlagen sichtbar.",
"checklisten.filter.other": "Sonstige",
"checklisten.instance.outdated.badge": "Vorlage aktualisiert",
"checklisten.instance.outdated.note": "Die zugrundeliegende Vorlage wurde seit dem Anlegen dieser Instanz aktualisiert (v{from} → v{to}).",
"checklisten.instance.outdated.diff": "Änderungen anzeigen",
"checklisten.instance.diff.title": "Geänderte Punkte",
"checklisten.instance.diff.close": "Schließen",
"checklisten.instance.diff.added": "Neu",
"checklisten.instance.diff.removed": "Entfernt",
"checklisten.instance.diff.changed": "Geändert",
"checklisten.instance.diff.empty": "Keine inhaltlichen Unterschiede in den Punkten.",
"checklisten.instance.diff.error": "Vergleich fehlgeschlagen.",
"checklisten.mine.new": "Neue Vorlage",
"checklisten.mine.loading": "Lädt…",
"checklisten.mine.visibility.private": "Privat",
"checklisten.mine.visibility.firm": "Firmenweit",
"checklisten.mine.visibility.shared": "Geteilt",
"checklisten.mine.visibility.global": "Im Katalog",
"checklisten.mine.edit": "Bearbeiten",
"checklisten.mine.delete": "Löschen",
"checklisten.mine.delete.confirm": "Vorlage „{title}“ wirklich löschen? Bestehende Instanzen bleiben erhalten.",
"checklisten.mine.delete.error": "Löschen fehlgeschlagen.",
"checklisten.mine.origin.authored": "Eigene Vorlage",
"checklisten.author.title": "Vorlage erstellen — Paliad",
"checklisten.author.title.edit": "Vorlage bearbeiten — Paliad",
"checklisten.author.heading.new": "Neue Checklisten-Vorlage",
"checklisten.author.heading.edit": "Vorlage bearbeiten",
"checklisten.author.subtitle": "Erstellen Sie eine eigene Checkliste mit Sektionen und Punkten. Sie können sie privat halten oder firmenweit verfügbar machen.",
"checklisten.author.field.title": "Titel",
"checklisten.author.field.title.hint": "z.B. „UPC SoC — interne Checkliste“.",
"checklisten.author.field.description": "Kurzbeschreibung",
"checklisten.author.field.regime": "Regime",
"checklisten.author.field.court": "Gericht / Behörde",
"checklisten.author.field.reference": "Rechtsgrundlage",
"checklisten.author.field.deadline": "Deadline (optional)",
"checklisten.author.field.lang": "Sprache",
"checklisten.author.field.visibility": "Sichtbarkeit",
"checklisten.author.visibility.private.hint": "Nur für Sie sichtbar.",
"checklisten.author.visibility.firm.hint": "Für alle angemeldeten Kolleginnen und Kollegen sichtbar.",
"checklisten.author.groups.heading": "Sektionen und Punkte",
"checklisten.author.groups.add": "+ Sektion hinzufügen",
"checklisten.author.group.title": "Sektionsname",
"checklisten.author.group.remove": "Sektion löschen",
"checklisten.author.item.add": "+ Punkt hinzufügen",
"checklisten.author.item.label": "Punkt",
"checklisten.author.item.note": "Notiz (optional)",
"checklisten.author.item.rule": "Vorschrift (optional)",
"checklisten.author.item.remove": "Punkt löschen",
"checklisten.author.save": "Speichern",
"checklisten.author.cancel": "Abbrechen",
"checklisten.author.saving": "Speichert…",
"checklisten.author.error.title": "Bitte geben Sie einen Titel ein.",
"checklisten.author.error.no_groups": "Bitte mindestens eine Sektion mit einem Punkt anlegen.",
"checklisten.author.error.generic": "Speichern fehlgeschlagen. Bitte erneut versuchen.",
"checklisten.author.error.notfound": "Diese Vorlage existiert nicht oder Sie haben keine Berechtigung sie zu bearbeiten.",
"checklisten.detail.edit": "Bearbeiten",
"checklisten.detail.delete": "Löschen",
"checklisten.detail.share": "Teilen",
"checklisten.detail.promote": "Als Firmen-Vorlage hinterlegen",
"checklisten.detail.demote": "Aus Katalog entfernen",
"checklisten.detail.promote.confirm": "Diese Vorlage in den Firmen-Katalog übernehmen? Alle Kolleg:innen sehen sie dann unter Vorlagen.",
"checklisten.detail.demote.confirm": "Vorlage aus dem Firmen-Katalog entfernen? Sie bleibt firmenweit sichtbar.",
"checklisten.detail.promote.error": "Übernahme fehlgeschlagen.",
"checklisten.detail.delete.confirm": "Vorlage „{title}\" wirklich löschen? Bestehende Instanzen bleiben erhalten.",
"checklisten.detail.delete.error": "Löschen fehlgeschlagen.",
"checklisten.detail.authored.by": "Erstellt von {author}",
"checklisten.detail.visibility": "Sichtbarkeit: {state}",
"checklisten.detail.visibility.set.firm": "Für Firma freigeben",
"checklisten.detail.visibility.set.private": "Privat schalten",
"checklisten.detail.visibility.error": "Sichtbarkeit konnte nicht geändert werden.",
"checklisten.share.title": "Vorlage teilen",
"checklisten.share.kind": "Empfängertyp",
"checklisten.share.kind.user": "Kollege",
"checklisten.share.kind.office": "Office",
"checklisten.share.kind.partner_unit": "Dezernat",
"checklisten.share.kind.project": "Projekt",
"checklisten.share.pick": "— auswählen —",
"checklisten.share.submit": "Freigeben",
"checklisten.share.cancel": "Abbrechen",
"checklisten.share.error.pick": "Bitte einen Empfänger auswählen.",
"checklisten.share.error.generic": "Freigeben fehlgeschlagen.",
"checklisten.share.success": "Freigegeben.",
"checklisten.share.grants.heading": "Bestehende Freigaben",
"checklisten.share.grants.empty": "Keine Freigaben.",
"checklisten.share.grants.revoke": "Entfernen",
"checklisten.share.grants.revoke.confirm": "Freigabe entfernen?",
"checklisten.share.grants.revoke.error": "Entfernen fehlgeschlagen.",
"checklisten.share.grants.recipient.user": "Kollege",
"checklisten.share.grants.recipient.office": "Office",
"checklisten.share.grants.recipient.partner_unit": "Dezernat",
"checklisten.share.grants.recipient.project": "Projekt",
"checklisten.instances.all.loading": "L\u00e4dt\u2026",
"checklisten.instances.all.empty": "Noch keine Checklisten-Instanzen erfasst. Legen Sie eine \u00fcber den Vorlagen-Tab an.",
"checklisten.instances.all.col.template": "Vorlage",
"checklisten.instances.all.col.name": "Name",
"checklisten.instances.all.col.project": "Projekt",
"checklisten.instances.all.col.progress": "Fortschritt",
"checklisten.instances.all.col.created": "Angelegt",
"checklisten.instances.all.personal": "Pers\u00f6nlich",
"checklisten.filter.all": "Alle",
"checklisten.filter.de": "DE",
"checklisten.empty": "Keine Checklisten in dieser Kategorie.",
"checklisten.back": "Zur\u00fcck zur \u00dcbersicht",
"checklisten.print": "Drucken",
"checklisten.reset": "Zur\u00fccksetzen",
"checklisten.reset.confirm": "Alle H\u00e4kchen dieser Instanz wirklich zur\u00fccksetzen?",
"checklisten.reset.error": "Zur\u00fccksetzen fehlgeschlagen. Bitte erneut versuchen.",
"checklisten.notfound": "Checkliste nicht gefunden.",
"checklisten.newInstance": "Neue Instanz",
"checklisten.newInstance.title": "Neue Checklisten-Instanz",
"checklisten.newInstance.name": "Name",
"checklisten.newInstance.name.hint": "z.B. \u201EM\u00fcller v. Schmidt \u2014 SoC\u201C.",
"checklisten.newInstance.akte": "Akte (optional)",
"checklisten.newInstance.akte.none": "\u2014 keine Akte \u2014",
"checklisten.newInstance.akte.hint": "Wenn verkn\u00fcpft, sehen B\u00fcrokollegen die Instanz.",
"checklisten.newInstance.cancel": "Abbrechen",
"checklisten.newInstance.submit": "Anlegen",
"checklisten.newInstance.error.name": "Bitte geben Sie einen Namen ein.",
"checklisten.newInstance.error.generic": "Fehler beim Anlegen. Bitte erneut versuchen.",
"checklisten.instances.heading": "Instanzen",
"checklisten.instances.sub": "Jede Instanz hat ihren eigenen Fortschritt und kann optional an eine Akte geh\u00e4ngt werden.",
"checklisten.instances.loading": "L\u00e4dt\u2026",
"checklisten.instances.empty": "Noch keine Instanzen. Klicken Sie auf \u201eNeue Instanz\u201c, um zu beginnen.",
"checklisten.instances.col.name": "Name",
"checklisten.instances.col.progress": "Fortschritt",
"checklisten.instances.col.akte": "Akte",
"checklisten.instances.col.created": "Angelegt",
"checklisten.instances.delete.confirm": "Instanz \u201E{name}\u201C wirklich l\u00f6schen?",
"checklisten.instances.delete.error": "L\u00f6schen fehlgeschlagen.",
"checklisten.instance.title": "Checklisten-Instanz \u2014 Paliad",
"checklisten.instance.back": "Zur\u00fcck zur Vorlage",
"checklisten.instance.loading": "L\u00e4dt\u2026",
"checklisten.instance.notfound": "Instanz nicht gefunden oder keine Berechtigung.",
"checklisten.instance.rename": "Umbenennen",
"checklisten.instance.rename.save": "Speichern",
"checklisten.instance.rename.error": "Umbenennen fehlgeschlagen.",
"checklisten.instance.akte.open": "\u00d6ffnen",
"checklisten.disclaimer": "Hinweis: Diese Checklisten dienen als Ged\u00e4chtnisst\u00fctze und ersetzen keine Pr\u00fcfung im Einzelfall. Ma\u00dfgeblich sind die jeweils geltenden Verfahrensregeln.",
"checklisten.feedback.btn": "Feedback",
"checklisten.feedback.title": "Feedback zur Checkliste",
"checklisten.feedback.type": "Art",
"checklisten.feedback.error": "Fehler gefunden",
"checklisten.feedback.missing": "Fehlender Punkt",
"checklisten.feedback.suggestion": "Verbesserungsvorschlag",
"checklisten.feedback.other": "Sonstiges",
"checklisten.feedback.message": "Nachricht",
"checklisten.feedback.submit": "Absenden",
"checklisten.feedback.cancel": "Abbrechen",
"checklisten.feedback.success": "Danke f\u00fcr Ihr Feedback!",
"checklisten.feedback.error.required": "Bitte geben Sie eine Nachricht ein.",
"checklisten.feedback.error.generic": "Fehler beim Senden. Bitte versuchen Sie es erneut.",
// Gerichte
"gerichte.title": "Gerichtsverzeichnis \u2014 Paliad",
"gerichte.heading": "Gerichtsverzeichnis",
"gerichte.subtitle": "Kontaktdaten, Adressen und Einreichungshinweise f\u00fcr Gerichte, Kammern und \u00c4mter im Patentbereich.",
"gerichte.search.placeholder": "Suchen nach Name, Stadt, Typ...",
"gerichte.filter.type": "Typ:",
"gerichte.filter.country": "Land:",
"gerichte.filter.all": "Alle",
"gerichte.filter.de": "Deutschland",
"gerichte.filter.epa": "EPA",
"gerichte.filter.national": "National",
"gerichte.empty": "Keine Treffer.",
"gerichte.field.address": "Adresse",
"gerichte.field.contact": "Kontakt",
"gerichte.field.fax": "Fax",
"gerichte.field.filing": "Einreichung",
"gerichte.field.notes": "Praktische Hinweise",
"gerichte.field.hlContact": `${FIRM}-Ansprechpartner`,
"gerichte.feedback.btn": "Korrektur vorschlagen",
"gerichte.feedback.title": "Korrektur vorschlagen",
"gerichte.feedback.court": "Gericht",
"gerichte.feedback.type": "Art der Anmerkung",
"gerichte.feedback.type.address": "Adresse / Kontaktdaten",
"gerichte.feedback.type.filing": "Einreichungshinweise",
"gerichte.feedback.type.notes": "Praktische Hinweise",
"gerichte.feedback.type.missing": "Fehlendes Gericht",
"gerichte.feedback.type.other": "Sonstiges",
"gerichte.feedback.message": "Nachricht",
"gerichte.feedback.cancel": "Abbrechen",
"gerichte.feedback.submit": "Absenden",
"gerichte.feedback.success": "Vielen Dank \u2014 Ihre R\u00fcckmeldung wurde gespeichert.",
"gerichte.feedback.error.required": "Bitte geben Sie eine Nachricht ein.",
"gerichte.feedback.error.generic": "Fehler beim Senden. Bitte versuchen Sie es erneut.",
// Index \u2014 Gerichte card
"index.gerichte.title": "Gerichtsverzeichnis",
"index.gerichte.desc": "Gerichte, UPC-Kammern und Patent\u00e4mter auf einen Blick \u2014 mit Adressen, Einreichungshinweisen und Sprachen.",
// Akten (matters) \u2014 list
"projects.filter.office": "B\u00fcro",
"projects.filter.office.all": "Alle B\u00fcros",
"projects.filter.status.completed": "Abgeschlossen",
"projects.status.active": "Aktiv",
"projects.status.completed": "Abgeschlossen",
"projects.status.archived": "Archiviert",
"projects.col.ref": "Aktenzeichen",
"projects.col.office": "B\u00fcro",
"projects.onboarding.required": "Bitte schlie\u00dfen Sie das Onboarding ab, bevor Sie Akten anlegen.",
// Akten \u2014 create form
"projects.field.ref": "Aktenzeichen",
"projects.field.ref.placeholder": `z.\u202fB. ${FIRM}-2026-0042`,
"projects.field.office": "Federf\u00fchrendes B\u00fcro",
"projects.field.courtRef": "Gerichtsaktenzeichen (optional)",
"projects.field.akteType": "Verfahrensart (optional)",
"projects.field.firmWide": "Firmenweit sichtbar",
"projects.field.firmWide.hint": "Wenn aktiviert, sehen alle Lawyer diese Akte. Nur f\u00fcr Partner/Admin.",
"projects.field.collaborators": "Weitere Bearbeiter (optional)",
"projects.field.collaborators.placeholder": "Name oder E-Mail tippen\u2026",
"projects.field.collaborators.hint": "Personen, die auch Zugriff erhalten sollen (auch b\u00fcro\u00fcbergreifend).",
"projects.error.required": "Titel und Aktenzeichen sind Pflichtfelder.",
"projects.error.generic": "Fehler beim Anlegen. Bitte erneut versuchen.",
"projects.error.forbidden": "Nicht erlaubt. Pr\u00fcfen Sie Rolle und B\u00fcro.",
// Akten \u2014 detail
"projects.detail.firmwide.on": "Firmenweit sichtbar",
"projects.detail.firmwide.off": "B\u00fcro-intern",
"projects.detail.checklisten.hint": "Instanzen werden auf der Vorlagen-Seite unter \"Checklisten\" angelegt.",
"projects.detail.verlauf.loadingMore": "L\u00e4dt \u2026",
"projects.detail.parteien.remove": "Entfernen",
"projects.detail.parteien.remove.confirm": "Diese Partei wirklich entfernen?",
// Phase E — Fristen (persistent deadlines)
"deadlines.list.title": "Fristen \u2014 Paliad",
"deadlines.list.heading": "Fristen",
"deadlines.list.subtitle": "Persistente Fristen f\u00fcr Ihre Akten. \u00dcberf\u00e4llig, heute, diese Woche, n\u00e4chste Woche \u2014 auf einen Blick.",
"deadlines.list.new": "Neue Frist",
"deadlines.summary.overdue": "\u00dcberf\u00e4llig",
"deadlines.summary.today": "Heute",
"deadlines.summary.thisweek": "Diese Woche",
"deadlines.summary.nextweek": "N\u00e4chste Woche",
"deadlines.summary.completed": "Erledigt",
"deadlines.summary.later": "Später",
"deadlines.filter.status": "Status",
"deadlines.filter.akte": "Projekt",
"deadlines.filter.all": "Alle (offen & erledigt)",
"deadlines.filter.pending": "Alle offenen",
"deadlines.filter.overdue": "\u00dcberf\u00e4llig",
"deadlines.filter.today": "Heute",
"deadlines.filter.thisweek": "Diese Woche",
"deadlines.filter.nextweek": "N\u00e4chste Woche",
"deadlines.filter.completed": "Erledigt",
"deadlines.filter.later": "Später",
"deadlines.filter.akte.all": "Alle Projekte",
"deadlines.col.due": "F\u00e4llig",
"deadlines.col.title": "Titel",
"deadlines.col.akte": "Projekt",
"deadlines.col.rule": "Regel",
"deadlines.col.status": "Status",
"deadlines.empty.title": "Keine Fristen vorhanden",
"deadlines.empty.hint": "Sobald Fristen angelegt oder aus dem Fristenrechner \u00fcbernommen werden, erscheinen sie hier.",
"deadlines.empty.filtered": "Keine Fristen mit diesen Filtern.",
"deadlines.unavailable": "Fristenverwaltung zurzeit nicht verf\u00fcgbar \u2014 bitte Administrator kontaktieren.",
"deadlines.status.pending": "Offen",
"deadlines.status.completed": "Erledigt",
"deadlines.status.cancelled": "Abgebrochen",
"deadlines.status.waived": "Verzichtet",
"deadlines.urgency.overdue": "\u00dcberf\u00e4llig",
"deadlines.urgency.today": "Heute",
"deadlines.urgency.soon": "In K\u00fcrze",
"deadlines.urgency.later": "Sp\u00e4ter",
"deadlines.complete.action": "Erledigen",
"deadlines.complete.confirm": "Frist \u201e{title}\u201c wirklich als erledigt markieren?",
// t-paliad-139 \u2014 subtree aggregation toggle and attribution chip
"aggregation.toggle.subtree": "Inkl. Unterprojekte",
"aggregation.toggle.direct_only": "Nur direkt",
"aggregation.attribution.on": "auf",
// t-paliad-139 Phase 2 \u2014 Team-tab subsections + Partner Units management
"projects.team.section.from_descendants": "Aus Unterprojekten",
"projects.team.section.from_descendants.hint": "Personen, die direkt auf einem Unterprojekt eingetragen sind und nicht auf diesem oder einem \u00dcbergeordneten.",
"projects.team.section.derived": "Abgeleitet (Partner Unit)",
"projects.team.section.derived.hint": "Mitglieder, die \u00fcber eine zugeordnete Partner Unit auf diesem Projekt aktiv sind.",
"projects.team.section.units": "Partner Units",
"projects.team.section.units.hint": "Partner Units, die auf diesem Projekt eingebunden sind. Mitglieder mit passenden Unit-Rollen werden automatisch abgeleitet.",
"projects.team.derived.from": "\u00fcber",
"projects.team.derived.visibility": "Sicht",
"projects.team.derived.authority": "Sicht & 4-Augen",
"projects.team.derived.authority.hint": "Stimmrecht: Abgeleitete Mitglieder z\u00e4hlen als Approver.",
"projects.team.units.attach": "Partner Unit zuordnen",
"projects.team.units.detach": "Entfernen",
"projects.team.units.choose": "Bitte Unit w\u00e4hlen\u2026",
"projects.team.units.select": "Unit",
"projects.team.units.derive_roles": "Welche Unit-Rollen ableiten?",
"projects.team.units.grants_authority": "Stimmrecht abgeben (4-Augen)",
"projects.team.units.col.name": "Unit",
"projects.team.units.col.derive_roles": "Abgeleitete Rollen",
"projects.team.units.col.authority": "Authority",
"projects.team.units.members": "Mitglieder",
"projects.team.units.empty": "Keine Partner Units zugeordnet.",
"projects.team.units.confirm_detach": "Partner Unit entfernen?",
"unit_role.lead": "Lead",
"unit_role.attorney": "Attorney",
"unit_role.senior_pa": "Senior PA",
"unit_role.pa": "PA",
"unit_role.paralegal": "Paralegal",
"deadlines.neu.title": "Neue Frist \u2014 Paliad",
"deadlines.neu.heading": "Neue Frist anlegen",
"deadlines.neu.subtitle": "Eine persistente Frist an einer Akte. Sichtbar f\u00fcr alle Personen, die die Akte sehen k\u00f6nnen.",
"deadlines.neu.back": "\u2190 Zur\u00fcck zur \u00dcbersicht",
"deadlines.neu.cancel": "Abbrechen",
"deadlines.neu.submit": "Frist anlegen",
"deadlines.field.akte": "Akte",
"deadlines.field.akte.choose": "Bitte w\u00e4hlen\u2026",
"deadlines.field.akte.empty": "Sie haben noch keine Akte. Bitte zuerst eine Akte anlegen.",
"deadlines.field.akte.empty.link": "Akte anlegen",
"deadlines.field.title": "Titel",
"deadlines.field.title.placeholder": "z.\u202fB. Klageerwiderung einreichen",
"deadlines.field.due": "F\u00e4lligkeitsdatum",
"deadlines.field.rule": "Regel (optional)",
"deadlines.field.rule.auto_badge": "Auto",
"deadlines.field.rule.auto_no_match": "Keine Regel zur gewählten Verfahrenshandlung",
"deadlines.field.rule.auto_pick_type": "Wählen Sie zuerst eine Verfahrenshandlung",
"deadlines.field.rule.custom_badge": "Eigen",
"deadlines.field.rule.custom_placeholder": "z.B. interner Review-Termin, Mandantengespräch",
"deadlines.field.rule.mode.toggle_to_auto": "Zurück zu Auto",
"deadlines.field.rule.mode.toggle_to_custom": "Eigene Regel eingeben",
"deadlines.field.title.default_btn": "Standardtitel",
"deadlines.field.title.default_fallback": "Neue Frist",
"deadlines.field.notes": "Notizen (optional)",
"deadlines.field.notes.placeholder": "Hinweise, Verweise, n\u00e4chste Schritte\u2026",
"deadlines.error.required": "Akte, Titel und F\u00e4lligkeitsdatum sind Pflichtfelder.",
"deadlines.error.generic": "Fehler beim Anlegen. Bitte erneut versuchen.",
"deadlines.detail.title": "Frist \u2014 Paliad",
"deadlines.detail.back": "\u2190 Zur\u00fcck zur Fristen\u00fcbersicht",
"deadlines.detail.loading": "L\u00e4dt\u2026",
"deadlines.detail.notfound": "Frist nicht gefunden oder keine Berechtigung.",
"deadlines.detail.complete": "Als erledigt markieren",
"deadlines.detail.completed.already": "Bereits erledigt",
"deadlines.detail.reopen": "Wieder öffnen",
"deadlines.action.reopen": "Wieder öffnen",
"deadlines.detail.edit": "Bearbeiten",
"deadlines.detail.save": "Speichern",
"deadlines.detail.cancel": "Abbrechen",
"deadlines.detail.delete": "Frist l\u00f6schen",
"deadlines.detail.delete.confirm.title": "Frist wirklich l\u00f6schen?",
"deadlines.detail.delete.confirm.body": "Die Frist wird endg\u00fcltig entfernt. Der Eintrag im Verlauf der Akte bleibt erhalten.",
"deadlines.detail.delete.confirm.cancel": "Abbrechen",
"deadlines.detail.delete.confirm.ok": "L\u00f6schen",
"deadlines.detail.due": "F\u00e4lligkeitsdatum",
"deadlines.detail.rule": "Regel",
"deadlines.detail.source": "Quelle",
"deadlines.detail.notes": "Notizen",
"deadlines.detail.created": "Angelegt",
"deadlines.detail.completed": "Erledigt am",
"deadlines.source.manual": "Manuell",
"deadlines.source.fristenrechner": "Fristenrechner",
"deadlines.source.caldav": "CalDAV",
"deadlines.source.imported": "Import",
"cal.day.mon": "Mo",
"cal.day.tue": "Di",
"cal.day.wed": "Mi",
"cal.day.thu": "Do",
"cal.day.fri": "Fr",
"cal.day.sat": "Sa",
"cal.day.sun": "So",
"cal.month.0": "Januar",
"cal.month.1": "Februar",
"cal.month.2": "M\u00e4rz",
"cal.month.3": "April",
"cal.month.4": "Mai",
"cal.month.5": "Juni",
"cal.month.6": "Juli",
"cal.month.7": "August",
"cal.month.8": "September",
"cal.month.9": "Oktober",
"cal.month.10": "November",
"cal.month.11": "Dezember",
"cal.view.month": "Monat",
"cal.view.week": "Woche",
"cal.view.day": "Tag",
"cal.today": "Heute",
"cal.month.prev": "Vorheriger Monat",
"cal.month.next": "Nächster Monat",
"cal.week.prev": "Vorherige Woche",
"cal.week.next": "Nächste Woche",
"cal.day.prev": "Vorheriger Tag",
"cal.day.next": "Nächster Tag",
"cal.day.back_to_month": "Zurück zum Monat",
"cal.day.open_day": "Tagesansicht öffnen",
"cal.day.no_entries": "Keine Einträge an diesem Tag.",
// Akten detail — Fristen tab (Phase E)
// Fristenrechner — save to Akte (Phase E)
"deadlines.save.cta": "Als Frist(en) speichern",
"deadlines.save.modal.title": "Fristen \u00fcbernehmen",
"deadlines.save.modal.akte": "Akte",
"deadlines.save.modal.akte.choose": "Bitte w\u00e4hlen\u2026",
"deadlines.save.modal.choose": "Welche Fristen \u00fcbernommen werden sollen:",
"deadlines.save.modal.cancel": "Abbrechen",
"deadlines.save.modal.submit": "\u00dcbernehmen",
"deadlines.save.modal.no_akten": "Sie haben noch keine Akte. Bitte zuerst eine Akte anlegen.",
"deadlines.save.modal.no_akten.link": "Akte anlegen",
"deadlines.save.success": "Fristen \u00fcbernommen.",
"deadlines.save.success.link": "Zu den Fristen",
"deadlines.save.error": "\u00dcbernahme fehlgeschlagen.",
"deadlines.save.skip_court_set": "Gerichtsbestimmte Termine ohne Datum werden \u00fcbersprungen.",
// Fristenrechner overhaul \u2014 shared result view (S2, design \u00a74).
"deadlines.overhaul.loading": "Folge-Fristen werden geladen\u2026",
"deadlines.overhaul.load_error": "Folge-Fristen konnten nicht geladen werden.",
"deadlines.overhaul.empty": "Keine Folge-Fristen f\u00fcr dieses Ereignis hinterlegt.",
"deadlines.overhaul.trigger.label": "Trigger-Ereignis",
"deadlines.overhaul.trigger.date": "Trigger-Datum:",
"deadlines.overhaul.followups.label": "Folge-Fristen",
"deadlines.overhaul.group.mandatory": "Pflicht",
"deadlines.overhaul.group.recommended": "Empfohlen",
"deadlines.overhaul.group.optional": "Kann (auf Antrag)",
"deadlines.overhaul.group.conditional": "Bedingt",
"deadlines.overhaul.spawn.badge": "\u21f2 neues Verfahren",
"deadlines.overhaul.spawn.tooltip": "Diese Regel leitet ein neues Verfahren ein.",
"deadlines.detail.label": "Anzeige:",
"deadlines.detail.mandatory_only": "Nur Pflicht",
"deadlines.detail.selected": "Gewählt",
"deadlines.detail.all_options": "Alle Optionen",
"deadlines.detail.optional_unselected_hint": "Diese Regel ist optional und gehört nicht zum aktuellen Szenario.",
"deadlines.detail.aufnehmen": "Aufnehmen",
"deadlines.detail.entfernen": "Entfernen",
"deadlines.overhaul.condition.badge": "Nur unter Bedingung",
"deadlines.overhaul.crossparty.badge": "Gegenseitig",
"deadlines.overhaul.crossparty.tooltip": "Diese Frist wird von der Gegenseite eingereicht. Sie erscheint nur zur Information und wird nicht in die Akte übernommen.",
"deadlines.overhaul.notes.summary": "Hinweis",
"deadlines.overhaul.edit_date.label": "\u270f Datum",
"deadlines.overhaul.edit_date.title": "Datum manuell anpassen",
"deadlines.overhaul.select_rule": "Frist ausw\u00e4hlen",
"deadlines.overhaul.footer.count": "{n} Fristen ausgew\u00e4hlt",
"deadlines.overhaul.footer.cta": "In Akte eintragen",
"deadlines.overhaul.nudge.no_project": "Tipp: W\u00e4hle oben eine Akte, um diese Fristen einzutragen.",
"deadlines.party.claimant": "Kl\u00e4gerseite",
"deadlines.party.defendant": "Beklagtenseite",
"deadlines.party.both": "Beide Seiten",
"deadlines.party.court": "Gericht",
// Fristenrechner overhaul Mode A \u2014 Direkt suchen (S3, design \u00a73.1).
"deadlines.overhaul.modes.label": "Modus",
"deadlines.overhaul.modes.search": "Direkt suchen",
"deadlines.overhaul.modes.wizard": "Gef\u00fchrt",
"deadlines.overhaul.wizard.coming_soon": "Gef\u00fchrter Modus kommt im n\u00e4chsten Slice.",
"deadlines.overhaul.modea.filters.label": "Filter",
"deadlines.overhaul.modea.filters.heading": "Filter (eingrenzen)",
"deadlines.overhaul.modea.axis.forum": "Forum:",
"deadlines.overhaul.modea.axis.proc": "Verfahren:",
"deadlines.overhaul.modea.axis.kind": "Was passierte:",
"deadlines.overhaul.modea.axis.party": "Partei:",
"deadlines.overhaul.modea.axis.inbox": "Eingangsweg:",
"deadlines.overhaul.modea.chip.all": "Alle",
"deadlines.overhaul.modea.inbox.summary": "Erweitert: Eingangsweg",
"deadlines.overhaul.modea.inbox.postal": "Postal",
"deadlines.overhaul.modea.search.label": "Suche",
"deadlines.overhaul.modea.search.placeholder": "Klageerhebung, Hinweisbeschluss, m\u00fcndliche Verhandlung\u2026",
"deadlines.overhaul.modea.results.label": "Ergebnisse",
"deadlines.overhaul.modea.results.heading": "Ergebnisse (klicken zum Einrasten als Trigger)",
"deadlines.overhaul.modea.results.count": "{n} Treffer",
"deadlines.overhaul.modea.row.followups": "{n} Folge-Fristen",
"deadlines.overhaul.modea.loading": "Wird geladen\u2026",
"deadlines.overhaul.modea.no_results": "Keine Treffer f\u00fcr diese Filter.",
"deadlines.overhaul.modea.no_proceedings": "Keine Verfahren in diesem Forum.",
"deadlines.overhaul.modea.search_error": "Suche fehlgeschlagen.",
"deadlines.overhaul.kind.filing": "Eingereicht",
"deadlines.overhaul.kind.hearing": "Termin",
"deadlines.overhaul.kind.decision": "Entscheidung",
"deadlines.overhaul.kind.order": "Verf\u00fcgung",
"deadlines.overhaul.kind.missed": "Frist vers\u00e4umt",
// Fristenrechner overhaul Mode B \u2014 gef\u00fchrter Wizard (S4, design \u00a73.2).
"deadlines.overhaul.wizard.heading": "Gef\u00fchrter Modus",
"deadlines.overhaul.wizard.hint": "Beantworte die Fragen oben nach unten \u2014 der Wizard landet auf einem Trigger-Ereignis und zeigt die Folge-Fristen.",
"deadlines.overhaul.wizard.r1.label": "Was ist passiert?",
"deadlines.overhaul.wizard.r2.label": "Vor welchem Gericht?",
"deadlines.overhaul.wizard.r3.label": "In welchem Verfahren?",
"deadlines.overhaul.wizard.r3.empty": "Kein Verfahren mit diesem Ereignistyp im gew\u00e4hlten Forum.",
"deadlines.overhaul.wizard.r4.label": "Welches Schriftst\u00fcck / welcher Termin?",
"deadlines.overhaul.wizard.r4.empty": "Keine Ereignisse zu dieser Auswahl.",
"deadlines.overhaul.wizard.r5.label": "Welche Seite vertreten Sie?",
"deadlines.overhaul.wizard.r5.probing": "Pr\u00fcfe, ob die Folge-Fristen seitenabh\u00e4ngig sind\u2026",
"deadlines.overhaul.wizard.badge.filter": "Filter",
"deadlines.overhaul.wizard.badge.qualifier": "Qualifier",
"deadlines.overhaul.wizard.edit": "\u00e4ndern",
"deadlines.overhaul.wizard.anno.from_project": "aus Akte",
"deadlines.overhaul.wizard.anno.implicit": "implizit",
// Office labels (shared)
"office.munich": "M\u00fcnchen",
"office.duesseldorf": "D\u00fcsseldorf",
"office.hamburg": "Hamburg",
"office.amsterdam": "Amsterdam",
"office.london": "London",
"office.paris": "Paris",
"office.milan": "Mailand",
// Dashboard (logged-in landing)
"dashboard.title": "Dashboard \u2014 Paliad",
"dashboard.greeting.prefix": "Guten Tag",
"dashboard.unavailable": "Dashboard ben\u00f6tigt die Datenbank \u2014 bitte Administrator kontaktieren.",
"dashboard.onboarding": "Bitte schlie\u00dfen Sie das Onboarding ab, damit Ihnen Fristen und Akten angezeigt werden k\u00f6nnen.",
"dashboard.summary.heading": "Fristen auf einen Blick",
"dashboard.summary.overdue": "\u00dcberf\u00e4llig",
"dashboard.summary.today": "Heute",
"dashboard.summary.this_week": "Diese Woche",
"dashboard.summary.next_week": "N\u00e4chste Woche",
"dashboard.summary.completed": "Erledigt",
"dashboard.summary.later": "Später",
"dashboard.appointment_summary.heading": "Termine auf einen Blick",
"dashboard.matters.heading": "Meine Akten",
"dashboard.matters.active": "Aktiv",
"dashboard.matters.archived": "Archiviert",
"dashboard.matters.total": "Gesamt",
"dashboard.deadlines.heading": "Kommende Fristen",
"dashboard.deadlines.empty": "Keine Fristen in den n\u00e4chsten 7 Tagen.",
"dashboard.appointments.heading": "Kommende Termine",
"dashboard.appointments.empty": "Keine Termine in den n\u00e4chsten 7 Tagen.",
"dashboard.activity.heading": "Letzte Aktivit\u00e4t",
"dashboard.activity.empty": "Noch keine Aktivit\u00e4t erfasst.",
"dashboard.activity.system": "System",
"dashboard.activity.event": "Ereignis",
// Inline Agenda section on the dashboard (t-paliad-162). The
// standalone /agenda page keeps its own copy under the agenda.* keys;
// these are dashboard-scoped so the headline reads as a section
// title rather than a page title.
"dashboard.agenda.heading": "Agenda",
"dashboard.agenda.empty": "Keine F\u00e4lligkeiten in den n\u00e4chsten 30 Tagen.",
"dashboard.agenda.full_link": "Vollst\u00e4ndige Agenda \u00f6ffnen \u2192",
// Inbox-approvals widget (t-paliad-219).
"dashboard.inbox.heading": "Offene Freigaben",
"dashboard.inbox.empty": "Keine offenen Freigaben.",
"dashboard.inbox.full_link": "Vollst\u00e4ndigen Posteingang \u00f6ffnen \u2192",
"dashboard.inbox.entity.deadline": "Frist",
"dashboard.inbox.entity.appointment": "Termin",
// Edit-mode chrome (t-paliad-219 Slice B). The toggle in the
// dashboard header flips body.dashboard-editing; the keys below
// power the in-page chrome (drag handle, \u2191/\u2193, hide, gear, picker,
// reset) plus the autosave toast.
"dashboard.edit.toggle": "Anpassen",
"dashboard.edit.exit": "Fertig",
"dashboard.edit.add_widget": "Widget hinzuf\u00fcgen",
"dashboard.edit.reset": "Auf Standard zur\u00fccksetzen",
"dashboard.edit.reset_confirm": "Layout auf Standard zur\u00fccksetzen? Diese Aktion kann nicht r\u00fcckg\u00e4ngig gemacht werden.",
// Slice C: admin promote \u2014 visible only when global_role==global_admin.
"dashboard.edit.promote": "Als Firmen-Standard speichern",
"dashboard.edit.promote_confirm": "Dein aktuelles Layout als Firmen-Standard speichern? Neue Nutzer:innen und 'Auf Standard zur\u00fccksetzen' verwenden danach diese Vorlage.",
"dashboard.edit.promoted": "Als Firmen-Standard gespeichert",
// Slice C: pinned-projects widget (reuses PinService).
"dashboard.pinned.heading": "Angepinnte Akten",
"dashboard.pinned.empty": "Noch keine Akten angepinnt.",
"dashboard.pinned.full_link": "Alle Akten \u00f6ffnen \u2192",
// Slice C: quick-actions widget \u2014 pure UI affordances.
"dashboard.quick.heading": "Schnellzugriff",
"dashboard.quick.new_project": "+ Akte",
"dashboard.quick.new_deadline": "+ Frist",
"dashboard.quick.new_appointment": "+ Termin",
"dashboard.edit.move_up": "Nach oben bewegen",
"dashboard.edit.move_down": "Nach unten bewegen",
"dashboard.edit.hide": "Ausblenden",
"dashboard.edit.settings": "Einstellungen",
"dashboard.edit.drag": "Ziehen, um neu zu ordnen",
"dashboard.edit.saved": "Gespeichert",
"dashboard.edit.save_failed": "Speichern fehlgeschlagen",
"dashboard.edit.setting.count": "Anzahl",
"dashboard.edit.setting.count.custom": "Eigener Wert (max. {n})",
"dashboard.edit.setting.horizon": "Zeitraum",
"dashboard.edit.setting.horizon.days": "{n} Tage",
"dashboard.edit.setting.horizon.custom": "Eigener Wert in Tagen (max. {n})",
"dashboard.edit.setting.view": "Ansicht",
"dashboard.edit.setting.size": "Größe",
"dashboard.edit.setting.position": "Position",
"dashboard.edit.resize": "Größe ändern",
"dashboard.picker.title": "Widget hinzuf\u00fcgen",
"dashboard.picker.status.active": "Aktiv",
"dashboard.picker.status.hidden": "Versteckt",
"dashboard.picker.status.absent": "Nicht hinzugef\u00fcgt",
"dashboard.picker.close": "Schlie\u00dfen",
"dashboard.picker.empty": "Alle Widgets sind hinzugef\u00fcgt.",
// Collapsible-section toggle a11y labels (t-paliad-162). Both states
// are needed because the aria-label flips with the expanded state.
"dashboard.section.collapse": "Abschnitt einklappen",
"dashboard.section.expand": "Abschnitt ausklappen",
"dashboard.urgency.overdue": "\u00dcberf\u00e4llig",
"dashboard.urgency.today": "Heute",
"dashboard.urgency.urgent": "Dringend",
"dashboard.urgency.soon": "Bald",
"dashboard.when.today": "heute",
"dashboard.when.tomorrow": "morgen",
// Short verb phrases for the dashboard activity feed. Rendered as the
// bold summary line ("Matthias änderte Frist"); the full German
// sentence ("Deadline „ok“ geändert") lives on a second
// muted line via the project_events.description column.
"dashboard.action.short.project_created": "legte Projekt an",
"dashboard.action.short.project_archived": "archivierte Projekt",
"dashboard.action.short.project_reparented": "ordnete Projekt neu zu",
"dashboard.action.short.project_type_changed": "\u00e4nderte Projekt-Typ",
"dashboard.action.short.status_changed": "\u00e4nderte Status",
"dashboard.action.short.our_side_changed": "\u00e4nderte vertretene Seite",
"dashboard.action.short.visibility_changed": "\u00e4nderte Sichtbarkeit",
"dashboard.action.short.collaborators_updated": "aktualisierte Bearbeiter",
"dashboard.action.short.note_created": "f\u00fcgte Notiz hinzu",
"dashboard.action.short.deadline_created": "legte Frist an",
"dashboard.action.short.deadline_updated": "\u00e4nderte Frist",
"dashboard.action.short.deadline_completed": "erledigte Frist",
"dashboard.action.short.deadline_reopened": "öffnete Frist wieder",
"dashboard.action.short.deadline_deleted": "l\u00f6schte Frist",
"dashboard.action.short.deadline_project_changed": "verschob Frist",
"dashboard.action.short.deadlines_imported": "importierte Fristen",
"dashboard.action.short.appointment_created": "legte Termin an",
"dashboard.action.short.appointment_updated": "\u00e4nderte Termin",
"dashboard.action.short.appointment_deleted": "l\u00f6schte Termin",
"dashboard.action.short.appointment_project_changed": "verschob Termin",
// Localized event-row title for the project Verlauf tab \u2014 full noun
// phrase ("Frist ge\u00e4ndert") complementing the dashboard's verb form.
"event.title.project_created": "Projekt angelegt",
"event.title.project_archived": "Projekt archiviert",
"event.title.project_reparented": "Projekt umstrukturiert",
"event.title.project_type_changed": "Projekt-Typ ge\u00e4ndert",
"event.title.status_changed": "Status ge\u00e4ndert",
"event.title.our_side_changed": "Vertretene Seite ge\u00e4ndert",
"event.title.note_created": "Notiz hinzugef\u00fcgt",
"event.title.deadline_created": "Frist angelegt",
"event.title.deadline_updated": "Frist ge\u00e4ndert",
"event.title.deadline_completed": "Frist erledigt",
"event.title.deadline_reopened": "Frist wiederer\u00f6ffnet",
"event.title.deadline_deleted": "Frist gel\u00f6scht",
"event.title.deadline_project_changed": "Frist verschoben",
"event.title.deadlines_imported": "Fristen importiert",
"event.title.appointment_created": "Termin angelegt",
"event.title.appointment_updated": "Termin ge\u00e4ndert",
"event.title.appointment_deleted": "Termin gel\u00f6scht",
"event.title.appointment_project_changed": "Termin verschoben",
// Umbrella audit kind + admin churn surfaced by the FilterBar
// project_event_kind chip cluster (KnownProjectEventKinds).
"event.title.approval_decided": "Genehmigung entschieden",
"event.title.member_role_changed": "Teamrolle ge\u00e4ndert",
// 4-eye approval lifecycle (t-paliad-138). Verlauf renders these as
// a paired card with the original lifecycle event (e.g.
// "Frist angelegt" + "Genehmigung erteilt von Bert").
"event.title.deadline_approval_requested": "Genehmigung beantragt",
"event.title.deadline_approval_approved": "Genehmigung erteilt",
"event.title.deadline_approval_rejected": "Genehmigung abgelehnt",
"event.title.deadline_approval_revoked": "Anfrage zurückgezogen",
"event.title.deadline_approval_changes_suggested": "Änderungen vorgeschlagen",
"event.title.appointment_approval_requested": "Genehmigung beantragt",
"event.title.appointment_approval_approved": "Genehmigung erteilt",
"event.title.appointment_approval_rejected": "Genehmigung abgelehnt",
"event.title.appointment_approval_revoked": "Anfrage zurückgezogen",
"event.title.appointment_approval_changes_suggested": "Änderungen vorgeschlagen",
"event.description.deadline_approval_requested": "4-Augen-Genehmigung für Frist beantragt",
"event.description.deadline_approval_approved": "Genehmigung für Frist erteilt",
"event.description.deadline_approval_rejected": "Genehmigung für Frist abgelehnt",
"event.description.deadline_approval_revoked": "Genehmigungsanfrage für Frist zurückgezogen",
"event.description.deadline_approval_changes_suggested": "Frist abgelehnt mit Gegenvorschlag",
"event.description.appointment_approval_requested": "4-Augen-Genehmigung für Termin beantragt",
"event.description.appointment_approval_approved": "Genehmigung für Termin erteilt",
"event.description.appointment_approval_rejected": "Genehmigung für Termin abgelehnt",
"event.description.appointment_approval_revoked": "Genehmigungsanfrage für Termin zurückgezogen",
"event.description.appointment_approval_changes_suggested": "Termin abgelehnt mit Gegenvorschlag",
"dashboard.action.short.deadline_approval_requested": "beantragte Genehmigung",
"dashboard.action.short.deadline_approval_approved": "genehmigte Frist",
"dashboard.action.short.deadline_approval_rejected": "lehnte Frist ab",
"dashboard.action.short.deadline_approval_revoked": "zog Anfrage zurück",
"dashboard.action.short.appointment_approval_requested": "beantragte Genehmigung",
"dashboard.action.short.appointment_approval_approved": "genehmigte Termin",
"dashboard.action.short.appointment_approval_rejected": "lehnte Termin ab",
"dashboard.action.short.appointment_approval_revoked": "zog Anfrage zurück",
"event.title.checklist_created": "Checkliste angelegt",
"event.title.checklist_renamed": "Checkliste umbenannt",
"event.title.checklist_linked": "Checkliste verkn\u00fcpft",
"event.title.checklist_unlinked": "Checkliste getrennt",
"event.title.checklist_reset": "Checkliste zur\u00fcckgesetzt",
"event.title.checklist_deleted": "Checkliste gel\u00f6scht",
// Note-parent slugs for note_created descriptions
// ("Notiz zu Frist hinzugef\u00fcgt"). Used by translateEventDescription().
"event.note.parent.project": "Projekt",
"event.note.parent.deadline": "Frist",
"event.note.parent.appointment": "Termin",
"event.note.added_to": "Notiz zu {parent} hinzugef\u00fcgt",
// Localized full-sentence descriptions for the project Verlauf and the
// dashboard activity feed. Stored descriptions carry just the variable
// payload (title/count/slugs); the renderer interpolates here.
"event.description.deadline_created": "Frist \u201e{title}\u201c angelegt",
"event.description.deadline_updated": "Frist \u201e{title}\u201c ge\u00e4ndert",
"event.description.deadline_completed": "Frist \u201e{title}\u201c als erledigt markiert",
"event.description.deadline_reopened": "Frist \u201e{title}\u201c wieder ge\u00f6ffnet",
"event.description.deadline_deleted": "Frist \u201e{title}\u201c gel\u00f6scht",
"event.description.deadline_project_changed": "Frist \u201e{title}\u201c einer anderen Akte zugeordnet",
"event.description.deadlines_imported": "{count} Fristen aus Fristenrechner \u00fcbernommen",
"event.description.appointment_created": "Termin \u201e{title}\u201c angelegt",
"event.description.appointment_updated": "Termin \u201e{title}\u201c ge\u00e4ndert",
"event.description.appointment_deleted": "Termin \u201e{title}\u201c gel\u00f6scht",
"event.description.appointment_project_changed": "Termin \u201e{title}\u201c einer anderen Akte zugeordnet",
"dashboard.action.short.checklist_created": "legte Checkliste an",
"dashboard.action.short.checklist_renamed": "benannte Checkliste um",
"dashboard.action.short.checklist_unlinked": "trennte Checkliste",
"dashboard.action.short.checklist_linked": "verkn\u00fcpfte Checkliste",
"dashboard.action.short.checklist_reset": "setzte Checkliste zur\u00fcck",
"dashboard.action.short.checklist_deleted": "l\u00f6schte Checkliste",
"dashboard.action.short.partei_added": "f\u00fcgte Partei hinzu",
"dashboard.action.short.partei_removed": "entfernte Partei",
// Legacy event types kept so historical project_events rows render cleanly
// (writes switched to English in t-paliad-037).
"dashboard.action.short.akte_created": "legte Akte an",
"dashboard.action.short.akte_archived": "archivierte Akte",
"dashboard.action.short.projekt_created": "legte Akte an",
"dashboard.action.short.projekt_archived": "archivierte Akte",
"dashboard.action.short.projekt_reparented": "ordnete Akte neu zu",
"dashboard.action.short.notiz_created": "f\u00fcgte Notiz hinzu",
"dashboard.action.short.frist_created": "legte Frist an",
"dashboard.action.short.frist_updated": "\u00e4nderte Frist",
"dashboard.action.short.frist_completed": "erledigte Frist",
"dashboard.action.short.frist_deleted": "l\u00f6schte Frist",
"dashboard.action.short.fristen_imported": "importierte Fristen",
"dashboard.action.short.termin_created": "legte Termin an",
"dashboard.action.short.termin_updated": "\u00e4nderte Termin",
"dashboard.action.short.termin_deleted": "l\u00f6schte Termin",
"dashboard.action.short.checkliste_created": "legte Checkliste an",
"dashboard.action.short.checkliste_renamed": "benannte Checkliste um",
"dashboard.action.short.checkliste_unlinked": "trennte Checkliste",
"dashboard.action.short.checkliste_linked": "verkn\u00fcpfte Checkliste",
"dashboard.action.short.checkliste_reset": "setzte Checkliste zur\u00fcck",
"dashboard.action.short.checkliste_deleted": "l\u00f6schte Checkliste",
// Onboarding (first-login profile capture)
"onboarding.title": "Willkommen \u2014 Paliad",
"onboarding.heading": "Willkommen bei Paliad",
"onboarding.lede": "Bitte vervollst\u00e4ndigen Sie Ihr Profil, damit Ihnen Akten, Fristen und Termine angezeigt werden k\u00f6nnen.",
"onboarding.display_name": "Anzeigename",
"onboarding.display_name.placeholder": "Vor- und Nachname",
"onboarding.office": "B\u00fcro",
"onboarding.office.placeholder": "Bitte ausw\u00e4hlen",
"onboarding.job_title": "Berufsbezeichnung",
"onboarding.job_title.placeholder": "z.B. Associate, Partner, Patentanwalt",
"onboarding.profession": "Profession",
"onboarding.profession.hint": "Strukturiertes Tier — steuert die 4-Augen-Genehmigung. Distinkt von der Berufsbezeichnung.",
"onboarding.partner_unit": "Partner Unit",
"onboarding.partner_unit.unassigned": "(noch keine Zuordnung)",
"onboarding.optional": "(optional)",
"onboarding.submit": "Profil anlegen",
"onboarding.error.display_name": "Bitte Anzeigename eingeben.",
"onboarding.error.office": "Bitte B\u00fcro ausw\u00e4hlen.",
"onboarding.error.job_title": "Bitte Berufsbezeichnung eingeben.",
"onboarding.error.generic": "Profil konnte nicht angelegt werden.",
"onboarding.error.connection": "Verbindungsfehler. Bitte versuchen Sie es erneut.",
// Termine + CalDAV (Phase F)
"nav.group.einstellungen": "Einstellungen",
"nav.einstellungen": "Einstellungen",
"nav.caldav": "CalDAV",
// Global search (t-paliad-026)
"search.placeholder": "Suchen...",
"search.no_results": "Keine Ergebnisse",
"search.group.projects": "Projekte",
"search.group.deadlines": "Fristen",
"search.group.appointments": "Termine",
"search.group.glossary": "Glossar",
"search.group.courts": "Gerichte",
"search.group.checklists": "Checklisten",
"search.group.links": "Links",
"search.group.users": "Kolleg:innen",
// Command palette (t-paliad-044)
"palette.section.actions": "Aktionen",
"palette.action.nav.dashboard": "Gehe zu Dashboard",
"palette.action.nav.projects": "Gehe zu Projekte",
"palette.action.nav.deadlines": "Gehe zu Fristen",
"palette.action.nav.appointments": "Gehe zu Termine",
"palette.action.nav.agenda": "Gehe zu Agenda",
"palette.action.nav.team": "Gehe zu Team",
"palette.action.nav.glossary": "Gehe zu Glossar",
"palette.action.nav.courts": "Gehe zu Gerichte",
"palette.action.nav.links": "Gehe zu Links",
"palette.action.nav.checklists": "Gehe zu Checklisten",
"palette.action.nav.downloads": "Gehe zu Downloads",
"palette.action.nav.settings": "Gehe zu Einstellungen",
"palette.action.create.deadline": "Neue Frist anlegen",
"palette.action.create.appointment": "Neuer Termin anlegen",
"palette.action.create.project": "Neues Projekt anlegen",
"palette.action.toggle.lang": "Sprache umschalten",
"palette.action.toggle.pin": "Sidebar an-/abheften",
"palette.action.app.invite": "Kolleg:in einladen",
"palette.action.app.logout": "Abmelden",
"palette.footer.navigate": "Navigieren",
"palette.footer.open": "Öffnen",
"palette.footer.close": "Schließen",
"sidebar.resize.title": "Breite anpassen — ziehen, Doppelklick setzt zurück",
// Settings page (t-paliad-022)
"einstellungen.title": "Einstellungen \u2014 Paliad",
"einstellungen.heading": "Einstellungen",
"einstellungen.subtitle": "Profil, Benachrichtigungen und Kalendersynchronisation.",
"einstellungen.loading": "L\u00e4dt\u2026",
"einstellungen.optional": "(optional)",
"einstellungen.save": "Speichern",
"einstellungen.saved": "Gespeichert.",
"einstellungen.error.generic": "Speichern fehlgeschlagen. Bitte sp\u00e4ter erneut versuchen.",
"einstellungen.tab.profil": "Profil",
"einstellungen.tab.benachrichtigungen": "Benachrichtigungen",
"einstellungen.tab.caldav": "CalDAV",
"einstellungen.tab.export": "Datenexport",
"einstellungen.export.subtitle": "Laden Sie Ihre pers\u00f6nlichen Paliad-Daten als Excel- + JSON- + CSV-Paket herunter. Enthalten ist alles, was Sie aktuell sehen k\u00f6nnen \u2014 Ihre Projekte, Fristen, Termine, Notizen, Genehmigungen und Einstellungen.",
"einstellungen.export.heading": "Pers\u00f6nlicher Datenexport",
"einstellungen.export.what": "Das Paket enth\u00e4lt Ihre sichtbaren Daten in drei Formaten in einem .zip:",
"einstellungen.export.bullet.xlsx": "paliad-export.xlsx \u2014 eine Excel-Mappe pro Entit\u00e4t.",
"einstellungen.export.bullet.json": "paliad-export.json \u2014 maschinenlesbare Kopie f\u00fcr Skripte und Tools.",
"einstellungen.export.bullet.csv": "csv/<sheet>.csv \u2014 Tabellen einzeln als CSV (UTF-8 mit BOM).",
"einstellungen.export.scope": "Umfang: alles, was Sie aktuell in Paliad sehen k\u00f6nnen (Sichtbarkeit zum Zeitpunkt des Exports). Passw\u00f6rter, CalDAV-Zugangsdaten und andere Geheimnisse werden nie exportiert.",
"einstellungen.export.audit": "Jeder Export wird im Audit-Log protokolliert.",
"einstellungen.export.button": "Daten exportieren",
"einstellungen.export.started": "Download gestartet. Falls nichts passiert, pr\u00fcfen Sie Ihren Browser-Downloadordner.",
"projects.title": "Projekte \u2014 Paliad",
"projects.heading": "Projekte",
"projects.subtitle": "Mandanten, Streitsachen, Patente und Verfahren \u2014 hierarchisch organisiert.",
"projects.new": "Neues Projekt",
"projects.search.placeholder": "Titel, Referenz oder ClientMatter...",
"projects.filter.type": "Typ",
"projects.filter.type.all": "Alle Typen",
"projects.filter.status": "Status",
"projects.filter.status.all": "Alle Status",
"projects.filter.status.active": "Aktiv",
"projects.filter.status.archived": "Archiviert",
"projects.filter.status.closed": "Abgeschlossen",
"projects.filter.view": "Ansicht",
"projects.view.flat": "Flache Liste",
"projects.view.roots": "Nur Wurzeln",
"projects.unavailable": "Projektverwaltung zurzeit nicht verf\u00fcgbar \u2014 bitte Administrator kontaktieren.",
"projects.col.title": "Titel",
"projects.col.type": "Typ",
"projects.col.reference": "Referenz",
"projects.col.clientmatter": "ClientMatter",
"projects.col.status": "Status",
"projects.col.updated": "Zuletzt ge\u00e4ndert",
"projects.empty.title": "Noch kein Projekt angelegt",
"projects.empty.hint": "Starten Sie \u00fcber \u201eNeues Projekt\u201c \u2014 legen Sie zuerst einen Mandanten an, darunter Streitsachen, Patente und Verfahren.",
"projects.empty.filtered": "Keine Treffer f\u00fcr diese Filter.",
"projects.cancel": "Abbrechen",
"projects.submit": "Projekt anlegen",
"projects.neu.title": "Neues Projekt \u2014 Paliad",
"projects.neu.heading": "Neues Projekt anlegen",
"projects.neu.subtitle": "Mandant, Streitsache, Patent, Verfahren oder generisches Projekt \u2014 hierarchisch einordnen. Sichtbarkeit folgt dem Team (Sie werden als \u201eLeitung\u201c automatisch hinzugef\u00fcgt).",
"projects.field.type": "Typ",
"projects.field.type.choose": "Bitte w\u00e4hlen\u2026",
"projects.field.parent": "\u00dcbergeordnetes Projekt",
"projects.field.parent.placeholder": "Titel eingeben, um ein \u00dcberprojekt zu suchen...",
"projects.field.parent.hint": "Leer lassen f\u00fcr ein Wurzel-Projekt (typisch: Mandant).",
"projects.field.title": "Titel",
"projects.field.title.placeholder": "z.B. Siemens AG | Siemens v. Huawei | EP 1 234 567",
"projects.field.reference": "Interne Referenz (optional)",
"projects.field.reference.placeholder": `z.B. ${FIRM}-2026-0042`,
"projects.field.client_number": "Client-Nr. (6 Ziffern)",
"projects.field.matter_number": "Matter-Nr. (6 Ziffern)",
"projects.field.clientmatter.hint": `${FIRM}-Billing-Nummern. Format CCCCCC.MMMMMM. Client-Nr. wird an Unterprojekte vererbt (\u00fcberschreibbar).`,
"projects.field.billing_reference": "Billing-Referenz (optional)",
"projects.field.netdocuments_url": "netDocuments-URL (optional)",
"projects.field.industry": "Branche",
"projects.field.country": "Land (ISO-2)",
"projects.field.description": "Notizen",
"projects.field.description.placeholder": "Kurznotizen zum Projekt (optional)...",
"projects.detail.description.heading": "Notizen",
"projects.field.patent_number": "Patentnummer",
"projects.field.filing_date": "Anmeldetag",
"projects.field.grant_date": "Erteilungstag",
"projects.field.court": "Gericht",
"projects.field.case_number": "Aktenzeichen (Gericht)",
"projects.field.proceeding_type_id": "Verfahrenstyp",
"projects.field.proceeding_type": "Verfahrenstyp",
"projects.field.proceeding_type.unset": "(nicht gesetzt)",
"projects.field.proceeding_type.hint": "Bestimmt, welche Schriftsätze-Vorlagen für dieses Verfahren angezeigt werden.",
"projects.field.our_side": "Wir vertreten",
"projects.field.our_side.hint": "Bestimmt die Voreinstellung der Perspektive im Fristenrechner-Determinator. Lässt sich dort jederzeit überschreiben.",
"projects.field.our_side.unset": "Unbekannt / nicht gesetzt",
"projects.field.our_side.claimant": "Klägerseite",
"projects.field.our_side.defendant": "Beklagtenseite",
"projects.field.our_side.applicant": "Antragsteller",
"projects.field.our_side.appellant": "Berufungsführer",
"projects.field.our_side.respondent": "Antragsgegner",
"projects.field.our_side.third_party": "Streithelfer / Dritter",
"projects.field.our_side.other": "Sonstige Beteiligte",
"projects.field.our_side.court": "Gericht / Tribunal",
"projects.field.our_side.both": "Beide Seiten",
"projects.field.our_side.none": "—",
"projects.field.client_role": "Mandantenrolle",
"projects.field.client_role.hint": "Bestimmt die Voreinstellung der Perspektive im Fristenrechner-Determinator: Aktiv → Klägerseite, Reaktiv → Beklagtenseite. Lässt sich dort jederzeit überschreiben.",
"projects.field.client_role.unset": "Unbekannt",
"projects.field.client_role.group.active": "Aktiv (wir greifen an)",
"projects.field.client_role.group.reactive": "Reaktiv (wir verteidigen)",
"projects.field.client_role.group.other": "Dritte / Sonstige",
"projects.field.client_role.claimant": "Klägerseite",
"projects.field.client_role.applicant": "Antragsteller",
"projects.field.client_role.appellant": "Berufungsführer",
"projects.field.client_role.defendant": "Beklagtenseite",
"projects.field.client_role.respondent": "Antragsgegner",
"projects.field.client_role.third_party": "Streithelfer / Dritter",
"projects.field.client_role.other": "Sonstige Beteiligte",
"projects.field.opponent_code": "Gegner-Kürzel",
"projects.field.opponent_code.placeholder": "z.B. OPNT",
"projects.field.opponent_code.hint": "Kurzes Kürzel der Gegenseite (Großbuchstaben, Ziffern, Bindestriche, max. 16 Zeichen). Wird als mittleres Segment in automatisch abgeleiteten Projekt-Codes verwendet (z.B. EXMPL.OPNT.567.INF.CFI).",
"projects.field.status": "Status",
"projects.error.title_required": "Titel erforderlich",
"projects.detail.edit.type_change_warning.title": "Diese Felder werden geleert:",
"projects.detail.title": "Projekt \u2014 Paliad",
"projects.detail.back": "\u2190 Zur\u00fcck zur \u00dcbersicht",
"projects.detail.loading": "L\u00e4dt\u2026",
"projects.detail.notfound": "Projekt nicht gefunden oder keine Berechtigung.",
"projects.detail.smarttimeline.open_chart": "Als Chart anzeigen \u2197",
"projects.chart.title": "Projekt-Chart \u2014 Paliad",
"projects.chart.back": "\u2190 Zur\u00fcck zum Verlauf",
"projects.chart.loading": "L\u00e4dt\u2026",
"projects.chart.notfound": "Projekt nicht gefunden oder keine Berechtigung.",
"projects.chart.error.mount": "Chart konnte nicht initialisiert werden.",
"projects.chart.control.layout.horizontal": "Layout: Horizontal",
"projects.chart.control.columns.auto": "Spalten: Auto",
"projects.chart.control.density.standard": "Dichte: Standard",
"projects.chart.control.palette.default": "Palette: Standard",
"projects.chart.control.export.soon": "Export \u2193 (Slice 2)",
"projects.chart.control.palette.label": "Palette:",
"projects.chart.palette.default": "Standard",
"projects.chart.palette.kind_coded": "Nach Ereignistyp",
"projects.chart.palette.track_coded": "Nach Spur",
"projects.chart.palette.high_contrast": "Hoher Kontrast",
"projects.chart.palette.print": "Druck (S/W)",
"projects.chart.control.density.label": "Dichte:",
"projects.chart.density.compact": "Kompakt",
"projects.chart.density.standard": "Standard",
"projects.chart.density.spacious": "Großzügig",
"projects.chart.control.range.label": "Zeitraum:",
"projects.chart.range.1y": "1 Jahr",
"projects.chart.range.2y": "2 Jahre",
"projects.chart.range.all": "Alles anzeigen",
"projects.chart.range.custom": "Eigener Bereich…",
"projects.chart.range.from": "Von:",
"projects.chart.range.to": "Bis:",
"projects.chart.permalink.copy": "🔗 Link kopieren",
"projects.chart.permalink.title": "URL mit allen Filtern in die Zwischenablage kopieren",
"nav.context.project_chart": "Als Chart anzeigen",
"projects.chart.export.menu": "⇓ Export",
"projects.chart.export.svg": "SVG (Vektorgrafik)",
"projects.chart.export.png": "PNG (Bild, 2× HiDPI)",
"projects.chart.export.print": "PDF (Drucken)",
"projects.chart.export.csv": "CSV (Excel-Tabelle)",
"projects.chart.export.json": "JSON (Rohdaten)",
"projects.chart.export.ics": "iCal (.ics — Outlook / Apple)",
"projects.detail.edit": "Bearbeiten",
"projects.detail.edit.modal.title": "Projekt bearbeiten",
"projects.detail.save": "Speichern",
"projects.detail.tab.verlauf": "Verlauf",
"projects.detail.tab.team": "Team",
"projects.detail.tab.kinder": "Projektbaum",
"projects.detail.tab.parteien": "Parteien",
"projects.detail.tab.fristen": "Fristen",
"projects.detail.tab.termine": "Termine",
"projects.detail.tab.notizen": "Notizen",
"projects.detail.tab.checklisten": "Checklisten",
"projects.detail.tab.submissions": "Schriftsätze",
"projects.detail.tab.settings": "Verwaltung",
"projects.detail.export.button": "Daten exportieren",
"projects.detail.export.tooltip": "Daten dieses Projekts (mit Unter-Projekten) als Excel + JSON + CSV herunterladen.",
"projects.detail.settings.export.heading": "Daten exportieren",
"projects.detail.settings.export.description": "Lade alle Daten dieses Projekts (inkl. Unter-Projekten) als Excel + JSON + CSV-Archiv herunter.",
"projects.detail.settings.archive.heading": "Projekt archivieren",
"projects.detail.settings.archive.description": "Archivieren erfolgt aus dem Bearbeiten-Dialog (Gefahrenbereich).",
"projects.detail.settings.archive.cta": "Bearbeiten öffnen",
"projects.detail.submissions.empty": "Es sind aktuell keine Schriftsatzvorlagen hinterlegt.",
"projects.detail.submissions.empty.no_proceeding": "Für dieses Projekt ist noch kein Verfahrenstyp gesetzt — der Katalog unten zeigt trotzdem alle Vorlagen.",
"projects.detail.submissions.empty.no_proceeding.cta": "Projekt bearbeiten",
"projects.detail.submissions.col.name": "Schriftsatz",
"projects.detail.submissions.col.party": "Partei",
"projects.detail.submissions.col.source": "Rechtsgrundlage",
"projects.detail.submissions.col.action": "",
"projects.detail.submissions.action.generate": "Generieren",
"projects.detail.submissions.action.no_template": "Keine Vorlage",
"projects.detail.submissions.action.edit": "Bearbeiten",
"projects.detail.submissions.hint": "Schriftsätze werden direkt aus dem Projekt heraus als .docx generiert. Anpassen, drucken, einreichen.",
// t-paliad-238 — dedicated draft editor page.
"submissions.draft.title": "Schriftsatz bearbeiten — Paliad",
"submissions.draft.back": "← Zurück zum Projekt",
"submissions.draft.loading": "Lädt…",
"submissions.draft.notfound": "Schriftsatz nicht gefunden oder keine Berechtigung.",
"submissions.draft.action.export": "Als .docx exportieren",
"submissions.draft.action.new": "+ Neuer Entwurf",
"submissions.draft.action.delete": "Löschen",
"submissions.draft.switcher.label": "Entwurf",
"submissions.draft.name.placeholder": "Name dieses Entwurfs",
"submissions.draft.preview.title": "Vorschau",
"submissions.draft.preview.hint": "Read-only Vorschau — finale Bearbeitung in Word.",
// t-paliad-277 — import-from-project + party-picker.
"submissions.draft.import.button": "Aus Projekt importieren",
"submissions.draft.parties.title": "Parteien",
"submissions.draft.parties.hint": "Wählen Sie die im Schriftsatz genannten Parteien oder fügen Sie pro Seite weitere hinzu.",
// t-paliad-276 — DE/EN language toggle on the draft editor.
"submissions.draft.language": "Sprache",
"submissions.draft.language.de": "DE",
"submissions.draft.language.en": "EN",
"submissions.draft.language.fallback_notice": "Fallback: universelles Skelett (keine sprachspezifische Vorlage).",
// t-paliad-313 (m/paliad#141) Composer Slice A — base picker + section list.
"submissions.draft.base.label": "Vorlagenbasis",
"submissions.draft.base.hint": "Steuert Schriftarten, Briefkopf und Abschnitts-Defaults.",
"submissions.draft.sections.title": "Abschnitte",
"submissions.draft.sections.hint": "Inhalt pro Abschnitt — Autosave nach 500 ms. Letztes Layout in Word.",
// t-paliad-349 (m/paliad#157) docforge slice 6 — template authoring page.
"templates.authoring.title": "Vorlagen — Paliad",
"templates.authoring.heading": "Vorlagen",
"templates.authoring.intro": "Lade eine Word-Vorlage hoch, markiere Stellen und setze Variablen ein.",
"templates.authoring.upload.title": "Neue Vorlage hochladen",
"templates.authoring.upload.file": "Word-Datei (.docx)",
"templates.authoring.upload.name_de": "Name (DE)",
"templates.authoring.upload.name_en": "Name (EN)",
"templates.authoring.upload.firm": "Kanzlei (optional)",
"templates.authoring.upload.submit": "Hochladen",
"templates.authoring.list.title": "Vorhandene Vorlagen",
"templates.authoring.workspace.hint": "Text markieren, dann eine Variable wählen, um einen Platzhalter zu setzen.",
"templates.authoring.slots.title": "Platzhalter",
// t-paliad-315 (m/paliad#141) Composer Slice C — building blocks admin.
"admin.building_blocks.title": "Bausteine — Paliad",
"admin.building_blocks.heading": "Bausteine",
"admin.building_blocks.subtitle": "Wiederverwendbare Textbausteine für Composer-Abschnitte.",
"admin.building_blocks.loading": "Lädt…",
"admin.building_blocks.action.new": "+ Neuer Baustein",
"admin.building_blocks.editor.empty": "Wählen Sie einen Baustein aus der Liste — oder erstellen Sie einen neuen.",
// t-paliad-240 — global Schriftsätze drafts index page.
"submissions.index.title": "Schriftsätze — Paliad",
"submissions.index.heading": "Schriftsätze",
"submissions.index.subtitle": "Ihre Schriftsatz-Entwürfe über alle sichtbaren Projekte.",
"submissions.index.loading": "Lädt…",
"submissions.index.empty": "Noch keine Entwürfe. Beginnen Sie mit einem neuen Entwurf — mit oder ohne Projekt.",
"submissions.index.empty.cta": "+ Neuer Entwurf",
"submissions.index.error": "Schriftsätze konnten nicht geladen werden.",
"submissions.index.col.project": "Projekt",
"submissions.index.col.submission": "Schriftsatz",
"submissions.index.col.draft": "Entwurf",
"submissions.index.col.updated": "Zuletzt geändert",
"submissions.index.action.new": "+ Neuer Entwurf",
// t-paliad-243 — global Schriftsatz picker (/submissions/new).
"submissions.new.title": "Neuer Schriftsatz — Paliad",
"submissions.new.back": "← Zurück zur Übersicht",
"submissions.new.heading": "Neuer Schriftsatz",
"submissions.new.subtitle": "Wählen Sie eine Vorlage. Optional verknüpfen Sie den Entwurf mit einem Projekt — sonst füllen Sie alle Variablen manuell.",
"submissions.new.search.placeholder": "Suche nach Schriftsatz, Code oder Norm…",
"submissions.new.loading": "Lädt…",
"submissions.new.error": "Katalog konnte nicht geladen werden.",
"submissions.new.col.name": "Schriftsatz",
"submissions.new.col.party": "Partei",
"submissions.new.col.source": "Rechtsgrundlage",
"submissions.new.col.actions": "Entwurf starten",
"submissions.new.empty.filtered": "Keine passenden Schriftsätze. Filter zurücksetzen.",
"submissions.new.picker.title": "Projekt wählen",
"submissions.new.picker.placeholder": "Projekt suchen (Titel oder Aktenzeichen)…",
"submissions.new.picker.loading": "Lädt Projekte…",
"submissions.new.picker.empty": "Keine sichtbaren Projekte.",
"projects.detail.verlauf.empty": "Noch keine Ereignisse aufgezeichnet.",
"projects.detail.verlauf.loadMore": "Mehr laden",
// SmartTimeline (t-paliad-171, Slice 1).
"projects.detail.smarttimeline.empty": "Noch keine Ereignisse erfasst.",
"projects.detail.smarttimeline.today": "Heute",
"projects.detail.smarttimeline.section.past": "Vergangenheit",
"projects.detail.smarttimeline.section.future": "Zukunft",
"projects.detail.smarttimeline.section.undated": "Ohne Datum",
"projects.detail.smarttimeline.kind.deadline": "Frist",
"projects.detail.smarttimeline.kind.appointment": "Termin",
"projects.detail.smarttimeline.kind.milestone": "Meilenstein",
"projects.detail.smarttimeline.kind.projected": "Vorhersage",
"projects.detail.smarttimeline.status.done": "Erledigt",
"projects.detail.smarttimeline.status.open": "Offen",
"projects.detail.smarttimeline.status.overdue": "Überfällig",
"projects.detail.smarttimeline.status.court_set": "Datum vom Gericht",
"projects.detail.smarttimeline.status.predicted": "Voraussichtlich",
"projects.detail.smarttimeline.status.off_script": "Eigener Eintrag",
"projects.detail.smarttimeline.audit.toggle.show": "Audit-Log anzeigen",
"projects.detail.smarttimeline.audit.toggle.hide": "Nur Timeline-Einträge",
"projects.detail.smarttimeline.add.cta": "+ Eintrag",
"projects.detail.smarttimeline.add.modal.title": "Neuer Eintrag im SmartTimeline",
"projects.detail.smarttimeline.add.choice.deadline": "Frist anlegen",
"projects.detail.smarttimeline.add.choice.appointment": "Termin anlegen",
"projects.detail.smarttimeline.add.choice.counterclaim": "Widerklage (CCR)",
"projects.detail.smarttimeline.add.choice.amend": "Antrag auf Änderung (R.30)",
"projects.detail.smarttimeline.add.choice.milestone": "Eigener Meilenstein",
"projects.detail.smarttimeline.add.choice.disabled": "Kommt mit Slice 3",
"projects.detail.smarttimeline.add.cancel": "Abbrechen",
"projects.detail.smarttimeline.add.submit": "Speichern",
"projects.detail.smarttimeline.milestone.title": "Titel",
"projects.detail.smarttimeline.milestone.date": "Datum (optional)",
"projects.detail.smarttimeline.milestone.description": "Beschreibung (optional)",
"projects.detail.smarttimeline.error.title_required": "Bitte einen Titel angeben.",
"projects.detail.smarttimeline.error.generic": "Konnte den Eintrag nicht speichern.",
"projects.detail.smarttimeline.status.predicted_overdue": "Überfällig (vorhergesagt)",
"projects.detail.smarttimeline.lookahead.more": "+ Mehr anzeigen",
"projects.detail.smarttimeline.lookahead.less": " Weniger",
"projects.detail.smarttimeline.depends_on.prefix": "Folgt aus",
"projects.detail.smarttimeline.depends_on.date_open": "Datum offen",
"projects.detail.smarttimeline.depends_on.show_path": "Pfad anzeigen",
"projects.detail.smarttimeline.depends_on.hide_path": "Pfad verbergen",
"projects.detail.smarttimeline.depends_on.path_hint": "Klicke die übergeordnete Zeile, um deren Abhängigkeit zu sehen.",
"projects.detail.smarttimeline.anchor.set": "Datum setzen",
"projects.detail.smarttimeline.anchor.save": "Speichern",
"projects.detail.smarttimeline.anchor.cancel": "Abbrechen",
"projects.detail.smarttimeline.anchor.saving": "Speichere …",
"projects.detail.smarttimeline.anchor.saved": "Gespeichert.",
"projects.detail.smarttimeline.anchor.error": "Konnte das Datum nicht setzen.",
"projects.detail.smarttimeline.anchor.invalid_date": "Ungültiges Datum (YYYY-MM-DD).",
"projects.detail.smarttimeline.track.label": "Track",
"projects.detail.smarttimeline.track.both": "Beide",
"projects.detail.smarttimeline.track.only.parent": "Nur Hauptverfahren",
"projects.detail.smarttimeline.track.only.counterclaim": "Nur Widerklage",
"projects.detail.smarttimeline.track.only.parent_context": "Nur Hauptverfahren (Kontext)",
"projects.detail.smarttimeline.track.header.parent": "Hauptverfahren",
"projects.detail.smarttimeline.track.header.counterclaim": "Widerklage (CCR)",
"projects.detail.smarttimeline.track.header.parent_context": "Hauptverfahren (Kontext)",
"projects.detail.smarttimeline.counterclaim.procedure": "Verfahrenstyp",
"projects.detail.smarttimeline.counterclaim.title": "Titel (optional)",
"projects.detail.smarttimeline.counterclaim.case_number": "CCR-Aktenzeichen (optional)",
"projects.detail.smarttimeline.counterclaim.flip_override": "Unsere Seite NICHT umkehren (Stimmt nicht?)",
"projects.detail.smarttimeline.counterclaim.flip_hint": "Im Standardfall (CCR-Nichtigkeit) kehrt sich unsere Seite um (Kläger ↔ Beklagter). Aktivieren bei R.49.2.b CCI.",
"projects.detail.smarttimeline.counterclaim.submit": "Widerklage anlegen",
"projects.detail.smarttimeline.counterclaim.saving": "Lege Widerklage an …",
"projects.detail.smarttimeline.lane.empty": "Keine Einträge in dieser Spur.",
"projects.detail.smarttimeline.lane.filter.label": "Spuren",
"projects.detail.smarttimeline.lane.filter.all": "Alle",
"projects.detail.smarttimeline.client.toggle.lanes": "Timeline-Ansicht",
"projects.detail.smarttimeline.client.toggle.matter_list": "Mandatsliste",
"projects.detail.smarttimeline.client.matter_list.heading": "Verfahren des Mandanten",
"projects.detail.smarttimeline.client.matter_list.hint": "Klicke ein Verfahren an, um die Detail-Timeline zu öffnen, oder schalte oben auf „Timeline-Ansicht“.",
"projects.detail.smarttimeline.client.matter_list.empty": "Noch keine Verfahren angelegt.",
"projects.detail.smarttimeline.milestone.bubble_up": "In übergeordneten Akten anzeigen",
"projects.detail.smarttimeline.milestone.bubble_up_hint": "Beim Aktivieren erscheint dieser Meilenstein auf Patent-, Verfahrens- und Mandantsicht.",
"projects.detail.team.form.user": "Benutzer",
"projects.detail.team.form.role": "Rolle",
"projects.detail.team.form.responsibility": "Rolle im Projekt",
"projects.detail.team.form.profession.label": "Profession",
"projects.detail.team.form.profession.none": "Keine Profession gesetzt \u2014 kann keine 4-Augen-Genehmigungen erteilen.",
"projects.detail.team.form.cancel": "Abbrechen",
"projects.detail.team.form.submit": "Hinzuf\u00fcgen",
"projects.detail.team.col.name": "Name",
"projects.detail.team.col.role": "Rolle",
"projects.detail.team.col.profession": "Profession",
"projects.detail.team.col.responsibility": "Rolle im Projekt",
"projects.detail.team.col.source": "Herkunft",
"projects.detail.kinder.add": "Untervorhaben anlegen",
"projects.detail.kinder.empty": "Keine untergeordneten Projekte.",
"projects.detail.parteien.add": "Partei hinzuf\u00fcgen",
"projects.detail.parteien.form.name": "Name",
"projects.detail.parteien.form.role": "Rolle",
"projects.detail.parteien.form.rep": "Vertreter (optional)",
"projects.detail.parteien.form.cancel": "Abbrechen",
"projects.detail.parteien.form.submit": "Hinzuf\u00fcgen",
"projects.detail.parteien.role.claimant": "Kl\u00e4ger",
"projects.detail.parteien.role.defendant": "Beklagter",
"projects.detail.parteien.role.thirdparty": "Streitverk\u00fcndeter / Drittpartei",
"projects.detail.parteien.col.name": "Name",
"projects.detail.parteien.col.role": "Rolle",
"projects.detail.parteien.col.rep": "Vertreter",
"projects.detail.parteien.empty": "Noch keine Parteien eingetragen.",
"projects.detail.deadlines.add": "Frist hinzuf\u00fcgen",
"projects.detail.deadlines.empty": "F\u00fcr dieses Projekt sind noch keine Fristen erfasst.",
"projects.detail.appointments.add": "Termin hinzuf\u00fcgen",
"projects.detail.appointments.form.cancel": "Abbrechen",
"projects.detail.appointments.form.submit": "Hinzuf\u00fcgen",
"projects.detail.appointments.empty": "F\u00fcr dieses Projekt sind noch keine Termine erfasst.",
"projects.detail.checklisten.empty": "F\u00fcr dieses Projekt sind noch keine Checklisten-Instanzen erfasst.",
"projects.detail.checklisten.col.template": "Vorlage",
"projects.detail.checklisten.col.name": "Name",
"projects.detail.checklisten.col.progress": "Fortschritt",
"projects.detail.checklisten.col.created": "Angelegt",
"projects.detail.checklisten.hint.prefix": "Vorlagen werden auf der ",
"projects.detail.checklisten.hint.link": "Checklisten",
"projects.detail.checklisten.hint.suffix": "-Seite angelegt und bearbeitet.",
"projects.detail.checklisten.add": "Checkliste hinzuf\u00fcgen",
"projects.detail.checklisten.add.search": "Vorlage suchen\u2026",
"projects.detail.checklisten.add.empty_pick": "Keine passenden Vorlagen gefunden.",
"projects.detail.checklisten.add.created": "Checkliste hinzugef\u00fcgt.",
"projects.detail.checklisten.add.error": "Checkliste konnte nicht angelegt werden.",
"projects.detail.delete": "Projekt archivieren",
"projects.detail.delete.confirm.title": "Projekt wirklich archivieren?",
"projects.detail.delete.confirm.body": "Das Projekt wird archiviert. Es kann nicht direkt wiederhergestellt werden.",
"projects.detail.delete.confirm.cancel": "Abbrechen",
"projects.detail.delete.confirm.ok": "Archivieren",
"projects.type.client": "Mandant",
"projects.type.litigation": "Streitsache",
"projects.type.patent": "Patent",
"projects.type.case": "Verfahren",
"projects.type.project": "Projekt",
"projects.type.other": "Sonstiges",
"projects.team.role.lead": "Leitung",
"projects.team.role.associate": "Associate",
"projects.team.role.pa": "PA",
"projects.team.role.of_counsel": "Of Counsel",
"projects.team.role.local_counsel": "Local Counsel",
"projects.team.role.expert": "Experte",
"projects.team.role.observer": "Beobachter",
"projects.team.responsibility.admin": "Admin",
"projects.team.responsibility.admin.hint": "Kann Team und Rollen auf diesem Projekt und Unterprojekten verwalten",
"projects.team.responsibility.lead": "Leitung",
"projects.team.responsibility.member": "Mitglied",
"projects.team.responsibility.observer": "Beobachter",
"projects.team.responsibility.external": "Extern",
"projects.team.error.last_admin": "Mindestens ein Admin muss auf diesem Projekt oder einem übergeordneten verbleiben.",
"projects.team.error.forbidden": "Diese Aktion ist nicht erlaubt.",
"projects.team.error.generic": "Aktion fehlgeschlagen.",
"projects.team.profession.partner": "Partner",
"projects.team.profession.of_counsel": "Of Counsel",
"projects.team.profession.associate": "Associate",
"projects.team.profession.senior_pa": "Senior PA",
"projects.team.profession.pa": "PA",
"projects.team.profession.paralegal": "Paralegal",
"projects.team.profession.none": "(extern)",
"projects.team.profession.hint": "Profession \u2014 gesetzt im Firmenprofil",
"projects.team.profession.none.hint": "Keine Profession gesetzt \u2014 keine 4-Augen-Befugnis",
"projects.team.direct": "direkt",
"projects.team.inherited.hint": "Vererbt vom \u00dcberprojekt",
"projects.detail.team.add": "Mitglied hinzuf\u00fcgen",
"projects.detail.team.remove": "Entfernen",
"projects.detail.team.confirm_remove": "Mitglied entfernen?",
"projects.detail.team.empty": "Noch keine Teammitglieder.",
"projects.detail.team.error.user_required": "Benutzer ausw\u00e4hlen",
"projects.detail.team.invite.hint": "Benutzer nicht gefunden?",
"projects.detail.team.invite.hint_email": "Niemand mit dieser E-Mail.",
"projects.detail.team.invite.cta": "Einladen",
// t-paliad-231 — pure-client mailto: button on the Team tab. No
// server call; opens the local mail client with every selected
// member queued in the To: line.
"projects.team.mailto.label": "Mail an Auswahl",
"projects.team.mailto.empty": "Mindestens ein Mitglied auswählen",
"projects.team.mailto.count": "{n} ausgewählt",
"projects.team.mailto.select_all": "Alle sichtbaren auswählen",
"projects.team.mailto.select_row": "Mitglied auswählen",
"projects.view.tree": "Baumansicht",
"projects.tree.toggle": "Aufklappen / Zuklappen",
"projects.tree.loading": "Baum wird geladen\u2026",
"projects.tree.error": "Baumansicht konnte nicht geladen werden.",
"projects.tree.deadlines.overdue": "\u00dcberf\u00e4llige Fristen",
"projects.tree.deadlines.open": "Offene Fristen",
"projects.tree.deadlines.subtree.tooltip": "Inkl. Unterprojekte",
"projects.tree.deadlines.direct.tooltip": "Nur direkt auf diesem Projekt",
"projects.tree.pin": "Anpinnen",
"projects.tree.unpin": "Pin entfernen",
"projects.tree.inherited.context": "Sichtbar wegen Unterprojekt",
"projects.toolbar.search.placeholder": "Suchen \u2014 Titel, Referenz, ClientMatter\u2026",
"projects.toolbar.view.tree": "Baum",
"projects.toolbar.view.cards": "Karten",
"projects.toolbar.view.flat": "Liste",
"projects.toolbar.subtree_counts": "Inkl. Unterprojekte z\u00e4hlen",
"projects.chip.all": "Alle",
"projects.chip.mine": "Nur meine",
"projects.chip.pinned": "Angepinnt",
"projects.chip.status": "Status",
"projects.chip.type": "Typ",
"projects.chip.has_open_deadlines": "Mit aktiven Fristen",
"projects.chip.status.active": "Aktiv",
"projects.chip.status.archived": "Archiviert",
"projects.chip.status.closed": "Abgeschlossen",
"projects.chip.type.client": "Mandant",
"projects.chip.type.litigation": "Streitsache",
"projects.chip.type.patent": "Patent",
"projects.chip.type.case": "Verfahren",
"projects.chip.type.project": "Projekt",
"projects.chip.type.other": "Sonstiges",
"projects.chip.multi.none": "Keine Auswahl",
"projects.chip.multi.count": "{n} ausgew\u00e4hlt",
"projects.empty.filtered.action": "Filter zur\u00fccksetzen",
"projects.search.match.self": "Treffer",
"projects.search.match.ancestor": "\u00dcber-Projekt eines Treffers",
"projects.search.match.descendant": "Unterprojekt eines Treffers",
"projects.cards.next_events": "N\u00e4chste Termine",
"projects.cards.recent_verlauf": "Zuletzt",
"projects.cards.no_next_events": "\u2014 keine bevorstehenden Termine",
"projects.cards.no_recent": "\u2014 noch nichts passiert",
"projects.cards.team": "Team",
"projects.cards.deadline_open": "offen",
"projects.cards.deadline_overdue": "\u00fcberf\u00e4llig",
"projects.cards.show_all_levels": "Alle Ebenen anzeigen",
"projects.cards.show_all_levels.hint": "Mandanten + Streitsachen als eigene Karten zeigen",
"projects.cards.layout.label": "Ansicht",
"projects.cards.layout.new": "Neue Ansicht",
"projects.cards.layout.edit": "Bearbeiten",
"projects.cards.layout.save": "Speichern",
"projects.cards.layout.discard": "Verwerfen",
"projects.cards.layout.set_default": "Als Standard festlegen",
"projects.cards.layout.delete": "L\u00f6schen",
"projects.cards.layout.rename": "Umbenennen",
"projects.cards.layout.is_default": "Standard",
"projects.cards.layout.new.prompt": "Name der neuen Ansicht",
"projects.cards.layout.delete.confirm": "Diese Ansicht wirklich l\u00f6schen?",
"projects.cards.layout.delete.default_blocked": "Die aktive Standardansicht kann nicht gel\u00f6scht werden \u2014 bitte zuerst eine andere Standardansicht w\u00e4hlen.",
"projects.cards.layout.fact.title-row": "Titelzeile",
"projects.cards.layout.fact.type-chip": "Typ-Badge",
"projects.cards.layout.fact.status-chip": "Status-Badge",
"projects.cards.layout.fact.client-matter": "ClientMatter",
"projects.cards.layout.fact.parent-path": "Pfad zum \u00dcberprojekt",
"projects.cards.layout.fact.deadline-counts": "Frist-Z\u00e4hler",
"projects.cards.layout.fact.next-events": "N\u00e4chste Termine",
"projects.cards.layout.fact.recent-verlauf": "Verlauf-Eintr\u00e4ge",
"projects.cards.layout.fact.team-chips": "Team-Chips",
"projects.cards.layout.fact.reference": "Referenz",
"projects.cards.layout.fact.last-activity-at": "Letzte Aktivit\u00e4t",
"projects.cards.layout.density": "Dichte",
"projects.cards.layout.density.compact": "Kompakt",
"projects.cards.layout.density.roomy": "Ger\u00e4umig",
"projects.cards.layout.grid": "Spalten",
"projects.cards.layout.grid.auto": "Auto",
"projects.cards.layout.grid.2": "2",
"projects.cards.layout.grid.3": "3",
"projects.cards.layout.grid.4": "4",
"projects.cards.layout.fact.toggle.hide": "Ausblenden",
"projects.cards.layout.fact.toggle.show": "Anzeigen",
"projects.cards.layout.fact.move_up": "Nach oben",
"projects.cards.layout.fact.move_down": "Nach unten",
"projects.cards.layout.fact.count": "Anzahl",
"projects.cards.event.kind.deadline": "Frist",
"projects.cards.event.kind.appointment": "Termin",
"projects.cards.event.kind.project_event": "Verlauf",
"projects.cards.empty": "Keine Projekte zum Anzeigen.",
"projects.detail.clientmatter.inherited": "Vom \u00dcberprojekt vererbt",
"einstellungen.profil.email": "E-Mail",
"einstellungen.profil.email.hint": "E-Mail kann nicht ge\u00e4ndert werden.",
"einstellungen.profil.display_name": "Anzeigename",
"einstellungen.profil.display_name.placeholder": "Vor- und Nachname",
"einstellungen.profil.office": "B\u00fcro",
"einstellungen.profil.job_title": "Berufsbezeichnung",
"einstellungen.profil.job_title.placeholder": "z.B. Associate, Partner, Patentanwalt",
"einstellungen.profil.lang": "Sprache",
"einstellungen.profil.lang.de": "Deutsch",
"einstellungen.profil.lang.en": "English",
"einstellungen.profil.lang.hint": "Wird f\u00fcr Oberfl\u00e4che und Benachrichtigungs-E-Mails verwendet.",
"einstellungen.profil.error.display_name": "Bitte Anzeigename eingeben.",
"einstellungen.profil.error.office": "Bitte B\u00fcro ausw\u00e4hlen.",
"einstellungen.profil.error.job_title": "Bitte Berufsbezeichnung eingeben.",
"einstellungen.prefs.reminders.heading": "Frist-Erinnerungen",
"einstellungen.prefs.reminders.hint": "Paliad sendet Erinnerungen an Ihre E-Mail, wenn Fristen f\u00e4llig werden.",
"einstellungen.prefs.reminders.master": "Frist-Erinnerungen aktiv",
"einstellungen.prefs.reminders.overdue": "\u00dcberf\u00e4llige Fristen",
"einstellungen.prefs.reminders.due_today": "Heute f\u00e4llig",
"einstellungen.prefs.reminders.due_warning": "Vorwarnung (X Tage vorher)",
"einstellungen.prefs.times.heading": "Zeitpunkte",
"einstellungen.prefs.times.hint": "Erinnerungen werden zur gew\u00e4hlten Uhrzeit in Ihrer Zeitzone versendet.",
"einstellungen.prefs.times.morning": "Morgen-Slot",
"einstellungen.prefs.times.morning.hint": "Sammel-E-Mail mit \u00fcberf\u00e4lligen, heute f\u00e4lligen und kommenden Fristen.",
"einstellungen.prefs.times.evening": "Abend-Slot (Eskalation)",
"einstellungen.prefs.times.evening.hint": "Dringende Erinnerung an heute noch offene Fristen.",
"einstellungen.prefs.times.timezone": "Zeitzone",
"einstellungen.prefs.times.timezone.hint": "IANA-Zeitzonen-Name (z.B. Europe/Berlin, Europe/London).",
"einstellungen.prefs.times.error.required": "Bitte beide Uhrzeiten ausw\u00e4hlen.",
"einstellungen.prefs.warning_offset.label": "Vorwarnung (Tage vorher)",
"einstellungen.prefs.warning_offset.hint": "Wir erinnern Sie diese viele Tage vor jeder Frist.",
"einstellungen.prefs.warning_offset.error": "Vorwarnung muss zwischen 1 und 30 Tagen liegen.",
"einstellungen.prefs.escalation.heading": "Eskalations-Kontakt",
"einstellungen.prefs.escalation.hint": "Wer soll bei DRINGEND-Eskalation am Abend zusätzlich benachrichtigt werden? Standard: globale Admins.",
"einstellungen.prefs.escalation.default_option": "— Standard (globale Admins) —",
// Invitation modal (sidebar)
"invite.button": "Kolleg:in einladen",
"invite.modal.title": "Kolleg:in zu Paliad einladen",
"invite.modal.body": `Senden Sie eine Einladung an eine ${FIRM}-E-Mail-Adresse. Die Empf\u00e4nger:in erh\u00e4lt einen Registrierungslink.`,
"invite.modal.email": "E-Mail-Adresse",
"invite.modal.message": "Pers\u00f6nliche Nachricht (optional)",
"invite.modal.message.placeholder": "Hi, ich nutze Paliad f\u00fcr die Aktenverwaltung \u2014 schau es dir mal an.",
"invite.modal.cancel": "Abbrechen",
"invite.modal.send": "Einladung senden",
"appointments.list.title": "Termine \u2014 Paliad",
"appointments.list.heading": "Termine",
"appointments.list.subtitle": "Verhandlungen, Besprechungen, Beratungen \u2014 pers\u00f6nlich oder aktenbezogen.",
"appointments.list.new": "Neuer Termin",
"appointments.summary.today": "Heute",
"appointments.summary.thisweek": "Diese Woche",
"appointments.summary.later": "Sp\u00e4ter",
"appointments.filter.type": "Typ",
"appointments.filter.type.all": "Alle Typen",
"appointments.filter.akte": "Projekt",
"appointments.filter.akte.all": "Alle Projekte & pers\u00f6nlich",
"appointments.filter.akte.personal": "Nur pers\u00f6nliche",
"appointments.filter.from": "Von",
"appointments.filter.to": "Bis",
"appointments.col.start": "Beginn",
"appointments.col.title": "Titel",
"appointments.col.akte": "Projekt",
"appointments.col.location": "Ort",
"appointments.col.type": "Typ",
"appointments.empty.title": "Keine Termine vorhanden",
"appointments.empty.hint": "Sobald Termine angelegt werden, erscheinen sie hier.",
"appointments.empty.filtered": "Keine Termine mit diesen Filtern.",
"appointments.unavailable": "Terminverwaltung zurzeit nicht verf\u00fcgbar \u2014 bitte Administrator kontaktieren.",
"appointments.personal": "Pers\u00f6nlich",
"appointments.type.hearing": "Verhandlung",
"appointments.type.meeting": "Besprechung",
"appointments.type.consultation": "Beratung",
"appointments.type.deadline_hearing": "Fristverhandlung",
"appointments.neu.title": "Neuer Termin \u2014 Paliad",
"appointments.neu.heading": "Neuer Termin",
"appointments.neu.subtitle": "Pers\u00f6nlich oder einer Akte zugeordnet. Bei aktiver CalDAV-Synchronisation erscheint der Termin auch im externen Kalender.",
"appointments.neu.back": "\u2190 Zur\u00fcck zur \u00dcbersicht",
"appointments.neu.cancel": "Abbrechen",
"appointments.neu.submit": "Termin anlegen",
"appointments.field.title": "Titel",
"appointments.field.title.placeholder": "z.B. M\u00fcndliche Verhandlung",
"appointments.field.start": "Beginn",
"appointments.field.end": "Ende (optional)",
"appointments.field.type": "Typ",
"appointments.field.type.none": "Kein Typ",
"appointments.field.akte": "Akte (optional)",
"appointments.field.akte.none": "Pers\u00f6nlicher Termin",
"appointments.field.location": "Ort (optional)",
"appointments.field.location.placeholder": "z.B. UPC LD M\u00fcnchen",
"appointments.field.description": "Beschreibung (optional)",
"appointments.field.description.placeholder": "Hinweise, Tagesordnung, n\u00e4chste Schritte\u2026",
"appointments.error.required": "Bitte Titel und Beginn ausf\u00fcllen.",
"appointments.error.generic": "Speichern fehlgeschlagen. Bitte sp\u00e4ter erneut versuchen.",
"appointments.detail.title": "Termin \u2014 Paliad",
"appointments.detail.back": "\u2190 Zur\u00fcck zur \u00dcbersicht",
"appointments.detail.loading": "L\u00e4dt\u2026",
"appointments.detail.notfound": "Termin nicht gefunden",
"appointments.detail.notfound.hint": "Der Termin existiert nicht oder Sie haben keine Berechtigung.",
"appointments.detail.akte": "Akte:",
"appointments.detail.save": "\u00c4nderungen speichern",
"appointments.detail.saved": "Gespeichert.",
"appointments.detail.delete": "Termin l\u00f6schen",
"appointments.detail.delete.confirm": "Diesen Termin wirklich l\u00f6schen?",
// t-paliad-110 \u2014 unified Events page (rendered on both /deadlines and
// /appointments). The user-facing "Fristen" / "Termine" branding stays;
// these keys cover the shared chrome (chip toggle, type chip per row,
// generic Datum column header, etc).
"events.toggle.deadline": "Fristen",
"events.toggle.appointment": "Termine",
"events.toggle.all": "Beides",
"events.filter.status.all": "Alle (auch vergangene)",
"events.filter.status.upcoming": "Ab heute",
"events.summary.later": "Sp\u00e4ter",
"events.col.date": "Datum",
"events.col.location": "Ort",
"events.col.appointment_type": "Termin-Typ",
"events.row.type.deadline": "Frist",
"events.row.type.appointment": "Termin",
"events.empty.title": "Keine Eintr\u00e4ge vorhanden",
"events.empty.hint": "Sobald Fristen oder Termine angelegt werden, erscheinen sie hier.",
"events.empty.filtered": "Keine Eintr\u00e4ge mit diesen Filtern.",
"events.unavailable": "Termin- und Fristenverwaltung zurzeit nicht verf\u00fcgbar \u2014 bitte Administrator kontaktieren.",
"events.view.cards": "Karten",
"events.view.list": "Liste",
"events.view.calendar": "Kalender",
"caldav.title": "CalDAV-Synchronisation \u2014 Paliad",
"caldav.heading": "CalDAV-Synchronisation",
"caldav.subtitle": "Synchronisieren Sie Ihre Paliad-Termine mit Ihrem externen Kalender (Nextcloud, iCloud, Outlook, mailcow\u2026). Das Passwort wird verschl\u00fcsselt gespeichert und nie zur\u00fcckgegeben.",
"caldav.disabled": "CalDAV-Synchronisation derzeit nicht verf\u00fcgbar \u2014 bitte Administrator kontaktieren.",
"caldav.never": "Noch nie",
"caldav.field.url": "CalDAV-Server-URL",
"caldav.field.url.placeholder": "https://cloud.example.com/remote.php/dav/calendars/user/personal/",
"caldav.field.url.hint": "Vollst\u00e4ndige URL zu Ihrem Kalender (inkl. Pfad).",
"caldav.field.username": "Benutzername",
"caldav.field.password": "Passwort / App-Token",
"caldav.field.password.hint": "Bei vorhandener Konfiguration leer lassen, um das gespeicherte Passwort zu behalten.",
"caldav.field.calendar_path": "Kalenderpfad (optional)",
"caldav.field.calendar_path.placeholder": "/calendars/user/personal/",
"caldav.field.calendar_path.hint": "Falls die URL nur den Server zeigt, ist hier der Pfad zum konkreten Kalender einzutragen.",
"caldav.field.enabled": "Synchronisation aktiv",
"caldav.test": "Verbindung testen",
"caldav.test.ok": "Verbindung erfolgreich.",
"caldav.test.fail": "Verbindung fehlgeschlagen",
"caldav.save": "Speichern",
"caldav.saved": "Konfiguration gespeichert.",
"caldav.delete": "Konfiguration l\u00f6schen",
"caldav.delete.confirm": "Wirklich l\u00f6schen? Das gespeicherte Passwort wird unwiderruflich entfernt.",
"caldav.delete.done": "Konfiguration gel\u00f6scht.",
"caldav.error.required": "URL und Benutzername sind erforderlich.",
"caldav.error.password_required": "Passwort ist beim ersten Speichern erforderlich.",
"caldav.error.generic": "Speichern fehlgeschlagen.",
"caldav.status.last_sync": "Letzte Synchronisation:",
"caldav.status.last_error": "Letzter Fehler:",
"caldav.log.heading": "Letzte Synchronisationen",
"caldav.log.col.time": "Zeitpunkt",
"caldav.log.col.pushed": "Gesendet",
"caldav.log.col.pulled": "Empfangen",
"caldav.log.col.duration": "Dauer",
"caldav.log.col.error": "Fehler",
"caldav.log.empty": "Noch keine Synchronisationen aufgezeichnet.",
// CalDAV multi-calendar bindings (t-paliad-212 Slice 2b)
"caldav.bindings.heading": "Kalender",
"caldav.bindings.hint": "Verbinde mehrere Kalender mit Paliad — einen Master für alles oder eigene Kalender pro Projekt.",
"caldav.bindings.add": "+ Kalender hinzufügen",
"caldav.bindings.empty": "Noch keine Kalender konfiguriert.",
"caldav.bindings.scope.all_visible": "Alles",
"caldav.bindings.scope.personal_only": "Nur persönlich",
"caldav.bindings.scope.project": "Projekt",
"caldav.bindings.card.enabled": "Aktiv",
"caldav.bindings.card.edit": "Bearbeiten",
"caldav.bindings.card.remove": "Entfernen",
"caldav.bindings.modal.add_title": "Kalender hinzufügen",
"caldav.bindings.modal.edit_title": "Kalender bearbeiten",
"caldav.bindings.modal.source": "Kalender",
"caldav.bindings.modal.source.loading": "Lädt …",
"caldav.bindings.modal.source.existing": "Vorhandenen Kalender wählen",
"caldav.bindings.modal.source.create": "Neuen Kalender erstellen",
"caldav.bindings.modal.source.custom": "Eigene URL eingeben",
"caldav.bindings.modal.source.degrade": "Dieser Anbieter erlaubt das Erstellen neuer Kalender nicht via CalDAV. Erstelle den Kalender direkt in der Anbieter-Oberfläche und füge ihn hier per URL hinzu.",
"caldav.bindings.modal.source.discover_failed": "Kalender konnten nicht ermittelt werden — eigene URL eingeben.",
"caldav.bindings.modal.source.discover_empty": "Keine Kalender gefunden — eigene URL eingeben.",
"caldav.bindings.modal.display_name": "Anzeigename (optional)",
"caldav.bindings.modal.display_name.placeholder": "z.B. Projekt Acme v Bosch",
"caldav.bindings.modal.scope": "Inhalt",
"caldav.bindings.modal.scope.all_visible": "Alles, was ich sehe",
"caldav.bindings.modal.scope.personal_only": "Nur persönliche Termine",
"caldav.bindings.modal.scope.project": "Ein Projekt:",
"caldav.bindings.modal.scope.project.loading": "Lädt …",
"caldav.bindings.modal.submit_add": "Hinzufügen",
"caldav.bindings.modal.submit_edit": "Speichern",
"caldav.bindings.delete.confirm": "Diesen Kalender wirklich entfernen? Die zugehörigen Termine werden im externen Kalender gelöscht.",
"caldav.bindings.delete.failed": "Entfernen fehlgeschlagen — bitte später erneut versuchen.",
"caldav.bindings.error.scope": "Bitte einen Inhaltsbereich wählen.",
"caldav.bindings.error.scope_project": "Bitte ein Projekt auswählen.",
"caldav.bindings.error.path": "Bitte einen Kalender wählen oder eine URL eingeben.",
"caldav.bindings.error.create_name_required": "Bitte einen Anzeigenamen eingeben.",
"caldav.bindings.error.create_name_taken": "Name bereits vergeben — bitte einen anderen Anzeigenamen wählen.",
"caldav.bindings.error.create_unsupported": "Dein Anbieter unterstützt das Erstellen neuer Kalender nicht. Bitte 'Eigene URL eingeben' verwenden.",
// Notizen (polymorphic notes — Phase I)
"notes.section.title": "Notizen",
"notes.placeholder": "Notiz hinzuf\u00fcgen\u2026",
"notes.shortcut.hint": "Strg+Enter (oder \u2318+Enter) zum Speichern",
"notes.submit": "Hinzuf\u00fcgen",
"notes.save": "Speichern",
"notes.cancel": "Abbrechen",
"notes.edit": "Bearbeiten",
"notes.delete": "L\u00f6schen",
"notes.delete.confirm": "Diese Notiz wirklich l\u00f6schen?",
"notes.empty": "Noch keine Notizen.",
"notes.edited": "bearbeitet",
"notes.unknown_author": "Unbekannt",
"notes.time.just_now": "gerade eben",
"notes.error.empty": "Notiz darf nicht leer sein.",
"notes.error.generic": "Aktion fehlgeschlagen. Bitte erneut versuchen.",
// Agenda (t-paliad-030) — unified timeline across projects
"agenda.title": "Agenda — Paliad",
"agenda.heading": "Agenda",
"agenda.subtitle": "Kommende Fristen und Termine über alle sichtbaren Akten, nach Tag gruppiert.",
"agenda.unavailable": "Agenda zurzeit nicht verfügbar — bitte Administrator kontaktieren.",
"agenda.loading": "Lädt …",
"agenda.filter.type": "Ansicht",
"agenda.filter.both": "Beides",
"agenda.filter.deadlines": "Nur Fristen",
"agenda.filter.appointments": "Nur Termine",
"agenda.filter.range": "Zeitraum",
"agenda.range.7": "7 Tage",
"agenda.range.14": "14 Tage",
"agenda.range.30": "30 Tage",
"agenda.range.90": "90 Tage",
"agenda.empty.title": "Keine Einträge im Zeitraum",
"agenda.empty.hint": "Nichts Fälliges — erweitern Sie den Zeitraum oder legen Sie neue Fristen oder Termine an.",
"agenda.label.deadline": "Frist",
"agenda.label.appointment": "Termin",
"agenda.appointment_type.hearing": "Verhandlung",
"agenda.appointment_type.meeting": "Besprechung",
"agenda.appointment_type.consultation": "Mandantentermin",
"agenda.appointment_type.deadline_hearing": "Fristentermin",
"agenda.day.today": "Heute",
"agenda.day.tomorrow": "Morgen",
"agenda.day.mo": "Mo",
"agenda.day.di": "Di",
"agenda.day.mi": "Mi",
"agenda.day.do": "Do",
"agenda.day.fr": "Fr",
"agenda.day.sa": "Sa",
"agenda.day.so": "So",
"agenda.urgency.overdue": "Überfällig",
"agenda.urgency.today": "Heute",
"agenda.urgency.tomorrow": "Morgen",
"agenda.urgency.this_week": "Diese Woche",
"agenda.urgency.later": "Später",
// Team directory (t-paliad-029)
"team.title": "Team — Paliad",
"team.heading": "Team",
"team.subtitle": "Alle Paliad-Kolleg:innen, gruppiert nach Standort oder Partner Unit.",
"team.search.placeholder": "Nach Name, Rolle, Büro suchen…",
"team.group.office": "Nach Standort",
"team.group.department": "Nach Partner Unit",
"team.group.other": "Sonstige",
"team.filter.all": "Alle",
"team.filter.role": "Rolle",
"team.role.partner": "Partner",
"team.role.counsel": "Counsel",
"team.role.counsel_knowledge_lawyer": "Counsel Knowledge Lawyer",
"team.role.senior_associate": "Senior Associate",
"team.role.associate": "Associate",
"team.role.junior_associate": "Junior Associate",
"team.role.trainee": "Trainee",
"team.role.pa": "PA",
"team.role.paralegal": "Paralegal",
"team.role.secretary": "Sekretär:in",
"team.empty": "Keine Treffer.",
"team.dept.lead": "Lead",
"team.dept.unassigned": "Ohne Partner Unit",
"team.partner_unit.unassigned": "Ohne Partner Unit",
// Project filter (t-paliad-147)
"team.filter.project": "Projekt",
"team.filter.project.all": "Alle Projekte",
"team.filter.project.selected": "ausgewählt",
"team.filter.project.clear": "Alle abwählen",
// Click-to-select (t-paliad-223 #53). Layered ON TOP of the existing
// filter pills — selection is an explicit subset of the visible set,
// pruned on filter change, wiped on page navigation.
"team.selection.count": "{n} ausgewählt",
"team.selection.clear": "Auswahl aufheben",
"team.selection.send": "E-Mail an Auswahl",
"team.selection.select_all": "Alle sichtbaren auswählen",
"team.selection.toggle_card": "Kontakt auswählen",
// Broadcast modal (t-paliad-147)
"team.broadcast.button": "E-Mail an Auswahl",
"team.broadcast.title": "E-Mail an Auswahl",
"team.broadcast.recipients": "Empfänger",
"team.broadcast.show_all": "Alle anzeigen",
"team.broadcast.mailto.label": "Im Mail-Client öffnen",
"team.broadcast.mailto.tooltip": "Öffnet den lokalen Mail-Client mit allen Empfängern in der To-Zeile",
"team.broadcast.template": "Vorlage",
"team.broadcast.template_optional": "optional",
"team.broadcast.template_freeform": "Freitext",
"team.broadcast.template.invitation": "Einladung",
"team.broadcast.template.deadline_digest": "Frist-Digest",
"team.broadcast.subject": "Betreff",
"team.broadcast.body": "Nachricht",
"team.broadcast.body_placeholder": "Hallo {{first_name}}, …",
"team.broadcast.placeholders_hint": "Platzhalter: {{name}}, {{first_name}}, {{role_on_project}}",
"team.broadcast.markdown_hint": "Markdown unterstützt: **fett**, *kursiv*, [Link](https://...), - Aufzählung.",
"team.broadcast.send": "Senden",
"team.broadcast.sending": "Sende…",
"team.broadcast.sent": "Versandt",
"team.broadcast.success": "{sent} von {total} Mails versandt ({failed} fehlgeschlagen).",
"team.broadcast.error.no_recipients": "Keine Empfänger ausgewählt.",
"team.broadcast.error.too_many": "Empfängerlimit ({cap}) überschritten.",
"team.broadcast.error.subject_required": "Betreff ist erforderlich.",
"team.broadcast.error.body_required": "Nachricht ist erforderlich.",
"common.close": "Schließen",
// Admin broadcasts viewer (t-paliad-147)
"admin.broadcasts.title": "Broadcasts — Paliad",
"admin.broadcasts.heading": "Broadcasts",
"admin.broadcasts.subtitle": "Versendete Massen-E-Mails an Teamauswahlen.",
"admin.broadcasts.col.sent_at": "Gesendet",
"admin.broadcasts.col.subject": "Betreff",
"admin.broadcasts.col.sender": "Absender:in",
"admin.broadcasts.col.count": "Empfänger",
"admin.broadcasts.loading": "Lade…",
"admin.broadcasts.empty": "Noch keine Broadcasts versandt.",
"admin.broadcasts.detail.sent_by": "Gesendet von",
"admin.broadcasts.detail.delivered": "versandt",
"admin.broadcasts.detail.failed": "fehlgeschlagen",
"admin.broadcasts.detail.recipients": "Empfänger",
// t-paliad-146: Paliadin in-app AI buddy (PoC)
"paliadin.title": "Paliadin — Paliad",
"paliadin.heading": "✨ Paliadin",
"paliadin.tagline": "Ich kenne deine Akten und Paliads Wissensbasis.",
"paliadin.empty": "Was kann ich für dich tun?",
"paliadin.starter.today": "Was steht heute an?",
"paliadin.starter.week": "Welche Fristen sind diese Woche fällig?",
"paliadin.starter.concept": "Erkläre mir Klageerwiderung.",
"paliadin.input.placeholder": "Frag den Paliadin…",
"paliadin.send": "Senden",
"paliadin.stop": "Stop",
"paliadin.reset": "Neue Unterhaltung",
"paliadin.error.local_only": "Paliadin läuft nur lokal. Diese Instanz hat kein tmux/claude installiert — lokal mit ./paliad starten.",
"paliadin.error.mriver_unreachable": "mRiver ist offline — Paliadin nicht erreichbar. Mach mRiver an, oder nutze Paliadin lokal mit ./paliad.",
"paliadin.error.shim_auth_failed": "Paliadin-Authentifizierung fehlgeschlagen. SSH-Schlüssel oder Berechtigung auf mRiver prüfen.",
"paliadin.error.shim_error": "Paliadin-Fehler auf mRiver. tmux/claude-Pane prüfen.",
"paliadin.error.timeout": "Paliadin antwortet nicht (Timeout 60s). Nochmal versuchen.",
"paliadin.error.connection_lost": "Verbindung verloren.",
"paliadin.error.upstream": "Fehler beim Senden.",
"paliadin.error.upstream_silence": "Paliadin meldet sich nicht mehr — Verbindung wird beendet.",
"paliadin.late.waiting": "Antwort wird nachgereicht, sobald sie eintrifft …",
"paliadin.late.checking": "Verbindung verloren — Paliadin denkt vielleicht noch. Lade frische Antwort …",
"paliadin.late.lost": "Antwort konnte nicht zugestellt werden — bitte Frage erneut stellen.",
"paliadin.late.marker": "verspätet",
"paliadin.thinking": "Paliadin denkt nach",
"paliadin.thinking.seconds": "{seconds}s",
"paliadin.widget.title": "Paliadin",
"paliadin.widget.trigger": "Paliadin (Cmd+J)",
"paliadin.widget.empty": "Was kann ich für dich tun?",
"paliadin.widget.input.placeholder": "Frage an Paliadin...",
"paliadin.widget.input.label": "Nachricht an Paliadin",
"paliadin.widget.send": "Senden",
"paliadin.widget.reset": "Konversation zurücksetzen",
"paliadin.widget.reset.confirm": "Konversation hier und auf dem Server zurücksetzen?",
"paliadin.widget.fullscreen": "Vollbild-Modus",
"paliadin.widget.close": "Schließen",
"paliadin.widget.context.on_page": "Auf dieser Seite",
"approvals.agent.label": "Paliadin hat das vorgeschlagen",
"approvals.agent.byline": "Paliadin",
"approvals.agent.suggestion_pending": "Vorschlag wartet auf deine Genehmigung",
"nav.admin.paliadin": "Paliadin Monitor",
"admin.paliadin.title": "Paliadin Monitor — Paliad",
"admin.paliadin.heading": "Paliadin Monitor",
"admin.paliadin.subtitle": "Wie wird Paliadin tatsächlich verwendet?",
"admin.paliadin.total": "Gesamt",
"admin.paliadin.last7": "Letzte 7 Tage",
"admin.paliadin.median_dur": "Median Dauer",
"admin.paliadin.tool_rate": "Tool-Use Rate",
"admin.paliadin.abandon_rate": "Abbruchrate",
"admin.paliadin.classifier_heading": "Anfragearten",
"admin.paliadin.daily_heading": "Tägliche Nutzung",
"admin.paliadin.top_heading": "Top Anfragen",
"admin.paliadin.recent_heading": "Letzte Anfragen",
"admin.paliadin.col.prompt": "Anfrage",
"admin.paliadin.col.count": "Anzahl",
"admin.paliadin.col.started": "Zeit",
"admin.paliadin.col.user": "Nutzer",
"admin.paliadin.col.classifier": "Art",
"admin.paliadin.col.response": "Antwort",
"admin.paliadin.col.tools": "Tools",
"admin.paliadin.col.origin": "Seite",
"admin.paliadin.col.duration": "Dauer",
"admin.paliadin.loading": "Lade…",
"common.forbidden": "Zugriff verweigert.",
"common.load_error": "Fehler beim Laden.",
"common.loading": "Lade…",
"partner_unit.heading": "Meine Partner Units",
"partner_unit.subtitle": "Partner Units sind strukturelle Einheiten — getrennt von Projektteams. Mitgliedschaft wird vom Admin verwaltet.",
"partner_unit.none": "Sie sind noch keiner Partner Unit zugeordnet.",
"partner_unit.members_label": "Mitglieder",
// Admin team management (t-paliad-050)
"nav.group.admin": "Admin",
"nav.admin.bereich": "Admin-Bereich",
"nav.admin.team": "Team-Verwaltung",
"admin.title": "Admin-Bereich — Paliad",
"admin.heading": "Admin-Bereich",
"admin.subtitle": "Werkzeuge zur Verwaltung von Paliad. Nur für Administrator:innen sichtbar.",
"admin.section.available": "Verfügbar",
"admin.section.planned": "Geplant",
"admin.coming_soon": "Kommt bald",
"admin.card.team.title": "Team-Verwaltung",
"admin.card.team.desc": "Benutzer:innen anlegen, bearbeiten, löschen.",
"admin.card.partner_units.title": "Partner Units",
"admin.card.partner_units.desc": "Strukturelle Partnereinheiten anlegen und Mitglieder zuordnen.",
"admin.card.audit.title": "Audit-Log",
"admin.card.audit.desc": "Wer hat wann was geändert? Nachvollziehbarkeit für sicherheitsrelevante Aktionen.",
"admin.card.email_templates.title": "Email-Templates",
"admin.card.email_templates.desc": "Vorlagen für Einladungen, Erinnerungen und Layout anpassen.",
"admin.card.feature_flags.title": "Feature-Flags",
"admin.card.feature_flags.desc": "Funktionen pro Standort, Partner Unit oder Rolle aktivieren.",
"admin.card.broadcasts.title": "Broadcasts",
"admin.card.broadcasts.desc": "Versendete Massen-E-Mails an Teamauswahlen einsehen.",
"admin.card.approval_policies.title": "Genehmigungspflichten",
"admin.card.approval_policies.desc": "4-Augen-Prüfung pro Projekt und Partner Unit konfigurieren.",
"admin.approval_policies.title": "Genehmigungspflichten — Paliad",
"admin.approval_policies.heading": "Genehmigungspflichten",
"admin.approval_policies.subtitle": "4-Augen-Prüfung pro Projekt und Partner Unit konfigurieren.",
"admin.approval_policies.loading": "Lädt …",
"admin.approval_policies.section.units": "Partner-Unit-Standards",
"admin.approval_policies.section.units.hint": "Standardregeln, die jedes Projekt erbt, das einer Partner Unit zugeordnet ist. Bei mehreren Partner Units gewinnt die strengste Regel.",
"admin.approval_policies.section.projects": "Projekt-spezifisch",
"admin.approval_policies.section.projects.hint": "Eigene Regeln für ein Projekt. Überschreiben Standards aus Partner Units und geerbte Projektregeln.",
"admin.approval_policies.units.empty": "Keine Partner Units vorhanden.",
"admin.approval_policies.picker.label": "Projekt wählen",
"admin.approval_policies.picker.placeholder": "Suchen…",
"admin.approval_policies.picker.no_results": "Keine Treffer.",
"admin.approval_policies.entity.deadline": "Fristen",
"admin.approval_policies.entity.appointment": "Termine",
"admin.approval_policies.lifecycle.create": "Erstellen",
"admin.approval_policies.lifecycle.update": "Ändern",
"admin.approval_policies.lifecycle.complete": "Erledigen",
"admin.approval_policies.lifecycle.delete": "Löschen",
"admin.approval_policies.role.partner": "Partner",
"admin.approval_policies.role.of_counsel": "Of Counsel",
"admin.approval_policies.role.associate": "Associate",
"admin.approval_policies.role.senior_pa": "Senior PA",
"admin.approval_policies.role.pa": "PA",
"admin.approval_policies.role.none": "Keine Genehmigung",
"admin.approval_policies.role.no_rule": "— keine Regel —",
"admin.approval_policies.source.project": "Projekt",
"admin.approval_policies.source.ancestor": "Geerbt",
"admin.approval_policies.source.unit_default": "Standard",
"admin.approval_policies.source.no_approval": "keine Genehmigung",
"admin.approval_policies.cell.requires": "Genehmigung erforderlich",
"admin.approval_policies.cell.clear": "—",
"admin.approval_policies.cell.clear.title": "Regel zurücksetzen (erben)",
"admin.approval_policies.cell.saved_msg": "Gespeichert.",
"admin.approval_policies.cell.error_msg": "Fehler",
"admin.approval_policies.bulk.cta": "Auf Unterprojekte anwenden",
"admin.approval_policies.bulk.no_descendants": "Keine Unterprojekte vorhanden.",
"admin.approval_policies.bulk.modal.title": "Auf Unterprojekte anwenden",
"admin.approval_policies.bulk.modal.body": "Die folgenden Unterprojekte erhalten die effektive Matrix dieses Projekts als projektspezifische Regeln. Bestehende projektspezifische Regeln werden überschrieben. Standards aus Partner Units bleiben unberührt.",
"admin.approval_policies.bulk.modal.cancel": "Abbrechen",
"admin.approval_policies.bulk.modal.confirm": "Übernehmen",
"admin.approval_policies.bulk.modal.applying": "Übernehme …",
"admin.approval_policies.bulk.modal.done": "Übernommen",
"admin.approval_policies.bulk.modal.writes_label": "Schreibvorgänge",
"admin.approval_policies.bulk.modal.targets_label": "Projekte",
"inbox.empty.admin_nudge.title": "Noch keine Genehmigungspflichten konfiguriert?",
"inbox.empty.admin_nudge.body": "Lege fest, welche Lifecycle-Events 4-Augen-Prüfung erfordern.",
"inbox.empty.admin_nudge.cta": "Genehmigungspflichten konfigurieren",
"inbox.title.feed": "Inbox — Paliad",
"inbox.heading.feed": "Inbox",
"inbox.subtitle.feed": "Neuigkeiten zu Ihren Projekten und offene Genehmigungen.",
"inbox.action.mark_all_seen": "Alles als gelesen markieren",
"inbox.action.open": "Öffnen",
"inbox.empty.feed": "Keine Neuigkeiten in den letzten 30 Tagen.",
"views.bar.label.unread_only": "Lesestatus",
"views.bar.unread_only.on": "Nur ungelesen",
"views.bar.unread_only.off": "Alle",
"views.bar.label.inbox_focus": "Anzeigen",
"views.bar.inbox_focus.alles": "Alles",
"views.bar.inbox_focus.genehmigungen": "Nur Genehmigungen",
"views.bar.inbox_focus.plus_termine": "+ Termine",
"views.bar.inbox_focus.plus_fristen": "+ Fristen",
"deadlines.form.approval_hint": "4-Augen-Prüfung erforderlich",
"appointments.form.approval_hint": "4-Augen-Prüfung erforderlich",
"admin.email_templates.title": "Email-Templates — Paliad",
"admin.email_templates.heading": "Email-Templates",
"admin.email_templates.subtitle": "Vorlagen für Einladungen, Erinnerungen und das Layout-Wrapper anpassen.",
"admin.email_templates.loading": "Lade…",
"admin.email_templates.load_error": "Templates konnten nicht geladen werden.",
"admin.email_templates.back": "← Zurück zur Liste",
"admin.email_templates.lang.de": "Deutsch",
"admin.email_templates.lang.en": "Englisch",
"admin.email_templates.status.default": "Standard",
"admin.email_templates.status.last_modified": "Zuletzt geändert: {date}",
"admin.email_templates.card.invitation.title": "Einladung",
"admin.email_templates.card.invitation.desc": "E-Mail an neue Kolleg:innen, ausgelöst über die Sidebar.",
"admin.email_templates.card.deadline_digest.title": "Fristen-Sammelmail",
"admin.email_templates.card.deadline_digest.desc": "Tägliche Morgen- und Abend-Mail mit überfälligen, heute fälligen und kommenden Fristen.",
"admin.email_templates.card.base.title": "Layout-Wrapper",
"admin.email_templates.card.base.desc": "Geteilter HTML-Rahmen mit Header und Footer, der alle E-Mails umschliesst.",
"admin.email_templates.editor.title": "Email-Template bearbeiten — Paliad",
"admin.email_templates.editor.heading": "Email-Template bearbeiten",
"admin.email_templates.editor.heading_for": "{title} — {lang}",
"admin.email_templates.editor.is_default": "Aktuell wird der Standard verwendet.",
"admin.email_templates.editor.last_modified": "Zuletzt geändert: {date}",
"admin.email_templates.editor.subject": "Betreff",
"admin.email_templates.editor.body": "HTML-Body",
"admin.email_templates.editor.note_optional": "Notiz (optional)",
"admin.email_templates.editor.note_placeholder": "z.B. Korrektur nach Anwalts-Feedback",
"admin.email_templates.editor.variables": "Verfügbare Variablen",
"admin.email_templates.editor.preview": "Vorschau",
"admin.email_templates.editor.preview_refresh": "Vorschau aktualisieren",
"admin.email_templates.editor.preview_error": "Vorschau fehlgeschlagen.",
"admin.email_templates.editor.parse_error": "Template-Fehler:",
"admin.email_templates.editor.save": "Speichern",
"admin.email_templates.editor.save_ok": "Gespeichert.",
"admin.email_templates.editor.save_error": "Speichern fehlgeschlagen.",
"admin.email_templates.editor.reset": "Auf Standard zurücksetzen",
"admin.email_templates.editor.reset_confirm": "Wirklich auf den Standard zurücksetzen?",
"admin.email_templates.editor.reset_ok": "Auf Standard zurückgesetzt.",
"admin.email_templates.editor.reset_error": "Zurücksetzen fehlgeschlagen.",
"admin.email_templates.editor.versions": "Versionen",
"admin.email_templates.editor.versions_empty": "Keine Versionen.",
"admin.email_templates.editor.restore": "Wiederherstellen",
"admin.email_templates.editor.restore_confirm": "Diese Version wiederherstellen?",
"admin.email_templates.editor.restore_ok": "Version wiederhergestellt.",
"admin.email_templates.editor.restore_error": "Wiederherstellen fehlgeschlagen.",
"admin.email_templates.editor.dirty_warn": "Ungespeicherte Änderungen verwerfen?",
"admin.email_templates.editor.unknown_key": "Unbekannter Template-Schlüssel.",
"admin.email_templates.editor.slot.morning": "Morgen-Slot",
"admin.email_templates.editor.slot.evening": "Abend-Slot",
"admin.team.title": "Team-Verwaltung — Paliad",
"admin.team.heading": "Team-Verwaltung",
"admin.team.subtitle": "Alle Paliad-Konten anzeigen, bearbeiten oder hinzufügen.",
"admin.team.search.placeholder": "Nach Name oder E-Mail suchen…",
"admin.team.add.full": "Konto direkt anlegen",
"admin.team.add.direct": "Bestehendes Konto onboarden",
"admin.team.add.invite": "Neue:n Kolleg:in einladen",
"admin.team.add_full.title": "Konto direkt anlegen",
"admin.team.add_full.body": "Legt sowohl das Login-Konto als auch das Paliad-Profil an. Die neue Person erhält eine E-Mail mit einem Link, über den sie ein Passwort setzt.",
"admin.team.add_full.email": "E-Mail",
"admin.team.add_full.name": "Anzeigename",
"admin.team.add_full.office": "Standort",
"admin.team.add_full.profession": "Profession",
"admin.team.add_full.job_title": "Berufsbezeichnung",
"admin.team.add_full.lang": "Sprache",
"admin.team.add_full.send_welcome": "Willkommens-E-Mail mit Login-Link senden",
"admin.team.add_full.cancel": "Abbrechen",
"admin.team.add_full.submit": "Anlegen",
"admin.team.add_full.feedback.added": "Konto angelegt.",
"admin.team.add_full.error.unavailable": "Add-User-Pfad ist nicht konfiguriert (SUPABASE_SERVICE_ROLE_KEY fehlt am Server).",
"admin.team.add_full.error.email_exists": "Es existiert bereits ein Konto für diese E-Mail — bitte 'Bestehendes Konto onboarden' verwenden.",
"admin.team.add_full.error.generic": "Konto konnte nicht angelegt werden.",
"admin.team.loading": "Lade…",
"admin.team.empty": "Keine Treffer.",
"admin.team.error.forbidden": "Zugriff nur für Admins.",
"admin.team.col.name": "Name",
"admin.team.col.email": "E-Mail",
"admin.team.col.office": "Standort",
"admin.team.col.job_title": "Berufsbezeichnung",
"admin.team.col.profession": "Profession",
"admin.team.col.profession.none": "(extern)",
"admin.team.col.profession.none.hint": "Keine Profession gesetzt — keine 4-Augen-Befugnis.",
"admin.team.col.permission": "Berechtigung",
"admin.team.col.additional": "Weitere Standorte",
"admin.team.col.lang": "Sprache",
"admin.team.col.created": "Angelegt",
"admin.team.col.actions": "Aktionen",
"admin.team.row.edit": "Bearbeiten",
"admin.team.row.delete": "Löschen",
"admin.team.row.save": "Speichern",
"admin.team.row.cancel": "Abbrechen",
"admin.team.confirm.delete": "{name} wirklich löschen? Diese Aktion ist endgültig.",
"admin.team.feedback.saved": "Gespeichert.",
"admin.team.feedback.deleted": "Gelöscht.",
"admin.team.feedback.added": "Konto onboardet.",
"admin.team.direct_add.title": "Bestehendes Konto onboarden",
"admin.team.direct_add.body": "Diese Auswahl zeigt Konten, die sich angemeldet haben, aber noch kein Profil ausgefüllt haben.",
"admin.team.direct_add.email": "E-Mail",
"admin.team.direct_add.email.placeholder": "Bitte auswählen…",
"admin.team.direct_add.empty": "Keine offenen Konten.",
"admin.team.direct_add.name": "Anzeigename",
"admin.team.direct_add.office": "Standort",
"admin.team.direct_add.job_title": "Berufsbezeichnung",
"admin.team.permission.standard": "Standard",
"admin.team.permission.global_admin": "Globaler Admin",
"admin.team.permission.last_admin": "Der letzte globale Admin kann nicht degradiert werden.",
"admin.team.direct_add.cancel": "Abbrechen",
"admin.team.direct_add.submit": "Anlegen",
// Admin audit log (t-paliad-071)
"nav.admin.audit": "Audit-Log",
"nav.admin.partner_units": "Partner Units",
// Admin Backup Mode (t-paliad-246 / m/paliad#77)
"nav.admin.backups": "Backups",
"admin.backups.title": "Backups — Paliad",
"admin.backups.heading": "Backups",
"admin.backups.subtitle": "Vollständige Snapshots aller Daten — manuell oder zeitgesteuert.",
"admin.backups.run_now": "Backup jetzt erstellen",
"admin.backups.running": "Läuft …",
"admin.backups.success": "Backup erfolgreich erstellt.",
"admin.backups.empty": "Noch keine Backups vorhanden.",
"admin.backups.loading": "Lade …",
"admin.backups.col.started": "Erstellt",
"admin.backups.col.kind": "Auslöser",
"admin.backups.col.status": "Status",
"admin.backups.col.requested_by": "Angefordert von",
"admin.backups.col.size": "Größe",
"admin.backups.col.rows": "Sheets",
"admin.backups.col.actions": "Aktion",
"admin.backups.kind.scheduled": "Geplant",
"admin.backups.kind.on_demand": "Manuell",
"admin.backups.status.running": "Läuft …",
"admin.backups.status.done": "✓ Fertig",
"admin.backups.status.failed": "✗ Fehlgeschlagen",
"admin.backups.download": "Download",
"admin.backups.footer.note": "Geplante Backups werden in einer späteren Slice aktiviert. Manuelle Backups stehen jetzt zur Verfügung.",
"admin.audit.title": "Audit-Log — Paliad",
"admin.audit.heading": "Audit-Log",
"admin.audit.subtitle": "Globale Zeitleiste über Projekt-, CalDAV-, Reminder- und Partner-Unit-Ereignisse.",
"admin.audit.source.partner_unit_events": "Partner Units",
"admin.partner_units.title": "Partner Units — Paliad",
"admin.partner_units.heading": "Partner Units",
"admin.partner_units.subtitle": "Strukturelle Partnereinheiten verwalten und Mitglieder zuordnen.",
"admin.partner_units.loading": "Lade…",
"admin.partner_units.empty": "Noch keine Partner Units angelegt.",
"admin.partner_units.new": "Neue Partner Unit",
"admin.partner_units.new.heading": "Partner Unit anlegen",
"admin.partner_units.edit.heading": "Partner Unit bearbeiten",
"admin.partner_units.create": "Speichern",
"admin.partner_units.cancel": "Abbrechen",
"admin.partner_units.col.name": "Name",
"admin.partner_units.col.office": "Büro",
"admin.partner_units.col.lead": "Lead",
"admin.partner_units.col.members": "Mitglieder",
"admin.partner_units.col.actions": "Aktionen",
"admin.partner_units.action.members": "Mitglieder",
"admin.partner_units.action.edit": "Bearbeiten",
"admin.partner_units.action.delete": "Löschen",
"admin.partner_units.confirm_delete": "Partner Unit \"{name}\" wirklich löschen?",
"admin.partner_units.error.name_required": "Name erforderlich",
"admin.partner_units.error.user_required": "Benutzer auswählen",
"admin.partner_units.feedback.created": "Angelegt.",
"admin.partner_units.feedback.updated": "Aktualisiert.",
"admin.partner_units.feedback.deleted": "Gelöscht.",
"admin.partner_units.feedback.role_updated": "Rolle aktualisiert.",
"admin.partner_units.member.heading": "Mitglieder verwalten",
"admin.partner_units.member.empty": "Noch keine Mitglieder.",
"admin.partner_units.member.add": "Mitglied hinzufügen",
"admin.partner_units.member.add_btn": "Hinzufügen",
"admin.partner_units.member.remove": "Entfernen",
"admin.partner_units.member.confirm_remove": "Mitglied entfernen?",
"admin.partner_units.member.placeholder": "Name oder E-Mail",
"admin.partner_units.member.role": "Rolle",
"admin.audit.loading": "Lade…",
"admin.audit.empty": "Keine Ereignisse für die gewählten Filter.",
"admin.audit.loadmore": "Weitere laden",
"admin.audit.error.forbidden": "Zugriff nur für Admins.",
"admin.audit.error.unavailable": "Audit-Service nicht verfügbar.",
"admin.audit.search.placeholder": "Subjekt, Beschreibung, Ereignistyp …",
"admin.audit.filter.source": "Quelle",
"admin.audit.filter.range": "Zeitraum",
"admin.audit.filter.from": "Von",
"admin.audit.filter.to": "Bis",
"admin.audit.filter.search": "Suche",
"admin.audit.range.24h": "Letzte 24h",
"admin.audit.range.7d": "Letzte 7 Tage",
"admin.audit.range.30d": "Letzte 30 Tage",
"admin.audit.range.custom": "Benutzerdefiniert",
"admin.audit.range.all": "Alles",
"admin.audit.source.all": "Alle Quellen",
"admin.audit.source.project_events": "Projekt-Ereignisse",
"admin.audit.source.caldav_sync_log": "CalDAV-Sync",
"admin.audit.source.reminder_log": "Reminder",
"admin.audit.col.time": "Zeit",
"admin.audit.col.source": "Quelle",
"admin.audit.col.event": "Ereignis",
"admin.audit.col.actor": "Akteur",
"admin.audit.col.subject": "Subjekt",
"admin.audit.col.description": "Beschreibung",
"admin.audit.event.caldav_synced": "CalDAV-Sync erfolgreich",
"admin.audit.event.caldav_sync_error": "CalDAV-Sync-Fehler",
"admin.audit.event.morning_digest": "Morgen-Digest gesendet",
"admin.audit.event.evening_digest": "Abend-Digest gesendet",
"admin.audit.event.deadline_reminder": "Fristerinnerung gesendet",
"admin.audit.event.due_today": "Fälligkeits-Erinnerung gesendet",
"admin.audit.event.weekly": "Wochen-Digest gesendet",
// Not-found (404) page
"notfound.title": "Seite nicht gefunden — Paliad",
"notfound.heading": "Seite nicht gefunden",
"notfound.lede": "Diese Seite existiert nicht oder wurde verschoben.",
"notfound.cta": "Zurück zum Dashboard",
// t-paliad-088: Event Types — picker, multi-select filter, add modal.
"common.cancel": "Abbrechen",
"modal.close.label": "Schließen",
"event_types.cat.submission": "Eingaben",
"event_types.cat.decision": "Entscheidungen",
"event_types.cat.order": "Anordnungen",
"event_types.cat.service": "Zustellungen",
"event_types.cat.fee": "Gebühren",
"event_types.cat.hearing": "Verhandlungen",
"event_types.cat.other": "Sonstiges",
"event_types.picker.search": "Suchen oder tippen…",
"event_types.picker.add": "+ Neuen Typ hinzufügen…",
"event_types.picker.remove": "Entfernen",
"event_types.picker.no_match": "Keine Treffer.",
"event_types.picker.browse_all": "Alle anzeigen",
"event_types.browse.title": "Event-Typen wählen",
"event_types.browse.search": "In allen Typen suchen…",
"event_types.browse.empty": "Keine Treffer.",
"event_types.browse.apply": "Übernehmen",
"event_types.browse.cancel": "Abbrechen",
"event_types.browse.selected_count": "{n} ausgewählt",
"event_types.browse.jurisdiction.none": "Allgemein",
"event_types.browse.jurisdiction.all": "Alle Gerichte",
"event_types.browse.jurisdiction.filter_label": "Nach Gerichtsart filtern",
"event_types.filter.all": "Alle Typen",
"event_types.filter.untyped": "— Ohne Typ —",
"event_types.filter.search": "Typ suchen…",
"event_types.filter.reset": "Zurücksetzen",
"event_types.filter.apply": "Anwenden",
"event_types.filter.n_selected": "{n} Typen",
"event_types.add.title": "Neuen Event-Typ anlegen",
"event_types.add.label_de": "Bezeichnung (DE) *",
"event_types.add.label_en": "Bezeichnung (EN, optional)",
"event_types.add.category": "Kategorie *",
"event_types.add.jurisdiction": "Jurisdiktion (optional)",
"event_types.add.jurisdiction.none": "—",
"event_types.add.jurisdiction.any": "Allgemein",
"event_types.add.firm_wide": "Firmenweit verfügbar machen",
"event_types.add.firm_wide.hint": "Firmenweite Typen sind für alle Kolleg:innen sichtbar. Admins können sie archivieren.",
"event_types.add.submit": "Anlegen",
"event_types.add.duplicate_warn": "Existiert vermutlich schon:",
"event_types.add.error.required": "Bezeichnung (DE) ist Pflichtfeld.",
"event_types.add.error.slug_taken": "Ein Typ mit diesem Namen existiert bereits.",
"event_types.add.error.generic": "Fehler beim Anlegen. Bitte erneut versuchen.",
"deadlines.field.event_type": "Typ (optional)",
"deadlines.col.event_type": "Typ",
"deadlines.filter.event_type": "Typ",
"agenda.filter.event_type": "Typ",
// t-paliad-089: Admin Event-Type moderation panel.
"nav.admin.event_types": "Event-Typen",
"admin.card.event_types.title": "Event-Typen",
"admin.card.event_types.desc": "Firmenweite Event-Typen moderieren: archivieren, zusammenführen, befördern.",
"admin.event_types.title": "Event-Typen — Paliad",
"admin.event_types.heading": "Event-Typen",
"admin.event_types.subtitle": "Firmenweite Event-Typen moderieren: archivieren, zusammenführen, private Typen befördern.",
"admin.event_types.section.firm_wide": "Firmenweite Typen",
"admin.event_types.section.private_pending": "Private Typen (zur Beförderung)",
"admin.event_types.section.private_pending.hint": "Private Typen anderer Kolleg:innen, sortiert nach Häufigkeit. Befördern macht den Typ firmenweit sichtbar.",
"admin.event_types.search.placeholder": "Bezeichnung, Slug oder Author suchen…",
"admin.event_types.show_archived": "Archivierte anzeigen",
"admin.event_types.loading": "Lade…",
"admin.event_types.empty": "Keine Treffer.",
"admin.event_types.private.empty": "Keine privaten Typen.",
"admin.event_types.col.label": "Bezeichnung",
"admin.event_types.col.category": "Kategorie",
"admin.event_types.col.jurisdiction": "Jurisdiktion",
"admin.event_types.col.author": "Author",
"admin.event_types.col.created": "Erstellt",
"admin.event_types.col.usage": "Verwendung",
"admin.event_types.col.actions": "Aktionen",
"admin.event_types.row.archived": "Archiviert",
"admin.event_types.author.system": "System",
"admin.event_types.author.unknown": "Unbekannt",
"admin.event_types.action.archive": "Archivieren",
"admin.event_types.action.archive_selected": "Ausgewählte archivieren",
"admin.event_types.action.merge_selected": "Zusammenführen…",
"admin.event_types.action.restore": "Wiederherstellen",
"admin.event_types.action.promote": "Befördern",
"admin.event_types.bulk.count": "{n} ausgewählt",
"admin.event_types.confirm.archive": "„{label}\" wirklich archivieren?",
"admin.event_types.confirm.bulk_archive": "{n} Typen wirklich archivieren?",
"admin.event_types.confirm.promote": "„{label}\" firmenweit verfügbar machen?",
"admin.event_types.confirm.merge": "„{winner}\" als Gewinner: {n} Verlierer-Typ(en) werden archiviert, {usage} Junction-Eintrag/-träge umgeleitet. Fortfahren?",
"admin.event_types.feedback.archived": "{n} archiviert.",
"admin.event_types.feedback.archive_error": "Archivierung fehlgeschlagen.",
"admin.event_types.feedback.restored": "Wiederhergestellt.",
"admin.event_types.feedback.restore_error": "Wiederherstellung fehlgeschlagen.",
"admin.event_types.feedback.promoted": "Befördert.",
"admin.event_types.feedback.promote_error": "Beförderung fehlgeschlagen.",
"admin.event_types.feedback.merged": "Zusammengeführt.",
"admin.event_types.feedback.merge_error": "Zusammenführung fehlgeschlagen.",
"admin.event_types.error.forbidden": "Zugriff nur für Admins.",
"admin.event_types.merge.title": "Typen zusammenführen",
"admin.event_types.merge.body": "Wählen Sie den Gewinner-Typ. Die Junction-Einträge der Verlierer werden auf den Gewinner umgeleitet, anschließend werden die Verlierer archiviert.",
"admin.event_types.merge.submit": "Zusammenführen",
// Approval workflow (t-paliad-138).
"approvals.title": "Genehmigungen",
"approvals.heading": "Genehmigungen",
"approvals.subtitle": "4-Augen-Prüfung für Fristen und Termine.",
"approvals.tab.pending_mine": "Zur Genehmigung",
"approvals.tab.mine": "Meine Anfragen",
"approvals.empty.pending_mine": "Aktuell nichts zu genehmigen.",
"approvals.empty.mine": "Sie haben keine offenen Anfragen.",
"approvals.lifecycle.create": "Erstellung",
"approvals.lifecycle.update": "Änderung",
"approvals.lifecycle.complete": "Erledigung",
"approvals.lifecycle.delete": "Löschung",
"approvals.entity.deadline": "Frist",
"approvals.entity.appointment": "Termin",
"approvals.required_role.lead": "Lead",
"approvals.required_role.of_counsel": "Of Counsel",
"approvals.required_role.associate": "Associate",
"approvals.required_role.senior_pa": "Senior PA",
"approvals.required_role.pa": "PA",
"approvals.status.pending": "Offen",
"approvals.status.approved": "Genehmigt",
"approvals.status.rejected": "Abgelehnt",
"approvals.status.revoked": "Zurückgezogen",
"approvals.status.superseded": "Ersetzt",
"approvals.status.changes_requested": "Abgelehnt mit Vorschlag",
"approvals.action.approve": "Genehmigen",
"approvals.action.reject": "Ablehnen",
"approvals.action.revoke": "Zurückziehen",
"approvals.action.suggest_changes": "Änderungen vorschlagen",
"approvals.note.placeholder": "Optionale Begründung...",
"approvals.suggest.modal_title": "Änderungen vorschlagen",
"approvals.suggest.intro": "Bearbeite die vorgeschlagenen Werte und/oder hinterlasse einen Kommentar. Dein Vorschlag wird als neue Genehmigungsanfrage eingestellt und kann vom ursprünglichen Antragsteller (oder einer anderen berechtigten Person) genehmigt werden.",
"approvals.suggest.note_label": "Kommentar zum Vorschlag",
"approvals.suggest.note_placeholder": "Warum sollen die Werte angepasst werden?",
"approvals.suggest.submit": "Vorschlag einreichen",
"approvals.suggest.cancel": "Abbrechen",
"approvals.suggest.submit_disabled_hint": "Bitte mindestens ein Feld ändern oder einen Kommentar hinterlassen.",
"approvals.suggest.next_request_link": "→ Neuer Vorschlag von {name}",
"approvals.suggest.unsupported_lifecycle": "Änderungen vorschlagen ist nur für Update-Anfragen möglich.",
"approvals.suggest.section.editable": "Felder",
"approvals.suggest.section.event_type_rule": "Verfahrenshandlung (Typ + Regel)",
"approvals.suggest.section.context": "Kontext",
"approvals.suggest.context.project": "Projekt",
"approvals.suggest.context.requester": "Eingereicht von",
"approvals.suggest.context.requested_at": "Eingereicht am",
"approvals.suggest.context.approval_status": "Genehmigungsstatus",
"approvals.suggest.event_type_picker_unavailable": "Ereignistypen konnten nicht geladen werden.",
"approvals.suggest.field.original_due_date": "Ursprüngliches Fälligkeitsdatum",
"approvals.suggest.field.warning_date": "Warndatum",
"approvals.suggest.field.rule_code": "Regel-Zitat",
"approvals.suggest.field.description": "Beschreibung",
"approvals.requested_by": "Eingereicht von",
"approvals.decided_by": "Entschieden von",
"approvals.decision_kind.peer": "Genehmigt durch Teammitglied",
"approvals.decision_kind.admin_override": "Admin-Sign-off",
"approvals.decision_kind.derived_peer": "Genehmigt durch abgeleitetes Mitglied (Partner Unit)",
"approvals.error.self_approval": "Eigengenehmigung nicht zulässig.",
"approvals.error.not_authorized": "Sie haben nicht die erforderliche Rolle.",
"approvals.error.no_qualified_approver": "Kein qualifizierter Approver verfügbar — bitte einen Approver ins Projekt-Team aufnehmen oder Admin kontaktieren.",
"approvals.error.concurrent_pending": "Es liegt bereits eine Genehmigungsanfrage auf diesem Eintrag vor.",
"approvals.error.awaiting_approval": "Diese Anforderung wartet auf Genehmigung.",
"approvals.error.request_not_pending": "Diese Anfrage ist nicht mehr offen.",
"approvals.error.suggestion_requires_change": "Ein Vorschlag braucht entweder geänderte Werte oder einen Kommentar.",
"approvals.error.suggestion_lifecycle_invalid": "Änderungen vorschlagen ist nur für Update-Anfragen möglich.",
"approvals.disabled.self_approval": "Du kannst eigene Anträge nicht genehmigen",
"approvals.disabled.not_authorized": "Du hast keine Genehmigungsberechtigung für diesen Antrag",
"approvals.disabled.revoke_not_requester": "Nur der Antragsteller kann zurückziehen",
"approvals.disabled.suggest_lifecycle": "Änderungen vorschlagen ist nur für Update-Anfragen möglich",
"approvals.pending.badge": "Wartet auf Genehmigung",
"approvals.withdraw.cta": "Genehmigungsanfrage zurückziehen",
"approvals.withdraw.confirm": "Genehmigungsanfrage wirklich zurückziehen?",
"approvals.withdraw.error": "Fehler beim Zurückziehen",
"approvals.withdraw.cancel": "Abbrechen",
"approvals.withdraw.modal.title": "Genehmigungsanfrage zurückziehen?",
"approvals.withdraw.primary.label": "Termin bearbeiten",
"approvals.withdraw.destructive.label": "Endgültig zurückziehen und löschen",
"approvals.withdraw.lead.create.deadline": "Wenn Sie die Anfrage zurückziehen, wird die Frist gelöscht.",
"approvals.withdraw.lead.create.appointment": "Wenn Sie die Anfrage zurückziehen, wird der Termin gelöscht.",
"approvals.withdraw.lead.update": "Wenn Sie die Anfrage zurückziehen, werden die vorgeschlagenen Änderungen verworfen — der Eintrag kehrt in den Zustand vor Ihrer Bearbeitung zurück.",
"approvals.withdraw.lead.delete": "Wenn Sie die Löschanfrage zurückziehen, bleibt der Eintrag bestehen.",
"approvals.withdraw.sub.create": "Alternativ können Sie den Eintrag stattdessen bearbeiten. Die Anfrage bleibt offen und der Genehmiger sieht Ihre neuen Werte.",
"approvals.withdraw.sub.update": "Alternativ können Sie Ihre Änderungen bearbeiten und neu absenden. Die Anfrage bleibt offen.",
"approvals.withdraw.sub.delete": "Sind Sie sicher, dass Sie die Löschanfrage zurückziehen möchten?",
"approvals.pending_create.label": "Erstellung wartet auf Genehmigung",
"approvals.pending_update.label": "Änderung wartet auf Genehmigung",
"approvals.pending_complete.label": "Erledigung wartet auf Genehmigung",
"approvals.pending_delete.label": "Zur Löschung beantragt",
"approvals.diff.before": "Vorher",
"approvals.diff.after": "Nachher",
"approvals.policies.title": "Genehmigungsrichtlinien",
"approvals.policies.subtitle": "Welche Lebenszyklus-Schritte benötigen 4-Augen-Prüfung in diesem Projekt?",
"approvals.policies.column.event": "Ereignis",
"approvals.policies.column.deadline": "Frist",
"approvals.policies.column.appointment": "Termin",
"approvals.policies.no_approval": "Keine Genehmigung erforderlich",
"approvals.policies.copy_parent": "Aus Eltern-Projekt übernehmen",
"approvals.policies.set_all_associate": "Alle auf Associate setzen",
// t-paliad-144 — Custom Views
"nav.group.user_views": "Meine Ansichten",
"nav.user_views.new": "Neue Ansicht",
"views.title": "Ansichten — Paliad",
"views.heading": "Ansichten",
"views.subtitle": "Eigene Ansichten über Ihre Daten — Filter und Darstellung speicherbar.",
"views.loading": "Lädt …",
"views.shape.list": "Liste",
"views.shape.cards": "Karten",
"views.shape.calendar": "Kalender",
"views.shape.timeline": "Timeline",
"views.timeline.caveat.body": "Custom Views zeigen nur eingetretene Ereignisse. Für prognostizierte Fristen das Projekt-Chart öffnen.",
"views.timeline.zoom.label": "Zoom",
"views.timeline.zoom.in": "Heranzoomen",
"views.timeline.zoom.out": "Herauszoomen",
"views.timeline.zoom.1y": "±1 J.",
"views.timeline.zoom.2y": "±2 J.",
"views.timeline.zoom.all": "Alles",
"views.save_as": "Als Ansicht speichern",
"views.action.edit": "Bearbeiten",
"views.empty.title": "Keine Einträge gefunden.",
"views.error.back": "Zurück zur Ansichten-Übersicht",
"views.error.not_found": "Ansicht nicht gefunden.",
"views.error.network": "Netzwerkfehler — bitte erneut versuchen.",
"views.toast.inaccessible_one": "1 Projekt in dieser Ansicht ist nicht mehr sichtbar.",
"views.toast.inaccessible_n": "{n} Projekte in dieser Ansicht sind nicht mehr sichtbar.",
"views.calendar.mobile_fallback": "Kalender-Ansicht ist auf grossen Bildschirmen am besten.",
"views.onboarding.title": "Eigene Ansichten — was ist das?",
"views.onboarding.body": "Eine Ansicht ist eine gespeicherte Filterkombination — z.B. „Fristen meiner Projekte in den nächsten 14 Tagen“. Ansichten erscheinen als eigene Buttons in der Sidebar.",
"views.onboarding.create": "Beispiel-Ansicht erstellen",
"views.source.deadline": "Fristen",
"views.source.appointment": "Termine",
"views.source.project_event": "Projekt-Verlauf",
"views.source.approval_request": "Genehmigungen",
"views.kind.deadline": "Frist",
"views.kind.appointment": "Termin",
"views.kind.project_event": "Verlauf",
"views.kind.approval_request": "Genehmigung",
"views.scope.all_visible": "Alle sichtbaren",
"views.scope.my_subtree": "Mein Teilbaum",
"views.scope.explicit": "Bestimmte Projekte",
"views.scope.personal_only": "Nur persönliche",
"views.horizon.next_1d": "Morgen",
"views.horizon.next_7d": "Nächste 7 Tage",
"views.horizon.next_14d": "Nächste 14 Tage",
"views.horizon.next_30d": "Nächste 30 Tage",
"views.horizon.next_90d": "Nächste 90 Tage",
"views.horizon.next_all": "Ganze Zukunft",
"views.horizon.past_1d": "Letzter Tag",
"views.horizon.past_7d": "Letzte 7 Tage",
"views.horizon.past_14d": "Letzte 14 Tage",
"views.horizon.past_30d": "Letzte 30 Tage",
"views.horizon.past_90d": "Letzte 90 Tage",
"views.horizon.past_all": "Ganze Vergangenheit",
"views.horizon.any": "Beliebig",
"views.horizon.all": "Komplett (alle Daten)",
"views.horizon.custom": "Benutzerdefiniert",
"views.density.comfortable": "Bequem",
"views.density.compact": "Kompakt",
"views.col.date": "Datum",
"views.col.time": "Wann",
"views.col.title": "Titel",
"views.col.project": "Projekt",
"views.col.actor": "Akteur",
"views.col.status": "Status",
"views.col.rule": "Regel",
"views.col.event_type": "Typ",
"views.col.location": "Ort",
"views.col.appointment_type": "Termin-Typ",
"views.col.approval_status": "Genehmigung",
"views.col.decided_by": "Entschieden von",
"views.col.kind": "Art",
"views.editor.title": "Ansicht bearbeiten — Paliad",
"views.editor.heading.new": "Neue Ansicht",
"views.editor.heading.edit": "Ansicht bearbeiten",
"views.editor.subtitle": "Wählen Sie Quellen, Filter und Darstellung. Änderungen speichern Sie unten.",
"views.editor.section.identity": "Bezeichnung",
"views.editor.section.sources": "Quellen",
"views.editor.section.scope": "Geltungsbereich",
"views.editor.section.time": "Zeitraum",
"views.editor.section.render": "Darstellung",
"views.editor.field.name": "Name",
"views.editor.field.slug": "Slug (URL)",
"views.editor.field.icon": "Icon",
"views.editor.field.show_count": "Treffer-Anzahl in der Sidebar anzeigen",
"views.editor.field.scope_mode": "Projekte",
"views.editor.field.personal_only": "Nur persönliche",
"views.editor.field.horizon": "Horizont",
"views.editor.field.shape": "Form",
"views.editor.field.density": "Dichte",
"views.editor.hint.slug": "Kleinbuchstaben, Ziffern und Bindestriche — nicht reservierte Wörter.",
"views.editor.hint.sources": "Welche Datenarten zeigt diese Ansicht?",
"views.editor.icon.default": "Standard (Ordner)",
"views.editor.icon.clock": "Uhr",
"views.editor.icon.calendar": "Kalender",
"views.editor.icon.bell": "Glocke",
"views.editor.icon.folder": "Ordner",
"views.editor.icon.users": "Personen",
"views.editor.icon.building": "Gebäude",
"views.editor.save": "Speichern",
"views.editor.cancel": "Abbrechen",
"views.editor.delete": "Löschen",
"views.editor.confirm_delete": "Diese Ansicht wirklich löschen?",
"views.editor.error.name_required": "Name ist erforderlich.",
"views.editor.error.slug_format": "Slug darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten und muss mit einem Buchstaben oder einer Ziffer beginnen.",
"views.editor.error.sources_required": "Mindestens eine Quelle wählen.",
"views.editor.error.load_failed": "Ansicht konnte nicht geladen werden.",
"views.editor.error.delete_failed": "Ansicht konnte nicht gelöscht werden.",
// Universal FilterBar — t-paliad-163. Mounted on every list-shaped
// surface (starts with /inbox in Phase 1; /agenda + /events follow).
"views.bar.label.time": "Zeitraum",
"views.bar.label.personal": "Eigene",
"views.bar.label.approval_role": "Sicht",
"views.bar.label.approval_status": "Status",
"views.bar.label.approval_entity": "Art",
"views.bar.label.deadline_status": "Frist-Status",
"views.bar.label.appointment_type": "Termin-Typ",
"views.bar.label.project_event_kind": "Ereignis",
"views.bar.label.timeline_status": "Timeline-Status",
"views.bar.label.timeline_track": "Track",
"views.bar.timeline_status.done": "Erledigt",
"views.bar.timeline_status.open": "Offen",
"views.bar.timeline_status.overdue": "Überfällig",
"views.bar.timeline_status.predicted": "Voraussichtlich",
"views.bar.timeline_status.predicted_overdue": "Überfällig (vorhergesagt)",
"views.bar.timeline_status.court_set": "Gerichtsdatum",
"views.bar.timeline_status.off_script": "Eigener Eintrag",
"views.bar.timeline_status.macro.future": "Zukunft anzeigen",
"views.bar.timeline_status.macro.past": "Nur vergangenes",
"views.bar.timeline_track.parent": "Hauptverfahren",
"views.bar.timeline_track.counterclaim": "Widerklage",
"views.bar.timeline_track.off_script": "Off-Script",
"views.bar.label.shape": "Darstellung",
"views.bar.label.density": "Dichte",
"views.bar.label.sort": "Sortierung",
"views.bar.common.all": "Alle",
// views.bar.time.* keys retired in t-paliad-248 — the filter-bar time
// axis now mounts the symmetric date-range picker, whose labels live
// under date_range.horizon.* (see end of this dict). The picker reuses
// views.bar.label.time as the closed-button prefix.
"views.bar.personal.on": "Nur eigene",
"views.bar.approval_role.approver_eligible": "Zur Genehmigung",
"views.bar.approval_role.self_requested": "Eigene Anfragen",
"views.bar.approval_role.any_visible": "Alle sichtbaren",
"views.bar.approval_status.pending": "Wartend",
"views.bar.approval_status.approved": "Genehmigt",
"views.bar.approval_status.rejected": "Abgelehnt",
"views.bar.approval_status.revoked": "Zurückgezogen",
"views.bar.approval_status.changes_requested": "Mit Vorschlag",
"views.bar.approval_entity.deadline": "Frist",
"views.bar.approval_entity.appointment": "Termin",
"views.bar.deadline_status.pending": "Offen",
"views.bar.deadline_status.completed": "Erledigt",
"views.bar.appointment_type.hearing": "Verhandlung",
"views.bar.appointment_type.meeting": "Besprechung",
"views.bar.appointment_type.consultation": "Beratung",
"views.bar.appointment_type.deadline_hearing": "Mündliche Verhandlung",
"views.bar.shape.list": "Liste",
"views.bar.shape.cards": "Karten",
"views.bar.shape.calendar": "Kalender",
"views.bar.density.comfortable": "Bequem",
"views.bar.density.compact": "Kompakt",
"views.bar.sort.date_asc": "Datum aufsteigend",
"views.bar.sort.date_desc": "Datum absteigend",
"views.bar.action.reset": "Zurücksetzen",
"views.bar.action.save_as_view": "Als Sicht speichern",
"views.bar.save.heading": "Sicht speichern",
"views.bar.save.field.name": "Name",
"views.bar.save.field.slug": "Slug",
"views.bar.save.field.slug_hint": "Wird Teil der URL: /views/<slug>",
"views.bar.save.field.show_count": "Anzahl in der Sidebar zeigen",
"views.bar.save.cancel": "Abbrechen",
"views.bar.save.confirm": "Speichern",
"views.bar.save.error.name_required": "Bitte Namen vergeben.",
"views.bar.save.error.slug_format": "Slug muss mit einem Buchstaben oder einer Ziffer beginnen und darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.",
"views.bar.save.error.slug_taken": "Dieser Slug ist bereits vergeben.",
"views.bar.save.error.network": "Netzwerkfehler — bitte erneut versuchen.",
// t-paliad-192 Slice 11b — Admin rule-editor UI.
// t-paliad-262 Slice A — "Regel" relabelled as "Verfahrensschritt".
// t-paliad-305 Slice B.6 (2026-05-26) — canonical URL moved to
// `/admin/procedural-events` (301 redirects from /admin/rules*).
// The i18n keys `admin.rules.*` are kept as the corpus until a
// follow-up slice migrates each reference; canonical
// `admin.procedural_events.*` aliases live after the EN block.
"nav.admin.rules": "Verfahrensschritte verwalten",
"admin.card.rules.title": "Verfahrensschritte verwalten",
"admin.card.rules.desc": "Verfahrensschritte anlegen, bearbeiten, publishen. Audit-Log, Preview, Migration-Export.",
"admin.rules.list.title": "Verfahrensschritte verwalten — Paliad",
"admin.rules.list.heading": "Verfahrensschritte verwalten",
"admin.rules.list.subtitle": "Verfahrensschritte (Schriftsätze, Anhörungen, Entscheidungen, …) anlegen, bearbeiten und freigeben. Lifecycle: draft → published → archived.",
"admin.rules.list.new": "+ Neuer Verfahrensschritt",
"admin.rules.tab.rules": "Regeln",
"admin.rules.tab.orphans": "Orphans",
"admin.rules.loading": "Lade…",
"admin.rules.empty": "Keine Verfahrensschritte für die gewählten Filter.",
"admin.rules.error.load": "Konnte Verfahrensschritte nicht laden.",
"admin.rules.filter.proceeding": "Verfahrenstyp",
"admin.rules.filter.proceeding.any": "Alle",
"admin.rules.filter.trigger": "Trigger-Ereignis",
"admin.rules.filter.trigger.any": "Alle",
"admin.rules.filter.lifecycle": "Lifecycle",
"admin.rules.filter.lifecycle.any": "Alle",
"admin.rules.filter.search": "Suche",
"admin.rules.filter.search.placeholder": "Name, Submission Code, Rechtsgrundlage…",
"admin.rules.col.submission_code": "Code (Verfahrensschritt)",
"admin.rules.col.legal_citation": "Rechtsgrundlage",
"admin.rules.col.name": "Name",
"admin.rules.col.proceeding": "Verfahrenstyp",
"admin.rules.col.priority": "Priorität",
"admin.rules.col.lifecycle": "Lifecycle",
"admin.rules.col.modified": "Zuletzt geändert",
"admin.rules.lifecycle.draft": "Draft",
"admin.rules.lifecycle.published": "Published",
"admin.rules.lifecycle.archived": "Archived",
"admin.rules.priority.mandatory": "Pflicht",
"admin.rules.priority.recommended": "Empfohlen",
"admin.rules.priority.optional": "Optional",
"admin.rules.priority.informational": "Information",
"admin.rules.orphans.subtitle": "Legacy-Deadlines aus dem fuzzy-match Backfill (Slice 10), die nicht eindeutig einer Regel zugeordnet werden konnten. Bitte die richtige Kandidaten-Regel auswählen.",
"admin.rules.orphans.loading": "Lade…",
"admin.rules.orphans.empty": "Keine offenen Orphans. ✔",
"admin.rules.orphans.no_candidates": "Keine Kandidaten gefunden. Bitte Regel manuell anlegen.",
"admin.rules.orphans.field.project": "Projekt",
"admin.rules.orphans.field.proceeding": "Verfahren",
"admin.rules.orphans.field.reason": "Grund",
"admin.rules.orphans.reason.no_match": "Kein Treffer",
"admin.rules.orphans.reason.ambiguous": "Mehrdeutig",
"admin.rules.orphans.reason.no_project": "Ohne Projekt",
"admin.rules.orphans.reason.manual_unbound": "Manuell entkoppelt",
"admin.rules.orphans.resolved": "Orphan zugeordnet.",
"admin.rules.modal.new.title": "Neuen Verfahrensschritt anlegen",
"admin.rules.modal.new.body": "Ein neuer Verfahrensschritt wird als Draft angelegt. Bitte einen Grund (mind. 10 Zeichen) angeben — dieser wandert ins Audit-Log und beim Export in die Migration.",
"admin.rules.modal.resolve.title": "Orphan zuordnen",
"admin.rules.modal.resolve.body": "Bitte einen Grund (mind. 10 Zeichen) angeben. Die Regel-Verknüpfung wird sofort auf der Deadline gespeichert.",
"admin.rules.modal.reason": "Grund",
"admin.rules.modal.reason.placeholder": "z. B. „Neue Regel für RoP.198 nach UPC-Reform 2026...",
"admin.rules.modal.reason.hint": "Mindestens 10 Zeichen.",
"admin.rules.modal.reason.too_short": "Grund muss mindestens 10 Zeichen enthalten.",
"admin.rules.modal.confirm": "Bestätigen",
"admin.rules.modal.field.name": "Name (DE)",
"admin.rules.modal.field.name_en": "Name (EN)",
"admin.rules.modal.field.duration": "Dauer",
"admin.rules.modal.error.name_required": "Bitte Name und Name (EN) angeben.",
"admin.rules.modal.error.create": "Anlegen fehlgeschlagen.",
"admin.rules.modal.error.resolve": "Zuordnung fehlgeschlagen.",
"admin.rules.edit.title": "Verfahrensschritt bearbeiten — Paliad",
"admin.rules.edit.heading.loading": "Verfahrensschritt laden…",
"admin.rules.edit.breadcrumb": "← Verfahrensschritte verwalten",
"admin.rules.edit.error.bad_id": "Ungültige Verfahrensschritt-ID in der URL.",
"admin.rules.edit.error.not_found": "Verfahrensschritt nicht gefunden.",
"admin.rules.edit.error.load": "Konnte Verfahrensschritt nicht laden.",
"admin.rules.edit.section.identity": "Identität",
"admin.rules.edit.section.proceeding": "Verfahren & Trigger",
"admin.rules.edit.section.timing": "Berechnung",
"admin.rules.edit.section.party": "Partei & Ereignis",
"admin.rules.edit.section.display": "Anzeige & Notizen",
"admin.rules.edit.section.lifecycle": "Priorität & Flags",
"admin.rules.edit.section.condition": "Bedingung (condition_expr)",
"admin.rules.edit.field.name": "Name (DE)",
"admin.rules.edit.field.name_en": "Name (EN)",
"admin.rules.edit.field.description": "Beschreibung",
"admin.rules.edit.field.submission_code": "Code (Verfahrensschritt-Identifikator)",
"admin.rules.edit.field.rule_code": "Rechtsgrundlage (Kurzform)",
"admin.rules.edit.field.legal_source": "Rechtsgrundlage (Langform)",
"admin.rules.edit.field.proceeding": "Verfahrenstyp",
"admin.rules.edit.field.proceeding.none": "—",
"admin.rules.edit.field.trigger": "Trigger-Ereignis",
"admin.rules.edit.field.trigger.none": "—",
"admin.rules.edit.field.parent": "Übergeordneter Verfahrensschritt (UUID)",
"admin.rules.edit.field.concept": "Konzept (UUID)",
"admin.rules.edit.field.sequence_order": "Reihenfolge",
"admin.rules.edit.field.duration_value": "Dauer",
"admin.rules.edit.field.duration_unit": "Einheit",
"admin.rules.edit.field.timing": "Timing",
"admin.rules.edit.field.combine_op": "Combine-Op",
"admin.rules.edit.field.alt_duration_value": "Alt-Dauer",
"admin.rules.edit.field.alt_duration_unit": "Alt-Einheit",
"admin.rules.edit.field.alt_rule_code": "Alt-Rule-Code",
"admin.rules.edit.field.anchor_alt": "Alt-Anchor",
"admin.rules.edit.field.primary_party": "Primäre Partei",
"admin.rules.edit.field.event_type": "Art des Verfahrensschritts (filing / hearing / decision / order)",
"admin.rules.edit.field.deadline_notes": "Hinweise (DE)",
"admin.rules.edit.field.deadline_notes_en": "Hinweise (EN)",
"admin.rules.edit.field.priority": "Priorität",
"admin.rules.edit.field.is_court_set": "Gerichtlich gesetzt",
"admin.rules.edit.field.is_spawn": "Spawn",
"admin.rules.edit.field.spawn_label": "Spawn-Label",
"admin.rules.edit.field.spawn_proceeding": "Spawn-Verfahren",
"admin.rules.edit.field.spawn_proceeding.none": "—",
"admin.rules.edit.field.condition_hint": "JSON-Grammatik: {\"flag\":\"name\"} · {\"op\":\"and|or\",\"args\":[...]} · {\"op\":\"not\",\"args\":[...]}",
"admin.rules.edit.field.condition.valid": "JSON gültig.",
"admin.rules.edit.preview.heading": "Preview",
"admin.rules.edit.preview.hint": "Nur für Drafts. Berechnet die Fristenkette mit dieser Draft-Regel anstelle der publizierten Variante.",
"admin.rules.edit.preview.trigger_date": "Trigger-Datum",
"admin.rules.edit.preview.flags": "Flags (komma-separiert)",
"admin.rules.edit.preview.run": "Preview berechnen",
"admin.rules.edit.preview.running": "Berechne…",
"admin.rules.edit.preview.empty": "Keine Deadlines.",
"admin.rules.edit.preview.error": "Preview fehlgeschlagen.",
"admin.rules.edit.preview.only_drafts": "Preview ist nur für Drafts verfügbar.",
"admin.rules.edit.preview.trigger_required": "Bitte Trigger-Datum angeben.",
"admin.rules.edit.audit.heading": "Audit-Log",
"admin.rules.edit.audit.loading": "Lade…",
"admin.rules.edit.audit.empty": "Keine Audit-Einträge.",
"admin.rules.edit.audit.loadmore": "Weitere laden",
"admin.rules.edit.audit.exported": "exported",
"admin.rules.edit.audit.actor.system": "System",
"admin.rules.edit.audit.action.create": "create",
"admin.rules.edit.audit.action.update": "update",
"admin.rules.edit.audit.action.publish": "publish",
"admin.rules.edit.audit.action.archive": "archive",
"admin.rules.edit.audit.action.restore": "restore",
"admin.rules.edit.audit.action.delete": "delete",
"admin.rules.edit.action.save_draft": "Draft speichern",
"admin.rules.edit.action.publish": "Publish",
"admin.rules.edit.action.clone": "Als Draft klonen",
"admin.rules.edit.action.archive": "Archivieren",
"admin.rules.edit.action.restore": "Wiederherstellen",
"admin.rules.edit.action.ok": "Erledigt.",
"admin.rules.edit.action.save_draft.ok": "Draft gespeichert.",
"admin.rules.edit.action.save_draft.error": "Speichern fehlgeschlagen.",
"admin.rules.edit.action.publish.ok": "Regel publiziert.",
"admin.rules.edit.action.publish.error": "Publish fehlgeschlagen.",
"admin.rules.edit.action.archive.ok": "Regel archiviert.",
"admin.rules.edit.action.archive.error": "Archivieren fehlgeschlagen.",
"admin.rules.edit.action.restore.ok": "Regel wiederhergestellt.",
"admin.rules.edit.action.restore.error": "Wiederherstellen fehlgeschlagen.",
"admin.rules.edit.action.clone.error": "Klonen fehlgeschlagen.",
"admin.rules.edit.modal.save_draft.title": "Draft speichern",
"admin.rules.edit.modal.save_draft.body": "Bitte einen Grund für die Änderung angeben (mind. 10 Zeichen). Wird ins Audit-Log geschrieben.",
"admin.rules.edit.modal.publish.title": "Publish",
"admin.rules.edit.modal.publish.body": "Diese Draft-Regel wird live geschaltet. Bestehende publizierte Variante wird archiviert.",
"admin.rules.edit.modal.clone.title": "Als Draft klonen",
"admin.rules.edit.modal.clone.body": "Eine neue Draft-Kopie dieser Regel wird angelegt. Sie werden auf die neue Draft-Seite weitergeleitet.",
"admin.rules.edit.modal.archive.title": "Archivieren",
"admin.rules.edit.modal.archive.body": "Regel wird archiviert. Calculator nutzt sie nicht mehr.",
"admin.rules.edit.modal.restore.title": "Wiederherstellen",
"admin.rules.edit.modal.restore.body": "Regel wird wiederhergestellt (archived → published).",
// Date-range picker (t-paliad-248). Symmetric past/future chip fan
// around an ALLES centre. Used by the filter-bar 'time' axis from
// Slice A onwards; future slices will migrate /agenda and
// /admin/audit-log to the same component.
"date_range.button.label": "Zeitraum",
"date_range.button.label.custom_range": "Von {from} bis {to}",
"date_range.horizon.next_1d": "Heute",
"date_range.horizon.next_7d": "Nächste 7 Tage",
"date_range.horizon.next_14d": "Nächste 14 Tage",
"date_range.horizon.next_30d": "Nächste 30 Tage",
"date_range.horizon.next_90d": "Nächste 90 Tage",
"date_range.horizon.next_all": "Ganze Zukunft",
"date_range.horizon.past_1d": "Letzter Tag",
"date_range.horizon.past_7d": "Letzte 7 Tage",
"date_range.horizon.past_14d": "Letzte 14 Tage",
"date_range.horizon.past_30d": "Letzte 30 Tage",
"date_range.horizon.past_90d": "Letzte 90 Tage",
"date_range.horizon.past_all": "Ganze Vergangenheit",
"date_range.horizon.any": "Alles",
"date_range.horizon.custom": "Anpassen",
"date_range.dialog.label": "Zeitraum wählen",
"date_range.fan.past.label": "Vergangenheit",
"date_range.fan.future.label": "Zukunft",
"date_range.center.label": "Alles",
"date_range.custom.from": "Von",
"date_range.custom.to": "Bis",
"date_range.custom.apply": "Anwenden",
"date_range.custom.cancel": "Abbrechen",
"date_range.custom.invalid": "Bis-Datum muss nach Von-Datum liegen.",
"date_range.custom.invalid_format": "Datum nicht erkannt (Format JJJJ-MM-TT).",
"date_range.custom.invalid_missing": "Bitte beide Datumsfelder ausfüllen.",
// t-paliad-262 Slice A — canonical `procedural_event` i18n contract.
// The values are identical to the legacy `admin.rules.*` keys above —
// these aliases let .tsx files rebind in Slice B (B.5) without
// touching DE/EN strings then. Adding/changing values? Update BOTH
// sides.
"admin.procedural_events.list.title": "Verfahrensschritte verwalten — Paliad",
"admin.procedural_events.list.heading": "Verfahrensschritte verwalten",
"admin.procedural_events.list.new": "+ Neuer Verfahrensschritt",
"admin.procedural_events.col.code": "Code (Verfahrensschritt)",
// t-paliad-321: 3-segment proceeding-type code column (joined
// server-side); disambiguates same-named rules across proceedings.
"admin.procedural_events.col.proceeding": "Verfahren",
"admin.procedural_events.edit.title": "Verfahrensschritt bearbeiten — Paliad",
"admin.procedural_events.edit.breadcrumb":"← Verfahrensschritte verwalten",
"admin.procedural_events.edit.field.code": "Code (Verfahrensschritt-Identifikator)",
"admin.procedural_events.edit.field.event_kind": "Art des Verfahrensschritts (filing / hearing / decision / order)",
"admin.procedural_events.edit.field.parent": "Übergeordneter Verfahrensschritt (UUID)",
},
en: {
// Navigation
"nav.home": "Home",
"nav.kostenrechner": "Cost Calculator",
"nav.downloads": "Downloads",
"nav.links": "Links",
"nav.glossar": "Glossary",
"nav.gebuehrentabellen": "Fee Schedules",
"nav.checklisten": "Checklists",
"nav.submissions": "Submissions",
"nav.gerichte": "Courts",
"nav.logout": "Sign Out",
"nav.akten": "Matters",
"nav.projekte": "Projects",
"nav.fristen": "Deadlines",
"nav.termine": "Appointments",
"nav.dashboard": "Dashboard",
"nav.agenda": "Agenda",
"nav.inbox": "Approvals",
"nav.paliadin": "Paliadin",
"nav.team": "Team",
"nav.group.uebersicht": "Overview",
"nav.group.ansichten": "Views",
"nav.group.werkzeuge": "Tools",
"nav.neuigkeiten": "What's New",
"nav.soon.tooltip": "Coming soon",
// Theme toggle (m/paliad#2)
"theme.toggle.auto": "Auto",
"theme.toggle.light": "Light",
"theme.toggle.dark": "Dark",
"theme.toggle.cycle.auto": "Switch to light theme",
"theme.toggle.cycle.light": "Switch to dark theme",
"theme.toggle.cycle.dark": "Switch to auto (system)",
// BottomNav (mobile)
"bottomnav.add": "New",
"bottomnav.menu": "Menu",
"bottomnav.add.title": "Quick add",
"bottomnav.add.deadline": "New deadline",
"bottomnav.add.deadline.sub": "Deadline with date & project",
"bottomnav.add.appointment": "New appointment",
"bottomnav.add.appointment.sub": "Appointment with time & place",
"bottomnav.add.project": "New project",
"bottomnav.add.project.sub": "New matter / case / patent",
"bottomnav.add.cancel": "Cancel",
"bottomnav.badge.deadlines": "{overdue} overdue + {today} due today",
// Changelog (What's New) — t-paliad-027
"changelog.title": "What's New — Paliad",
"changelog.heading": "What's New",
"changelog.subtitle": "Recent changes and additions in Paliad.",
"changelog.empty": "Nothing here yet.",
"changelog.tag.feature": "New",
"changelog.tag.content": "Content",
"changelog.tag.fix": "Fix",
// Footer
"footer.text": "\u00a9 2026 Paliad \u2014 by",
// Landing page
"index.title": `Paliad \u2014 Patent Litigation for ${FIRM}`,
"index.hero.accent": `for ${FIRM}`,
"index.hero.sub": `Administration, knowledge, and tools for the ${FIRM} patent team.`,
"index.guides.title": "Guides",
"index.guides.desc": "Practical guides for proceedings before the EPO, Federal Patent Court, and UPC. Step-by-step instructions for typical workflows.",
"index.templates.title": "Templates",
"index.templates.desc": `Standardised templates for briefs, correspondence, and internal documents. ${FIRM} Patents Style Guide.`,
"index.documents.title": "Documents",
"index.documents.desc": "Reference materials, checklists, and practical aids for day-to-day patent practice.",
"index.tools": "Tools",
"index.cost.title": "Cost Calculator",
"index.cost.desc": "Estimate litigation costs for DE courts, UPC, and EPA proceedings. Court and attorney fees at a glance.",
"index.deadline.title": "Deadline Calculator",
"index.deadline.desc": "Calculate procedural deadlines for UPC, German, and EPA proceedings with holiday adjustment.",
"index.glossar.title": "Patent Glossary",
"index.glossar.desc": "Bilingual DE/EN glossary of key patent law terminology. Searchable by category.",
"index.downloads": "Downloads",
"index.style.title": `${FIRM} Patents Style`,
"index.style.desc": `Word template in ${FIRM} Patents style. Formatting, fonts, and macros for standardised briefs.`,
"index.offices": "Offices",
"index.office.munich": "Munich",
"index.office.duesseldorf": "D\u00fcsseldorf",
"index.office.hamburg": "Hamburg",
"index.office.amsterdam": "Amsterdam",
"index.office.london": "London",
"index.office.paris": "Paris",
"index.office.milan": "Milan",
// Login
"login.title": "Sign In \u2014 Paliad",
"login.tab.login": "Sign In",
"login.tab.register": "Register",
"login.email": "Email",
"login.password": "Password",
"login.password.placeholder": "Password",
"login.submit": "Sign In",
"login.confirm": "Confirm Password",
"login.confirm.placeholder": "Repeat password",
"login.minchars": "Min. 8 characters",
"login.register.submit": "Register",
"login.hint": `Only for authorised ${FIRM} email addresses.`,
"login.error.connection": "Connection error. Please try again.",
"login.error.mismatch": "Passwords do not match.",
"login.error.minlength": "Password must be at least 8 characters.",
"login.success.created": "Account created. Please sign in.",
// Kostenrechner
"kosten.title": "Cost Calculator \u2014 Paliad",
"kosten.heading": "Patent Litigation Cost Calculator",
"kosten.subtitle": "Estimate litigation costs for patent infringement, nullity, and EPA proceedings.",
"kosten.streitwert": "Dispute Value",
"kosten.vat": "VAT",
"kosten.vat.foreign": "0% (Foreign)",
"kosten.de.infringement": "DE Infringement Proceedings",
"kosten.de.nullity": "DE Nullity Proceedings",
"kosten.upc": "UPC",
"kosten.epa": "EPO",
"kosten.inst.lg": "Regional Court (Infringement 1st Instance)",
"kosten.inst.olg": "Higher Regional Court (Appeal)",
"kosten.inst.bgh_nzb": "Federal Court (Leave to Appeal)",
"kosten.inst.bgh_rev": "Federal Court (Revision)",
"kosten.inst.bpatg": "Federal Patent Court (Nullity)",
"kosten.inst.bgh_nullity": "Federal Court (Nullity Appeal)",
"kosten.inst.upc_first": "UPC (First Instance)",
"kosten.inst.upc_appeal": "UPC (Appeal)",
"kosten.inst.epa_opposition": "Opposition",
"kosten.inst.epa_appeal": "Appeal from Opposition",
"kosten.fee.version": "Fee version:",
"kosten.fee.schedule": "Fee schedule:",
"kosten.fee.from2026": "From 2026",
"kosten.fee.pre2026": "Before 2026",
"kosten.fee.current": "Current (2025)",
"kosten.attorneys": "Attorneys:",
"kosten.patent.attorneys": "Patent Attorneys:",
"kosten.clients": "Clients:",
"kosten.oral.hearing": "Oral hearing",
"kosten.revocation": "Revocation counterclaim",
"kosten.total": "Total Cost",
"kosten.empty": "Select at least one instance.",
"kosten.print": "Print",
"kosten.court.fees": "Court Fees",
"kosten.attorney.fees": "Attorney Fees",
"kosten.patent.attorney.fees": "Patent Attorney Fees",
"kosten.epa.fees": "EPO Fees",
"kosten.attorney.label": "Attorney",
"kosten.patent.attorney.label": "Patent Attorney",
"kosten.detail.procedure": "Procedure fee",
"kosten.detail.increase": "Increase",
"kosten.detail.hearing": "Hearing fee",
"kosten.detail.lump": "Lump sum",
"kosten.detail.vat": "VAT",
"kosten.detail.total": "Total",
"kosten.upc.fixed": "Fixed fee",
"kosten.upc.value": "Value-based fee",
"kosten.upc.court.total": "Court fees total",
"kosten.upc.sme": "SME reduction",
"kosten.upc.recoverable": "Recoverable costs (ceiling)",
"kosten.epa.official": "Official fee",
"kosten.epa.note": "Attorney costs based on time spent (not RVG-based).",
"kosten.share": "Copy Link",
"kosten.share.copied": "Link copied!",
"kosten.compare": "Compare",
"kosten.compare.exit": "Exit Comparison",
"kosten.scenario.a": "Scenario A",
"kosten.scenario.b": "Scenario B",
"kosten.scenario.diff": "Difference",
"kosten.print.title": "Cost Calculation",
"kosten.print.date": "Date",
"kosten.print.streitwert": "Dispute Value",
"kosten.print.vat": "VAT Rate",
"kosten.print.instances": "Instances",
"kosten.print.disclaimer": "This document is for internal use only and does not constitute legal advice. All figures are estimates.",
// Fristenrechner
"deadlines.title": "Deadline Calculator \u2014 Paliad",
"deadlines.heading": "Patent Deadline Calculator",
"deadlines.subtitle": "Calculate procedural deadlines for UPC, German, and EPA proceedings.",
// Verfahrensablauf (t-paliad-179 Slice 1)
// Unified procedural-events tool (m/paliad#151)
"procedures.title": "Procedures & Deadlines \u2014 Paliad",
"procedures.heading": "Procedures & Deadlines",
"procedures.subtitle": "Procedure roadmap, deadline calculator, and guided search in one tool.",
"procedures.filter.search.placeholder": "Statement of claim, hearing notice, m\u00fcndliche Verhandlung\u2026",
"procedures.filter.axis.forum": "Forum:",
"procedures.filter.axis.proc": "Proceeding:",
"procedures.filter.axis.kind": "Event kind:",
"procedures.filter.axis.party": "Party:",
"procedures.tab.proceeding": "Pick proceeding",
"procedures.tab.search": "Direct search",
"procedures.tab.wizard": "Guided",
"procedures.tab.akte": "From matter",
"procedures.panel.akte.placeholder": "Matter entry ships in a later slice.",
"nav.procedures": "Procedures & Deadlines",
// Litigation Builder (m/paliad#153 B1+B2)
"builder.subtitle": "Litigation Builder — build scenarios, stack proceedings, track deadlines.",
"builder.header.scenario": "Scenario:",
"builder.header.akte": "Matter:",
"builder.header.stichtag": "Anchor:",
"builder.header.search": "Search:",
"builder.akte.none": "— none —",
"builder.akte.banner.prefix": "From matter:",
"builder.search.placeholder": "Event, scenario, matter …",
"builder.action.rename": "Name it",
"builder.action.rename.prompt": "Name for this scenario:",
"builder.action.share": "Share",
"builder.action.promote": "Create as project",
"builder.mode.cold": "Overview",
"builder.mode.event": "Event",
"builder.mode.akte": "From matter",
"builder.panel.title": "My scenarios",
"builder.panel.new": "+ New scenario",
"builder.panel.empty": "No scenarios yet.",
"builder.bucket.active": "Active",
"builder.empty.headline": "No scenario open.",
"builder.empty.hint": "Start a new scenario, pick one from your list, or load a matter (B4).",
"builder.empty.cta": "Start a new scenario",
"builder.empty.recent": "Recent",
"builder.picker.placeholder": "— pick a scenario —",
"builder.picker.title": "Add proceeding",
"builder.picker.close": "Close",
"builder.picker.aria": "Pick a proceeding",
"builder.picker.axis.forum": "Forum:",
"builder.picker.axis.proc": "Proceeding:",
"builder.picker.empty": "No proceedings available.",
"builder.picker.future_jurisdiction": "Other forums coming later.",
"builder.canvas.add_proceeding": "+ Add proceeding",
"builder.triplet.loading": "Calculating deadlines …",
"builder.triplet.unknown_proceeding": "Unknown proceeding type.",
"builder.triplet.side.claimant": "Claimant view",
"builder.triplet.side.defendant": "Defendant view",
"builder.triplet.flags.label": "Options:",
"builder.triplet.perspective.label": "Perspective:",
"builder.triplet.perspective.none": "none",
"builder.triplet.perspective.claimant": "Claimant",
"builder.triplet.perspective.defendant": "Defendant",
"builder.triplet.detailgrad.label": "Detail:",
"builder.triplet.detailgrad.selected": "Selected",
"builder.triplet.detailgrad.all_options": "All options",
"builder.triplet.remove": "Remove",
"builder.triplet.collapse": "Collapse",
"builder.triplet.expand": "Expand",
"builder.triplet.no_flags": "(no flags for this proceeding type)",
"builder.event.state.planned": "planned",
"builder.event.state.filed": "filed",
"builder.event.state.skipped": "skipped",
"builder.event.action.file": "File",
"builder.event.action.skip": "Skip",
"builder.event.action.reset": "Reset to planned",
"builder.event.actual_date.prompt": "Date of filing:",
"builder.event.skip_reason.prompt": "Reason (optional):",
"builder.event.horizon.label": "+{n} optional ▾",
"builder.event.horizon.hide": "Hide optional",
"builder.save.idle": " ",
"builder.save.saving": "Saving …",
"builder.save.saved": "Saved ✓",
"builder.save.error": "Save failed",
"builder.search.hint.start": "Type … e.g. \"defence\", \"hearing\", \"HL-2024\"",
"builder.search.hint.short": "At least 2 characters.",
"builder.search.hint.loading": "Searching …",
"builder.search.hint.empty": "No matches.",
"builder.search.hint.error": "Search failed. Try again.",
"builder.search.hint.akte_b4": "Matter mode coming in B4.",
"builder.search.group.events": "Events",
"builder.search.group.scenarios": "Scenarios",
"builder.search.group.projects": "Matters",
"builder.search.summary.events.one": "{n} event",
"builder.search.summary.events.other": "{n} events",
"builder.search.summary.scenarios.one": "{n} scenario",
"builder.search.summary.scenarios.other": "{n} scenarios",
"builder.search.summary.projects.one": "{n} matter",
"builder.search.summary.projects.other": "{n} matters",
"builder.search.anchor.divider": "━━━━ YOU ARE HERE ━━━━",
// B5 — side-panel buckets, sharing, promote-to-project wizard.
"builder.bucket.shared": "Shared with me",
"builder.bucket.promoted": "Promoted to project",
"builder.bucket.archived": "Archived",
"builder.bucket.empty": "—",
"builder.readonly.watermark": "Shared by {owner} · read-only",
"builder.readonly.blocked": "Read-only — only the owner can edit.",
"builder.share.title": "Share scenario",
"builder.share.subtitle": "Share read-only with HLC colleagues. You remain the sole editor.",
"builder.share.search.placeholder": "Search name or email …",
"builder.share.button": "Share read-only",
"builder.share.current.title": "Already shared with:",
"builder.share.current.empty": "Not shared with anyone yet.",
"builder.share.revoke": "Remove",
"builder.share.close": "Close",
"builder.share.no_results": "No users found.",
"builder.share.error": "Sharing failed. Please try again.",
"builder.promote.title": "Create as project",
"builder.promote.step1": "Confirm",
"builder.promote.step2": "Add parties",
"builder.promote.step3": "Case metadata",
"builder.promote.next": "Next",
"builder.promote.back": "Back",
"builder.promote.commit": "Create",
"builder.promote.cancel": "Cancel",
"builder.promote.summary.heading": "What will be created:",
"builder.promote.summary.proceeding": "Primary proceeding",
"builder.promote.summary.events_filed": "filed events",
"builder.promote.summary.events_planned": "planned events",
"builder.promote.summary.flags": "active options",
"builder.promote.summary.note_extra": "{n} further standalone proceeding(s) stay in the scenario and are not carried over automatically.",
"builder.promote.parties.hint": "Enter the real party names — or add them later in the case file.",
"builder.promote.parties.add": "+ Add party",
"builder.promote.parties.name": "Name",
"builder.promote.parties.role": "Role (e.g. claimant)",
"builder.promote.parties.representative": "Representative",
"builder.promote.parties.remove": "Remove",
"builder.promote.parties.empty": "No parties yet.",
"builder.promote.meta.title": "Case title / matter",
"builder.promote.meta.title.placeholder": "e.g. Becker v. X — UPC infringement",
"builder.promote.meta.reference": "Reference (optional)",
"builder.promote.meta.case_number": "Case number (optional)",
"builder.promote.meta.client_number": "Client number (optional)",
"builder.promote.meta.our_side": "Our side",
"builder.promote.meta.our_side.claimant": "Claimant",
"builder.promote.meta.our_side.defendant": "Defendant",
"builder.promote.meta.our_side.none": "— open —",
"builder.promote.meta.parent": "Parent litigation (optional)",
"builder.promote.meta.parent.none": "— none —",
"builder.promote.meta.team": "Team (optional)",
"builder.promote.meta.team.hint": "You are added as lead automatically.",
"builder.promote.error.title_required": "Please enter a case title.",
"builder.promote.error.generic": "Creation failed. Please try again.",
"builder.promote.success": "Case created — redirecting …",
"builder.mobile.blocked": "Open on a larger screen to edit.",
"deadlines.step1": "Select Proceeding Type",
"deadlines.step2": "Enter Trigger Date",
"deadlines.step2.perspective": "Perspective and Date",
"deadlines.step3": "Result",
"deadlines.upc": "UPC",
"deadlines.de": "German Courts",
"deadlines.epa": "EPO",
"deadlines.dpma": "DPMA",
"deadlines.dpma.opp.dpma": "Opposition DPMA",
"deadlines.dpma.appeal.bpatg": "Appeal BPatG (DPMA)",
"deadlines.dpma.appeal.bgh": "Legal Appeal BGH",
"deadlines.trigger.event": "Trigger event:",
"deadlines.trigger.date": "Date:",
"deadlines.trigger.label": "Trigger date",
"deadlines.priority.date": "Priority date (optional):",
"deadlines.court.label": "Court:",
"deadlines.flag.ccr": "Counterclaim for revocation filed",
"deadlines.flag.inf_amend": "Application to amend the patent filed (R.30)",
"deadlines.flag.rev_amend": "Application to amend the patent filed (R.49.2.a)",
"deadlines.flag.rev_cci": "Counterclaim for infringement filed (R.49.2.b)",
"deadlines.calculate": "Calculate Deadlines",
"deadlines.print": "Print",
"deadlines.reset": "\u2190 Start Over",
"deadlines.upc.inf.cfi": "Infringement",
"deadlines.upc.rev.cfi": "Revocation",
"deadlines.upc.ccr.cfi": "Counterclaim for Revocation",
"deadlines.upc.pi.cfi": "Provisional Measures",
"deadlines.upc.apl.merits": "Appeal",
"deadlines.upc.dmgs.cfi": "Damages Determination",
"deadlines.upc.disc.cfi": "Lay-open Books",
"deadlines.upc.apl.cost": "Cost-Decision Appeal",
"deadlines.upc.apl.unified": "Appeal",
"deadlines.appeal_target.label": "Appeal against:",
"deadlines.appeal_target.endentscheidung": "Final Decision",
"deadlines.appeal_target.kostenentscheidung": "Cost Decision",
"deadlines.appeal_target.anordnung": "Order",
"deadlines.appeal_target.schadensbemessung": "Damages Determination",
"deadlines.appeal_target.bucheinsicht": "Lay-open Books",
"deadlines.upc.apl.order": "Order Appeal (15-day)",
"deadlines.de.group.inf": "Infringement proceedings",
"deadlines.de.group.null": "Nullity proceedings",
"deadlines.de.inf.lg": "LG (1st instance)",
"deadlines.de.inf.olg": "OLG (Appeal)",
"deadlines.de.inf.bgh": "BGH (Revision / NZB)",
"deadlines.de.null.bpatg": "BPatG (1st instance)",
"deadlines.de.null.bgh": "BGH (Appeal)",
"deadlines.epa.opp.opd": "Opposition",
"deadlines.epa.opp.boa": "Appeal",
"deadlines.epa.grant.exa": "Grant Procedure",
"deadlines.party.both.label": "both parties",
"deadlines.court.set": "set by court",
"deadlines.court.indirect": "tbd",
"deadlines.conditional.depends_on": "depends on {parent}",
"deadlines.conditional.unset": "depends on an upstream event",
"deadlines.optional.badge": "on request",
"deadlines.priority.mandatory": "Mandatory",
"deadlines.priority.recommended": "Recommended",
"deadlines.priority.optional": "Optional (on request)",
"deadlines.priority.informational": "For information only",
"deadlines.priority.informational.notice_label": "Note",
"project.instance_level.first": "First instance",
"project.instance_level.appeal": "Appeal",
"project.instance_level.cassation": "Cassation",
"project.instance_level.unset": "(unset)",
"verlauf.spawn.chip": "Spawns into:",
"verlauf.spawn.cycle_warning": "Some cross-proceeding spawn rules were skipped due to a cycle.",
"deadlines.proceeding.selected": "Proceeding:",
"deadlines.proceeding.reselect": "Choose another proceeding",
"deadlines.step1.heading": "Step 1 — Which matter?",
"deadlines.step1.search.placeholder": "Search matters…",
"deadlines.step1.search.empty": "No matching matter.",
"deadlines.step1.divider.new": "or a new matter",
"deadlines.step1.divider.adhoc": "or ad-hoc, without a matter",
"deadlines.step1.new.cta": "+ Create new matter",
"deadlines.step1.adhoc.upc": "UPC proceeding",
"deadlines.step1.adhoc.de": "DE proceeding",
"deadlines.step1.adhoc.epa": "EPA proceeding",
"deadlines.step1.adhoc.dpma": "DPMA proceeding",
"deadlines.step1.selected": "Matter:",
"deadlines.step1.reselect": "Other matter",
"deadlines.step1.summary.adhoc.suffix": "no matter (exploration)",
"deadlines.step2.heading": "Step 2 — What do you want to do?",
"deadlines.step2.file.title": "File something",
"deadlines.step2.file.desc": "Outgoing — your action triggers a deadline.",
"deadlines.step2.happened.title": "Something happened",
"deadlines.step2.happened.desc": "Incoming — an event triggered a deadline.",
"deadlines.step2.browse.title": "Browse procedure roadmap",
"deadlines.step2.browse.desc": "Browse / Learn — see what happens when. No deadline entered.",
"deadlines.save.cta.adhoc.hint": "Ad-hoc — no matter, no save",
"deadlines.step3a.heading": "What do you want to file?",
"deadlines.step3a.back": "back to selection",
"deadlines.step3a.file.title": "File a submission",
"deadlines.step3a.file.desc": "Open the Verfahrensablauf — compute deadline and add to the matter.",
"deadlines.step3a.draft.title": "Draft a submission",
"deadlines.step3a.draft.desc": "Preparation — later linked to the drafting surface.",
"deadlines.step3a.enter.title": "Enter deadline manually",
"deadlines.step3a.enter.desc": "Direct entry — date and type already known.",
"deadlines.step3a.soon": "coming soon",
"deadlines.date.edit.hint": "Edit date — downstream deadlines will recalculate",
"deadlines.view.label": "View:",
"deadlines.view.timeline": "Timeline",
"deadlines.view.columns": "Columns",
"deadlines.notes.show": "Show details",
"deadlines.durations.show": "Show durations",
"deadlines.col.ours": "Client Side",
"deadlines.col.court": "Court",
"deadlines.col.opponent": "Opponent Side",
"deadlines.col.both": "Both parties",
"deadlines.col.proactive": "Proactive",
"deadlines.col.reactive": "Reactive",
// t-paliad-265 — per-event-card choice popover (Verfahrensablauf timeline)
"choices.caret.title": "Options for this event",
"choices.appellant.title": "Appeal by …",
"choices.appellant.claimant": "Claimant side",
"choices.appellant.defendant": "Defendant side",
"choices.appellant.both": "both parties",
"choices.appellant.none": "no appeal",
"choices.include_ccr.title": "Include nullity counterclaim",
"choices.include_ccr.true": "Yes",
"choices.include_ccr.false": "No",
"choices.skip.title": "Skip for this case",
"choices.skip.true": "Skip",
"choices.skip.false": "Include",
"choices.skipped.chip": "skipped",
"choices.appellant.chip": "Appeal:",
"choices.include_ccr.chip": "with nullity counterclaim",
"choices.reset": "Reset choice",
"choices.commit.error": "Could not save selection",
// t-paliad-290 (m/paliad#122) — re-surface hidden optional cards.
"choices.show_hidden.label": "Show hidden",
"choices.show_hidden.count": "Hidden ({n})",
"choices.unhide.chip": "Show again",
// t-paliad-293 — iconified state markers on the Verfahrensablauf
// event cards. Tooltip-only text; the glyph is the primary signal.
"state.optional.tooltip": "Optional event",
"state.hidden.tooltip": "Hidden — restore via the options menu",
"deadlines.adjusted": "Adjusted",
"deadlines.adjusted.reason": "weekend/holiday",
"deadlines.adjusted.weekend": "weekend",
"deadlines.adjusted.weekend.saturday": "Saturday",
"deadlines.adjusted.weekend.sunday": "Sunday",
"deadlines.adjusted.holiday": "{name} holiday",
"deadlines.adjusted.vacation": "{name} ({span})",
// Trigger-event mode (PR-2 — youpc-parity)
"deadlines.mode.procedure": "Course of proceedings",
"deadlines.mode.event": "What comes after…",
"deadlines.event.step1": "Select trigger event",
"deadlines.event.step1.hint": "Which event happened? (e.g. statement of claim, EPO decision, notification of an order)",
"deadlines.event.step2": "Event date",
"deadlines.event.step3": "Follow-up deadlines",
"deadlines.event.search.label": "Search trigger event",
"deadlines.event.search.placeholder": "Type to search…",
"deadlines.event.empty": "No matching events",
"deadlines.event.loading": "Loading…",
"deadlines.event.error": "Could not load events",
"deadlines.event.selected": "Selected event:",
"deadlines.event.date": "Event date:",
"deadlines.event.calculate": "Calculate follow-up deadlines",
"deadlines.event.noresults": "No follow-up deadlines configured for this event.",
"deadlines.event.results.trigger": "Trigger:",
"deadlines.event.results.date": "Date:",
"deadlines.event.adjusted": "Adjusted from",
"deadlines.search.label": "Search a deadline",
"deadlines.search.placeholder": "Statement of Defence, RoP 23, § 82, Re-establishment…",
"deadlines.search.chips.label": "Quick picks:",
"deadlines.search.empty": "Type a phrase or pick a chip below.",
"deadlines.search.loading": "Searching…",
"deadlines.search.no_hits": "No matching deadlines found.",
"deadlines.search.aliases": "Also known as:",
"deadlines.search.pills.heading": "In these proceedings:",
"deadlines.search.pills.cross_cutting": "Cross-cutting:",
"deadlines.search.pill.duration": "Duration:",
"deadlines.search.party.claimant": "Claimant",
"deadlines.search.party.defendant": "Defendant",
"deadlines.search.party.both": "both sides",
"deadlines.search.party.court": "Court",
"deadlines.search.results.count": "{n} hits",
"deadlines.search.results.count_one": "1 hit",
"deadlines.search.clear": "Clear search",
// Fristenrechner — card-click → calc panel → add-to-project (t-paliad-136 Phase B)
"deadlines.card.calc.expand_hint": "Calculate deadline or add to project",
"deadlines.card.calc.close": "close",
"deadlines.card.calc.pill_picker.label": "Which context?",
"deadlines.card.calc.pill_picker.locked_label": "Context:",
"deadlines.card.calc.pill_picker.change": "change",
"deadlines.card.calc.trigger.label": "Date of triggering event",
"deadlines.card.calc.flags.label": "Conditions:",
"deadlines.card.calc.flag.with_ccr": "With counterclaim for revocation",
"deadlines.card.calc.flag.with_amend": "With application to amend",
"deadlines.card.calc.flag.with_cci": "With counterclaim for infringement",
"deadlines.card.calc.result.due": "Deadline:",
"deadlines.card.calc.result.original_from": "from",
"deadlines.card.calc.result.from_trigger": "from",
"deadlines.card.calc.result.shifted_from": "Shifted from",
"deadlines.card.calc.result.shifted_because": "due to",
"deadlines.card.calc.result.court_set": "Court-determined — no calculable date.",
"deadlines.card.calc.result.calculating": "Calculating…",
"deadlines.card.calc.result.error": "Calculation failed.",
"deadlines.card.calc.add_to_project": "Add to project",
"deadlines.card.calc.add_to_project.disabled": "Court-determined — add manually",
"deadlines.pathway.fork.heading": "What would you like to do?",
"deadlines.pathway.a.title": "Browse a proceeding",
"deadlines.pathway.a.desc": "Pick a proceeding type and see all its deadlines on a single timeline.",
"deadlines.pathway.b.title": "File a deadline based on an event",
"deadlines.pathway.b.desc": "Something happened — find the right deadline for the matter.",
"deadlines.pathway.shortcut.label": "or jump straight to a deadline:",
"deadlines.pathway.back": "back to selection",
"deadlines.pathway.b.mode.tree": "Step-by-step (decision tree)",
"deadlines.pathway.b.mode.filter": "Filter / Search",
"deadlines.pathway.b.tree.coming_soon": "The decision tree is coming soon. Switch to \"Filter / Search\" or return to selection.",
"deadlines.pathway.b.tree.step.back": "step back",
"deadlines.pathway.b.tree.empty": "No matches for this path.",
"deadlines.pathway.b.tree.reset": "Restart",
"deadlines.pathway.b.tree.start_question": "What happened?",
"deadlines.row.mode.question": "How to search?",
"deadlines.row.edit": "edit",
"deadlines.row.prefilled.from_akte": "from matter",
"deadlines.row.reset": "Reset path",
"deadlines.row.reset.title": "Reset path — discard all cascade answers",
"deadlines.row.search.link": "Search directly",
"deadlines.row.search.link.title": "Search directly for a deadline — skips the decision tree",
"deadlines.row.autowalk.tooltip": "These steps were derived from your matter. Click \"edit\" to override any answer manually.",
"deadlines.row.autowalk.dismiss": "Dismiss hint",
"deadlines.row.search.panel.back": "Back to decision tree",
"deadlines.row.search.panel.back.title": "Close inline search and return to the decision tree",
"deadlines.row.search.panel.placeholder": "Search for a deadline — e.g. \"statement of claim\", \"hint order\"…",
"deadlines.row.search.panel.clear": "Clear input",
"deadlines.inbox.label": "Where did it arrive?",
"deadlines.inbox.cms.title": "UPC — via CMS",
"deadlines.inbox.bea.title": "National-DE — via beA",
"deadlines.inbox.posteingang.title": "National-DE — postal mail",
"deadlines.inbox.posteingang": "Postal",
"deadlines.inbox.all": "All",
"deadlines.filter.forum.label": "Forum / System:",
"deadlines.filter.forum.upc_cfi": "UPC CFI",
"deadlines.filter.forum.upc_coa": "UPC CoA",
"deadlines.filter.forum.de_lg": "DE LG",
"deadlines.filter.forum.de_olg": "DE OLG",
"deadlines.filter.forum.de_bgh": "DE BGH",
"deadlines.filter.forum.de_bpatg": "DE BPatG",
"deadlines.filter.forum.epa_grant": "EPO Examining",
"deadlines.filter.forum.epa_opp": "EPO Opposition",
"deadlines.filter.forum.epa_appeal": "EPO Board of Appeal",
"deadlines.filter.forum.dpma": "DPMA",
"deadlines.perspective.label": "I represent:",
"deadlines.perspective.claimant": "Claimant side (Proactive)",
"deadlines.perspective.defendant": "Defendant side (Reactive)",
"deadlines.perspective.claimant.short": "Claimant",
"deadlines.perspective.defendant.short": "Defendant",
"deadlines.perspective.both.short": "Both",
"deadlines.perspective.claimant.title": "Claimant side — hides typical defendant submissions",
"deadlines.perspective.defendant.title": "Defendant side — hides typical claimant submissions",
"deadlines.perspective.appeal_filed_by.label": "Appeal filed by:",
"deadlines.perspective.predefined_hint": "predefined from project",
"deadlines.side.label": "Side:",
"deadlines.side.claimant": "Claimant",
"deadlines.side.defendant": "Defendant",
"deadlines.side.undefined": "Undefined",
"deadlines.side.from_project": "From case:",
"deadlines.side.override": "Choose other side",
"deadlines.side.hint": "Pick a side to focus the columns.",
"deadlines.event.composite.label": "Composite:",
"deadlines.event.unit.days.one": "day",
"deadlines.event.unit.days.many": "days",
"deadlines.event.unit.weeks.one": "week",
"deadlines.event.unit.weeks.many": "weeks",
"deadlines.event.unit.months.one": "month",
"deadlines.event.unit.months.many": "months",
"deadlines.event.unit.working_days.one": "working day",
"deadlines.event.unit.working_days.many": "working days",
"deadlines.event.timing.before": "before",
"deadlines.event.timing.after": "after",
// Downloads
"downloads.title": "Downloads \u2014 Paliad",
"downloads.heading": "Downloads",
"downloads.subtitle": `Files and templates for the ${FIRM} patent team.`,
"downloads.style.title": `${FIRM} Patents Style`,
"downloads.style.desc": `Word template in ${FIRM} Patents style. Formatting, fonts, and macros for standardised briefs.`,
"downloads.btn": "Download",
// Links
"links.title": "Links \u2014 Paliad",
"links.heading": "Links",
"links.subtitle": "Useful external links for daily patent practice.",
"links.filter.all": "All",
"links.search.placeholder": "Search by title, description...",
"links.empty": "No links in this category.",
"links.suggest.btn": "Suggest a Link",
"links.suggest.title": "Suggest a Link",
"links.suggest.name": "Title",
"links.suggest.category": "Category",
"links.suggest.desc": "Description",
"links.suggest.submit": "Submit",
"links.suggest.cancel": "Cancel",
"links.suggest.success": "Thank you! Your suggestion will be reviewed.",
"links.suggest.error": "Error saving. Please try again.",
"links.pending": "suggestions pending review",
"links.feedback.title": "Feedback",
"links.feedback.type": "Type",
"links.feedback.broken": "Link broken",
"links.feedback.outdated": "Outdated",
"links.feedback.update": "Needs updating",
"links.feedback.other": "Other",
"links.feedback.message": "Message",
"links.feedback.placeholder": "What's wrong? (e.g. link broken, outdated...)",
"links.feedback.submit": "Submit",
"links.feedback.success": "Thank you for your feedback!",
// Glossar
"glossar.title": "Patent Glossary \u2014 Paliad",
"glossar.heading": "Patent Glossary",
"glossar.subtitle": "Bilingual glossary of key patent law terminology.",
"glossar.search.placeholder": "Search...",
"glossar.filter.all": "All",
"glossar.filter.litigation": "Litigation",
"glossar.filter.prosecution": "Prosecution",
"glossar.filter.general": "General",
"glossar.col.de": "German",
"glossar.col.en": "English",
"glossar.col.definition": "Definition",
"glossar.empty": "No matches found.",
"glossar.suggest": "Suggest a term",
"glossar.suggest.title": "Suggest a new term",
"glossar.suggest.de": "German term",
"glossar.suggest.en": "English term",
"glossar.suggest.definition": "Definition (optional)",
"glossar.suggest.category": "Category",
"glossar.suggest.cancel": "Cancel",
"glossar.suggest.submit": "Submit",
"glossar.suggest.success": "Suggestion submitted. Thank you!",
"glossar.suggest.error.required": "Please enter both DE and EN terms.",
"glossar.suggest.error.generic": "Error submitting. Please try again.",
"glossar.feedback.title": "Suggest a correction",
"glossar.feedback.tooltip": "Suggest a correction",
// Geb\u00fchrentabellen
"gebuehren.title": "Fee Schedules \u2014 Paliad",
"gebuehren.heading": "Fee Schedules",
"gebuehren.subtitle": "Interactive fee schedules for GKG, RVG, UPC, EPO, and PatKostG.",
"gebuehren.streitwert": "Dispute Value (EUR)",
"gebuehren.streitwert.placeholder": "e.g. 1,000,000",
"gebuehren.lookup": "Look up",
"gebuehren.current": "Current",
"gebuehren.col.streitwert": "Dispute Value (EUR)",
"gebuehren.col.fee": "1.0 Fee (EUR)",
"gebuehren.col.maxvalue": "up to value (EUR)",
"gebuehren.col.courtfee": "Court Fee (EUR)",
"gebuehren.upc.valuebased": "Value-based Fees",
"gebuehren.upc.recoverable": "Recoverable Costs (Ceiling)",
"gebuehren.upc.ceiling": "Ceiling (EUR)",
"gebuehren.epa.proceeding": "Proceeding",
"gebuehren.epa.fee": "Fee (EUR)",
"gebuehren.epa.smefee": "SME Fee (EUR)",
"gebuehren.multipliers.title": "Fee Multipliers",
"gebuehren.multipliers.desc": "Factors for calculating court and attorney fees per instance.",
"gebuehren.multipliers.instance": "Instance",
"gebuehren.multipliers.courtfee": "Court",
"gebuehren.multipliers.factor": "Factor",
"gebuehren.multipliers.basis": "Basis",
"gebuehren.patkostg.court": "Court Fees (BPatG / BGH)",
"gebuehren.patkostg.dpma": "DPMA Fees",
"gebuehren.patkostg.annual": "Annual Renewal Fees (Patent)",
"gebuehren.patkostg.year": "Patent Year",
"gebuehren.patkostg.note": "Note",
"gebuehren.patkostg.item": "Fee Item",
"gebuehren.feedback.btn": "Feedback",
"gebuehren.feedback.title": "Fee Schedule Feedback",
"gebuehren.feedback.type": "Type",
"gebuehren.feedback.error": "Error found",
"gebuehren.feedback.missing": "Missing data",
"gebuehren.feedback.suggestion": "Improvement suggestion",
"gebuehren.feedback.other": "Other",
"gebuehren.feedback.schedule": "Regarding",
"gebuehren.feedback.general": "General",
"gebuehren.feedback.message": "Message",
"gebuehren.feedback.submit": "Submit",
"gebuehren.feedback.cancel": "Cancel",
"gebuehren.feedback.success": "Thank you for your feedback!",
"gebuehren.feedback.error.required": "Please enter a message.",
"gebuehren.feedback.error.generic": "Error submitting. Please try again.",
// Index \u2014 Geb\u00fchrentabellen card
"index.gebuehren.title": "Fee Schedules",
"index.gebuehren.desc": "Interactive fee schedules for GKG, RVG, UPC, EPO, and PatKostG. Enter a dispute value, read the fee.",
// Checklisten
"index.checklisten.title": "Checklists",
"index.checklisten.desc": "Interactive filing checklists for UPC, German, and EPO proceedings. Multiple instances per template, linkable to an Akte.",
"checklisten.title": "Checklists \u2014 Paliad",
"checklisten.heading": "Checklists",
"checklisten.subtitle": "Interactive checklists for typical procedural steps before the UPC, German Patent Court, and EPO. Tick off, print, miss nothing.",
"checklisten.tab.templates": "Templates",
"checklisten.tab.mine": "My templates",
"checklisten.tab.instances": "Existing instances",
"checklisten.mine.empty": "You haven't authored a template yet.",
"checklisten.tab.gallery": "Shared templates",
"checklisten.gallery.empty": "No shared templates visible yet.",
"checklisten.filter.other": "Other",
"checklisten.instance.outdated.badge": "Template updated",
"checklisten.instance.outdated.note": "The underlying template has been updated since this instance was created (v{from} → v{to}).",
"checklisten.instance.outdated.diff": "Show changes",
"checklisten.instance.diff.title": "Changed items",
"checklisten.instance.diff.close": "Close",
"checklisten.instance.diff.added": "Added",
"checklisten.instance.diff.removed": "Removed",
"checklisten.instance.diff.changed": "Changed",
"checklisten.instance.diff.empty": "No content differences in items.",
"checklisten.instance.diff.error": "Diff failed.",
"checklisten.mine.new": "New template",
"checklisten.mine.loading": "Loading…",
"checklisten.mine.visibility.private": "Private",
"checklisten.mine.visibility.firm": "Firm-wide",
"checklisten.mine.visibility.shared": "Shared",
"checklisten.mine.visibility.global": "In catalog",
"checklisten.mine.edit": "Edit",
"checklisten.mine.delete": "Delete",
"checklisten.mine.delete.confirm": "Delete template \"{title}\"? Existing instances remain.",
"checklisten.mine.delete.error": "Delete failed.",
"checklisten.mine.origin.authored": "Your template",
"checklisten.author.title": "Author template — Paliad",
"checklisten.author.title.edit": "Edit template — Paliad",
"checklisten.author.heading.new": "New checklist template",
"checklisten.author.heading.edit": "Edit template",
"checklisten.author.subtitle": "Author your own checklist with sections and items. Keep it private or open it firm-wide.",
"checklisten.author.field.title": "Title",
"checklisten.author.field.title.hint": "e.g. \"UPC SoC — internal checklist\".",
"checklisten.author.field.description": "Short description",
"checklisten.author.field.regime": "Regime",
"checklisten.author.field.court": "Court / authority",
"checklisten.author.field.reference": "Legal source",
"checklisten.author.field.deadline": "Deadline (optional)",
"checklisten.author.field.lang": "Language",
"checklisten.author.field.visibility": "Visibility",
"checklisten.author.visibility.private.hint": "Visible only to you.",
"checklisten.author.visibility.firm.hint": "Visible to every authenticated colleague.",
"checklisten.author.groups.heading": "Sections and items",
"checklisten.author.groups.add": "+ Add section",
"checklisten.author.group.title": "Section title",
"checklisten.author.group.remove": "Remove section",
"checklisten.author.item.add": "+ Add item",
"checklisten.author.item.label": "Item",
"checklisten.author.item.note": "Note (optional)",
"checklisten.author.item.rule": "Rule (optional)",
"checklisten.author.item.remove": "Remove item",
"checklisten.author.save": "Save",
"checklisten.author.cancel": "Cancel",
"checklisten.author.saving": "Saving…",
"checklisten.author.error.title": "Please enter a title.",
"checklisten.author.error.no_groups": "Please add at least one section with one item.",
"checklisten.author.error.generic": "Save failed. Please try again.",
"checklisten.author.error.notfound": "Template not found or you don't have permission to edit it.",
"checklisten.detail.edit": "Edit",
"checklisten.detail.delete": "Delete",
"checklisten.detail.share": "Share",
"checklisten.detail.promote": "Add to firm catalog",
"checklisten.detail.demote": "Remove from catalog",
"checklisten.detail.promote.confirm": "Add this template to the firm catalog? Every colleague will see it under Templates.",
"checklisten.detail.demote.confirm": "Remove this template from the firm catalog? It stays firm-visible.",
"checklisten.detail.promote.error": "Promotion failed.",
"checklisten.detail.delete.confirm": "Delete template \"{title}\"? Existing instances remain.",
"checklisten.detail.delete.error": "Delete failed.",
"checklisten.detail.authored.by": "Authored by {author}",
"checklisten.detail.visibility": "Visibility: {state}",
"checklisten.detail.visibility.set.firm": "Share with firm",
"checklisten.detail.visibility.set.private": "Make private",
"checklisten.detail.visibility.error": "Couldn't change visibility.",
"checklisten.share.title": "Share template",
"checklisten.share.kind": "Recipient type",
"checklisten.share.kind.user": "Colleague",
"checklisten.share.kind.office": "Office",
"checklisten.share.kind.partner_unit": "Practice unit",
"checklisten.share.kind.project": "Project",
"checklisten.share.pick": "— pick —",
"checklisten.share.submit": "Share",
"checklisten.share.cancel": "Cancel",
"checklisten.share.error.pick": "Please pick a recipient.",
"checklisten.share.error.generic": "Share failed.",
"checklisten.share.success": "Shared.",
"checklisten.share.grants.heading": "Existing grants",
"checklisten.share.grants.empty": "No grants.",
"checklisten.share.grants.revoke": "Remove",
"checklisten.share.grants.revoke.confirm": "Remove this grant?",
"checklisten.share.grants.revoke.error": "Revoke failed.",
"checklisten.share.grants.recipient.user": "Colleague",
"checklisten.share.grants.recipient.office": "Office",
"checklisten.share.grants.recipient.partner_unit": "Practice unit",
"checklisten.share.grants.recipient.project": "Project",
"checklisten.instances.all.loading": "Loading…",
"checklisten.instances.all.empty": "No checklist instances yet. Create one from the Templates tab.",
"checklisten.instances.all.col.template": "Template",
"checklisten.instances.all.col.name": "Name",
"checklisten.instances.all.col.project": "Project",
"checklisten.instances.all.col.progress": "Progress",
"checklisten.instances.all.col.created": "Created",
"checklisten.instances.all.personal": "Personal",
"checklisten.filter.all": "All",
"checklisten.filter.de": "DE",
"checklisten.empty": "No checklists in this category.",
"checklisten.back": "Back to overview",
"checklisten.print": "Print",
"checklisten.reset": "Reset",
"checklisten.reset.confirm": "Really reset all checkboxes for this instance?",
"checklisten.reset.error": "Reset failed. Please try again.",
"checklisten.notfound": "Checklist not found.",
"checklisten.newInstance": "New instance",
"checklisten.newInstance.title": "New checklist instance",
"checklisten.newInstance.name": "Name",
"checklisten.newInstance.name.hint": "e.g. \u201CMueller v. Schmidt \u2014 SoC\u201D.",
"checklisten.newInstance.akte": "Akte (optional)",
"checklisten.newInstance.akte.none": "\u2014 no Akte \u2014",
"checklisten.newInstance.akte.hint": "When linked, office colleagues can see the instance.",
"checklisten.newInstance.cancel": "Cancel",
"checklisten.newInstance.submit": "Create",
"checklisten.newInstance.error.name": "Please enter a name.",
"checklisten.newInstance.error.generic": "Failed to create instance. Please try again.",
"checklisten.instances.heading": "Instances",
"checklisten.instances.sub": "Each instance tracks its own progress and can optionally be linked to an Akte.",
"checklisten.instances.loading": "Loading\u2026",
"checklisten.instances.empty": "No instances yet. Click \u201CNew instance\u201D to start.",
"checklisten.instances.col.name": "Name",
"checklisten.instances.col.progress": "Progress",
"checklisten.instances.col.akte": "Akte",
"checklisten.instances.col.created": "Created",
"checklisten.instances.delete.confirm": "Really delete instance \u201C{name}\u201D?",
"checklisten.instances.delete.error": "Failed to delete.",
"checklisten.instance.title": "Checklist instance \u2014 Paliad",
"checklisten.instance.back": "Back to template",
"checklisten.instance.loading": "Loading\u2026",
"checklisten.instance.notfound": "Instance not found or not authorised.",
"checklisten.instance.rename": "Rename",
"checklisten.instance.rename.save": "Save",
"checklisten.instance.rename.error": "Rename failed.",
"checklisten.instance.akte.open": "Open",
"checklisten.disclaimer": "Note: These checklists are aides-memoire only and do not replace case-by-case review. The applicable procedural rules are controlling.",
"checklisten.feedback.btn": "Feedback",
"checklisten.feedback.title": "Checklist feedback",
"checklisten.feedback.type": "Type",
"checklisten.feedback.error": "Error found",
"checklisten.feedback.missing": "Missing item",
"checklisten.feedback.suggestion": "Improvement suggestion",
"checklisten.feedback.other": "Other",
"checklisten.feedback.message": "Message",
"checklisten.feedback.submit": "Submit",
"checklisten.feedback.cancel": "Cancel",
"checklisten.feedback.success": "Thank you for your feedback!",
"checklisten.feedback.error.required": "Please enter a message.",
"checklisten.feedback.error.generic": "Error submitting. Please try again.",
// Gerichte
"gerichte.title": "Court Directory \u2014 Paliad",
"gerichte.heading": "Court Directory",
"gerichte.subtitle": "Contacts, addresses, and filing details for courts, divisions, and offices relevant to patent practice.",
"gerichte.search.placeholder": "Search by name, city, type...",
"gerichte.filter.type": "Type:",
"gerichte.filter.country": "Country:",
"gerichte.filter.all": "All",
"gerichte.filter.de": "Germany",
"gerichte.filter.epa": "EPO",
"gerichte.filter.national": "National",
"gerichte.empty": "No matches found.",
"gerichte.field.address": "Address",
"gerichte.field.contact": "Contact",
"gerichte.field.fax": "Fax",
"gerichte.field.filing": "Filing",
"gerichte.field.notes": "Practical notes",
"gerichte.field.hlContact": `${FIRM} contact`,
"gerichte.feedback.btn": "Suggest a correction",
"gerichte.feedback.title": "Suggest a correction",
"gerichte.feedback.court": "Court",
"gerichte.feedback.type": "Type of feedback",
"gerichte.feedback.type.address": "Address / contact details",
"gerichte.feedback.type.filing": "Filing details",
"gerichte.feedback.type.notes": "Practical notes",
"gerichte.feedback.type.missing": "Missing court",
"gerichte.feedback.type.other": "Other",
"gerichte.feedback.message": "Message",
"gerichte.feedback.cancel": "Cancel",
"gerichte.feedback.submit": "Submit",
"gerichte.feedback.success": "Thank you \u2014 your feedback has been recorded.",
"gerichte.feedback.error.required": "Please enter a message.",
"gerichte.feedback.error.generic": "Error submitting. Please try again.",
// Index \u2014 Gerichte card
"index.gerichte.title": "Court Directory",
"index.gerichte.desc": "Courts, UPC divisions and patent offices at a glance \u2014 addresses, filing details, and languages.",
// Akten (matters) \u2014 list
"projects.filter.office": "Office",
"projects.filter.office.all": "All offices",
"projects.filter.status.completed": "Completed",
"projects.status.active": "Active",
"projects.status.completed": "Completed",
"projects.status.archived": "Archived",
"projects.col.ref": "Reference",
"projects.col.office": "Office",
"projects.onboarding.required": "Please complete onboarding before creating matters.",
// Akten \u2014 create form
"projects.field.ref": "Reference number",
"projects.field.ref.placeholder": `e.g. ${FIRM}-2026-0042`,
"projects.field.office": "Owning office",
"projects.field.courtRef": "Court reference (optional)",
"projects.field.akteType": "Proceeding type (optional)",
"projects.field.firmWide": "Firm-wide visible",
"projects.field.firmWide.hint": "When enabled, all lawyers can see this matter. Partners/admins only.",
"projects.field.collaborators": "Additional collaborators (optional)",
"projects.field.collaborators.placeholder": "Type a name or email\u2026",
"projects.field.collaborators.hint": "Users who should also have access (including cross-office).",
"projects.error.required": "Title and reference are required.",
"projects.error.generic": "Error creating matter. Please try again.",
"projects.error.forbidden": "Not allowed. Check your role and office.",
// Akten \u2014 detail
"projects.detail.firmwide.on": "Firm-wide visible",
"projects.detail.firmwide.off": "Office-only",
"projects.detail.checklisten.hint": "Instances are created on the template page under \"Checklists\".",
"projects.detail.verlauf.loadingMore": "Loading \u2026",
"projects.detail.parteien.remove": "Remove",
"projects.detail.parteien.remove.confirm": "Really remove this party?",
// Phase E — Fristen (persistent deadlines)
"deadlines.list.title": "Deadlines \u2014 Paliad",
"deadlines.list.heading": "Deadlines",
"deadlines.list.subtitle": "Persistent deadlines for your matters. Overdue, today, this week, next week \u2014 at a glance.",
"deadlines.list.new": "New deadline",
"deadlines.summary.overdue": "Overdue",
"deadlines.summary.today": "Today",
"deadlines.summary.thisweek": "This week",
"deadlines.summary.nextweek": "Next week",
"deadlines.summary.completed": "Done",
"deadlines.summary.later": "Later",
"deadlines.filter.status": "Status",
"deadlines.filter.akte": "Matter",
"deadlines.filter.all": "All (open & completed)",
"deadlines.filter.pending": "All open",
"deadlines.filter.overdue": "Overdue",
"deadlines.filter.today": "Today",
"deadlines.filter.thisweek": "This week",
"deadlines.filter.nextweek": "Next week",
"deadlines.filter.completed": "Done",
"deadlines.filter.later": "Later",
"deadlines.filter.akte.all": "All matters",
"deadlines.col.due": "Due",
"deadlines.col.title": "Title",
"deadlines.col.akte": "Matter",
"deadlines.col.rule": "Rule",
"deadlines.col.status": "Status",
"deadlines.empty.title": "No deadlines yet",
"deadlines.empty.hint": "Once deadlines are added or imported from the calculator, they appear here.",
"deadlines.empty.filtered": "No deadlines match these filters.",
"deadlines.unavailable": "Deadline management currently unavailable \u2014 please contact your administrator.",
"deadlines.status.pending": "Open",
"deadlines.status.completed": "Completed",
"deadlines.status.cancelled": "Cancelled",
"deadlines.status.waived": "Waived",
"deadlines.urgency.overdue": "Overdue",
"deadlines.urgency.today": "Today",
"deadlines.urgency.soon": "Soon",
"deadlines.urgency.later": "Later",
"deadlines.complete.action": "Complete",
"deadlines.complete.confirm": "Mark deadline \u201c{title}\u201d as completed?",
// t-paliad-139 \u2014 subtree aggregation toggle and attribution chip
"aggregation.toggle.subtree": "Incl. sub-projects",
"aggregation.toggle.direct_only": "Direct only",
"aggregation.attribution.on": "on",
// t-paliad-139 Phase 2 \u2014 Team-tab subsections + Partner Units management
"projects.team.section.from_descendants": "From sub-projects",
"projects.team.section.from_descendants.hint": "People directly staffed on a sub-project who are not on this project or an ancestor.",
"projects.team.section.derived": "Derived (Partner Unit)",
"projects.team.section.derived.hint": "Members active on this project via an attached partner unit.",
"projects.team.section.units": "Partner Units",
"projects.team.section.units.hint": "Partner units attached to this project. Members in the listed unit roles auto-derive.",
"projects.team.derived.from": "via",
"projects.team.derived.visibility": "View",
"projects.team.derived.authority": "View & 4-eye",
"projects.team.derived.authority.hint": "Authority: derived members count as approvers.",
"projects.team.units.attach": "Attach partner unit",
"projects.team.units.detach": "Remove",
"projects.team.units.choose": "Select a unit\u2026",
"projects.team.units.select": "Unit",
"projects.team.units.derive_roles": "Which unit roles should derive?",
"projects.team.units.grants_authority": "Grant authority (4-eye)",
"projects.team.units.col.name": "Unit",
"projects.team.units.col.derive_roles": "Derived roles",
"projects.team.units.col.authority": "Authority",
"projects.team.units.members": "members",
"projects.team.units.empty": "No partner units attached.",
"projects.team.units.confirm_detach": "Remove partner unit?",
"unit_role.lead": "Lead",
"unit_role.attorney": "Attorney",
"unit_role.senior_pa": "Senior PA",
"unit_role.pa": "PA",
"unit_role.paralegal": "Paralegal",
"deadlines.neu.title": "New deadline \u2014 Paliad",
"deadlines.neu.heading": "Create new deadline",
"deadlines.neu.subtitle": "A persistent deadline attached to a matter. Visible to anyone who can see that matter.",
"deadlines.neu.back": "\u2190 Back to list",
"deadlines.neu.cancel": "Cancel",
"deadlines.neu.submit": "Create deadline",
"deadlines.field.akte": "Matter",
"deadlines.field.akte.choose": "Please choose\u2026",
"deadlines.field.akte.empty": "You don't have any matters yet. Please create one first.",
"deadlines.field.akte.empty.link": "Create matter",
"deadlines.field.title": "Title",
"deadlines.field.title.placeholder": "e.g. File statement of defence",
"deadlines.field.due": "Due date",
"deadlines.field.rule": "Rule (optional)",
"deadlines.field.rule.auto_badge": "Auto",
"deadlines.field.rule.auto_no_match": "No rule maps to the chosen Type",
"deadlines.field.rule.auto_pick_type": "Pick a Type first",
"deadlines.field.rule.custom_badge": "Custom",
"deadlines.field.rule.custom_placeholder": "e.g. internal review meeting, client call",
"deadlines.field.rule.mode.toggle_to_auto": "Back to Auto",
"deadlines.field.rule.mode.toggle_to_custom": "Enter custom rule",
"deadlines.field.title.default_btn": "Default title",
"deadlines.field.title.default_fallback": "New deadline",
"deadlines.field.notes": "Notes (optional)",
"deadlines.field.notes.placeholder": "References, hints, next steps\u2026",
"deadlines.error.required": "Matter, title and due date are required.",
"deadlines.error.generic": "Error creating deadline. Please try again.",
"deadlines.detail.title": "Deadline \u2014 Paliad",
"deadlines.detail.back": "\u2190 Back to deadlines",
"deadlines.detail.loading": "Loading\u2026",
"deadlines.detail.notfound": "Deadline not found or not accessible.",
"deadlines.detail.complete": "Mark as completed",
"deadlines.detail.completed.already": "Already completed",
"deadlines.detail.reopen": "Reopen",
"deadlines.action.reopen": "Reopen",
"deadlines.detail.edit": "Edit",
"deadlines.detail.save": "Save",
"deadlines.detail.cancel": "Cancel",
"deadlines.detail.delete": "Delete deadline",
"deadlines.detail.delete.confirm.title": "Really delete this deadline?",
"deadlines.detail.delete.confirm.body": "The deadline will be permanently removed. The entry in the matter activity log is preserved.",
"deadlines.detail.delete.confirm.cancel": "Cancel",
"deadlines.detail.delete.confirm.ok": "Delete",
"deadlines.detail.due": "Due date",
"deadlines.detail.rule": "Rule",
"deadlines.detail.source": "Source",
"deadlines.detail.notes": "Notes",
"deadlines.detail.created": "Created",
"deadlines.detail.completed": "Completed on",
"deadlines.source.manual": "Manual",
"deadlines.source.fristenrechner": "Calculator",
"deadlines.source.caldav": "CalDAV",
"deadlines.source.imported": "Import",
"cal.day.mon": "Mon",
"cal.day.tue": "Tue",
"cal.day.wed": "Wed",
"cal.day.thu": "Thu",
"cal.day.fri": "Fri",
"cal.day.sat": "Sat",
"cal.day.sun": "Sun",
"cal.month.0": "January",
"cal.month.1": "February",
"cal.month.2": "March",
"cal.month.3": "April",
"cal.month.4": "May",
"cal.month.5": "June",
"cal.month.6": "July",
"cal.month.7": "August",
"cal.month.8": "September",
"cal.month.9": "October",
"cal.month.10": "November",
"cal.month.11": "December",
"cal.view.month": "Month",
"cal.view.week": "Week",
"cal.view.day": "Day",
"cal.month.prev": "Previous month",
"cal.month.next": "Next month",
"cal.week.prev": "Previous week",
"cal.week.next": "Next week",
"cal.day.prev": "Previous day",
"cal.day.next": "Next day",
"cal.day.back_to_month": "Back to month",
"cal.today": "Today",
"cal.day.open_day": "Open day view",
"cal.day.no_entries": "Nothing scheduled this day.",
// Akten detail — Fristen tab (Phase E)
// Fristenrechner — save to Akte (Phase E)
"deadlines.save.cta": "Save as deadline(s)",
"deadlines.save.modal.title": "Import deadlines",
"deadlines.save.modal.akte": "Matter",
"deadlines.save.modal.akte.choose": "Please choose\u2026",
"deadlines.save.modal.choose": "Select which deadlines to import:",
"deadlines.save.modal.cancel": "Cancel",
"deadlines.save.modal.submit": "Import",
"deadlines.save.modal.no_akten": "You don't have any matters yet. Please create one first.",
"deadlines.save.modal.no_akten.link": "Create matter",
"deadlines.save.success": "Deadlines imported.",
"deadlines.save.success.link": "Open deadlines",
"deadlines.save.error": "Import failed.",
"deadlines.save.skip_court_set": "Court-set entries with no date will be skipped.",
// Fristenrechner overhaul — shared result view (S2, design §4).
"deadlines.overhaul.loading": "Loading follow-up deadlines…",
"deadlines.overhaul.load_error": "Could not load follow-up deadlines.",
"deadlines.overhaul.empty": "No follow-up deadlines configured for this event.",
"deadlines.overhaul.trigger.label": "Trigger event",
"deadlines.overhaul.trigger.date": "Trigger date:",
"deadlines.overhaul.followups.label": "Follow-up deadlines",
"deadlines.overhaul.group.mandatory": "Mandatory",
"deadlines.overhaul.group.recommended": "Recommended",
"deadlines.overhaul.group.optional": "Optional",
"deadlines.overhaul.group.conditional": "Conditional",
"deadlines.overhaul.spawn.badge": "⇲ new proceeding",
"deadlines.overhaul.spawn.tooltip": "This rule initiates a new proceeding.",
"deadlines.detail.label": "Detail:",
"deadlines.detail.mandatory_only": "Mandatory only",
"deadlines.detail.selected": "Selected",
"deadlines.detail.all_options": "All options",
"deadlines.detail.optional_unselected_hint": "This rule is optional and not part of the current scenario.",
"deadlines.detail.aufnehmen": "Add",
"deadlines.detail.entfernen": "Remove",
"deadlines.overhaul.condition.badge": "Conditional",
"deadlines.overhaul.crossparty.badge": "Other side",
"deadlines.overhaul.crossparty.tooltip": "This deadline is filed by the opposing party. Shown for information only — not added to the Akte.",
"deadlines.overhaul.notes.summary": "Note",
"deadlines.overhaul.edit_date.label": "✏ Date",
"deadlines.overhaul.edit_date.title": "Edit date manually",
"deadlines.overhaul.select_rule": "Select deadline",
"deadlines.overhaul.footer.count": "{n} deadlines selected",
"deadlines.overhaul.footer.cta": "Add to project",
"deadlines.overhaul.nudge.no_project": "Tip: pick a project above to import these deadlines.",
"deadlines.party.claimant": "Claimant",
"deadlines.party.defendant": "Defendant",
"deadlines.party.both": "Both parties",
"deadlines.party.court": "Court",
// Fristenrechner overhaul Mode A — Direct search (S3, design §3.1).
"deadlines.overhaul.modes.label": "Mode",
"deadlines.overhaul.modes.search": "Direct search",
"deadlines.overhaul.modes.wizard": "Guided",
"deadlines.overhaul.wizard.coming_soon": "Guided mode coming in the next slice.",
"deadlines.overhaul.modea.filters.label": "Filters",
"deadlines.overhaul.modea.filters.heading": "Filters (narrow)",
"deadlines.overhaul.modea.axis.forum": "Forum:",
"deadlines.overhaul.modea.axis.proc": "Proceeding:",
"deadlines.overhaul.modea.axis.kind": "What happened:",
"deadlines.overhaul.modea.axis.party": "Party:",
"deadlines.overhaul.modea.axis.inbox": "Inbox channel:",
"deadlines.overhaul.modea.chip.all": "All",
"deadlines.overhaul.modea.inbox.summary": "Advanced: Inbox channel",
"deadlines.overhaul.modea.inbox.postal": "Postal",
"deadlines.overhaul.modea.search.label": "Search",
"deadlines.overhaul.modea.search.placeholder": "Statement of Claim, decision notice, oral hearing…",
"deadlines.overhaul.modea.results.label": "Results",
"deadlines.overhaul.modea.results.heading": "Results (click to lock as trigger)",
"deadlines.overhaul.modea.results.count": "{n} hits",
"deadlines.overhaul.modea.row.followups": "{n} follow-ups",
"deadlines.overhaul.modea.loading": "Loading…",
"deadlines.overhaul.modea.no_results": "No hits for these filters.",
"deadlines.overhaul.modea.no_proceedings": "No proceedings in this forum.",
"deadlines.overhaul.modea.search_error": "Search failed.",
"deadlines.overhaul.kind.filing": "Filed",
"deadlines.overhaul.kind.hearing": "Hearing",
"deadlines.overhaul.kind.decision": "Decision",
"deadlines.overhaul.kind.order": "Order",
"deadlines.overhaul.kind.missed": "Missed deadline",
// Fristenrechner overhaul Mode B — guided wizard (S4, design §3.2).
"deadlines.overhaul.wizard.heading": "Guided mode",
"deadlines.overhaul.wizard.hint": "Answer top-down — the wizard lands on a trigger event and shows the follow-up deadlines.",
"deadlines.overhaul.wizard.r1.label": "What happened?",
"deadlines.overhaul.wizard.r2.label": "Before which forum?",
"deadlines.overhaul.wizard.r3.label": "In which proceeding?",
"deadlines.overhaul.wizard.r3.empty": "No proceeding with this event kind in the chosen forum.",
"deadlines.overhaul.wizard.r4.label": "Which document / which hearing?",
"deadlines.overhaul.wizard.r4.empty": "No events for this selection.",
"deadlines.overhaul.wizard.r5.label": "Which party do you represent?",
"deadlines.overhaul.wizard.r5.probing": "Checking whether follow-ups depend on the side…",
"deadlines.overhaul.wizard.badge.filter": "Filter",
"deadlines.overhaul.wizard.badge.qualifier": "Qualifier",
"deadlines.overhaul.wizard.edit": "edit",
"deadlines.overhaul.wizard.anno.from_project": "from project",
"deadlines.overhaul.wizard.anno.implicit": "implicit",
// Office labels (shared)
"office.munich": "Munich",
"office.duesseldorf": "D\u00fcsseldorf",
"office.hamburg": "Hamburg",
"office.amsterdam": "Amsterdam",
"office.london": "London",
"office.paris": "Paris",
"office.milan": "Milan",
// Dashboard (logged-in landing)
"dashboard.title": "Dashboard \u2014 Paliad",
"dashboard.greeting.prefix": "Hello",
"dashboard.unavailable": "Dashboard requires the database \u2014 contact an administrator.",
"dashboard.onboarding": "Please complete onboarding before deadlines and matters are shown.",
"dashboard.summary.heading": "Deadlines at a glance",
"dashboard.summary.overdue": "Overdue",
"dashboard.summary.today": "Today",
"dashboard.summary.this_week": "This week",
"dashboard.summary.next_week": "Next week",
"dashboard.summary.completed": "Done",
"dashboard.summary.later": "Later",
"dashboard.appointment_summary.heading": "Appointments at a glance",
"dashboard.matters.heading": "My matters",
"dashboard.matters.active": "Active",
"dashboard.matters.archived": "Archived",
"dashboard.matters.total": "Total",
"dashboard.deadlines.heading": "Upcoming deadlines",
"dashboard.deadlines.empty": "No deadlines in the next 7 days.",
"dashboard.appointments.heading": "Upcoming appointments",
"dashboard.appointments.empty": "No appointments in the next 7 days.",
"dashboard.activity.heading": "Recent activity",
"dashboard.activity.empty": "No activity recorded yet.",
"dashboard.activity.system": "System",
"dashboard.activity.event": "event",
"dashboard.agenda.heading": "Agenda",
"dashboard.agenda.empty": "Nothing due in the next 30 days.",
"dashboard.agenda.full_link": "Open full agenda →",
"dashboard.inbox.heading": "Open approvals",
"dashboard.inbox.empty": "No open approvals.",
"dashboard.inbox.full_link": "Open full inbox →",
"dashboard.inbox.entity.deadline": "Deadline",
"dashboard.inbox.entity.appointment": "Appointment",
"dashboard.edit.toggle": "Customize",
"dashboard.edit.exit": "Done",
"dashboard.edit.add_widget": "Add widget",
"dashboard.edit.reset": "Reset to default",
"dashboard.edit.reset_confirm": "Reset layout to default? This cannot be undone.",
"dashboard.edit.promote": "Save as firm default",
"dashboard.edit.promote_confirm": "Save your current layout as the firm default? New users and 'Reset to default' will use this layout afterwards.",
"dashboard.edit.promoted": "Saved as firm default",
"dashboard.pinned.heading": "Pinned matters",
"dashboard.pinned.empty": "No pinned matters yet.",
"dashboard.pinned.full_link": "Open all matters →",
"dashboard.quick.heading": "Quick actions",
"dashboard.quick.new_project": "+ Matter",
"dashboard.quick.new_deadline": "+ Deadline",
"dashboard.quick.new_appointment": "+ Appointment",
"dashboard.edit.move_up": "Move up",
"dashboard.edit.move_down": "Move down",
"dashboard.edit.hide": "Hide",
"dashboard.edit.settings": "Settings",
"dashboard.edit.drag": "Drag to reorder",
"dashboard.edit.saved": "Saved",
"dashboard.edit.save_failed": "Save failed",
"dashboard.edit.setting.count": "Count",
"dashboard.edit.setting.count.custom": "Custom value (max {n})",
"dashboard.edit.setting.horizon": "Horizon",
"dashboard.edit.setting.horizon.days": "{n} days",
"dashboard.edit.setting.horizon.custom": "Custom horizon in days (max {n})",
"dashboard.edit.setting.view": "View",
"dashboard.edit.setting.size": "Size",
"dashboard.edit.setting.position": "Position",
"dashboard.edit.resize": "Resize",
"dashboard.picker.title": "Add widget",
"dashboard.picker.status.active": "Active",
"dashboard.picker.status.hidden": "Hidden",
"dashboard.picker.status.absent": "Not added",
"dashboard.picker.close": "Done",
"dashboard.picker.empty": "All widgets are already added.",
"dashboard.section.collapse": "Collapse section",
"dashboard.section.expand": "Expand section",
"dashboard.urgency.overdue": "Overdue",
"dashboard.urgency.today": "Today",
"dashboard.urgency.urgent": "Urgent",
"dashboard.urgency.soon": "Soon",
"dashboard.when.today": "today",
"dashboard.when.tomorrow": "tomorrow",
"dashboard.action.short.project_created": "created project",
"dashboard.action.short.project_archived": "archived project",
"dashboard.action.short.project_reparented": "re-parented project",
"dashboard.action.short.project_type_changed": "changed project type",
"dashboard.action.short.status_changed": "changed status",
"dashboard.action.short.our_side_changed": "changed represented side",
"dashboard.action.short.visibility_changed": "changed visibility",
"dashboard.action.short.collaborators_updated": "updated collaborators",
"dashboard.action.short.note_created": "added note",
"dashboard.action.short.deadline_created": "added deadline",
"dashboard.action.short.deadline_updated": "updated deadline",
"dashboard.action.short.deadline_completed": "completed deadline",
"dashboard.action.short.deadline_reopened": "reopened deadline",
"dashboard.action.short.deadline_deleted": "deleted deadline",
"dashboard.action.short.deadline_project_changed": "moved deadline",
"dashboard.action.short.deadlines_imported": "imported deadlines",
"dashboard.action.short.appointment_created": "added appointment",
"dashboard.action.short.appointment_updated": "updated appointment",
"dashboard.action.short.appointment_deleted": "deleted appointment",
"dashboard.action.short.appointment_project_changed": "moved appointment",
// Localized event-row title for the project Verlauf tab — full noun
// phrase ("Deadline updated") complementing the dashboard's verb form.
"event.title.project_created": "Project created",
"event.title.project_archived": "Project archived",
"event.title.project_reparented": "Project re-parented",
"event.title.project_type_changed": "Project type changed",
"event.title.status_changed": "Status changed",
"event.title.our_side_changed": "Represented side changed",
"event.title.note_created": "Note added",
"event.title.deadline_created": "Deadline created",
"event.title.deadline_updated": "Deadline updated",
"event.title.deadline_completed": "Deadline completed",
"event.title.deadline_reopened": "Deadline reopened",
"event.title.deadline_deleted": "Deadline deleted",
"event.title.deadline_project_changed": "Deadline moved",
"event.title.deadlines_imported": "Deadlines imported",
"event.title.appointment_created": "Appointment created",
"event.title.appointment_updated": "Appointment updated",
"event.title.appointment_deleted": "Appointment deleted",
"event.title.appointment_project_changed": "Appointment moved",
// Umbrella audit kind + admin churn surfaced by the FilterBar
// project_event_kind chip cluster (KnownProjectEventKinds).
"event.title.approval_decided": "Approval decided",
"event.title.member_role_changed": "Team role changed",
// 4-eye approval lifecycle (t-paliad-138).
"event.title.deadline_approval_requested": "Approval requested",
"event.title.deadline_approval_approved": "Approval granted",
"event.title.deadline_approval_rejected": "Approval rejected",
"event.title.deadline_approval_revoked": "Request revoked",
"event.title.deadline_approval_changes_suggested": "Changes suggested",
"event.title.appointment_approval_requested": "Approval requested",
"event.title.appointment_approval_approved": "Approval granted",
"event.title.appointment_approval_rejected": "Approval rejected",
"event.title.appointment_approval_revoked": "Request revoked",
"event.title.appointment_approval_changes_suggested": "Changes suggested",
"event.description.deadline_approval_requested": "Four-eyes approval requested for deadline",
"event.description.deadline_approval_approved": "Deadline approval granted",
"event.description.deadline_approval_rejected": "Deadline approval rejected",
"event.description.deadline_approval_revoked": "Deadline approval request revoked",
"event.description.deadline_approval_changes_suggested": "Deadline declined with a counter-proposal",
"event.description.appointment_approval_requested": "Four-eyes approval requested for appointment",
"event.description.appointment_approval_approved": "Appointment approval granted",
"event.description.appointment_approval_rejected": "Appointment approval rejected",
"event.description.appointment_approval_revoked": "Appointment approval request revoked",
"event.description.appointment_approval_changes_suggested": "Appointment declined with a counter-proposal",
"dashboard.action.short.deadline_approval_requested": "requested approval",
"dashboard.action.short.deadline_approval_approved": "approved deadline",
"dashboard.action.short.deadline_approval_rejected": "rejected deadline",
"dashboard.action.short.deadline_approval_revoked": "revoked request",
"dashboard.action.short.appointment_approval_requested": "requested approval",
"dashboard.action.short.appointment_approval_approved": "approved appointment",
"dashboard.action.short.appointment_approval_rejected": "rejected appointment",
"dashboard.action.short.appointment_approval_revoked": "revoked request",
"event.title.checklist_created": "Checklist created",
"event.title.checklist_renamed": "Checklist renamed",
"event.title.checklist_linked": "Checklist linked",
"event.title.checklist_unlinked": "Checklist unlinked",
"event.title.checklist_reset": "Checklist reset",
"event.title.checklist_deleted": "Checklist deleted",
// Note-parent slugs for note_created descriptions
// ("Note added to deadline"). Used by translateEventDescription().
"event.note.parent.project": "project",
"event.note.parent.deadline": "deadline",
"event.note.parent.appointment": "appointment",
"event.note.added_to": "Note added to {parent}",
// Localized full-sentence descriptions for the project Verlauf and the
// dashboard activity feed. Stored descriptions carry just the variable
// payload (title/count/slugs); the renderer interpolates here.
"event.description.deadline_created": "Deadline “{title}” added",
"event.description.deadline_updated": "Deadline “{title}” updated",
"event.description.deadline_completed": "Deadline “{title}” completed",
"event.description.deadline_reopened": "Deadline “{title}” reopened",
"event.description.deadline_deleted": "Deadline “{title}” deleted",
"event.description.deadline_project_changed": "Deadline “{title}” moved to another matter",
"event.description.deadlines_imported": "{count} deadlines imported from Fristenrechner",
"event.description.appointment_created": "Appointment “{title}” added",
"event.description.appointment_updated": "Appointment “{title}” updated",
"event.description.appointment_deleted": "Appointment “{title}” deleted",
"event.description.appointment_project_changed": "Appointment “{title}” moved to another matter",
"dashboard.action.short.checklist_created": "added checklist",
"dashboard.action.short.checklist_renamed": "renamed checklist",
"dashboard.action.short.checklist_unlinked": "unlinked checklist",
"dashboard.action.short.checklist_linked": "linked checklist",
"dashboard.action.short.checklist_reset": "reset checklist",
"dashboard.action.short.checklist_deleted": "deleted checklist",
"dashboard.action.short.partei_added": "added party",
"dashboard.action.short.partei_removed": "removed party",
// Legacy event types kept so historical project_events rows render cleanly
// (writes switched to English in t-paliad-037).
"dashboard.action.short.akte_created": "created matter",
"dashboard.action.short.akte_archived": "archived matter",
"dashboard.action.short.projekt_created": "created matter",
"dashboard.action.short.projekt_archived": "archived matter",
"dashboard.action.short.projekt_reparented": "re-parented matter",
"dashboard.action.short.notiz_created": "added note",
"dashboard.action.short.frist_created": "added deadline",
"dashboard.action.short.frist_updated": "updated deadline",
"dashboard.action.short.frist_completed": "completed deadline",
"dashboard.action.short.frist_deleted": "deleted deadline",
"dashboard.action.short.fristen_imported": "imported deadlines",
"dashboard.action.short.termin_created": "added appointment",
"dashboard.action.short.termin_updated": "updated appointment",
"dashboard.action.short.termin_deleted": "deleted appointment",
"dashboard.action.short.checkliste_created": "added checklist",
"dashboard.action.short.checkliste_renamed": "renamed checklist",
"dashboard.action.short.checkliste_unlinked": "unlinked checklist",
"dashboard.action.short.checkliste_linked": "linked checklist",
"dashboard.action.short.checkliste_reset": "reset checklist",
"dashboard.action.short.checkliste_deleted": "deleted checklist",
// Onboarding (first-login profile capture)
"onboarding.title": "Welcome \u2014 Paliad",
"onboarding.heading": "Welcome to Paliad",
"onboarding.lede": "Please complete your profile so that matters, deadlines, and appointments can be shown.",
"onboarding.display_name": "Display name",
"onboarding.display_name.placeholder": "First and last name",
"onboarding.office": "Office",
"onboarding.office.placeholder": "Please select",
"onboarding.job_title": "Job title",
"onboarding.job_title.placeholder": "e.g. Associate, Partner, Patent Attorney",
"onboarding.profession": "Profession",
"onboarding.profession.hint": "Structured tier — drives the 4-eye approval ladder. Distinct from job title.",
"onboarding.partner_unit": "Partner Unit",
"onboarding.partner_unit.unassigned": "(not assigned yet)",
"onboarding.optional": "(optional)",
"onboarding.submit": "Create profile",
"onboarding.error.display_name": "Please enter a display name.",
"onboarding.error.office": "Please select an office.",
"onboarding.error.job_title": "Please enter a job title.",
"onboarding.error.generic": "Could not create profile.",
"onboarding.error.connection": "Connection error. Please try again.",
// Termine + CalDAV (Phase F)
"nav.group.einstellungen": "Settings",
"nav.einstellungen": "Settings",
"nav.caldav": "CalDAV",
// Global search (t-paliad-026)
"search.placeholder": "Search...",
"search.no_results": "No results",
"search.group.projects": "Projects",
"search.group.deadlines": "Deadlines",
"search.group.appointments": "Appointments",
"search.group.glossary": "Glossary",
"search.group.courts": "Courts",
"search.group.checklists": "Checklists",
"search.group.links": "Links",
"search.group.users": "Colleagues",
// Command palette (t-paliad-044)
"palette.section.actions": "Actions",
"palette.action.nav.dashboard": "Go to Dashboard",
"palette.action.nav.projects": "Go to Projects",
"palette.action.nav.deadlines": "Go to Deadlines",
"palette.action.nav.appointments": "Go to Appointments",
"palette.action.nav.agenda": "Go to Agenda",
"palette.action.nav.team": "Go to Team",
"palette.action.nav.glossary": "Go to Glossary",
"palette.action.nav.courts": "Go to Courts",
"palette.action.nav.links": "Go to Links",
"palette.action.nav.checklists": "Go to Checklists",
"palette.action.nav.downloads": "Go to Downloads",
"palette.action.nav.settings": "Go to Settings",
"palette.action.create.deadline": "New deadline",
"palette.action.create.appointment": "New appointment",
"palette.action.create.project": "New project",
"palette.action.toggle.lang": "Toggle language",
"palette.action.toggle.pin": "Pin / unpin sidebar",
"palette.action.app.invite": "Invite a colleague",
"palette.action.app.logout": "Logout",
"palette.footer.navigate": "Navigate",
"palette.footer.open": "Open",
"palette.footer.close": "Close",
"sidebar.resize.title": "Resize \u2014 drag, double-click to reset",
// Settings page (t-paliad-022)
"einstellungen.title": "Settings \u2014 Paliad",
"einstellungen.heading": "Settings",
"einstellungen.subtitle": "Profile, notifications, and calendar sync.",
"einstellungen.loading": "Loading\u2026",
"einstellungen.optional": "(optional)",
"einstellungen.save": "Save",
"einstellungen.saved": "Saved.",
"einstellungen.error.generic": "Save failed. Please try again.",
"einstellungen.tab.profil": "Profile",
"einstellungen.tab.benachrichtigungen": "Notifications",
"einstellungen.tab.caldav": "CalDAV",
"einstellungen.tab.export": "Data export",
"einstellungen.export.subtitle": "Download your personal Paliad data as an Excel + JSON + CSV bundle. The package contains everything you can currently see \u2014 your projects, deadlines, appointments, notes, approvals and settings.",
"einstellungen.export.heading": "Personal data export",
"einstellungen.export.what": "The package contains your visible data in three formats in one .zip:",
"einstellungen.export.bullet.xlsx": "paliad-export.xlsx \u2014 one Excel sheet per entity.",
"einstellungen.export.bullet.json": "paliad-export.json \u2014 machine-readable copy for scripts and tools.",
"einstellungen.export.bullet.csv": "csv/<sheet>.csv \u2014 individual tables as CSV (UTF-8 with BOM).",
"einstellungen.export.scope": "Scope: everything you can currently see in Paliad (visibility at the moment of export). Passwords, CalDAV credentials and other secrets are never exported.",
"einstellungen.export.audit": "Every export is logged in the audit log.",
"einstellungen.export.button": "Export data",
"einstellungen.export.started": "Download started. If nothing happens, check your browser's downloads folder.",
"projects.title": "Projects \u2014 Paliad",
"projects.heading": "Projects",
"projects.subtitle": "Clients, litigations, patents and cases \u2014 organised hierarchically.",
"projects.new": "New project",
"projects.search.placeholder": "Title, reference or ClientMatter...",
"projects.filter.type": "Type",
"projects.filter.type.all": "All types",
"projects.filter.status": "Status",
"projects.filter.status.all": "All statuses",
"projects.filter.status.active": "Active",
"projects.filter.status.archived": "Archived",
"projects.filter.status.closed": "Closed",
"projects.filter.view": "View",
"projects.view.flat": "Flat list",
"projects.view.roots": "Roots only",
"projects.unavailable": "Project management is currently unavailable \u2014 please contact an administrator.",
"projects.col.title": "Title",
"projects.col.type": "Type",
"projects.col.reference": "Reference",
"projects.col.clientmatter": "ClientMatter",
"projects.col.status": "Status",
"projects.col.updated": "Last modified",
"projects.empty.title": "No projects yet",
"projects.empty.hint": "Start via \u201cNew project\u201d \u2014 create a client first, then litigations, patents and cases underneath.",
"projects.empty.filtered": "No matches for these filters.",
"projects.cancel": "Cancel",
"projects.submit": "Create project",
"projects.neu.title": "New project \u2014 Paliad",
"projects.neu.heading": "Create a new project",
"projects.neu.subtitle": "Client, litigation, patent, case or generic project \u2014 place it in the hierarchy. Visibility follows the team (you are auto-added as \u201cLead\u201d).",
"projects.field.type": "Type",
"projects.field.type.choose": "Please choose…",
"projects.field.parent": "Parent project",
"projects.field.parent.placeholder": "Type to search for a parent project...",
"projects.field.parent.hint": "Leave blank for a root project (typically a client).",
"projects.field.title": "Title",
"projects.field.title.placeholder": "e.g. Siemens AG | Siemens v. Huawei | EP 1 234 567",
"projects.field.reference": "Internal reference (optional)",
"projects.field.reference.placeholder": `e.g. ${FIRM}-2026-0042`,
"projects.field.client_number": "Client no. (6 digits)",
"projects.field.matter_number": "Matter no. (6 digits)",
"projects.field.clientmatter.hint": `${FIRM} billing numbers. Format CCCCCC.MMMMMM. Client no. is inherited by sub-projects (overridable).`,
"projects.field.billing_reference": "Billing reference (optional)",
"projects.field.netdocuments_url": "netDocuments URL (optional)",
"projects.field.industry": "Industry",
"projects.field.country": "Country (ISO-2)",
"projects.field.description": "Notes",
"projects.field.description.placeholder": "Short notes about the project (optional)...",
"projects.detail.description.heading": "Notes",
"projects.field.patent_number": "Patent number",
"projects.field.filing_date": "Filing date",
"projects.field.grant_date": "Grant date",
"projects.field.court": "Court",
"projects.field.case_number": "Case number (court)",
"projects.field.proceeding_type_id": "Proceeding type",
"projects.field.proceeding_type": "Proceeding type",
"projects.field.proceeding_type.unset": "(unset)",
"projects.field.proceeding_type.hint": "Determines which submission templates show up on this proceeding.",
"projects.field.our_side": "We represent",
"projects.field.our_side.hint": "Pre-selects the perspective chip in the Fristenrechner Determinator. Always overridable from there.",
"projects.field.our_side.unset": "Unknown / not set",
"projects.field.our_side.claimant": "Claimant side",
"projects.field.our_side.defendant": "Defendant side",
"projects.field.our_side.applicant": "Applicant",
"projects.field.our_side.appellant": "Appellant",
"projects.field.our_side.respondent": "Respondent",
"projects.field.our_side.third_party": "Third Party",
"projects.field.our_side.other": "Other party",
"projects.field.our_side.court": "Court / tribunal",
"projects.field.our_side.both": "Both sides",
"projects.field.our_side.none": "—",
"projects.field.client_role": "Client Role",
"projects.field.client_role.hint": "Pre-selects the perspective chip in the Fristenrechner Determinator: Active → claimant side, Reactive → defendant side. Always overridable from there.",
"projects.field.client_role.unset": "Unknown",
"projects.field.client_role.group.active": "Active (we initiate)",
"projects.field.client_role.group.reactive": "Reactive (we defend)",
"projects.field.client_role.group.other": "Third Party / Other",
"projects.field.client_role.claimant": "Claimant side",
"projects.field.client_role.applicant": "Applicant",
"projects.field.client_role.appellant": "Appellant",
"projects.field.client_role.defendant": "Defendant side",
"projects.field.client_role.respondent": "Respondent",
"projects.field.client_role.third_party": "Third Party",
"projects.field.client_role.other": "Other party",
"projects.field.opponent_code": "Opponent code",
"projects.field.opponent_code.placeholder": "e.g. OPNT",
"projects.field.opponent_code.hint": "Short slug for the opposing party (uppercase letters, digits, dashes, max 16 chars). Used as the middle segment in auto-derived project codes (e.g. EXMPL.OPNT.567.INF.CFI).",
"projects.field.status": "Status",
"projects.error.title_required": "Title required",
"projects.detail.edit.type_change_warning.title": "These fields will be cleared:",
"projects.detail.title": "Project \u2014 Paliad",
"projects.detail.back": "\u2190 Back to overview",
"projects.detail.loading": "Loading\u2026",
"projects.detail.notfound": "Project not found or no access.",
"projects.detail.smarttimeline.open_chart": "View as chart \u2197",
"projects.chart.title": "Project Chart \u2014 Paliad",
"projects.chart.back": "\u2190 Back to Activity",
"projects.chart.loading": "Loading\u2026",
"projects.chart.notfound": "Project not found or no access.",
"projects.chart.error.mount": "Chart could not be initialised.",
"projects.chart.control.layout.horizontal": "Layout: horizontal",
"projects.chart.control.columns.auto": "Columns: auto",
"projects.chart.control.density.standard": "Density: standard",
"projects.chart.control.palette.default": "Palette: default",
"projects.chart.control.export.soon": "Export \u2193 (Slice 2)",
"projects.chart.control.palette.label": "Palette:",
"projects.chart.palette.default": "Default",
"projects.chart.palette.kind_coded": "By event kind",
"projects.chart.palette.track_coded": "By track",
"projects.chart.palette.high_contrast": "High contrast",
"projects.chart.palette.print": "Print (B/W)",
"projects.chart.control.density.label": "Density:",
"projects.chart.density.compact": "Compact",
"projects.chart.density.standard": "Standard",
"projects.chart.density.spacious": "Spacious",
"projects.chart.control.range.label": "Range:",
"projects.chart.range.1y": "1 year",
"projects.chart.range.2y": "2 years",
"projects.chart.range.all": "Show all",
"projects.chart.range.custom": "Custom range…",
"projects.chart.range.from": "From:",
"projects.chart.range.to": "To:",
"projects.chart.permalink.copy": "🔗 Copy link",
"projects.chart.permalink.title": "Copy the URL with all filters to clipboard",
"nav.context.project_chart": "View as chart",
"projects.chart.export.menu": "⇓ Export",
"projects.chart.export.svg": "SVG (vector graphic)",
"projects.chart.export.png": "PNG (raster, 2× HiDPI)",
"projects.chart.export.print": "PDF (print)",
"projects.chart.export.csv": "CSV (Excel table)",
"projects.chart.export.json": "JSON (raw data)",
"projects.chart.export.ics": "iCal (.ics — Outlook / Apple)",
"projects.detail.edit": "Edit",
"projects.detail.edit.modal.title": "Edit project",
"projects.detail.save": "Save",
"projects.detail.tab.verlauf": "Activity",
"projects.detail.tab.team": "Team",
"projects.detail.tab.kinder": "Project Tree",
"projects.detail.tab.parteien": "Parties",
"projects.detail.tab.fristen": "Deadlines",
"projects.detail.tab.termine": "Appointments",
"projects.detail.tab.notizen": "Notes",
"projects.detail.tab.checklisten": "Checklists",
"projects.detail.tab.submissions": "Submissions",
"projects.detail.tab.settings": "Settings",
"projects.detail.export.button": "Export data",
"projects.detail.export.tooltip": "Download this project's data (including sub-projects) as Excel + JSON + CSV.",
"projects.detail.settings.export.heading": "Export data",
"projects.detail.settings.export.description": "Download all data for this project (including sub-projects) as an Excel + JSON + CSV archive.",
"projects.detail.settings.archive.heading": "Archive project",
"projects.detail.settings.archive.description": "Archiving happens in the edit dialog (danger zone).",
"projects.detail.settings.archive.cta": "Open edit dialog",
"projects.detail.submissions.empty": "No submission templates are configured yet.",
"projects.detail.submissions.empty.no_proceeding": "No proceeding type is set for this project yet — the catalog below still lists every template.",
"projects.detail.submissions.empty.no_proceeding.cta": "Edit project",
"projects.detail.submissions.col.name": "Submission",
"projects.detail.submissions.col.party": "Party",
"projects.detail.submissions.col.source": "Legal basis",
"projects.detail.submissions.col.action": "",
"projects.detail.submissions.action.generate": "Generate",
"projects.detail.submissions.action.no_template": "No template",
"projects.detail.submissions.action.edit": "Edit",
"projects.detail.submissions.hint": "Submissions are generated as .docx directly from the project. Edit, print, file.",
// t-paliad-238 — dedicated draft editor page.
"submissions.draft.title": "Edit submission — Paliad",
"submissions.draft.back": "← Back to project",
"submissions.draft.loading": "Loading…",
"submissions.draft.notfound": "Submission not found or insufficient access.",
"submissions.draft.action.export": "Export as .docx",
"submissions.draft.action.new": "+ New draft",
"submissions.draft.action.delete": "Delete",
"submissions.draft.switcher.label": "Draft",
"submissions.draft.name.placeholder": "Name of this draft",
"submissions.draft.preview.title": "Preview",
// t-paliad-276 — DE/EN language toggle on the draft editor.
"submissions.draft.language": "Language",
"submissions.draft.language.de": "DE",
"submissions.draft.language.en": "EN",
"submissions.draft.language.fallback_notice": "Fallback: universal skeleton (no language-matched template).",
"submissions.draft.preview.hint": "Read-only preview — final formatting in Word.",
// t-paliad-277 — import-from-project + party-picker.
"submissions.draft.import.button": "Import from project",
"submissions.draft.parties.title": "Parties",
"submissions.draft.parties.hint": "Pick the parties mentioned in this submission, or add more per side.",
// t-paliad-313 (m/paliad#141) Composer Slice A — base picker + section list.
"submissions.draft.base.label": "Template base",
"submissions.draft.base.hint": "Drives fonts, letterhead, and section defaults.",
"submissions.draft.sections.title": "Sections",
"submissions.draft.sections.hint": "Edit per section — autosaves after 500ms. Final layout in Word.",
// t-paliad-349 (m/paliad#157) docforge slice 6 — template authoring page.
"templates.authoring.title": "Templates — Paliad",
"templates.authoring.heading": "Templates",
"templates.authoring.intro": "Upload a Word template, highlight spots and insert variables.",
"templates.authoring.upload.title": "Upload a new template",
"templates.authoring.upload.file": "Word file (.docx)",
"templates.authoring.upload.name_de": "Name (DE)",
"templates.authoring.upload.name_en": "Name (EN)",
"templates.authoring.upload.firm": "Firm (optional)",
"templates.authoring.upload.submit": "Upload",
"templates.authoring.list.title": "Existing templates",
"templates.authoring.workspace.hint": "Highlight text, then pick a variable to place a placeholder.",
"templates.authoring.slots.title": "Placeholders",
// t-paliad-315 (m/paliad#141) Composer Slice C — building blocks admin.
"admin.building_blocks.title": "Building blocks — Paliad",
"admin.building_blocks.heading": "Building blocks",
"admin.building_blocks.subtitle": "Reusable text snippets for Composer sections.",
"admin.building_blocks.loading": "Loading…",
"admin.building_blocks.action.new": "+ New block",
"admin.building_blocks.editor.empty": "Pick a block from the list — or create a new one.",
// t-paliad-240 — global submissions drafts index page.
"submissions.index.title": "Submissions — Paliad",
"submissions.index.heading": "Submissions",
"submissions.index.subtitle": "Your submission drafts across every visible project.",
"submissions.index.loading": "Loading…",
"submissions.index.empty": "No drafts yet. Start a new draft — with or without a project.",
"submissions.index.empty.cta": "+ New draft",
"submissions.index.error": "Could not load submissions.",
"submissions.index.col.project": "Project",
"submissions.index.col.submission": "Submission",
"submissions.index.col.draft": "Draft",
"submissions.index.col.updated": "Last updated",
"submissions.index.action.new": "+ New draft",
"submissions.new.title": "New submission — Paliad",
"submissions.new.back": "← Back to drafts",
"submissions.new.heading": "New submission",
"submissions.new.subtitle": "Pick a template. Optionally bind it to a project — otherwise all variables are filled manually.",
"submissions.new.search.placeholder": "Search by name, code or statute…",
"submissions.new.loading": "Loading…",
"submissions.new.error": "Could not load catalog.",
"submissions.new.col.name": "Submission",
"submissions.new.col.party": "Party",
"submissions.new.col.source": "Legal source",
"submissions.new.col.actions": "Start draft",
"submissions.new.empty.filtered": "No submissions match the filters. Reset them to see the full catalog.",
"submissions.new.picker.title": "Pick a project",
"submissions.new.picker.placeholder": "Search project (title or reference)…",
"submissions.new.picker.loading": "Loading projects…",
"submissions.new.picker.empty": "No visible projects.",
"projects.detail.verlauf.empty": "No events recorded yet.",
"projects.detail.verlauf.loadMore": "Load more",
"projects.detail.smarttimeline.empty": "No events captured yet.",
"projects.detail.smarttimeline.today": "Today",
"projects.detail.smarttimeline.section.past": "Past",
"projects.detail.smarttimeline.section.future": "Future",
"projects.detail.smarttimeline.section.undated": "Undated",
"projects.detail.smarttimeline.kind.deadline": "Deadline",
"projects.detail.smarttimeline.kind.appointment": "Appointment",
"projects.detail.smarttimeline.kind.milestone": "Milestone",
"projects.detail.smarttimeline.kind.projected": "Predicted",
"projects.detail.smarttimeline.status.done": "Done",
"projects.detail.smarttimeline.status.open": "Open",
"projects.detail.smarttimeline.status.overdue": "Overdue",
"projects.detail.smarttimeline.status.court_set": "Court-set date",
"projects.detail.smarttimeline.status.predicted": "Predicted",
"projects.detail.smarttimeline.status.off_script": "Custom",
"projects.detail.smarttimeline.audit.toggle.show": "Show audit log",
"projects.detail.smarttimeline.audit.toggle.hide": "Timeline only",
"projects.detail.smarttimeline.add.cta": "+ Entry",
"projects.detail.smarttimeline.add.modal.title": "New SmartTimeline entry",
"projects.detail.smarttimeline.add.choice.deadline": "Add a deadline",
"projects.detail.smarttimeline.add.choice.appointment": "Add an appointment",
"projects.detail.smarttimeline.add.choice.counterclaim": "Counterclaim (CCR)",
"projects.detail.smarttimeline.add.choice.amend": "Application to amend (R.30)",
"projects.detail.smarttimeline.add.choice.milestone": "Custom milestone",
"projects.detail.smarttimeline.add.choice.disabled": "Coming in Slice 3",
"projects.detail.smarttimeline.add.cancel": "Cancel",
"projects.detail.smarttimeline.add.submit": "Save",
"projects.detail.smarttimeline.milestone.title": "Title",
"projects.detail.smarttimeline.milestone.date": "Date (optional)",
"projects.detail.smarttimeline.milestone.description": "Description (optional)",
"projects.detail.smarttimeline.error.title_required": "Please enter a title.",
"projects.detail.smarttimeline.error.generic": "Could not save the entry.",
"projects.detail.smarttimeline.status.predicted_overdue": "Overdue (predicted)",
"projects.detail.smarttimeline.lookahead.more": "+ Show more",
"projects.detail.smarttimeline.lookahead.less": " Show less",
"projects.detail.smarttimeline.depends_on.prefix": "Follows from",
"projects.detail.smarttimeline.depends_on.date_open": "Date open",
"projects.detail.smarttimeline.depends_on.show_path": "Show path",
"projects.detail.smarttimeline.depends_on.hide_path": "Hide path",
"projects.detail.smarttimeline.depends_on.path_hint": "Click the parent row to see its dependency.",
"projects.detail.smarttimeline.anchor.set": "Set date",
"projects.detail.smarttimeline.anchor.save": "Save",
"projects.detail.smarttimeline.anchor.cancel": "Cancel",
"projects.detail.smarttimeline.anchor.saving": "Saving…",
"projects.detail.smarttimeline.anchor.saved": "Saved.",
"projects.detail.smarttimeline.anchor.error": "Could not set the date.",
"projects.detail.smarttimeline.anchor.invalid_date": "Invalid date (YYYY-MM-DD).",
"projects.detail.smarttimeline.track.label": "Track",
"projects.detail.smarttimeline.track.both": "Both",
"projects.detail.smarttimeline.track.only.parent": "Main proceeding only",
"projects.detail.smarttimeline.track.only.counterclaim": "Counterclaim only",
"projects.detail.smarttimeline.track.only.parent_context": "Main proceeding only (context)",
"projects.detail.smarttimeline.track.header.parent": "Main proceeding",
"projects.detail.smarttimeline.track.header.counterclaim": "Counterclaim (CCR)",
"projects.detail.smarttimeline.track.header.parent_context": "Main proceeding (context)",
"projects.detail.smarttimeline.counterclaim.procedure": "Proceeding type",
"projects.detail.smarttimeline.counterclaim.title": "Title (optional)",
"projects.detail.smarttimeline.counterclaim.case_number": "CCR case number (optional)",
"projects.detail.smarttimeline.counterclaim.flip_override": "Do NOT flip our side („Stimmt nicht?”)",
"projects.detail.smarttimeline.counterclaim.flip_hint": "In the standard case (CCR on validity) our side flips (claimant ↔ defendant). Enable for the R.49.2.b CCI edge case.",
"projects.detail.smarttimeline.counterclaim.submit": "Create counterclaim",
"projects.detail.smarttimeline.counterclaim.saving": "Creating counterclaim…",
"projects.detail.smarttimeline.lane.empty": "No entries in this lane.",
"projects.detail.smarttimeline.lane.filter.label": "Lanes",
"projects.detail.smarttimeline.lane.filter.all": "All",
"projects.detail.smarttimeline.client.toggle.lanes": "Timeline view",
"projects.detail.smarttimeline.client.toggle.matter_list": "Matter list",
"projects.detail.smarttimeline.client.matter_list.heading": "Matters of this client",
"projects.detail.smarttimeline.client.matter_list.hint": "Click a matter to open its detailed timeline, or switch to „Timeline view“ above.",
"projects.detail.smarttimeline.client.matter_list.empty": "No matters yet.",
"projects.detail.smarttimeline.milestone.bubble_up": "Show on parent matters",
"projects.detail.smarttimeline.milestone.bubble_up_hint": "When checked, this milestone surfaces on patent, litigation, and client SmartTimelines.",
"projects.detail.team.form.user": "User",
"projects.detail.team.form.role": "Role",
"projects.detail.team.form.responsibility": "Project role",
"projects.detail.team.form.profession.label": "Profession",
"projects.detail.team.form.profession.none": "No profession set — cannot grant 4-eye approvals.",
"projects.detail.team.form.cancel": "Cancel",
"projects.detail.team.form.submit": "Add",
"projects.detail.team.col.name": "Name",
"projects.detail.team.col.role": "Role",
"projects.detail.team.col.profession": "Profession",
"projects.detail.team.col.responsibility": "Project role",
"projects.detail.team.col.source": "Source",
"projects.detail.kinder.add": "Create sub-project",
"projects.detail.kinder.empty": "No sub-projects.",
"projects.detail.parteien.add": "Add party",
"projects.detail.parteien.form.name": "Name",
"projects.detail.parteien.form.role": "Role",
"projects.detail.parteien.form.rep": "Representative (optional)",
"projects.detail.parteien.form.cancel": "Cancel",
"projects.detail.parteien.form.submit": "Add",
"projects.detail.parteien.role.claimant": "Claimant",
"projects.detail.parteien.role.defendant": "Defendant",
"projects.detail.parteien.role.thirdparty": "Third-party / intervenor",
"projects.detail.parteien.col.name": "Name",
"projects.detail.parteien.col.role": "Role",
"projects.detail.parteien.col.rep": "Representative",
"projects.detail.parteien.empty": "No parties recorded yet.",
"projects.detail.deadlines.add": "Add deadline",
"projects.detail.deadlines.empty": "No deadlines recorded for this project.",
"projects.detail.appointments.add": "Add appointment",
"projects.detail.appointments.form.cancel": "Cancel",
"projects.detail.appointments.form.submit": "Add",
"projects.detail.appointments.empty": "No appointments recorded for this project.",
"projects.detail.checklisten.empty": "No checklist instances recorded for this project.",
"projects.detail.checklisten.col.template": "Template",
"projects.detail.checklisten.col.name": "Name",
"projects.detail.checklisten.col.progress": "Progress",
"projects.detail.checklisten.col.created": "Created",
"projects.detail.checklisten.hint.prefix": "Templates are created and edited on the ",
"projects.detail.checklisten.hint.link": "Checklists",
"projects.detail.checklisten.hint.suffix": " page.",
"projects.detail.checklisten.add": "Add checklist",
"projects.detail.checklisten.add.search": "Search template…",
"projects.detail.checklisten.add.empty_pick": "No matching templates.",
"projects.detail.checklisten.add.created": "Checklist added.",
"projects.detail.checklisten.add.error": "Could not create checklist.",
"projects.detail.delete": "Archive project",
"projects.detail.delete.confirm.title": "Archive project?",
"projects.detail.delete.confirm.body": "The project will be archived. It cannot be directly restored.",
"projects.detail.delete.confirm.cancel": "Cancel",
"projects.detail.delete.confirm.ok": "Archive",
"projects.type.client": "Client",
"projects.type.litigation": "Litigation",
"projects.type.patent": "Patent",
"projects.type.case": "Case",
"projects.type.project": "Project",
"projects.type.other": "Other",
"projects.team.role.lead": "Lead",
"projects.team.role.associate": "Associate",
"projects.team.role.pa": "PA",
"projects.team.role.of_counsel": "Of Counsel",
"projects.team.role.local_counsel": "Local Counsel",
"projects.team.role.expert": "Expert",
"projects.team.role.observer": "Observer",
"projects.team.responsibility.admin": "Admin",
"projects.team.responsibility.admin.hint": "Can manage team and roles on this project and its sub-projects",
"projects.team.responsibility.lead": "Lead",
"projects.team.responsibility.member": "Member",
"projects.team.responsibility.observer": "Observer",
"projects.team.responsibility.external": "External",
"projects.team.error.last_admin": "At least one admin must remain on this project or an ancestor.",
"projects.team.error.forbidden": "This action is not permitted.",
"projects.team.error.generic": "Action failed.",
"projects.team.profession.partner": "Partner",
"projects.team.profession.of_counsel": "Of Counsel",
"projects.team.profession.associate": "Associate",
"projects.team.profession.senior_pa": "Senior PA",
"projects.team.profession.pa": "PA",
"projects.team.profession.paralegal": "Paralegal",
"projects.team.profession.none": "(external)",
"projects.team.profession.hint": "Profession — managed in firm profile",
"projects.team.profession.none.hint": "No profession set — no 4-eye authority",
"projects.team.direct": "direct",
"projects.team.inherited.hint": "Inherited from ancestor",
"projects.detail.team.add": "Add member",
"projects.detail.team.remove": "Remove",
"projects.detail.team.confirm_remove": "Remove member?",
"projects.detail.team.empty": "No team members yet.",
"projects.detail.team.error.user_required": "Select a user",
"projects.detail.team.invite.hint": "User not found?",
"projects.detail.team.invite.hint_email": "No one with that email.",
"projects.detail.team.invite.cta": "Invite",
// t-paliad-231 — pure-client mailto: button on the Team tab.
"projects.team.mailto.label": "Mail to selection",
"projects.team.mailto.empty": "Select at least one member",
"projects.team.mailto.count": "{n} selected",
"projects.team.mailto.select_all": "Select all visible",
"projects.team.mailto.select_row": "Select member",
"projects.view.tree": "Tree view",
"projects.tree.toggle": "Expand / collapse",
"projects.tree.loading": "Loading tree…",
"projects.tree.error": "Failed to load tree view.",
"projects.tree.deadlines.overdue": "Overdue deadlines",
"projects.tree.deadlines.open": "Open deadlines",
"projects.tree.deadlines.subtree.tooltip": "Includes sub-projects",
"projects.tree.deadlines.direct.tooltip": "This project only",
"projects.tree.pin": "Pin",
"projects.tree.unpin": "Unpin",
"projects.tree.inherited.context": "Visible because of a sub-project",
"projects.toolbar.search.placeholder": "Search — title, reference, ClientMatter…",
"projects.toolbar.view.tree": "Tree",
"projects.toolbar.view.cards": "Cards",
"projects.toolbar.view.flat": "List",
"projects.toolbar.subtree_counts": "Count sub-projects too",
"projects.chip.all": "All",
"projects.chip.mine": "Mine",
"projects.chip.pinned": "Pinned",
"projects.chip.status": "Status",
"projects.chip.type": "Type",
"projects.chip.has_open_deadlines": "With open deadlines",
"projects.chip.status.active": "Active",
"projects.chip.status.archived": "Archived",
"projects.chip.status.closed": "Closed",
"projects.chip.type.client": "Client",
"projects.chip.type.litigation": "Litigation",
"projects.chip.type.patent": "Patent",
"projects.chip.type.case": "Case",
"projects.chip.type.project": "Project",
"projects.chip.type.other": "Other",
"projects.chip.multi.none": "Nothing selected",
"projects.chip.multi.count": "{n} selected",
"projects.empty.filtered.action": "Reset filters",
"projects.search.match.self": "Match",
"projects.search.match.ancestor": "Parent of a match",
"projects.search.match.descendant": "Child of a match",
"projects.cards.next_events": "Upcoming",
"projects.cards.recent_verlauf": "Recent",
"projects.cards.no_next_events": "— nothing upcoming",
"projects.cards.no_recent": "— nothing recent",
"projects.cards.team": "Team",
"projects.cards.deadline_open": "open",
"projects.cards.deadline_overdue": "overdue",
"projects.cards.show_all_levels": "Show all levels",
"projects.cards.show_all_levels.hint": "Include Clients + Litigations as their own cards",
"projects.cards.layout.label": "View",
"projects.cards.layout.new": "New view",
"projects.cards.layout.edit": "Edit",
"projects.cards.layout.save": "Save",
"projects.cards.layout.discard": "Discard",
"projects.cards.layout.set_default": "Set as default",
"projects.cards.layout.delete": "Delete",
"projects.cards.layout.rename": "Rename",
"projects.cards.layout.is_default": "Default",
"projects.cards.layout.new.prompt": "Name of the new view",
"projects.cards.layout.delete.confirm": "Really delete this view?",
"projects.cards.layout.delete.default_blocked": "Cannot delete the active default view — switch defaults first.",
"projects.cards.layout.fact.title-row": "Title row",
"projects.cards.layout.fact.type-chip": "Type badge",
"projects.cards.layout.fact.status-chip": "Status badge",
"projects.cards.layout.fact.client-matter": "ClientMatter",
"projects.cards.layout.fact.parent-path": "Parent path",
"projects.cards.layout.fact.deadline-counts": "Deadline counts",
"projects.cards.layout.fact.next-events": "Upcoming events",
"projects.cards.layout.fact.recent-verlauf": "Recent entries",
"projects.cards.layout.fact.team-chips": "Team chips",
"projects.cards.layout.fact.reference": "Reference",
"projects.cards.layout.fact.last-activity-at": "Last activity",
"projects.cards.layout.density": "Density",
"projects.cards.layout.density.compact": "Compact",
"projects.cards.layout.density.roomy": "Roomy",
"projects.cards.layout.grid": "Columns",
"projects.cards.layout.grid.auto": "Auto",
"projects.cards.layout.grid.2": "2",
"projects.cards.layout.grid.3": "3",
"projects.cards.layout.grid.4": "4",
"projects.cards.layout.fact.toggle.hide": "Hide",
"projects.cards.layout.fact.toggle.show": "Show",
"projects.cards.layout.fact.move_up": "Move up",
"projects.cards.layout.fact.move_down": "Move down",
"projects.cards.layout.fact.count": "Count",
"projects.cards.event.kind.deadline": "Deadline",
"projects.cards.event.kind.appointment": "Appointment",
"projects.cards.event.kind.project_event": "Verlauf",
"projects.cards.empty": "No projects to show.",
"projects.detail.clientmatter.inherited": "Inherited from parent",
"einstellungen.profil.email": "Email",
"einstellungen.profil.email.hint": "Email cannot be changed.",
"einstellungen.profil.display_name": "Display name",
"einstellungen.profil.display_name.placeholder": "First and last name",
"einstellungen.profil.office": "Office",
"einstellungen.profil.job_title": "Job title",
"einstellungen.profil.job_title.placeholder": "e.g. Associate, Partner, Patent Attorney",
"einstellungen.profil.lang": "Language",
"einstellungen.profil.lang.de": "Deutsch",
"einstellungen.profil.lang.en": "English",
"einstellungen.profil.lang.hint": "Used for the UI and notification emails.",
"einstellungen.profil.error.display_name": "Please enter a display name.",
"einstellungen.profil.error.office": "Please select an office.",
"einstellungen.profil.error.job_title": "Please enter a job title.",
"einstellungen.prefs.reminders.heading": "Deadline reminders",
"einstellungen.prefs.reminders.hint": "Paliad emails you when deadlines approach.",
"einstellungen.prefs.reminders.master": "Deadline reminders enabled",
"einstellungen.prefs.reminders.overdue": "Overdue deadlines",
"einstellungen.prefs.reminders.due_today": "Due today",
"einstellungen.prefs.reminders.due_warning": "Heads-up (N days ahead)",
"einstellungen.prefs.times.heading": "Send times",
"einstellungen.prefs.times.hint": "Reminders are sent at the chosen time in your timezone.",
"einstellungen.prefs.times.morning": "Morning slot",
"einstellungen.prefs.times.morning.hint": "Bundled email with overdue, due-today and upcoming deadlines.",
"einstellungen.prefs.times.evening": "Evening slot (escalation)",
"einstellungen.prefs.times.evening.hint": "Urgent reminder for deadlines still open today.",
"einstellungen.prefs.times.timezone": "Timezone",
"einstellungen.prefs.times.timezone.hint": "IANA timezone name (e.g. Europe/Berlin, Europe/London).",
"einstellungen.prefs.times.error.required": "Please choose both reminder times.",
"einstellungen.prefs.warning_offset.label": "Heads-up (days ahead)",
"einstellungen.prefs.warning_offset.hint": "We'll remind you this many days before each deadline.",
"einstellungen.prefs.warning_offset.error": "Heads-up must be between 1 and 30 days.",
"einstellungen.prefs.escalation.heading": "Escalation contact",
"einstellungen.prefs.escalation.hint": "Who else should be notified for DRINGEND-escalations in the evening slot? Default: global admins.",
"einstellungen.prefs.escalation.default_option": "— Default (global admins) —",
// Invitation modal (sidebar)
"invite.button": "Invite a colleague",
"invite.modal.title": "Invite a colleague to Paliad",
"invite.modal.body": `Send an invitation to an ${FIRM} email address. The recipient will receive a registration link.`,
"invite.modal.email": "Email address",
"invite.modal.message": "Personal message (optional)",
"invite.modal.message.placeholder": "Hi, I'm using Paliad for matter management \u2014 take a look.",
"invite.modal.cancel": "Cancel",
"invite.modal.send": "Send invitation",
"appointments.list.title": "Appointments \u2014 Paliad",
"appointments.list.heading": "Appointments",
"appointments.list.subtitle": "Hearings, meetings, consultations \u2014 personal or matter-linked.",
"appointments.list.new": "New appointment",
"appointments.summary.today": "Today",
"appointments.summary.thisweek": "This week",
"appointments.summary.later": "Later",
"appointments.filter.type": "Type",
"appointments.filter.type.all": "All types",
"appointments.filter.akte": "Matter",
"appointments.filter.akte.all": "All matters & personal",
"appointments.filter.akte.personal": "Personal only",
"appointments.filter.from": "From",
"appointments.filter.to": "To",
"appointments.col.start": "Start",
"appointments.col.title": "Title",
"appointments.col.akte": "Matter",
"appointments.col.location": "Location",
"appointments.col.type": "Type",
"appointments.empty.title": "No appointments yet",
"appointments.empty.hint": "Once appointments are created they will show up here.",
"appointments.empty.filtered": "No appointments match these filters.",
"appointments.unavailable": "Appointments unavailable \u2014 please contact your administrator.",
"appointments.personal": "Personal",
"appointments.type.hearing": "Hearing",
"appointments.type.meeting": "Meeting",
"appointments.type.consultation": "Consultation",
"appointments.type.deadline_hearing": "Deadline hearing",
"appointments.neu.title": "New appointment \u2014 Paliad",
"appointments.neu.heading": "New appointment",
"appointments.neu.subtitle": "Personal or matter-linked. With CalDAV sync enabled, the appointment also appears in your external calendar.",
"appointments.neu.back": "\u2190 Back to overview",
"appointments.neu.cancel": "Cancel",
"appointments.neu.submit": "Create appointment",
"appointments.field.title": "Title",
"appointments.field.title.placeholder": "e.g. Oral hearing",
"appointments.field.start": "Start",
"appointments.field.end": "End (optional)",
"appointments.field.type": "Type",
"appointments.field.type.none": "No type",
"appointments.field.akte": "Matter (optional)",
"appointments.field.akte.none": "Personal appointment",
"appointments.field.location": "Location (optional)",
"appointments.field.location.placeholder": "e.g. UPC LD Munich",
"appointments.field.description": "Description (optional)",
"appointments.field.description.placeholder": "Notes, agenda, next steps\u2026",
"appointments.error.required": "Title and start are required.",
"appointments.error.generic": "Save failed. Please try again later.",
"appointments.detail.title": "Appointment \u2014 Paliad",
"appointments.detail.back": "\u2190 Back to overview",
"appointments.detail.loading": "Loading\u2026",
"appointments.detail.notfound": "Appointment not found",
"appointments.detail.notfound.hint": "The appointment doesn't exist or you don't have permission.",
"appointments.detail.akte": "Matter:",
"appointments.detail.save": "Save changes",
"appointments.detail.saved": "Saved.",
"appointments.detail.delete": "Delete appointment",
"appointments.detail.delete.confirm": "Really delete this appointment?",
// t-paliad-110 \u2014 unified Events page (rendered on /deadlines + /appointments).
"events.toggle.deadline": "Deadlines",
"events.toggle.appointment": "Appointments",
"events.toggle.all": "Both",
"events.filter.status.all": "All (incl. past)",
"events.filter.status.upcoming": "From today",
"events.summary.later": "Later",
"events.col.date": "Date",
"events.col.location": "Location",
"events.col.appointment_type": "Appointment type",
"events.row.type.deadline": "Deadline",
"events.row.type.appointment": "Appointment",
"events.empty.title": "Nothing yet",
"events.empty.hint": "Once deadlines or appointments are added, they appear here.",
"events.empty.filtered": "No entries match these filters.",
"events.unavailable": "Deadline / appointment management currently unavailable \u2014 please contact your administrator.",
"events.view.cards": "Cards",
"events.view.list": "List",
"events.view.calendar": "Calendar",
"caldav.title": "CalDAV sync \u2014 Paliad",
"caldav.heading": "CalDAV sync",
"caldav.subtitle": "Sync your Paliad appointments with your external calendar (Nextcloud, iCloud, Outlook, mailcow\u2026). The password is stored encrypted and never returned.",
"caldav.disabled": "CalDAV sync currently unavailable \u2014 please contact your administrator.",
"caldav.never": "Never",
"caldav.field.url": "CalDAV server URL",
"caldav.field.url.placeholder": "https://cloud.example.com/remote.php/dav/calendars/user/personal/",
"caldav.field.url.hint": "Full URL to your calendar (including path).",
"caldav.field.username": "Username",
"caldav.field.password": "Password / app token",
"caldav.field.password.hint": "Leave blank when a configuration exists to keep the stored password.",
"caldav.field.calendar_path": "Calendar path (optional)",
"caldav.field.calendar_path.placeholder": "/calendars/user/personal/",
"caldav.field.calendar_path.hint": "If the URL only points at the server, set the calendar path here.",
"caldav.field.enabled": "Sync enabled",
"caldav.test": "Test connection",
"caldav.test.ok": "Connection successful.",
"caldav.test.fail": "Connection failed",
"caldav.save": "Save",
"caldav.saved": "Configuration saved.",
"caldav.delete": "Delete configuration",
"caldav.delete.confirm": "Really delete? The stored password will be removed permanently.",
"caldav.delete.done": "Configuration deleted.",
"caldav.error.required": "URL and username are required.",
"caldav.error.password_required": "Password is required on first save.",
"caldav.error.generic": "Save failed.",
"caldav.status.last_sync": "Last sync:",
"caldav.status.last_error": "Last error:",
"caldav.log.heading": "Recent syncs",
"caldav.log.col.time": "When",
"caldav.log.col.pushed": "Pushed",
"caldav.log.col.pulled": "Pulled",
"caldav.log.col.duration": "Duration",
"caldav.log.col.error": "Error",
"caldav.log.empty": "No sync attempts recorded yet.",
// CalDAV multi-calendar bindings (t-paliad-212 Slice 2b)
"caldav.bindings.heading": "Calendars",
"caldav.bindings.hint": "Connect multiple calendars to Paliad — one master for everything or separate calendars per project.",
"caldav.bindings.add": "+ Add calendar",
"caldav.bindings.empty": "No calendars configured yet.",
"caldav.bindings.scope.all_visible": "Everything",
"caldav.bindings.scope.personal_only": "Personal only",
"caldav.bindings.scope.project": "Project",
"caldav.bindings.card.enabled": "Enabled",
"caldav.bindings.card.edit": "Edit",
"caldav.bindings.card.remove": "Remove",
"caldav.bindings.modal.add_title": "Add calendar",
"caldav.bindings.modal.edit_title": "Edit calendar",
"caldav.bindings.modal.source": "Calendar",
"caldav.bindings.modal.source.loading": "Loading…",
"caldav.bindings.modal.source.existing": "Pick existing calendar",
"caldav.bindings.modal.source.create": "Create new calendar",
"caldav.bindings.modal.source.custom": "Enter custom URL",
"caldav.bindings.modal.source.degrade": "This provider doesn't allow creating calendars via CalDAV. Please create the calendar in your provider's UI and add it here by URL.",
"caldav.bindings.modal.source.discover_failed": "Couldn't discover calendars — enter URL manually.",
"caldav.bindings.modal.source.discover_empty": "No calendars found — enter URL manually.",
"caldav.bindings.modal.display_name": "Display name (optional)",
"caldav.bindings.modal.display_name.placeholder": "e.g. Project Acme v Bosch",
"caldav.bindings.modal.scope": "Contents",
"caldav.bindings.modal.scope.all_visible": "Everything I can see",
"caldav.bindings.modal.scope.personal_only": "Personal appointments only",
"caldav.bindings.modal.scope.project": "One project:",
"caldav.bindings.modal.scope.project.loading": "Loading…",
"caldav.bindings.modal.submit_add": "Add",
"caldav.bindings.modal.submit_edit": "Save",
"caldav.bindings.delete.confirm": "Remove this calendar? Its events will be deleted from the external calendar.",
"caldav.bindings.delete.failed": "Removal failed — please try again later.",
"caldav.bindings.error.scope": "Please pick a content scope.",
"caldav.bindings.error.scope_project": "Please pick a project.",
"caldav.bindings.error.path": "Please pick a calendar or enter a URL.",
"caldav.bindings.error.create_name_required": "Please enter a display name.",
"caldav.bindings.error.create_name_taken": "Name already in use — please pick a different display name.",
"caldav.bindings.error.create_unsupported": "Your provider doesn't support creating calendars. Please use 'Enter custom URL' instead.",
// Notizen (polymorphic notes — Phase I)
"notes.section.title": "Notes",
"notes.placeholder": "Add a note\u2026",
"notes.shortcut.hint": "Ctrl+Enter (or \u2318+Enter) to save",
"notes.submit": "Add",
"notes.save": "Save",
"notes.cancel": "Cancel",
"notes.edit": "Edit",
"notes.delete": "Delete",
"notes.delete.confirm": "Really delete this note?",
"notes.empty": "No notes yet.",
"notes.edited": "edited",
"notes.unknown_author": "Unknown",
"notes.time.just_now": "just now",
"notes.error.empty": "Note cannot be empty.",
"notes.error.generic": "Action failed. Please try again.",
// Agenda (t-paliad-030) — unified timeline across projects
"agenda.title": "Agenda — Paliad",
"agenda.heading": "Agenda",
"agenda.subtitle": "Upcoming deadlines and appointments across all visible matters, grouped by day.",
"agenda.unavailable": "Agenda is currently unavailable — please contact an administrator.",
"agenda.loading": "Loading …",
"agenda.filter.type": "View",
"agenda.filter.both": "Both",
"agenda.filter.deadlines": "Deadlines only",
"agenda.filter.appointments": "Appointments only",
"agenda.filter.range": "Range",
"agenda.range.7": "7 days",
"agenda.range.14": "14 days",
"agenda.range.30": "30 days",
"agenda.range.90": "90 days",
"agenda.empty.title": "Nothing in this range",
"agenda.empty.hint": "Nothing due — widen the range or create new deadlines or appointments.",
"agenda.label.deadline": "Deadline",
"agenda.label.appointment": "Appointment",
"agenda.appointment_type.hearing": "Hearing",
"agenda.appointment_type.meeting": "Meeting",
"agenda.appointment_type.consultation": "Client meeting",
"agenda.appointment_type.deadline_hearing": "Deadline hearing",
"agenda.day.today": "Today",
"agenda.day.tomorrow": "Tomorrow",
"agenda.day.mo": "Mon",
"agenda.day.di": "Tue",
"agenda.day.mi": "Wed",
"agenda.day.do": "Thu",
"agenda.day.fr": "Fri",
"agenda.day.sa": "Sat",
"agenda.day.so": "Sun",
"agenda.urgency.overdue": "Overdue",
"agenda.urgency.today": "Today",
"agenda.urgency.tomorrow": "Tomorrow",
"agenda.urgency.this_week": "This week",
"agenda.urgency.later": "Later",
// Team directory (t-paliad-029)
"team.title": "Team — Paliad",
"team.heading": "Team",
"team.subtitle": "All Paliad colleagues, grouped by office or partner unit.",
"team.search.placeholder": "Search by name, role, office…",
"team.group.office": "By office",
"team.group.department": "By partner unit",
"team.group.other": "Other",
"team.filter.all": "All",
"team.filter.role": "Role",
"team.role.partner": "Partner",
"team.role.counsel": "Counsel",
"team.role.counsel_knowledge_lawyer": "Counsel Knowledge Lawyer",
"team.role.senior_associate": "Senior Associate",
"team.role.associate": "Associate",
"team.role.junior_associate": "Junior Associate",
"team.role.trainee": "Trainee",
"team.role.pa": "PA",
"team.role.paralegal": "Paralegal",
"team.role.secretary": "Secretary",
"team.empty": "No matches.",
"team.dept.lead": "Lead",
"team.dept.unassigned": "No partner unit",
"team.partner_unit.unassigned": "No partner unit",
// Project filter (t-paliad-147)
"team.filter.project": "Project",
"team.filter.project.all": "All projects",
"team.filter.project.selected": "selected",
"team.filter.project.clear": "Deselect all",
// Click-to-select (t-paliad-223 #53).
"team.selection.count": "{n} selected",
"team.selection.clear": "Clear selection",
"team.selection.send": "Email selection",
"team.selection.select_all": "Select all visible",
"team.selection.toggle_card": "Select contact",
// Broadcast modal (t-paliad-147)
"team.broadcast.button": "Email selection",
"team.broadcast.title": "Email selection",
"team.broadcast.recipients": "Recipients",
"team.broadcast.show_all": "Show all",
"team.broadcast.mailto.label": "Open in mail client",
"team.broadcast.mailto.tooltip": "Opens your local mail client with every recipient prefilled in the To: line",
"team.broadcast.template": "Template",
"team.broadcast.template_optional": "optional",
"team.broadcast.template_freeform": "Free-form",
"team.broadcast.template.invitation": "Invitation",
"team.broadcast.template.deadline_digest": "Deadline digest",
"team.broadcast.subject": "Subject",
"team.broadcast.body": "Message",
"team.broadcast.body_placeholder": "Hi {{first_name}}, …",
"team.broadcast.placeholders_hint": "Placeholders: {{name}}, {{first_name}}, {{role_on_project}}",
"team.broadcast.markdown_hint": "Markdown supported: **bold**, *italic*, [link](https://...), - bullet.",
"team.broadcast.send": "Send",
"team.broadcast.sending": "Sending…",
"team.broadcast.sent": "Sent",
"team.broadcast.success": "{sent} of {total} emails sent ({failed} failed).",
"team.broadcast.error.no_recipients": "No recipients selected.",
"team.broadcast.error.too_many": "Recipient limit ({cap}) exceeded.",
"team.broadcast.error.subject_required": "Subject is required.",
"team.broadcast.error.body_required": "Message is required.",
"common.close": "Close",
// Admin broadcasts viewer (t-paliad-147)
"admin.broadcasts.title": "Broadcasts — Paliad",
"admin.broadcasts.heading": "Broadcasts",
"admin.broadcasts.subtitle": "Sent bulk emails to team selections.",
"admin.broadcasts.col.sent_at": "Sent",
"admin.broadcasts.col.subject": "Subject",
"admin.broadcasts.col.sender": "Sender",
"admin.broadcasts.col.count": "Recipients",
"admin.broadcasts.loading": "Loading…",
"admin.broadcasts.empty": "No broadcasts sent yet.",
"admin.broadcasts.detail.sent_by": "Sent by",
"admin.broadcasts.detail.delivered": "delivered",
"admin.broadcasts.detail.failed": "failed",
"admin.broadcasts.detail.recipients": "Recipients",
// t-paliad-146: Paliadin in-app AI buddy (PoC)
"paliadin.title": "Paliadin — Paliad",
"paliadin.heading": "✨ Paliadin",
"paliadin.tagline": "I know your matters and Paliad's knowledge base.",
"paliadin.empty": "What can I help you with?",
"paliadin.starter.today": "What's on my plate today?",
"paliadin.starter.week": "Which deadlines are due this week?",
"paliadin.starter.concept": "Explain Klageerwiderung.",
"paliadin.input.placeholder": "Ask Paliadin…",
"paliadin.send": "Send",
"paliadin.stop": "Stop",
"paliadin.reset": "New conversation",
"paliadin.error.local_only": "Paliadin only runs locally. This instance has no tmux/claude installed — start it locally via ./paliad.",
"paliadin.error.mriver_unreachable": "mRiver is offline — Paliadin can't reach it. Wake mRiver, or run Paliadin locally with ./paliad.",
"paliadin.error.shim_auth_failed": "Paliadin auth failed. Check the SSH key or authorized_keys on mRiver.",
"paliadin.error.shim_error": "Paliadin error on mRiver. Check the tmux/claude pane.",
"paliadin.error.timeout": "Paliadin didn't respond in time (60s). Try again.",
"paliadin.error.connection_lost": "Connection lost.",
"paliadin.error.upstream": "Send failed.",
"paliadin.error.upstream_silence": "Paliadin went silent — closing the connection.",
"paliadin.late.waiting": "Will fill in the response when it arrives …",
"paliadin.late.checking": "Connection lost — Paliadin may still be thinking. Fetching fresh answer …",
"paliadin.late.lost": "Answer couldn't be delivered — please ask again.",
"paliadin.late.marker": "late",
"paliadin.thinking": "Paliadin is thinking",
"paliadin.thinking.seconds": "{seconds}s",
"paliadin.widget.title": "Paliadin",
"paliadin.widget.trigger": "Paliadin (Cmd+J)",
"paliadin.widget.empty": "What can I help you with?",
"paliadin.widget.input.placeholder": "Ask Paliadin...",
"paliadin.widget.input.label": "Message to Paliadin",
"paliadin.widget.send": "Send",
"paliadin.widget.reset": "Reset conversation",
"paliadin.widget.reset.confirm": "Reset the conversation here and on the server?",
"paliadin.widget.fullscreen": "Fullscreen mode",
"paliadin.widget.close": "Close",
"paliadin.widget.context.on_page": "On this page",
"approvals.agent.label": "Paliadin suggested this",
"approvals.agent.byline": "Paliadin",
"approvals.agent.suggestion_pending": "Suggestion awaiting your approval",
"nav.admin.paliadin": "Paliadin Monitor",
"admin.paliadin.title": "Paliadin Monitor — Paliad",
"admin.paliadin.heading": "Paliadin Monitor",
"admin.paliadin.subtitle": "How is Paliadin actually being used?",
"admin.paliadin.total": "Total",
"admin.paliadin.last7": "Last 7 days",
"admin.paliadin.median_dur": "Median duration",
"admin.paliadin.tool_rate": "Tool-use rate",
"admin.paliadin.abandon_rate": "Abandon rate",
"admin.paliadin.classifier_heading": "Question types",
"admin.paliadin.daily_heading": "Daily usage",
"admin.paliadin.top_heading": "Top queries",
"admin.paliadin.recent_heading": "Recent queries",
"admin.paliadin.col.prompt": "Query",
"admin.paliadin.col.count": "Count",
"admin.paliadin.col.started": "Time",
"admin.paliadin.col.user": "User",
"admin.paliadin.col.classifier": "Type",
"admin.paliadin.col.response": "Answer",
"admin.paliadin.col.tools": "Tools",
"admin.paliadin.col.origin": "Page",
"admin.paliadin.col.duration": "Duration",
"admin.paliadin.loading": "Loading…",
"common.forbidden": "Access denied.",
"common.load_error": "Load error.",
"common.loading": "Loading…",
"partner_unit.heading": "My Partner Units",
"partner_unit.subtitle": "Partner Units are structural units — separate from project teams. Membership is admin-managed.",
"partner_unit.none": "You are not a member of any Partner Unit yet.",
"partner_unit.members_label": "members",
// Admin team management (t-paliad-050)
"nav.group.admin": "Admin",
"nav.admin.bereich": "Admin Area",
"nav.admin.team": "Team Management",
"admin.title": "Admin Area — Paliad",
"admin.heading": "Admin Area",
"admin.subtitle": "Tools for managing Paliad. Visible only to administrators.",
"admin.section.available": "Available",
"admin.section.planned": "Planned",
"admin.coming_soon": "Coming soon",
"admin.card.team.title": "Team Management",
"admin.card.team.desc": "Create, edit and delete user accounts.",
"admin.card.partner_units.title": "Partner Units",
"admin.card.partner_units.desc": "Create structural partner units and assign members.",
"admin.card.audit.title": "Audit Log",
"admin.card.audit.desc": "Who changed what, and when. Traceability for security-relevant actions.",
"admin.card.email_templates.title": "Email Templates",
"admin.card.email_templates.desc": "Customise templates for invitations, reminders and the wrapper layout.",
"admin.card.feature_flags.title": "Feature Flags",
"admin.card.feature_flags.desc": "Enable features per office, partner unit or role.",
"admin.card.broadcasts.title": "Broadcasts",
"admin.card.broadcasts.desc": "Inspect bulk emails sent to team selections.",
"admin.card.approval_policies.title": "Approval Policies",
"admin.card.approval_policies.desc": "Configure 4-eye review per project and partner unit.",
"admin.approval_policies.title": "Approval Policies — Paliad",
"admin.approval_policies.heading": "Approval Policies",
"admin.approval_policies.subtitle": "Configure 4-eye review per project and partner unit.",
"admin.approval_policies.loading": "Loading …",
"admin.approval_policies.section.units": "Partner Unit Defaults",
"admin.approval_policies.section.units.hint": "Default rules that every project attached to a partner unit inherits. When multiple partner units apply, the strictest rule wins.",
"admin.approval_policies.section.projects": "Project-specific",
"admin.approval_policies.section.projects.hint": "Per-project rules. Override partner-unit defaults and inherited project rules.",
"admin.approval_policies.units.empty": "No partner units yet.",
"admin.approval_policies.picker.label": "Pick a project",
"admin.approval_policies.picker.placeholder": "Search…",
"admin.approval_policies.picker.no_results": "No matches.",
"admin.approval_policies.entity.deadline": "Deadlines",
"admin.approval_policies.entity.appointment": "Appointments",
"admin.approval_policies.lifecycle.create": "Create",
"admin.approval_policies.lifecycle.update": "Edit",
"admin.approval_policies.lifecycle.complete": "Complete",
"admin.approval_policies.lifecycle.delete": "Delete",
"admin.approval_policies.role.partner": "Partner",
"admin.approval_policies.role.of_counsel": "Of Counsel",
"admin.approval_policies.role.associate": "Associate",
"admin.approval_policies.role.senior_pa": "Senior PA",
"admin.approval_policies.role.pa": "PA",
"admin.approval_policies.role.none": "No approval",
"admin.approval_policies.role.no_rule": "— no rule —",
"admin.approval_policies.source.project": "Project",
"admin.approval_policies.source.ancestor": "Inherited",
"admin.approval_policies.source.unit_default": "Default",
"admin.approval_policies.source.no_approval": "no approval",
"admin.approval_policies.cell.requires": "Approval required",
"admin.approval_policies.cell.clear": "—",
"admin.approval_policies.cell.clear.title": "Reset to inheritance",
"admin.approval_policies.cell.saved_msg": "Saved.",
"admin.approval_policies.cell.error_msg": "Error",
"admin.approval_policies.bulk.cta": "Apply to descendants",
"admin.approval_policies.bulk.no_descendants": "No descendants.",
"admin.approval_policies.bulk.modal.title": "Apply to descendants",
"admin.approval_policies.bulk.modal.body": "The descendants below receive this project's effective matrix as project-specific rules. Existing project-specific rules will be overwritten. Partner-unit defaults remain intact.",
"admin.approval_policies.bulk.modal.cancel": "Cancel",
"admin.approval_policies.bulk.modal.confirm": "Apply",
"admin.approval_policies.bulk.modal.applying": "Applying …",
"admin.approval_policies.bulk.modal.done": "Applied",
"admin.approval_policies.bulk.modal.writes_label": "writes",
"admin.approval_policies.bulk.modal.targets_label": "projects",
"inbox.empty.admin_nudge.title": "No approval policies configured yet?",
"inbox.empty.admin_nudge.body": "Set which lifecycle events require 4-eye review.",
"inbox.empty.admin_nudge.cta": "Configure approval policies",
"inbox.title.feed": "Inbox — Paliad",
"inbox.heading.feed": "Inbox",
"inbox.subtitle.feed": "Updates on your projects and open approvals.",
"inbox.action.mark_all_seen": "Mark all as read",
"inbox.action.open": "Open",
"inbox.empty.feed": "No updates in the last 30 days.",
"views.bar.label.unread_only": "Read state",
"views.bar.unread_only.on": "Unread only",
"views.bar.unread_only.off": "All",
"views.bar.label.inbox_focus": "Show",
"views.bar.inbox_focus.alles": "Everything",
"views.bar.inbox_focus.genehmigungen": "Approvals only",
"views.bar.inbox_focus.plus_termine": "+ Appointments",
"views.bar.inbox_focus.plus_fristen": "+ Deadlines",
"deadlines.form.approval_hint": "4-eye review required",
"appointments.form.approval_hint": "4-eye review required",
"admin.email_templates.title": "Email Templates — Paliad",
"admin.email_templates.heading": "Email Templates",
"admin.email_templates.subtitle": "Customise templates for invitations, reminders, and the shared layout wrapper.",
"admin.email_templates.loading": "Loading…",
"admin.email_templates.load_error": "Failed to load templates.",
"admin.email_templates.back": "← Back to list",
"admin.email_templates.lang.de": "German",
"admin.email_templates.lang.en": "English",
"admin.email_templates.status.default": "Default",
"admin.email_templates.status.last_modified": "Last modified: {date}",
"admin.email_templates.card.invitation.title": "Invitation",
"admin.email_templates.card.invitation.desc": "Email sent to new colleagues from the sidebar invite flow.",
"admin.email_templates.card.deadline_digest.title": "Deadline digest",
"admin.email_templates.card.deadline_digest.desc": "Daily morning + evening email with overdue, due-today, and upcoming deadlines.",
"admin.email_templates.card.base.title": "Layout wrapper",
"admin.email_templates.card.base.desc": "Shared HTML frame (header + footer) that wraps every email.",
"admin.email_templates.editor.title": "Edit email template — Paliad",
"admin.email_templates.editor.heading": "Edit email template",
"admin.email_templates.editor.heading_for": "{title} — {lang}",
"admin.email_templates.editor.is_default": "Currently using the default.",
"admin.email_templates.editor.last_modified": "Last modified: {date}",
"admin.email_templates.editor.subject": "Subject",
"admin.email_templates.editor.body": "HTML body",
"admin.email_templates.editor.note_optional": "Note (optional)",
"admin.email_templates.editor.note_placeholder": "e.g. Correction following counsel feedback",
"admin.email_templates.editor.variables": "Available variables",
"admin.email_templates.editor.preview": "Preview",
"admin.email_templates.editor.preview_refresh": "Refresh preview",
"admin.email_templates.editor.preview_error": "Preview failed.",
"admin.email_templates.editor.parse_error": "Template error:",
"admin.email_templates.editor.save": "Save",
"admin.email_templates.editor.save_ok": "Saved.",
"admin.email_templates.editor.save_error": "Save failed.",
"admin.email_templates.editor.reset": "Reset to default",
"admin.email_templates.editor.reset_confirm": "Really reset to default?",
"admin.email_templates.editor.reset_ok": "Reset to default.",
"admin.email_templates.editor.reset_error": "Reset failed.",
"admin.email_templates.editor.versions": "Versions",
"admin.email_templates.editor.versions_empty": "No versions yet.",
"admin.email_templates.editor.restore": "Restore",
"admin.email_templates.editor.restore_confirm": "Restore this version?",
"admin.email_templates.editor.restore_ok": "Version restored.",
"admin.email_templates.editor.restore_error": "Restore failed.",
"admin.email_templates.editor.dirty_warn": "Discard unsaved changes?",
"admin.email_templates.editor.unknown_key": "Unknown template key.",
"admin.email_templates.editor.slot.morning": "Morning slot",
"admin.email_templates.editor.slot.evening": "Evening slot",
"admin.team.title": "Team Management — Paliad",
"admin.team.heading": "Team Management",
"admin.team.subtitle": "View, edit and add Paliad accounts.",
"admin.team.search.placeholder": "Search by name or email…",
"admin.team.add.full": "Add account directly",
"admin.team.add.direct": "Onboard existing account",
"admin.team.add.invite": "Invite Colleague",
"admin.team.add_full.title": "Add account directly",
"admin.team.add_full.body": "Creates both the login account and the Paliad profile. The new colleague receives an email with a link to set a password.",
"admin.team.add_full.email": "Email",
"admin.team.add_full.name": "Display name",
"admin.team.add_full.office": "Office",
"admin.team.add_full.profession": "Profession",
"admin.team.add_full.job_title": "Job title",
"admin.team.add_full.lang": "Language",
"admin.team.add_full.send_welcome": "Send welcome email with login link",
"admin.team.add_full.cancel": "Cancel",
"admin.team.add_full.submit": "Create",
"admin.team.add_full.feedback.added": "Account created.",
"admin.team.add_full.error.unavailable": "Add-User path is not configured (SUPABASE_SERVICE_ROLE_KEY missing on the server).",
"admin.team.add_full.error.email_exists": "An account already exists for this email — please use 'Onboard existing account' instead.",
"admin.team.add_full.error.generic": "Could not create the account.",
"admin.team.loading": "Loading…",
"admin.team.empty": "No matches.",
"admin.team.error.forbidden": "Admins only.",
"admin.team.col.name": "Name",
"admin.team.col.email": "Email",
"admin.team.col.office": "Office",
"admin.team.col.job_title": "Job title",
"admin.team.col.profession": "Profession",
"admin.team.col.profession.none": "(external)",
"admin.team.col.profession.none.hint": "No profession set — no 4-eye authority.",
"admin.team.col.permission": "Permission",
"admin.team.col.additional": "Additional offices",
"admin.team.col.lang": "Lang",
"admin.team.col.created": "Created",
"admin.team.col.actions": "Actions",
"admin.team.row.edit": "Edit",
"admin.team.row.delete": "Delete",
"admin.team.row.save": "Save",
"admin.team.row.cancel": "Cancel",
"admin.team.confirm.delete": "Really delete {name}? This action is permanent.",
"admin.team.feedback.saved": "Saved.",
"admin.team.feedback.deleted": "Deleted.",
"admin.team.feedback.added": "Account onboarded.",
"admin.team.direct_add.title": "Onboard existing account",
"admin.team.direct_add.body": "This list shows accounts that have signed in but never completed onboarding.",
"admin.team.direct_add.email": "Email",
"admin.team.direct_add.email.placeholder": "Please select…",
"admin.team.direct_add.empty": "No pending accounts.",
"admin.team.direct_add.name": "Display name",
"admin.team.direct_add.office": "Office",
"admin.team.direct_add.job_title": "Job title",
"admin.team.permission.standard": "Standard",
"admin.team.permission.global_admin": "Global Admin",
"admin.team.permission.last_admin": "The last global admin cannot be demoted.",
"admin.team.direct_add.cancel": "Cancel",
"admin.team.direct_add.submit": "Create",
// Admin audit log (t-paliad-071)
"nav.admin.audit": "Audit Log",
"nav.admin.partner_units": "Partner Units",
// Admin Backup Mode (t-paliad-246 / m/paliad#77)
"nav.admin.backups": "Backups",
"admin.backups.title": "Backups — Paliad",
"admin.backups.heading": "Backups",
"admin.backups.subtitle": "Full snapshots of all data — manual or scheduled.",
"admin.backups.run_now": "Run backup now",
"admin.backups.running": "Running …",
"admin.backups.success": "Backup created successfully.",
"admin.backups.empty": "No backups yet.",
"admin.backups.loading": "Loading …",
"admin.backups.col.started": "Started",
"admin.backups.col.kind": "Trigger",
"admin.backups.col.status": "Status",
"admin.backups.col.requested_by": "Requested by",
"admin.backups.col.size": "Size",
"admin.backups.col.rows": "Sheets",
"admin.backups.col.actions": "Action",
"admin.backups.kind.scheduled": "Scheduled",
"admin.backups.kind.on_demand": "Manual",
"admin.backups.status.running": "Running …",
"admin.backups.status.done": "✓ Done",
"admin.backups.status.failed": "✗ Failed",
"admin.backups.download": "Download",
"admin.backups.footer.note": "Scheduled backups land in a later slice. Manual backups are available now.",
"admin.audit.title": "Audit Log — Paliad",
"admin.audit.heading": "Audit Log",
"admin.audit.subtitle": "Global timeline across project, CalDAV, reminder and partner-unit events.",
"admin.audit.source.partner_unit_events": "Partner Units",
"admin.partner_units.title": "Partner Units — Paliad",
"admin.partner_units.heading": "Partner Units",
"admin.partner_units.subtitle": "Manage structural partner units and assign members.",
"admin.partner_units.loading": "Loading…",
"admin.partner_units.empty": "No partner units yet.",
"admin.partner_units.new": "New Partner Unit",
"admin.partner_units.new.heading": "Create Partner Unit",
"admin.partner_units.edit.heading": "Edit Partner Unit",
"admin.partner_units.create": "Save",
"admin.partner_units.cancel": "Cancel",
"admin.partner_units.col.name": "Name",
"admin.partner_units.col.office": "Office",
"admin.partner_units.col.lead": "Lead",
"admin.partner_units.col.members": "Members",
"admin.partner_units.col.actions": "Actions",
"admin.partner_units.action.members": "Members",
"admin.partner_units.action.edit": "Edit",
"admin.partner_units.action.delete": "Delete",
"admin.partner_units.confirm_delete": "Really delete partner unit \"{name}\"?",
"admin.partner_units.error.name_required": "Name required",
"admin.partner_units.error.user_required": "Select a user",
"admin.partner_units.feedback.created": "Created.",
"admin.partner_units.feedback.updated": "Updated.",
"admin.partner_units.feedback.deleted": "Deleted.",
"admin.partner_units.feedback.role_updated": "Role updated.",
"admin.partner_units.member.heading": "Manage members",
"admin.partner_units.member.empty": "No members yet.",
"admin.partner_units.member.add": "Add member",
"admin.partner_units.member.add_btn": "Add",
"admin.partner_units.member.remove": "Remove",
"admin.partner_units.member.confirm_remove": "Remove member?",
"admin.partner_units.member.placeholder": "Name or email",
"admin.partner_units.member.role": "Role",
"admin.audit.loading": "Loading…",
"admin.audit.empty": "No events match the selected filters.",
"admin.audit.loadmore": "Load more",
"admin.audit.error.forbidden": "Admins only.",
"admin.audit.error.unavailable": "Audit service unavailable.",
"admin.audit.search.placeholder": "Subject, description, event type…",
"admin.audit.filter.source": "Source",
"admin.audit.filter.range": "Range",
"admin.audit.filter.from": "From",
"admin.audit.filter.to": "To",
"admin.audit.filter.search": "Search",
"admin.audit.range.24h": "Last 24h",
"admin.audit.range.7d": "Last 7 days",
"admin.audit.range.30d": "Last 30 days",
"admin.audit.range.custom": "Custom",
"admin.audit.range.all": "All",
"admin.audit.source.all": "All sources",
"admin.audit.source.project_events": "Project events",
"admin.audit.source.caldav_sync_log": "CalDAV sync",
"admin.audit.source.reminder_log": "Reminder",
"admin.audit.col.time": "Time",
"admin.audit.col.source": "Source",
"admin.audit.col.event": "Event",
"admin.audit.col.actor": "Actor",
"admin.audit.col.subject": "Subject",
"admin.audit.col.description": "Description",
"admin.audit.event.caldav_synced": "CalDAV sync ok",
"admin.audit.event.caldav_sync_error": "CalDAV sync error",
"admin.audit.event.morning_digest": "Morning digest sent",
"admin.audit.event.evening_digest": "Evening digest sent",
"admin.audit.event.deadline_reminder": "Deadline reminder sent",
"admin.audit.event.due_today": "Due-today reminder sent",
"admin.audit.event.weekly": "Weekly digest sent",
// Not-found (404) page
"notfound.title": "Page not found — Paliad",
"notfound.heading": "Page not found",
"notfound.lede": "This page doesn't exist or has been moved.",
"notfound.cta": "Back to dashboard",
// t-paliad-088: Event Types — picker, multi-select filter, add modal.
"common.cancel": "Cancel",
"modal.close.label": "Close",
"event_types.cat.submission": "Submissions",
"event_types.cat.decision": "Decisions",
"event_types.cat.order": "Orders",
"event_types.cat.service": "Service",
"event_types.cat.fee": "Fees",
"event_types.cat.hearing": "Hearings",
"event_types.cat.other": "Other",
"event_types.picker.search": "Search or type…",
"event_types.picker.add": "+ Add new type…",
"event_types.picker.remove": "Remove",
"event_types.picker.no_match": "No matches.",
"event_types.picker.browse_all": "Browse all",
"event_types.browse.title": "Choose event types",
"event_types.browse.search": "Search across all types…",
"event_types.browse.empty": "No matches.",
"event_types.browse.apply": "Apply",
"event_types.browse.cancel": "Cancel",
"event_types.browse.selected_count": "{n} selected",
"event_types.browse.jurisdiction.none": "Any",
"event_types.browse.jurisdiction.all": "All courts",
"event_types.browse.jurisdiction.filter_label": "Filter by court type",
"event_types.filter.all": "All types",
"event_types.filter.untyped": "— Untyped —",
"event_types.filter.search": "Search type…",
"event_types.filter.reset": "Reset",
"event_types.filter.apply": "Apply",
"event_types.filter.n_selected": "{n} types",
"event_types.add.title": "Create new event type",
"event_types.add.label_de": "Label (DE) *",
"event_types.add.label_en": "Label (EN, optional)",
"event_types.add.category": "Category *",
"event_types.add.jurisdiction": "Jurisdiction (optional)",
"event_types.add.jurisdiction.none": "—",
"event_types.add.jurisdiction.any": "Any",
"event_types.add.firm_wide": "Make firm-wide",
"event_types.add.firm_wide.hint": "Firm-wide types are visible to all colleagues. Admins can archive them.",
"event_types.add.submit": "Create",
"event_types.add.duplicate_warn": "Probably already exists:",
"event_types.add.error.required": "Label (DE) is required.",
"event_types.add.error.slug_taken": "A type with this name already exists.",
"event_types.add.error.generic": "Could not create. Please try again.",
"deadlines.field.event_type": "Type (optional)",
"deadlines.col.event_type": "Type",
"deadlines.filter.event_type": "Type",
"agenda.filter.event_type": "Type",
// t-paliad-089: Admin Event-Type moderation panel.
"nav.admin.event_types": "Event Types",
"admin.card.event_types.title": "Event Types",
"admin.card.event_types.desc": "Moderate firm-wide event types: archive, merge, promote.",
"admin.event_types.title": "Event Types — Paliad",
"admin.event_types.heading": "Event Types",
"admin.event_types.subtitle": "Moderate firm-wide event types: archive, merge, promote private types.",
"admin.event_types.section.firm_wide": "Firm-wide types",
"admin.event_types.section.private_pending": "Private types (pending promotion)",
"admin.event_types.section.private_pending.hint": "Private types from other colleagues, sorted by usage. Promoting makes the type firm-wide.",
"admin.event_types.search.placeholder": "Search label, slug or author…",
"admin.event_types.show_archived": "Show archived",
"admin.event_types.loading": "Loading…",
"admin.event_types.empty": "No matches.",
"admin.event_types.private.empty": "No private types.",
"admin.event_types.col.label": "Label",
"admin.event_types.col.category": "Category",
"admin.event_types.col.jurisdiction": "Jurisdiction",
"admin.event_types.col.author": "Author",
"admin.event_types.col.created": "Created",
"admin.event_types.col.usage": "Usage",
"admin.event_types.col.actions": "Actions",
"admin.event_types.row.archived": "Archived",
"admin.event_types.author.system": "System",
"admin.event_types.author.unknown": "Unknown",
"admin.event_types.action.archive": "Archive",
"admin.event_types.action.archive_selected": "Archive selected",
"admin.event_types.action.merge_selected": "Merge…",
"admin.event_types.action.restore": "Restore",
"admin.event_types.action.promote": "Promote",
"admin.event_types.bulk.count": "{n} selected",
"admin.event_types.confirm.archive": "Really archive \"{label}\"?",
"admin.event_types.confirm.bulk_archive": "Really archive {n} types?",
"admin.event_types.confirm.promote": "Make \"{label}\" firm-wide?",
"admin.event_types.confirm.merge": "\"{winner}\" as winner: {n} loser type(s) will be archived, {usage} junction row(s) redirected. Proceed?",
"admin.event_types.feedback.archived": "{n} archived.",
"admin.event_types.feedback.archive_error": "Archive failed.",
"admin.event_types.feedback.restored": "Restored.",
"admin.event_types.feedback.restore_error": "Restore failed.",
"admin.event_types.feedback.promoted": "Promoted.",
"admin.event_types.feedback.promote_error": "Promotion failed.",
"admin.event_types.feedback.merged": "Merged.",
"admin.event_types.feedback.merge_error": "Merge failed.",
"admin.event_types.error.forbidden": "Admins only.",
"admin.event_types.merge.title": "Merge types",
"admin.event_types.merge.body": "Pick the winner. Loser junction rows get redirected to the winner, then the losers are archived.",
"admin.event_types.merge.submit": "Merge",
// Approval workflow (t-paliad-138).
"approvals.title": "Approvals",
"approvals.heading": "Approvals",
"approvals.subtitle": "Four-eyes review for deadlines and appointments.",
"approvals.tab.pending_mine": "Awaiting approval",
"approvals.tab.mine": "My requests",
"approvals.empty.pending_mine": "Nothing awaits your approval.",
"approvals.empty.mine": "You have no open requests.",
"approvals.lifecycle.create": "Creation",
"approvals.lifecycle.update": "Change",
"approvals.lifecycle.complete": "Completion",
"approvals.lifecycle.delete": "Deletion",
"approvals.entity.deadline": "Deadline",
"approvals.entity.appointment": "Appointment",
"approvals.required_role.lead": "Lead",
"approvals.required_role.of_counsel": "Of Counsel",
"approvals.required_role.associate": "Associate",
"approvals.required_role.senior_pa": "Senior PA",
"approvals.required_role.pa": "PA",
"approvals.status.pending": "Open",
"approvals.status.approved": "Approved",
"approvals.status.rejected": "Rejected",
"approvals.status.revoked": "Revoked",
"approvals.status.superseded": "Superseded",
"approvals.status.changes_requested": "Declined with changes",
"approvals.action.approve": "Approve",
"approvals.action.reject": "Reject",
"approvals.action.revoke": "Revoke",
"approvals.action.suggest_changes": "Suggest changes",
"approvals.note.placeholder": "Optional note...",
"approvals.suggest.modal_title": "Suggest changes",
"approvals.suggest.intro": "Edit the proposed values and/or leave a note. Your suggestion will be filed as a new approval request and may be approved by the original requester (or anyone else eligible).",
"approvals.suggest.note_label": "Note about your suggestion",
"approvals.suggest.note_placeholder": "Why should these values change?",
"approvals.suggest.submit": "Submit suggestion",
"approvals.suggest.cancel": "Cancel",
"approvals.suggest.submit_disabled_hint": "Change at least one field or leave a note.",
"approvals.suggest.next_request_link": "→ New suggestion by {name}",
"approvals.suggest.unsupported_lifecycle": "Suggest changes is only available for update requests.",
"approvals.suggest.section.editable": "Fields",
"approvals.suggest.section.event_type_rule": "Event type + rule",
"approvals.suggest.section.context": "Context",
"approvals.suggest.context.project": "Project",
"approvals.suggest.context.requester": "Submitted by",
"approvals.suggest.context.requested_at": "Submitted at",
"approvals.suggest.context.approval_status": "Approval status",
"approvals.suggest.event_type_picker_unavailable": "Event types could not be loaded.",
"approvals.suggest.field.original_due_date": "Original due date",
"approvals.suggest.field.warning_date": "Warning date",
"approvals.suggest.field.rule_code": "Rule citation",
"approvals.suggest.field.description": "Description",
"approvals.requested_by": "Submitted by",
"approvals.decided_by": "Decided by",
"approvals.decision_kind.peer": "Peer approval",
"approvals.decision_kind.admin_override": "Admin override",
"approvals.decision_kind.derived_peer": "Approved by derived member (Partner Unit)",
"approvals.error.self_approval": "You cannot approve your own request.",
"approvals.error.not_authorized": "You don't have the required role.",
"approvals.error.no_qualified_approver": "No qualified approver available — please add an approver to the project team or contact an admin.",
"approvals.error.concurrent_pending": "Another approval request is already in flight on this entity.",
"approvals.error.awaiting_approval": "This entity is awaiting approval.",
"approvals.error.request_not_pending": "This request is no longer open.",
"approvals.error.suggestion_requires_change": "A suggestion needs either changed values or a note.",
"approvals.error.suggestion_lifecycle_invalid": "Suggest changes is only available for update requests.",
"approvals.disabled.self_approval": "You cannot approve your own requests",
"approvals.disabled.not_authorized": "You are not authorized to approve this request",
"approvals.disabled.revoke_not_requester": "Only the requester can withdraw",
"approvals.disabled.suggest_lifecycle": "Suggest changes is only available for update requests",
"approvals.pending.badge": "Awaiting approval",
"approvals.withdraw.cta": "Withdraw approval request",
"approvals.withdraw.confirm": "Withdraw the approval request?",
"approvals.withdraw.error": "Failed to withdraw",
"approvals.withdraw.cancel": "Cancel",
"approvals.withdraw.modal.title": "Withdraw approval request?",
"approvals.withdraw.primary.label": "Edit event",
"approvals.withdraw.destructive.label": "Withdraw permanently and delete",
"approvals.withdraw.lead.create.deadline": "Withdrawing this request will delete the deadline.",
"approvals.withdraw.lead.create.appointment": "Withdrawing this request will delete the appointment.",
"approvals.withdraw.lead.update": "Withdrawing this request will discard your proposed changes — the entry will revert to its state before your edit.",
"approvals.withdraw.lead.delete": "Withdrawing the delete request will keep the entry alive.",
"approvals.withdraw.sub.create": "Alternatively, you can edit the entry instead. The request stays open and the approver will see your new values.",
"approvals.withdraw.sub.update": "Alternatively, you can edit your changes and resubmit. The request stays open.",
"approvals.withdraw.sub.delete": "Are you sure you want to withdraw the delete request?",
"approvals.pending_create.label": "Awaits approval (creation)",
"approvals.pending_update.label": "Awaits approval (change)",
"approvals.pending_complete.label": "Awaits approval (completion)",
"approvals.pending_delete.label": "Awaits approval (deletion)",
"approvals.diff.before": "Before",
"approvals.diff.after": "After",
"approvals.policies.title": "Approval policies",
"approvals.policies.subtitle": "Which lifecycle events need four-eyes review on this project?",
"approvals.policies.column.event": "Event",
"approvals.policies.column.deadline": "Deadline",
"approvals.policies.column.appointment": "Appointment",
"approvals.policies.no_approval": "No approval needed",
"approvals.policies.copy_parent": "Copy from parent project",
"approvals.policies.set_all_associate": "Set all to Associate",
// t-paliad-144 — Custom Views
"nav.group.user_views": "My Views",
"nav.user_views.new": "New view",
"views.title": "Views — Paliad",
"views.heading": "Views",
"views.subtitle": "Saved views over your data — filters and shape preserved.",
"views.loading": "Loading …",
"views.shape.list": "List",
"views.shape.cards": "Cards",
"views.shape.calendar": "Calendar",
"views.shape.timeline": "Timeline",
"views.timeline.caveat.body": "Custom Views show actual events only. Open the project's chart for projected rules.",
"views.timeline.zoom.label": "Zoom",
"views.timeline.zoom.in": "Zoom in",
"views.timeline.zoom.out": "Zoom out",
"views.timeline.zoom.1y": "±1 yr",
"views.timeline.zoom.2y": "±2 yr",
"views.timeline.zoom.all": "All",
"views.save_as": "Save as view",
"views.action.edit": "Edit",
"views.empty.title": "No matches found.",
"views.error.back": "Back to views",
"views.error.not_found": "View not found.",
"views.error.network": "Network error — please retry.",
"views.toast.inaccessible_one": "1 project in this view is no longer visible to you.",
"views.toast.inaccessible_n": "{n} projects in this view are no longer visible to you.",
"views.calendar.mobile_fallback": "Calendar view works best on a wide screen.",
"views.onboarding.title": "Saved views — what are they?",
"views.onboarding.body": "A view is a saved filter combination — e.g. \"Deadlines in my projects in the next 14 days\". Views appear as their own buttons in the sidebar.",
"views.onboarding.create": "Create example view",
"views.source.deadline": "Deadlines",
"views.source.appointment": "Appointments",
"views.source.project_event": "Project history",
"views.source.approval_request": "Approvals",
"views.kind.deadline": "Deadline",
"views.kind.appointment": "Appointment",
"views.kind.project_event": "History",
"views.kind.approval_request": "Approval",
"views.scope.all_visible": "All visible",
"views.scope.my_subtree": "My subtree",
"views.scope.explicit": "Specific projects",
"views.scope.personal_only": "Personal only",
"views.horizon.next_1d": "Tomorrow",
"views.horizon.next_7d": "Next 7 days",
"views.horizon.next_14d": "Next 14 days",
"views.horizon.next_30d": "Next 30 days",
"views.horizon.next_90d": "Next 90 days",
"views.horizon.next_all": "All future",
"views.horizon.past_1d": "Last day",
"views.horizon.past_7d": "Last 7 days",
"views.horizon.past_14d": "Last 14 days",
"views.horizon.past_30d": "Last 30 days",
"views.horizon.past_90d": "Last 90 days",
"views.horizon.past_all": "All past",
"views.horizon.any": "Any",
"views.horizon.all": "All-time",
"views.horizon.custom": "Custom",
"views.density.comfortable": "Comfortable",
"views.density.compact": "Compact",
"views.col.date": "Date",
"views.col.time": "When",
"views.col.title": "Title",
"views.col.project": "Project",
"views.col.actor": "Actor",
"views.col.status": "Status",
"views.col.rule": "Rule",
"views.col.event_type": "Type",
"views.col.location": "Location",
"views.col.appointment_type": "Appointment type",
"views.col.approval_status": "Approval",
"views.col.decided_by": "Decided by",
"views.col.kind": "Kind",
"views.editor.title": "Edit view — Paliad",
"views.editor.heading.new": "New view",
"views.editor.heading.edit": "Edit view",
"views.editor.subtitle": "Pick sources, filters, and shape. Save to confirm.",
"views.editor.section.identity": "Identity",
"views.editor.section.sources": "Sources",
"views.editor.section.scope": "Scope",
"views.editor.section.time": "Time",
"views.editor.section.render": "Display",
"views.editor.field.name": "Name",
"views.editor.field.slug": "Slug (URL)",
"views.editor.field.icon": "Icon",
"views.editor.field.show_count": "Show count badge in sidebar",
"views.editor.field.scope_mode": "Projects",
"views.editor.field.personal_only": "Personal only",
"views.editor.field.horizon": "Horizon",
"views.editor.field.shape": "Shape",
"views.editor.field.density": "Density",
"views.editor.hint.slug": "Lowercase letters, digits, hyphens — no reserved words.",
"views.editor.hint.sources": "Which data sources should this view include?",
"views.editor.icon.default": "Default (folder)",
"views.editor.icon.clock": "Clock",
"views.editor.icon.calendar": "Calendar",
"views.editor.icon.bell": "Bell",
"views.editor.icon.folder": "Folder",
"views.editor.icon.users": "People",
"views.editor.icon.building": "Building",
"views.editor.save": "Save",
"views.editor.cancel": "Cancel",
"views.editor.delete": "Delete",
"views.editor.confirm_delete": "Delete this view permanently?",
"views.editor.error.name_required": "Name is required.",
"views.editor.error.slug_format": "Slug must be lowercase, start with a letter or digit, contain only letters, digits, and hyphens.",
"views.editor.error.sources_required": "Pick at least one source.",
"views.editor.error.load_failed": "Could not load this view.",
"views.editor.error.delete_failed": "Could not delete this view.",
// Universal FilterBar — t-paliad-163.
"views.bar.label.time": "Time",
"views.bar.label.personal": "Mine",
"views.bar.label.approval_role": "View",
"views.bar.label.approval_status": "Status",
"views.bar.label.approval_entity": "Kind",
"views.bar.label.deadline_status": "Deadline status",
"views.bar.label.appointment_type": "Appointment type",
"views.bar.label.project_event_kind": "Event",
"views.bar.label.timeline_status": "Timeline status",
"views.bar.label.timeline_track": "Track",
"views.bar.timeline_status.done": "Done",
"views.bar.timeline_status.open": "Open",
"views.bar.timeline_status.overdue": "Overdue",
"views.bar.timeline_status.predicted": "Predicted",
"views.bar.timeline_status.predicted_overdue": "Overdue (predicted)",
"views.bar.timeline_status.court_set": "Court date",
"views.bar.timeline_status.off_script": "Custom",
"views.bar.timeline_status.macro.future": "Show future",
"views.bar.timeline_status.macro.past": "Past only",
"views.bar.timeline_track.parent": "Main proceeding",
"views.bar.timeline_track.counterclaim": "Counterclaim",
"views.bar.timeline_track.off_script": "Off-script",
"views.bar.label.shape": "Display",
"views.bar.label.density": "Density",
"views.bar.label.sort": "Sort",
"views.bar.common.all": "All",
// views.bar.time.* keys retired in t-paliad-248 — see the DE block
// for context. The filter-bar time axis now mounts the symmetric
// date-range picker whose labels live under date_range.horizon.*.
"views.bar.personal.on": "Mine only",
"views.bar.approval_role.approver_eligible": "To approve",
"views.bar.approval_role.self_requested": "My requests",
"views.bar.approval_role.any_visible": "All visible",
"views.bar.approval_status.pending": "Pending",
"views.bar.approval_status.approved": "Approved",
"views.bar.approval_status.rejected": "Rejected",
"views.bar.approval_status.revoked": "Revoked",
"views.bar.approval_status.changes_requested": "With suggestion",
"views.bar.approval_entity.deadline": "Deadline",
"views.bar.approval_entity.appointment": "Appointment",
"views.bar.deadline_status.pending": "Open",
"views.bar.deadline_status.completed": "Completed",
"views.bar.appointment_type.hearing": "Hearing",
"views.bar.appointment_type.meeting": "Meeting",
"views.bar.appointment_type.consultation": "Consultation",
"views.bar.appointment_type.deadline_hearing": "Oral hearing",
"views.bar.shape.list": "List",
"views.bar.shape.cards": "Cards",
"views.bar.shape.calendar": "Calendar",
"views.bar.density.comfortable": "Comfortable",
"views.bar.density.compact": "Compact",
"views.bar.sort.date_asc": "Date ascending",
"views.bar.sort.date_desc": "Date descending",
"views.bar.action.reset": "Reset",
"views.bar.action.save_as_view": "Save as view",
"views.bar.save.heading": "Save view",
"views.bar.save.field.name": "Name",
"views.bar.save.field.slug": "Slug",
"views.bar.save.field.slug_hint": "Becomes part of the URL: /views/<slug>",
"views.bar.save.field.show_count": "Show count in sidebar",
"views.bar.save.cancel": "Cancel",
"views.bar.save.confirm": "Save",
"views.bar.save.error.name_required": "Please supply a name.",
"views.bar.save.error.slug_format": "Slug must start with a letter or digit and contain only lowercase letters, digits, and hyphens.",
"views.bar.save.error.slug_taken": "This slug is already in use.",
"views.bar.save.error.network": "Network error — please retry.",
// t-paliad-192 Slice 11b — Admin rule-editor UI.
// t-paliad-262 Slice A — "Rule" relabelled as "Procedural event".
"nav.admin.rules": "Manage procedural events",
"admin.card.rules.title": "Manage procedural events",
"admin.card.rules.desc": "Author, edit and publish procedural-event templates. Audit log, preview, migration export.",
"admin.rules.list.title": "Manage procedural events — Paliad",
"admin.rules.list.heading": "Manage procedural events",
"admin.rules.list.subtitle": "Author, edit and publish procedural events (filings, hearings, decisions, …). Lifecycle: draft → published → archived.",
"admin.rules.list.new": "+ New procedural event",
"admin.rules.tab.rules": "Rules",
"admin.rules.tab.orphans": "Orphans",
"admin.rules.loading": "Loading…",
"admin.rules.empty": "No procedural events for the chosen filters.",
"admin.rules.error.load": "Could not load procedural events.",
"admin.rules.filter.proceeding": "Proceeding type",
"admin.rules.filter.proceeding.any": "Any",
"admin.rules.filter.trigger": "Trigger event",
"admin.rules.filter.trigger.any": "Any",
"admin.rules.filter.lifecycle": "Lifecycle",
"admin.rules.filter.lifecycle.any": "Any",
"admin.rules.filter.search": "Search",
"admin.rules.filter.search.placeholder": "Name, submission code, legal citation…",
"admin.rules.col.submission_code": "Code (procedural event)",
"admin.rules.col.legal_citation": "Legal citation",
"admin.rules.col.name": "Name",
"admin.rules.col.proceeding": "Proceeding type",
"admin.rules.col.priority": "Priority",
"admin.rules.col.lifecycle": "Lifecycle",
"admin.rules.col.modified": "Last modified",
"admin.rules.lifecycle.draft": "Draft",
"admin.rules.lifecycle.published": "Published",
"admin.rules.lifecycle.archived": "Archived",
"admin.rules.priority.mandatory": "Mandatory",
"admin.rules.priority.recommended": "Recommended",
"admin.rules.priority.optional": "Optional",
"admin.rules.priority.informational": "Informational",
"admin.rules.orphans.subtitle": "Legacy deadlines from the fuzzy-match backfill (Slice 10) that could not be bound to a unique rule. Please pick the right candidate rule.",
"admin.rules.orphans.loading": "Loading…",
"admin.rules.orphans.empty": "No open orphans. ✔",
"admin.rules.orphans.no_candidates": "No candidate rules found. Please create one manually.",
"admin.rules.orphans.field.project": "Project",
"admin.rules.orphans.field.proceeding": "Proceeding",
"admin.rules.orphans.field.reason": "Reason",
"admin.rules.orphans.reason.no_match": "No match",
"admin.rules.orphans.reason.ambiguous": "Ambiguous",
"admin.rules.orphans.reason.no_project": "No project",
"admin.rules.orphans.reason.manual_unbound": "Manually unbound",
"admin.rules.orphans.resolved": "Orphan resolved.",
"admin.rules.modal.new.title": "Create new procedural event",
"admin.rules.modal.new.body": "A new procedural event will be created as a draft. Please supply a reason (≥10 chars) — recorded in the audit log and exported into the migration file.",
"admin.rules.modal.resolve.title": "Resolve orphan",
"admin.rules.modal.resolve.body": "Please supply a reason (≥10 chars). The rule binding is persisted immediately on the deadline.",
"admin.rules.modal.reason": "Reason",
"admin.rules.modal.reason.placeholder": "e.g. \"New rule for RoP.198 after UPC reform 2026…",
"admin.rules.modal.reason.hint": "Minimum 10 characters.",
"admin.rules.modal.reason.too_short": "Reason must be at least 10 characters.",
"admin.rules.modal.confirm": "Confirm",
"admin.rules.modal.field.name": "Name (DE)",
"admin.rules.modal.field.name_en": "Name (EN)",
"admin.rules.modal.field.duration": "Duration",
"admin.rules.modal.error.name_required": "Please supply both Name and Name (EN).",
"admin.rules.modal.error.create": "Creation failed.",
"admin.rules.modal.error.resolve": "Resolution failed.",
"admin.rules.edit.title": "Edit procedural event — Paliad",
"admin.rules.edit.heading.loading": "Loading procedural event…",
"admin.rules.edit.breadcrumb": "← Manage procedural events",
"admin.rules.edit.error.bad_id": "Invalid procedural-event id in URL.",
"admin.rules.edit.error.not_found": "Procedural event not found.",
"admin.rules.edit.error.load": "Could not load procedural event.",
"admin.rules.edit.section.identity": "Identity",
"admin.rules.edit.section.proceeding": "Proceeding & Trigger",
"admin.rules.edit.section.timing": "Math",
"admin.rules.edit.section.party": "Party & Event",
"admin.rules.edit.section.display": "Display & Notes",
"admin.rules.edit.section.lifecycle": "Priority & Flags",
"admin.rules.edit.section.condition": "Condition (condition_expr)",
"admin.rules.edit.field.name": "Name (DE)",
"admin.rules.edit.field.name_en": "Name (EN)",
"admin.rules.edit.field.description": "Description",
"admin.rules.edit.field.submission_code": "Code (procedural-event identifier)",
"admin.rules.edit.field.rule_code": "Legal citation (short form)",
"admin.rules.edit.field.legal_source": "Legal citation (long form)",
"admin.rules.edit.field.proceeding": "Proceeding type",
"admin.rules.edit.field.proceeding.none": "—",
"admin.rules.edit.field.trigger": "Trigger event",
"admin.rules.edit.field.trigger.none": "—",
"admin.rules.edit.field.parent": "Parent procedural event (UUID)",
"admin.rules.edit.field.concept": "Concept (UUID)",
"admin.rules.edit.field.sequence_order": "Order",
"admin.rules.edit.field.duration_value": "Duration",
"admin.rules.edit.field.duration_unit": "Unit",
"admin.rules.edit.field.timing": "Timing",
"admin.rules.edit.field.combine_op": "Combine op",
"admin.rules.edit.field.alt_duration_value": "Alt duration",
"admin.rules.edit.field.alt_duration_unit": "Alt unit",
"admin.rules.edit.field.alt_rule_code": "Alt rule code",
"admin.rules.edit.field.anchor_alt": "Alt anchor",
"admin.rules.edit.field.primary_party": "Primary party",
"admin.rules.edit.field.event_type": "Procedural-event kind (filing / hearing / decision / order)",
"admin.rules.edit.field.deadline_notes": "Notes (DE)",
"admin.rules.edit.field.deadline_notes_en": "Notes (EN)",
"admin.rules.edit.field.priority": "Priority",
"admin.rules.edit.field.is_court_set": "Court-set",
"admin.rules.edit.field.is_spawn": "Spawn",
"admin.rules.edit.field.spawn_label": "Spawn label",
"admin.rules.edit.field.spawn_proceeding": "Spawn proceeding",
"admin.rules.edit.field.spawn_proceeding.none": "—",
"admin.rules.edit.field.condition_hint": "JSON grammar: {\"flag\":\"name\"} · {\"op\":\"and|or\",\"args\":[...]} · {\"op\":\"not\",\"args\":[...]}",
"admin.rules.edit.field.condition.valid": "JSON valid.",
"admin.rules.edit.preview.heading": "Preview",
"admin.rules.edit.preview.hint": "Drafts only. Runs the calculator with this draft substituted for the published version.",
"admin.rules.edit.preview.trigger_date": "Trigger date",
"admin.rules.edit.preview.flags": "Flags (comma-separated)",
"admin.rules.edit.preview.run": "Run preview",
"admin.rules.edit.preview.running": "Computing…",
"admin.rules.edit.preview.empty": "No deadlines.",
"admin.rules.edit.preview.error": "Preview failed.",
"admin.rules.edit.preview.only_drafts": "Preview is only available for drafts.",
"admin.rules.edit.preview.trigger_required": "Please supply a trigger date.",
"admin.rules.edit.audit.heading": "Audit log",
"admin.rules.edit.audit.loading": "Loading…",
"admin.rules.edit.audit.empty": "No audit entries.",
"admin.rules.edit.audit.loadmore": "Load more",
"admin.rules.edit.audit.exported": "exported",
"admin.rules.edit.audit.actor.system": "System",
"admin.rules.edit.audit.action.create": "create",
"admin.rules.edit.audit.action.update": "update",
"admin.rules.edit.audit.action.publish": "publish",
"admin.rules.edit.audit.action.archive": "archive",
"admin.rules.edit.audit.action.restore": "restore",
"admin.rules.edit.audit.action.delete": "delete",
"admin.rules.edit.action.save_draft": "Save draft",
"admin.rules.edit.action.publish": "Publish",
"admin.rules.edit.action.clone": "Clone as draft",
"admin.rules.edit.action.archive": "Archive",
"admin.rules.edit.action.restore": "Restore",
"admin.rules.edit.action.ok": "Done.",
"admin.rules.edit.action.save_draft.ok": "Draft saved.",
"admin.rules.edit.action.save_draft.error": "Save failed.",
"admin.rules.edit.action.publish.ok": "Rule published.",
"admin.rules.edit.action.publish.error": "Publish failed.",
"admin.rules.edit.action.archive.ok": "Rule archived.",
"admin.rules.edit.action.archive.error": "Archive failed.",
"admin.rules.edit.action.restore.ok": "Rule restored.",
"admin.rules.edit.action.restore.error": "Restore failed.",
"admin.rules.edit.action.clone.error": "Clone failed.",
"admin.rules.edit.modal.save_draft.title": "Save draft",
"admin.rules.edit.modal.save_draft.body": "Please supply a reason for the change (≥10 chars). Written to the audit log.",
"admin.rules.edit.modal.publish.title": "Publish",
"admin.rules.edit.modal.publish.body": "This draft will go live. The existing published variant is archived.",
"admin.rules.edit.modal.clone.title": "Clone as draft",
"admin.rules.edit.modal.clone.body": "A new draft copy of this rule is created. You will be redirected to the new draft.",
"admin.rules.edit.modal.archive.title": "Archive",
"admin.rules.edit.modal.archive.body": "Rule will be archived. The calculator will no longer use it.",
"admin.rules.edit.modal.restore.title": "Restore",
"admin.rules.edit.modal.restore.body": "Rule will be restored (archived → published).",
// Date-range picker (t-paliad-248). See DE block above for details.
"date_range.button.label": "Time range",
"date_range.button.label.custom_range": "From {from} to {to}",
"date_range.horizon.next_1d": "Today",
"date_range.horizon.next_7d": "Next 7 days",
"date_range.horizon.next_14d": "Next 14 days",
"date_range.horizon.next_30d": "Next 30 days",
"date_range.horizon.next_90d": "Next 90 days",
"date_range.horizon.next_all": "All future",
"date_range.horizon.past_1d": "Last day",
"date_range.horizon.past_7d": "Last 7 days",
"date_range.horizon.past_14d": "Last 14 days",
"date_range.horizon.past_30d": "Last 30 days",
"date_range.horizon.past_90d": "Last 90 days",
"date_range.horizon.past_all": "All past",
"date_range.horizon.any": "All",
"date_range.horizon.custom": "Customize",
"date_range.dialog.label": "Choose time range",
"date_range.fan.past.label": "Past",
"date_range.fan.future.label": "Future",
"date_range.center.label": "All",
"date_range.custom.from": "From",
"date_range.custom.to": "To",
"date_range.custom.apply": "Apply",
"date_range.custom.cancel": "Cancel",
"date_range.custom.invalid": "End date must be strictly after start date.",
"date_range.custom.invalid_format": "Date not recognised (format YYYY-MM-DD).",
"date_range.custom.invalid_missing": "Please fill in both date fields.",
// t-paliad-262 Slice A — canonical `procedural_event` i18n contract.
// Mirrors the DE block; values identical to the legacy
// `admin.rules.*` keys. Adding/changing values? Update BOTH sides.
"admin.procedural_events.list.title": "Manage procedural events — Paliad",
"admin.procedural_events.list.heading": "Manage procedural events",
"admin.procedural_events.list.new": "+ New procedural event",
"admin.procedural_events.col.code": "Code (procedural event)",
// t-paliad-321: 3-segment proceeding-type code column.
"admin.procedural_events.col.proceeding": "Proceeding",
"admin.procedural_events.edit.title": "Edit procedural event — Paliad",
"admin.procedural_events.edit.breadcrumb":"← Manage procedural events",
"admin.procedural_events.edit.field.code": "Code (procedural-event identifier)",
"admin.procedural_events.edit.field.event_kind": "Procedural-event kind (filing / hearing / decision / order)",
"admin.procedural_events.edit.field.parent": "Parent procedural event (UUID)",
},
};
// t — strict translation lookup. The I18nKey parameter is the generated
// union of every key in `translations`, so a literal-string typo at a call
// site fails tsc. Runtime-composed keys (`deadlines.status.${x}`) cannot
// satisfy this signature — TypeScript narrows them to template literal
// types that don't fit the union — so those call sites must use `tDyn`.
export function t(key: I18nKey): string {
return translations[currentLang][key] ?? translations.de[key] ?? key;
}
// tDyn — runtime-composed key escape hatch. Use only when the key is built
// from variables (`tDyn(\`deadlines.status.${x}\`)`); literal-string keys
// must go through `t()` so the I18nKey type catches typos. There is no
// compile-time guarantee the key exists; callers get the same fallback-to-
// raw-key behaviour as t() and are responsible for ensuring the key set
// they interpolate over is fully covered by i18n.ts.
export function tDyn(key: string): string {
return translations[currentLang][key] ?? translations.de[key] ?? key;
}
// tOrEmpty returns the translation if present, else "" — so callers that
// want to fall back to the existing default text in the DOM can do so. The
// `string` parameter is intentional: applyTranslations reads keys off the
// DOM at runtime, so static typing isn't possible here. Internal use only.
function tOrEmpty(key: string): string {
return translations[currentLang][key] ?? translations.de[key] ?? "";
}
export function getLang(): Lang {
return currentLang;
}
// translateEvent localizes a stored project_events row for display.
//
// project_events rows are written with stable English event_type slugs
// ("project_type_changed") and English fallback titles ("Project type
// changed"). The description column is freeform but for known event types
// follows a value-only pattern ("case → litigation", "active → archived",
// "deadline" for note_created). Legacy rows from before this PR carry the
// English prefix ("Type case → litigation", "Note zu deadline hinzugefügt"
// — DE/EN-mixed); both legacy and new shapes parse here.
//
// Caller provides whatever the backend returned for title + description;
// receives a localized pair ready for innerHTML/textContent.
export function translateEvent(
eventType: string | null | undefined,
storedTitle: string,
storedDescription: string | null | undefined,
): { title: string; description: string } {
// Title: prefer the per-event-type localized noun phrase.
let title = storedTitle;
if (eventType) {
const v = tOrEmpty(`event.title.${eventType}`);
if (v) title = v;
}
const description = storedDescription
? translateEventDescription(eventType ?? "", storedDescription)
: "";
return { title, description };
}
function translateEventDescription(eventType: string, description: string): string {
const body = description.trim();
if (!body) return "";
if (eventType === "project_type_changed") {
// New format: "case → litigation". Legacy: "Type case → litigation".
return translateArrowSlugs(body.replace(/^Type\s+/, ""), "projects.type.");
}
if (eventType === "status_changed") {
// New format: "active → archived". Legacy: "Status active → archived".
return translateArrowSlugs(body.replace(/^Status\s+/, ""), "projects.filter.status.");
}
if (eventType === "our_side_changed") {
// Format: "<from> → <to>", where each side is one of
// claimant / defendant / court / both / "none" (the sentinel for
// NULL the service writes when the column is unset on either end).
return translateArrowSlugs(body, "projects.field.our_side.");
}
if (eventType === "note_created") {
// New format: just the parent slug. Legacy: "Note zu <slug> hinzugefügt".
const m = body.match(/^Note zu (project|deadline|appointment) hinzugef[üu]gt$/i);
const slug = (m ? m[1] : body).toLowerCase();
const parent = tOrEmpty(`event.note.parent.${slug}`) || slug;
const phrase = tOrEmpty("event.note.added_to");
return phrase ? phrase.replace("{parent}", parent) : body;
}
if (eventType.startsWith("deadline_") || eventType.startsWith("appointment_")) {
// New format: just the entity title. Legacy: 'Deadline „Foo" geändert' /
// 'Appointment „Foo" angelegt' etc. Strip the noun + verb wrapper, keep
// the quoted title, then re-wrap in the localized template.
const title = extractQuotedTitle(body) ?? body;
return interpolateTemplate(`event.description.${eventType}`, { title }) ?? body;
}
if (eventType === "deadlines_imported") {
// New format: just the count. Legacy: "N Deadlines aus Fristenrechner übernommen".
const m = body.match(/^(\d+)\b/);
const count = m ? m[1] : body;
return interpolateTemplate("event.description.deadlines_imported", { count }) ?? body;
}
return description;
}
// extractQuotedTitle pulls the body out of a legacy DE description like
// `Deadline „Foo" geändert` — German double-low-9 (U+201E) opening quote and
// double-high-6 (U+201C) closing quote, the pair the Go services actually
// write today. Returns null if no quoted run is found, so callers can fall
// back to the raw body.
function extractQuotedTitle(body: string): string | null {
const m = body.match(/„([^“”„]+)[“”]/);
return m ? m[1] : null;
}
function interpolateTemplate(key: string, vars: Record<string, string>): string | null {
const tmpl = tOrEmpty(key);
if (!tmpl) return null;
return tmpl.replace(/\{(\w+)\}/g, (_, name) => vars[name] ?? `{${name}}`);
}
function translateArrowSlugs(body: string, prefix: string): string {
const m = body.match(/^(\S+)\s*[→→]\s*(\S+)$/);
if (!m) return body;
const a = tOrEmpty(`${prefix}${m[1]}`) || m[1];
const b = tOrEmpty(`${prefix}${m[2]}`) || m[2];
return `${a}${b}`;
}
export function onLangChange(cb: () => void) {
changeCallbacks.push(cb);
}
export function setLang(lang: Lang) {
if (lang === currentLang) return;
currentLang = lang;
localStorage.setItem(STORAGE_KEY, lang);
document.documentElement.lang = lang;
applyTranslations();
applyLangToInputs();
updateToggle();
for (const cb of changeCallbacks) cb();
}
// Native <input type="date|time|datetime-local"> follows the browser locale
// for display formatting unless `lang` is set on the element itself — the
// `lang` attribute on <html> is not enough in Chrome/Safari. Stamp the
// current locale on every such input so DE users see dd.mm.yyyy and 24h.
function applyLangToInputs() {
document.querySelectorAll<HTMLInputElement>(
'input[type="date"], input[type="time"], input[type="datetime-local"]',
).forEach((el) => {
el.lang = currentLang;
});
}
function applyTranslations() {
// When a key is missing from every locale, preserve whatever static text
// the HTML was authored with — never overwrite with the raw key string.
document.querySelectorAll<HTMLElement>("[data-i18n]").forEach((el) => {
const key = el.getAttribute("data-i18n")!;
const val = tOrEmpty(key);
if (val !== "") el.textContent = val;
});
document.querySelectorAll<HTMLElement>("[data-i18n-placeholder]").forEach((el) => {
const key = el.getAttribute("data-i18n-placeholder")!;
const val = tOrEmpty(key);
if (val !== "") (el as HTMLInputElement).placeholder = val;
});
document.querySelectorAll<HTMLElement>("[data-i18n-title]").forEach((el) => {
const key = el.getAttribute("data-i18n-title")!;
const val = tOrEmpty(key);
if (val !== "") el.setAttribute("title", val);
});
}
function updateToggle() {
document.querySelectorAll<HTMLElement>("[data-lang-toggle]").forEach((btn) => {
const lang = btn.getAttribute("data-lang-toggle") as Lang;
btn.classList.toggle("lang-active", lang === currentLang);
});
}
export function initI18n() {
let stored = localStorage.getItem(STORAGE_KEY) as Lang | null;
// One-shot migration from the pre-rebrand key (patholo-lang → paliad-lang).
// Drop this fallback once the grace period is over.
if (stored !== "de" && stored !== "en") {
const legacy = localStorage.getItem(LEGACY_STORAGE_KEY) as Lang | null;
if (legacy === "de" || legacy === "en") {
localStorage.setItem(STORAGE_KEY, legacy);
stored = legacy;
}
}
if (localStorage.getItem(LEGACY_STORAGE_KEY) !== null) {
localStorage.removeItem(LEGACY_STORAGE_KEY);
}
if (stored === "de" || stored === "en") {
currentLang = stored;
}
document.documentElement.lang = currentLang;
document.querySelectorAll<HTMLElement>("[data-lang-toggle]").forEach((btn) => {
btn.addEventListener("click", () => {
setLang(btn.getAttribute("data-lang-toggle") as Lang);
});
});
applyTranslations();
applyLangToInputs();
updateToggle();
}