File size: 22,806 Bytes
98fbc6d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
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.trips': 'Reisen',
  'admin.stats.places': 'Orte',
  'admin.stats.photos': 'Fotos',
  'admin.stats.files': 'Dateien',
  'admin.table.user': 'Benutzer',
  'admin.table.email': 'E-Mail',
  'admin.table.role': 'Rolle',
  'admin.table.created': 'Erstellt',
  'admin.table.lastLogin': 'Letzter Login',
  '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? Alle Reisen werden unwiderruflich gelöscht.',
  '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':
    'Optional. Aktiviert erweiterte Ortsdaten wie Fotos und Wetter.',
  'admin.mapsKey': 'Google Maps API-Schlüssel',
  'admin.mapsKeyHint':
    'Für Ortsuche benötigt. Erstellen unter console.cloud.google.com',
  'admin.mapsKeyHintLong':
    'Ohne API Key wird OpenStreetMap für die Ortssuche genutzt. Mit Google API Key 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.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.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.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.categories': 'Kategorien',
  '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.saveError': 'Fehler beim Speichern',
  'admin.tabs.addons': 'Addons',
  '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': 'Budget',
  'admin.addons.catalog.budget.description':
    'Ausgaben verfolgen und Reisebudget planen',
  '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':
    'Echtzeit-Notizen, Umfragen und Chat für die Reiseplanung',
  '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.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.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.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.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.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.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.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} Passkey(s) 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.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',
};
export default admin;