File size: 21,170 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
import type { TranslationStrings } from '../types';

const settings: TranslationStrings = {
  'settings.title': 'Ajustes',
  'settings.subtitle': 'Configura tus ajustes personales',
  'settings.tabs.display': 'Pantalla',
  'settings.tabs.map': 'Mapa',
  'settings.tabs.notifications': 'Notificaciones',
  'settings.tabs.integrations': 'Integraciones',
  'settings.tabs.account': 'Cuenta',
  'settings.tabs.offline': 'Offline',
  'settings.tabs.about': 'Acerca de',
  'settings.map': 'Mapa',
  'settings.mapTemplate': 'Plantilla del mapa',
  'settings.mapTemplatePlaceholder.select': 'Seleccionar plantilla...',
  'settings.mapDefaultHint': 'Déjalo vacío para OpenStreetMap (por defecto)',
  'settings.mapTemplatePlaceholder':
    'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
  'settings.mapHint': 'Plantilla de URL para los mosaicos del mapa',
  'settings.mapProvider': 'Proveedor de mapa',
  'settings.mapProviderHint':
    'Afecta a los mapas de Trip Planner y Journey. Atlas siempre usa Leaflet.',
  'settings.mapLeafletSubtitle': 'Clásico 2D, cualquier mosaico raster',
  'settings.mapMapboxSubtitle': 'Mosaicos vectoriales, edificios 3D y terreno',
  'settings.mapExperimental': 'Experimental',
  'settings.mapMapboxToken': 'Token de acceso de Mapbox',
  'settings.mapMapboxTokenHint': 'Token público (pk.*) de',
  'settings.mapMapboxTokenLink': 'mapbox.com → Tokens de acceso',
  'settings.mapStyle': 'Estilo de mapa',
  'settings.mapStylePlaceholder': 'Seleccionar un estilo de Mapbox',
  'settings.mapStyleHint': 'Preset o tu propia URL mapbox://styles/USER/ID',
  'settings.map3dBuildings': 'Edificios 3D y terreno',
  'settings.map3dHint':
    'Inclinación + extrusiones 3D reales de edificios — funciona con todos los estilos, incluyendo satélite.',
  'settings.mapHighQuality': 'Modo de alta calidad',
  'settings.mapHighQualityHint':
    'Antialiasing + proyección global para bordes más nítidos y una vista realista del mundo.',
  'settings.mapHighQualityWarning':
    'Puede afectar el rendimiento en dispositivos menos potentes.',
  'settings.mapTipLabel': 'Consejo:',
  'settings.mapTip':
    'Clic derecho y arrastrar para rotar/inclinar el mapa. Clic central para añadir un lugar (el clic derecho está reservado para la rotación).',
  'settings.latitude': 'Latitud',
  'settings.longitude': 'Longitud',
  'settings.saveMap': 'Guardar mapa',
  'settings.apiKeys': 'Claves API',
  'settings.mapsKey': 'Clave API de Google Maps',
  'settings.mapsKeyHint':
    'Necesaria para buscar lugares. Consíguela en console.cloud.google.com',
  'settings.weatherKey': 'Clave API de OpenWeatherMap',
  'settings.weatherKeyHint':
    'Para datos meteorológicos. Gratis en openweathermap.org/api',
  'settings.keyPlaceholder': 'Introduce la clave...',
  'settings.configured': 'Configurado',
  'settings.saveKeys': 'Guardar claves',
  'settings.display': 'Visualización',
  'settings.colorMode': 'Modo de color',
  'settings.light': 'Claro',
  'settings.dark': 'Oscuro',
  'settings.auto': 'Automático',
  'settings.language': 'Idioma',
  'settings.temperature': 'Unidad de temperatura',
  'settings.timeFormat': 'Formato de hora',
  'settings.blurBookingCodes': 'Difuminar códigos de reserva',
  'settings.optimizeFromAccommodation': 'Optimizar la ruta desde el alojamiento',
  'settings.optimizeFromAccommodationHint':
    'Al optimizar un día, comienza la ruta en el hotel donde despiertas y termínala en aquel en el que te registras esa noche.',
  'settings.notifications': 'Notificaciones',
  'settings.notifyTripInvite': 'Invitaciones de viaje',
  'settings.notifyBookingChange': 'Cambios en reservas',
  'settings.notifyTripReminder': 'Recordatorios de viaje',
  'settings.notifyTodoDue': 'Tarea próxima',
  'settings.notifyVacayInvite': 'Invitaciones de fusión Vacay',
  'settings.notifyPhotosShared': 'Fotos compartidas (Immich)',
  'settings.notifyCollabMessage': 'Mensajes de chat (Collab)',
  'settings.notifyPackingTagged': 'Lista de equipaje: asignaciones',
  'settings.notifyWebhook': 'Notificaciones webhook',
  'settings.notificationsDisabled':
    'Las notificaciones no están configuradas. Pida a un administrador que active las notificaciones por correo o webhook.',
  'settings.notificationsActive': 'Canal activo',
  'settings.notificationsManagedByAdmin':
    'Los eventos de notificación son configurados por el administrador.',
  'settings.on': 'Activado',
  'settings.off': 'Desactivado',
  'settings.mcp.title': 'Configuración MCP',
  'settings.mcp.endpoint': 'Endpoint MCP',
  'settings.mcp.clientConfig': 'Configuración del cliente',
  'settings.mcp.clientConfigHint':
    'Reemplaza <your_token> con un token de la lista de abajo. Es posible que debas ajustar la ruta de npx según tu sistema (p. ej. C:\\PROGRA~1\\nodejs\\npx.cmd en Windows).',
  'settings.mcp.clientConfigHintOAuth':
    'Reemplaza <your_client_id> y <your_client_secret> con las credenciales del cliente OAuth 2.1 que creaste arriba. mcp-remote abrirá el navegador para completar la autorización la primera vez que te conectes. Es posible que debas ajustar la ruta de npx según tu sistema (p. ej. C:\\PROGRA~1\\nodejs\\npx.cmd en Windows).',
  'settings.mcp.copy': 'Copiar',
  'settings.mcp.copied': '¡Copiado!',
  'settings.mcp.apiTokens': 'Tokens de API',
  'settings.mcp.createToken': 'Crear nuevo token',
  'settings.mcp.noTokens':
    'Sin tokens aún. Crea uno para conectar clientes MCP.',
  'settings.mcp.tokenCreatedAt': 'Creado',
  'settings.mcp.tokenUsedAt': 'Usado',
  'settings.mcp.deleteTokenTitle': 'Eliminar token',
  'settings.mcp.deleteTokenMessage':
    'Este token dejará de funcionar de inmediato. Cualquier cliente MCP que lo use perderá el acceso.',
  'settings.mcp.modal.createTitle': 'Crear token de API',
  'settings.mcp.modal.tokenName': 'Nombre del token',
  'settings.mcp.modal.tokenNamePlaceholder':
    'p. ej. Claude Desktop, Portátil de trabajo',
  'settings.mcp.modal.creating': 'Creando…',
  'settings.mcp.modal.create': 'Crear token',
  'settings.mcp.modal.createdTitle': 'Token creado',
  'settings.mcp.modal.createdWarning':
    'Este token solo se mostrará una vez. Cópialo y guárdalo ahora — no se podrá recuperar.',
  'settings.mcp.modal.done': 'Listo',
  'settings.mcp.toast.created': 'Token creado',
  'settings.mcp.toast.createError': 'Error al crear el token',
  'settings.mcp.toast.deleted': 'Token eliminado',
  'settings.mcp.toast.deleteError': 'Error al eliminar el token',
  'settings.mcp.apiTokensDeprecated':
    'Los tokens de API están obsoletos y se eliminarán en una versión futura. Utilice los clientes OAuth 2.1 en su lugar.',
  'settings.oauth.clients': 'Clientes OAuth 2.1',
  'settings.oauth.clientsHint':
    'Registre clientes OAuth 2.1 para que las aplicaciones MCP de terceros (Claude Web, Cursor, etc.) puedan conectarse sin tokens estáticos.',
  'settings.oauth.createClient': 'Nuevo cliente',
  'settings.oauth.noClients': 'No hay clientes OAuth registrados.',
  'settings.oauth.clientId': 'ID de cliente',
  'settings.oauth.clientSecret': 'Secreto de cliente',
  'settings.oauth.deleteClient': 'Eliminar cliente',
  'settings.oauth.deleteClientMessage':
    'Este cliente y todas las sesiones activas se eliminarán permanentemente. Cualquier aplicación que lo use perderá el acceso inmediatamente.',
  'settings.oauth.rotateSecret': 'Renovar secreto',
  'settings.oauth.rotateSecretMessage':
    'Se generará un nuevo secreto de cliente y todas las sesiones existentes se invalidarán de inmediato. Actualice su aplicación antes de cerrar este diálogo.',
  'settings.oauth.rotateSecretConfirm': 'Renovar',
  'settings.oauth.rotateSecretConfirming': 'Renovando…',
  'settings.oauth.rotateSecretDoneTitle': 'Nuevo secreto generado',
  'settings.oauth.rotateSecretDoneWarning':
    'Este secreto solo se muestra una vez. Cópielo ahora y actualice su aplicación — todas las sesiones anteriores han sido invalidadas.',
  'settings.oauth.activeSessions': 'Sesiones OAuth activas',
  'settings.oauth.sessionScopes': 'Ámbitos',
  'settings.oauth.sessionExpires': 'Expira',
  'settings.oauth.revoke': 'Revocar',
  'settings.oauth.revokeSession': 'Revocar sesión',
  'settings.oauth.revokeSessionMessage':
    'Esto revocará inmediatamente el acceso de esta sesión OAuth.',
  'settings.oauth.modal.createTitle': 'Registrar cliente OAuth',
  'settings.oauth.modal.presets': 'Ajustes rápidos',
  'settings.oauth.modal.clientName': 'Nombre de la aplicación',
  'settings.oauth.modal.clientNamePlaceholder': 'ej. Claude Web, Mi app MCP',
  'settings.oauth.modal.redirectUris': 'URIs de redirección',
  'settings.oauth.modal.redirectUrisPlaceholder':
    'https://your-app.com/callback\nhttps://your-app.com/auth',
  'settings.oauth.modal.redirectUrisHint':
    'Un URI por línea. HTTPS obligatorio (localhost exento). Coincidencia exacta.',
  'settings.oauth.modal.scopes': 'Ámbitos permitidos',
  'settings.oauth.modal.scopesHint':
    'list_trips y get_trip_summary siempre están disponibles — sin ámbito requerido. Permiten a la IA descubrir los IDs de viaje necesarios.',
  'settings.oauth.modal.selectAll': 'Seleccionar todo',
  'settings.oauth.modal.deselectAll': 'Deseleccionar todo',
  'settings.oauth.modal.creating': 'Registrando…',
  'settings.oauth.modal.create': 'Registrar cliente',
  'settings.oauth.modal.createdTitle': 'Cliente registrado',
  'settings.oauth.modal.createdWarning':
    'El secreto del cliente solo se muestra una vez. Cópielo ahora — no se puede recuperar.',
  'settings.oauth.toast.createError': 'Error al registrar el cliente OAuth',
  'settings.oauth.toast.deleted': 'Cliente OAuth eliminado',
  'settings.oauth.toast.deleteError': 'Error al eliminar el cliente OAuth',
  'settings.oauth.toast.revoked': 'Sesión revocada',
  'settings.oauth.toast.revokeError': 'Error al revocar la sesión',
  'settings.oauth.toast.rotateError': 'Error al renovar el secreto del cliente',
  'settings.oauth.modal.machineClient':
    'Cliente de máquina (sin inicio de sesión en el navegador)',
  'settings.oauth.modal.machineClientHint':
    'Usa el grant client_credentials — sin URIs de redirección. El token se emite directamente vía client_id + client_secret y actúa como tú dentro de los alcances seleccionados.',
  'settings.oauth.modal.machineClientUsage':
    'Obtener token: POST /oauth/token con grant_type=client_credentials, client_id y client_secret. Sin navegador, sin token de actualización.',
  'settings.oauth.badge.machine': 'máquina',
  'settings.account': 'Cuenta',
  'settings.about': 'Acerca de',
  'settings.about.reportBug': 'Reportar un error',
  'settings.about.reportBugHint': 'Encontraste un problema? Avísanos',
  'settings.about.featureRequest': 'Solicitar función',
  'settings.about.featureRequestHint': 'Sugiere una nueva función',
  'settings.about.wikiHint': 'Documentación y guías',
  'settings.about.supporters.badge': 'Patrocinadores Mensuales',
  'settings.about.supporters.title': 'Compañía de viaje para TREK',
  'settings.about.supporters.subtitle':
    'Mientras planeas tu próxima ruta, estas personas ayudan a planear el futuro de TREK. Su aporte mensual va directo al desarrollo y a las horas reales invertidas — para que TREK siga siendo Open Source.',
  'settings.about.supporters.since': 'patrocinador desde {date}',
  'settings.about.supporters.tierEmpty': 'Sé el primero',
  'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket',
  'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP',
  'settings.about.supporter.tier.businessClassDreamer':
    'Business Class Dreamer',
  'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller',
  'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate',
  'settings.about.description':
    'TREK es un planificador de viajes autoalojado que te ayuda a organizar tus viajes desde la primera idea hasta el último recuerdo. Planificación diaria, presupuesto, listas de equipaje, fotos y mucho más — todo en un solo lugar, en tu propio servidor.',
  'settings.about.madeWith': 'Hecho con',
  'settings.about.madeBy':
    'por Maurice y una creciente comunidad de código abierto.',
  'settings.username': 'Usuario',
  'settings.email': 'Correo',
  'settings.role': 'Rol',
  'settings.roleAdmin': 'Administrador',
  'settings.oidcLinked': 'Vinculado con',
  'settings.changePassword': 'Cambiar contraseña',
  'settings.mustChangePassword':
    'Debe cambiar su contraseña antes de continuar. Establezca una nueva contraseña a continuación.',
  'settings.currentPassword': 'Contraseña actual',
  'settings.newPassword': 'Nueva contraseña',
  'settings.confirmPassword': 'Confirmar nueva contraseña',
  'settings.updatePassword': 'Actualizar contraseña',
  'settings.passwordRequired': 'Introduce la contraseña actual y la nueva',
  'settings.passwordTooShort': 'La contraseña debe tener al menos 8 caracteres',
  'settings.passwordMismatch': 'Las contraseñas no coinciden',
  'settings.passwordChanged': 'Contraseña cambiada correctamente',
  'settings.deleteAccount': 'Eliminar cuenta',
  'settings.deleteAccountTitle': '¿Eliminar tu cuenta?',
  'settings.deleteAccountWarning':
    'Tu cuenta y todos tus viajes, lugares y archivos se eliminarán permanentemente. Esta acción no se puede deshacer.',
  'settings.deleteAccountConfirm': 'Eliminar permanentemente',
  'settings.deleteBlockedTitle': 'No es posible eliminarla',
  'settings.deleteBlockedMessage':
    'Eres el único administrador. Asciende a otro usuario a administrador antes de eliminar tu cuenta.',
  'settings.roleUser': 'Usuario',
  'settings.saveProfile': 'Guardar perfil',
  'settings.mfa.title': 'Autenticación de dos factores (2FA)',
  'settings.mfa.description':
    'Añade un segundo paso al iniciar sesión. Usa una app de autenticación (Google Authenticator, Authy, etc.).',
  'settings.mfa.requiredByPolicy':
    'Tu administrador exige autenticación en dos factores. Configura una app de autenticación abajo antes de continuar.',
  'settings.mfa.backupTitle': 'Códigos de respaldo',
  'settings.mfa.backupDescription':
    'Usa estos códigos de un solo uso si pierdes acceso a tu app autenticadora.',
  'settings.mfa.backupWarning':
    'Guárdalos ahora. Cada código solo se puede usar una vez.',
  'settings.mfa.backupCopy': 'Copiar códigos',
  'settings.mfa.backupDownload': 'Descargar TXT',
  'settings.mfa.backupPrint': 'Imprimir / PDF',
  'settings.mfa.backupCopied': 'Códigos de respaldo copiados',
  'settings.mfa.enabled': '2FA está activado en tu cuenta.',
  'settings.mfa.disabled': '2FA no está activado.',
  'settings.mfa.setup': 'Configurar autenticador',
  'settings.mfa.scanQr':
    'Escanea este código QR con tu app o introduce la clave manualmente.',
  'settings.mfa.secretLabel': 'Clave secreta (entrada manual)',
  'settings.mfa.codePlaceholder': 'Código de 6 dígitos',
  'settings.mfa.enable': 'Activar 2FA',
  'settings.mfa.cancelSetup': 'Cancelar',
  'settings.mfa.disableTitle': 'Desactivar 2FA',
  'settings.mfa.disableHint':
    'Introduce tu contraseña y un código actual de tu autenticador.',
  'settings.mfa.disable': 'Desactivar 2FA',
  'settings.mfa.toastEnabled': 'Autenticación de dos factores activada',
  'settings.mfa.toastDisabled': 'Autenticación de dos factores desactivada',
  'settings.mfa.demoBlocked': 'No disponible en modo demo',
  'settings.toast.mapSaved': 'Ajustes del mapa guardados',
  'settings.toast.keysSaved': 'Claves API guardadas',
  'settings.toast.displaySaved': 'Ajustes de visualización guardados',
  'settings.toast.profileSaved': 'Perfil guardado',
  'settings.uploadAvatar': 'Subir foto de perfil',
  'settings.removeAvatar': 'Eliminar foto de perfil',
  'settings.avatarUploaded': 'Foto de perfil actualizada',
  'settings.avatarRemoved': 'Foto de perfil eliminada',
  'settings.avatarError': 'Falló la subida',
  'settings.bookingLabels': 'Etiquetas de rutas de reservas',
  'settings.bookingLabelsHint':
    'Muestra nombres de estaciones / aeropuertos en el mapa. Desactivado, solo se muestra el icono.',
  'settings.currentPasswordRequired': 'La contraseña actual es obligatoria',
  'settings.passwordWeak':
    'La contraseña debe contener mayúsculas, minúsculas, números y un carácter especial',
  'settings.notifyVersionAvailable': 'Nueva versión disponible',
  'settings.notificationPreferences.noChannels':
    'No hay canales de notificación configurados. Pide a un administrador que configure notificaciones por correo o webhook.',
  'settings.webhookUrl.label': 'URL del webhook',
  'settings.webhookUrl.placeholder': 'https://discord.com/api/webhooks/...',
  'settings.webhookUrl.hint':
    'Introduce tu URL de webhook de Discord, Slack o personalizada para recibir notificaciones.',
  'settings.webhookUrl.saved': 'URL del webhook guardada',
  'settings.webhookUrl.test': 'Probar',
  'settings.webhookUrl.testSuccess': 'Webhook de prueba enviado correctamente',
  'settings.webhookUrl.testFailed': 'Error al enviar el webhook de prueba',
  'settings.ntfyUrl.topicLabel': 'Tema de Ntfy',
  'settings.ntfyUrl.topicPlaceholder': 'my-trek-alerts',
  'settings.ntfyUrl.serverLabel': 'URL del servidor Ntfy (opcional)',
  'settings.ntfyUrl.serverPlaceholder': 'https://ntfy.sh',
  'settings.ntfyUrl.hint':
    'Introduce tu tema de Ntfy para recibir notificaciones push. Deja el servidor en blanco para usar el predeterminado configurado por tu administrador.',
  'settings.ntfyUrl.tokenLabel': 'Token de acceso (opcional)',
  'settings.ntfyUrl.tokenHint':
    'Requerido para temas protegidos con contraseña.',
  'settings.ntfyUrl.saved': 'Configuración de Ntfy guardada',
  'settings.ntfyUrl.test': 'Probar',
  'settings.ntfyUrl.testSuccess':
    'Notificación de prueba de Ntfy enviada correctamente',
  'settings.ntfyUrl.testFailed': 'Error en la notificación de prueba de Ntfy',
  'settings.ntfyUrl.tokenCleared': 'Token de acceso eliminado',
  'settings.notificationPreferences.inapp': 'In-App',
  'settings.notificationPreferences.webhook': 'Webhook',
  'settings.notificationPreferences.email': 'Email',
  'settings.notificationPreferences.ntfy': 'Ntfy',
  "settings.currency": "Currency",
  "settings.currencyHint": "All amounts in Costs are converted to and shown in this currency.",
  'settings.passkey.title': 'Passkeys',
  'settings.passkey.description':
    'Inicia sesión más rápido y con protección frente al phishing usando una passkey: tu huella, tu cara, tu PIN o una llave de seguridad física. Tu contraseña sigue disponible como respaldo.',
  'settings.passkey.notConfigured':
    'Las passkeys están habilitadas, pero aún no están del todo configuradas en este servidor. Pide a tu administrador que defina el dominio de WebAuthn.',
  'settings.passkey.add': 'Añadir una passkey',
  'settings.passkey.addTitle': 'Añadir una passkey',
  'settings.passkey.passwordPrompt':
    'Confirma tu contraseña actual y luego sigue las indicaciones de tu dispositivo.',
  'settings.passkey.passwordRequired': 'Se requiere tu contraseña actual.',
  'settings.passkey.namePlaceholder': 'Nombre (opcional, p. ej. "iPhone")',
  'settings.passkey.addedToast': 'Passkey añadida',
  'settings.passkey.added': 'Añadida',
  'settings.passkey.addError': 'No se pudo añadir la passkey',
  'settings.passkey.cancelled': 'Configuración de la passkey cancelada',
  'settings.passkey.deleted': 'Passkey eliminada',
  'settings.passkey.deleteConfirm':
    '¿Eliminar esta passkey? Confírmalo con tu contraseña.',
  'settings.passkey.rename': 'Renombrar',
  'settings.passkey.defaultName': 'Passkey',
  'settings.passkey.synced': 'Sincronizada',
  'settings.passkey.deviceBound': 'Este dispositivo',
  'settings.passkey.lastUsed': 'Último uso',
  'settings.passkey.neverUsed': 'Nunca usada',
  'settings.mapPoiPill': 'Explorar lugares en el mapa',
  'settings.mapPoiPillHint': 'Muestra una píldora de categorías en el mapa del viaje para encontrar restaurantes, alojamientos y más cerca, desde OpenStreetMap.',
  'settings.airtrail.title': 'AirTrail',
  'settings.airtrail.hint': 'Conecta tu AirTrail autoalojado para importar y sincronizar vuelos. Crea una clave de API en AirTrail en Ajustes → Seguridad.',
  'settings.airtrail.url': 'URL de la instancia',
  'settings.airtrail.apiKey': 'Clave de API',
  'settings.airtrail.apiKeyPlaceholder': 'Clave de API Bearer',
  'settings.airtrail.apiKeyHint': 'Generada en AirTrail en Ajustes → Seguridad. Se almacena cifrada.',
  'settings.airtrail.allowInsecureTls': 'Permitir certificados autofirmados',
  'settings.airtrail.allowInsecureTlsHint': 'Actívalo solo para una instancia de confianza en tu propia red.',
  'settings.airtrail.connected': 'Conectado',
  'settings.airtrail.notConnected': 'No conectado',
  'settings.airtrail.toast.saved': 'Conexión con AirTrail guardada',
  'settings.airtrail.toast.saveError': 'No se pudo guardar la conexión',
  'settings.airtrail.test.button': 'Probar conexión',
  'settings.airtrail.test.success': 'Conectado: {count} vuelo(s) encontrado(s)',
  'settings.airtrail.test.failed': 'Error de conexión',
};

export default settings;