Files
TREK/shared/src/i18n/de/admin.ts
T
Maurice 123e27643d feat(assistant): one AI tile for assistant, parsing and MCP, a planner-aware chat
The three AI addons share one tile in the integration column; a dialog holds
the connection, the assistant's limits and AI parsing, which now reads with
the assistant's connection unless an install keeps its own. Existing parsing
configs stay where they are and keep winning.

The chat sees the map on screen, offers next questions under an answer,
shows its live step in the window head, previews waiting changes inside the
day list, checks whether a day still works, folds a multi-day plan into a
week grid, keeps per-trip notes and can estimate costs. An empty or cut-off
answer gets one push instead of ending silently, and the assistant's own
step and size limits are raised.
2026-10-22 21:30:26 +00:00

1008 lines
72 KiB
TypeScript

import type { TranslationStrings } from '../types';
const admin: TranslationStrings = {
'admin.notifications.title': 'Benachrichtigungen',
'admin.notifications.hint': 'Wählen Sie einen Benachrichtigungskanal. Es kann nur einer gleichzeitig aktiv sein.',
'admin.notifications.none': 'Deaktiviert',
'admin.notifications.email': 'E-Mail (SMTP)',
'admin.notifications.webhook': 'Webhook',
'admin.notifications.save': 'Benachrichtigungseinstellungen speichern',
'admin.notifications.saved': 'Benachrichtigungseinstellungen gespeichert',
'admin.notifications.testWebhook': 'Test-Webhook senden',
'admin.notifications.testWebhookSuccess': 'Test-Webhook erfolgreich gesendet',
'admin.notifications.testWebhookFailed': 'Test-Webhook fehlgeschlagen',
'admin.smtp.title': 'E-Mail & Benachrichtigungen',
'admin.smtp.hint': 'SMTP-Konfiguration zum Versenden von E-Mail-Benachrichtigungen.',
'admin.smtp.testButton': 'Test-E-Mail senden',
'admin.webhook.hint': 'Benachrichtigungen an einen externen Webhook senden (Discord, Slack usw.).',
'admin.smtp.testSuccess': 'Test-E-Mail erfolgreich gesendet',
'admin.smtp.testFailed': 'Test-E-Mail fehlgeschlagen',
'admin.title': 'Administration',
'admin.subtitle': 'Benutzerverwaltung und Systemeinstellungen',
'admin.tabs.users': 'Benutzer',
'admin.tabs.categories': 'Kategorien',
'admin.tabs.backup': 'Backup',
'admin.tabs.audit': 'Audit',
'admin.stats.users': 'Benutzer',
'admin.stats.users.one': 'Benutzer',
'admin.stats.trips': 'Reisen',
'admin.stats.trips.one': 'Reise',
'admin.stats.places': 'Orte',
'admin.stats.places.one': 'Ort',
'admin.stats.photos': 'Fotos',
'admin.stats.files': 'Dateien',
'admin.stats.files.one': 'Datei',
'admin.table.user': 'Benutzer',
'admin.table.email': 'E-Mail',
'admin.table.role': 'Rolle',
'admin.table.created': 'Erstellt',
'admin.table.lastActive': 'Zuletzt aktiv',
'admin.table.actions': 'Aktionen',
'admin.you': '(Du)',
'admin.editUser': 'Benutzer bearbeiten',
'admin.newPassword': 'Neues Passwort',
'admin.newPasswordHint': 'Leer lassen, um das Passwort nicht zu ändern',
'admin.deleteUser':
'Benutzer "{name}" löschen? Das Konto sowie alle Reisen und Journale, die dem Benutzer gehören, werden endgültig gelöscht, auch Reisen, die mit anderen Mitgliedern geteilt sind; diese verlieren den Zugriff. Reisen anderer bleiben erhalten.',
'admin.deleteUserTitle': 'Benutzer löschen',
'admin.newPasswordPlaceholder': 'Neues Passwort eingeben…',
'admin.toast.loadError': 'Fehler beim Laden der Admin-Daten',
'admin.toast.userUpdated': 'Benutzer aktualisiert',
'admin.toast.updateError': 'Fehler beim Aktualisieren',
'admin.toast.userDeleted': 'Benutzer gelöscht',
'admin.toast.deleteError': 'Fehler beim Löschen',
'admin.toast.cannotDeleteSelf': 'Eigenes Konto kann nicht gelöscht werden',
'admin.toast.userCreated': 'Benutzer erstellt',
'admin.toast.createError': 'Fehler beim Erstellen des Benutzers',
'admin.toast.fieldsRequired': 'Benutzername, E-Mail und Passwort sind erforderlich',
'admin.createUser': 'Benutzer anlegen',
'admin.invite.title': 'Einladungslinks',
'admin.invite.subtitle': 'Einmal-Links für die Registrierung erstellen',
'admin.invite.create': 'Link erstellen',
'admin.invite.createAndCopy': 'Erstellen & kopieren',
'admin.invite.empty': 'Noch keine Einladungslinks erstellt',
'admin.invite.maxUses': 'Max. Nutzungen',
'admin.invite.expiry': 'Gültig für',
'admin.invite.uses': 'genutzt',
'admin.invite.expiresAt': 'läuft ab am',
'admin.invite.createdBy': 'von',
'admin.invite.active': 'Aktiv',
'admin.invite.expired': 'Abgelaufen',
'admin.invite.usedUp': 'Aufgebraucht',
'admin.invite.copied': 'Einladungslink in Zwischenablage kopiert',
'admin.invite.copyLink': 'Link kopieren',
'admin.invite.deleted': 'Einladungslink gelöscht',
'admin.invite.createError': 'Fehler beim Erstellen des Einladungslinks',
'admin.invite.deleteError': 'Fehler beim Löschen des Einladungslinks',
'admin.tabs.settings': 'Einstellungen',
'admin.allowRegistration': 'Registrierung erlauben',
'admin.allowRegistrationHint': 'Neue Benutzer können sich selbst registrieren',
'admin.authMethods': 'Authentication Methods',
'admin.passwordLogin': 'Password Login',
'admin.passwordLoginHint': 'Allow users to sign in with email and password',
'admin.passwordRegistration': 'Password Registration',
'admin.passwordRegistrationHint': 'Allow new users to register with email and password',
'admin.oidcLogin': 'SSO Login',
'admin.oidcLoginHint': 'Allow users to sign in with SSO',
'admin.oidcRegistration': 'SSO Auto-Provisioning',
'admin.oidcRegistrationHint': 'Automatically create accounts for new SSO users',
'admin.envOverrideHint':
'Password login settings are controlled by the OIDC_ONLY environment variable and cannot be changed here.',
'admin.lockoutWarning': 'At least one login method must remain enabled',
'admin.requireMfa': 'Zwei-Faktor-Authentifizierung (2FA) für alle verlangen',
'admin.requireMfaHint':
'Benutzer ohne 2FA müssen die Einrichtung unter Einstellungen abschließen, bevor sie die App nutzen können.',
'admin.apiKeys': 'API-Schlüssel',
'admin.apiKeysHint':
'Woher die Ortsdaten kommen. Der TREK-Index braucht keinen Schlüssel, die beiden Anbieter darunter sind optional.',
'admin.trekApi.badgeDefault': 'Empfohlene Standardquelle',
'admin.googleCaveat.badge': 'Nicht empfohlen',
'admin.googleCaveat.body':
'TREK ist quelloffen und wir sind hier nicht neutral. Bewertungen und Fotos gewöhnlicher Läden gibt es in dieser Größenordnung nur bei Google, und genau das ist ein Monopol. Das Feld steht hier, weil es keine Alternative gibt, nicht weil wir es empfehlen. Jede Abfrage geht dann an Google.',
'admin.trekApi.tagline':
'TREKs eigener Ortsindex. Suchen ohne Google-Schlüssel, ohne Kontingent und ohne dass jemand mitzählt.',
'admin.trekApi.factPlaces': '73,6 Millionen Orte weltweit',
'admin.trekApi.factNoKey': 'Kein Schlüssel, kein Kontingent',
'admin.trekApi.factOffline': 'Länderpakete auch offline',
'admin.trekApi.factPrivacy': 'Suchanfragen werden nie protokolliert',
'admin.trekApi.more': 'Was drin ist',
'admin.trekApi.fieldPhone': 'Telefon',
'admin.trekApi.fieldStableId': 'Stabile Kennung',
'admin.trekApi.includedNote':
'Beschreibungen kommen von der Website des Ortes selbst, Öffnungszeiten aus OpenStreetMap, wo sie eingetragen sind.',
'admin.trekApi.notRatings': 'Bewertungen',
'admin.trekApi.notPhotos': 'Fotos gewöhnlicher Läden',
'admin.trekApi.notIncludedNote':
'Beides gibt es in keiner offenen Quelle, zu keinem Preis. Dafür bleibt ein Google-Schlüssel der einzige Weg.',
'admin.trekApi.sourcesLabel': 'Quellen',
'admin.trekApi.sourcesNote': 'Jedes Feld einer Antwort nennt, aus welcher davon es stammt.',
'admin.trekApi.included': 'Enthalten',
'admin.trekApi.notIncluded': 'Nicht enthalten',
'admin.mapsKey': 'Google Maps API-Schlüssel',
'admin.mapsKeyHint': 'Für Ortsuche benötigt. Erstellen unter console.cloud.google.com',
'admin.mapsKeyHintLong':
'Auch ohne Google-API-Schlüssel wird die empfohlene TREK API verwendet. Mit Schlüssel können zusätzlich Bilder, Bewertungen und Öffnungszeiten geladen werden. Erstellen unter console.cloud.google.com.',
'admin.recommended': 'Empfohlen',
'admin.weatherKey': 'OpenWeatherMap API-Schlüssel',
'admin.weatherKeyHint': 'Für Wetterdaten. Kostenlos unter openweathermap.org',
'admin.unsplashKey': 'Unsplash-API-Schlüssel',
'admin.unsplashKeyHint': 'Für die Bildsuche. Kostenlos unter unsplash.com/developers',
'admin.amapKey': 'Amap (高德地图) API-Key',
'admin.amapKeyHint':
'Für die Ortssuche in Festlandchina, wo Google nicht erreichbar ist und OpenStreetMap kaum Daten hat. Benötigt einen Key vom Typ „Web 服务" (Webdienst), nicht einen JS-API-Key. Erhältlich auf console.amap.com.',
'admin.keyFromEnv': 'Gesetzt über {name}',
'admin.placesProvider.title': 'Anbieter für die Ortssuche',
'admin.placesProvider.subtitle':
'Der TREK-Index und OpenStreetMap beantworten jede Suche. Hier wird gewählt, wer zusätzlich gefragt wird, wenn die beiden nichts finden: Automatisch bevorzugt Google, wenn ein Schlüssel da ist, danach Amap.',
'admin.placesProvider.auto': 'Automatisch',
'admin.placesProvider.google': 'Google Places',
'admin.placesProvider.amap': 'Amap (高德地图)',
'admin.placesProvider.openstreetmap': 'OpenStreetMap',
'admin.placesProvider.missingKey':
'Für den gewählten Anbieter ist kein API-Schlüssel hinterlegt, die Ortssuche beantworten daher nur der TREK-Index und OpenStreetMap.',
'admin.placesProvider.saved': 'Anbieter für die Ortssuche gespeichert',
'admin.validateKey': 'Test',
'admin.keyValid': 'Verbunden',
'admin.keyInvalid': 'Ungültig',
'admin.keySaved': 'API-Schlüssel gespeichert',
'admin.oidcTitle': 'Single Sign-On (OIDC)',
'admin.oidcSubtitle': 'Anmeldung über externe Anbieter wie Google, Apple, Authentik oder Keycloak.',
'admin.oidcDisplayName': 'Anzeigename',
'admin.oidcIssuer': 'Issuer URL',
'admin.oidcIssuerHint': 'Die OpenID Connect Issuer URL des Anbieters. z.B. https://accounts.google.com',
'admin.oidcSaved': 'OIDC-Konfiguration gespeichert',
'admin.oidcOnlyMode': 'Passwort-Authentifizierung deaktivieren',
'admin.oidcOnlyModeHint':
'Wenn aktiviert, ist nur SSO-Login erlaubt. Passwort-Login und Registrierung werden blockiert.',
'admin.fileTypes': 'Erlaubte Dateitypen',
'admin.fileTypesHint': 'Konfiguriere welche Dateitypen hochgeladen werden dürfen.',
'admin.fileTypesFormat': 'Kommagetrennte Endungen (z.B. jpg,png,pdf,doc). Verwende * um alle Typen zu erlauben.',
'admin.fileTypesSaved': 'Dateityp-Einstellungen gespeichert',
'admin.googleOptions': 'Wofür der Schlüssel genutzt wird',
'admin.googleOptionsSummary': '{on} von {total} an',
'admin.placesPhotos.title': 'Ortsfotos',
'admin.placesPhotos.subtitle':
'Fotos von der Google Places API laden. Deaktivieren, um API-Kontingent zu sparen. Wikimedia-Fotos sind davon nicht betroffen.',
'admin.placesAutocomplete.title': 'Orts-Autovervollständigung',
'admin.placesAutocomplete.subtitle':
'Google Places API für Suchvorschläge nutzen. Deaktivieren, um API-Kontingent zu sparen.',
'admin.placesDetails.title': 'Ortsdetails',
'admin.placesDetails.subtitle':
'Detaillierte Ortsinformationen (Öffnungszeiten, Bewertung, Website) von der Google Places API laden. Deaktivieren, um API-Kontingent zu sparen.',
'admin.placesEnrich.title': 'Ortsanreicherung',
'admin.placesEnrich.subtitle':
'Bilder und eine Beschreibung beim Hinzufügen eines Ortes anzeigen. Wikipedia und OpenStreetMap werden immer genutzt; Google kommt zusätzlich dazu, wenn Ortsfotos oder Ortsdetails aktiv sind.',
'admin.placesGoogleOnly.title': 'Nur mit Google suchen',
'admin.placesGoogleOnly.subtitle':
'Jede Suche und jeder Vorschlag geht an Google Places. Aus, antworten zuerst der TREK-Index und OpenStreetMap, Google wird nur gefragt, wenn beide nichts finden.',
'admin.placesGoogleOnly.missingKey':
'Braucht einen Google-Maps-API-Schlüssel. Ohne ihn läuft die Suche über den TREK-Index und OpenStreetMap, egal wie dieser Schalter steht.',
'admin.placesGoogleOnly.otherProvider':
'Braucht Google als Orts-Anbieter. Mit Amap oder OpenStreetMap als Auswahl geht keine Suche an Google, egal wie dieser Schalter steht.',
'admin.googleQuota.title': 'Tageslimit für Google-Aufrufe',
'admin.googleQuota.subtitle':
'Ist es erreicht, ruft TREK Google bis zum nächsten Tag (UTC) nicht mehr auf und sucht stattdessen mit OpenStreetMap. Leer heißt kein Limit.',
'admin.googleQuota.placeholder': 'Kein Limit',
'admin.googleQuota.usedToday': 'Heute: {used}',
'admin.googleQuota.usedOfLimit': 'Heute: {used} von {limit}',
'admin.googleQuota.reached': 'Limit erreicht ({used}), Google bis morgen pausiert',
'admin.googleQuota.saved': 'Tageslimit gespeichert',
'admin.transitProvider.title': 'Verkehrsanbieter',
'admin.transitProvider.subtitle': 'Welcher Dienst die ÖPNV-Suche beantwortet.',
'admin.transitProvider.transitous': 'Transitous (kostenlos)',
'admin.transitProvider.google': 'Google',
'admin.transitProvider.transitousHint':
'Community-GTFS-Feeds. Kostenlos und ohne Schlüssel, mit der besten Abdeckung in Europa.',
'admin.transitProvider.googleHint':
'Nutzt den obigen Google-Schlüssel, für Regionen ohne Transitous-Daten. Wird pro Suche abgerechnet; solange kein Schlüssel gesetzt ist, wird Transitous verwendet.',
'admin.transitProvider.noKeyWarning':
'Google ist ausgewählt, aber es ist kein Google-Schlüssel hinterlegt; die ÖPNV-Suche nutzt weiterhin Transitous. Trage oben unter API-Schlüssel einen Schlüssel ein.',
'admin.transitProvider.personalKeyWarning':
'Es ist nur dein eigener Google-Schlüssel gesetzt, daher fällt die Suche der anderen Mitglieder weiterhin auf Transitous zurück. Speichere den Schlüssel oben als Admin, damit er instanzweit gilt.',
'admin.placeShadow.title': 'Ortssuche protokollieren',
'admin.placeShadow.subtitle':
'Festhalten, welches Suchergebnis ausgewählt wurde, damit sich ein anderer Ortsindex später an echten Suchen messen lässt. Nichts verlässt diese Instanz, und ein Administrator kann das Protokoll jederzeit exportieren oder löschen.',
'admin.bagTracking.title': 'Gepäck-Tracking',
'admin.bagTracking.subtitle': 'Gewicht und Gepäckstück-Zuordnung für Packlisteneinträge aktivieren',
'admin.collab.chat.title': 'Chat',
'admin.collab.chat.subtitle': 'Echtzeit-Nachrichten für die Reiseplanung',
'admin.collab.notes.title': 'Notizen',
'admin.collab.notes.subtitle': 'Gemeinsame Notizen und Dokumente',
'admin.collab.polls.title': 'Umfragen',
'admin.collab.polls.subtitle': 'Gruppen-Umfragen und Abstimmungen',
'admin.collab.whatsnext.title': 'Was kommt als Nächstes',
'admin.collab.whatsnext.subtitle': 'Aktivitätsvorschläge und nächste Schritte',
'admin.tabs.config': 'Personalisierung',
'admin.tabs.defaults': 'Benutzer-Standards',
'admin.defaultSettings.title': 'Standard-Benutzereinstellungen',
'admin.defaultSettings.description':
'Instanzweite Standards festlegen. Benutzer, die eine Einstellung nicht geändert haben, sehen diese Werte. Eigene Änderungen haben immer Vorrang.',
'admin.defaultSettings.saved': 'Standard gespeichert',
'admin.defaultSettings.reset': 'Auf eingebauten Standard zurücksetzen',
'admin.defaultSettings.resetToBuiltIn': 'zurücksetzen',
'admin.tabs.templates': 'Packvorlagen',
'admin.packingTemplates.title': 'Packvorlagen',
'admin.packingTemplates.subtitle': 'Wiederverwendbare Packlisten für deine Reisen erstellen',
'admin.packingTemplates.create': 'Neue Vorlage',
'admin.packingTemplates.namePlaceholder': 'Vorlagenname (z.B. Strandurlaub)',
'admin.packingTemplates.empty': 'Noch keine Vorlagen erstellt',
'admin.packingTemplates.items': 'Einträge',
'admin.packingTemplates.items.one': 'Eintrag',
'admin.packingTemplates.categories': 'Kategorien',
'admin.packingTemplates.categories.one': 'Kategorie',
'admin.packingTemplates.itemName': 'Artikelname',
'admin.packingTemplates.itemCategory': 'Kategorie',
'admin.packingTemplates.categoryName': 'Kategoriename (z.B. Kleidung)',
'admin.packingTemplates.addCategory': 'Kategorie hinzufügen',
'admin.packingTemplates.created': 'Vorlage erstellt',
'admin.packingTemplates.deleted': 'Vorlage gelöscht',
'admin.packingTemplates.loadError': 'Vorlagen konnten nicht geladen werden',
'admin.packingTemplates.createError': 'Vorlage konnte nicht erstellt werden',
'admin.packingTemplates.deleteError': 'Vorlage konnte nicht gelöscht werden',
'admin.packingTemplates.deleteCategoryError': 'Kategorie konnte nicht gelöscht werden',
'admin.packingTemplates.deleteItemError': 'Eintrag konnte nicht gelöscht werden',
'admin.packingTemplates.saveError': 'Fehler beim Speichern',
'admin.tabs.addons': 'Addons',
'admin.tabs.plugins': 'Plugins',
'admin.tabs.storage': 'Speicher',
'admin.plugins.rescan': 'Neu scannen',
'admin.plugins.rescanned': 'Plugin-Ordner neu gescannt',
'admin.plugins.upload': 'Plugin hochladen',
'admin.plugins.dropToUpload': 'Plugin-.zip zum Installieren hier ablegen',
'admin.plugins.uploaded': 'Plugin „{name}“ hochgeladen — zum Ausführen aktivieren',
'admin.plugins.sideloaded': 'Manuell geladen',
'admin.plugins.devLinkBadge': 'Dev-Link',
'admin.plugins.devLinkHint':
'Aus einem lokalen Build-Verzeichnis geladen und gegen echte Daten neu geladen — nur für Entwicklung',
'admin.plugins.devLinkTitle': 'Lokales Plugin verknüpfen',
'admin.plugins.devLinkPathPlaceholder': '/absolute/path/to/your/plugin',
'admin.plugins.devLinkButton': 'Verknüpfen',
'admin.plugins.devLinkLinked': '{id} verknüpft — zum Ausführen aktivieren',
'admin.plugins.sideloadedHint': 'Manuell hochgeladen — nicht aus der Registry, unsigniert und ungeprüft',
'admin.plugins.browse': 'Plugins durchsuchen',
'admin.plugins.installed': 'Installiert',
'admin.plugins.install': 'Installieren',
'admin.plugins.registryEmpty': 'Noch keine Plugins in der Registry verfügbar.',
'admin.plugins.actionError': 'Aktion fehlgeschlagen',
'admin.plugins.activate': 'Aktivieren',
'admin.plugins.activated': 'Plugin aktiviert',
'admin.plugins.deactivate': 'Deaktivieren',
'admin.plugins.deactivated': 'Plugin deaktiviert',
'admin.plugins.viewErrors': 'Fehlerprotokoll ansehen',
'admin.plugins.errorLog': 'Fehlerprotokoll',
'admin.plugins.allowedHosts': 'Erlaubte Hosts',
'admin.plugins.allowedHosts.hint':
'Dieses Plugin spricht mit einem Dienst, den nur du benennen kannst (ein selbst gehosteter Server). Füge die Hosts hinzu, die es erreichen darf — andere erreicht es nicht.',
'admin.plugins.allowedHosts.none': 'Noch keine Hosts hinzugefügt.',
'admin.plugins.allowedHosts.unsupported':
'Dieses Plugin nutzt keine vom Betreiber angegebenen Hosts. Seine erlaubten Hosts stehen fest im Manifest.',
'admin.plugins.allowedHosts.restartNote':
'Beim Speichern wird das Plugin neu gestartet, damit es die neue Liste übernimmt.',
'admin.plugins.allowedHosts.add': 'Erlaubten Host hinzufügen',
'admin.plugins.allowedHosts.count': '{n} erlaubte Hosts',
'admin.plugins.allowedHosts.count.one': '{n} erlaubter Host',
'admin.plugins.operatorEgressPill': '+ von dir ergänzte Hosts',
'admin.plugins.operatorEgressHint':
'Dieses Plugin spricht mit einem Dienst, den nur du benennen kannst (ein selbst gehosteter Server). Füge nach der Installation unter ⋯ → Erlaubte Hosts die erreichbaren Hosts hinzu. Andere erreicht es nicht.',
'admin.plugins.noErrors': 'Keine Fehler protokolliert.',
'admin.plugins.uninstalled': 'Plugin deinstalliert',
'admin.plugins.uninstallTitle': 'Plugin deinstallieren?',
'admin.plugins.uninstallBody':
'Das stoppt das Plugin, entfernt seinen Code und löscht alle seine Daten. Das kann nicht rückgängig gemacht werden.',
'admin.plugins.status.starting': 'Startet…',
'admin.plugins.type.widget': 'Widget',
'admin.plugins.type.page': 'Seite',
'admin.plugins.type.integration': 'Integration',
'admin.plugins.type.trip-page': 'Reise-Seite',
'admin.plugins.reviewed': 'Geprüft',
'admin.plugins.unreviewed': 'Ungeprüft',
'admin.plugins.updated': 'Plugin aktualisiert',
'admin.plugins.updateTo': 'Update → v{version}',
'admin.plugins.enabledToggle': 'Plugin aktivieren',
'plugins.notFound': 'Plugin nicht gefunden',
'plugins.frameLoadFailed': 'Dieses Plugin konnte nicht geladen werden.',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Plugins von Drittanbietern auf deiner Instanz installieren und verwalten.',
'admin.plugins.disabledTitle': 'Plugins sind deaktiviert',
'admin.plugins.disabledBody':
'Die Plugin-Laufzeit ist ausgeschaltet (TREK_PLUGINS_ENABLED). Es kann kein Plugin laufen, bis ein Admin sie in der Serverkonfiguration aktiviert.',
'admin.plugins.empty': 'Noch keine Plugins installiert.',
'admin.plugins.loadError': 'Plugins konnten nicht geladen werden.',
'admin.plugins.scaffoldNote':
'Installation und Aktivierung von Plugins folgen in einem späteren Update. Dieses Panel zeigt derzeit nur installierte Plugins an.',
'admin.plugins.status.active': 'Aktiv',
'admin.plugins.status.inactive': 'Inaktiv',
'admin.plugins.status.disabled': 'Deaktiviert',
'admin.plugins.status.error': 'Fehler',
'admin.plugins.status.incompatible': 'Inkompatibel',
'admin.plugins.details': 'Details',
'admin.plugins.detailError': 'Plugin-Details konnten nicht geladen werden.',
'admin.plugins.permissionsTitle': 'Berechtigungen',
'admin.plugins.noPermissions': 'Dieses Plugin benötigt keine besonderen Berechtigungen.',
'admin.plugins.egressNote': 'Darf verbinden zu: {hosts}',
'admin.plugins.setupTitle': 'Einrichtung',
'admin.plugins.noSetup': 'Funktioniert sofort — nichts zu konfigurieren.',
'admin.plugins.scope.instance': 'Instanzweit',
'admin.plugins.scope.user': 'Pro Nutzer',
'admin.plugins.fieldRequired': 'Erforderlich',
'admin.plugins.sourceRepo': 'Quell-Repository',
'admin.plugins.reportIssue': 'Problem melden',
'admin.plugins.homepage': 'Homepage',
'admin.plugins.requiresTrek': 'Benötigt TREK {version}+',
'admin.plugins.reviewedOn': 'Geprüft am {date}',
'admin.plugins.perm.db:own': 'Eigene Daten in einer isolierten Datenbank speichern',
'admin.plugins.perm.db:read:trips': 'Reisen lesen, auf die der handelnde Nutzer Zugriff hat',
'admin.plugins.perm.db:read:users': 'Grundlegende Profilinfos lesen (Name, Avatar — nie Zugangsdaten)',
'admin.plugins.perm.db:read:costs': 'Ausgaben (Budgetposten) lesen, auf die der handelnde Nutzer Zugriff hat',
'admin.plugins.perm.db:read:packing': 'Packlisten von Reisen lesen, auf die der handelnde Nutzer Zugriff hat',
'admin.plugins.perm.db:write:packing':
'Packlisten-Einträge auf Reisen anlegen, bearbeiten und löschen, die der handelnde Nutzer bearbeiten kann',
'admin.plugins.perm.weather:read': 'Die zwischengespeicherte Wettervorhersage des Hosts lesen (nach Koordinaten)',
'admin.plugins.perm.db:read:categories': 'Die globale Orts-Kategorienliste lesen',
'admin.plugins.perm.db:read:tags': 'Die eigenen Tags des handelnden Nutzers lesen',
'admin.plugins.perm.db:write:tags': 'Die eigenen Tags des handelnden Nutzers anlegen, bearbeiten und löschen',
'admin.plugins.perm.db:read:todos': 'To-dos von Reisen lesen, auf die der handelnde Nutzer Zugriff hat',
'admin.plugins.perm.db:write:todos':
'To-dos auf Reisen anlegen, bearbeiten und löschen, die der handelnde Nutzer bearbeiten kann',
'admin.plugins.perm.db:write:atlas':
'Länder und Regionen als besucht markieren und die Bucket-List des handelnden Nutzers verwalten (benötigt das Atlas-Addon)',
'admin.plugins.perm.db:write:vacay':
'Urlaubstage und Betriebsferien im aktiven Plan des handelnden Nutzers umschalten (benötigt das Vacay-Addon)',
'admin.plugins.perm.db:write:journal':
'Tagebucheinträge in Reisetagebüchern anlegen, bearbeiten, löschen und mit Fotos versehen, die der handelnde Nutzer bearbeiten kann (benötigt das Journey-Addon)',
'admin.plugins.perm.db:write:collections':
'Sammlungen anlegen und bearbeiten und Orte darin speichern, mit der Sammlungsrolle des handelnden Nutzers (benötigt das Collections-Addon)',
'admin.plugins.perm.db:write:files':
'Dateien an Reisen anhängen, die der handelnde Nutzer bearbeiten kann (10-MB-Limit, gesperrte Endungen abgelehnt), und deren Verknüpfungen verwalten',
'admin.plugins.perm.db:write:collab':
'Notizen, Umfragen und Chat-Nachrichten auf Reisen erstellen, die der handelnde Nutzer bearbeiten kann (benötigt das Collab-Addon)',
'admin.plugins.perm.db:write:members':
'Nutzer zu Reisen hinzufügen — gewährt Reise-Zugriff; über das Mitglieder-verwalten-Recht des handelnden Nutzers abgesichert',
'admin.plugins.perm.notify:send':
'Eine Benachrichtigung (Glocken-Postfach + E-Mail/ntfy) an den handelnden Nutzer oder eine seiner Reisen senden — nie an beliebige Empfänger',
'admin.plugins.perm.ai:invoke':
'Den vom Admin konfigurierten KI-Anbieter (Textvervollständigung + Dokumentenextraktion) im Namen des handelnden Nutzers nutzen — das Plugin hält nie einen Schlüssel',
'admin.plugins.perm.oauth:client':
'Über host-vermitteltes OAuth in deinem Namen mit einem Drittanbieter verbinden (der Host hält die Tokens, das Plugin sieht sie nie)',
'admin.plugins.perm.db:read:files': 'Dateien von Reisen lesen, auf die der handelnde Nutzer Zugriff hat',
'admin.plugins.perm.db:read:journal': 'Reisetagebücher des handelnden Nutzers lesen (benötigt das Journey-Addon)',
'admin.plugins.perm.db:read:atlas':
'Besuchte Länder und Regionen des handelnden Nutzers lesen (benötigt das Atlas-Addon)',
'admin.plugins.perm.db:read:vacay': 'Urlaubsplanung des handelnden Nutzers lesen (benötigt das Vacay-Addon)',
'admin.plugins.perm.db:read:daynotes': 'Tagesnotizen von Reisen lesen, auf die der handelnde Nutzer Zugriff hat',
'admin.plugins.perm.db:read:collections':
'Sammlungen gespeicherter Orte des handelnden Nutzers lesen (benötigt das Collections-Addon)',
'admin.plugins.perm.db:write:costs':
'Ausgaben (Budgetposten) auf Reisen erstellen, die der handelnde Nutzer bearbeiten kann',
'admin.plugins.perm.db:write:places':
'Orte auf Reisen anlegen, bearbeiten und löschen, die der handelnde Nutzer bearbeiten kann',
'admin.plugins.perm.db:write:days':
'Tage auf Reisen anlegen, bearbeiten und löschen, die der handelnde Nutzer bearbeiten kann',
'admin.plugins.perm.db:write:itinerary':
'Orte den Tagen von Reisen zuordnen und entfernen, die der handelnde Nutzer bearbeiten kann',
'admin.plugins.perm.db:write:trips':
'Reisedetails (Titel, Daten, Währung …) auf Reisen bearbeiten, die der handelnde Nutzer bearbeiten kann',
'admin.plugins.perm.db:write:reservations':
'Buchungen (Reservierungen) auf Reisen anlegen, bearbeiten und löschen, die der handelnde Nutzer bearbeiten kann',
'admin.plugins.perm.db:write:accommodations':
'Unterkünfte (Übernachtungsblöcke) auf Reisen anlegen, bearbeiten und löschen, die der handelnde Nutzer bearbeiten darf',
'admin.plugins.perm.db:write:daynotes':
'Tagesnotizen auf Reisen anlegen, bearbeiten und löschen, die der handelnde Nutzer bearbeiten kann',
'admin.plugins.perm.db:meta':
'Eigene private Daten an Reisen, Orte und Tage anhängen, auf die der handelnde Nutzer Zugriff hat',
'admin.plugins.perm.ws:broadcast:trip': 'Echtzeit-Updates an Reisemitglieder senden',
'admin.plugins.perm.ws:broadcast:user': 'Echtzeit-Updates an einzelne Nutzer senden',
'admin.plugins.perm.hook:photo-provider': 'Fotos für Erinnerungen bereitstellen',
'admin.plugins.perm.hook:calendar-source': 'Termine für den Kalender bereitstellen',
'admin.plugins.perm.hook:place-detail-provider':
'Zusatzdetails (Bewertungen, Ratings, Links) zu einem Ort beisteuern',
'admin.plugins.perm.hook:search-provider':
'Ortssuchen aus einem eigenen Index beantworten, neben TREKs eigenen Ergebnissen',
'admin.plugins.perm.hook:poi-category-provider':
'Eigene Ortskategorien zu „Orte auf der Karte entdecken“ hinzufügen; wählst du eine davon, erhält das Plugin den Kartenausschnitt, den du gerade ansiehst',
'admin.plugins.perm.hook:trip-warning-provider':
'Validierungswarnungen zu einer Reise ausgeben (im Planer angezeigt)',
'admin.plugins.perm.hook:table-contributor':
'Spalten und Aktionen zu Reise-Ansichten hinzufügen (Reservierungen, Orte, Tage)',
'admin.plugins.perm.hook:map-marker-provider':
'Marker zur Reisekarte hinzufügen (z. B. Buchungen oder POIs anzeigen)',
'admin.plugins.perm.hook:map-layer-provider': 'Routen, Korridore und Zonen auf der Reisekarte zeichnen',
'admin.plugins.perm.hook:route-provider':
'Routing-Profile anbieten, mit denen der Planer Tage berechnet (z. B. E-Auto-Routing mit Ladestopps)',
'admin.plugins.perm.hook:day-schedule-provider': 'Zeiteinträge an den Tagesplan anhängen (Ladestopps, Puffer)',
'admin.plugins.perm.hook:day-tint-provider':
'Tage im Tagesplan farblich markieren (z. B. zu welchem Reiseabschnitt ein Tag gehört)',
'admin.plugins.cap.mcpTools': 'Veröffentlicht KI-Tools',
'admin.plugins.mcpToolsTitle': 'Veröffentlichte KI-Tools',
'admin.plugins.mcpToolsHint':
'Ein Assistent kann sie im Namen eines Nutzers ausführen. Jedes handelt mit den oben erteilten Rechten.',
'admin.plugins.poiCategoriesTitle': 'Kartenkategorien, die es hinzufügt',
'admin.plugins.perm.mcp:tools':
'Tools veröffentlichen, die ein KI-Assistent in deinem Namen ausführen kann (es handelt mit den Rechten, die du dem Plugin hier erteilst, nicht mit denen des Assistenten)',
'admin.plugins.perm.geolocation:read':
'Deinen Live-Standort abfragen, solange eine seiner Ansichten offen ist (TREK liest ihn mit der Standortfreigabe dieser Seite, nicht mit einer eigenen des Plugins)',
'admin.plugins.perm.hook:pdf-section-provider': 'Textabschnitte an den PDF-Export einer Reise anhängen',
'admin.plugins.perm.hook:atlas-layer-provider':
'Länder auf der Atlas-Weltkarte hervorheben (z. B. Wunschlisten oder Reisehinweise)',
'admin.plugins.perm.hook:journal-entry-provider': 'Zusatzzeilen (Links, Statistiken) zu Journal-Einträgen beisteuern',
'admin.plugins.perm.hook:user-data':
'Von ihm gespeicherte Nutzerdaten löschen oder exportieren (DSGVO: Kontolöschung & Auskunft)',
'admin.plugins.perm.hook:trip-card-provider':
'Kleine Badges (Status, Zähler) zu deinen Dashboard-Trip-Karten hinzufügen',
'admin.plugins.perm.hook:notification-channel': 'Deine Benachrichtigungen über einen zusätzlichen Kanal zustellen',
'admin.plugins.perm.events:subscribe':
'Auf Kern-Aktivitäts-Events reagieren (nur Event-Name + Reise, nie der Inhalt)',
'admin.plugins.perm.jobs:run':
'Deklarierte Hintergrund-Jobs zeitgesteuert ausführen (kein Nutzerkontext — kann keine Nutzerdaten lesen)',
'admin.plugins.perm.http:outbound': 'Ausgehende Anfragen an deklarierte Hosts stellen',
'admin.plugins.perm.db:read:collab':
'Notizen, Umfragen und Chat-Nachrichten von Reisen lesen, auf die der handelnde Nutzer Zugriff hat (benötigt das Collab-Addon)',
'admin.plugins.perm.db:read:files:content':
'Dateiinhalte (Bytes) von Reisen lesen, auf die der handelnde Nutzer Zugriff hat',
'admin.plugins.perm.db:create:trips': 'Neue Reisen im Besitz des handelnden Nutzers anlegen',
'admin.plugins.perm.rates:read': 'Die zwischengespeicherten Wechselkurse des Hosts lesen',
'admin.plugins.updateConsentTitle': 'Dieses Update braucht neue Berechtigungen',
'admin.plugins.updateConsentBody':
'{name} v{version} verlangt Rechte, die du bisher nicht freigegeben hast. Die neue Version ist installiert, bleibt aber aus, bis du sie freigibst.',
'admin.plugins.updateNewPermissions': 'Neu verlangte Berechtigungen',
'admin.plugins.updateNewEgress': 'Neue ausgehende Verbindungen',
'admin.plugins.updateApprove': 'Freigeben & einschalten',
'admin.plugins.updateLater': 'Vorerst aus lassen',
'admin.plugins.updateKeptOff': 'Update installiert — bleibt aus, bis du die neuen Berechtigungen freigibst',
'admin.plugins.reviewedMeaning':
'„Geprüft" heißt: Ein TREK-Maintainer hat den Code dieses Plugins bei jeder Version manuell auf Schadsoftware gescannt — nicht auf Qualität oder Funktion. Es ist keine Garantie, dass ein Plugin harmlos ist.',
'admin.plugins.security.title': 'Wie Plugins eingesperrt werden — und wo die Grenzen liegen',
'admin.plugins.security.isolationTitle': 'Jedes Plugin läuft abgeschottet',
'admin.plugins.security.isolationBody':
'Ein Plugin läuft als eigener, abgeriegelter Prozess, der nur seine eigenen Dateien lesen darf. Es kann weder deine Datenbank noch deinen Login-Schlüssel oder deinen Verschlüsselungsschlüssel lesen, keine anderen Programme starten und nirgends Dateien schreiben. Seine Oberfläche läuft in einem versiegelten Browser-Rahmen, der dein Sitzungs-Cookie nicht lesen und die TREK-Seite drumherum nicht anfassen kann.',
'admin.plugins.security.permsTitle': 'Was die Berechtigungen bedeuten',
'admin.plugins.security.permsBody':
'Die Berechtigungen, die dir vor der Installation angezeigt werden, sind eine harte Obergrenze, die TREK zur Laufzeit durchsetzt — ein Plugin kann buchstäblich nichts tun, was nicht auf der Liste steht. Aber sie sagen dir, was ein Plugin kann, nicht was es tatsächlich tut. Ein Plugin, das deine Reisen lesen und einen Server erreichen darf, kann deine Reisen an diesen Server schicken — lies also die Berechtigungen und die Zielhosts, nicht nur die Beschreibung.',
'admin.plugins.security.limitsTitle': 'Was wir nicht garantieren können',
'admin.plugins.security.limitsBody':
'Die Isolation ist eine starke Software-Grenze, keine absolute. Ein Plugin handelt mit genau den Rechten, die du freigibst — innerhalb dieser Rechte kann es sich anders verhalten als seine Beschreibung nahelegt, und es kann Daten, die es legitim hat, an die von ihm deklarierten Hosts senden. TREK liest oder bewertet nicht, was der Code eines Plugins tatsächlich tut.',
'admin.plugins.security.worstTitle': 'Der schlimmste Fall',
'admin.plugins.security.worstBody':
'Ein bösartiges Plugin, das du einschaltest, kann die Daten und Verbindungen missbrauchen, die du ihm gegeben hast — etwa die Reisen abgreifen, die es lesen darf. Es kann keine Passwörter stehlen, keinen Admin-Login fälschen, keine Befehle auf deinem Server ausführen und keine Daten erreichen, die du nicht freigegeben hast. Der Schaden bleibt in dem, was du freigegeben hast, und das Ausschalten des Plugins stoppt ihn.',
'admin.plugins.security.reviewedTitle': 'Was „Geprüft" bedeutet',
'admin.plugins.security.reviewedBody':
'Ein geprüftes Plugin wurde bei jeder Version von einem TREK-Maintainer manuell auf Schadsoftware gescannt — geprüft auf feindlichen Code, nicht darauf, ob es gut funktioniert. Es ist kein Versprechen, dass das Plugin harmlos ist.',
'admin.plugins.security.signedTitle': 'Was „Signiert" bedeutet',
'admin.plugins.security.signedBody':
'Die Prüfsumme, die TREK bei jeder Installation prüft, belegt, dass die Dateien genau das sind, wofür die Registry einsteht. Eine Signatur belegt etwas anderes: dass sie vom Autor stammen, signiert mit einem Schlüssel, den nur er besitzt. Ein signiertes Plugin hat beides. Ein unsigniertes ist nicht unsicher — es trägt schlicht eine Garantie weniger, und die meisten Plugins in der Registry sind heute unsigniert.',
'admin.plugins.signed': 'Signiert',
'admin.plugins.signedHint': 'Bei der Installation gegen den Signaturschlüssel des Autors geprüft',
'admin.plugins.unsigned': 'Unsigniert',
'admin.plugins.unsignedHint':
'Die Dateien entsprechen dem, wofür die Registry einsteht, aber nichts verbindet sie mit dem Autor. Eine Garantie weniger — nicht unsicher.',
'admin.plugins.updateBlocked': 'Update blockiert — {reason}',
'admin.plugins.reviewBlock': 'Ansehen',
'admin.plugins.retrusted': 'Neuem Signaturschlüssel vertraut — das Plugin ist aktualisiert',
'admin.plugins.sig.title': 'Die Signatur von {name} konnte nicht geprüft werden',
'admin.plugins.sig.keyChangedBody':
'Der Signaturschlüssel des Autors ist nicht der, mit dem dieses Plugin installiert wurde. Autoren wechseln ihre Schlüssel durchaus — aber ein Angreifer, der das Plugin übernommen hat, sähe von hier aus genau so aus.',
'admin.plugins.sig.invalidBody':
'Die Dateien passen nicht zur Signatur des Autors. Sie sind nicht das, was der Autor signiert hat — entweder wurden sie beschädigt oder manipuliert. Das lässt sich nicht übergehen.',
'admin.plugins.sig.missingBody':
'Dieses Plugin war signiert, als du es installiert hast, aber die neue Version bringt keine Signatur mit. TREK akzeptiert diesen Rückschritt nicht stillschweigend. Das lässt sich nicht übergehen.',
'admin.plugins.sig.incompleteBody':
'Der Registry-Eintrag ist nur halb signiert: Er nennt einen Autorenschlüssel, die Version trägt aber keine Signatur (oder umgekehrt). Das ist ein Fehler auf Seiten des Plugins. Das lässt sich nicht übergehen.',
'admin.plugins.sig.pinnedKey': 'Schlüssel, mit dem es installiert wurde',
'admin.plugins.sig.newKey': 'Schlüssel, den es jetzt anbietet',
'admin.plugins.sig.confirmOutOfBand':
'TREK kann einen legitimen Schlüsselwechsel nicht von einer Übernahme unterscheiden — von hier aus sehen beide gleich aus. Bestätige den neuen Schlüssel beim Autor über einen Kanal, dem du bereits vertraust, bevor du ihn annimmst. Sobald du das tust, wird das Plugin aktualisiert und der neue Schlüssel gemerkt.',
'admin.plugins.sig.retrustConfirm': 'Neuem Schlüssel vertrauen & aktualisieren',
'admin.plugins.sig.cancel': 'Nicht vertrauen',
'admin.plugins.sig.consentUnsigned':
'Nichts verbindet diese Version mit ihrem Autor — die Dateien entsprechen der Registry, tragen aber keine Autorensignatur.',
'admin.plugins.security.trustTitle': 'Das Fazit',
'admin.plugins.security.trustBody':
'Ein Plugin zu installieren ist wie jede fremde App zu installieren: Füge nur Code von Autoren hinzu, denen du vertraust, und prüfe ihn im Zweifel zuerst selbst. TREK übernimmt keine Verantwortung für Plugins von Drittanbietern.',
'admin.plugins.runtimeOn': 'Laufzeit aktiv',
'admin.plugins.tabDiscover': 'Entdecken',
'admin.plugins.searchPlaceholder': 'Plugins durchsuchen…',
'admin.plugins.filterType': 'Typ',
'admin.plugins.filterStatus': 'Status',
'admin.plugins.sortBy': 'Sortieren',
'admin.plugins.allTypes': 'Alle Typen',
'admin.plugins.allStatuses': 'Alle',
'admin.plugins.stateOff': 'Aus',
'admin.plugins.filterUpdate': 'Update verfügbar',
'admin.plugins.sortName': 'Name',
'admin.plugins.sortRecent': 'Zuletzt aktualisiert',
'admin.plugins.sortUpdates': 'Updates zuerst',
'admin.plugins.sortDownloads': 'Meiste Downloads',
'admin.plugins.updatesAvailable': '{count} Updates für deine Plugins verfügbar.',
'admin.plugins.updatesAvailable.one': '{count} Update für deine Plugins verfügbar.',
'admin.plugins.newerNeedsTrek': 'v{version} verfügbar — benötigt TREK {range}',
'admin.plugins.versionsTitle': 'Versionen',
'admin.plugins.versionPickerTitle': 'Version wechseln — {name}',
'admin.plugins.versionSwitch': 'Zu {version} wechseln',
'admin.plugins.versionNeedsTrek': 'benötigt TREK {range}',
'admin.plugins.changeVersion': 'Version wechseln…',
'admin.plugins.noVersions': 'Keine veröffentlichten Versionen in der Registry gefunden.',
'admin.plugins.downgradeTitle': 'Dieses Plugin zurücksetzen?',
'admin.plugins.downgradeBody':
'Wechsel von v{from} zu v{to}: Von der neueren Version geschriebene Daten bleiben erhalten, und die ältere Version versteht sie möglicherweise nicht.',
'admin.plugins.downgradeConfirm': 'Zurücksetzen',
'admin.plugins.updatesHeld': 'Updates pausiert bei v{version}',
'admin.plugins.resumeUpdates': 'Updates fortsetzen',
'admin.plugins.updatesResumed': 'Updates fortgesetzt',
'admin.plugins.updateAll': 'Alle aktualisieren',
'admin.plugins.noMatchInstalled': 'Keine installierten Plugins passen zu deiner Suche.',
'admin.plugins.noMatchRegistry': 'Keine Plugins in der Registry passen zu deiner Suche.',
'admin.plugins.restart': 'Neu starten',
'admin.plugins.restarted': 'Plugin neu gestartet',
'admin.plugins.instanceSettings': 'Instanz-Einstellungen',
'admin.plugins.settingsSaved': 'Einstellungen gespeichert',
'admin.plugins.settingsSavedRestarted': 'Einstellungen gespeichert — Plugin neu gestartet',
'admin.plugins.actions': 'Aktionen',
'admin.plugins.actions.confirm': 'Diese Aktion ausführen?',
'admin.plugins.actions.inactive': 'Aktiviere das Plugin, um seine Aktionen auszuführen',
'admin.plugins.requiredMissing': '"{field}" ist erforderlich',
'admin.plugins.cap.readsTrips': 'Liest deine Reisen',
'admin.plugins.cap.readsUsers': 'Liest Basis-Profile',
'admin.plugins.cap.readsCosts': 'Liest deine Ausgaben',
'admin.plugins.cap.readsPacking': 'Liest Packlisten',
'admin.plugins.cap.readsFiles': 'Liest Reise-Dateien',
'admin.plugins.cap.writesCosts': 'Fügt Ausgaben hinzu',
'admin.plugins.cap.writesPlaces': 'Bearbeitet Orte',
'admin.plugins.cap.writesDays': 'Bearbeitet Tage',
'admin.plugins.cap.writesItinerary': 'Bearbeitet Reiseplan',
'admin.plugins.cap.writesTrips': 'Bearbeitet Reisen',
'admin.plugins.cap.metadata': 'Ergänzt Metadaten',
'admin.plugins.cap.widget': 'Dashboard-Widget',
'admin.plugins.cap.heroWidget': 'Boarding-Pass-Widget',
'admin.plugins.cap.placeSlot': 'Ortsdetails',
'admin.plugins.cap.daySlot': 'Tagesdetails',
'admin.plugins.cap.reservationSlot': 'Reservierungsdetails',
'admin.plugins.cap.replacesTabs': 'Ersetzt Planer-Tabs',
'admin.plugins.cap.realtime': 'Echtzeit-Updates',
'admin.plugins.cap.notificationChannel': 'Benachrichtigungskanal',
'admin.plugins.cap.photos': 'Liefert Fotos',
'admin.plugins.cap.calendar': 'Liefert Kalender-Events',
'admin.plugins.cap.placeDetails': 'Reichert Orte an',
'admin.plugins.cap.search': 'Beantwortet Suchen',
'admin.plugins.cap.poiCategories': 'Fügt Kartenkategorien hinzu',
'admin.plugins.cap.warnings': 'Meldet Probleme',
'admin.plugins.cap.mapLayers': 'Zeichnet auf der Karte',
'admin.plugins.cap.routing': 'Bietet Routing an',
'admin.plugins.cap.daySchedule': 'Ergänzt Planzeiten',
'admin.plugins.cap.dayTint': 'Färbt Tage ein',
'admin.plugins.cap.geolocation': 'Liest deinen Standort',
'admin.plugins.cap.events': 'Reagiert auf Aktivität',
'admin.plugins.cap.requiresAddon': 'Benötigt {addon}',
'admin.plugins.cap.dependsOn': 'Benötigt {id} {version}',
'admin.plugins.dep.addonDisabledToast': 'Aktiviere zuerst die benötigten Addons: {addons}',
'admin.plugins.dep.addonDisabledToast.one': 'Aktiviere zuerst das benötigte Addon: {addons}',
'admin.plugins.dep.autoEnabled': 'Benötigte Plugins zuerst aktiviert: {plugins}',
'admin.plugins.dep.autoEnabled.one': 'Benötigtes Plugin zuerst aktiviert: {plugins}',
'admin.plugins.dep.downloaded': '{id} heruntergeladen',
'admin.plugins.dep.resolveTitle': 'Fehlende Abhängigkeiten',
'admin.plugins.dep.resolveBody': '„{name}“ benötigt diese Plugins, bevor es aktiviert werden kann.',
'admin.plugins.dep.requires': 'Benötigt {version}',
'admin.plugins.dep.mismatch': 'Benötigt {wanted} — installiert ist {installed}',
'admin.plugins.dep.download': 'Herunterladen',
'admin.plugins.dep.update': 'Aktualisieren',
'admin.plugins.dep.resolveHint': 'Lädt die neueste kompatible Version samt eigener Abhängigkeiten herunter.',
'admin.plugins.dep.trekIncompatible': 'Benötigt TREK {range} — auf diesem Server läuft {host}',
'admin.plugins.dep.trekUnknown': 'Gibt nicht an, welche TREK-Versionen unterstützt werden',
'admin.plugins.installCompatible': '{version} installieren',
'admin.plugins.installAnyway': 'Trotzdem installieren',
'admin.plugins.rangeBypass.pill': 'Versionsprüfung aus',
'admin.plugins.rangeBypass.pillHint':
'TREK_PLUGINS_IGNORE_TREK_RANGE ist gesetzt — Plugins dürfen außerhalb der von ihren Autoren angegebenen TREK-Versionen installiert und ausgeführt werden',
'admin.plugins.rangeBypass.title': 'Außerhalb der unterstützten TREK-Versionen',
'admin.plugins.rangeBypass.noticeTitle': 'Außerhalb der unterstützten TREK-Versionen installiert',
'admin.plugins.rangeBypass.body':
'„{name}“ gibt Unterstützung für TREK {range} an, dieser Server läuft mit {host}. TREK lässt es nur durch, weil TREK_PLUGINS_IGNORE_TREK_RANGE gesetzt ist. Der Autor hat den Versionsbereich des Plugins für dieses TREK nicht aktualisiert, es gibt also keine Garantie, dass es funktioniert — und in seltenen Fällen kann ein unpassendes Plugin TREK-Daten beschädigen. Fahre nur fort, wenn du dieses Risiko akzeptierst.',
'admin.plugins.rangeBypass.bodyUnknown':
'„{name}“ gibt nicht an, welche TREK-Versionen es unterstützt; dieser Server läuft mit {host}. TREK lässt es nur durch, weil TREK_PLUGINS_IGNORE_TREK_RANGE gesetzt ist. Nichts belegt, dass der Autor es auf diesem TREK getestet hat, es gibt also keine Garantie, dass es funktioniert — und in seltenen Fällen kann ein unpassendes Plugin TREK-Daten beschädigen. Fahre nur fort, wenn du dieses Risiko akzeptierst.',
'admin.plugins.dep.trekBypassed': 'Außerhalb seines TREK-Bereichs ({range}) — Versionsprüfung aus',
'admin.plugins.dep.trekBypassedUnknown': 'Gibt keinen TREK-Bereich an — Versionsprüfung aus',
'admin.plugins.incompatible': 'Nicht kompatibel',
'admin.plugins.accessTitle': 'Worauf es zugreift',
'admin.plugins.connectsTitle': 'Verbindet sich mit',
'admin.plugins.detailsTitle': 'Details',
'admin.plugins.noAccess': 'Braucht keinen besonderen Zugriff.',
'admin.plugins.metaVersion': 'Version',
'admin.plugins.metaSize': 'Größe',
'admin.plugins.metaRequires': 'Benötigt',
'admin.plugins.metaReviewed': 'Geprüft am',
'admin.plugins.downloads': 'Downloads',
'admin.addons.title': 'Addons',
'admin.addons.subtitle': 'Aktiviere oder deaktiviere Funktionen, um TREK nach deinen Wünschen anzupassen.',
'admin.addons.catalog.packing.name': 'Listen',
'admin.addons.catalog.packing.description': 'Packlisten und To-Do-Aufgaben für deine Reisen',
'admin.addons.catalog.budget.name': 'Kosten',
'admin.addons.catalog.budget.description': 'Reisekosten erfassen und unter den Mitreisenden aufteilen',
'admin.addons.catalog.documents.name': 'Dokumente',
'admin.addons.catalog.documents.description': 'Reisedokumente speichern und verwalten',
'admin.addons.catalog.vacay.name': 'Vacay',
'admin.addons.catalog.vacay.description': 'Persönlicher Urlaubsplaner mit Kalenderansicht',
'admin.addons.catalog.atlas.name': 'Atlas',
'admin.addons.catalog.atlas.description': 'Weltkarte mit besuchten Ländern und Reisestatistiken',
'admin.addons.catalog.collab.name': 'Collab',
'admin.addons.catalog.collab.description': 'Notizen, Umfragen, Chat und Vorschläge für die gemeinsame Planung',
'admin.addons.catalog.roadtrip.name': 'Roadtrip',
'admin.addons.catalog.roadtrip.description':
'Fahrten mit Zwischenstopps planen — Fahrzeiten und Ankunftszeiten rechnen sich selbst neu',
'admin.addons.catalog.tours.name': 'Touren',
'admin.addons.catalog.tours.description': 'Wanderungen, Radtouren und andere Touren entlang einer Route',
'admin.addons.catalog.memories.name': 'Fotos (Immich)',
'admin.addons.catalog.memories.description': 'Reisefotos über deine Immich-Instanz teilen',
'admin.addons.catalog.mcp.name': 'MCP',
'admin.addons.catalog.mcp.description': 'Model Context Protocol für die KI-Assistenten-Integration',
'admin.addons.subtitleBefore': 'Aktiviere oder deaktiviere Funktionen, um ',
'admin.addons.subtitleAfter': ' nach deinen Wünschen anzupassen.',
'admin.addons.catalog.naver_list_import.name': 'Naver List Import',
'admin.addons.catalog.naver_list_import.description': 'Orte aus einer geteilten Naver-Maps-Liste importieren',
'admin.addons.catalog.airtrail.name': 'AirTrail',
'admin.addons.catalog.airtrail.description': 'Flüge aus deiner AirTrail-Instanz synchronisieren',
'admin.addons.catalog.dawarich.name': 'Dawarich',
'admin.addons.catalog.dawarich.description':
'Aufenthalte und aufgezeichnete Routen aus einer Dawarich-Instanz lesen, die jeder selbst verbindet',
'admin.addons.catalog.llm_parsing.name': 'KI-Auswertung',
'admin.addons.catalog.llm_parsing.description':
'Liest Buchungen, an denen der eingebaute Parser scheitert, mit einem KI-Modell deiner Wahl',
'admin.addons.catalog.ai_assistant.name': 'KI-Assistent',
'admin.addons.catalog.ai_assistant.description':
'Ein Chat in jeder Reise, der Fragen beantwortet und Änderungen vorschlägt, die du bestätigst',
'admin.addons.llm.vision.auto': 'Automatisch',
'admin.addons.llm.vision.on': 'Ja',
'admin.addons.llm.vision.off': 'Nein',
'admin.addons.llm.vision.hintLocal': 'Automatisch fragt den Ollama-Server, ob dieses Modell Bilder liest.',
'admin.addons.llm.vision.hintCloud':
'Automatisch bedeutet bei einem Cloud-Modell Nein. Wähle Ja, wenn dieses Modell Bilder liest.',
'admin.addons.enabled': 'Aktiviert',
'admin.addons.disabled': 'Deaktiviert',
'admin.addons.type.trip': 'Reise',
'admin.addons.type.global': 'Global',
'admin.addons.type.integration': 'Integration',
'admin.addons.tripHint': 'Verfügbar als Tab innerhalb jedes Trips',
'admin.addons.globalHint': 'Verfügbar als eigenständiger Bereich in der Navigation',
'admin.addons.integrationHint': 'Backend-Dienste und API-Integrationen ohne eigene Seite',
'admin.addons.toast.updated': 'Addon aktualisiert',
'admin.addons.toast.error': 'Addon konnte nicht aktualisiert werden',
'admin.addons.group.count': '{enabled} von {total} aktiviert',
'admin.addons.subOptions': '{count} Optionen',
'admin.addons.subOptions.one': '{count} Option',
'admin.addons.subOptionsOn': '{count} aktiv',
'admin.addons.subOptionsOn.one': '{count} aktiv',
'admin.toursWanderer.title': 'wanderer',
'admin.toursWanderer.subtitle':
'Nutzer können ihre eigene wanderer-Instanz verbinden und deren Trails als Touren importieren',
'admin.toursHikingMap.title': 'Wanderkarte (OpenHikingMap)',
'admin.toursHikingMap.subtitle':
'Bietet OpenHikingMap als Grundkarte im Tourplaner an. Kostenlos für nichtkommerzielle Installationen bis 500.000 Kacheln im Monat; eine kommerzielle oder größere Installation braucht vorher eine Vereinbarung mit openmaps.fr',
'admin.toursCycleMap.title': 'Fahrradkarte (CyclOSM)',
'admin.toursCycleMap.subtitle':
'Bietet CyclOSM als Grundkarte für Radtouren im Tourplaner an. OpenStreetMap France stellt sie für moderate Nutzung bereit; eine stark genutzte oder kommerzielle Installation schaltet sie ab oder trifft vorher eine Vereinbarung mit dem Betreiber',
'admin.toursSkiRouting.title': 'Pistenrouter',
'admin.toursSkiRouting.subtitle':
'Plant Skitouren entlang von Pisten, Liften und Loipen auf den Pistendaten des Places-Servers. Ausgeschaltet werden die Abschnitte einer Skitour gerade gezeichnet',
'admin.addons.noAddons': 'Keine Addons verfügbar',
'admin.weather.title': 'Wetterdaten',
'admin.weather.badge': 'Seit 24. März 2026',
'admin.weather.description':
'TREK nutzt Open-Meteo als Wetterdatenquelle. Open-Meteo ist ein kostenloser, quelloffener Wetterdienst — es wird kein API-Schlüssel benötigt.',
'admin.weather.forecast': '16-Tage-Vorhersage',
'admin.weather.forecastDesc': 'Statt bisher 5 Tage (OpenWeatherMap)',
'admin.weather.climate': 'Historische Klimadaten',
'admin.weather.climateDesc': 'Durchschnittswerte der letzten 85 Jahre für Tage jenseits der 16-Tage-Vorhersage',
'admin.weather.requests': '10.000 Anfragen / Tag',
'admin.weather.requestsDesc': 'Kostenlos, kein API-Schlüssel erforderlich',
'admin.weather.locationHint':
'Das Wetter wird anhand des ersten Ortes mit Koordinaten im jeweiligen Tag berechnet. Ist kein Ort am Tag eingeplant, wird ein beliebiger Ort aus der Ortsliste als Referenz verwendet.',
'admin.tabs.mcpTokens': 'MCP-Zugang',
'admin.mcpTokens.title': 'MCP-Zugang',
'admin.mcpTokens.subtitle': 'OAuth-Sitzungen und API-Tokens aller Benutzer verwalten',
'admin.mcpTokens.sectionTitle': 'API-Tokens',
'admin.mcpTokens.owner': 'Besitzer',
'admin.mcpTokens.tokenName': 'Token-Name',
'admin.mcpTokens.created': 'Erstellt',
'admin.mcpTokens.lastUsed': 'Zuletzt verwendet',
'admin.mcpTokens.never': 'Nie',
'admin.mcpTokens.empty': 'Es wurden noch keine MCP-Tokens erstellt',
'admin.mcpTokens.deleteTitle': 'Token löschen',
'admin.mcpTokens.deleteMessage':
'Dieser Token wird sofort widerrufen. Der Benutzer verliert den MCP-Zugang über diesen Token.',
'admin.mcpTokens.deleteSuccess': 'Token gelöscht',
'admin.mcpTokens.deleteError': 'Token konnte nicht gelöscht werden',
'admin.mcpTokens.loadError': 'Tokens konnten nicht geladen werden',
'admin.oauthSessions.sectionTitle': 'OAuth-Sitzungen',
'admin.oauthSessions.clientName': 'Client',
'admin.oauthSessions.owner': 'Besitzer',
'admin.oauthSessions.scopes': 'Berechtigungen',
'admin.oauthSessions.created': 'Erstellt',
'admin.oauthSessions.empty': 'Keine aktiven OAuth-Sitzungen',
'admin.oauthSessions.revokeTitle': 'Sitzung widerrufen',
'admin.oauthSessions.revokeMessage':
'Diese OAuth-Sitzung wird sofort widerrufen. Der Client verliert den MCP-Zugang.',
'admin.oauthSessions.revokeSuccess': 'Sitzung widerrufen',
'admin.oauthSessions.revokeError': 'Sitzung konnte nicht widerrufen werden',
'admin.oauthSessions.loadError': 'OAuth-Sitzungen konnten nicht geladen werden',
'admin.tabs.github': 'GitHub',
'admin.audit.subtitle': 'Sicherheitsrelevante und administrative Ereignisse (Backups, Benutzer, MFA, Einstellungen).',
'admin.audit.empty': 'Noch keine Audit-Einträge.',
'admin.audit.refresh': 'Aktualisieren',
'admin.audit.loadMore': 'Mehr laden',
'admin.audit.showing': '{count} geladen, {total} gesamt',
'admin.audit.showing.one': '{count} geladen, {total} gesamt',
'admin.audit.col.time': 'Zeit',
'admin.audit.col.user': 'Benutzer',
'admin.audit.col.action': 'Aktion',
'admin.audit.col.resource': 'Ressource',
'admin.audit.col.ip': 'IP',
'admin.audit.col.details': 'Details',
'admin.github.title': 'Update-Verlauf',
'admin.github.subtitle': 'Neueste Updates von {repo}',
'admin.github.latest': 'Aktuell',
'admin.github.prerelease': 'Vorabversion',
'admin.github.showDetails': 'Details anzeigen',
'admin.github.hideDetails': 'Details ausblenden',
'admin.github.loadMore': 'Mehr laden',
'admin.github.loading': 'Wird geladen...',
'admin.github.error': 'Releases konnten nicht geladen werden',
'admin.github.by': 'von',
'admin.github.support': 'Hilft mir, TREK weiterzuentwickeln',
'admin.update.available': 'Update verfügbar',
'admin.update.text': 'TREK {version} ist verfügbar. Du verwendest {current}.',
'admin.update.button': 'Auf GitHub ansehen',
'admin.update.install': 'Update installieren',
'admin.update.confirmTitle': 'Update installieren?',
'admin.update.confirmText':
'TREK wird von {current} auf {version} aktualisiert. Der Server startet danach automatisch neu.',
'admin.update.dataInfo':
'Alle Daten (Reisen, Benutzer, API-Schlüssel, Uploads, Vacay, Atlas, Budgets) bleiben erhalten.',
'admin.update.warning': 'Die App ist während des Neustarts kurz nicht erreichbar.',
'admin.update.confirm': 'Jetzt aktualisieren',
'admin.update.installing': 'Wird aktualisiert…',
'admin.update.success': 'Update installiert! Server startet neu…',
'admin.update.failed': 'Update fehlgeschlagen',
'admin.update.backupHint': 'Wir empfehlen, vor dem Update ein Backup zu erstellen und herunterzuladen.',
'admin.update.backupLink': 'Zum Backup',
'admin.update.howTo': 'Update-Anleitung',
'admin.update.dockerText':
'Deine TREK-Instanz läuft in Docker. Um auf {version} zu aktualisieren, führe folgende Befehle auf deinem Server aus:',
'admin.update.nonDockerText':
'Diese TREK-Instanz läuft nicht in Docker. Um auf {version} zu aktualisieren, führe die Installations- oder Update-Methode erneut aus, die du verwendet hast — bei Proxmox Community Scripts startest du das Update zum Beispiel über die LXC-Konsole:',
'admin.update.wikiLink': 'Update-Anleitung öffnen',
'admin.update.reloadHint': 'Bitte lade die Seite in wenigen Sekunden neu.',
'admin.tabs.permissions': 'Berechtigungen',
'admin.notifications.emailPanel.title': 'Email (SMTP)',
'admin.notifications.webhookPanel.title': 'Webhook',
'admin.notifications.webPushPanel.title': 'Web Push',
'admin.notifications.webPushPanel.hint':
'Ermöglicht Benutzern, über den Browser Benachrichtigungen auf ihren Smartphones und Computern zu empfangen, auch wenn TREK geschlossen ist. Erfordert HTTPS; auf iPhone und iPad muss TREK zum Home-Bildschirm hinzugefügt werden.',
'admin.notifications.inappPanel.title': 'In-App',
'admin.notifications.inappPanel.hint':
'In-App-Benachrichtigungen sind immer aktiv und können nicht global deaktiviert werden.',
'admin.notifications.adminWebhookPanel.title': 'Admin-Webhook',
'admin.notifications.adminWebhookPanel.hint':
'Dieser Webhook wird ausschließlich für Admin-Benachrichtigungen verwendet (z. B. Versions-Updates). Er ist unabhängig von den Benutzer-Webhooks und sendet automatisch, wenn eine URL konfiguriert ist.',
'admin.notifications.adminWebhookPanel.saved': 'Admin-Webhook-URL gespeichert',
'admin.notifications.adminWebhookPanel.testSuccess': 'Test-Webhook erfolgreich gesendet',
'admin.notifications.adminWebhookPanel.testFailed': 'Test-Webhook fehlgeschlagen',
'admin.notifications.adminWebhookPanel.alwaysOnHint':
'Admin-Webhook sendet automatisch, wenn eine URL konfiguriert ist',
'admin.notifications.ntfy': 'Ntfy',
'admin.ntfy.hint':
'Erlaubt Benutzern, eigene ntfy-Themen für Push-Benachrichtigungen zu konfigurieren. Legen Sie unten den Standardserver fest, um die Benutzereinstellungen vorauszufüllen.',
'admin.notifications.testNtfy': 'Test-Ntfy senden',
'admin.notifications.testNtfySuccess': 'Test-Ntfy erfolgreich gesendet',
'admin.notifications.testNtfyFailed': 'Test-Ntfy fehlgeschlagen',
'admin.notifications.adminNtfyPanel.title': 'Admin-Ntfy',
'admin.notifications.adminNtfyPanel.hint':
'Dieses Ntfy-Thema wird ausschließlich für Admin-Benachrichtigungen verwendet (z. B. Versions-Updates). Es ist unabhängig von Benutzer-Themen und sendet immer, wenn es konfiguriert ist.',
'admin.notifications.adminNtfyPanel.serverLabel': 'Ntfy-Server-URL',
'admin.notifications.adminNtfyPanel.serverHint':
'Wird auch als Standardserver für Benutzer-ntfy-Benachrichtigungen verwendet. Leer lassen für ntfy.sh. Benutzer können dies in ihren eigenen Einstellungen überschreiben.',
'admin.notifications.adminNtfyPanel.serverPlaceholder': 'https://ntfy.sh',
'admin.notifications.adminNtfyPanel.topicLabel': 'Admin-Thema',
'admin.notifications.adminNtfyPanel.topicPlaceholder': 'trek-admin-alerts',
'admin.notifications.adminNtfyPanel.tokenLabel': 'Zugriffstoken (optional)',
'admin.notifications.adminNtfyPanel.tokenCleared': 'Admin-Zugriffstoken gelöscht',
'admin.notifications.adminNtfyPanel.saved': 'Admin-Ntfy-Einstellungen gespeichert',
'admin.notifications.adminNtfyPanel.test': 'Test-Ntfy senden',
'admin.notifications.adminNtfyPanel.testSuccess': 'Test-Ntfy erfolgreich gesendet',
'admin.notifications.adminNtfyPanel.testFailed': 'Test-Ntfy fehlgeschlagen',
'admin.notifications.adminNtfyPanel.alwaysOnHint': 'Admin-Ntfy sendet immer, wenn ein Thema konfiguriert ist',
'admin.notifications.adminNotificationsHint':
'Konfiguriere, welche Kanäle Admin-Benachrichtigungen liefern (z. B. Versions-Updates). Der Webhook sendet automatisch, wenn eine Admin-Webhook-URL gesetzt ist.',
'admin.notificationDefaults.title': 'Vorgaben für Nutzer',
'admin.notificationDefaults.hint':
'So starten die Benachrichtigungen jedes Nutzers. „Aus“ kann jeder selbst wieder einschalten, „Gesperrt“ schaltet für alle ab und erscheint in ihren Einstellungen mit Schloss. Gilt für alle, die die Zelle nicht selbst geändert haben.',
'admin.notificationDefaults.on': 'An',
'admin.notificationDefaults.off': 'Aus',
'admin.notificationDefaults.blocked': 'Gesperrt',
'admin.notificationDefaults.cycle': 'Klicken für: {next}',
'admin.notifications.tripReminders.title': 'Reiseerinnerungen',
'admin.notifications.tripReminders.hint':
'Sendet eine Erinnerungsbenachrichtigung vor Reisebeginn (erfordert gesetzte Erinnerungstage bei der Reise).',
'admin.notifications.tripReminders.enabled': 'Reiseerinnerungen aktiviert',
'admin.notifications.tripReminders.disabled': 'Reiseerinnerungen deaktiviert',
'admin.tabs.notifications': 'Benachrichtigungen',
'admin.addons.catalog.journey.name': 'Journey',
'admin.addons.catalog.journey.description': 'Reise-Tracking & Tagebuch mit Check-ins, Fotos und Tagesberichten',
'admin.addons.catalog.collections.name': 'Sammlungen',
'admin.addons.catalog.collections.description':
'Orte aus allen Reisen in benannten Listen sammeln und wiederverwenden',
'admin.passkey.title': 'Passkey-Anmeldung',
'admin.passkey.cardHint': 'Erlaube Benutzern die Anmeldung mit Passkeys (WebAuthn). Standardmäßig deaktiviert.',
'admin.passkey.login': 'Passkey-Anmeldung aktivieren',
'admin.passkey.loginHint':
'Zeigt die Option "Mit Passkey anmelden" und erlaubt Benutzern, in ihren Einstellungen Passkeys zu registrieren.',
'admin.passkey.notConfigured':
'Für diese Installation ist noch keine WebAuthn-Domain auflösbar. Lege unten APP_URL oder die Relying Party ID fest — bis dahin bleiben Passkeys ausgeblendet.',
'admin.passkey.rpId': 'Relying Party ID (Domain)',
'admin.passkey.rpIdHint':
'Die reine Domain, an die Passkeys gebunden sind, z. B. trek.example.org. Leer lassen, um sie aus APP_URL abzuleiten. Eine spätere Änderung macht bestehende Passkeys ungültig.',
'admin.passkey.origins': 'Erlaubte Origins',
'admin.passkey.originsHint':
'Vollständige Origins, durch Komma getrennt, z. B. https://trek.example.org. Leer lassen, um APP_URL zu verwenden.',
'admin.passkey.reset': 'Passkeys zurücksetzen',
'admin.passkey.resetHint':
'Entfernt alle Passkeys dieses Benutzers (z. B. bei einem verlorenen Gerät). Die Anmeldung mit Passwort bleibt weiterhin möglich.',
'admin.passkey.resetConfirm': 'Alle Passkeys von {name} entfernen?',
'admin.passkey.resetDone': '{count} Passkeys entfernt',
'admin.passkey.resetDone.one': '{count} Passkey entfernt',
'admin.defaultSettings.mapProvider': 'Kartendienst',
'admin.defaultSettings.mapProviderHint':
'Die Standardkarte für alle auf dieser Instanz. Jeder Nutzer kann sie weiterhin in den eigenen Einstellungen überschreiben.',
'admin.defaultSettings.providerLeaflet': 'Standard (kostenlos)',
'admin.defaultSettings.providerMapbox': 'Mapbox (3D)',
'admin.defaultSettings.providerMapLibre': 'MapLibre (OpenFreeMap)',
'admin.defaultSettings.mapboxToken': 'Gemeinsames Mapbox-Token',
'admin.defaultSettings.mapboxTokenHint':
'Wird für jeden Nutzer verwendet, der kein eigenes Token eingegeben hat — so erhält die gesamte Instanz Mapbox, ohne den Schlüssel einzeln teilen zu müssen. Verschlüsselt gespeichert.',
'admin.defaultSettings.mapboxStyle': 'Kartenstil',
'admin.defaultSettings.mapboxStylePlaceholder': 'Stil auswählen…',
'admin.defaultSettings.mapbox3d': '3D-Gebäude & Gelände',
'admin.defaultSettings.mapboxQuality': 'Hochqualitätsmodus',
'admin.defaultSettings.cartoKey': 'Gemeinsamer CARTO-Key',
'admin.defaultSettings.cartoKeyHint':
'Wird für jeden Nutzer verwendet, der keinen eigenen Key eingetragen hat, damit die ganze Instanz CARTO-Kacheln ohne Wasserzeichen bekommt. Verschlüsselt gespeichert.',
'admin.group.users': 'Benutzer',
'admin.group.config': 'Konfiguration',
'admin.group.integration': 'Integrationen',
'admin.group.maintenance': 'Wartung',
'admin.invite.tripLabel': 'Zu Trip hinzufügen (optional)',
'admin.invite.tripNone': 'Kein Trip',
'admin.invite.tripHint':
'Der neue Nutzer wird automatisch zu diesem Trip hinzugefügt, wenn er sich über den Link registriert.',
'admin.invite.boundTo': 'fügt zu {trip} hinzu',
'admin.placesUsageTitle': 'Wofür der Schlüssel benutzt wird',
'admin.mapsKeyHintShort': 'Ergänzt Fotos, Bewertungen und Öffnungszeiten. Jede Abfrage geht dann an Google.',
'admin.amapKeyHintShort':
'Für die Ortssuche in Festlandchina. Braucht einen Web-Service-Schlüssel, keinen JS-API-Schlüssel.',
'admin.collab.links.subtitle': 'Geteilte Links und Lesezeichen',
'admin.paddleRegions.title': 'Paddel-Gewässerdaten',
'admin.paddleRegions.hint':
'Wehre, Schleusen und Befahrungsregeln aus OpenStreetMap, je Region gelesen und jeden Monat neu.',
'admin.paddleRegions.search': 'Region hinzufügen',
'admin.paddleRegions.searchPlaceholder': 'Geofabrik durchsuchen, zum Beispiel Oberpfalz',
'admin.paddleRegions.noHits': 'Keine Region mit diesem Namen',
'admin.paddleRegions.added': 'Hinzugefügt',
'admin.paddleRegions.empty': 'Noch keine Region. Paddeltouren zeigen dann, dass keine Hindernisdaten bekannt sind.',
'admin.paddleRegions.status.queued': 'Wartet',
'admin.paddleRegions.status.importing': 'Liest',
'admin.paddleRegions.status.ready': 'Bereit',
'admin.paddleRegions.status.failed': 'Fehler',
'admin.paddleRegions.phase.download': 'Lädt herunter',
'admin.paddleRegions.phase.read': 'Liest aus',
'admin.paddleRegions.objects': '{count} Objekte',
'admin.paddleRegions.objects.one': '{count} Objekt',
'admin.paddleRegions.asOf': 'Stand {date}',
'admin.paddleRegions.keptData': 'Der zuvor gelesene Stand bleibt in Gebrauch.',
'admin.paddleRegions.refresh': 'Neu lesen',
'admin.paddleRegions.remove': 'Region entfernen',
'admin.paddleRegions.removeMessage':
'{name} und ihre Hindernisdaten werden entfernt. Paddeltouren dort zeigen dann keine Daten.',
'admin.paddleRegions.retry': 'Erneut versuchen',
'admin.paddleRegions.offline': 'Regionen lassen sich nur mit Verbindung verwalten.',
'admin.paddleRegions.catalogUnavailable': 'Geofabrik ist gerade nicht erreichbar. Versuche es später erneut.',
'admin.paddleRegions.attribution':
'Daten © OpenStreetMap-Mitwirkende (ODbL), regionale Auszüge von Geofabrik. Neu gelesen am 3. jedes Monats.',
'admin.paddleRegions.toast.added': 'Region hinzugefügt. TREK liest sie im Hintergrund.',
'admin.paddleRegions.toast.removed': 'Region entfernt',
'admin.paddleRegions.phase.build': 'Wassernetz wird gebaut',
'admin.paddleRegions.network.km': '{km} km Gewässer',
'admin.paddleRegions.network.lakes': '{count} Seen',
'admin.paddleRegions.network.lakes.one': '{count} See',
'admin.paddleRegions.network.portages': '{count} kartierte Umtragestellen',
'admin.paddleRegions.network.portages.one': '{count} kartierte Umtragestelle',
'admin.paddleRegions.network.inferred': '{count} angenommene Umtragungen',
'admin.paddleRegions.network.inferred.one': '{count} angenommene Umtragung',
'admin.paddleRegions.network.locks': '{count} Schleusen',
'admin.paddleRegions.network.locks.one': '{count} Schleuse',
'admin.paddleRegions.network.gaps': '{count} überbrückte Lücken',
'admin.paddleRegions.network.gaps.one': '{count} überbrückte Lücke',
'admin.paddleRegions.network.missing': 'Kein Wassernetz',
'admin.paddleRegions.network.missingHint': 'Lies die Region erneut ein, um das Netz für das Paddel-Routing zu bauen.',
'admin.paddleRegions.auto.title': 'Regionen automatisch laden',
'admin.paddleRegions.auto.mode.auto': 'Automatisch',
'admin.paddleRegions.auto.mode.ask': 'Auf Anfrage',
'admin.paddleRegions.auto.mode.off': 'Aus',
'admin.paddleRegions.auto.modeHint.auto':
'Plant jemand eine Paddeltour in einer Gegend ohne Gewässerdaten, lädt TREK die kleinste passende Region sofort, bis zur Größengrenze und nur wenige am Tag. Größere warten hier als Anfrage. Nur der Name der Region geht an Geofabrik, nie der Ort.',
'admin.paddleRegions.auto.modeHint.ask':
'Jede neue Region wartet hier, bis ein Admin sie freigibt. Plant ein Admin selbst, lädt sie sofort.',
'admin.paddleRegions.auto.modeHint.off':
'TREK lädt nichts von selbst und fragt nicht nach. Regionen fügst du hier von Hand hinzu.',
'admin.paddleRegions.auto.maxSize': 'Größte Region, die automatisch lädt',
'admin.paddleRegions.auto.maxSizeHint':
'Größere Regionen warten hier als Anfrage. Das Einlesen einer Region dauert einige Minuten und braucht dabei Arbeitsspeicher.',
'admin.paddleRegions.requests.title': 'Angefragt',
'admin.paddleRegions.requests.reason.ask': 'Auf Anfrage',
'admin.paddleRegions.requests.reason.too_large': 'Zu groß',
'admin.paddleRegions.requests.reason.limit': 'Tageslimit',
'admin.paddleRegions.requests.declined': 'Abgelehnt',
'admin.paddleRegions.requests.by': 'von {user}',
'admin.paddleRegions.requests.approve': 'Laden',
'admin.paddleRegions.requests.decline': 'Ablehnen',
'admin.paddleRegions.origin.auto': 'Automatisch',
'admin.paddleRegions.origin.autoHint':
'TREK hat diese Region selbst geladen, für eine Paddeltour, die dort geplant wird.',
'admin.mfa.reset': '2FA zurücksetzen',
'admin.mfa.resetHint':
'Schaltet die Zwei-Faktor-Authentifizierung für diesen Benutzer ab, zum Beispiel nach dem Verlust des Handys. Die Person wird überall abgemeldet und kann sie nach der Anmeldung mit dem Passwort neu einrichten.',
'admin.mfa.resetConfirm': 'Zwei-Faktor-Authentifizierung für {name} abschalten?',
'admin.mfa.resetDone': 'Zwei-Faktor-Authentifizierung zurückgesetzt',
'admin.danger.title': 'Gefahrenzone',
'admin.rotateJwt.title': 'JWT-Secret erneuern',
'admin.rotateJwt.hint': 'Erzeugt ein neues JWT-Signatur-Secret. Alle aktiven Sitzungen werden sofort ungültig.',
'admin.rotateJwt.confirm': 'Erneuern und abmelden',
'admin.rotateJwt.warning': 'Achtung, dadurch werden alle Sitzungen ungültig und du wirst abgemeldet.',
'admin.rotateJwt.body':
'Es wird sofort ein neues JWT-Secret erzeugt. Alle angemeldeten Benutzer, du eingeschlossen, werden abgemeldet und müssen sich neu anmelden.',
'admin.oidcDisplayNamePlaceholder': 'z. B. Google, Authentik, Keycloak',
'admin.oidcDiscoveryUrl': 'Discovery-URL (optional)',
'admin.oidcDiscoveryUrlHint':
'Überschreibt die automatisch gebildete Discovery-URL. Nötig bei Anbietern wie Authentik, bei denen der Endpunkt nicht unter {path} liegt.',
'admin.smtp.skipTls': 'TLS-Zertifikatsprüfung überspringen',
'admin.smtp.skipTlsHint': 'Aktivieren bei selbstsignierten Zertifikaten auf lokalen Mailservern',
'admin.demoBaseline.title': 'Demo-Ausgangszustand',
'admin.demoBaseline.hint':
'Speichert den aktuellen Stand als stündlichen Rücksetzpunkt. Alle Admin-Reisen und -Einstellungen bleiben erhalten.',
'admin.demoBaseline.button': 'Ausgangszustand speichern',
'admin.demoBaseline.saved': 'Ausgangszustand gespeichert! Zurücksetzungen stellen diesen Stand wieder her.',
'admin.demoBaseline.failed': 'Ausgangszustand konnte nicht gespeichert werden',
'admin.invite.deleteTitle': 'Einladungslink löschen',
'admin.invite.deleteConfirm':
'Diesen Einladungslink löschen? Wer ihn noch nicht benutzt hat, kann sich damit nicht mehr registrieren.',
'admin.packingTemplates.deleteTemplateTitle': 'Vorlage löschen',
'admin.packingTemplates.deleteTemplateConfirm': 'Vorlage "{name}" mit allen Kategorien und Einträgen löschen?',
'admin.packingTemplates.deleteCategoryTitle': 'Kategorie löschen',
'admin.packingTemplates.deleteCategoryConfirm': 'Kategorie "{name}" und alle ihre Einträge löschen?',
'admin.rotateJwt.button': 'Erneuern',
'admin.addons.ai.name': 'KI',
'admin.addons.ai.description':
'Eine Verbindung für den Assistenten und das Lesen von Buchungen. MCP öffnet TREK für andere KI-Apps.',
'admin.addons.ai.setup': 'KI einrichten',
'admin.addons.ai.dialogSub': 'Die Verbindung, die Assistent und KI-Auswertung teilen, und was jeder davon darf.',
'admin.addons.ai.tab.connection': 'Verbindung',
'admin.addons.ai.parsing.readsWith': 'Liest Buchungen mit',
'admin.addons.ai.parsing.own': 'Eigene Verbindung',
'admin.addons.ai.parsing.ownHint': 'Wird statt der gemeinsamen Verbindung verwendet.',
'admin.addons.ai.parsing.useShared': 'Gemeinsame Verbindung verwenden',
'admin.addons.ai.parsing.sharedTag': 'Gemeinsam',
'admin.addons.ai.parsing.perUser': 'Jede Person liest mit ihrer eigenen Verbindung aus ihren Einstellungen.',
'admin.addons.ai.parsing.none':
'Noch keine Verbindung. Richte eine für alle ein oder gib der KI-Auswertung eine eigene.',
'admin.addons.ai.parsing.setupOwn': 'Eine andere verwenden',
'admin.addons.ai.parsing.installed': 'Auf dem Server installiert',
'admin.addons.ai.parsing.refresh': 'Aktualisieren',
'admin.addons.ai.parsing.noModels': 'Noch keine Modelle installiert. Lade unten eins.',
'admin.addons.ai.parsing.pullTitle': 'Empfohlenes Modell laden',
'admin.addons.ai.parsing.pull': 'Laden',
'admin.addons.ai.parsing.pulling': 'Lädt…',
'admin.addons.ai.parsing.use': 'Verwenden',
'admin.addons.ai.parsing.selected': 'Ausgewählt',
'admin.addons.ai.parsing.pulled': 'Modell geladen',
'admin.addons.ai.parsing.pullFailed': 'Modell konnte nicht geladen werden',
'admin.addons.ai.parsing.unreachable': 'Der lokale Server ist nicht erreichbar',
'admin.addons.ai.parsing.apiKeyOptional': 'Meist nicht nötig',
};
export default admin;