Files
TREK/shared/src/i18n/de/assistant.ts
T
Maurice 214984f398 feat(assistant): trip assistant chat with your own AI connection
Adds an in-app assistant that reads and plans the open trip. Users connect
their own provider (Sign in with ChatGPT, or an Anthropic, OpenAI, Gemini or
OpenRouter key) or use the one the admin set up, including a custom
OpenAI-compatible server. It is an addon and only shows while a connection
is usable.

The chat runs on the existing MCP tools, pinned to the trip. Every change is
held as a change card the user applies or discards, and applied changes can
be undone. On the desktop it is a floating window that can be moved and
resized; on the phone it is fullscreen. Search results show as place cards
that can go onto a day, weather lookups as a strip, proposed places as
ghost markers on the map with a before/after switch, and an answer can be
shared into the trip chat. Booking files can be dropped in and are read
into change cards.
2026-10-21 22:29:56 +02:00

343 lines
21 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
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.
import type { TranslationStrings } from '../types';
const assistant: TranslationStrings = {
'assistant.launcher.tooltip': 'Assistent',
'assistant.launcher.ctrlKey': 'Strg',
'assistant.picker.title': 'Welche Reise?',
'assistant.picker.empty': 'Leg zuerst eine Reise an, dann hilft dir der Assistent beim Planen.',
'assistant.picker.now': 'Jetzt',
'assistant.picker.next': 'Als Nächstes',
'assistant.window.title': 'Assistent',
'assistant.window.log': 'Unterhaltung mit dem Assistenten',
'assistant.window.menu': 'Weitere Optionen',
'assistant.window.settings': 'KI-Einstellungen',
'assistant.window.deleteThread': 'Unterhaltung löschen',
'assistant.window.deleteConfirm': 'Diese Unterhaltung löschen? Das lässt sich nicht rückgängig machen.',
'assistant.setup.question': 'Womit möchtest du chatten?',
'assistant.setup.beta': 'Beta', // same-as-en
'assistant.setup.chatgptNote':
'Der offizielle Weg ist ein API-Schlüssel. Die Anmeldung mit ChatGPT ist noch eine Beta.',
'assistant.setup.keySubtitle': 'Anthropic, OpenAI, Gemini oder OpenRouter',
'assistant.setup.adminOnly': 'Dein Admin richtet das ein.',
'assistant.setup.forEveryone': 'Für alle einrichten',
'assistant.connect.title': 'KI-Assistent',
'assistant.connect.description':
'Chatte mit einem Assistenten, der deine Reise kennt und Änderungen vorschlägt, die du bestätigst.',
'assistant.connect.chatgpt': 'Mit ChatGPT anmelden',
'assistant.connect.chatgptHint': 'Nutzt dein ChatGPT-Abo. Kein Schlüssel nötig.',
'assistant.connect.chatgptStep1': 'Melde dich im neuen Tab bei ChatGPT an.',
'assistant.connect.chatgptOpen': 'ChatGPT-Anmeldung öffnen',
'assistant.connect.chatgptStep2':
'Danach zeigt dein Browser eine Fehlerseite. Das ist richtig so. Kopiere die Adresse oben und komm zurück.',
'assistant.connect.chatgptPaste': 'Adresse einfügen',
'assistant.connect.chatgptWrong': 'Das ist nicht die richtige Adresse. Sie beginnt mit 127.0.0.1.',
'assistant.connect.chatgptExpired': 'Das hat zu lange gedauert. Melde dich nochmal an.',
'assistant.connect.chatgptOtherAccount': 'Das ist ein anderes ChatGPT-Konto. Entferne zuerst die Verbindung.',
'assistant.connect.key': 'API-Schlüssel einfügen',
'assistant.connect.keyPlaceholder': 'Schlüssel hier einfügen',
'assistant.connect.detected': 'Erkannt: {provider}',
'assistant.connect.whichProvider': 'Von welchem Anbieter ist der Schlüssel?',
'assistant.connect.testing': 'Prüfe Verbindung',
'assistant.connect.ok': 'Verbunden. Los geht’s.',
'assistant.connect.openAssistant': 'Assistent öffnen',
'assistant.connect.badKey': 'Dieser Schlüssel funktioniert nicht.',
'assistant.connect.unknownModel': 'Dieses Modell wird hier nicht angeboten.',
'assistant.connect.getKey': 'Schlüssel holen',
'assistant.connect.hintAnthropic': 'Claude Max und Team enthalten API-Guthaben.',
'assistant.connect.hintOpenai': 'Leg einen Schlüssel in deinem OpenAI-Dashboard an.',
'assistant.connect.hintGemini': 'Im AI Studio gibt es eine Gratis-Stufe mit Limits pro Minute und pro Tag, in der Google deine Eingaben zur Verbesserung seiner Produkte nutzen darf. Mit aktivierter Abrechnung gelten höhere Limits, und das entfällt.',
'assistant.connect.hintOpenrouter': 'Melde dich bei OpenRouter an, ganz ohne Schlüssel zu kopieren.',
'assistant.connect.openrouter': 'Mit OpenRouter verbinden',
'assistant.connect.save': 'Verbinden',
'assistant.connect.model': 'Modell',
'assistant.connect.modelHint': 'Zur Wahl stehen nur Modelle, die Werkzeuge nutzen können.',
'assistant.connect.free': 'Gratis-Stufe verfügbar',
'assistant.connect.paid': 'Nach Verbrauch',
'assistant.model.recommended': 'Empfohlen',
'assistant.model.free': 'Kostenlos',
'assistant.connect.connected': 'Verbunden mit {provider}',
'assistant.connect.providedByAdmin': 'Von deinem Admin bereitgestellt',
'assistant.connect.disconnect': 'Trennen',
'assistant.connect.disconnectConfirm': '{provider} trennen? Deine Unterhaltungen bleiben erhalten.',
'assistant.connect.signOut': 'Abmelden',
'assistant.connect.statusOk': 'Verbunden',
'assistant.connect.statusNeedsReauth': 'Anmeldung abgelaufen',
'assistant.connect.statusSignedOut': 'Abgemeldet',
'assistant.connect.statusError': 'Nicht erreichbar',
'assistant.connect.quota': 'Heute {used} von {count} Nachrichten genutzt',
'assistant.connect.quota.one': 'Heute {used} von {count} Nachricht genutzt',
'assistant.connect.claudeLink': 'Du nutzt Claude? In Claude verbinden',
'assistant.privacy.what': 'Was wird geteilt?',
'assistant.privacy.banner': 'Deine Nachrichten und die Trip-Daten, die der Assistent liest, gehen an {provider}.',
'assistant.privacy.ok': 'Verstanden',
'assistant.privacy.shared':
'Deine Nachrichten und die Reisedaten, die der Assistent liest, etwa Orte, Tage und Buchungen.',
'assistant.privacy.notShared': 'Nicht dein Passwort, nicht deine Dateien und nicht deine anderen Reisen.',
'assistant.privacy.provider': '{provider} verarbeitet das nach den eigenen Datenschutzbedingungen.',
'assistant.empty.title': 'Was planen wir?',
'assistant.empty.readOnly': 'Du kannst diese Reise nur ansehen, deshalb beantworte ich Fragen, ändere aber nichts.',
'assistant.suggest.planFirstDays': 'Plane mir die ersten Tage',
'assistant.suggest.mustSee': 'Was sollte ich hier nicht verpassen?',
'assistant.suggest.packingList': 'Erstelle eine Packliste für diese Reise',
'assistant.suggest.emptyDays': 'Welche Tage sind noch leer?',
'assistant.suggest.rainPlan': 'Was machen wir, wenn es regnet?',
'assistant.suggest.today': 'Was steht heute an?',
'assistant.suggest.eatNearby': 'Such mir etwas zum Essen in der Nähe',
'assistant.suggest.weather': 'Wie wird das Wetter?',
'assistant.suggest.openTodos': 'Was ist auf der To-do-Liste noch offen?',
'assistant.suggest.settleUp': 'Wer schuldet wem was?',
'assistant.suggest.recap': 'Fass unsere Reise zusammen',
'assistant.suggest.nearPlace': 'Was gibt es noch in der Nähe von {place}?',
'assistant.suggest.placeTips': 'Tipps für den Besuch von {place}',
'assistant.suggest.planDay': 'Plane mir {day}',
'assistant.suggest.dayTooFull': 'Ist {day} zu voll?',
'assistant.thread.scrollDown': 'Zur neuesten Nachricht',
'assistant.attach.button': 'Buchung anhängen',
'assistant.attach.drop': 'Hier loslassen, dann lese ich die Buchung',
'assistant.attach.unsupported': 'Diese Datei kann ich nicht lesen. Versuch es mit PDF, Mail, Bild oder Wallet-Pass.',
'assistant.attach.tooLarge': 'Diese Datei ist größer als 10 MB.',
'assistant.composer.placeholder': 'Frag etwas zu {trip}',
'assistant.composer.send': 'Senden',
'assistant.composer.stop': 'Stopp',
'assistant.composer.decideFirst': 'Übernimm oder verwirf zuerst die Änderungen oben.',
'assistant.context.ask': 'Fragen',
'assistant.context.remove': 'Kontext entfernen',
'assistant.step.reading': 'Liest deinen Plan',
'assistant.step.searching': 'Sucht nach Orten',
'assistant.step.details': 'Schlägt Details nach',
'assistant.step.nearby': 'Sucht in der Nähe',
'assistant.step.categories': 'Prüft die Kategorien',
'assistant.step.weather': 'Prüft das Wetter',
'assistant.step.todos': 'Liest die To-do-Liste',
'assistant.step.costs': 'Prüft die Kosten',
'assistant.step.help': 'Schaut in der Hilfe nach',
'assistant.step.readingBooking': 'Liest die Buchung',
'assistant.step.working': 'Arbeitet daran',
'assistant.step.collapsed': '{count} Schritte',
'assistant.step.collapsed.one': '{count} Schritt',
'assistant.change.title': 'Vorschlag für deinen Trip',
'assistant.change.doneTitle': 'Erledigt',
'assistant.change.apply': 'Übernehmen',
'assistant.change.applyN': '{count} übernehmen',
'assistant.change.applyN.one': '{count} übernehmen',
'assistant.change.discard': 'Verwerfen',
'assistant.change.include': 'Diese Änderung einbeziehen',
'assistant.change.applied': 'Übernommen',
'assistant.change.discarded': 'Verworfen',
'assistant.change.failed': 'Das ließ sich nicht übernehmen.',
'assistant.change.applying': 'Wird übernommen',
'assistant.change.expired': 'Nicht mehr verfügbar',
'assistant.change.undo': 'Rückgängig',
'assistant.change.undone': 'Rückgängig gemacht',
'assistant.change.undoStale': 'Inzwischen geändert. Bitte pass es von Hand an.',
'assistant.change.undoFailed': 'Das ließ sich nicht rückgängig machen.',
'assistant.change.showOnMap': 'Auf Karte zeigen',
'assistant.change.empty': 'leer',
'assistant.change.pending': '{count} Änderungen warten auf deine Bestätigung',
'assistant.change.pending.one': '{count} Änderung wartet auf deine Bestätigung',
'assistant.change.verb.addPlace': 'Ort hinzufügen',
'assistant.change.verb.addPlaceToDay': 'Ort zum Tag hinzufügen',
'assistant.change.verb.updatePlace': 'Ort ändern',
'assistant.change.verb.assignPlace': 'Ort an einem Tag einplanen',
'assistant.change.verb.moveAssignment': 'Auf einen anderen Tag verschieben',
'assistant.change.verb.removeFromDay': 'Vom Tag nehmen',
'assistant.change.verb.addDayNote': 'Notiz hinzufügen',
'assistant.change.verb.updateDayNote': 'Notiz ändern',
'assistant.change.verb.addPackingItem': 'Zur Packliste hinzufügen',
'assistant.change.verb.updatePackingItem': 'Packlisten-Eintrag ändern',
'assistant.change.verb.addTodo': 'To-do hinzufügen',
'assistant.change.verb.addBudgetItem': 'Ausgabe hinzufügen',
'assistant.change.verb.addReservation': 'Buchung hinzufügen',
'assistant.change.verb.importBooking': 'Buchung aus Datei hinzufügen',
'assistant.change.label.name': 'Name', // same-as-en
'assistant.change.label.description': 'Beschreibung',
'assistant.change.label.address': 'Adresse',
'assistant.change.label.coordinates': 'Position auf der Karte',
'assistant.change.label.category': 'Kategorie',
'assistant.change.label.day': 'Tag',
'assistant.change.label.time': 'Uhrzeit',
'assistant.change.label.endTime': 'Bis',
'assistant.change.label.notes': 'Notizen',
'assistant.change.label.website': 'Webseite',
'assistant.change.label.phone': 'Telefon',
'assistant.change.label.email': 'E-Mail',
'assistant.change.label.openingHours': 'Öffnungszeiten',
'assistant.change.label.price': 'Preis',
'assistant.change.label.currency': 'Währung',
'assistant.change.label.stopType': 'Art des Stopps',
'assistant.change.label.text': 'Text', // same-as-en
'assistant.change.label.icon': 'Symbol',
'assistant.change.label.color': 'Farbe',
'assistant.change.label.position': 'Reihenfolge',
'assistant.change.label.quantity': 'Menge',
'assistant.change.label.weight': 'Gewicht',
'assistant.change.label.bag': 'Gepäckstück',
'assistant.change.label.packed': 'Gepackt',
'assistant.change.label.dueDate': 'Fällig',
'assistant.change.label.priority': 'Priorität',
'assistant.change.label.assignee': 'Zuständig',
'assistant.change.label.type': 'Art',
'assistant.change.label.location': 'Ort',
'assistant.change.label.link': 'Link', // same-as-en
'assistant.change.label.confirmation': 'Buchungsnummer',
'assistant.change.label.checkIn': 'Check-in', // same-as-en
'assistant.change.label.checkOut': 'Check-out', // same-as-en
'assistant.change.label.stay': 'Aufenthalt',
'assistant.change.label.members': 'Aufgeteilt auf',
'assistant.change.label.route': 'Strecke',
'assistant.history.open': 'Letzte Unterhaltungen',
'assistant.history.new': 'Neue Unterhaltung',
'assistant.history.empty': 'Noch keine Unterhaltungen.',
'assistant.history.retention': 'Unterhaltungen werden nach {count} Tagen gelöscht.',
'assistant.history.retention.one': 'Unterhaltungen werden nach {count} Tag gelöscht.',
'assistant.history.forever': 'Unterhaltungen bleiben, bis du sie löschst.',
'assistant.error.notConnected': 'Der Assistent ist noch nicht verbunden.',
'assistant.error.busy': 'Läuft schon in einem anderen Fenster.',
'assistant.error.dailyLimit': 'Für heute ist Schluss. Morgen geht es weiter.',
'assistant.error.rateLimited': 'Etwas langsamer bitte. Versuch es in einer Minute nochmal.',
'assistant.error.needsReauth': 'Deine Anmeldung bei {provider} ist abgelaufen.',
'assistant.error.usageLimit': 'Dein ChatGPT-Kontingent ist aufgebraucht.',
'assistant.error.notEligible': 'Dieses ChatGPT-Konto kann hier nicht genutzt werden.',
'assistant.error.invalidKey': 'Dein Schlüssel für {provider} funktioniert nicht mehr.',
'assistant.error.providerDown': '{provider} antwortet gerade nicht.',
'assistant.error.maxSteps': 'Das war viel auf einmal. Soll ich weitermachen?',
'assistant.error.offline': 'Offline. Der Assistent braucht Internet.',
'assistant.error.noBookingsFound': 'In dieser Datei wurde keine Buchung gefunden.',
'assistant.error.importUnavailable': 'Buchungsdateien lesen ist hier nicht verfügbar.',
'assistant.error.generic': 'Etwas ist schiefgelaufen.',
'assistant.errorAction.retry': 'Nochmal versuchen',
'assistant.errorAction.continueHere': 'Hier weitermachen',
'assistant.errorAction.continue': 'Weitermachen',
'assistant.errorAction.signIn': 'Neu anmelden',
'assistant.errorAction.viewUsage': 'Kontingent ansehen',
'assistant.errorAction.otherProvider': 'Anderen Anbieter wählen',
'assistant.errorAction.replaceKey': 'Schlüssel ersetzen',
'assistant.errorAction.connectOwn': 'Eigenen Anbieter verbinden',
'assistant.admin.policy': 'Wer zahlt',
'assistant.admin.policy.instance': 'Ich zahle für alle',
'assistant.admin.policy.instanceOrUser': 'Ich zahle, eigene erlaubt',
'assistant.admin.policy.user': 'Jeder nutzt sein eigenes Konto',
'assistant.admin.policy.instanceHint': 'Alle nutzen die Verbindung unten und können keine eigene hinzufügen.',
'assistant.admin.policy.instanceOrUserHint': 'Alle nutzen die Verbindung unten, außer sie verbinden eine eigene.',
'assistant.admin.policy.userHint': 'Jeder verbindet seinen eigenen Anbieter. Dir entstehen keine Kosten.',
'assistant.admin.connection': 'Verbindung für alle',
'assistant.admin.connectionNone': 'Noch keine Verbindung.',
'assistant.admin.connectionRemove': 'Verbindung entfernen',
'assistant.admin.custom': 'Eigener Server',
'assistant.admin.customHint': 'Jeder OpenAI-kompatible Server, zum Beispiel Ollama.',
'assistant.admin.baseUrl': 'Serveradresse',
'assistant.admin.apiKeyOptional': 'API-Schlüssel (optional)',
'assistant.admin.prefilled': 'Übernommen aus der KI-Auswertung.',
'assistant.admin.dailyLimit': 'Nachrichten pro Person und Tag',
'assistant.admin.dailyLimitHint': 'Zählt nur, solange du zahlst.',
'assistant.admin.retention': 'Unterhaltungen aufbewahren',
'assistant.admin.retentionDays': '{count} Tage',
'assistant.admin.retentionDays.one': '{count} Tag',
'assistant.admin.retentionForever': 'Für immer',
'assistant.claude.title': 'Mit Claude verbinden',
'assistant.claude.description': 'Nutze TREK direkt in Claude: als Connector hinzufügen, anmelden, fertig.',
'assistant.claude.open': 'In Claude öffnen',
'assistant.claude.scan': 'Oder mit dem Handy scannen',
'assistant.claude.copyUrl': 'Adresse kopieren',
'assistant.claude.qrAlt': 'QR-Code, um TREK in Claude hinzuzufügen',
'assistant.claude.notPublic': 'Claude erreicht TREK nur, wenn es per https aus dem Internet erreichbar ist.',
'assistant.mobile.tile': 'Frag TREK',
'assistant.mobile.tileHint': 'Plane mit dem Assistenten',
'assistant.mobile.backToChat': 'Zurück zum Chat',
'assistant.step.nearbyAt': 'Sucht in der Nähe von {place}',
'assistant.step.searchingFor': 'Sucht nach {query}',
'assistant.step.weatherAt': 'Prüft das Wetter in {place}',
'assistant.change.timeline.show': 'Ablauf zeigen',
'assistant.change.timeline.hide': 'Ablauf ausblenden',
'assistant.change.timeline.new': 'Neu',
'assistant.change.timeline.travel': '≈ {count} Min. Weg',
'assistant.change.timeline.travel.one': '≈ {count} Min. Weg',
'assistant.change.timeline.gap': '{count} Min. frei',
'assistant.change.timeline.gap.one': '{count} Min. frei',
'assistant.change.timeline.overlap': 'Überschneidet sich mit {place}',
'assistant.change.timeline.moreDays': '{count} weitere Tage',
'assistant.change.timeline.moreDays.one': '{count} weiterer Tag',
'assistant.change.viewOnMap': 'Auf Karte ansehen',
'assistant.change.before': 'Vorher',
'assistant.change.after': 'Nachher',
'assistant.change.compare': 'Auf der Karte vergleichen',
'assistant.change.undoAll': 'Alle rückgängig',
'assistant.change.undoneAll': '{count} Änderungen rückgängig gemacht',
'assistant.change.undoneAll.one': '{count} Änderung rückgängig gemacht',
'assistant.change.undoAllPartial': '{done} rückgängig gemacht, {stale} inzwischen geändert',
'assistant.change.undoAllFailed': '{count} Änderungen ließen sich nicht rückgängig machen',
'assistant.change.undoAllFailed.one': '{count} Änderung ließ sich nicht rückgängig machen',
'assistant.place.strip': 'Gefundene Orte',
'assistant.place.addTo': 'Zu {day} hinzufügen',
'assistant.place.addToShort': '+ Tag {n}',
'assistant.place.pickDay': 'Tag wählen',
'assistant.place.suggested': 'Vorgeschlagen',
'assistant.place.inTrip': 'Schon im Trip',
'assistant.place.showOnMap': 'Auf Karte',
'assistant.place.openNow': 'Geöffnet',
'assistant.place.closed': 'Geschlossen',
'assistant.place.fromPrev': '{distance} vom vorigen Stopp',
'assistant.place.more': '{count} weitere',
'assistant.place.more.one': '{count} weiterer',
'assistant.mention.days': 'Tage',
'assistant.mention.places': 'Orte',
'assistant.mention.bookings': 'Buchungen',
'assistant.mention.none': 'Nichts gefunden',
'assistant.mention.hint': 'Mit @ nennst du Tage, Orte und Buchungen.',
'assistant.attach.dropPlace': 'Ort hier ablegen',
'assistant.weather.strip': 'Wetter für {count} Tage',
'assistant.weather.strip.one': 'Wetter für {count} Tag',
'assistant.weather.rain': '{pct} % Regen',
'assistant.settings.followMap': 'Karte folgt dem Assistenten',
'assistant.settings.followMapHint': 'Die Karte schwenkt dorthin, wo der Assistent sucht und Orte vorschlägt.',
'assistant.error.decideFirst': 'Entscheide zuerst über die offenen Vorschläge.',
'assistant.error.providerLimit': 'Limit bei {provider} erreicht. Versuch es später noch einmal.',
'assistant.hint.title': 'Aufgefallen',
'assistant.hint.dismiss': 'Hinweis ausblenden',
'assistant.hint.more': '{count} weitere',
'assistant.hint.more.one': '{count} weiterer',
'assistant.hint.overlap': '{a} und {b} überschneiden sich am {day}',
'assistant.hint.overlap.prompt': 'Am {day} überschneiden sich {a} und {b}. Wie lösen wir das?',
'assistant.hint.closed': '{place} hat am {day} geschlossen',
'assistant.hint.closed.prompt': '{place} hat am {day} geschlossen. Was machen wir stattdessen?',
'assistant.hint.opensLate': '{place} öffnet am {day} erst um {time}',
'assistant.hint.closesEarly': '{place} schließt am {day} schon um {time}',
'assistant.hint.outsideHours.prompt':
'Unser Besuch in {place} am {day} passt nicht zu den Öffnungszeiten. Wie verschieben wir das am besten?',
'assistant.hint.gap': '{day}: {count} Stunden frei ab {from}',
'assistant.hint.gap.one': '{day}: {count} Stunde frei ab {from}',
'assistant.hint.gap.prompt': 'Am {day} ist von {from} bis {to} nichts geplant. Was passt in die Lücke?',
'assistant.hint.longLeg': '{from} und {to} liegen Luftlinie {distance} auseinander',
'assistant.hint.longLeg.prompt': 'Ist der Weg von {from} nach {to} am {day} zu weit? Wie kommen wir am besten hin?',
'assistant.hint.tightLeg': 'Zwischen {from} und {to} bleiben nur {count} Minuten',
'assistant.hint.tightLeg.one': 'Zwischen {from} und {to} bleibt nur {count} Minute',
'assistant.hint.tightLeg.prompt': 'Reicht die Zeit am {day} von {from} nach {to}? Was sollen wir anpassen?',
'assistant.hint.noStay': 'Noch keine Unterkunft für {count} Nächte ab {day}',
'assistant.hint.noStay.one': 'Noch keine Unterkunft für die Nacht nach {day}',
'assistant.hint.noStay.prompt': 'Uns fehlt noch eine Unterkunft ab {day}. Was schlägst du vor?',
'assistant.hint.unplacedBooking': '{title} hängt an keinem Tag',
'assistant.hint.unplacedBookingDay': '{title} gehört wohl zum {day}',
'assistant.hint.unplacedBookings': '{count} Buchungen hängen an keinem Tag',
'assistant.hint.unplacedBookings.one': '{count} Buchung hängt an keinem Tag',
'assistant.hint.unplacedBooking.prompt': 'Welche Buchungen hängen an keinem Tag, und wohin gehören sie?',
'assistant.hint.menuOn': 'Hinweise zeigen',
'assistant.hint.menuOff': 'Keine Hinweise zeigen',
'assistant.launcher.withHints': 'Assistent, {count} Hinweise',
'assistant.launcher.withHints.one': 'Assistent, {count} Hinweis',
'assistant.mobile.tileHints': '{count} Hinweise zu deinem Plan',
'assistant.mobile.tileHints.one': '{count} Hinweis zu deinem Plan',
'assistant.share.button': 'In den Trip-Chat teilen',
'assistant.share.title': 'In den Trip-Chat teilen',
'assistant.share.who': 'Alle im Trip sehen diese Nachricht, markiert als vom Assistenten.',
'assistant.share.includeChanges': 'Übernommene Änderungen anhängen',
'assistant.share.changesHeading': 'Übernommen:',
'assistant.share.truncated': 'Gekürzt auf {count} Zeichen',
'assistant.share.truncated.one': 'Gekürzt auf {count} Zeichen',
'assistant.share.send': 'Teilen',
'assistant.share.done': 'Im Trip-Chat geteilt',
'assistant.share.shared': 'Geteilt',
'assistant.share.failed': 'Teilen hat nicht geklappt. Versuch es gleich noch mal.',
'assistant.share.chatOff': 'Der Trip-Chat ist ausgeschaltet.',
};
export default assistant;