1
0
Files
breadcrumb-the-shire/modules/helpdesk/i18n/default_de.json
fs 792f706d9e feat(helpdesk): add ticket file download and inline image preview
New SOAP method getTicketFile() on BcSoapGateway calls BC's
GetTicketFile to retrieve file attachments as Base64, decodes in
memory and returns binary data without writing to disk.

New proxy endpoint helpdesk/ticket-file-data streams files directly
to the browser with correct MIME type. Images served inline, other
files as download attachment.

TicketCommunicationService now attaches file_entry_no and file_name
to file-type events. Frontend renders download links with bi-download
icon and inline image previews for jpg/png/gif attachments.

Works in both ticket detail and debitor detail communication feeds.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 22:49:01 +02:00

310 lines
15 KiB
JSON

{
"Helpdesk": "Helpdesk",
"Helpdesk settings": "Helpdesk-Einstellungen",
"Customers": "Kunden",
"Debtor search": "Kundensuche",
"Search debtors": "Kunden suchen",
"Search by name or debtor number...": "Suche nach Name oder Kundennummer...",
"Search": "Suchen",
"Please provide a customer number": "Bitte geben Sie eine Kundennummer an",
"Minimum 2 characters": "Mindestens 2 Zeichen",
"Please enter at least 2 characters.": "Bitte mindestens 2 Zeichen eingeben.",
"No debtors found": "Keine Kunden gefunden",
"Try a different search term.": "Versuchen Sie einen anderen Suchbegriff.",
"Could not connect to Business Central.": "Verbindung zu Business Central fehlgeschlagen.",
"BC connection is not configured.": "BC-Verbindung ist nicht konfiguriert.",
"BC connection is not configured. Please configure the connection in the settings.": "BC-Verbindung ist nicht konfiguriert. Bitte konfigurieren Sie die Verbindung in den Einstellungen.",
"BC connection is not configured": "BC-Verbindung ist nicht konfiguriert",
"Open settings": "Einstellungen öffnen",
"Debtor No.": "Kunden-Nr.",
"Name": "Name",
"City": "Ort",
"Phone": "Telefon",
"E-Mail": "E-Mail",
"Master data": "Stammdaten",
"Contacts": "Ansprechpartner",
"Tickets": "Tickets",
"Debtor details": "Kunden-Details",
"Search name": "Suchname",
"Address": "Adresse",
"Postal code": "PLZ",
"Salesperson": "Verkäufer",
"No contacts found": "Keine Ansprechpartner gefunden",
"No contacts are linked to this debtor in Business Central.": "Diesem Kunden sind in Business Central keine Ansprechpartner zugeordnet.",
"No.": "Nr.",
"Type": "Typ",
"Job title": "Position",
"No tickets found": "Keine Tickets gefunden",
"No tickets are linked to this debtor in Business Central.": "Diesem Kunden sind in Business Central keine Tickets zugeordnet.",
"Ticket No.": "Ticket-Nr.",
"Description": "Beschreibung",
"Status": "Status",
"Category": "Kategorie",
"Contact": "Kontakt",
"Support": "Support",
"Sales": "Vertrieb",
"Controlling": "Controlling",
"Ticket": "Ticket",
"Debtor": "Kunde",
"Debtor not found": "Kunde nicht gefunden",
"Ticket not found": "Ticket nicht gefunden",
"Back to search": "Zurück zur Suche",
"Back": "Zurück",
"Settings": "Einstellungen",
"Connection": "Verbindung",
"Save": "Speichern",
"Settings saved": "Einstellungen gespeichert",
"Configuration incomplete": "Konfiguration unvollständig",
"OData connection": "OData-Verbindung",
"OData Base URL": "OData-Basis-URL",
"Base URL without Company path segment": "Basis-URL ohne Company-Pfadsegment",
"Company name": "Firmenname",
"BC company name (URL-encoded automatically)": "BC-Firmenname (wird automatisch URL-kodiert)",
"Authentication": "Authentifizierung",
"Auth mode": "Auth-Modus",
"Basic Auth": "Basic Auth",
"OAuth2 (client credentials)": "OAuth2 (Client Credentials)",
"Basic Auth credentials": "Basic-Auth-Zugangsdaten",
"Username": "Benutzername",
"Password": "Passwort",
"Leave unchanged to keep current password": "Leer lassen, um das aktuelle Passwort beizubehalten",
"OAuth2 credentials": "OAuth2-Zugangsdaten",
"Azure Tenant ID": "Azure-Mandanten-ID",
"Client ID": "Client-ID",
"Client Secret": "Client-Secret",
"Token endpoint URL": "Token-Endpoint-URL",
"Connection test": "Verbindungstest",
"Test connection": "Verbindung testen",
"Connection successful": "Verbindung erfolgreich",
"Connection failed": "Verbindung fehlgeschlagen",
"Testing...": "Teste...",
"Form expired, please try again": "Formular abgelaufen, bitte erneut versuchen",
"OData Base URL must use HTTPS": "OData-Basis-URL muss HTTPS verwenden",
"Address & contact": "Adresse & Kontakt",
"Company": "Unternehmen",
"Company details": "Firmendetails",
"Contact & dates": "Kontakt & Termine",
"Could not load contacts.": "Ansprechpartner konnten nicht geladen werden.",
"Could not load tickets.": "Tickets konnten nicht geladen werden.",
"Last activity": "Letzte Aktivität",
"Ticket details": "Ticket-Details",
"Overview": "Übersicht",
"Open tickets": "Offene Tickets",
"All tickets": "Alle Tickets",
"All contacts": "Alle Ansprechpartner",
"Recent activity": "Letzte Aktivität",
"Support info & master data": "Support-Info & Stammdaten",
"Support type": "Supportart",
"Location": "Standort",
"No open tickets": "Keine offenen Tickets",
"No recent activity found.": "Keine aktuellen Aktivitäten gefunden.",
"Total tickets": "Alle Tickets",
"Total contracts": "Alle Verträge",
"Critical (>48h)": "Kritisch (>48h)",
"Oldest open": "Ältestes offenes",
"Ticket list": "Ticketliste",
"Next actions": "Nächste Aktionen",
"System recommendations": "System-Empfehlungen",
"Action": "Aktion",
"Age (h)": "Alter (h)",
"No support actions required right now.": "Aktuell sind keine Support-Aktionen erforderlich.",
"No system recommendations right now.": "Aktuell gibt es keine System-Empfehlungen.",
"Contracts & products": "Verträge & Produkte",
"No contracts found for this customer.": "Für diesen Debitor wurden keine Verträge gefunden.",
"Contract No.": "Vertragsnr.",
"Product type": "Produkttyp",
"Next invoicing": "Nächste Abrechnung",
"Amount": "Betrag",
"Active contracts": "Aktive Verträge",
"Could not load contracts.": "Verträge konnten nicht geladen werden.",
"Escalations": "Eskalationen",
"Escalations are not available yet.": "Eskalationen sind derzeit noch nicht verfügbar.",
"Escalated tickets": "Eskalierte Tickets",
"No escalated tickets right now.": "Aktuell gibt es keine eskalierten Tickets.",
"Could not load escalated tickets.": "Eskalierte Tickets konnten nicht geladen werden.",
"Escalation code": "Eskalationscode",
"SLA target": "SLA-Ziel",
"Overdue by": "Überfällig seit",
"day": "Tag",
"days": "Tage",
"Ticket volume": "Ticket-Volumen",
"Close rate": "Close-Rate",
"Avg. resolution": "Ø Lösungszeit",
"Open backlog": "Offene Tickets",
"kpi_tooltip_close_rate": "Geschlossene \u00f7 erstellte Tickets im Zeitraum. \u00dcber 1\u00d7 = R\u00fcckstau wird abgebaut.",
"kpi_tooltip_resolution": "Median der Bearbeitungsdauer aller im Zeitraum geschlossenen Tickets.",
"kpi_tooltip_backlog": "Aktueller Stand aller offenen Tickets \u2013 unabh\u00e4ngig vom gew\u00e4hlten Zeitraum. Zeigt den R\u00fcckstau.",
"Backlog shrinking": "Rückstau wird abgebaut",
"Backlog growing": "Rückstau wächst",
"unassigned": "ohne Bearbeiter",
"Ticket trend": "Ticket-Trend",
"Support efficiency": "Support-Effizienz",
"Contract metrics": "Vertrags-Kennzahlen",
"Risk assessment": "Risikoanalyse",
"vs. prev. period": "vs. Vorperiode",
"Low": "Niedrig",
"Medium": "Mittel",
"High": "Hoch",
"All checks passed": "Alle Checks bestanden",
"of": "von",
"checks flagged": "Checks auffällig",
"Limit": "Limit",
"No controlling data available.": "Keine Controlling-Daten verfügbar.",
"Resolution time": "Bearbeitungszeit",
"Oldest open ticket": "Ältestes offenes Ticket",
"Unassigned": "Nicht zugewiesen",
"risk_desc_ticket_volume": "Veränderung zum Vorperiode",
"risk_desc_resolution_time": "Median bis Schließung",
"risk_desc_open_aging": "Seit letzter Aktivität",
"risk_desc_unassigned": "Anteil offener Tickets ohne Bearbeiter",
"Ticket volume increase": "Ticketvolumen-Anstieg",
"High avg. resolution time": "Hohe Ø Lösungszeit",
"Open ticket aging": "Offene Tickets überfällig",
"Unassigned ticket ratio": "Nicht-zugewiesene Tickets",
"Could not load controlling dashboard.": "Controlling-Dashboard konnte nicht geladen werden.",
"Avg. open age": "Ø Alter offen",
"Without assignee": "Ohne Bearbeiter",
"30 days": "30 Tage",
"90 days": "90 Tage",
"6 months": "6 Monate",
"1 year": "1 Jahr",
"Escalation rate": "Eskalationsrate",
"Threshold (%)": "Schwellwert (%)",
"Threshold (hours)": "Schwellwert (Stunden)",
"Controlling risk configuration was invalid. Defaults were applied.": "Die Controlling-Risiko-Konfiguration war ungültig. Es wurden Standardwerte geladen.",
"Open ticket without activity for": "Offenes Ticket ohne Aktivität seit",
"hours": "Stunden",
"Open ticket without assigned support user": "Offenes Ticket ohne zugewiesenen Support-Bearbeiter",
"Follow up oldest open ticket": "Ältestes offenes Ticket nachverfolgen",
"System recommendation configuration was invalid. Defaults were applied.": "Die Konfiguration der System-Empfehlungen war ungültig. Es wurden Standardwerte geladen.",
"Maximum recommendations": "Maximale Empfehlungen",
"Rule templates": "Regel-Templates",
"Enabled": "Aktiv",
"Priority": "Priorität",
"Thresholds": "Schwellwerte",
"Escalation overdue": "Eskalation überfällig",
"High-risk aging": "High-Risk Alterung",
"Unassigned open": "Offen ohne Bearbeiter",
"Stale open": "Offen ohne Aktivität",
"Customer backlog": "Offene Tickets beim Kunden",
"Minimum overdue (minutes)": "Mindestens überfällig (Minuten)",
"High-risk codes (comma separated)": "High-Risk Codes (kommagetrennt)",
"Minimum age (hours)": "Mindestalter (Stunden)",
"Minimum open tickets": "Mindestens offene Tickets",
"Escalation SLA exceeded by {overdue_hours}h ({escalation_code}).": "SLA um {overdue_hours}h überschritten ({escalation_code}) — sofort eskalieren oder Kunden informieren.",
"High-risk ticket ({escalation_code}) is open for {age_hours}h.": "Kritisches Ticket ({escalation_code}) seit {age_hours}h offen — Priorität prüfen und Bearbeitung sicherstellen.",
"Ticket is unassigned for {age_hours}h.": "Seit {age_hours}h ohne Bearbeiter — dringend einem Mitarbeiter zuweisen.",
"No activity for {age_hours}h.": "Seit {age_hours}h keine Aktivität — prüfen ob Kunde auf Antwort wartet.",
"Customer backlog: {open_tickets} open tickets.": "{open_tickets} offene Tickets — älteste Tickets zuerst bearbeiten, um Rückstau abzubauen.",
"Created": "Erstellt",
"Loading...": "Laden...",
"Refresh data": "Daten aktualisieren",
"Mobile": "Mobil",
"Activity": "Aktivität",
"Activity timeline": "Aktivitätsverlauf",
"Message": "Nachricht",
"Status change": "Statusänderung",
"No activity found.": "Keine Aktivitäten gefunden.",
"Could not load activity log.": "Aktivitätsverlauf konnte nicht geladen werden.",
"Communication history": "Kommunikationsverlauf",
"No communication found.": "Keine Kommunikation gefunden.",
"Could not load communication history.": "Kommunikationsverlauf konnte nicht geladen werden.",
"Live communication unavailable, showing activity fallback.": "Live-Kommunikation nicht verfügbar, es werden Aktivitätsdaten als Fallback angezeigt.",
"Ticket communication": "Ticket-Kommunikation",
"Last 5 tickets": "Letzte 5 Tickets",
"Last 10 tickets": "Letzte 10 Tickets",
"Some ticket communications could not be loaded completely.": "Einige Ticket-Kommunikationen konnten nicht vollständig geladen werden.",
"Unknown user": "Unbekannter Benutzer",
"Unknown time": "Unbekannte Zeit",
"Source": "Quelle",
"SOAP": "SOAP",
"Activity fallback": "Aktivitäts-Fallback",
"sent a message": "hat eine Nachricht gesendet",
"changed status": "hat den Status geändert",
"Forwarded": "hat das Ticket weitergeleitet",
"attached a file": "hat eine Datei angehängt",
"logged an activity": "hat eine Aktivität erfasst",
"on": "am",
"Process": "Prozess",
"All": "Alle",
"Open": "Offen",
"In Progress": "In Bearbeitung",
"Closed": "Geschlossen",
"Monthly volume": "Monatliches Volumen",
"Support hours": "Support-Stunden",
"Contract overview": "Vertragsübersicht",
"No contract details available.": "Keine Vertragsdetails verfügbar.",
"Could not load sales dashboard.": "Vertriebsdashboard konnte nicht geladen werden.",
"Quantity": "Menge",
"Unit price": "Stückpreis",
"Line amount": "Zeilenbetrag",
"Line state": "Zeilenstatus",
"Starting date": "Startdatum",
"Invoicing period": "Abrechnungszeitraum",
"positions": "Positionen",
"per month": "pro Monat",
"Last invoicing": "Letzte Abrechnung",
"Analysis": "Analyse",
"New (30d)": "Neu (30T)",
"Resolved (30d)": "Gelöst (30T)",
"Avg. age open": "Ø Alter offen",
"vs. prev. 30d": "vs. Vorz. 30T",
"net (30d)": "netto (30T)",
"critical": "kritisch",
"Avg. contract value": "Ø Vertragswert",
"of {total} total": "von {total} gesamt",
"in {days} days": "in {days} Tagen",
"largest": "größter",
"Attention needed": "Handlungsbedarf",
"Recommendations": "Empfehlungen",
"Contract summary": "Vertragsübersicht",
"Contract trend": "Vertragsentwicklung",
"New contracts": "Neue Verträge",
"Ended contracts": "Beendete Verträge",
"active": "aktiv",
"ended": "beendet",
"Age": "Alter",
"Period": "Zeitraum",
"Last 30 days": "Letzte 30 Tage",
"Last 90 days": "Letzte 90 Tage",
"Last 180 days": "Letzte 180 Tage",
"Last 365 days": "Letzte 365 Tage",
"Automation": "Automatisierung",
"Risk monitoring": "Risiko-Monitoring",
"rule_help_escalation_overdue": "Empfiehlt Aktion, wenn SLA-Eskalationsfristen überschritten sind.",
"rule_help_high_risk_aging": "Erkennt kritische Tickets mit bestimmten Eskalationscodes, die zu lange offen sind.",
"rule_help_unassigned_open": "Weist auf offene Tickets hin, die keinem Bearbeiter zugewiesen sind.",
"rule_help_stale_open": "Markiert offene Tickets ohne aktuelle Aktivität zur Nachverfolgung.",
"rule_help_customer_backlog": "Warnt, wenn ein Kunde zu viele offene Tickets gleichzeitig hat.",
"rule_help_ticket_volume": "Löst aus, wenn das Ticketvolumen im Vergleich zur Vorperiode ungewöhnlich ansteigt.",
"rule_help_avg_resolution": "Warnt, wenn die durchschnittliche Bearbeitungszeit einen Schwellwert überschreitet.",
"rule_help_open_aging": "Erkennt offene Tickets, die zu lange ohne Bearbeitung sind.",
"rule_help_unassigned_ratio": "Warnt, wenn zu viele offene Tickets keinem Bearbeiter zugewiesen sind.",
"Automation configuration was invalid. Defaults were applied.": "Die Automatisierungskonfiguration war ungültig. Es wurden Standardwerte geladen.",
"Advanced options": "Erweiterte Optionen",
"Min. overdue": "Mind. überfällig",
"Min. age": "Mindestalter",
"Min. open": "Mind. offen",
"Team": "Team",
"Team dashboard": "Team-Dashboard",
"Team workload": "Team-Auslastung",
"Support agent": "Support-Mitarbeiter",
"Open": "Offen",
"Critical (>48h open)": "Kritisch (>48h offen)",
"Avg. age (h)": "Ø Alter (h)",
"Resolved in period": "Gelöst im Zeitraum",
"Not assigned": "Nicht zugewiesen",
"Could not load team dashboard.": "Team-Dashboard konnte nicht geladen werden.",
"No team data available.": "Keine Team-Daten verfügbar.",
"Top customers": "Top-Kunden",
"Top categories": "Top-Kategorien",
"Current": "Aktuell",
"Performance": "Leistung",
"Historical": "Historisch",
"Queue": "Warteschlange",
"trend_tooltip_up": "Mehr Tickets erhalten als gelöst im Zeitraum — Rückstau wächst.",
"trend_tooltip_down": "Mehr Tickets gelöst als erhalten im Zeitraum — Rückstau wird abgebaut.",
"Download file": "Datei herunterladen",
"Trend based on last {days} days": "Trend basiert auf den letzten {days} Tagen"
}