mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-23 15:36:33 +00:00
fa8a43b16e
- list_budget_items lists a trip's expenses with their ids, payers and splits, page by page so no page is cut down on its way to a model; get_budget_per_person answers who paid and owes what. Both in a new budget-items.mcp.ts, checked like their REST twins. - get_wind_forecast reads the hourly wind, gusts and direction of a day. - get_journey_tracks lists a journey's GPX tracks; the line for drawing rides under a key the provider never receives. - The Dawarich wishlist scan and the countries the recordings suggest become tools, with their confirming writes, in DawarichAtlasMcp in the Atlas group; the shared time window check refuses alike on REST and MCP, and the model never sees when the user was last seen in a city. - The journal's map, tracks and recorded days load with the journey group instead of riding in the core of every step. - The prompt points at list_budget_items for expense ids (the trip summary never carried them) and names the shares and the wind tools; each new read has its own live step.
453 lines
28 KiB
TypeScript
453 lines
28 KiB
TypeScript
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.planningHike': 'Plant die Wanderung',
|
||
'assistant.step.planningHikeTo': 'Plant die Wanderung bis {place}',
|
||
'assistant.step.expenses': 'Liest die Ausgaben',
|
||
'assistant.step.shares': 'Rechnet die Anteile aus',
|
||
'assistant.step.wind': 'Prüft den Wind',
|
||
'assistant.step.tracks': 'Liest die GPX-Tracks',
|
||
'assistant.step.bucketScan': 'Gleicht die Wunschliste mit deinen Aufzeichnungen ab',
|
||
'assistant.step.atlasCountries': 'Sucht Länder in deinen Aufzeichnungen',
|
||
'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.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.overlap': 'Überschneidet sich mit {place}',
|
||
'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.',
|
||
'assistant.connect.descriptionWithParsing':
|
||
'Deine KI-Verbindung: Der Assistent läuft darüber, und sie liest die Buchungen, die du importierst.',
|
||
'assistant.connect.descriptionParsingOnly': 'Deine KI-Verbindung: Sie liest die Buchungen, die du importierst.',
|
||
'assistant.error.emptyAnswer': 'Der Assistent kam ohne Antwort zurück. Soll ich es noch mal versuchen?',
|
||
'assistant.followUp.title': 'Weiter mit',
|
||
'assistant.followUp.cheaper': 'Nur günstigere',
|
||
'assistant.followUp.closer': 'Näher an meiner Unterkunft',
|
||
'assistant.followUp.openNow': 'Was hat gerade geöffnet?',
|
||
'assistant.followUp.nextDay': 'Plane den nächsten Tag genauso',
|
||
'assistant.followUp.relaxed': 'Mach den Plan entspannter',
|
||
'assistant.followUp.dinners': 'Füge Restaurants für die Abende hinzu',
|
||
'assistant.followUp.rain': 'Was machen wir bei Regen?',
|
||
'assistant.followUp.sun': 'Was lohnt sich bei schönem Wetter draußen?',
|
||
'assistant.followUp.more': 'Erzähl mir mehr',
|
||
'assistant.followUp.next': 'Was schlägst du als Nächstes vor?',
|
||
'assistant.menu.alternative': 'Alternative finden',
|
||
'assistant.menu.alternativeAsk':
|
||
'Finde eine gute Alternative zu {place} in der Nähe und sag, warum sie besser passt.',
|
||
'assistant.menu.foodNearby': 'Restaurant in der Nähe',
|
||
'assistant.menu.foodNearbyAsk': 'Schlag ein paar gute Orte zum Essen in der Nähe von {place} vor.',
|
||
'assistant.menu.planDay': 'Tag planen lassen',
|
||
'assistant.menu.planDayAsk': 'Plane diesen Tag für mich: Orte, Zeiten und einen Ort zum Essen.',
|
||
'assistant.menu.rainPlan': 'Regenplan',
|
||
'assistant.menu.rainPlanAsk':
|
||
'Was können wir an diesem Tag bei Regen machen? Schlag Alternativen drinnen in der Nähe vor.',
|
||
'assistant.preview.title': 'Vorschläge des Assistenten',
|
||
'assistant.preview.suggested': 'Vorschlag',
|
||
'assistant.preview.movedHere': 'Kommt hierher',
|
||
'assistant.preview.removed': 'Fällt weg',
|
||
'assistant.preview.movedAway': 'Wird verschoben',
|
||
'assistant.check.ok': 'Passt zeitlich',
|
||
'assistant.week.title': 'Die Tage dieses Plans',
|
||
'assistant.week.day': 'Tag',
|
||
'assistant.memory.title': 'Merkzettel',
|
||
'assistant.memory.edit': 'Merkzettel bearbeiten',
|
||
'assistant.memory.sub': 'Der Assistent beachtet das bei jedem Vorschlag für diesen Trip.',
|
||
'assistant.memory.quick': 'Häufige Wünsche',
|
||
'assistant.memory.notes': 'Deine Notizen',
|
||
'assistant.memory.placeholder': 'Zum Beispiel: Wir reisen mit Kleinkind, lieben Streetfood, kein frühes Aufstehen.',
|
||
'assistant.memory.saved': 'Merkzettel gespeichert',
|
||
'assistant.memory.quick.vegetarian': 'Wir essen vegetarisch',
|
||
'assistant.memory.quick.kids': 'Wir reisen mit Kindern',
|
||
'assistant.memory.quick.budget': 'Mit kleinem Budget',
|
||
'assistant.memory.quick.slow': 'Entspanntes Tempo, keine Hetze',
|
||
'assistant.memory.quick.accessible': 'Bitte barrierefrei',
|
||
'assistant.memory.quick.noMuseums': 'Wenig Museen',
|
||
'assistant.settings.costEstimates': 'Kosten schätzen',
|
||
'assistant.settings.costEstimatesHint':
|
||
'Bei einem Restaurant oder Eintritt schlägt er eine geschätzte Ausgabe fürs Budget vor, als Karte zum Bestätigen.',
|
||
'assistant.change.timeline.tight': '{count} min zu knapp',
|
||
'assistant.change.timeline.tight.one': '{count} min zu knapp',
|
||
'assistant.check.issues': '{count} Hinweise',
|
||
'assistant.check.issues.one': '{count} Hinweis',
|
||
'assistant.week.changes': '{count} Änderungen',
|
||
'assistant.week.changes.one': '{count} Änderung',
|
||
'assistant.week.showAll': 'Alle {count} Änderungen zeigen',
|
||
'assistant.week.showAll.one': '{count} Änderung zeigen',
|
||
'assistant.change.verb.updateBudgetItem': 'Ausgabe ändern',
|
||
'assistant.change.verb.rememberNote': 'Für diese Reise merken',
|
||
'assistant.change.verb.genericCreate': 'Hinzufügen',
|
||
'assistant.change.verb.genericUpdate': 'Ändern',
|
||
'assistant.change.verb.genericRemove': 'Entfernen',
|
||
'assistant.change.verb.addTour': 'Tour hinzufügen',
|
||
'assistant.change.verb.updateTour': 'Tour ändern',
|
||
'assistant.change.verb.importTour': 'Tour aus Datei hinzufügen',
|
||
'assistant.change.label.field': 'Wert',
|
||
'assistant.change.label.difficulty': 'Maximale Wegschwierigkeit',
|
||
'assistant.domain.tours': 'Touren',
|
||
'assistant.domain.roadtrip': 'Roadtrip',
|
||
'assistant.domain.journey': 'Reisetagebuch',
|
||
'assistant.domain.vacay': 'Urlaubsplaner',
|
||
'assistant.domain.atlas': 'Atlas',
|
||
'assistant.domain.collections': 'Sammlungen',
|
||
'assistant.domain.collab': 'Trip-Chat',
|
||
'assistant.domain.files': 'Dateien',
|
||
'assistant.domain.account': 'Konto',
|
||
'assistant.domain.plugins': 'Erweiterungen',
|
||
'assistant.change.label.order': 'Reihenfolge',
|
||
'assistant.tool.reorder_day_assignments': 'Tag umsortieren',
|
||
'assistant.tool.update_assignment_time': 'Uhrzeit ändern',
|
||
'assistant.tool.update_assignment_notes': 'Notiz am Tag ändern',
|
||
'assistant.tool.set_leg_transport_mode': 'Anreise ändern',
|
||
'assistant.tool.set_assignment_end_day': 'Letzten Tag ändern',
|
||
'assistant.tool.clear_day_assignments': 'Tag leeren',
|
||
'assistant.tool.set_assignment_participants': 'Teilnehmende ändern',
|
||
'assistant.tool.create_day': 'Tag hinzufügen',
|
||
'assistant.tool.update_day': 'Tag ändern',
|
||
'assistant.tool.delete_day': 'Tag löschen',
|
||
'assistant.tool.reorder_days': 'Tage umsortieren',
|
||
'assistant.tool.delete_place': 'Ort löschen',
|
||
'assistant.tool.rate_place': 'Ort bewerten',
|
||
'assistant.tool.bulk_update_places': 'Mehrere Orte ändern',
|
||
'assistant.tool.delete_day_note': 'Notiz löschen',
|
||
'assistant.tool.toggle_packing_item': 'Abhaken',
|
||
'assistant.tool.delete_packing_item': 'Von der Packliste entfernen',
|
||
'assistant.tool.update_todo': 'Aufgabe ändern',
|
||
'assistant.tool.toggle_todo': 'Aufgabe abhaken',
|
||
'assistant.tool.delete_todo': 'Aufgabe löschen',
|
||
'assistant.tool.delete_budget_item': 'Ausgabe löschen',
|
||
'assistant.tool.update_reservation': 'Buchung ändern',
|
||
'assistant.tool.delete_reservation': 'Buchung löschen',
|
||
'assistant.tool.create_accommodation': 'Unterkunft hinzufügen',
|
||
'assistant.tool.create_transport': 'Verbindung hinzufügen',
|
||
'assistant.tool.toggle_vacay_entry': 'Urlaubstag setzen',
|
||
'assistant.tool.mark_country_visited': 'Land als besucht markieren',
|
||
'assistant.tool.confirm_bucket_list_visits': 'Auf der Wunschliste abhaken',
|
||
'assistant.tool.clear_bucket_list_visit': 'Haken auf der Wunschliste entfernen',
|
||
'assistant.tool.accept_atlas_countries': 'Länder in den Atlas übernehmen',
|
||
'assistant.tool.send_collab_message': 'In den Trip-Chat senden',
|
||
'assistant.admin.chatgptShared':
|
||
'Du teilst dein eigenes ChatGPT-Abo mit allen auf diesem Server: Ihre Chats zählen gegen dein Kontingent. Prüfe, ob dein Abo und die Bedingungen von OpenAI das erlauben.',
|
||
};
|
||
export default assistant;
|