mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-23 23:46:35 +00:00
581 lines
48 KiB
TypeScript
581 lines
48 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
||
|
||
const settings: TranslationStrings = {
|
||
'settings.title': 'Налаштування',
|
||
'settings.subtitle': 'Налаштуйте свої персональні параметри',
|
||
'settings.tabs.display': 'Відображення',
|
||
'settings.tabs.map': 'Карта',
|
||
'settings.tabs.notifications': 'Сповіщення',
|
||
'settings.tabs.integrations': 'Інтеграції',
|
||
'settings.plugins.oauth.connected': 'Підключено',
|
||
'settings.plugins.oauth.notConnected': 'Не підключено',
|
||
'settings.plugins.oauth.connect': 'Підключити',
|
||
'settings.plugins.oauth.disconnect': 'Відключити',
|
||
'settings.tabs.plugins': 'Плагіни',
|
||
'settings.plugins.title': 'Налаштування плагінів',
|
||
'settings.plugins.subtitle':
|
||
'Ваші особисті налаштування для плагінів, які ви використовуєте (ключі API, уподобання).',
|
||
'settings.plugins.empty': 'Немає активних плагінів.',
|
||
'settings.plugins.saved': 'Налаштування збережено',
|
||
'settings.plugins.requiredMissing': '«{field}» обов’язкове',
|
||
'settings.tabs.account': 'Обліковий запис',
|
||
'settings.tabs.offline': 'Офлайн',
|
||
'settings.tabs.about': 'Про застосунок',
|
||
'settings.map': 'Карта',
|
||
'settings.mapTemplate': 'Шаблон карти',
|
||
'settings.mapTemplatePlaceholder.select': 'Виберіть шаблон...',
|
||
'settings.mapDefaultHint': 'Залиште порожнім для OpenStreetMap (за замовчуванням)',
|
||
'settings.routingBase': 'Власний сервер маршрутів',
|
||
'settings.routingBaseHint': 'Власний примірник OSRM. Порожньо — використовуються публічні сервери з обмеженням близько одного запиту на секунду: на день вистачає, для автоподорожі мало. Діє після перезапуску сервера.',
|
||
'settings.valhallaBase': 'Власний сервер Valhalla',
|
||
'settings.valhallaBaseHint':
|
||
'За замовчуванням TREK використовує публічну Valhalla FOSSGIS для уникнення платних доріг, автомагістралей і поромів. Введіть тут URL власної Valhalla, щоб використовувати її замість публічної. Якщо налаштовано лише власний сервер маршрутизації, публічна Valhalla не використовується. Після введення власного URL перезапустіть сервер і оновіть сторінку.',
|
||
'settings.mapHint': 'URL-шаблон для тайлів карти',
|
||
'settings.mapProvider': 'Провайдер карти',
|
||
'settings.mapProviderHint': 'Застосовується до Trip Planner та Journey. Atlas завжди використовує Leaflet.',
|
||
'settings.mapLeafletSubtitle': 'Класичні 2D, будь-які растрові тайли',
|
||
'settings.mapMapboxSubtitle': 'Векторні тайли, 3D-будинки та рельєф',
|
||
'settings.mapMapLibreSubtitle': 'Векторні тайли OpenFreeMap, без токена',
|
||
'settings.mapExperimental': 'Експериментально',
|
||
'settings.mapMapboxToken': 'Токен доступу Mapbox',
|
||
'settings.mapMapboxTokenHint': 'Публічний токен (pk.*) з',
|
||
'settings.mapMapboxTokenLink': 'mapbox.com → Токени доступу',
|
||
'settings.mapCartoKey': 'Ключ API CARTO',
|
||
'settings.mapCartoKeyHint':
|
||
'Без ключа базові карти CARTO показують водяний знак. Безкоштовно та без облікового запису, на',
|
||
'settings.mapCartoKeyLink': 'ключ API базових карт carto.com',
|
||
'settings.mapCartoKeyMissing':
|
||
'Цей шаблон є базовою картою CARTO. Без ключа CARTO наносить "API KEY REQUIRED" на кожен тайл. Доки ключ не вказано, TREK показує базову карту за замовчуванням.',
|
||
'settings.mapStyle': 'Стиль карти',
|
||
'settings.mapStylePlaceholder': 'Виберіть стиль Mapbox',
|
||
'settings.mapStyleHint': 'Preset або власний URL mapbox://styles/USER/ID',
|
||
'settings.mapOpenFreeMapStylePlaceholder': 'Виберіть стиль OpenFreeMap',
|
||
'settings.mapOpenFreeMapStyleHint': 'Preset або URL стилю OpenFreeMap. Стилі OpenFreeMap працюють без токена.',
|
||
'settings.map3dBuildings': '3D-будинки та рельєф',
|
||
'settings.map3dHint': 'Нахил + справжні 3D-будинки — працює з усіма стилями, включаючи супутник.',
|
||
'settings.mapHighQuality': 'Режим високої якості',
|
||
'settings.mapHighQualityHint':
|
||
'Згладжування + проекція глобуса для більш чітких країв та реалістичного вигляду світу.',
|
||
'settings.mapHighQualityWarning': 'Може вплинути на продуктивність на слабких пристроях.',
|
||
'settings.mapTipLabel': 'Порада:',
|
||
'settings.mapTip':
|
||
'Затисніть праву кнопку миші та перетягніть, щоб повернути/нахилити карту. Клік середньою кнопкою — додати місце (права кнопка зарезервована для обертання).',
|
||
'settings.saveMap': 'Зберегти карту',
|
||
'settings.apiKeys': 'API-ключі',
|
||
'settings.mapsKey': 'API-ключ Google Maps',
|
||
'settings.mapsKeyHint': 'Для пошуку місць. Потрібен Places API (New). Отримайте на console.cloud.google.com',
|
||
'settings.weatherKey': 'API-ключ OpenWeatherMap',
|
||
'settings.weatherKeyHint': 'Для даних про погоду. Безкоштовно на openweathermap.org/api',
|
||
'settings.keyPlaceholder': 'Введіть ключ...',
|
||
'settings.configured': 'Налаштовано',
|
||
'settings.saveKeys': 'Зберегти ключі',
|
||
'settings.display': 'Відображення',
|
||
'settings.colorMode': 'Кольорова схема',
|
||
'settings.light': 'Світла',
|
||
'settings.dark': 'Темна',
|
||
'settings.auto': 'Авто',
|
||
'settings.language': 'Мова',
|
||
'settings.temperature': 'Одиниця температури',
|
||
'settings.distance': 'Одиниця відстані',
|
||
'settings.timeFormat': 'Формат часу',
|
||
'settings.blurBookingCodes': 'Приховати коди бронювання',
|
||
'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': 'Оптимізувати маршрут від житла',
|
||
'settings.optimizeFromAccommodationHint':
|
||
'Під час оптимізації дня починайте маршрут від готелю, у якому ви прокидаєтеся, і завершуйте його тим, у який ви заселяєтеся ввечері.',
|
||
'settings.notifications': 'Сповіщення',
|
||
'settings.notifyTripInvite': 'Запрошення до поїздки',
|
||
'settings.notifyBookingChange': 'Зміни бронювань',
|
||
'settings.notifyTripReminder': 'Нагадування про поїздку',
|
||
'settings.notifyTodoDue': 'Завдання до терміну',
|
||
'settings.notifyVacayInvite': "Запрошення об'єднання Vacay",
|
||
'settings.notifyVacayShare': 'Спільний доступ до календарів Vacay',
|
||
'settings.notifyCollectionInvite': 'Запрошення до колекцій',
|
||
'settings.notifySynologySessionCleared': 'Сеанс Synology скинуто',
|
||
'settings.notifyPluginNotification': 'Сповіщення плагінів',
|
||
'settings.notifyPhotosShared': 'Спільні фото (Immich)',
|
||
'settings.notifyCollabMessage': 'Повідомлення чату (Collab)',
|
||
'settings.notifyPackingTagged': 'Список речей: призначення',
|
||
'settings.notifyWebhook': 'Webhook-сповіщення',
|
||
'settings.notificationsDisabled':
|
||
'Сповіщення не налаштовані. Попросіть адміністратора ввімкнути сповіщення електронною поштою або webhook.',
|
||
'settings.notificationsActive': 'Активний канал',
|
||
'settings.notificationsManagedByAdmin': 'Події сповіщень налаштовуються адміністратором.',
|
||
'settings.on': 'Увімк.',
|
||
'settings.off': 'Вимк.',
|
||
'settings.mcp.title': 'Налаштування MCP',
|
||
'settings.mcp.endpoint': 'MCP-ендпоінт',
|
||
'settings.mcp.clientConfig': 'Конфігурація клієнта',
|
||
'settings.mcp.clientConfigHint':
|
||
'Замініть <your_token> на API-токен зі списку нижче. Шлях до npx може потребувати налаштування для вашої системи (наприклад, C:\\PROGRA~1\\nodejs\\npx.cmd у Windows).',
|
||
'settings.mcp.clientConfigHintOAuth':
|
||
'Замініть <your_client_id> і <your_client_secret> на облікові дані з вищезазначеного клієнта OAuth 2.1. При першому підключенні mcp-remote відкриє браузер для завершення авторизації. Шлях до npx може потребувати налаштування для вашої системи (наприклад, C:\\PROGRA~1\\nodejs\\npx.cmd у Windows).',
|
||
'settings.mcp.copy': 'Копіювати',
|
||
'settings.mcp.copied': 'Скопійовано!',
|
||
'settings.mcp.apiTokens': 'API-токени',
|
||
'settings.mcp.createToken': 'Створити токен',
|
||
'settings.mcp.noTokens': 'Токенів поки немає. Створіть один для підключення MCP-клієнтів.',
|
||
'settings.mcp.tokenCreatedAt': 'Створено',
|
||
'settings.mcp.tokenUsedAt': 'Використано',
|
||
'settings.mcp.deleteTokenTitle': 'Видалити токен',
|
||
'settings.mcp.deleteTokenMessage':
|
||
'Цей токен перестане працювати одразу. Будь-який MCP-клієнт, що його використовує, втратить доступ.',
|
||
'settings.mcp.modal.createTitle': 'Створити API-токен',
|
||
'settings.mcp.modal.tokenName': 'Назва токена',
|
||
'settings.mcp.modal.tokenNamePlaceholder': 'наприклад Claude Desktop, Робочий ноутбук',
|
||
'settings.mcp.modal.creating': 'Створення…',
|
||
'settings.mcp.modal.create': 'Створити токен',
|
||
'settings.mcp.modal.createdTitle': 'Токен створено',
|
||
'settings.mcp.modal.createdWarning':
|
||
'Цей токен буде показано лише один раз. Скопіюйте і збережіть його зараз — відновити його не можна.',
|
||
'settings.mcp.modal.done': 'Готово',
|
||
'settings.mcp.toast.created': 'Токен створено',
|
||
'settings.mcp.toast.createError': 'Не вдалося створити токен',
|
||
'settings.mcp.toast.deleted': 'Токен видалено',
|
||
'settings.mcp.toast.deleteError': 'Не вдалося видалити токен',
|
||
'settings.mcp.apiTokensDeprecated':
|
||
'API-токени застаріли і будуть видалені в наступній версії. Будь ласка, використовуйте клієнти OAuth 2.1.',
|
||
'settings.oauth.clients': 'Клієнти OAuth 2.1',
|
||
'settings.oauth.clientsHint':
|
||
'Зареєструйте клієнтів OAuth 2.1, щоб сторонні MCP-застосунки (Claude Web, Cursor тощо) могли підключатися без статичних токенів.',
|
||
'settings.oauth.createClient': 'Новий клієнт',
|
||
'settings.oauth.noClients': 'Немає зареєстрованих клієнтів OAuth.',
|
||
'settings.oauth.clientId': 'ID клієнта',
|
||
'settings.oauth.clientSecret': 'Секрет клієнта',
|
||
'settings.oauth.deleteClient': 'Видалити клієнта',
|
||
'settings.oauth.deleteClientMessage':
|
||
'Цей клієнт і всі активні сесії будуть видалені назавжди. Будь-який застосунок, що його використовує, одразу втратить доступ.',
|
||
'settings.oauth.rotateSecret': 'Оновити секрет',
|
||
'settings.oauth.rotateSecretMessage':
|
||
'Буде згенеровано новий секрет клієнта, а всі існуючі сесії будуть негайно анульовані. Оновіть застосунок перед закриттям цього діалогу.',
|
||
'settings.oauth.rotateSecretConfirm': 'Оновити',
|
||
'settings.oauth.rotateSecretConfirming': 'Оновлення…',
|
||
'settings.oauth.rotateSecretDoneTitle': 'Новий секрет згенеровано',
|
||
'settings.oauth.rotateSecretDoneWarning':
|
||
'Цей секрет відображається лише один раз. Скопіюйте його зараз і оновіть застосунок — всі попередні сесії були анульовані.',
|
||
'settings.oauth.activeSessions': 'Активні сесії OAuth',
|
||
'settings.oauth.sessionScopes': 'Області доступу',
|
||
'settings.oauth.sessionExpires': 'Закінчується',
|
||
'settings.oauth.revoke': 'Відкликати',
|
||
'settings.oauth.revokeSession': 'Відкликати сесію',
|
||
'settings.oauth.revokeSessionMessage': 'Це негайно відкличе доступ для даної сесії OAuth.',
|
||
'settings.oauth.modal.createTitle': 'Зареєструвати клієнта OAuth',
|
||
'settings.oauth.modal.presets': 'Швидкі налаштування',
|
||
'settings.oauth.modal.clientName': 'Назва застосунку',
|
||
'settings.oauth.modal.clientNamePlaceholder': 'напр. Claude Web, Мій MCP-застосунок',
|
||
'settings.oauth.modal.redirectUris': 'URI перенаправлення',
|
||
'settings.oauth.modal.redirectUrisPlaceholder': 'https://your-app.com/callback\nhttps://your-app.com/auth',
|
||
'settings.oauth.modal.redirectUrisHint':
|
||
'Один URI на рядок. HTTPS, локальний HTTP або власна схема застосунку (myapp://). Потрібне точне співпадіння, окрім порту локального URI.',
|
||
'settings.oauth.modal.scopes': 'Дозволені області доступу',
|
||
'settings.oauth.modal.scopesHint':
|
||
'list_trips і get_trip_summary завжди доступні — область не потрібна. Вони допомагають ШІ знаходити потрібні ID поїздок.',
|
||
'settings.oauth.modal.selectAll': 'Вибрати все',
|
||
'settings.oauth.modal.deselectAll': 'Зняти вибір',
|
||
'settings.oauth.modal.creating': 'Реєстрація…',
|
||
'settings.oauth.modal.create': 'Зареєструвати клієнта',
|
||
'settings.oauth.modal.createdTitle': 'Клієнт зареєстровано',
|
||
'settings.oauth.modal.createdWarning':
|
||
'Секрет клієнта показується лише один раз. Скопіюйте його зараз — його не можна буде відновити.',
|
||
'settings.oauth.toast.createError': 'Не вдалося зареєструвати клієнта OAuth',
|
||
'settings.oauth.toast.deleted': 'Клієнт OAuth видалено',
|
||
'settings.oauth.toast.deleteError': 'Не вдалося видалити клієнта OAuth',
|
||
'settings.oauth.toast.revoked': 'Сесію відкликано',
|
||
'settings.oauth.toast.revokeError': 'Не вдалося відкликати сесію',
|
||
'settings.oauth.toast.rotateError': 'Не вдалося оновити секрет клієнта',
|
||
'settings.account': 'Обліковий запис',
|
||
'settings.about': 'Про застосунок',
|
||
'settings.about.reportBug': 'Повідомити про помилку',
|
||
'settings.about.reportBugHint': 'Знайшли проблему? Повідомте нам',
|
||
'settings.about.featureRequest': 'Запропонувати функцію',
|
||
'settings.about.featureRequestHint': 'Запропонуйте нову функцію',
|
||
'settings.about.wikiHint': 'Документація та керівництва',
|
||
'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': 'Щомісячні спонсори',
|
||
'settings.about.supporters.title': 'Спутники TREK',
|
||
'settings.about.supporters.subtitle':
|
||
'Поки ти плануєш наступний маршрут, ці люди разом зі мною планують майбутнє TREK. Їхній щомісячний внесок йде безпосередньо в розробку та реальні витрачені години — щоб TREK залишався Open Source.',
|
||
'settings.about.supporters.since': 'спонсор з {date}',
|
||
'settings.about.supporters.tierEmpty': 'Стань першим',
|
||
'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 — це self-hosted планувальник подорожей, який допомагає організувати поїздки від першої ідеї до останнього спогаду. Планування по днях, бюджет, списки речей, фото та багато іншого — все в одному місці, на вашому власному сервері.',
|
||
'settings.about.madeWith': 'Зроблено з',
|
||
'settings.about.madeBy': 'Морісом і зростаючою open-source спільнотою.',
|
||
'settings.username': "Ім'я користувача",
|
||
'settings.email': 'Ел. пошта',
|
||
'settings.role': 'Роль',
|
||
'settings.roleAdmin': 'Адміністратор',
|
||
'settings.oidcLinked': 'Пов’язаний з',
|
||
'settings.changePassword': 'Змінити пароль',
|
||
'settings.mustChangePassword':
|
||
'Ви повинні змінити пароль перед продовженням. Будь ласка, встановіть новий пароль нижче.',
|
||
'settings.currentPassword': 'Поточний пароль',
|
||
'settings.currentPasswordRequired': 'Поточний пароль обов’язковий',
|
||
'settings.newPassword': 'Новий пароль',
|
||
'settings.confirmPassword': 'Підтвердіть новий пароль',
|
||
'settings.updatePassword': 'Оновити пароль',
|
||
'settings.passwordRequired': 'Введіть поточний та новий паролі',
|
||
'settings.passwordTooShort': 'Пароль повинен містити не менше 8 символів',
|
||
'settings.passwordMismatch': 'Паролі не збігаються',
|
||
'settings.passwordWeak': 'Пароль повинен містити великі й малі літери, цифру та спеціальний символ',
|
||
'settings.passwordChanged': 'Пароль успішно змінено',
|
||
'settings.deleteAccount': 'Видалити акаунт',
|
||
'settings.deleteAccountTitle': 'Видалити ваш акаунт?',
|
||
'settings.deleteAccountWarning':
|
||
'Ваш акаунт і всі поїздки, місця та файли будуть безповоротно видалені. Цю дію неможливо скасувати.',
|
||
'settings.deleteAccountConfirm': 'Видалити безповоротно',
|
||
'settings.deleteBlockedTitle': 'Видалення неможливе',
|
||
'settings.deleteBlockedMessage':
|
||
'Ви єдиний адміністратор. Призначте іншого користувача адміністратором перед видаленням свого акаунта.',
|
||
'settings.roleUser': 'Користувач',
|
||
'settings.saveProfile': 'Зберегти профіль',
|
||
'settings.mfa.title': 'Двофакторна аутентифікація (2FA)',
|
||
'settings.mfa.description':
|
||
'Додає другий крок при вході. Використовуйте додаток-аутентифікатор (Google Authenticator, Authy та ін.).',
|
||
'settings.mfa.requiredByPolicy':
|
||
'Адміністратор вимагає двофакторної аутентифікації. Налаштуйте додаток-аутентифікатор нижче, перш ніж продовжити.',
|
||
'settings.mfa.backupTitle': 'Резервні коди',
|
||
'settings.mfa.backupDescription':
|
||
'Використовуйте ці одноразові коди, якщо втратите доступ до додатку-аутентифікатора.',
|
||
'settings.mfa.backupWarning': 'Збережіть їх зараз. Кожен код можна використати лише один раз.',
|
||
'settings.mfa.backupCopy': 'Скопіювати коди',
|
||
'settings.mfa.backupDownload': 'Завантажити TXT',
|
||
'settings.mfa.backupPrint': 'Друк / PDF',
|
||
'settings.mfa.backupCopied': 'Резервні коди скопійовано',
|
||
'settings.mfa.enabled': '2FA увімкнено для вашого акаунта.',
|
||
'settings.mfa.disabled': '2FA не увімкнено.',
|
||
'settings.mfa.setup': 'Налаштувати автентифікатор',
|
||
'settings.mfa.scanQr': 'Відскануйте QR-код додатком або введіть ключ вручну.',
|
||
'settings.mfa.secretLabel': 'Секретний ключ (ручний ввід)',
|
||
'settings.mfa.codePlaceholder': '6-значний код',
|
||
'settings.mfa.enable': 'Увімкнути 2FA',
|
||
'settings.mfa.cancelSetup': 'Скасувати',
|
||
'settings.mfa.disableTitle': 'Вимкнути 2FA',
|
||
'settings.mfa.disableHint': 'Введіть пароль акаунта та поточний код з автентифікатора.',
|
||
'settings.mfa.disable': 'Вимкнути 2FA',
|
||
'settings.mfa.toastEnabled': 'Двофакторна автентифікація увімкнена',
|
||
'settings.mfa.toastDisabled': 'Двофакторна автентифікація вимкнена',
|
||
'settings.mfa.demoBlocked': 'Недоступно в демо-режимі',
|
||
'settings.toast.mapSaved': 'Налаштування карти збережено',
|
||
'settings.toast.keysSaved': 'API-ключі збережено',
|
||
'settings.toast.displaySaved': 'Налаштування відображення збережено',
|
||
'settings.toast.profileSaved': 'Профіль збережено',
|
||
'settings.uploadAvatar': 'Завантажити фото профілю',
|
||
'settings.removeAvatar': 'Видалити фото профілю',
|
||
'settings.avatarUploaded': 'Фото профілю оновлено',
|
||
'settings.avatarRemoved': 'Фото профілю видалено',
|
||
'settings.avatarError': 'Помилка завантаження',
|
||
'settings.avatarRemoveError': 'Помилка видалення',
|
||
'settings.bookingLabels': 'Підписи маршрутів бронювань',
|
||
'settings.bookingLabelsHint': 'Показує назви станцій / аеропортів на карті. Якщо вимкнено, показується лише значок.',
|
||
'settings.notifyVersionAvailable': 'Доступна нова версія',
|
||
'settings.notifyReplicaFailure': 'Збій репліки сховища',
|
||
'settings.notificationPreferences.noChannels':
|
||
'Канали сповіщень не налаштовані. Попросіть адміністратора налаштувати сповіщення електронною поштою або через webhook.',
|
||
'settings.webhookUrl.label': 'URL вебхука',
|
||
'settings.webhookUrl.placeholder': 'https://discord.com/api/webhooks/...',
|
||
'settings.webhookUrl.hint': 'Введіть URL вашого вебхука Discord, Slack або власного для отримання сповіщень.',
|
||
'settings.webhookUrl.saved': 'URL вебхука збережено',
|
||
'settings.webhookUrl.test': 'Тест',
|
||
'settings.webhookUrl.testSuccess': 'Тестовий вебхук успішно надіслано',
|
||
'settings.webhookUrl.testFailed': 'Помилка тестового вебхука',
|
||
'settings.ntfyUrl.topicLabel': 'Тема Ntfy',
|
||
'settings.ntfyUrl.topicPlaceholder': 'my-trek-alerts',
|
||
'settings.ntfyUrl.serverLabel': 'URL сервера Ntfy (необов’язково)',
|
||
'settings.ntfyUrl.serverPlaceholder': 'https://ntfy.sh',
|
||
'settings.ntfyUrl.hint':
|
||
'Введіть тему Ntfy для отримання push-сповіщень. Залиште поле сервера пустим, щоб використовувати налаштування за замовчуванням, задані адміністратором.',
|
||
'settings.ntfyUrl.tokenLabel': 'Токен доступу (необов’язково)',
|
||
'settings.ntfyUrl.tokenHint': 'Потрібно для тем, захищених паролем.',
|
||
'settings.ntfyUrl.saved': 'Налаштування Ntfy збережені',
|
||
'settings.ntfyUrl.test': 'Тест',
|
||
'settings.ntfyUrl.testSuccess': 'Тестове сповіщення Ntfy успішно надіслано',
|
||
'settings.ntfyUrl.testFailed': 'Помилка надсилання тестового сповіщення Ntfy',
|
||
'settings.ntfyUrl.tokenCleared': 'Токен доступу очищено',
|
||
'settings.notificationPreferences.inapp': 'In-App',
|
||
'settings.notificationPreferences.notConfigured': 'Ще не налаштовано — налаштуйте в параметрах плагіна',
|
||
'settings.plugins.actions': 'Дії',
|
||
'settings.plugins.actions.confirm': 'Виконати цю дію?',
|
||
'settings.notificationPreferences.sendTest': 'Надіслати тест',
|
||
'settings.notificationPreferences.configure': 'Налаштувати',
|
||
'settings.notificationPreferences.testSuccess': 'Тестове сповіщення надіслано.',
|
||
'settings.notificationPreferences.testFailed': 'Тест не вдався.',
|
||
'settings.notificationPreferences.pluginConfigured': 'Налаштовано. Облікові дані — на сторінці налаштувань плагіна.',
|
||
'settings.notificationPreferences.webhook': 'Webhook',
|
||
'settings.notificationPreferences.email': 'Email',
|
||
'settings.notificationPreferences.ntfy': 'Ntfy',
|
||
'settings.oauth.modal.machineClient': 'Машинний клієнт (без входу через браузер)',
|
||
'settings.oauth.modal.machineClientHint':
|
||
'Використовуйте надання client_credentials — URI перенаправлення не потрібні. Токен видається безпосередньо через client_id + client_secret і діє від вашого імені в межах вибраних областей.',
|
||
'settings.oauth.modal.machineClientUsage':
|
||
'Отримати токен: POST /oauth/token з grant_type=client_credentials, client_id і client_secret. Без браузера, без токена оновлення.',
|
||
'settings.oauth.badge.machine': 'машина',
|
||
'settings.currency': 'Валюта відображення',
|
||
'settings.currencyHint':
|
||
'Суми в розділі «Витрати» відображаються в цій валюті лише для перегляду — початкові суми не змінюються.',
|
||
'settings.currencyTrip': 'Валюта подорожі',
|
||
'settings.passkey.title': 'Passkeys',
|
||
'settings.passkey.description':
|
||
'Входьте швидше та з захистом від фішингу за допомогою passkey — відбитка пальця, обличчя, PIN-коду або апаратного ключа. Ваш пароль залишається як резервний варіант.',
|
||
'settings.passkey.notConfigured':
|
||
'Passkeys увімкнено, але цей сервер ще не повністю налаштовано. Попросіть адміністратора вказати домен WebAuthn.',
|
||
'settings.passkey.add': 'Додати passkey',
|
||
'settings.passkey.addTitle': 'Додати passkey',
|
||
'settings.passkey.passwordPrompt': 'Підтвердіть поточний пароль, а потім дотримуйтесь підказок на вашому пристрої.',
|
||
'settings.passkey.passwordRequired': 'Потрібен ваш поточний пароль.',
|
||
'settings.passkey.namePlaceholder': 'Назва (необов’язково, напр. "iPhone")',
|
||
'settings.passkey.addedToast': 'Passkey додано',
|
||
'settings.passkey.added': 'Додано',
|
||
'settings.passkey.addError': 'Не вдалося додати passkey',
|
||
'settings.passkey.cancelled': 'Налаштування passkey скасовано',
|
||
'settings.passkey.deleted': 'Passkey видалено',
|
||
'settings.passkey.deleteConfirm': 'Видалити цей passkey? Підтвердіть паролем.',
|
||
'settings.passkey.rename': 'Перейменувати',
|
||
'settings.passkey.defaultName': 'Passkey',
|
||
'settings.passkey.synced': 'Синхронізовано',
|
||
'settings.passkey.deviceBound': 'Цей пристрій',
|
||
'settings.passkey.lastUsed': 'Останнє використання',
|
||
'settings.passkey.neverUsed': 'Не використовувався',
|
||
'settings.mapPoiPill': 'Досліджуйте місця на карті',
|
||
'settings.mapPoiPillHint':
|
||
'Показувати на карті подорожі плашку категорій, щоб знаходити поблизу ресторани, готелі та інше з OpenStreetMap.',
|
||
'settings.airtrail.title': 'AirTrail',
|
||
'settings.airtrail.hint':
|
||
'Підключіть свій самостійно розміщений AirTrail, щоб імпортувати та синхронізувати рейси. Створіть API-ключ в AirTrail у розділі Налаштування → Безпека.',
|
||
'settings.airtrail.url': 'URL екземпляра',
|
||
'settings.airtrail.apiKey': 'API-ключ',
|
||
'settings.airtrail.apiKeyPlaceholder': 'Bearer API-ключ',
|
||
'settings.airtrail.apiKeyHint':
|
||
'Згенеровано в AirTrail у розділі Налаштування → Безпека. Зберігається в зашифрованому вигляді.',
|
||
'settings.airtrail.allowInsecureTls': 'Дозволити самопідписані сертифікати',
|
||
'settings.airtrail.allowInsecureTlsHint': 'Вмикайте лише для довіреного екземпляра у вашій власній мережі.',
|
||
'settings.airtrail.writeBack': 'Записувати зміни назад у AirTrail',
|
||
'settings.airtrail.writeBackHint':
|
||
'Типово вимкнено: AirTrail є джерелом істини, а TREK лише читає з нього. Увімкніть, щоб надсилати зміни, зроблені в TREK, назад до AirTrail.',
|
||
'settings.airtrail.connected': 'Підключено',
|
||
'settings.airtrail.notConnected': 'Не підключено',
|
||
'settings.airtrail.toast.saved': 'Підключення AirTrail збережено',
|
||
'settings.airtrail.toast.saveError': 'Не вдалося зберегти підключення',
|
||
'settings.airtrail.test.button': 'Перевірити підключення',
|
||
'settings.airtrail.test.success': 'Підключено — знайдено {count} рейс(ів)',
|
||
'settings.airtrail.test.failed': 'Не вдалося підключитися',
|
||
'settings.aiParsing.title': 'Розпізнавання ШІ',
|
||
'settings.aiParsing.hint':
|
||
'Виберіть модель ШІ для вилучення бронювань із завантажених файлів. Це діє лише тоді, коли адміністратор не налаштував модель для всього екземпляра.',
|
||
'settings.aiParsing.provider': 'Постачальник',
|
||
'settings.aiParsing.providerLocal': 'Локальний (Ollama)',
|
||
'settings.aiParsing.providerOpenai': 'OpenAI',
|
||
'settings.aiParsing.providerAnthropic': 'Anthropic',
|
||
'settings.aiParsing.localAdminOnly':
|
||
'Локальна кінцева точка (Ollama) налаштовується один раз для всього екземпляра в налаштуваннях адміністратора. Власний ключ OpenAI або Anthropic ви можете використовувати тут і надалі.',
|
||
'settings.aiParsing.model': 'Модель',
|
||
'settings.aiParsing.baseUrl': 'Базова URL-адреса',
|
||
'settings.aiParsing.baseUrlHint': 'Де працює модель — локальний сервер Ollama або сумісна з OpenAI кінцева точка.',
|
||
'settings.aiParsing.apiKey': 'Ключ API',
|
||
'settings.aiParsing.apiKeyHint':
|
||
'Зберігається в зашифрованому вигляді. Залиште порожнім, щоб зберегти поточний ключ.',
|
||
'settings.aiParsing.multimodal': 'Надсилати документи як зображення',
|
||
'settings.aiParsing.multimodalHint':
|
||
'Для моделей із підтримкою зображень — надсилає оригінальний PDF замість вилученого тексту.',
|
||
'settings.aiParsing.toast.saved': 'Налаштування ШІ збережено',
|
||
'settings.aiParsing.toast.saveError': 'Не вдалося зберегти налаштування ШІ',
|
||
'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': 'Колекції',
|
||
'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': 'Нижня панель навігації',
|
||
'settings.appearance.mobileNav.hint':
|
||
'Виберіть, які елементи показувати на панелі, а які — під «Ще». «Головна» завжди залишається першою.',
|
||
'settings.appearance.mobileNav.inBar': 'На панелі',
|
||
'settings.appearance.mobileNav.underMore': 'Під «Ще»',
|
||
'settings.appearance.mobileNav.moreEmpty': 'Поки що порожньо — усе вміщається на панелі.',
|
||
'settings.appearance.mobileNav.pinned': 'Закріплено',
|
||
'settings.appearance.mobileNav.toMore': 'Перемістити під «Ще»',
|
||
'settings.appearance.mobileNav.toBar': 'Перемістити на панель',
|
||
'settings.appearance.dashOrder': 'Порядок панелі',
|
||
'settings.appearance.dashOrder.hint':
|
||
'Змініть порядок, у якому список подорожей і віджети розташовуються на панелі телефона. Виділена подорож завжди залишається вгорі.',
|
||
'settings.appearance.dashOrder.trips': 'Подорожі',
|
||
'settings.appearance.dashOrder.hidden': 'Приховано',
|
||
'settings.general.languageRegion': 'Language & region',
|
||
'settings.general.travelMap': 'Travel & map',
|
||
'settings.general.startup': 'Запуск',
|
||
'settings.startPage': 'Стартова сторінка',
|
||
'settings.startPageDashboard': 'Панель',
|
||
'settings.startPageActiveTrip': 'Активна поїздка',
|
||
'settings.startPageHint':
|
||
'TREK одразу відкриває поїздку, яка триває зараз, інакше найближчу майбутню. Це та сама поїздка, яку виділяє панель.',
|
||
'settings.startTripTab': 'Стартова вкладка',
|
||
'settings.startTripTabHint':
|
||
'Вкладка, з якою відкривається поїздка. Якщо вона належить до вимкненого доповнення, натомість відкриється план.',
|
||
|
||
// ── Offline (#1135)
|
||
'settings.offline.cache.title': 'Офлайн-кеш',
|
||
'settings.offline.mode.title': 'Офлайн-режим',
|
||
'settings.offline.mode.force': 'Примусовий офлайн-режим',
|
||
'settings.offline.mode.forceHint':
|
||
'Працюйте лише з кешованими даними та ставте свої зміни в чергу. Вимкніть, щоб знову підключитися та синхронізувати.',
|
||
'settings.offline.mode.active':
|
||
'Офлайн-режим увімкнено — ваші зміни поставлені в чергу й синхронізуються, коли ви його вимкнете.',
|
||
'settings.offline.prepare.title': 'Підготуватися до офлайну',
|
||
'settings.offline.prepare.hint':
|
||
'Завантажте все необхідне — дані поїздок, документи та тайли карти — перш ніж втратите зв’язок.',
|
||
'settings.offline.prepare.button': 'Завантажити для офлайн-використання',
|
||
'settings.offline.prepare.running': 'Завантаження…',
|
||
'settings.offline.prepare.done': 'Готово до офлайн-використання',
|
||
'settings.offline.prepare.phase.trips': 'Дані поїздок',
|
||
'settings.offline.prepare.phase.files': 'Документи',
|
||
'settings.offline.prepare.phase.tiles': 'Тайли карти',
|
||
'settings.offline.resync': 'Синхронізувати зараз',
|
||
'settings.offline.resyncing': 'Синхронізація…',
|
||
'settings.offline.storage.title': 'Що зберігати офлайн',
|
||
'settings.offline.storage.tiles': 'Зберігати тайли карти офлайн',
|
||
'settings.offline.storage.tilesHint':
|
||
'Тайли карти займають найбільше місця. Вимкніть, щоб зберігати офлайн лише дані поїздок і документи.',
|
||
'settings.offline.storage.tripsTitle': 'Поїздки',
|
||
'settings.offline.storage.tripOn': 'Збережено офлайн',
|
||
'settings.offline.storage.tripOff': 'Не збережено',
|
||
'settings.offline.storage.tripFinished': 'Завершено. Зберігається, лише якщо ви це увімкнете.',
|
||
'settings.offline.notice.stored': 'На цьому пристрої збережено подорожей: {count}',
|
||
'settings.offline.notice.nothing': 'Нічого зберігати. Увімкніть подорожі, які хочете залишити.',
|
||
'settings.offline.notice.busy': 'Синхронізація вже триває. Спробуйте ще раз за мить.',
|
||
'settings.offline.notice.offline': 'Немає з’єднання. Під’єднайтеся, щоб зберегти подорожі офлайн.',
|
||
'settings.offline.notice.signedOut': 'Сеанс завершився. Увійдіть знову, щоб синхронізувати.',
|
||
'settings.offline.notice.failed': 'Не вдалося завершити завантаження. Перевірте з’єднання і спробуйте ще раз.',
|
||
'settings.offline.notice.loadFailed': 'Не вдалося прочитати офлайн-сховище цього пристрою. Зазвичай допомагає очищення кешу.',
|
||
'settings.offline.clear': 'Очистити кеш',
|
||
'settings.offline.clearConfirm':
|
||
'Очистити всі офлайн-дані поїздок? Ви можете синхронізувати їх будь-коли в режимі онлайн.',
|
||
'settings.offline.stats.trips': 'Кешовані поїздки',
|
||
'settings.offline.stats.pending': 'Зміни в очікуванні',
|
||
'settings.offline.stats.failed': 'Невдалі зміни',
|
||
'settings.offline.stats.conflicts': 'Конфлікти',
|
||
'settings.offline.empty': 'Поки що немає кешованих поїздок. Підключіться до інтернету, щоб синхронізувати.',
|
||
'settings.offline.loading': 'Завантаження…',
|
||
'settings.offline.conflicts.title': 'Конфлікти синхронізації',
|
||
'settings.offline.conflicts.hint':
|
||
'Зміни, які ви зробили офлайн, конфліктують із новішими змінами на сервері. Виберіть, яку версію залишити.',
|
||
'settings.offline.conflicts.keepMine': 'Залишити мою',
|
||
'settings.offline.conflicts.keepServer': 'Залишити їхню',
|
||
'settings.offline.conflicts.mine': 'Ваша версія',
|
||
'settings.offline.conflicts.server': 'Версія сервера',
|
||
'settings.offline.conflicts.item': 'Зміна в “{name}”',
|
||
'settings.offline.conflicts.strategyTitle': 'Коли виникає конфлікт',
|
||
'settings.offline.conflicts.strategy.ask': 'Запитувати мене щоразу',
|
||
'settings.offline.conflicts.strategy.mine': 'Завжди залишати мою версію',
|
||
'settings.offline.conflicts.strategy.server': 'Завжди залишати версію сервера',
|
||
'settings.offline.banner.offline': 'Офлайн',
|
||
'settings.offline.banner.forced': 'Офлайн-режим',
|
||
'settings.offline.banner.queued': 'Офлайн · {count} у черзі',
|
||
'settings.offline.banner.syncing': 'Синхронізація {count}…',
|
||
'settings.offline.banner.failed': 'Не вдалося синхронізувати: {count}',
|
||
'settings.offline.banner.conflicts': 'Конфлікти: {count}',
|
||
'settings.pluginActivity.title': 'Активність плагінів',
|
||
'settings.pluginActivity.description': 'Кожна дія, яку плагін виконав від вашого імені, найновіші спершу.',
|
||
'settings.pluginActivity.empty': 'Активності плагінів поки немає.',
|
||
'settings.pluginActivity.refresh': 'Оновити',
|
||
'settings.pluginActivity.columns.plugin': 'Плагін',
|
||
'settings.pluginActivity.columns.action': 'Дія',
|
||
'settings.pluginActivity.columns.resource': 'Ресурс',
|
||
'settings.pluginActivity.columns.when': 'Коли',
|
||
'settings.pluginActivity.columns.status': 'Результат',
|
||
'settings.alwaysShowRoutes': 'Завжди показувати маршрути бронювань',
|
||
'settings.alwaysShowRoutesHint':
|
||
'Автоматично показує на карті маршрут для кожного рейсу, поїзда та іншого бронювання — без потреби вмикати це окремо для кожного елемента.',
|
||
|
||
// Public API keys (Settings -> Integrations)
|
||
'settings.apiKeys.title': 'Ключі API',
|
||
'settings.apiKeys.description': 'Ключі для публічного API, щоб інші програми могли читати ваші подорожі. Лише читання: ключ нічого не змінить і не видалить.',
|
||
'settings.apiKeys.create': 'Створити ключ',
|
||
'settings.apiKeys.empty': 'Ключів ще немає. Створіть один, щоб підключити іншу програму.',
|
||
'settings.apiKeys.createdAt': 'створено',
|
||
'settings.apiKeys.usedAt': 'востаннє використано',
|
||
'settings.apiKeys.deleteTitle': 'Видалити ключ',
|
||
'settings.apiKeys.deleteMessage': 'Усе, що використовує цей ключ, одразу перестане працювати. Скасувати не можна.',
|
||
'settings.apiKeys.deleted': 'Ключ видалено',
|
||
'settings.apiKeys.deleteFailed': 'Не вдалося видалити ключ',
|
||
'settings.apiKeys.createFailed': 'Не вдалося створити ключ',
|
||
'settings.apiKeys.copy': 'Копіювати',
|
||
'settings.apiKeys.docsHint': 'Надсилайте ключ як "Authorization: Bearer ..." або "X-API-Key: ..." на /api/v1.',
|
||
'settings.apiKeys.modal.createTitle': 'Створити ключ API',
|
||
'settings.apiKeys.modal.name': 'Назва',
|
||
'settings.apiKeys.modal.namePlaceholder': 'напр. Dawarich',
|
||
'settings.apiKeys.modal.nameHint': 'Лише для вас, щоб пізніше впізнати ключ.',
|
||
'settings.apiKeys.modal.creating': 'Створення...',
|
||
'settings.apiKeys.modal.create': 'Створити',
|
||
'settings.apiKeys.modal.createdTitle': 'Ключ API створено',
|
||
'settings.apiKeys.modal.createdWarning': 'Скопіюйте ключ зараз. Він показується один раз, пізніше його не отримати.',
|
||
'settings.apiKeys.modal.done': 'Готово',
|
||
};
|
||
|
||
export default settings;
|