import type { TranslationStrings } from '../types'; const settings: TranslationStrings = { 'settings.title': 'Settings', 'settings.subtitle': 'Configure your personal settings', 'settings.tabs.display': 'General', 'settings.tabs.map': 'Map', 'settings.tabs.notifications': 'Notifications', 'settings.tabs.integrations': 'Integrations', 'settings.plugins.oauth.connected': 'Connected', 'settings.plugins.oauth.notConnected': 'Not connected', 'settings.plugins.oauth.connect': 'Connect', 'settings.plugins.oauth.disconnect': 'Disconnect', 'settings.tabs.plugins': 'Plugins', 'settings.plugins.title': 'Plugin settings', 'settings.plugins.subtitle': 'Your personal settings for the plugins you use (API keys, preferences).', 'settings.plugins.empty': 'No plugins are active.', 'settings.plugins.saved': 'Settings saved', 'settings.plugins.requiredMissing': '"{field}" is required', 'settings.pluginActivity.title': 'Plugin activity', 'settings.pluginActivity.description': 'Every action a plugin took on your behalf, newest first.', 'settings.pluginActivity.empty': 'No plugin activity yet.', 'settings.pluginActivity.refresh': 'Refresh', 'settings.pluginActivity.columns.plugin': 'Plugin', 'settings.pluginActivity.columns.action': 'Action', 'settings.pluginActivity.columns.resource': 'Resource', 'settings.pluginActivity.columns.when': 'When', 'settings.pluginActivity.columns.status': 'Result', 'settings.tabs.account': 'Account', 'settings.tabs.offline': 'Offline', 'settings.tabs.about': 'About', 'settings.map': 'Map', 'settings.mapTemplate': 'Map Template', 'settings.mapTemplatePlaceholder.select': 'Select template...', 'settings.mapDefaultHint': 'Leave empty for OpenStreetMap (default)', 'settings.routingBase': 'Own routing engine', 'settings.routingBaseHint': 'An OSRM instance of your own. Empty uses the public servers, which allow about one request a second — enough for a day, tight for a road trip. Takes effect after a server restart.', 'settings.valhallaBase': 'Own Valhalla instance', 'settings.valhallaBaseHint': 'TREK uses the public FOSSGIS Valhalla by default to avoid toll roads, motorways and ferries. Enter your own Valhalla URL here to use it instead. If only a custom routing instance is configured, the public Valhalla is not used. After entering a custom URL, restart the server and reload the page.', 'settings.mapHint': 'URL template for map tiles', 'settings.mapProvider': 'Map Provider', 'settings.mapProviderHint': 'Affects Trip Planner and Journey maps. Atlas always uses Leaflet.', 'settings.mapLeafletSubtitle': 'Classic 2D, any raster tiles', 'settings.mapMapboxSubtitle': 'Vector tiles, 3D buildings & terrain', 'settings.mapMapLibreSubtitle': 'OpenFreeMap vector tiles, no token', 'settings.mapExperimental': 'Experimental', 'settings.mapMapboxToken': 'Mapbox Access Token', 'settings.mapMapboxTokenHint': 'Public token (pk.*) from', 'settings.mapMapboxTokenLink': 'mapbox.com → Access tokens', 'settings.mapCartoKey': 'CARTO API key', 'settings.mapCartoKeyHint': 'CARTO basemaps show a watermark without a key. Free, no account needed, from', 'settings.mapCartoKeyLink': 'carto.com basemap API key', 'settings.mapCartoKeyMissing': 'This template is a CARTO basemap. Without a key CARTO stamps "API KEY REQUIRED" onto every tile. Until you enter one, TREK shows the default basemap instead.', 'settings.mapStyle': 'Map Style', 'settings.mapStylePlaceholder': 'Select a Mapbox style', 'settings.mapStyleHint': 'Preset or your own mapbox://styles/USER/ID URL', 'settings.mapOpenFreeMapStylePlaceholder': 'Select an OpenFreeMap style', 'settings.mapOpenFreeMapStyleHint': 'Preset or OpenFreeMap style URL. OpenFreeMap styles work without a token.', 'settings.map3dBuildings': '3D Buildings & Terrain', 'settings.map3dHint': 'Pitch + real 3D building extrusions — works on every style, including satellite.', 'settings.mapHighQuality': 'High Quality Mode', 'settings.mapHighQualityHint': 'Antialiasing + globe projection for sharper edges and a realistic world view.', 'settings.mapHighQualityWarning': 'May impact performance on lower-end devices.', 'settings.mapTipLabel': 'Tip:', 'settings.mapTip': 'right-click and drag to rotate/pitch the map. Middle-click to add a place (right-click is reserved for rotation).', 'settings.saveMap': 'Save Map', 'settings.apiKeys': 'API Keys', 'settings.mapsKey': 'Google Maps API Key', 'settings.mapsKeyHint': 'For place search. Requires Places API (New). Get at console.cloud.google.com', 'settings.weatherKey': 'OpenWeatherMap API Key', 'settings.weatherKeyHint': 'For weather data. Free at openweathermap.org/api', 'settings.keyPlaceholder': 'Enter key...', 'settings.configured': 'Configured', 'settings.saveKeys': 'Save Keys', 'settings.display': 'Display', 'settings.colorMode': 'Color Mode', 'settings.light': 'Light', 'settings.dark': 'Dark', 'settings.auto': 'Auto', 'settings.language': 'Language', 'settings.temperature': 'Temperature Unit', 'settings.distance': 'Distance Unit', 'settings.timeFormat': 'Time Format', 'settings.weekStart': 'Week starts on', 'settings.weekStartHint': 'First day of the week in every date picker. Vacay has its own setting.', 'settings.preferredNavApp': 'Open places in', 'settings.preferredNavAppAsk': 'Ask every time', 'settings.preferredNavAppHint': 'With an app picked, the navigate button opens it straight away instead of offering every map app.', 'settings.bookingLabels': 'Booking route labels', 'settings.bookingLabelsHint': 'Show station / airport names on the map. When off, only the icon is shown.', 'settings.mapPoiPill': 'Explore places on the map', 'settings.mapPoiPillHint': 'Show a category pill on the trip map to find nearby restaurants, hotels and more from OpenStreetMap.', 'settings.blurBookingCodes': 'Blur Booking Codes', 'settings.aiAlwaysRetry': 'Always retry booking imports with AI', 'settings.aiAlwaysRetryHint': 'When a file cannot be read by the standard parser, automatically retry it with AI.', 'settings.optimizeFromAccommodation': 'Optimize route from accommodation', 'settings.optimizeFromAccommodationHint': 'When optimizing a day, start the route at the hotel you wake up in and end it at the one you check into that evening.', 'settings.notifications': 'Notifications', 'settings.notifyTripInvite': 'Trip invitations', 'settings.notifyBookingChange': 'Booking changes', 'settings.notifyTripReminder': 'Trip reminders', 'settings.notifyTodoDue': 'Todo due soon', 'settings.notifyVacayInvite': 'Vacay fusion invitations', 'settings.notifyVacayShare': 'Vacay calendar shares', 'settings.notifyCollectionInvite': 'Collection invitations', 'settings.notifySynologySessionCleared': 'Synology session cleared', 'settings.notifyPluginNotification': 'Plugin notifications', 'settings.notifyPhotosShared': 'Shared photos (Immich)', 'settings.notifyCollabMessage': 'Chat messages (Collab)', 'settings.notifyPackingTagged': 'Packing list: assignments', 'settings.notifyWebhook': 'Webhook notifications', 'settings.notifyVersionAvailable': 'New version available', 'settings.notifyReplicaFailure': 'Storage replica failure', 'settings.notificationPreferences.email': 'Email', 'settings.notificationPreferences.webhook': 'Webhook', 'settings.notificationPreferences.inapp': 'In-App', 'settings.notificationPreferences.notConfigured': 'Not configured yet — set it up in the plugin’s settings', 'settings.notificationPreferences.lockedByAdmin': 'Turned off for everyone by the admin', 'settings.plugins.actions': 'Actions', 'settings.plugins.actions.confirm': 'Run this action?', 'settings.notificationPreferences.sendTest': 'Send test', 'settings.notificationPreferences.configure': 'Configure', 'settings.notificationPreferences.testSuccess': 'Test notification sent.', 'settings.notificationPreferences.testFailed': 'Test failed.', 'settings.notificationPreferences.pluginConfigured': 'Configured. Manage credentials on the plugin’s settings page.', 'settings.notificationPreferences.ntfy': 'Ntfy', 'settings.notificationPreferences.push': 'Push', 'settings.webPush.title': 'Push notifications on this device', 'settings.webPush.hint': 'Shows TREK notifications on this device even while TREK is closed. Which events arrive follows the Push column.', 'settings.webPush.enable': 'Turn on for this device', 'settings.webPush.disable': 'Turn off for this device', 'settings.webPush.enabled': 'On for this device', 'settings.webPush.unsupported': 'This browser cannot receive push notifications.', 'settings.webPush.insecure': 'Push needs TREK to be opened over HTTPS.', 'settings.webPush.iosInstall': 'On iPhone and iPad, add TREK to the Home Screen first and open it from there.', 'settings.webPush.denied': 'Notifications are blocked for TREK in this browser. Allow them in the browser settings, then try again.', 'settings.webPush.failed': 'Push could not be turned on for this device.', 'settings.notificationPreferences.noChannels': 'No notification channels are configured. Ask an admin to set up email or webhook notifications.', 'settings.webhookUrl.label': 'Webhook URL', 'settings.webhookUrl.placeholder': 'https://discord.com/api/webhooks/...', 'settings.webhookUrl.hint': 'Enter your Discord, Slack, or custom webhook URL to receive notifications.', 'settings.webhookUrl.saved': 'Webhook URL saved', 'settings.webhookUrl.test': 'Test', 'settings.webhookUrl.testSuccess': 'Test webhook sent successfully', 'settings.webhookUrl.testFailed': 'Test webhook failed', 'settings.ntfyUrl.topicLabel': 'Ntfy Topic', 'settings.ntfyUrl.topicPlaceholder': 'my-trek-alerts', 'settings.ntfyUrl.serverLabel': 'Ntfy Server URL (optional)', 'settings.ntfyUrl.serverPlaceholder': 'https://ntfy.sh', 'settings.ntfyUrl.hint': 'Enter your ntfy topic to receive push notifications. Leave server blank to use the default configured by your admin.', 'settings.ntfyUrl.tokenLabel': 'Access Token (optional)', 'settings.ntfyUrl.tokenHint': 'Required for password-protected topics.', 'settings.ntfyUrl.saved': 'Ntfy settings saved', 'settings.ntfyUrl.test': 'Test', 'settings.ntfyUrl.testSuccess': 'Test ntfy notification sent successfully', 'settings.ntfyUrl.testFailed': 'Test ntfy notification failed', 'settings.ntfyUrl.tokenCleared': 'Access token cleared', 'settings.notificationsDisabled': 'Notifications are not configured. Ask an admin to enable email or webhook notifications.', 'settings.notificationsActive': 'Active channel', 'settings.notificationsManagedByAdmin': 'Notification events are configured by your administrator.', 'settings.on': 'On', 'settings.off': 'Off', 'settings.mcp.title': 'MCP Configuration', 'settings.mcp.endpoint': 'MCP Endpoint', 'settings.mcp.clientConfig': 'Client Configuration', 'settings.mcp.clientConfigHint': 'Replace with an API token from the list below. The path to npx may need to be adjusted for your system (e.g. C:\\PROGRA~1\\nodejs\\npx.cmd on Windows).', 'settings.mcp.clientConfigHintOAuth': 'Replace and with the credentials shown in the OAuth 2.1 client you created above. mcp-remote will open your browser to complete the authorization the first time you connect. The path to npx may need to be adjusted for your system (e.g. C:PROGRA~1\nodejs\npx.cmd on Windows).', 'settings.mcp.copy': 'Copy', 'settings.mcp.copied': 'Copied!', 'settings.mcp.apiTokens': 'API Tokens', 'settings.mcp.createToken': 'Create New Token', 'settings.mcp.noTokens': 'No tokens yet. Create one to connect MCP clients.', 'settings.mcp.tokenCreatedAt': 'Created', 'settings.mcp.tokenUsedAt': 'Used', 'settings.mcp.deleteTokenTitle': 'Delete Token', 'settings.mcp.deleteTokenMessage': 'This token will stop working immediately. Any MCP client using it will lose access.', 'settings.mcp.modal.createTitle': 'Create API Token', 'settings.mcp.modal.tokenName': 'Token Name', 'settings.mcp.modal.tokenNamePlaceholder': 'e.g. Claude Desktop, Work laptop', 'settings.mcp.modal.creating': 'Creating…', 'settings.mcp.modal.create': 'Create Token', 'settings.mcp.modal.createdTitle': 'Token Created', 'settings.mcp.modal.createdWarning': 'This token will only be shown once. Copy and store it now — it cannot be recovered.', 'settings.mcp.modal.done': 'Done', 'settings.mcp.toast.created': 'Token created', 'settings.mcp.toast.createError': 'Failed to create token', 'settings.mcp.toast.deleted': 'Token deleted', 'settings.mcp.toast.deleteError': 'Failed to delete token', 'settings.mcp.apiTokensDeprecated': 'API Tokens are deprecated and will be removed in a future release. Please use OAuth 2.1 Clients instead.', 'settings.oauth.clients': 'OAuth 2.1 Clients', 'settings.oauth.clientsHint': 'Register OAuth 2.1 clients to let third-party MCP applications (Claude Web, Cursor, etc.) connect without static tokens.', 'settings.oauth.createClient': 'New Client', 'settings.oauth.noClients': 'No OAuth clients registered.', 'settings.oauth.clientId': 'Client ID', 'settings.oauth.clientSecret': 'Client Secret', 'settings.oauth.deleteClient': 'Delete Client', 'settings.oauth.deleteClientMessage': 'This client and all active sessions will be permanently removed. Any application using it will lose access immediately.', 'settings.oauth.rotateSecret': 'Rotate Secret', 'settings.oauth.rotateSecretMessage': 'A new client secret will be generated and all existing sessions will be invalidated immediately. Update your application before closing this dialog.', 'settings.oauth.rotateSecretConfirm': 'Rotate', 'settings.oauth.rotateSecretConfirming': 'Rotating…', 'settings.oauth.rotateSecretDoneTitle': 'New Secret Generated', 'settings.oauth.rotateSecretDoneWarning': 'This secret is shown only once. Copy it now and update your application — all previous sessions have been invalidated.', 'settings.oauth.activeSessions': 'Active OAuth Sessions', 'settings.oauth.sessionScopes': 'Scopes', 'settings.oauth.sessionExpires': 'Expires', 'settings.oauth.revoke': 'Revoke', 'settings.oauth.revokeSession': 'Revoke Session', 'settings.oauth.revokeSessionMessage': 'This will immediately revoke access for this OAuth session.', 'settings.oauth.modal.createTitle': 'Register OAuth Client', 'settings.oauth.modal.presets': 'Quick presets', 'settings.oauth.modal.clientName': 'Application Name', 'settings.oauth.modal.clientNamePlaceholder': 'e.g. Claude Web, My MCP App', 'settings.oauth.modal.redirectUris': 'Redirect URIs', 'settings.oauth.modal.redirectUrisPlaceholder': 'https://your-app.com/callback\nhttps://your-app.com/auth', 'settings.oauth.modal.redirectUrisHint': 'One URI per line. HTTPS, loopback HTTP, or a private app scheme (myapp://). Matched exactly, except for the port of a loopback URI.', 'settings.oauth.modal.scopes': 'Allowed Scopes', 'settings.oauth.modal.scopesHint': 'list_trips and get_trip_summary are always available — no scope required. They let the AI discover trip IDs needed to use any other tool.', 'settings.oauth.modal.selectAll': 'Select all', 'settings.oauth.modal.deselectAll': 'Deselect all', 'settings.oauth.modal.creating': 'Registering…', 'settings.oauth.modal.create': 'Register Client', 'settings.oauth.modal.createdTitle': 'Client Registered', 'settings.oauth.modal.createdWarning': 'The client secret is shown only once. Copy it now — it cannot be recovered.', 'settings.oauth.toast.createError': 'Failed to register OAuth client', 'settings.oauth.toast.deleted': 'OAuth client deleted', 'settings.oauth.toast.deleteError': 'Failed to delete OAuth client', 'settings.oauth.toast.revoked': 'Session revoked', 'settings.oauth.toast.revokeError': 'Failed to revoke session', 'settings.oauth.toast.rotateError': 'Failed to rotate client secret', 'settings.oauth.modal.machineClient': 'Machine client (no browser login)', 'settings.oauth.modal.machineClientHint': 'Use client_credentials grant — no redirect URIs needed. The token is issued directly via client_id + client_secret and acts as you within the selected scopes.', 'settings.oauth.modal.machineClientUsage': 'Get a token: POST /oauth/token with grant_type=client_credentials, client_id, and client_secret. No browser, no refresh token.', 'settings.oauth.badge.machine': 'machine', 'settings.account': 'Account', 'settings.about': 'About', 'settings.about.reportBug': 'Report a Bug', 'settings.about.reportBugHint': 'Found an issue? Let us know', 'settings.about.featureRequest': 'Feature Request', 'settings.about.featureRequestHint': 'Suggest a new feature', 'settings.about.wikiHint': 'Documentation & guides', 'settings.about.descriptionManaged': 'TREK helps you organize your trips from the first idea to the last memory. Day planning, budget, packing lists, photos and much more — all in one place.', 'settings.about.sourceTitle': 'Source code', 'settings.about.sourceHint': 'TREK is open source, licensed AGPL-3.0', 'settings.about.supporters.badge': 'Monthly Supporters', 'settings.about.supporters.title': 'Travel companions for TREK', 'settings.about.supporters.subtitle': "While you're planning your next route, these folks are helping plan TREK's future. Their monthly contribution goes straight into development and real hours spent — so TREK stays Open Source.", 'settings.about.supporters.since': 'supporter since {date}', 'settings.about.supporters.tierEmpty': 'Be the first', '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 is a self-hosted travel planner that helps you organize your trips from the first idea to the last memory. Day planning, budget, packing lists, photos and much more — all in one place, on your own server.', 'settings.about.madeWith': 'Made with', 'settings.about.madeBy': 'by Maurice and a growing open-source community.', 'settings.username': 'Username', 'settings.email': 'Email', 'settings.role': 'Role', 'settings.roleAdmin': 'Administrator', 'settings.oidcLinked': 'Linked with', 'settings.changePassword': 'Change Password', 'settings.currentPassword': 'Current password', 'settings.currentPasswordRequired': 'Current password is required', 'settings.newPassword': 'New password', 'settings.confirmPassword': 'Confirm new password', 'settings.updatePassword': 'Update password', 'settings.passwordRequired': 'Please enter current and new password', 'settings.passwordTooShort': 'Password must be at least 8 characters', 'settings.passwordMismatch': 'Passwords do not match', 'settings.passwordWeak': 'Password must contain uppercase, lowercase, a number, and a special character', 'settings.passwordCommon': 'This password is too common. Please choose a unique one.', 'settings.passwordRepetitive': 'Password is too repetitive', 'settings.passwordRules': 'Password requirements', 'settings.passwordRule.length': 'At least 8 characters', 'settings.passwordRule.upper': 'An uppercase letter', 'settings.passwordRule.lower': 'A lowercase letter', 'settings.passwordRule.digit': 'A number', 'settings.passwordRule.special': 'A special character', 'settings.passwordChanged': 'Password changed successfully', 'settings.mustChangePassword': 'You must change your password before you can continue. Please set a new password below.', 'settings.deleteAccount': 'Delete account', 'settings.deleteAccountTitle': 'Delete your account?', 'settings.deleteAccountWarning': 'Your account and all your trips, places, and files will be permanently deleted. This action cannot be undone.', 'settings.deleteAccountConfirm': 'Delete permanently', 'settings.deleteBlockedTitle': 'Deletion not possible', 'settings.deleteBlockedMessage': 'You are the only administrator. Promote another user to admin before deleting your account.', 'settings.roleUser': 'User', 'settings.saveProfile': 'Save Profile', 'settings.toast.mapSaved': 'Map settings saved', 'settings.toast.keysSaved': 'API keys saved', 'settings.toast.displaySaved': 'Display settings saved', 'settings.toast.profileSaved': 'Profile saved', 'settings.uploadAvatar': 'Upload Profile Picture', 'settings.removeAvatar': 'Remove Profile Picture', 'settings.avatarUploaded': 'Profile picture updated', 'settings.avatarRemoved': 'Profile picture removed', 'settings.avatarError': 'Upload failed', 'settings.avatarRemoveError': 'Removal failed', 'settings.mfa.title': 'Two-factor authentication (2FA)', 'settings.mfa.description': 'Adds a second step when you sign in with email and password. Use an authenticator app (Google Authenticator, Authy, etc.).', 'settings.mfa.requiredByPolicy': 'Your administrator requires two-factor authentication. Set up an authenticator app below before continuing.', 'settings.mfa.backupTitle': 'Backup codes', 'settings.mfa.backupDescription': 'Use these one-time backup codes if you lose access to your authenticator app.', 'settings.mfa.backupWarning': 'Save these codes now. Each code can only be used once.', 'settings.mfa.backupCopy': 'Copy codes', 'settings.mfa.backupDownload': 'Download TXT', 'settings.mfa.backupPrint': 'Print / PDF', 'settings.mfa.backupCopied': 'Backup codes copied', 'settings.mfa.enabled': '2FA is enabled on your account.', 'settings.mfa.disabled': '2FA is not enabled.', 'settings.mfa.setup': 'Set up authenticator', 'settings.mfa.scanQr': 'Scan this QR code with your app, or enter the secret manually.', 'settings.mfa.secretLabel': 'Secret key (manual entry)', 'settings.mfa.codePlaceholder': '6-digit code', 'settings.mfa.enable': 'Enable 2FA', 'settings.mfa.cancelSetup': 'Cancel', 'settings.mfa.disableTitle': 'Disable 2FA', 'settings.mfa.disableHint': 'Enter your account password and a current authenticator code or an unused backup code.', 'settings.mfa.disable': 'Disable 2FA', 'settings.mfa.toastEnabled': 'Two-factor authentication enabled', 'settings.mfa.toastDisabled': 'Two-factor authentication disabled', 'settings.mfa.demoBlocked': 'Not available in demo mode', 'settings.currency': 'Display currency', 'settings.currencyHint': 'Amounts in Costs are shown converted to this currency for display only — the original amounts are unchanged.', 'settings.currencyTrip': 'Trip currency', 'settings.placeLanguage': 'Place names', 'settings.placeLanguageApp': 'Same as the app', 'settings.placeLanguageHint': 'The language place search, suggestions and addresses answer in. Where a place has no name in that language, its local name is shown.', 'settings.passkey.title': 'Passkeys', 'settings.passkey.description': 'Sign in faster and phishing-resistant with a passkey — your fingerprint, face, PIN, or a hardware key. Your password stays as a backup.', 'settings.passkey.notConfigured': 'Passkeys are enabled but not fully configured on this server yet. Ask your administrator to set the WebAuthn domain.', 'settings.passkey.add': 'Add a passkey', 'settings.passkey.addTitle': 'Add a passkey', 'settings.passkey.passwordPrompt': 'Confirm your current password, then follow your device prompt.', 'settings.passkey.passwordRequired': 'Your current password is required.', 'settings.passkey.namePlaceholder': 'Name (optional, e.g. "iPhone")', 'settings.passkey.addedToast': 'Passkey added', 'settings.passkey.added': 'Added', 'settings.passkey.addError': 'Could not add passkey', 'settings.passkey.cancelled': 'Passkey setup cancelled', 'settings.passkey.deleted': 'Passkey removed', 'settings.passkey.deleteConfirm': 'Remove this passkey? Confirm with your password.', 'settings.passkey.rename': 'Rename', 'settings.passkey.defaultName': 'Passkey', 'settings.passkey.synced': 'Synced', 'settings.passkey.deviceBound': 'This device', 'settings.passkey.lastUsed': 'Last used', 'settings.passkey.neverUsed': 'Never used', 'settings.airtrail.title': 'AirTrail', 'settings.airtrail.hint': 'Connect your AirTrail instance to import and sync flights. Create an API key in AirTrail under Settings → Security.', 'settings.airtrail.url': 'Instance URL', 'settings.airtrail.apiKey': 'API key', 'settings.airtrail.apiKeyPlaceholder': 'Bearer API key', 'settings.airtrail.apiKeyHint': 'Generated in AirTrail under Settings → Security. Stored encrypted.', 'settings.airtrail.allowInsecureTls': 'Allow self-signed certificates', 'settings.airtrail.allowInsecureTlsHint': 'Enable only for a trusted instance on your own network.', 'settings.airtrail.writeBack': 'Write changes back to AirTrail', 'settings.airtrail.writeBackHint': 'Off by default: AirTrail is the source of truth and TREK only reads from it. Turn on to push edits made in TREK back to AirTrail.', 'settings.airtrail.connected': 'Connected', 'settings.airtrail.notConnected': 'Not connected', 'settings.airtrail.toast.saved': 'AirTrail connection saved', 'settings.airtrail.toast.saveError': 'Could not save the connection', 'settings.airtrail.test.button': 'Test connection', 'settings.airtrail.test.success': 'Connected. {count} flights found', 'settings.airtrail.test.success.one': 'Connected. {count} flight found', 'settings.airtrail.test.failed': 'Connection failed', 'settings.aiParsing.title': 'AI parsing', 'settings.aiParsing.hint': 'Choose the AI model used to extract bookings from uploaded files. This applies only when your administrator has not configured a model for the whole instance.', 'settings.aiParsing.provider': 'Provider', 'settings.aiParsing.providerLocal': 'Local (Ollama)', 'settings.aiParsing.providerOpenai': 'OpenAI', 'settings.aiParsing.providerAnthropic': 'Anthropic', 'settings.aiParsing.localAdminOnly': 'A local (Ollama) endpoint is set up once for the whole instance in the admin settings. You can still use your own OpenAI or Anthropic key here.', 'settings.aiParsing.model': 'Model', 'settings.aiParsing.baseUrl': 'Base URL', 'settings.aiParsing.baseUrlHint': 'Where the model runs — a local Ollama server or an OpenAI-compatible endpoint.', 'settings.aiParsing.apiKey': 'API key', 'settings.aiParsing.apiKeyHint': 'Stored encrypted. Leave blank to keep the current key.', 'settings.aiParsing.multimodal': 'Model reads images', 'settings.aiParsing.multimodalHint': 'Turn on for a model that reads images, so a photo can be imported or scanned.', 'settings.aiParsing.toast.saved': 'AI settings saved', 'settings.aiParsing.toast.saveError': 'Could not save AI settings', 'settings.tabs.appearance': 'Appearance', 'settings.appearance.theme': 'Theme', 'settings.appearance.scheme': 'Color scheme', 'settings.appearance.scheme.default': 'Default', 'settings.appearance.scheme.highContrast': 'High contrast', 'settings.appearance.scheme.indigo': 'Indigo', 'settings.appearance.scheme.teal': 'Teal', 'settings.appearance.scheme.rose': 'Rose', 'settings.appearance.scheme.amber': 'Amber', 'settings.appearance.scheme.violet': 'Violet', 'settings.appearance.scheme.custom': 'Custom', 'settings.appearance.customAccent': 'Custom accent', 'settings.appearance.contrastOk': 'Good contrast', 'settings.appearance.contrastLow': 'Low contrast', 'settings.appearance.readability': 'Readability', 'settings.appearance.transparency': 'Transparency', 'settings.appearance.transparencyHint': 'Glassy translucent surfaces. Turn off for solid, higher-contrast backgrounds.', 'settings.appearance.reduceMotion': 'Reduce motion', 'settings.appearance.reduceMotionHint': 'Minimize animations and transitions.', 'settings.appearance.density': 'Density', 'settings.appearance.comfortable': 'Comfortable', 'settings.appearance.compact': 'Compact', 'settings.appearance.textSize': 'Text size', 'settings.appearance.advancedTextSizes': 'Advanced text sizes', 'settings.appearance.hideAdvanced': 'Hide advanced', 'settings.appearance.tier.title': 'Titles', 'settings.appearance.tier.subtitle': 'Subtitles', 'settings.appearance.tier.body': 'Body', 'settings.appearance.tier.caption': 'Captions', 'settings.appearance.dashboardWidgets': 'Dashboard widgets', 'settings.appearance.dashboardWidgetsHint': 'Show or hide dashboard widgets independently on desktop and mobile.', 'settings.appearance.desktop': 'Desktop', 'settings.appearance.mobile': 'Mobile', 'settings.appearance.widget.sidebar': 'Right sidebar', 'settings.appearance.widget.currency': 'Currency', 'settings.appearance.widget.collections': 'Collections', 'settings.appearance.widget.timezones': 'Timezones', 'settings.appearance.widget.upcomingReservations': 'Upcoming reservations', 'settings.appearance.widget.atlas': 'Atlas / countries', 'settings.appearance.widget.tripsTotal': 'Trips total', 'settings.appearance.widget.daysTraveled': 'Days traveled', 'settings.appearance.widget.distanceFlown': 'Distance flown', 'settings.appearance.reset': 'Reset to defaults', 'settings.appearance.group.belowHero': 'Below the hero', 'settings.appearance.group.bottomOfPage': 'Bottom of page', 'settings.appearance.sidebarHint': 'The whole right column. Turn off and the dashboard centers.', 'settings.appearance.densityHint': 'Compact tightens spacing and padding for a denser layout that fits more on screen.', 'settings.appearance.textSizeAll': 'Everything', 'settings.appearance.perSize': 'Adjust each size separately', 'settings.appearance.size.large': 'Large', 'settings.appearance.size.medium': 'Medium', 'settings.appearance.size.normal': 'Normal', 'settings.appearance.size.small': 'Small', 'settings.appearance.preview.large': 'Large heading', 'settings.appearance.preview.medium': 'Medium subtitle', 'settings.appearance.preview.normal': 'Normal body text', 'settings.appearance.preview.small': 'Small caption / address', 'settings.appearance.example.large': 'Headings, big numbers', 'settings.appearance.example.medium': 'Sub-headings', 'settings.appearance.example.normal': 'Place names, descriptions', 'settings.appearance.example.small': 'Addresses, labels', 'settings.appearance.experimental': 'Experimental', 'settings.appearance.mobileNav': 'Bottom navbar', 'settings.appearance.mobileNav.hint': 'Choose which items appear in the bar and which sit under “More”. Dashboard always stays first.', 'settings.appearance.mobileNav.inBar': 'In the bar', 'settings.appearance.mobileNav.underMore': 'Under “More”', 'settings.appearance.mobileNav.moreEmpty': 'Nothing here yet — everything fits in the bar.', 'settings.appearance.mobileNav.pinned': 'Pinned', 'settings.appearance.mobileNav.toMore': 'Move under “More”', 'settings.appearance.mobileNav.toBar': 'Move into the bar', 'settings.appearance.dashOrder': 'Dashboard order', 'settings.appearance.dashOrder.hint': 'Reorder how the trip list and widgets stack on your phone dashboard. The featured trip always stays on top.', 'settings.appearance.dashOrder.trips': 'Trips', 'settings.appearance.dashOrder.hidden': 'Hidden', 'settings.general.languageRegion': 'Language & region', 'settings.general.travelMap': 'Travel & map', 'settings.general.startup': 'Startup', 'settings.dayDateFirst': 'Date first in day headings', 'settings.compactUnplanned': 'Compact markers for unplanned places', 'settings.compactUnplannedHint': 'Places not planned into any day show as small markers without a photo, so the planned stops stand out.', 'settings.dayDateFirstHint': 'Lead each day with its calendar date and show "Day 1" or the day\'s own title next to it.', 'settings.startPage': 'Start page', 'settings.startPageDashboard': 'Dashboard', 'settings.startPageActiveTrip': 'Active trip', 'settings.startPageHint': 'TREK opens straight in the trip running today, or the next one coming up. That is the same trip the dashboard features.', 'settings.startTripTab': 'Start tab', 'settings.startTripTabHint': 'The tab the trip opens on. If it belongs to an addon you switched off, the plan view opens instead.', // ── Offline (#1135) ──────────────────────────────────────────────────────── 'settings.offline.cache.title': 'Offline cache', 'settings.offline.mode.title': 'Offline mode', 'settings.offline.mode.force': 'Force offline mode', 'settings.offline.mode.forceHint': 'Work from cached data only and queue your changes. Turn off to reconnect and sync.', 'settings.offline.mode.active': 'Offline mode is on — your changes are queued and will sync when you turn it off.', 'settings.offline.prepare.title': 'Prepare for offline', 'settings.offline.prepare.hint': 'Download everything you need — trip data, documents and map tiles — before you lose connection.', 'settings.offline.prepare.button': 'Download for offline use', 'settings.offline.prepare.running': 'Downloading…', 'settings.offline.prepare.done': 'Ready for offline use', 'settings.offline.prepare.phase.trips': 'Trip data', 'settings.offline.prepare.phase.files': 'Documents', 'settings.offline.prepare.phase.tiles': 'Map tiles', 'settings.offline.resync': 'Re-sync now', 'settings.offline.resyncing': 'Syncing…', 'settings.offline.storage.title': 'What to store offline', 'settings.offline.storage.tiles': 'Store map tiles offline', 'settings.offline.storage.tilesHint': 'Map tiles use the most storage. Turn this off to keep only trip data and documents offline.', 'settings.offline.storage.tripsTitle': 'Trips', 'settings.offline.storage.tripOn': 'Stored offline', 'settings.offline.storage.tripOff': 'Not stored', 'settings.offline.storage.tripFinished': 'Finished. Only stored if you switch it on.', 'settings.offline.notice.stored': 'Stored {count} trips on this device', 'settings.offline.notice.stored.one': 'Stored {count} trip on this device', 'settings.offline.notice.nothing': 'Nothing to store. Switch on the trips you want to keep.', 'settings.offline.notice.busy': 'A sync is already running. Try again in a moment.', 'settings.offline.notice.offline': 'No connection. Connect to store trips for offline use.', 'settings.offline.notice.signedOut': 'Your session has ended. Sign in again to sync.', 'settings.offline.notice.failed': 'The download could not finish. Check your connection and try again.', 'settings.offline.notice.loadFailed': 'Could not read this device’s offline storage. Clearing the cache usually fixes it.', 'settings.offline.clear': 'Clear cache', 'settings.offline.clearConfirm': 'Clear all offline trip data? You can re-sync anytime while online.', 'settings.offline.stats.trips': 'Cached trips', 'settings.offline.stats.pending': 'Pending changes', 'settings.offline.stats.failed': 'Failed changes', 'settings.offline.failed.hint': "These changes never reached the server. Try them again, or discard them to keep the server's version.", 'settings.offline.failed.retry': 'Try again', 'settings.offline.failed.discard': 'Discard', 'settings.offline.stats.conflicts': 'Conflicts', 'settings.offline.empty': 'No trips cached yet. Connect to the internet to sync.', 'settings.offline.loading': 'Loading…', 'settings.offline.conflicts.title': 'Sync conflicts', 'settings.offline.conflicts.hint': 'Changes you made offline clash with newer changes on the server. Choose which version to keep.', 'settings.offline.conflicts.keepMine': 'Keep mine', 'settings.offline.conflicts.keepServer': 'Keep theirs', 'settings.offline.conflicts.mine': 'Your version', 'settings.offline.conflicts.server': 'Server version', 'settings.offline.conflicts.item': 'Change to “{name}”', 'settings.offline.conflicts.strategyTitle': 'When a conflict happens', 'settings.offline.conflicts.strategy.ask': 'Ask me each time', 'settings.offline.conflicts.strategy.mine': 'Always keep my version', 'settings.offline.conflicts.strategy.server': 'Always keep the server version', 'settings.offline.banner.offline': 'Offline', 'settings.offline.banner.forced': 'Offline mode', 'settings.offline.banner.queued': 'Offline · {count} queued', 'settings.offline.banner.queued.one': 'Offline · {count} queued', 'settings.offline.banner.syncing': 'Syncing {count}…', 'settings.offline.banner.syncing.one': 'Syncing {count}…', 'settings.offline.banner.failed': 'Failed to sync: {count}', 'settings.offline.banner.failed.one': 'Failed to sync: {count}', 'settings.offline.banner.conflicts': 'Conflicts: {count}', 'settings.offline.banner.conflicts.one': 'Conflicts: {count}', 'settings.alwaysShowRoutes': 'Always show booking routes', 'settings.alwaysShowRoutesHint': 'Automatically draw the route for every flight, train and other booking on the map — no need to switch it on per item.', // Public API keys (Settings -> Integrations) // ── API keys: what a key may read ───────────────────────────────────────── 'settings.apiScopes.title': 'What this key may read', 'settings.apiScopes.hint': 'Leave everything on for a key that should see all of it. Anything you switch off is refused for this key, not just left out of the answer.', 'settings.apiScopes.all': 'Everything', 'settings.apiScopes.noneSelected': 'Pick at least one area, or the key could not read anything.', 'settings.apiScopes.limited': '{count} of {total}', 'settings.apiScopes.limited.one': '{count} of {total}', 'settings.apiScopes.trips': 'Trips', 'settings.apiScopes.days': 'Days', 'settings.apiScopes.places': 'Places', 'settings.apiScopes.notes': 'Day notes', 'settings.apiScopes.reservations': 'Bookings', 'settings.apiScopes.accommodations': 'Accommodation', 'settings.apiScopes.travellers': 'Who is coming', 'settings.apiScopes.bucket-list': 'Wishlist', 'settings.apiScopes.stats': 'Totals', 'settings.apiKeys.title': 'API Keys', 'settings.apiKeys.description': 'Keys for the public API, so other software can read your trips. Read-only: a key cannot change or delete anything.', 'settings.apiKeys.create': 'Create key', 'settings.apiKeys.empty': 'No keys yet. Create one to connect other software.', 'settings.apiKeys.createdAt': 'created', 'settings.apiKeys.usedAt': 'last used', 'settings.apiKeys.deleteTitle': 'Delete key', 'settings.apiKeys.deleteMessage': 'Anything using this key stops working immediately. This cannot be undone.', 'settings.apiKeys.deleted': 'Key deleted', 'settings.apiKeys.deleteFailed': 'Could not delete the key', 'settings.apiKeys.createFailed': 'Could not create the key', 'settings.apiKeys.copy': 'Copy', 'settings.apiKeys.docsHint': 'Send the key as "Authorization: Bearer ..." or "X-API-Key: ..." to /api/v1.', 'settings.apiKeys.endpoint': 'Endpoint', 'settings.apiKeys.neverUsed': 'never used', 'settings.apiKeys.loadFailed': 'Could not load your keys. Reload the page to try again.', 'settings.apiKeys.limitReached': 'You have {count} keys, the most an account can hold. Delete one you no longer use to create another.', 'settings.apiKeys.limitReached.one': 'You have {count} key, the most an account can hold. Delete it if you no longer use it to create another.', 'settings.apiKeys.copyFailed': 'Could not copy. Select the text and copy it by hand.', 'settings.apiKeys.modal.createTitle': 'Create API key', 'settings.apiKeys.modal.name': 'Name', 'settings.apiKeys.modal.namePlaceholder': 'e.g. Dawarich', 'settings.apiKeys.modal.nameHint': 'Only for you, so you recognise the key later.', 'settings.apiKeys.modal.creating': 'Creating...', 'settings.apiKeys.modal.create': 'Create', 'settings.apiKeys.modal.createdTitle': 'API key created', 'settings.apiKeys.modal.createdWarning': 'Copy the key now. It is shown once and cannot be retrieved later.', 'settings.apiKeys.modal.done': 'Done', }; export default settings;