/** * uk — translation drift fragment. * * The keys added to `en` after the original batch pass. Kept in their own * module so this pass never touches the batch files. Composed into `uk` in * `index.ts` via a deep merge (a shallow spread would clobber the sibling * keys already present in the batches, e.g. `socialUi`, `walletUi`). */ const drift = { nav: { searchLanguages: "Пошук мов...", noLanguages: "Мов не знайдено", }, mapPage: { searchSuggestPlaces: "Місця", }, mapUi: { firstRunTitle: "Почніть", firstRunAddSpot: "Додайте перший Spot", firstRunJoinCrew: "Приєднатися до команди", firstRunStartCrew: "Створіть свою команду", firstRunWallet: "Налаштуйте гаманець", forecastDays: "Прогноз на {{count}} днів", }, spotUi: { forecastDays: "Прогноз на {{count}} днів", }, marketUi: { trades: { stateRevoked: "відкликано", stateVerifying: "перевірка", }, loadFailed: "Не вдалося зв'язатися з релеями. Перевірте з'єднання та спробуйте знову.", statusPending: "в очікуванні", offers: { closeDeal: "Закрити угоду", loadFailed: "Не вдалося завантажити пропозиції. Перевірте з'єднання та спробуйте знову.", }, pay: { nonSats: "Цю пропозицію оцінено в {{currency}}. Оплата в застосунку — лише в sats. Розрахуйтеся безпосередньо з продавцем.", unsupported: "Цей платіжний код (запит Cashu) поки не підтримується. Попросіть у продавця Lightning-рахунок або адресу.", }, escrowRequest: { lockedNotSent: "Кошти заблоковано в escrow і збережено на цьому пристрої, але запит не надіслано. Відкрийте оголошення знову, щоб повторити. Не платіть ще раз.", mintLabel: "Mint (де заблоковано кошти)", sellerMintHint: "Продавець віддає перевагу цьому mint; кошти, заблоковані тут, йому найлегше отримати.", mintHint: "Escrow зберігається в цьому mint. Продавець погашає тут, тож виберіть той, якому довіряєте обидва.", noMints: "Немає доступних mint", p2pkUnsupported: "Цей mint не заявляє підтримку P2PK (NUT-11), тож escrow тут заблокувати не можна. Виберіть інший mint.", }, }, labUi: { offerClothing: "Запропонувати одяг", tabClothing: "Одяг", empty: { clothingTitle: "Дизайнерів одягу поки немає", clothingBody: "Станьте першим, хто запропонує кастомний одяг, командні комплекти й екіпірування для сцени.", }, craftFields: { sizing: "Діапазон розмірів", samples: "Зразки / прототипи", customization: "Кастомізація", }, }, socialUi: { coordinator: { ourDefaultTitle: "Координатор SkateSpots", ourDefaultDesc: "SkateSpots запускає координатор на relay.skate-spots.org. Використовуйте його за замовчуванням або запустіть власний — координатор бачить лише шифротекст і метадані, ніколи ваші повідомлення.", useOurs: "Використати координатор SkateSpots", }, crewCoordinator: { encryptedChat: "Зашифрований чат", privateChatName: "Приватний чат", privateChatDesc: "Груповий чат із прямою секретністю (MLS) через координатор.", privateChatDescFull: "Приватний чат створює адміністратор один раз, потім учасники приєднуються.", chatRowDesc: "Усі в команді — запечатано ключем кожного учасника (NIP-17).", openChat: "Відкрити", setUpChat: "Налаштувати", joinChat: "Приєднатися", checking: "Перевірка…", openInAnotherApp: "Відкрити в іншому застосунку", openInCordnWeb: "Cordn (веб)", openCordnGroup: "Відкрити чат команди", copyForStaircase: "Копіювати для Staircase", }, dms: { refresh: "Оновити", crews: "Команди", crewFounder: "Засновник", crewMember: "Учасник", crewOpen: "Відкрити", crewSetUp: "Налаштувати", }, form: { cordnGroup: "Група Cordn", cordnGroupHint: "Необов'язково: вставте посилання на групу зі Staircase або Cordn (веб). Тоді ваша команда отримає справжній наскрізний MLS-чат на нашому координаторі.", }, }, settingsUi: { loginDialog: { welcomeSubtitleBrowse: "Зареєструйтеся або увійдіть — або продовжуйте перегляд.", extensionCard: "Розширення браузера", signerCard: "Застосунок-підписувач", secretKeyLink: "Використати секретний ключ", whereBunker: "Де взяти бункер?", }, settingsPage: { trust: "Довіра", trustSub: "Джерела та відображення", }, }, walletUi: { trust: { mute: "Заглушити", muted: "Заглушено", mutedDesc: "Ви не бачитимете їхній вміст.", muteFailed: "Не вдалося заглушити. Спробуйте знову.", loginToMute: "Увійдіть, щоб заглушити.", attributedNetwork: "Від людей з вашої мережі", attributedProviderHouse: "Від спільного провайдера довіри", attributedProviderCustom: "Від обраного вами провайдера", howItWorks: "Як працює довіра", flaggedNoticeTitle: "Повідомлено довіреними скейтерами", flaggedNoticeDesc: "Будьте обережні. Довірені люди в мережі повідомили про цей акаунт.", flaggedReporterFollow: "{{count}} з ваших підписок", flaggedReporterNetwork: "{{count}} з вашої мережі", flaggedReporterOther: "{{count}} інших акаунтів", flaggedReport: "Поскаржитися", flaggedDismiss: "Відхилити", bucketVerified: "Підтверджено", bucketUnknown: "Невідомо", bucketFlagged: "Позначено", bucketVerifiedDesc: "Хтось із вашої мережі поручився за цей акаунт.", bucketUnknownDesc: "Поки ніхто з вашої мережі не поручився за цей акаунт.", bucketFlaggedDesc: "Довірені люди повідомили про цей акаунт.", reportedByTrusted: "Повідомлено {{count}} довіреними людьми", }, }, trustUi: { alertsTitle: "Мережеві оповіщення", alertsDesc: "Акаунти, за якими ви стежите, про які повідомили або які заглушили довірені люди.", alertsEmpty: "Немає оповіщень. Ми перевіряємо акаунти, за якими ви стежите, на повідомлення від довірених людей.", alertsReported: "Повідомлено {{count}} довіреними людьми", alertsMuted: "Заглушено {{count}} довіреними людьми", alertsIgnore: "Ігнорувати", alertsUnfollow: "Відписатися", alertsLogin: "Увійдіть, щоб бачити оповіщення щодо акаунтів, за якими стежите.", providerTitle: "Провайдер", providerDesc: "Оцінки надходять від обраного вами провайдера. Спільний провайдер — за замовчуванням.", useCommunity: "Використати спільного провайдера", setProvider: "Вказати провайдера", customPubkeyPlaceholder: "npub або hex-публічний ключ провайдера", customRelayPlaceholder: "wss://relay.example.com", invalidProvider: "Введіть дійсний npub або 64-символьний hex-публічний ключ і релей wss://.", publishFailed: "Не вдалося опублікувати провайдера. Спробуйте знову.", providerSaved: "Провайдера оновлено.", loggedOutProvider: "Увійдіть, щоб вибрати провайдера.", showMarks: "Показувати позначки довіри", showMarksDesc: "Підтверджені та невідомі позначки. Повідомлення показуються завжди.", sourceLabel: "Джерело", sourceHouse: "Спільний провайдер довіри", sourceCustom: "Ваш провайдер", loggedOut: "Увійдіть, щоб вибрати власного провайдера довіри.", seoTitle: "Як працює довіра", seoDescription: "Як SkateSpots показує довіру: три стани, звідки беруться оцінки й чому відсутність позначки — не недовіра.", title: "Як працює довіра", intro: "Довіра тут — сигнал, а не вирок. Вона походить від тих, кого ви знаєте, або від обраного вами провайдера. Ми не складаємо глобальний рейтинг людей.", statesTitle: "Три стани", verifiedTitle: "Підтверджено", verifiedDesc: "Хтось із вашої мережі поручився за цей акаунт: друг друга або обраний вами провайдер.", unknownTitle: "Невідомо", unknownDesc: "Поки ніхто не поручився. З цього починається кожен новий акаунт.", flaggedTitle: "Позначено", flaggedDesc: "Довірені люди повідомили про цей акаунт. Це попередження придивитися, а не доказ чогось.", absenceTitle: "Відсутність позначки — не недовіра", absenceDesc: "У більшості акаунтів немає жодних позначок. Це означає, що ніхто з вашої мережі поки не поручився за них, а не те, що щось не так. Ніколи не сприймайте відсутню позначку як мінус.", sourceTitle: "Хто це обчислює", sourceDesc: "За замовчуванням ми використовуємо вашу власну мережу. Ви також можете вибрати провайдера довіри, який публікує підписані оцінки через Nostr (NIP-85), або вимкнути відображення. Позначене показується завжди, бо це сигнал безпеки.", endorsementTitle: "Присутність — не схвалення", endorsementDesc: "Підтверджена позначка означає, що хтось поручився, а не що людина хороша. Позначка «позначено» означає, що довірені люди повідомили про неї, а не що вона винна. Перевірте деталі, перш ніж вирішувати.", povTitle: "Усе залежить від точки зору", povDesc: "Оцінка відносна до того, хто дивиться. Рейтинг від одного провайдера чи людини незрівнянний з іншим, і ми ніколи не подаємо його як об'єктивний факт.", settingsCta: "Керувати в налаштуваннях", }, marketTerms: { link: "Правила маркетплейсу", seoTitle: "Правила маркетплейсу", seoDescription: "Як працюють оголошення спорядження на SkateSpots: напряму між людьми, покупець будь уважний, і правила.", title: "Правила маркетплейсу", intro: "SkateSpots — дошка оголошень про спорядження напряму між людьми. Ви маєте справу безпосередньо з іншою людиною: ми не тримаємо кошти, не надсилаємо товари й не вирішуємо спори.", howTitle: "Як це працює", howBody: "Виставте спорядження, зв'яжіться з продавцем у приватному повідомленні та розрахуйтеся напряму (готівка, Lightning або обмін). Кошика чи оформлення замовлення немає.", rulesTitle: "Що заборонено", rulesBody: "Жодного незаконного, небезпечного чи дорослого контенту; жодних наркотиків, зброї, підроблених чи крадених товарів. Оголошення мають стосуватися скейт-спорядження та пов'язаних речей.", respectTitle: "Поважайте інших", respectBody: "Жодних образ, переслідування, погроз чи ненависті. Модератори можуть приховувати оголошення чи акаунти.", trustTitle: "Довіра — орієнтир, а не гарантія", trustBody: "Позначки підтвердження та торгова репутація — це сигнали з мережі, а не обіцянки. Перевіряйте самі, перш ніж торгувати.", trustLink: "Як працює довіра", privacyLink: "Що залишає ваш пристрій", safetyTitle: "Торгуйте безпечно", safetyBody: "Зустрічайтеся в громадських місцях для передачі, використовуйте escrow або добросовісний задаток для відправлених угод і ніколи не надсилайте гроші поза застосунком.", moderationTitle: "Модерація м'яка й оборотна", moderationBody: "Прихований вміст залишається на релеях і може бути відновлений; спори між людьми — ваша справа.", }, labOptions: { clothing: { service: { tees: "Футболки", hoodies: "Худі та світшоти", pants: "Штани та шорти", jackets: "Куртки та верхній одяг", kits: "Командні комплекти та джерсі", caps: "Кепки та шапки", socks: "Шкарпетки", accessories: "Сумки та аксесуари", footwear: "Взуття", patches: "Патчі та аплікації", griptape: "Гриптейп та одяг для дек", onepiece: "Одиничні речі / апсайклінг", }, serviceDesc: { tees: "Кастомні футболки та топи", hoodies: "Худі, світшоти та спортивні штани", pants: "Робочі штани, карго та шорти", jackets: "Куртки-коучівки, вітровки та робочі куртки", kits: "Командні комплекти, джерсі та форма", caps: "Кепки, шапки та головні убори", socks: "Високі шкарпетки та трикотаж", accessories: "Сумки, ремені та дрібниці", footwear: "Кастомне взуття", patches: "Вишиті патчі та аплікації", griptape: "Арт на гриптейпі та одяг для дек", onepiece: "Одиничні речі та апсайкл-одяг", }, method: { screenprint: "Шовкодрук", dtg: "DTG / прямий друк по тканині", embroidery: "Вишивка", cutsew: "Крій і шиття", sublimation: "Сублімація", heattransfer: "Термотрансфер / вініл", garmentdye: "Фарбування виробів", knit: "Трикотаж", patchwork: "Печворк", allover: "Друк по всій поверхні", }, material: { cotton: "Бавовна", heavyweight: "Щільна тканина", organic: "Органіка / сталість", fleece: "Фліс", denim: "Денім", canvas: "Канвас", nylon: "Нейлон / технічні тканини", wool: "Меринос / вовна", leather: "Шкіра", recycled: "Перероблене / сток", }, }, }, becomeRolesUi: { clothing: { seoTitle: "Стати дизайнером одягу - SkateSpots", seoDescription: "Кастомний одяг, командні комплекти та екіпірування для сцени.", heading: "Дизайнер одягу", tagline: "Кастомний одяг, командні комплекти та екіпірування для сцени", noun: "дизайнер одягу", rateLabel: "Ставка", portfolioLabel: "Посилання на магазин / портфоліо", sectionWhatYouMake: "Що ви створюєте", sectionHowYouMake: "Як ви це робите", sectionMaterials: "Матеріали", minimumPlaceholder: "напр. 10 штук", turnaroundPlaceholder: "напр. 2–3 тижні", sizingPlaceholder: "напр. XS–3XL / за мірками", samplesHelper: "Чи пропонуєте ви зразки або прототипи перед повним тиражем?", customizationPlaceholder: "напр. імена, номери, графіка", }, }, weatherUi: { updated: "Оновлено", refresh: "Оновити", unavailable: "Погода недоступна.", retry: "Повторити", sunrise: "Схід", sunset: "Захід", legendTitle: "Оцінка погоди", legendWeatherOnly: "Лише погода", }, cordnUi: { shareInvite: 'Запросити', shareInviteText: 'Долучайся до {{crew}} — приватний чат команди', inviteCopied: 'Посилання-запрошення скопійовано', title: "Приватний чат", subtitle: "Наскрізне шифрування (MLS) між учасниками команди. Координатор маршрутизує лише шифротекст і метадані — він ніколи не бачить вміст повідомлень.", notLoggedIn: "Увійдіть, щоб користуватися приватним чатом команди.", membersOnly: "Лише учасники команди можуть відкрити приватний чат.", connecting: "Підключення…", noCoordinator: "Для цієї команди ще не налаштовано координатор.", noGroupAdmin: "Приватний чат цієї команди ще не створено.", noGroupMember: "Ви ще не в приватному чаті цієї команди.", create: "Створити приватний чат", requestJoin: "Попросити приєднатися", checkInvite: "Перевірити запрошення", requested: "Запит надіслано — адміністратор команди його схвалить.", noInvite: "Запрошення ще не чекає. Попросіть адміністратора схвалити ваш запит.", placeholder: "Повідомлення для команди…", send: "Надіслати", refresh: "Оновити", requests: "Запити на приєднання", checkRequests: "Перевірити запити", approve: "Додати", noRequests: "Немає запитів на приєднання, що очікують.", inviteHint: "Поки в цьому чаті лише ви — учасники команди можуть натиснути «Попросити приєднатися», а ви схвалите їх тут.", memberCount: "{{count}} у групі", you: "Ви", groupRef: "Посилання на групу", copyRef: "Копіювати", copied: "Скопійовано", attachImage: "Прикріпити зображення", uploading: "Завантаження…", uploadFailed: "Не вдалося завантажити зображення.", bannerTitle: "У цієї команди ще немає приватного чату", bannerBody: "Налаштуйте наскрізно зашифрований (MLS) чат для вашої команди — учасники приєднуються з вкладки.", bannerCta: "Налаштувати", ready: "Підключено · MLS", errorPrefix: "Не вдалося зв'язатися з координатором", interactiveHint: "Ваш підписувач запитує підтвердження для кожної дії — використовуйте «Оновити» та «Надіслати» за потреби.", setupDevice: "Налаштувати цей пристрій", setupDeviceBody: "Це дає пристрою власний ключ для приватного чату. Засновник схвалить його один раз.", waitingApproval: "Очікування схвалення засновника…", waitingApprovalManual: "Очікування засновника. Після схвалення натисніть «Перевірити запрошення».", onboardingFounder1: "Запустіть приватний чат.", onboardingFounder2: "Схвалюйте учасників, які просять приєднатися.", onboardingFounder3: "Спілкуйтеся приватно зі своєю командою.", onboardingMember1: "Попросити приєднатися", onboardingMember2: "Засновник схвалить ваш пристрій.", onboardingMember3: "Ви всередині — повідомлення зашифровані.", encryptedNote: "Читати можуть лише учасники команди; координатор лише передає зашифровані повідомлення.", advanced: "Додатково", coordinator: "Координатор", keyPackage: "Пакет ключів", keyPackageReady: "Готово на цьому пристрої", keyPackageMissing: "Не налаштовано на цьому пристрої", members: "Учасники", roleFounder: "Засновник", roleAdmin: "Адміністратор", roleMember: "Учасник", qrTitle: "Відскануйте, щоб увійти до приватного чату", qrHint: "Учасники команди сканують код камерою телефона. Посилання відкриває вкладку «Приватний чат».", sendFailed: "Не вдалося надіслати — натисніть «Повторити».", sending: "Надсилання…", sent: "Надіслано", retry: "Повторити", errorUnreachable: "Не вдалося зв’язатися з приватним чатом. Перевірте з’єднання.", errorDetails: "Подробиці", unreachable: "Недоступно", dismiss: "Закрити", }, translateUi: { title: "Переклад повідомлень", translate: "Перекласти", translating: "Переклад…", showOriginal: "Показати оригінал", showTranslation: "Показати переклад", translatedFrom: "Перекладено з {{language}}", failed: "Не вдалося перекласти. Спробуйте ще раз.", unsupported: "Ця мовна пара поки недоступна.", pilotNote: "Пілот: лише англійська ↔ іспанська.", autoTranslate: "Автоматично перекладати повідомлення", autoTranslateDesc: "Перекладати вхідні повідомлення вашою мовою. Працює на цьому пристрої; нічого не надсилається.", privacy: "Переклад виконується на вашому пристрої. Ваше повідомлення ніколи його не залишає. Під час першого використання завантажується мовна модель.", }, }; export default drift;